<?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>215362</bug_id>
          
          <creation_ts>2020-08-11 02:41:38 -0700</creation_ts>
          <short_desc>Web Inspector: allow event breakpoints to be configured</short_desc>
          <delta_ts>2020-10-21 18:15:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=162773</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>215363</blocked>
    
    <blocked>215364</blocked>
    
    <blocked>215747</blocked>
    
    <blocked>215793</blocked>
    
    <blocked>215794</blocked>
    
    <blocked>215795</blocked>
    
    <blocked>215860</blocked>
    
    <blocked>217862</blocked>
    
    <blocked>217992</blocked>
    
    <blocked>218064</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Devin Rousso">hi</reporter>
          <assigned_to name="Devin Rousso">hi</assigned_to>
          <cc>annulen</cc>
    
    <cc>bburg</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fujii</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>kangil.han</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>timothy</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1679343</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 02:41:38 -0700</bug_when>
    <thetext>This would allow developers to do things like:
 - only pause when `window.event.type` is a certain value
 - ignore the first N pauses
 - evaluate JavaScript whenever an event listener is invoked without pausing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679344</commentid>
    <comment_count>1</comment_count>
      <attachid>406370</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 02:47:37 -0700</bug_when>
    <thetext>Created attachment 406370
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679345</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-08-11 02:48:46 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol. Please ensure that any frontend changes appropriately use feature checks for new protocol features.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679490</commentid>
    <comment_count>3</comment_count>
      <attachid>406370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 12:01:35 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

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

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:45
&gt; +    class Action {

Can this be a struct instead of a class? Doesn&apos;t seem like it needs to be a class.

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:53
&gt; +        enum class Type {
&gt; +            Log,
&gt; +            Evaluate,
&gt; +            Sound,
&gt; +            Probe,
&gt; +        };

I would do this as one-liner and use a backing type:

    enum class Type : uint8_t { Log, Evaluate, Sound, Probe };

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:87
&gt; +    bool autoContinue() const { return m_autoContinue; }

This seems like one of these names where we want to use &quot;is&quot; predicate naming so it doesn’t sound like we are telling the object to &quot;auto continue&quot;.

isAutoContinue

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:92
&gt; +    bool linked() const { return m_sourceID != noSourceID; }

isLinked, so we know we are not telling this object, &quot;this is now linked&quot;

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:94
&gt; +    bool resolved() const { return m_resolved; }

isResolved, so we know we are not telling this object, &quot;this is now resolved&quot;

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:120
&gt; +    bool m_autoContinue;

Might want to initialize this here even if the constructor already does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679553</commentid>
    <comment_count>4</comment_count>
      <attachid>406370</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 14:12:25 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

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

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:45
&gt;&gt; +    class Action {
&gt; 
&gt; Can this be a struct instead of a class? Doesn&apos;t seem like it needs to be a class.

My main goal behind this was to have something &quot;constant after creation&quot;, at least for all external callers.  Whether it&apos;s a `struct` or `class` I don&apos;t have a preference, but I do like and want the fact that it&apos;s basically readonly.

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:53
&gt;&gt; +        };
&gt; 
&gt; I would do this as one-liner and use a backing type:
&gt; 
&gt;     enum class Type : uint8_t { Log, Evaluate, Sound, Probe };

I prefer putting these on separate lines as I find that easier to read (rather than &quot;hunting&quot; for commas) and is more nicely diff-able.  If you feel strongly about this (or it&apos;s in the style guide) tho, I can change it.

I&apos;ll add a backing type.

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:87
&gt;&gt; +    bool autoContinue() const { return m_autoContinue; }
&gt; 
&gt; This seems like one of these names where we want to use &quot;is&quot; predicate naming so it doesn’t sound like we are telling the object to &quot;auto continue&quot;.
&gt; 
&gt; isAutoContinue

Ah good point.  I&apos;ll change it.

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:92
&gt;&gt; +    bool linked() const { return m_sourceID != noSourceID; }
&gt; 
&gt; isLinked, so we know we are not telling this object, &quot;this is now linked&quot;

👍

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:94
&gt;&gt; +    bool resolved() const { return m_resolved; }
&gt; 
&gt; isResolved, so we know we are not telling this object, &quot;this is now resolved&quot;

👍

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:120
&gt;&gt; +    bool m_autoContinue;
&gt; 
&gt; Might want to initialize this here even if the constructor already does.

yeah I suppose that&apos;s fine (`m_ignoreCount` and `m_id` too)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679602</commentid>
    <comment_count>5</comment_count>
      <attachid>406370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 15:26:38 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:45
&gt;&gt;&gt; +    class Action {
&gt;&gt; 
&gt;&gt; Can this be a struct instead of a class? Doesn&apos;t seem like it needs to be a class.
&gt; 
&gt; My main goal behind this was to have something &quot;constant after creation&quot;, at least for all external callers.  Whether it&apos;s a `struct` or `class` I don&apos;t have a preference, but I do like and want the fact that it&apos;s basically readonly.

Using &quot;struct Action&quot; and then &quot;const Vector&lt;Action&gt;&quot; or &quot;Vector&lt;const Action&gt;&quot; accomplishes this in a really clear way, without requiring you write a constructor and getter functions for each data member.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679603</commentid>
    <comment_count>6</comment_count>
      <attachid>406370</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 15:28:41 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:45
&gt;&gt;&gt;&gt; +    class Action {
&gt;&gt;&gt; 
&gt;&gt;&gt; Can this be a struct instead of a class? Doesn&apos;t seem like it needs to be a class.
&gt;&gt; 
&gt;&gt; My main goal behind this was to have something &quot;constant after creation&quot;, at least for all external callers.  Whether it&apos;s a `struct` or `class` I don&apos;t have a preference, but I do like and want the fact that it&apos;s basically readonly.
&gt; 
&gt; Using &quot;struct Action&quot; and then &quot;const Vector&lt;Action&gt;&quot; or &quot;Vector&lt;const Action&gt;&quot; accomplishes this in a really clear way, without requiring you write a constructor and getter functions for each data member.

I&apos;d originally tried using `const Action` everywhere, but that wasn&apos;t working :/

Perhaps I just messed something up at the time.  I&apos;ll give it another shot.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679604</commentid>
    <comment_count>7</comment_count>
      <attachid>406370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 15:29:14 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.h:53
&gt;&gt;&gt; +        };
&gt;&gt; 
&gt;&gt; I would do this as one-liner and use a backing type:
&gt;&gt; 
&gt;&gt;     enum class Type : uint8_t { Log, Evaluate, Sound, Probe };
&gt; 
&gt; I prefer putting these on separate lines as I find that easier to read (rather than &quot;hunting&quot; for commas) and is more nicely diff-able.  If you feel strongly about this (or it&apos;s in the style guide) tho, I can change it.
&gt; 
&gt; I&apos;ll add a backing type.

The tall format doesn’t make it easier for *me* to see a list of a few values. It’s required when the list is long, but for 4 short words I like the single line way better.

If &quot;hunting for commas&quot; was a problem we’d probably need to write all our function call argument lists vertically too.

This is a matter of taste, and not a project guideline.

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:108
&gt; +    BreakpointID m_id;

Oh, I meant to say the same thing about this (initialize even though the constructor does it too).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679605</commentid>
    <comment_count>8</comment_count>
      <attachid>406370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 15:29:35 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

Not really reviewing for now until we resolve the Windows build failure issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679606</commentid>
    <comment_count>9</comment_count>
      <attachid>406370</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-08-11 15:33:08 -0700</bug_when>
    <thetext>Comment on attachment 406370
Patch

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

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:72
&gt; +    using ActionsList = Vector&lt;Action&gt;;

&quot;list&quot; is not a great term for a vector

&gt; Source/JavaScriptCore/debugger/Breakpoint.h:86
&gt; +    const ActionsList&amp; actions() const { return m_actions; }

This &quot;const&quot; should be all we need. The Action returned from such a vector will be const.

&gt; Source/JavaScriptCore/debugger/DebuggerPrimitives.h:38
&gt; +typedef int BreakpointActionID;

New code should use &quot;using&quot;, not &quot;typedef&quot;.

&gt; Source/JavaScriptCore/debugger/DebuggerPrimitives.h:39
&gt; +static constexpr BreakpointActionID noBreakpointActionID = 0;

The use of &quot;static&quot; here (and above) is not right; it gives these &quot;internal linkage&quot; but that’s not desirable in a header. Should just say constexpr and not static since this is a header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679685</commentid>
    <comment_count>10</comment_count>
      <attachid>406443</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 19:23:44 -0700</bug_when>
    <thetext>Created attachment 406443
Patch

Address @Darin Adler&apos;s feedback.

Attempt to fix the wincairo/win build using @Fujii Hironori&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679690</commentid>
    <comment_count>11</comment_count>
      <attachid>406444</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-11 19:36:55 -0700</bug_when>
    <thetext>Created attachment 406444
Patch

fix debug build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679816</commentid>
    <comment_count>12</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-08-12 14:08:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/66932921&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680417</commentid>
    <comment_count>13</comment_count>
      <attachid>406444</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-14 13:31:22 -0700</bug_when>
    <thetext>Comment on attachment 406444
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:131
&gt; +        `ProtocolBreakpoint` is a sort of &quot;blueprint&quot; that is actualized whenever a new script is

Nit: template

&gt; Source/JavaScriptCore/debugger/Breakpoint.cpp:52
&gt; +bool Breakpoint::link(SourceID sourceID, unsigned lineNumber, unsigned columnNumber)

Can you drop a note in this class to remind how special breakpoints are encoded? I believe it&apos;s using a dummy sourceID?

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:425
&gt; +    DebuggerParseData&amp; parseData = debuggerParseData(breakpoint.sourceID(), sourceProvider);

I was expecting a higher-level explanation like &quot;JSC&apos;s DebuggerParseData expects column offsets to be relative to the script source inside of the &lt;script&gt; tag, whereas Breakpoint&apos;s column offset is with respect to the entire file.&quot;

Similarly, in the header of Breakpoint class, a simple explanation would be helpful &quot;linked means it&apos;s be associated with a source file or fake source file (special breakpoint), and resolved means that we validated the location based on parse data (possibly shifting line/col to the next real pause opportunity).&quot;

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:446
&gt; +    auto&amp; breakpointsForLine = m_breakpointsForSourceID.ensure(breakpoint.sourceID(), [] {

v.nice to use ensure(), but it seems like the locals are named incorrectly?

The first one should be `breakpointsForSourceID` and the second should be `breakpointsForLine`. I think the rest of the logic related is correct as-is.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:455
&gt; +        if (existingBreakpoint-&gt;columnNumber() == breakpoint.columnNumber()) {

I haven&apos;t read the entire patch, but how do we ensure that editing a breakpoint condition will not try to set a second breakpoint on the same line? Breakpoint objects are immutable, so I&apos;m guessing that they are added and removed somewhere upon update? Perhaps this didn&apos;t change in the patch, but I&apos;m not familiar with the entire design.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:475
&gt; +    auto breakpointsForLineIterator = m_breakpointsForSourceID.find(breakpoint.sourceID());

Again, breakpointsForSourceID and breakpointsForLine would make more sense for local names here.

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:517
&gt; +    auto breakpointsForLineIterator = m_breakpointsForSourceID.find(sourceID);

Ditto the above comment about naming iterators.

&gt; Source/JavaScriptCore/debugger/Debugger.h:154
&gt; +        virtual void failedToParseSource(const String&amp; /* url */, const String&amp; /* data */, int /* firstLine */, int /* errorLine */, const String&amp; /* errorMessage */) { }

Why comment out the parameter names? This seem unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680431</commentid>
    <comment_count>14</comment_count>
      <attachid>406444</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-14 14:28:16 -0700</bug_when>
    <thetext>Comment on attachment 406444
Patch

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

&gt;&gt; Source/JavaScriptCore/ChangeLog:131
&gt;&gt; +        `ProtocolBreakpoint` is a sort of &quot;blueprint&quot; that is actualized whenever a new script is
&gt; 
&gt; Nit: template

👍

&gt;&gt; Source/JavaScriptCore/debugger/Breakpoint.cpp:52
&gt;&gt; +bool Breakpoint::link(SourceID sourceID, unsigned lineNumber, unsigned columnNumber)
&gt; 
&gt; Can you drop a note in this class to remind how special breakpoints are encoded? I believe it&apos;s using a dummy sourceID?

Special breakpoints don&apos;t have any requirement about how they&apos;re encoded/linked/resolved/etc.  They&apos;re really just a way of telling `Debugger` &quot;I want to you pause ASAP and use this &apos;special&apos; breakpoint&apos;s condition/ignoreCount/actions/etc. (in addition to any existing breakpoint that may coincidentally exist at the same spot as the ASAP pause)&quot;.

Frankly, I&apos;m open to the idea of using a different name other than &quot;special&quot;, I just couldn&apos;t think of anything that was quite as ... special :|

&gt;&gt; Source/JavaScriptCore/debugger/Debugger.cpp:425
&gt;&gt; +    DebuggerParseData&amp; parseData = debuggerParseData(breakpoint.sourceID(), sourceProvider);
&gt; 
&gt; I was expecting a higher-level explanation like &quot;JSC&apos;s DebuggerParseData expects column offsets to be relative to the script source inside of the &lt;script&gt; tag, whereas Breakpoint&apos;s column offset is with respect to the entire file.&quot;
&gt; 
&gt; Similarly, in the header of Breakpoint class, a simple explanation would be helpful &quot;linked means it&apos;s be associated with a source file or fake source file (special breakpoint), and resolved means that we validated the location based on parse data (possibly shifting line/col to the next real pause opportunity).&quot;

Good idea.  I&apos;ll add comments in `Breakpoint.h`.

&gt;&gt; Source/JavaScriptCore/debugger/Debugger.cpp:446
&gt;&gt; +    auto&amp; breakpointsForLine = m_breakpointsForSourceID.ensure(breakpoint.sourceID(), [] {
&gt; 
&gt; v.nice to use ensure(), but it seems like the locals are named incorrectly?
&gt; 
&gt; The first one should be `breakpointsForSourceID` and the second should be `breakpointsForLine`. I think the rest of the logic related is correct as-is.

I disagree.  The result of `m_breakpointsForSourceID.ensure` is a `LineToBreakpointsMap` (a.k.a `HashMap&lt;unsigned, BreakpointsVector&gt;`), which is a &quot;map of breakpoints for each line number.  Similarly, the result of `breakpointsForLine.ensure` is a `BreakpointsVector` (which is manually uniqued with respect to column numbers).

&gt;&gt; Source/JavaScriptCore/debugger/Debugger.cpp:455
&gt;&gt; +        if (existingBreakpoint-&gt;columnNumber() == breakpoint.columnNumber()) {
&gt; 
&gt; I haven&apos;t read the entire patch, but how do we ensure that editing a breakpoint condition will not try to set a second breakpoint on the same line? Breakpoint objects are immutable, so I&apos;m guessing that they are added and removed somewhere upon update? Perhaps this didn&apos;t change in the patch, but I&apos;m not familiar with the entire design.

The frontend sends a remove and then re-adds after each edit.  See `WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange`.  That definitely could be improved, but that&apos;s a separate issue.

&gt;&gt; Source/JavaScriptCore/debugger/Debugger.h:154
&gt;&gt; +        virtual void failedToParseSource(const String&amp; /* url */, const String&amp; /* data */, int /* firstLine */, int /* errorLine */, const String&amp; /* errorMessage */) { }
&gt; 
&gt; Why comment out the parameter names? This seem unnecessary.

otherwise we&apos;d get compile errors saying that the variable is unused, as this method is not a pure `virtual`</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680469</commentid>
    <comment_count>15</comment_count>
      <attachid>406444</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-14 15:28:12 -0700</bug_when>
    <thetext>Comment on attachment 406444
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/debugger/Debugger.cpp:446
&gt;&gt;&gt; +    auto&amp; breakpointsForLine = m_breakpointsForSourceID.ensure(breakpoint.sourceID(), [] {
&gt;&gt; 
&gt;&gt; v.nice to use ensure(), but it seems like the locals are named incorrectly?
&gt;&gt; 
&gt;&gt; The first one should be `breakpointsForSourceID` and the second should be `breakpointsForLine`. I think the rest of the logic related is correct as-is.
&gt; 
&gt; I disagree.  The result of `m_breakpointsForSourceID.ensure` is a `LineToBreakpointsMap` (a.k.a `HashMap&lt;unsigned, BreakpointsVector&gt;`), which is a &quot;map of breakpoints for each line number.  Similarly, the result of `breakpointsForLine.ensure` is a `BreakpointsVector` (which is manually uniqued with respect to column numbers).

OK

&gt;&gt;&gt; Source/JavaScriptCore/debugger/Debugger.cpp:455
&gt;&gt;&gt; +        if (existingBreakpoint-&gt;columnNumber() == breakpoint.columnNumber()) {
&gt;&gt; 
&gt;&gt; I haven&apos;t read the entire patch, but how do we ensure that editing a breakpoint condition will not try to set a second breakpoint on the same line? Breakpoint objects are immutable, so I&apos;m guessing that they are added and removed somewhere upon update? Perhaps this didn&apos;t change in the patch, but I&apos;m not familiar with the entire design.
&gt; 
&gt; The frontend sends a remove and then re-adds after each edit.  See `WI.DebuggerManager.prototype._breakpointEditablePropertyDidChange`.  That definitely could be improved, but that&apos;s a separate issue.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680557</commentid>
    <comment_count>16</comment_count>
      <attachid>406643</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-14 18:26:34 -0700</bug_when>
    <thetext>Created attachment 406643
Patch

added some comments addressing @Brian Burg&apos;s feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680858</commentid>
    <comment_count>17</comment_count>
      <attachid>406643</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-17 10:43:25 -0700</bug_when>
    <thetext>Comment on attachment 406643
Patch

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

&gt; Source/JavaScriptCore/debugger/Debugger.cpp:908
&gt;      if (blackboxTypeIterator != m_blackboxedScripts.end() &amp;&amp; blackboxTypeIterator-&gt;value == BlackboxType::Deferred) {

Nit: it would be nice to turn this into an Optional&lt;&gt; instead of repeating the iterator checks throughout the function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680859</commentid>
    <comment_count>18</comment_count>
      <attachid>406643</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-17 10:48:39 -0700</bug_when>
    <thetext>Comment on attachment 406643
Patch

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

&gt; Source/JavaScriptCore/debugger/Debugger.h:210
&gt; +    virtual void reportException(JSGlobalObject*, Exception*) const { }

The comment needs to move to the new declaration. I do think this state of affairs is kind of bad. When there is an exception in the condition or actions, it shows up as an error at the line for the breakpoint. I think it should just be reflected in the actions editor UI itself and mark the breakpoint as &quot;failing&quot; or something (red outline?). There are several bugs open such as https://bugs.webkit.org/show_bug.cgi?id=158817 which try to address this, but it&apos;s been subpar for a long time.

&gt; Source/JavaScriptCore/inspector/JSGlobalObjectScriptDebugServer.h:-56
&gt; -    void reportException(JSC::JSGlobalObject*, JSC::Exception*) const final { }

The comment needs to move to the new declaration. I do think this state of affairs is kind of bad. When there is an exception in the condition or actions, it shows up as an error at the line for the breakpoint. I think it should just be reflected in the actions editor UI itself and mark the breakpoint as &quot;failing&quot; or something (red outline?).

There are several bugs open such as https://bugs.webkit.org/show_bug.cgi?id=158817 which try to address this, but it&apos;s been subpar for a long time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680860</commentid>
    <comment_count>19</comment_count>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-17 10:49:32 -0700</bug_when>
    <thetext>Ugh, I hate bugzilla. Sorry about the double comment. I lost many other review comments due to the server timing out. Most of them were questions I had which were later answered by reading more of the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680863</commentid>
    <comment_count>20</comment_count>
      <attachid>406643</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-17 11:11:29 -0700</bug_when>
    <thetext>Comment on attachment 406643
Patch

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

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:1054
&gt; +        if (!protocolBreakpoint.matches(scriptURLForBreakpoints))

This would read better as .matchesURL (it doesn&apos;t check line/column).

&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:1241
&gt; +

Do we expect any more entries to remain in m_protocolBreakpointForProtocolBreakpointID at this point? removeBreakpoint() should have cleared the entries one by one.

&gt; Source/JavaScriptCore/runtime/JSMicrotask.cpp:95
&gt; +    if (UNLIKELY(globalObject-&gt;hasDebugger()))

It&apos;s worrying that this omission wasn&apos;t caught by a test. Can you fix that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680873</commentid>
    <comment_count>21</comment_count>
      <attachid>406643</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-17 12:05:11 -0700</bug_when>
    <thetext>Comment on attachment 406643
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:149
&gt; +            m_listenerBreakpoints.set(*eventName, breakpoint.releaseNonNull());

Is it okay that this is no longer an error?

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:159
&gt; +        setAnimationFrameBreakpoint(errorString, WTFMove(breakpoint));

Same question here, though I guess it would be strange to double-set the same event breakpoint. I would still prefer to return an error rather than silently failing.

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:238
&gt; +    if (!m_debuggerAgent-&gt;breakpointsActive())

Why did the guard move to later?

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:250
&gt; +        breakpoint = domAgent-&gt;breakpointForEventListener(*event.currentTarget(), event.type(), registeredEventListener.callback(), registeredEventListener.useCapture());

It&apos;s confusing to me that there are two lists of listener breakpoints, in DOMAgent and DOMDebuggerAgent. Can you help me understand why it&apos;s designed this way? (I believe that one is a catch-all while the other is for specific listeners in the Node details sidebar panel.)

I think renaming one or the other would help make it clearer as to what this code does. Personally, I&apos;d call the catch-all breakpoints &apos;m_eventBreakpoints&apos; and the event listeners as written (breakpointForEventListener).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680909</commentid>
    <comment_count>22</comment_count>
      <attachid>406643</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-17 13:36:07 -0700</bug_when>
    <thetext>Comment on attachment 406643
Patch

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

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:273
&gt; +        JSC::JSLockHolder lock(state);

Oof.

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:275
&gt; +        injectedScript.clearEventValue();

Just for easier reference, it would be nice to comment that this functionality is used by `$event`.

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:282
&gt; +

Nit: newline

&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:311
&gt; +

Idea: maybe we can expose $timer similar to $event while at one of these breakpoints?

&gt; Source/WebCore/inspector/agents/InspectorTimelineAgent.h:105
&gt; +    void breakpointActionProbe(JSC::JSGlobalObject*, JSC::BreakpointActionID, unsigned batchId, unsigned sampleId, JSC::JSValue result) final;

Noice.

&gt; Source/WebInspectorUI/UserInterface/Base/Setting.js:-201
&gt; -    showAllIntervalsBreakpoint: new WI.Setting(&quot;show-all-inteverals-breakpoint&quot;, false),

lol

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:110
&gt; +            this._allAnimationFramesBreakpoint ??= loadLegacyGlobalEventBreakpoint(WI.EventBreakpoint.Type.AnimationFrame, &quot;show-all-animation-frames-breakpoint&quot;, &quot;break-on-all-animation-frames&quot;);

Oooo.. k.

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:283
&gt; +        if (breakpoint.global) {

Nit: isGlobal()?

&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:-442
&gt; -            // COMPATIBILITY (iOS 12): DOMDebugger.removeEventBreakpoint did not exist.

I don&apos;t see this compat check anywhere else. Did it get lost? Should it exist in more places?

&gt; Source/WebInspectorUI/UserInterface/Controllers/DebuggerManager.js:677
&gt; +        console.assert(breakpoint.removable);

Nice.

&gt; Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js:79
&gt; +        case WI.domDebuggerManager.allIntervalsBreakpoint:

o_O</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1680952</commentid>
    <comment_count>23</comment_count>
      <attachid>406643</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-17 15:33:36 -0700</bug_when>
    <thetext>Comment on attachment 406643
Patch

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

&gt;&gt; Source/JavaScriptCore/inspector/JSGlobalObjectScriptDebugServer.h:-56
&gt;&gt; -    void reportException(JSC::JSGlobalObject*, JSC::Exception*) const final { }
&gt; 
&gt; The comment needs to move to the new declaration. I do think this state of affairs is kind of bad. When there is an exception in the condition or actions, it shows up as an error at the line for the breakpoint. I think it should just be reflected in the actions editor UI itself and mark the breakpoint as &quot;failing&quot; or something (red outline?).
&gt; 
&gt; There are several bugs open such as https://bugs.webkit.org/show_bug.cgi?id=158817 which try to address this, but it&apos;s been subpar for a long time.

Oh wow I totally forgot the comment 😱

I&apos;ll move it to `Debugger.h`.

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:1054
&gt;&gt; +        if (!protocolBreakpoint.matches(scriptURLForBreakpoints))
&gt; 
&gt; This would read better as .matchesURL (it doesn&apos;t check line/column).

good point

&gt;&gt; Source/JavaScriptCore/inspector/agents/InspectorDebuggerAgent.cpp:1241
&gt;&gt; +
&gt; 
&gt; Do we expect any more entries to remain in m_protocolBreakpointForProtocolBreakpointID at this point? removeBreakpoint() should have cleared the entries one by one.

yes, as there may be breakpoints set/saved by the frontend from when inspecting a different page that haven&apos;t been resolved to any scripts actually loaded

1. inspect &lt;a.com&gt;
2. set breakpoint on &lt;a.com/a.js&gt;
3. navigate to &lt;b.com&gt;
  =&gt; protocol breakpoint on &lt;a.com/a.js&gt; still exists even though there are no more debugger breakpoints for it

&gt;&gt; Source/JavaScriptCore/runtime/JSMicrotask.cpp:95
&gt;&gt; +    if (UNLIKELY(globalObject-&gt;hasDebugger()))
&gt; 
&gt; It&apos;s worrying that this omission wasn&apos;t caught by a test. Can you fix that?

So I believe this omission is actually mostly irrelevant, as the only way for this to cause an issue is for the JS microtask that runs to not have pause-able code inside it, which I think only applies to JS microtasks created by WebKit.  Previously, if this is possible, all that would happen is that JS would pause the next time it runs after the WebKit JS microtask finishes.  Now, however, it&apos;s a bit more serious because the conditions/actions could execute at the wrong position.

I&apos;ll see about writing a test to confirm the new behavior.

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:149
&gt;&gt; +            m_listenerBreakpoints.set(*eventName, breakpoint.releaseNonNull());
&gt; 
&gt; Is it okay that this is no longer an error?

I think there&apos;s two options here:

1) Allow `setEventBreakpoint` to always work regardless of whether a breakpoint already exists for the given `eventName`.  This means that the frontend can just re-invoke `setEventBreakpoint` to override any previous configuration instead of having to remove the previous configuration and then re-set the new one (i.e. avoids an extra protocol message).
2) Respond with an error if the breakpoint already exists.  This means that the frontend has to remove the previous breakpoint before setting a new one (what `Debugger` already has to do).

Since `Debugger` already does (2) and the previous behavior was (2), we should probably do (2) even though it&apos;ll be one extra protocol message (not to mention it&apos;ll keep state more understandable).  I&apos;ll change it back and adjust the frontend.

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:238
&gt;&gt; +    if (!m_debuggerAgent-&gt;breakpointsActive())
&gt; 
&gt; Why did the guard move to later?

I personally think we should still set `$event` regardless of whether or not breakpoints pause.  I don&apos;t think this makes any difference in practice tho, as `$event` is only available in the command line API, meaning that the only way to use it is when paused inside an event listener.  This also matches `InspectorDOMDebuggerAgent::didHandleEvent` which clears `$event` regardless of whether breakpoints are active.

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:250
&gt;&gt; +        breakpoint = domAgent-&gt;breakpointForEventListener(*event.currentTarget(), event.type(), registeredEventListener.callback(), registeredEventListener.useCapture());
&gt; 
&gt; It&apos;s confusing to me that there are two lists of listener breakpoints, in DOMAgent and DOMDebuggerAgent. Can you help me understand why it&apos;s designed this way? (I believe that one is a catch-all while the other is for specific listeners in the Node details sidebar panel.)
&gt; 
&gt; I think renaming one or the other would help make it clearer as to what this code does. Personally, I&apos;d call the catch-all breakpoints &apos;m_eventBreakpoints&apos; and the event listeners as written (breakpointForEventListener).

This is the difference between global event breakpoints [1] (`DOMDebugger`) and specific listener breakpoints [2] (`DOM`).  I&apos;d rather not use `m_eventBreakpoints` as the concept of an &quot;event&quot; breakpoint also includes `requestAnimationFrame`/`setTimeout`/`setInterval` (not literally but that&apos;s how many think of it) which should not be stored in `m_listenerBreakpoints`.  I&apos;d rather rename `InspectorDOMAgent::breakpointForSpecificEventListener`, but I feel like the &quot;Specific&quot; is redundant given the arguments.

If you feel strongly about renaming tho I can change it.

[1]: https://webkit.org/web-inspector/event-breakpoints/#global-event-breakpoints
[2]: https://webkit.org/web-inspector/event-breakpoints/#specific-listener-breakpoints

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:275
&gt;&gt; +        injectedScript.clearEventValue();
&gt; 
&gt; Just for easier reference, it would be nice to comment that this functionality is used by `$event`.

good idea

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:282
&gt;&gt; +
&gt; 
&gt; Nit: newline

i&apos;ll actually move this lower so that we don&apos;t do the work if one of the earlier branches is taken

&gt;&gt; Source/WebCore/inspector/agents/InspectorDOMDebuggerAgent.cpp:311
&gt;&gt; +
&gt; 
&gt; Idea: maybe we can expose $timer similar to $event while at one of these breakpoints?

As in `$timerID`?  Unlike `$event` there is no object for `setTimeout`/`setInterval`/`requestAnimationFrame` (the last one has a timestamp tho).  Other than `setInterval`, since you&apos;re already executing the callback there&apos;s no real use for `$timerID` (it only really exists for canceling).

&gt;&gt; Source/WebCore/inspector/agents/InspectorTimelineAgent.h:105
&gt;&gt; +    void breakpointActionProbe(JSC::JSGlobalObject*, JSC::BreakpointActionID, unsigned batchId, unsigned sampleId, JSC::JSValue result) final;
&gt; 
&gt; Noice.

ikr, so clean

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:283
&gt;&gt; +        if (breakpoint.global) {
&gt; 
&gt; Nit: isGlobal()?

eh, I like having this as a getter (no preference of `global` vs `isGlobal`, although Web Inspector tends to not use `is*` very often in getters)

&gt;&gt; Source/WebInspectorUI/UserInterface/Controllers/DOMDebuggerManager.js:-442
&gt;&gt; -            // COMPATIBILITY (iOS 12): DOMDebugger.removeEventBreakpoint did not exist.
&gt; 
&gt; I don&apos;t see this compat check anywhere else. Did it get lost? Should it exist in more places?

this should be handled by the `breakpoint.disabled = true;` at the top of this function, which routes to `WI.DOMDebuggerManager.prototype._handleEventBreakpointDisabledStateChanged` to `WI.DOMDebuggerManager.prototype._updateEventBreakpoint` which calls `DOMDebugger.removeEventBreakpoint`

&gt;&gt; Source/WebInspectorUI/UserInterface/Models/EventBreakpoint.js:79
&gt;&gt; +        case WI.domDebuggerManager.allIntervalsBreakpoint:
&gt; 
&gt; o_O

I love JS `switch` 🤩</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681031</commentid>
    <comment_count>24</comment_count>
      <attachid>406772</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-18 01:51:26 -0700</bug_when>
    <thetext>Created attachment 406772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681073</commentid>
    <comment_count>25</comment_count>
      <attachid>406772</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-18 08:35:13 -0700</bug_when>
    <thetext>Comment on attachment 406772
Patch

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

Other than my most recent questions, I think this patch is in good shape. Great work!

&gt; Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js:-42
&gt; -        this.status = WI.ImageUtilities.useSVGSymbol(&quot;Images/Breakpoint.svg&quot;);

Where did this code to manage the status indicator go?

&gt; Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js:-45
&gt; -        this.tooltipHandledSeparately = true;

Where did this code go?

&gt; Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js:-50
&gt; -    onattach()

I can&apos;t find where the code for any of these old-style handlers lives now. What happened to it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681102</commentid>
    <comment_count>26</comment_count>
      <attachid>406772</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-18 09:41:58 -0700</bug_when>
    <thetext>Comment on attachment 406772
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js:-42
&gt;&gt; -        this.status = WI.ImageUtilities.useSVGSymbol(&quot;Images/Breakpoint.svg&quot;);
&gt; 
&gt; Where did this code to manage the status indicator go?

this should all be on the new common base class `WI.BreakpointTreeElement` (this used to be specifically for JavaScript breakpoints, but given how much all the breakpoints have in common it was generalized and a more specific `WI.JavaScriptBreakpointTreeElement` subclass was created)

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js:-45
&gt;&gt; -        this.tooltipHandledSeparately = true;
&gt; 
&gt; Where did this code go?

ditto (in the `constructor`)

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/EventBreakpointTreeElement.js:-50
&gt;&gt; -    onattach()
&gt; 
&gt; I can&apos;t find where the code for any of these old-style handlers lives now. What happened to it?

ditto (specifically `_listenerSet`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1681104</commentid>
    <comment_count>27</comment_count>
      <attachid>406772</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-18 09:48:28 -0700</bug_when>
    <thetext>Comment on attachment 406772
Patch

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

&gt; Source/JavaScriptCore/ChangeLog:77
&gt; +        Introduce the concept of a &quot;special breakpoint&quot;, which is essentially a `JSC::Breakpoint`

Thinking about this a bit more, a better name might be &quot;immediate breakpoint&quot; as the word &quot;special&quot; is kinda too vague.  Calling `Debugger::schedulePauseForBreakpoint` (instead of `Debugger::schedulePauseForSpecialBreakpoint`) would set `m_immediateBreakpoint`, which I think is clearer to grok.

I think I&apos;ll change this before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682095</commentid>
    <comment_count>28</comment_count>
      <attachid>407038</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-21 18:50:43 -0700</bug_when>
    <thetext>Created attachment 407038
Patch

I actually thought about this a bit more and I think the term &quot;special&quot; has enough of a clear meaning (not to mention it matches the wording currently used in the docs)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682274</commentid>
    <comment_count>29</comment_count>
      <attachid>407086</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-23 18:18:09 -0700</bug_when>
    <thetext>Created attachment 407086
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1682388</commentid>
    <comment_count>30</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-08-24 10:34:18 -0700</bug_when>
    <thetext>Committed r266074: &lt;https://trac.webkit.org/changeset/266074&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407086.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406370</attachid>
            <date>2020-08-11 02:47:37 -0700</date>
            <delta_ts>2020-08-11 19:23:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215362-20200811024736.patch</filename>
            <type>text/plain</type>
            <size>493643</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGQ1ZDQ4ZTkzOTBhNTdhNjQ3ZmNiYWVkMThkZmQw
MDZhMGZmZGI4MDIuLjNlZjdjZTk4NDZlMTU3YzA2YzZlY2EzMTA1NTdmMTk5MjhiYTliMmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wOC0xMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0
byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZl
bnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3Qg
TiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVu
dCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNgIHBhcmFtYXRl
ciB0byBgRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyYCB0byBhbGxvdyBjb25maWd1
cmF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb246
CisgICAgICAgIEFkZCBhbiBgb3B0aW9uc2AgcGFyYW1hdGVyIHRvIGBET01EZWJ1Z2dlci5zZXRF
dmVudEJyZWFrcG9pbnRgIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBkZWJ1
Z2dlci9CcmVha3BvaW50Lmg6CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6QWN0
aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6dHlwZSBjb25z
dCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpBY3Rpb246OmRhdGEgY29uc3Qp
OiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjppZCBjb25zdCk6IEFk
ZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpjcmVhdGUpOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6QnJlYWtwb2ludDo6aWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtw
b2ludDo6c291cmNlSUQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6
bGluZU51bWJlciBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50Ojpjb2x1
bW5OdW1iZXIgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y29uZGl0
aW9uIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmFjdGlvbnMgY29u
c3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6YXV0b0NvbnRpbnVlIGNvbnN0
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnJlc2V0SGl0Q291bnQpOiBBZGRl
ZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6bGlua2VkIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJyZWFrcG9pbnQ6OnJlc29sdmVkIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChK
U0M6OkJyZWFrcG9pbnQ6OkJyZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpCcmVha3BvaW50c0xp
c3Q6On5CcmVha3BvaW50c0xpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRlYnVnZ2VyL0JyZWFr
cG9pbnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6bGluayk6IEFkZGVk
LgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpyZXNvbHZlKTogQWRkZWQuCisgICAgICAgIChK
U0M6OkJyZWFrcG9pbnQ6OnNob3VsZFBhdXNlKTogQWRkZWQuCisgICAgICAgIFVuaWZ5IGBKU0M6
OkJyZWFrcG9pbnRgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAg
ICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0aXZlcy5oOgorICAgICAgICAqIGRlYnVnZ2VyL0Rl
YnVnZ2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdnZXIuY3BwOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6RGVidWdnZXIpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YWRkT2JzZXJ2
ZXIpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlbW92ZU9ic2VydmVyKTogQWRk
ZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5EaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZl
cnMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmRpc3BhdGNoRnVuY3Rp
b25Ub09ic2VydmVycyk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c291cmNlUGFy
c2VkKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjp0b2dnbGVCcmVha3BvaW50KToK
KyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmFwcGx5QnJlYWtwb2ludHMpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6
c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50
KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmRpZEhpdEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6RGVidWdnZXI6OmNsZWFyQnJlYWtwb2ludHMpOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKTogQWRkZWQuCisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKTogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkpOiBBZGRlZC4K
KyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkpOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJl
YWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VGb3JT
cGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y29udGlu
dWVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnN0ZXBOZXh0RXhwcmVzc2lvbik6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwSW50b1N0YXRlbWVudCk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
OjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpwYXVzZUlmTmVl
ZGVkKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmhhbmRsZVBhdXNlKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjpleGNlcHRpb25PckNhdWdodFZhbHVlKTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjphdEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
cjo6Y2xlYXJOZXh0UGF1c2VTdGF0ZSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjp3aWxsUnVu
TWljcm90YXNrKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkaWRSdW5NaWNyb3Rh
c2spOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6Omhhc0JyZWFrcG9pbnQpOiBEZWxl
dGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQpOiBE
ZWxldGVkLgorICAgICAgICBVbmlmeSBgSlNDOjpEZWJ1Z2dlcmAgYW5kIGBJbnNwZWN0b3I6OlNj
cmlwdERlYnVnU2VydmVyYCB0byBzaW1wbGlmeSBicmVha3BvaW50IGxvZ2ljLgorICAgICAgICBJ
bnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYSAic3BlY2lhbCBicmVha3BvaW50Iiwgd2hpY2ggaXMg
ZXNzZW50aWFsbHkgYSBgSlNDOjpCcmVha3BvaW50YAorICAgICAgICB0aGF0IGlzIGV4cGVjdGVk
IHRvIHBhdXNlIGF0IHRoZSBuZXh0IG9wcG9ydHVuaXR5IGJ1dCBpc24ndCB0aWVkIHRvIGEgcGFy
dGljdWxhciBsb2NhdGlvbi4KKyAgICAgICAgQXMgYW4gZXhhbXBsZSwgd2hlbmV2ZXIgYW4gZXZl
bnQgYnJlYWtwb2ludCBpcyBoaXQsIGluc3RlYWQgb2YganVzdCBwYXVzaW5nIGF0IHRoZSBuZXh0
CisgICAgICAgIG9wcG9ydHVuaXR5LCB0aGUgbmV3bHkgbWFuYWdlZCBgSlNDOjpCcmVha3BvaW50
YCBpcyB1c2VkIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIsIGFsbG93aW5nCisgICAgICAgIGZv
ciBpdCdzIGNvbmZpZ3VyYXRpb24gKGllLmcuIGNvbmRpdGlvbiwgaWdub3JlIGNvdW50LCBhY3Rp
b25zLCBhdXRvLWNvbnRpbnVlKSB0byBiZSB1c2VkLgorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6b2JqZWN0
R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6YnJlYWtwb2lu
dEFjdGlvblR5cGVGb3JTdHJpbmcpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6cGFyc2VC
cmVha3BvaW50T3B0aW9ucyk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKTogQWRkZWQuCisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtw
b2ludDo6UHJvdG9jb2xCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6Y3JlYXRlRGVidWdnZXJC
cmVha3BvaW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXlsb2FkKTogQWRkZWQuCisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQYXVzZVJl
YXNvbik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRs
ZUNvbnNvbGVBc3NlcnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWRTY2hlZHVsZUFzeW5jQ2FsbCk6CisgICAgICAgIChJbnNwZWN0b3I6OmJ1aWxkRGVi
dWdnZXJMb2NhdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9u
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQ
YXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkpOiBBZGRlZC4K
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVz
ZUZvclNwZWNpYWxCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQpOiBBZGRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2UpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRCZWNvbWVJZGxlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJM
Rm9yU2NyaXB0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkUGFyc2VTb3VyY2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Ojp3aWxsUnVuTWljcm90YXNrKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUnVuTWljcm90YXNrKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uU291bmQpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckluc3BlY3RvckJy
ZWFrcG9pbnRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNsZWFyRGVidWdnZXJCcmVha3BvaW50U3RhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpi
dWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2Nv
bCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgIENyZWF0ZSBhIHByaXZhdGUgYFByb3RvY29sQnJlYWtwb2ludGAg
Y2xhc3MgdGhhdCBob2xkcyB0aGUgZGF0YSBzZW50IGJ5IHRoZSBmcm9udGVuZC4gVGhpcworICAg
ICAgICBpcyBuZWNlc3NhcnkgYmVjYXVzZSBicmVha3BvaW50cyBpbiB0aGUgZnJvbnRlbmQgaGF2
ZSBhIHBvdGVudGlhbGx5IG9uZS10by1tYW55IHJlbGF0aW9uc2hpcAorICAgICAgICB3aXRoIGJy
ZWFrcG9pbnRzIGluIHRoZSBiYWNrZW5kLCBhcyB0aGUgc2FtZSBzY3JpcHQgY2FuIGJlIGxvYWRl
ZCBtYW55IHRpbWVzIG9uIGEgcGFnZS4gRWFjaAorICAgICAgICBvZiB0aG9zZSBzY3JpcHRzIGlz
IGluZGVwZW5kZW50LCBob3dldmVyLCBhbmQgY2FuIGV4ZWN1dGUgZGlmZmVyZW50bHksIG1lYW5p
bmcgdGhhdCB0aGUgc2FtZQorICAgICAgICBicmVha3BvaW50IGZvciBlYWNoIHNjcmlwdCBhbHNv
IG5lZWRzIGEgZGlmZmVyZW50IHN0YXRlIChlLmcuIGlnbm9yZSBjb3VudCkuIEFzIHN1Y2gsIHRo
ZQorICAgICAgICBgUHJvdG9jb2xCcmVha3BvaW50YCBpcyBhIHNvcnQgb2YgImJsdWVwcmludCIg
dGhhdCBpcyBhY3R1YWxpemVkIHdoZW5ldmVyIGEgbmV3IHNjcmlwdCBpcworICAgICAgICBwYXJz
ZWQgdGhhdCBtYXRjaGVzIHRoZSBVUkwgb2YgdGhlIGBQcm90b2NvbEJyZWFrcG9pbnRgIHRvIGNy
ZWF0ZSBhIGBKU0M6OkJyZWFrcG9pbnRgIHRoYXQKKyAgICAgICAgaXMgdXNlZCBieSB0aGUgYEpT
Qzo6RGVidWdnZXJgLiBgUHJvdG9jb2xCcmVha3BvaW50YCBhbHNvIHBhcnNlcyBicmVha3BvaW50
IGNvbmZpZ3VyYXRpb25zLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25t
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ci5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXI6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dlcik6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFjaERl
YnVnZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXVkaXRBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0
QWdlbnQ6OnJ1bik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2Vu
dC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyk6
CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGll
cyk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxh
eWFibGVQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNj
cmlwdFByb2ZpbGVyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3REZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIFJlcGxhY2UgYEluc3BlY3Rvcjo6U2Ny
aXB0RGVidWdTZXJ2ZXJgIHdpdGggYEpTQzo6RGVidWdnZXJgLgorCisgICAgICAgICogcnVudGlt
ZS9KU01pY3JvdGFzay5jcHA6CisgICAgICAgIChKU0M6OkpTTWljcm90YXNrOjpydW4pOgorICAg
ICAgICBEcml2ZS1ieTogcjI0ODg5NCBtaXN0YWtlbmx5IG9taXR0ZWQgdGhlIGNhbGwgdG8gbm90
aWZ5IHRoZSBkZWJ1Z2dlciB0aGF0IHRoZSBtaWNyb3Rhc2sgcmFuLgorCisgICAgICAgICogaW5z
cGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3Iv
U2NyaXB0RGVidWdMaXN0ZW5lci5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9TY3Jp
cHREZWJ1Z1NlcnZlci5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5jcHA6IFJlbW92ZWQuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAg
ICogSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBT
b3VyY2VzLnR4dDoKKwogMjAyMC0wOC0xMCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUu
Y29tPgogCiAgICAgICAgIFtKU0NdIEpTRmluYWxPYmplY3Q6OmZpbmlzaENyZWF0aW9uJ3MgQVNT
RVJUIGhhcyBzdGFsZSBjb25kaXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZWE5MTE3ZWVhZTgxYmY4NjMx
NDlhMTY0NTFlYWI5ZTcwMzFkNzM1Li45NTcyZThiY2NkNGNkNGI4YjA1YWMxN2FjNWM0NDRiMDdl
YThiZWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTA3IEBACisyMDIwLTA4LTExICBEZXZpbiBS
b3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxv
dyBldmVudCBicmVha3BvaW50cyB0byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNjIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFsbG93cyBkZXZlbG9wZXJzIHRvIGRv
IHRoaW5ncyBsaWtlOgorICAgICAgICAgLSBvbmx5IHBhdXNlIHdoZW4gYHdpbmRvdy5ldmVudC50
eXBlYCBpcyBhIGNlcnRhaW4gdmFsdWUKKyAgICAgICAgIC0gaWdub3JlIHRoZSBmaXJzdCBOIHBh
dXNlcworICAgICAgICAgLSBldmFsdWF0ZSBKYXZhU2NyaXB0IHdoZW5ldmVyIGFuIGV2ZW50IGxp
c3RlbmVyIGlzIGludm9rZWQgd2l0aG91dCBwYXVzaW5nCisKKyAgICAgICAgVGVzdHM6IGluc3Bl
Y3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbAorICAgICAgICAgICAg
ICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2lu
dHMuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRl
cnZhbC1icmVha3BvaW50cy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3Bl
Y3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJs
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjptYWluRnJh
bWVOYXZpZ2F0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2Vu
dDo6c2V0RXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSGFuZGxlRXZlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVUaW1lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRGaXJlVGltZXIp
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5o
OgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVk
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1h
dGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRG
aXJlQW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6V29ya2VyRE9NRGVidWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50
KToKKyAgICAgICAgS2VlcCBhIGBKU0M6OkJyZWFrcG9pbnRgIGZvciBlYWNoIGV2ZW50IGJyZWFr
cG9pbnQgaW5zdGVhZCBvZiBhIHNpbXBsZSBgYm9vbGAsIGFsbG93aW5nIGZvcgorICAgICAgICBj
b25maWd1cmF0aW9uIHdoZW4gdGhlIGJyZWFrcG9pbnQgaXMgZmlyc3Qgc2V0LiBXaGVuIGFueSBv
ZiB0aGVzZSBicmVha3BvaW50cyBhcmUgaGl0LCBwYXNzCisgICAgICAgIGl0IHRvIHRoZSBgSlND
OjpEZWJ1Z2dlcmAgYXMgYSAic3BlY2lhbCBicmVha3BvaW50Iiwgd2hpY2ggYmVoYXZlcyB0aGUg
c2FtZSBhcyAicGF1c2UgQVNBUCIKKyAgICAgICAgYnV0IGFsc28gc3VwcG9ydHMgYSBjb25kaXRp
b24sIGFuIGlnbm9yZSBjb3VudCwgYWN0aW9ucywgYW5kIGF1dG8tY29udGludWUuIFJlc2V0IHRo
ZSBoaXQKKyAgICAgICAgY291bnQgZm9yIGFueSBvZiB0aGVzZSAic3BlY2lhbCBicmVha3BvaW50
cyIgdGhhdCBwZXJzaXN0IGFjcm9zcyBXZWIgSW5zcGVjdG9yIHNlc3Npb25zCisgICAgICAgIHdo
ZW4gdGhlIG1haW4gZnJhbWUgbmF2aWdhdGVzLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpQYWdl
U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjphdHRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OmRldGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlkUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpkaWRDb250aW51ZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRlcm5hbCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmlzQ29udGVudFNjcmlwdCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlv
biBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmg6
CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNo
RGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmRl
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVy
OjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcjo6cmVwb3J0RXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFn
ZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdCk6CisgICAgICAgIFJlcGxhY2Ug
YEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXJgIHdpdGggYEpTQzo6RGVidWdnZXJgLgorCisg
ICAgICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEpOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUpOgorICAg
ICAgICBSZXBsYWNlIGBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRgIHdpdGggYEpTQzo6QnJl
YWtwb2ludGAuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRs
ZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlk
RmlyZVRpbWVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFu
ZGxlRXZlbnRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkRmlyZVRpbWVySW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1wbCk6CisKKyAgICAgICAg
KiBkb20vRXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXQ6Omlu
bmVySW52b2tlRXZlbnRMaXN0ZW5lcnMpOgorICAgICAgICAqIHBhZ2UvRE9NVGltZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RE9NVGltZXI6OmZpcmVkKToKKyAgICAgICAgV2hlbiBub3RpZnlp
bmcgV2ViIEluc3BlY3RvciB0aGF0IGFjdGl2aXR5IGRpZCBvY2N1ciwgaW5jbHVkZSBhbGwgaW5m
b3JtYXRpb24gcHJldmlvdXNseQorICAgICAgICBpbmNsdWRlZCB3aGVuIG5vdGlmeWluZyBXZWIg
SW5zcGVjdG9yIHRoYXQgdGhhdCBhY3Rpdml0eSB3YXMgYWJvdXQgdG8gb2NjdXIgc28gdGhhdCBX
ZWIKKyAgICAgICAgSW5zcGVjdG9yIGNhbiBrbm93IHdoZXRoZXIgYSBwYXVzZSBmb3IgdGhlICJz
cGVjaWFsIGJyZWFrcG9pbnQiIGZvciB0aGF0IGFjdGl2aXR5IGlzIHN0aWxsCisgICAgICAgIHNj
aGVkdWxlZCBhbmQgaWYgc28gY2FuY2VsIGl0LgorCiAyMDIwLTA4LTA5ICBTYWlkIEFib3UtSGFs
bGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBEcmFnL2Ry
b3AgYW4gaW1hZ2Ugb2YgYSB1bnN1cHBvcnRlZCBmb3JtYXQgdG8gYW4gZmlsZSBpbnB1dCBlbGVt
ZW50IHNob3VsZCBjb252ZXJ0IGl0IHRvIGEgc3VwcG9ydGVkIGZvcm1hdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9D
aGFuZ2VMb2cKaW5kZXggMTY3N2IxNWY5ODQ1NWU5Y2RkMjg4NGEzMWJmZjYwNjVjODhkMDk3MC4u
ZmRhMGFmNTE3OGE1NWM0MTI4NjIxM2NmOTBiZDg4NWNiNGJjMmNjYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYzIEBACisyMDIwLTA4LTExICBEZXZpbiBSb3Vzc28gIDxk
cm91c3NvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBldmVudCBi
cmVha3BvaW50cyB0byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUzNjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGFsbG93cyBkZXZlbG9wZXJzIHRvIGRvIHRoaW5ncyBs
aWtlOgorICAgICAgICAgLSBvbmx5IHBhdXNlIHdoZW4gYHdpbmRvdy5ldmVudC50eXBlYCBpcyBh
IGNlcnRhaW4gdmFsdWUKKyAgICAgICAgIC0gaWdub3JlIHRoZSBmaXJzdCBOIHBhdXNlcworICAg
ICAgICAgLSBldmFsdWF0ZSBKYXZhU2NyaXB0IHdoZW5ldmVyIGFuIGV2ZW50IGxpc3RlbmVyIGlz
IGludm9rZWQgd2l0aG91dCBwYXVzaW5nCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVs
cy9CcmVha3BvaW50LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5C
cmVha3BvaW50LnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90
b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IHJlbW92YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlw
ZS5zZXQgY29uZGl0aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBp
Z25vcmVDb3VudCk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgaWdub3Jl
Q291bnQpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGF1dG9Db250aW51
ZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgYXV0b0NvbnRpbnVlKToK
KyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBhY3Rpb25zKToKKyAgICAgICAg
KFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBwcm9iZUFjdGlvbnMpOgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuY3ljbGVUb05leHRNb2RlKToKKyAgICAgICAgKFdJLkJyZWFr
cG9pbnQucHJvdG90eXBlLmNyZWF0ZUFjdGlvbik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnBy
b3RvdHlwZS5yZWNyZWF0ZUFjdGlvbik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlw
ZS5yZW1vdmVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuY2xlYXJB
Y3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVk
LgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUub3B0aW9uc1RvUHJvdG9jb2wpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmJyZWFrcG9pbnRBY3Rpb25E
aWRDaGFuZ2UpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5mcm9tSlNPTik6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc291cmNlQ29kZUxvY2F0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBjb250ZW50SWRl
bnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQg
c2NyaXB0SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3Rv
dHlwZS5nZXQgdGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLmdldCBpZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJv
dG90eXBlLnNldCBpZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQu
cHJvdG90eXBlLmdldCByZXNvbHZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50
LnByb3RvdHlwZS5zZXQgcmVzb2x2ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2lu
dC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBEZWxldGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuX2lzU3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5C
cmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9j
YXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzOgorICAgICAgICAoV0kuRE9NQnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50LmZyb21KU09OKTogQWRkZWQuCisgICAgICAg
IChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5ET01CcmVha3Bv
aW50LmRlc2VyaWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJv
dG90eXBlLmdldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50
LnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQuZnJvbUpTT04pOiBBZGRlZC4KKyAgICAg
ICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAg
ICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZWRpdGFibGUpOiBBZGRlZC4K
KyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisg
ICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLnNhdmVJZGVudGl0eVRvQ29va2ll
KToKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUudG9KU09OKToKKyAgICAg
ICAgKFdJLkV2ZW50QnJlYWtwb2ludC5kZXNlcmlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBkaXNhYmxlZCk6IERlbGV0ZWQu
CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanM6
IENvcGllZCBmcm9tIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMuCisgICAgICAg
IChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5mcm9tSlNPTik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5
cGUudG9KU09OKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5n
ZXQgc291cmNlQ29kZUxvY2F0aW9uKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnByb3RvdHlwZS5nZXQgY29udGVudElkZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBzY3JpcHRJZGVudGlmaWVyKToKKyAgICAgICAgKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgdGFyZ2V0KToKKyAgICAgICAgKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZ2xvYmFsKTogQWRkZWQuCisgICAg
ICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHJlbW92YWJsZSk6IEFk
ZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlZGl0
YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBl
LmdldCBpZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3Rv
dHlwZS5zZXQgaWRlbnRpZmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5w
cm90b3R5cGUuZ2V0IHJlc29sdmVkKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnByb3RvdHlwZS5zZXQgcmVzb2x2ZWQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQucHJvdG90eXBlLnNhdmVJZGVudGl0eVRvQ29va2llKToKKyAgICAgICAgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5faXNTcGVjaWFsKToKKyAgICAgICAgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFu
Z2VkKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNl
Q29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQp
OgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5mcm9tSlNPTik6IEFkZGVkLgorICAgICAgICAo
V0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAgICAgICAo
V0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAgIChXSS5V
UkxCcmVha3BvaW50LnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoV0kuVVJMQnJlYWtwb2lu
dC5kZXNlcmlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3Rv
dHlwZS5nZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5w
cm90b3R5cGUuc2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lIGBXSS5CcmVh
a3BvaW50YCB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgIGFuZCB1c2UgYFdJLkJyZWFrcG9p
bnRgIGFzIGEgbmV3IGNvbW1vbgorICAgICAgICBiYXNlIGNsYXNzIGZvciBhbGwgYnJlYWtwb2lu
dCB0eXBlcywgYWxsb3dpbmcgbW9yZSBsb2dpYyB0byBiZSBzaGFyZWQgKGUuZy4gZGlzYWJsZWQg
c3RhdGUpLgorICAgICAgICBBZGRpdGlvbmFsbHksIGJyZWFrcG9pbnRzIGFyZSBub3cgYWJsZSB0
bworICAgICAgICAgLSBkZXRlcm1pbmUgd2hldGhlciBvciBub3QgdGhleSdyZQorICAgICAgICAg
ICAgLSBnbG9iYWwgKGkuZS4gc3BlY2lhbCkKKyAgICAgICAgICAgIC0gcmVtb3ZhYmxlCisgICAg
ICAgICAgICAtIGVkaXRhYmxlIChpLmUuIGNvbmZpZ3VyYWJsZSkKKyAgICAgICAgIC0gcmVtb3Zl
IHRoZW1zZWx2ZXMKKyAgICAgICAgd2l0aG91dCB0aGUgY2FsbGVyIG5lZWRpbmcgdG8ga25vdyB3
aGF0IG1hbmFnZXIgdG8gY29uc3VsdCB3aXRoLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9ET01NYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9NTWFuYWdlcik6CisgICAg
ICAgIChXSS5ET01NYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRDb25maWd1
cmF0aW9uKTogQWRkZWQuCisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5zZXRCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlw
ZS5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXSS5ET01NYW5h
Z2VyLnByb3RvdHlwZS5fdXBkYXRlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTU1h
bmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hh
bmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2
ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIEtlZXAgdHJhY2sg
b2YgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGZvciBzcGVjaWZpYyBsaXN0ZW5lciBicmVha3BvaW50
cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5h
Z2VyLmpzOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyKToKKyAgICAgICAgKFdJLkRP
TURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZERPTUJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVET01CcmVha3BvaW50KToK
KyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkRXZlbnRCcmVha3Bv
aW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlRXZl
bnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
YWRkVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90
eXBlLnJlbW92ZVVSTEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5fdXBkYXRlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVD
aGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Ll9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCk6IEFkZGVkLgor
ICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVh
a3BvaW50QWN0aW9uc0NoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50U3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIEtl
ZXAgdHJhY2sgb2YgY29uZmlndXJhdGlvbiBjaGFuZ2VzIGZvciBnbG9iYWwgZXZlbnQgYnJlYWtw
b2ludHMuCisgICAgICAgIFN0b3JlIHNwZWNpYWwgZ2xvYmFsIGV2ZW50IGJyZWFrcG9pbnRzIGlu
c2lkZSBgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHNgLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5E
ZWJ1Z2dlck1hbmFnZXIpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5h
ZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVt
b3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFk
ZFByb2Jlc0ZvckJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdl
ci5wcm90b3R5cGUucmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAo
V0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KTog
QWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zZXRCcmVha3Bv
aW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2JyZWFrcG9pbnRF
ZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUuX2hhbmRsZUJyZWFrcG9pbnRBY3Rpb25zRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJ
LkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50UmVtb3ZhYmxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50U3Bl
Y2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlz
QnJlYWtwb2ludEVkaXRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdl
ci5wcm90b3R5cGUuX2RlYnVnZ2VyQnJlYWtwb2ludEFjdGlvblR5cGUpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fZGVidWdnZXJCcmVha3BvaW50T3B0
aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9h
ZGRQcm9iZXNGb3JCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuX3JlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlUHJvYmVzRm9yQnJlYWtw
b2ludCk6IERlbGV0ZWQuCisgICAgICAgIFJlcGxhY2UgYFdJLkJyZWFrcG9pbnRgIHdpdGggYFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50YC4KKyAgICAgICAgUHJvYmVzIG5vdyBzdXBwb3J0IGBXSS5F
dmVudEJyZWFrcG9pbnRgIGluIGFkZGl0aW9uIHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVy
Q29udHJvbGxlci5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5w
cm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJdGVtcyk6CisgICAgICAgIChXSS5CcmVha3BvaW50
UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLl9jcmVhdGVQb3BvdmVyQ29udGVudCk6CisgICAg
ICAgIEFsbG93IGFueSBicmVha3BvaW50IGluc3RlYWQgb2Ygb25seSBgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnRgLgorICAgICAgICBEcml2ZS1ieTogdGhlIGV4aXN0aW5nIGBpZ25vcmVDb3VudGAg
dmFsdWUgd2Fzbid0IGJlaW5nIHVzZWQgdG8gcG9wdWxhdGUgdGhlIGA8aW5wdXQ+YC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOgorICAg
ICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6CisgICAg
ICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBsaXN0ZW5lclNldCk6
IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRh
dGVTdGF0dXMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUudXBkYXRlVGl0bGVzKTogQWRkZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLmdldCBicmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGZpbHRlcmFibGVEYXRhKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVRp
dGxlcyk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLl91cGRhdGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6
CisgICAgICAgICguaXRlbS5icmVha3BvaW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlKToKKyAg
ICAgICAgKC5pdGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29uKTogQWRkZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LnBhdXNl
ZCAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludCAuc3RhdHVzID4gLnN0
YXR1cy1pbWFnZS5yZXNvbHZlZCk6IERlbGV0ZWQuCisgICAgICAgIChib2R5Om5vdCgud2luZG93
LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13
aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5zZWxlY3RlZCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5y
ZXNvbHZlZCk6IERlbGV0ZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50IC5zdWJ0aXRsZS5m
b3JtYXR0ZWQtbG9jYXRpb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtZGVidWdn
ZXItc3RhdGVtZW50LWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQt
ZXhjZXB0aW9uLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtYXNz
ZXJ0aW9uLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtbWljcm90
YXNrLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtcGF1c2VkLWlj
b24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWlj
b24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWlj
b24gLmljb24gPiBzcGFuKTogRGVsZXRlZC4KKyAgICAgICAgKC5kYXRhLXVwZGF0ZWQuYnJlYWtw
b2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4pOiBEZWxldGVkLgorICAgICAgICAo
QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtZGVidWdnZXIt
c3RhdGVtZW50LWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJy
ZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtbWljcm90YXNrLWljb24g
Lmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAo
QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtZ2VuZXJpYy1s
aW5lLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUub25hdHRhY2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbmRldGFjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5w
b3B1bGF0ZUNvbnRleHRNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxldGVk
LgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVz
SW1hZ2VFbGVtZW50Rm9jdXNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdG9n
Z2xlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5p
dGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uKTog
QWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6
bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmRv
bS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVk
aWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5zdWJ0
cmVlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5kb20uYXR0cmli
dXRlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1y
ZW1vdmVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQu
ZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNl
ZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtw
b2ludC1mb3ItYXR0cmlidXRlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikg
Lmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9y
LW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3Bv
aW50LmRvbS5icmVha3BvaW50LWZvci1zdWJ0cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1w
YXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNv
bG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0dHJpYnV0
ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4K
KyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50
LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1p
Y29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRy
ZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5vbmF0dGFjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVl
RWxlbWVudC5wcm90b3R5cGUub25kZXRhY2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRC
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5v
bnNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2
ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xp
Y2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5w
cm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAo
V0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl90b2dnbGVCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlU3RhdHVzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVF
bGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZy
YW1lOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2lu
dC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5p
dGVtLmJyZWFrcG9pbnQuZXZlbnQubGlzdGVuZXI6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQu
CisgICAgICAgICguaXRlbS5icmVha3BvaW50LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5p
Y29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmsp
IC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNv
bik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
aXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVk
LgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVh
a3BvaW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAg
ICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2
ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguYnJlYWtw
b2ludC5ldmVudC5icmVha3BvaW50LWZvci1hbmltYXRpb24tZnJhbWU6bm90KC5icmVha3BvaW50
LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVu
dC5icmVha3BvaW50LWZvci1pbnRlcnZhbDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5p
Y29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9y
LWxpc3RlbmVyOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgor
ICAgICAgICAoLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJy
ZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYShw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1m
b3ItYW5pbWF0aW9uLWZyYW1lOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJl
YWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1pbnRlcnZhbDpub3QoLmJyZWFrcG9pbnQtcGF1
c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9y
LXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6
bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFr
cG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2lu
dFRyZWVFbGVtZW50LmpzOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMuCisgICAgICAgIChXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBmaWx0ZXJhYmxlRGF0YSk6CisgICAgICAg
IChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVTdGF0
dXMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQu
cHJvdG90eXBlLnVwZGF0ZVRpdGxlcyk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5n
ZSk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcy4KKyAgICAgICAgKC5pdGVtLmJy
ZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZSk6IEFkZGVkLgorICAg
ICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdl
LnJlc29sdmVkKTogQWRkZWQuCisgICAgICAgIChib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAu
d2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLml0ZW0u
YnJlYWtwb2ludC5qYXZhc2NyaXB0LnNlbGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJl
c29sdmVkKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQgLnN1
YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtw
b2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFr
cG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3Bhbik6IEFkZGVkLgorICAgICAgICAoLmRh
dGEtdXBkYXRlZC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3Bhbik6
IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmRlYnVnZ2VyLXN0
YXRlbWVudCAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2Ny
aXB0LmV4Y2VwdGlvbiAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5q
YXZhc2NyaXB0LmFzc2VydGlvbiAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtw
b2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0
LmxpbmUgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQg
Lmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRpb24gLmljb24pOiBBZGRlZC4K
KyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFr
cG9pbnQuamF2YXNjcmlwdC5hc3NlcnRpb24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRp
YSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlw
dC5taWNyb3Rhc2sgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRU
cmVlRWxlbWVudCk6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uYXR0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxl
bWVudC5wcm90b3R5cGUub25kZXRhY2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtw
b2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUu
cG9wdWxhdGVDb250ZXh0TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50
VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1
c0ltYWdlRWxlbWVudEZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2lu
dFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Rv
Z2dsZUJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5fdXBkYXRlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICgu
aXRlbS5icmVha3BvaW50LnVybCAuc3VidGl0bGUpOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJy
ZWFrcG9pbnQudXJsOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguYnJlYWtwb2ludC51cmwgLnN1YnRpdGxl
KTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1
c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWlj
b24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgUmVuYW1lIGBXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnRgIHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50YCBhbmQgdXNlCisg
ICAgICAgIGBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnRgIGFzIGEgbmV3IGNvbW1vbiBiYXNlIGNs
YXNzIGZvciBhbGwgYnJlYWtwb2ludCB0cmVlIGVsZW1lbnRzLAorICAgICAgICBhbGxvd2luZyBt
b3JlIGxvZ2ljIGFuZCBzdHlsZXMgdG8gYmUgc2hhcmVkIChlLmcuIGRpc2FibGVkIHN0YXRlKS4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFy
UGFuZWwuanM6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCk6Cisg
ICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuY2xvc2Vk
KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
aW5zZXJ0RGVidWdnZXJUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVF
bGVtZW50cyk6IEFkZGVkLgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcmVtb3ZlQWxsQnJlYWtwb2ludHMpOgorICAgICAg
ICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50
c0JlbmVhdGhUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbC5wcm90b3R5cGUuX2FkZElzc3VlKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdXBkYXRlUGF1c2VSZWFzb25TZWN0aW9uKToKKyAg
ICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxl
VHJlZVNlbGVjdGlvbkRpZENoYW5nZSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRsZUJyZWFrcG9pbnRFbGVtZW50QWRkZWRPclJlbW92
ZWQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9wb3B1bGF0ZUNyZWF0ZUJyZWFrcG9pbnRDb250ZXh0TWVudS5hZGRUb2dnbGVGb3JTcGVjaWFs
RXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsLnByb3RvdHlwZS5fcG9wdWxhdGVDcmVhdGVCcmVha3BvaW50Q29udGV4dE1lbnUpOgorICAg
ICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVE
ZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSk6CisgICAgICAgIChXSS5Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NvbXBhcmVCcmVha3BvaW50VHJl
ZUVsZW1lbnRzKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1By
b2JlU2V0LmpzOgorICAgICAgICAoV0kuUHJvYmVTZXQpOgorICAgICAgICAoV0kuUHJvYmVTZXQu
cHJvdG90eXBlLmNyZWF0ZVByb2JlKToKKyAgICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlwZS53
aWxsUmVtb3ZlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5l
TWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb2Nl
c3NSZWNvcmQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxz
U2VjdGlvbi5qczoKKyAgICAgICAgKFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24pOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAg
ICAgICAoV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5pbnNwZWN0KToKKyAg
ICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAg
ICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRl
eHRFZGl0b3IucHJvdG90eXBlLmNsb3NlKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRp
dG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yQnJlYWtwb2ludEFkZGVkKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0ku
VGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwbGVtZW50YWxSZXByZXNl
bnRlZE9iamVjdHMpOgorICAgICAgICAoV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90
eXBlLl9wcm9iZVNldHNDaGFuZ2VkKToKKyAgICAgICAgUHJvYmVzIG5vdyBzdXBwb3J0IGBXSS5F
dmVudEJyZWFrcG9pbnRgIGluIGFkZGl0aW9uIHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAg
ICAoV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAg
KFdJLkNvbnRlbnRWaWV3LnJlc29sdmVkUmVwcmVzZW50ZWRPYmplY3RGb3JSZXByZXNlbnRlZE9i
amVjdCk6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5pc1ZpZXdhYmxlKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzOgorICAgICAgICAoV0ku
YXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvclNvdXJjZUNvZGUpOgorICAgICAgICBSZXBsYWNlIGBX
SS5CcmVha3BvaW50YCB3aXRoIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJ
LkRPTVRyZWVDb250ZW50Vmlldyk6CisgICAgICAgIFJlcGxhY2UgYFdJLkRPTUJyZWFrcG9pbnRg
IHdpdGggYFdJLkJyZWFrcG9pbnRgLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9F
dmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzOgorICAgICAgICAoV0kuRXZlbnRMaXN0ZW5lclNl
Y3Rpb25Hcm91cCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVy
U2VjdGlvbkdyb3VwLmNzczoKKyAgICAgICAgKC5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNv
bnRlbnQgaW5wdXRbdHlwZT0iY2hlY2tib3giXSArIC5nby10by1hcnJvdyk6IEFkZGVkLgorICAg
ICAgICAoLmV2ZW50LWxpc3RlbmVyLXNlY3Rpb24gPiAuY29udGVudCBpbnB1dFt0eXBlPSJjaGVj
a2JveCJdOm5vdCg6Y2hlY2tlZCkgKyAuZ28tdG8tYXJyb3cpOiBBZGRlZC4KKyAgICAgICAgQWRk
IGEgZ28tdG8gYXJyb3cgbmV4dCB0byB0aGUgQnJlYWtwb2ludCBjaGVja2JveCB0aGF0IHJldmVh
bHMgdGhlIGBXSS5FdmVudEJyZWFrcG9pbnRgIGluCisgICAgICAgIHRoZSBTb3VyY2VzIFRhYi4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanM6
CisgICAgICAgIChXSS5CcmVha3BvaW50QWN0aW9uVmlldy5wcm90b3R5cGUuX2FwcGVuZEFjdGlv
bkJ1dHRvbkNsaWNrZWQpOgorICAgICAgICBEcml2ZS1ieTogbWlub3IgY29kZSBjbGVhbnVwLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qczoK
KyAgICAgICAgKFdJLkNhbGxGcmFtZVRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRl
eHRNZW51KToKKyAgICAgICAgRHJpdmUtYnk6IGluY2x1ZGUgc291cmNlIGNvZGUgbG9jYXRpb24g
Y29udGV4dCBtZW51IGl0ZW1zLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRp
bmcuanM6CisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9UZXN0Lmh0bWw6CisKIDIwMjAtMDgtMDYgIE5pa2l0YSBWYXNpbHlldiAgPG52
YXNpbHlldkBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTWVkaWEgJiBBbmlt
YXRpb25zIHRpbWVsaW5lIHNob3VsZG4ndCBzaGlmdCB3aGVuIHNvcnRpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBhODYyODhiMmU3NzcwZTg4MTdhMGU4ZGIyYjQ4ZDcy
NjM3NzhkYzE1Li5lMDBkODA0OWViNWY4NzM4MGYwZGRmZDc5NmI0NmExZTU1MzY1MmEzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02ODUsMTIgKzY4NSw5IEBAIHNldChK
YXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJTCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvclRhcmdldC5oCiAgICAgaW5zcGVjdG9yL1Blckdsb2JhbE9iamVjdFdyYXBwZXJXb3Js
ZC5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCi0gICAgaW5zcGVjdG9yL1Njcmlw
dEJyZWFrcG9pbnQuaAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuaAogICAgIGluc3Bl
Y3Rvci9TY3JpcHRDYWxsU3RhY2suaAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0
b3J5LmgKLSAgICBpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oCi0gICAgaW5zcGVjdG9y
L1NjcmlwdERlYnVnU2VydmVyLmgKIAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQWdl
bnQuaAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDgxOTdmNmI2MGM4ZTNmYTViYjBlNzg3YjQ2YWZlNGNl
ZmY0YmZlNDEuLmU0NjViZjE3NzUyNDM2NmRmNDQxYzg4NDJmZGU4MjEwMjg4OWVmNmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzkzLDkgKzEzOTMsNiBAQAogCQlBM0ZGOUJD
NzIyMzQ3NDkxMDBCMUE5QUIgLyogWWFyckZsYWdzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBM0ZGOUJDNTIyMzQ3NDY2MDBCMUE5QUIgLyogWWFyckZs
YWdzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QTUwM0ZBMUExODhFMEZCMDAwMTEwRjE0IC8qIEphdmFTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE0MTg4RTBGQUYw
MDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi87IH07CiAJCUE1MDNGQTFFMTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTE4MTg4RTBGQjAwMDEx
MEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLzsgfTsKLQkJQTUwM0ZB
MjExODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAv
KiBTY3JpcHRCcmVha3BvaW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKLQkJQTUwM0ZBMjIxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVnTGlz
dGVuZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1
MDNGQTIwMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJQTUwM0ZBMjYxODhFRkZG
RDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyNDE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0
RGVidWdTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlBNTAzRkEyQTE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTUwM0ZBMjgxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIuaCAqLzsgfTsKIAkJQTUwOThCMDQxQzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5LmZy
YW1ld29yayBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MDk4QjAzMUMxNkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi87IH07CiAJ
CUE1MEU0QjYyMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MEU0QjVFMTg4MDlE
RDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtNDIzNSw2ICs0MjMyLDcgQEAKIAkJOTE4
RTE1QkQyNDQ3QjIyNjAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9yUHJvdG90eXBlLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkxOEUxNUJFMjQ0N0IyMjcwMDQ0N0E1NiAvKiBB
Z2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTkxOEUxNUJGMjQ0N0IyMjcwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvckNvbnN0
cnVjdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFnZ3JlZ2F0ZUVycm9y
Q29uc3RydWN0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTFEMTU3OEMyNEUw
QkUzNTAwMUY0Q0VEIC8qIEJyZWFrcG9pbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQnJlYWtwb2ludC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTkzMDUyQzMyMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQYXJzZXJBcmVuYS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTkzMDUyQzMzMEZCNzkyMTkwMDQ4RkRDMyAvKiBQYXJzZXJBcmVuYS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQYXJzZXJBcmVuYS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk5MzBEQUQwMzBGQjFFQjFBMDA4MkQyMDUgLyogTm9kZUNv
bnN0cnVjdG9ycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOb2RlQ29uc3Ry
dWN0b3JzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00MzczLDEwICs0MzcxLDYg
QEAKIAkJQTUwM0ZBMTYxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWUu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTcxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyog
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtw
b2ludC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRCcmVha3BvaW50
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MDNGQTIwMTg4RUZGNjgwMDExMEYx
NCAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNjcmlwdERlYnVnTGlzdGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJ
QTUwM0ZBMjMxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNj
cmlwdERlYnVnU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlw
dERlYnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTI3MTg4
RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEyODE4OEYx
MDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDk4QjAzMUMxNkFBMDIwMDA4Nzc5
NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSB3cmFwcGVyLmZyYW1ld29yazsgbmFtZSA9IFNlY3VyaXR5LmZyYW1l
d29yazsgcGF0aCA9IFBsYXRmb3Jtcy9NYWNPU1gucGxhdGZvcm0vRGV2ZWxvcGVyL1NES3MvTWFj
T1NYMTAuMTEuc2RrL1N5c3RlbS9MaWJyYXJ5L0ZyYW1ld29ya3MvU2VjdXJpdHkuZnJhbWV3b3Jr
OyBzb3VyY2VUcmVlID0gREVWRUxPUEVSX0RJUjsgfTsKQEAgLTY1MTcsNiArNjUxMSw3IEBACiAJ
CTE0ODBEQjlBMEREQzIyMzEwMDNDRkRGMiAvKiBkZWJ1Z2dlciAqLyA9IHsKIAkJCWlzYSA9IFBC
WEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJOTFEMTU3OEMyNEUwQkUzNTAwMUY0Q0VEIC8q
IEJyZWFrcG9pbnQuY3BwICovLAogCQkJCUZFQTA4NjFFMTgyQjdBMDQwMEY2RDg1MSAvKiBCcmVh
a3BvaW50LmggKi8sCiAJCQkJRjY5MkE4NTgwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmNw
cCAqLywKIAkJCQlGNjkyQTg1OTAyNTU1OTdEMDFGRjYwRjcgLyogRGVidWdnZXIuaCAqLywKQEAg
LTg2NjIsMTYgKzg2NTcsMTIgQEAKIAkJCQlBNUFCNDlEQjFCRUM4MDc5MDA3MDIwRkIgLyogUGVy
R2xvYmFsT2JqZWN0V3JhcHBlcldvcmxkLmggKi8sCiAJCQkJQTVGRDAwNjUxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5jcHAgKi8sCiAJCQkJQTVGRDAwNjYxODlBRkU5QzAwNjMz
MjMxIC8qIFNjcmlwdEFyZ3VtZW50cy5oICovLAotCQkJCUE1MDNGQTFGMTg4RUZGNjgwMDExMEYx
NCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8sCiAJCQkJQTVGRDAwNjkxODlCMDBBOTAwNjMzMjMx
IC8qIFNjcmlwdENhbGxGcmFtZS5jcHAgKi8sCiAJCQkJQTVGRDAwNkExODlCMDBBOTAwNjMzMjMx
IC8qIFNjcmlwdENhbGxGcmFtZS5oICovLAogCQkJCUE1RkQwMDZCMTg5QjAwQTkwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsU3RhY2suY3BwICovLAogCQkJCUE1RkQwMDZDMTg5QjAwQUEwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsU3RhY2suaCAqLywKIAkJCQlBNUZEMDA3QjE4OUIwQjRDMDA2MzMyMzEgLyog
U2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAgKi8sCiAJCQkJQTVGRDAwN0MxODlCMEI0QzAwNjMz
MjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCAqLywKLQkJCQlBNTAzRkEyMDE4OEVGRjY4
MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovLAotCQkJCUE1MDNGQTIzMTg4RUZG
RkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8sCi0JCQkJQTUwM0ZBMjQxODhF
RkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9
IGluc3BlY3RvcjsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMDI2MywxMiArMTAy
NTQsOSBAQAogCQkJCTBGMjRFNTUyMTdFRTI3NDkwMEFCQjIxNyAvKiBTY3JhdGNoUmVnaXN0ZXJB
bGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTMzMTExQjhCMjM5NzI1NjUwMEFBMzRDRSAv
KiBTY3JpYmJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNjgxODlBRkU5QzAwNjMzMjMx
IC8qIFNjcmlwdEFyZ3VtZW50cy5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjExODhFRkY2
ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQw
MDZFMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUE1RkQwMDcwMTg5QjAwQUEwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2suaCBpbiBIZWFk
ZXJzICovLAogCQkJCUE1RkQwMDdFMTg5QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tG
YWN0b3J5LmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTAzRkEyMjE4OEVGRjY4MDAxMTBGMTQgLyog
U2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjYxODhFRkZG
RDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDcz
NDFDRTFEQzAyRDc5MDBBQTI5QkEgLyogU2NyaXB0RXhlY3V0YWJsZS5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQ0VBRTdEN0I4ODlCNDc3QkE5M0FCQTZDIC8qIFNjcmlwdEZldGNoZXIuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUUzMjAxQzFFMUY4RTgyNEMwMDc2QTAzMiAvKiBTY3JpcHRGZXRjaFBhcmFt
ZXRlcnMuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IGMz
MTBiOWE0Y2RmZDYxZDQ3ODJlZjY2OWQzYTliMmQ1Y2UzMTAyZjYuLjY4NzE0OThiMGZlYzE5OWQ4
OGY5MjkyMDQwMzVlY2YwNzAzY2JiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAg
LTMwMCw2ICszMDAsNyBAQCBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCiBieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAogYnl0ZWNvbXBpbGVyL1Byb2ZpbGVUeXBlQnl0ZWNv
ZGVGbGFnLmNwcAogCitkZWJ1Z2dlci9CcmVha3BvaW50LmNwcAogZGVidWdnZXIvRGVidWdnZXIu
Y3BwCiBkZWJ1Z2dlci9EZWJ1Z2dlckNhbGxGcmFtZS5jcHAKIGRlYnVnZ2VyL0RlYnVnZ2VyTG9j
YXRpb24uY3BwCkBAIC01OTMsNyArNTk0LDYgQEAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5j
cHAKIGluc3BlY3Rvci9TY3JpcHRDYWxsRnJhbWUuY3BwCiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0
YWNrLmNwcAogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCi1pbnNwZWN0b3Iv
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCiAKIC8vIERlcml2ZWQgU291cmNlcwogaW5zcGVjdG9yL0lu
c3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9CcmVha3BvaW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZTQxZTUzZWEyMWE5N2U4MWM3OGZh
MTA5OTI2NzljMDk3OTIwZDkyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuY3BwCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiAgQ29w
eXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiQnJlYWtwb2ludC5oIgorCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKKwor
bmFtZXNwYWNlIEpTQyB7CisKK2Jvb2wgQnJlYWtwb2ludDo6bGluayhTb3VyY2VJRCBzb3VyY2VJ
RCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyKQoreworICAgIEFT
U0VSVCghbGlua2VkKCkpOworICAgIEFTU0VSVCghcmVzb2x2ZWQoKSk7CisKKyAgICBtX3NvdXJj
ZUlEID0gc291cmNlSUQ7CisgICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2Nv
bHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gbGlua2VkKCk7Cit9CisKK2Jv
b2wgQnJlYWtwb2ludDo6cmVzb2x2ZSh1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1
bW5OdW1iZXIpCit7CisgICAgQVNTRVJUKCFyZXNvbHZlZCgpKTsKKyAgICBBU1NFUlQobGlua2Vk
KCkpOworCisgICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJl
ciA9IGNvbHVtbk51bWJlcjsKKyAgICBtX3Jlc29sdmVkID0gdHJ1ZTsKKyAgICByZXR1cm4gcmVz
b2x2ZWQoKTsKK30KKworYm9vbCBCcmVha3BvaW50OjpzaG91bGRQYXVzZShEZWJ1Z2dlciYgZGVi
dWdnZXIsIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgaWYgKCsrbV9oaXRD
b3VudCA8PSBtX2lnbm9yZUNvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1
cm4gZGVidWdnZXIuZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKCp0aGlzLCBnbG9iYWxPYmpl
Y3QpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvQnJlYWtwb2ludC5oCmluZGV4IDE0MThlMTU5OGIzMGExYjA1ODE0YWI4ZmZhZDE1YTIz
MzRjYmQyYWUuLjg0MTMxOWRiMGFlYmFiZGYwYmMwYWYzMGY2NDJjZmJjMDIwYWQwYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaApAQCAtMjYsNTQgKzI2
LDEwMiBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIK
LSNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFs
bG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgog
I2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3Ry
dWN0IEJyZWFrcG9pbnQgOiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8QnJlYWtwb2ludD4g
ewotICAgIEJyZWFrcG9pbnQoKQorY2xhc3MgRGVidWdnZXI7CitjbGFzcyBKU0dsb2JhbE9iamVj
dDsKKworY2xhc3MgQnJlYWtwb2ludCA6IHB1YmxpYyBSZWZDb3VudGVkPEJyZWFrcG9pbnQ+IHsK
KyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShCcmVha3BvaW50KTsKKyAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBjbGFzcyBBY3Rpb24geworICAgICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSB7
CisgICAgICAgICAgICBMb2csCisgICAgICAgICAgICBFdmFsdWF0ZSwKKyAgICAgICAgICAgIFNv
dW5kLAorICAgICAgICAgICAgUHJvYmUsCisgICAgICAgIH07CisKKyAgICAgICAgQWN0aW9uKFR5
cGUgdHlwZSwgY29uc3QgU3RyaW5nJiBkYXRhID0gbnVsbFN0cmluZygpLCBCcmVha3BvaW50QWN0
aW9uSUQgaWQgPSBub0JyZWFrcG9pbnRBY3Rpb25JRCkKKyAgICAgICAgICAgIDogbV90eXBlKHR5
cGUpCisgICAgICAgICAgICAsIG1fZGF0YShkYXRhKQorICAgICAgICAgICAgLCBtX2lkKGlkKQor
ICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVy
biBtX3R5cGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5nJiBkYXRhKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhOyB9CisgICAgICAgIEJyZWFrcG9pbnRBY3Rpb25JRCBpZCgpIGNvbnN0IHsgcmV0dXJu
IG1faWQ7IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFR5cGUgbV90eXBlOworICAgICAgICBT
dHJpbmcgbV9kYXRhOworICAgICAgICBCcmVha3BvaW50QWN0aW9uSUQgbV9pZDsKKyAgICB9Owor
CisgICAgdXNpbmcgQWN0aW9uc0xpc3QgPSBWZWN0b3I8QWN0aW9uPjsKKworICAgIHN0YXRpYyBS
ZWY8QnJlYWtwb2ludD4gY3JlYXRlKEJyZWFrcG9pbnRJRCBpZCwgY29uc3QgU3RyaW5nJiBjb25k
aXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNMaXN0JiYgYWN0aW9ucyA9IHsgfSwgYm9vbCBh
dXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCkKICAgICB7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEJyZWFrcG9pbnQoaWQsIGNvbmRpdGlvbiwgV1RGTW92
ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCkpOwogICAgIH0KIAotICAgIEJy
ZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVt
biwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgYXV0b0NvbnRpbnVlLCB1bnNpZ25lZCBp
Z25vcmVDb3VudCkKLSAgICAgICAgOiBzb3VyY2VJRChzb3VyY2VJRCkKLSAgICAgICAgLCBsaW5l
KGxpbmUpCi0gICAgICAgICwgY29sdW1uKGNvbHVtbikKLSAgICAgICAgLCBjb25kaXRpb24oY29u
ZGl0aW9uKQotICAgICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGludWUpCi0gICAgICAgICwg
aWdub3JlQ291bnQoaWdub3JlQ291bnQpCi0gICAgewotICAgIH0KKyAgICBCcmVha3BvaW50SUQg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CiAKLSAgICBCcmVha3BvaW50SUQgaWQgeyBub0Jy
ZWFrcG9pbnRJRCB9OwotICAgIFNvdXJjZUlEIHNvdXJjZUlEIHsgbm9Tb3VyY2VJRCB9OwotICAg
IHVuc2lnbmVkIGxpbmUgeyAwIH07Ci0gICAgdW5zaWduZWQgY29sdW1uIHsgMCB9OwotICAgIFN0
cmluZyBjb25kaXRpb247Ci0gICAgYm9vbCBhdXRvQ29udGludWUgeyBmYWxzZSB9OwotICAgIHVu
c2lnbmVkIGlnbm9yZUNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVkIGhpdENvdW50IHsgMCB9Owot
ICAgIGJvb2wgcmVzb2x2ZWQgeyBmYWxzZSB9OworICAgIFNvdXJjZUlEIHNvdXJjZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9zb3VyY2VJRDsgfQorICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIoKSBj
b25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQorCisgICAgY29uc3QgU3RyaW5nJiBjb25k
aXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvbjsgfQorICAgIGNvbnN0IEFjdGlvbnNM
aXN0JiBhY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zOyB9CisgICAgYm9vbCBhdXRv
Q29udGludWUoKSBjb25zdCB7IHJldHVybiBtX2F1dG9Db250aW51ZTsgfQorCisgICAgdm9pZCBy
ZXNldEhpdENvdW50KCkgeyBtX2hpdENvdW50ID0gMDsgfQorCisgICAgYm9vbCBsaW5rKFNvdXJj
ZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpOworICAgIGJv
b2wgbGlua2VkKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRCAhPSBub1NvdXJjZUlEOyB9Cisg
ICAgYm9vbCByZXNvbHZlKHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
cik7CisgICAgYm9vbCByZXNvbHZlZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVzb2x2ZWQ7IH0KKwor
ICAgIGJvb2wgc2hvdWxkUGF1c2UoRGVidWdnZXImLCBKU0dsb2JhbE9iamVjdCopOwogCiBwcml2
YXRlOgotICAgIEJyZWFrcG9pbnQqIG1fcHJldjsKLSAgICBCcmVha3BvaW50KiBtX25leHQ7Ci0K
LSAgICBmcmllbmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxCcmVha3BvaW50PjsK
LX07Ci0KLWNsYXNzIEJyZWFrcG9pbnRzTGlzdCA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0PEJy
ZWFrcG9pbnQ+LAotICAgIHB1YmxpYyBSZWZDb3VudGVkPEJyZWFrcG9pbnRzTGlzdD4gewotcHVi
bGljOgotICAgIH5CcmVha3BvaW50c0xpc3QoKQorICAgIEJyZWFrcG9pbnQoQnJlYWtwb2ludElE
IGlkLCBTdHJpbmcgY29uZGl0aW9uID0gbnVsbFN0cmluZygpLCBBY3Rpb25zTGlzdCYmIGFjdGlv
bnMgPSB7IH0sIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBpZ25vcmVDb3VudCA9
IDApCisgICAgICAgIDogbV9pZChpZCkKKyAgICAgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24p
CisgICAgICAgICwgbV9hY3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgICAgICwgbV9hdXRv
Q29udGludWUoYXV0b0NvbnRpbnVlKQorICAgICAgICAsIG1faWdub3JlQ291bnQoaWdub3JlQ291
bnQpCiAgICAgewotICAgICAgICBCcmVha3BvaW50KiBicmVha3BvaW50OwotICAgICAgICB3aGls
ZSAoKGJyZWFrcG9pbnQgPSByZW1vdmVIZWFkKCkpKQotICAgICAgICAgICAgZGVsZXRlIGJyZWFr
cG9pbnQ7Ci0gICAgICAgIEFTU0VSVChpc0VtcHR5KCkpOwogICAgIH0KKworICAgIEJyZWFrcG9p
bnRJRCBtX2lkOworCisgICAgU291cmNlSUQgbV9zb3VyY2VJRCB7IG5vU291cmNlSUQgfTsKKwor
ICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzcxPiBXZWIgSW5zcGVjdG9y
OiBBZG9wdCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRvIGF2b2lkIG9uZUJhc2VkSW50L3pl
cm9CYXNlZEludCBhbWJpZ3VpdHkKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXIgeyAwIH07Cisg
ICAgdW5zaWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07CisKKyAgICBib29sIG1fcmVzb2x2ZWQg
eyBmYWxzZSB9OworCisgICAgU3RyaW5nIG1fY29uZGl0aW9uOworICAgIEFjdGlvbnNMaXN0IG1f
YWN0aW9uczsKKyAgICBib29sIG1fYXV0b0NvbnRpbnVlOworICAgIHNpemVfdCBtX2lnbm9yZUNv
dW50OworICAgIHNpemVfdCBtX2hpdENvdW50IHsgMCB9OwogfTsKIAordXNpbmcgQnJlYWtwb2lu
dHNMaXN0ID0gVmVjdG9yPFJlZjxKU0M6OkJyZWFrcG9pbnQ+PjsKKwogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBm
NGFjMzU2N2E1NjhlYzc2ZGMzNmRkNzhhYmFiYzBhMTg4YWMwYjUzLi5kOTFiZTQzZjZkOTE0MDM0
OGRjMDBmYzBkM2ZkMmE4ODg4ZDk3OWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAKQEAgLTI0LDEwICsyNCwxNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJs
b2NrLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJEZWJ1Z2dl
clNjb3BlLmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZN
RW50cnlTY29wZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hh
c2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgorI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsK
IApAQCAtODksNyArOTUsNiBAQCBEZWJ1Z2dlcjo6RGVidWdnZXIoVk0mIHZtKQogICAgICwgbV9y
ZWFzb25Gb3JQYXVzZShOb3RQYXVzZWQpCiAgICAgLCBtX2xhc3RFeGVjdXRlZExpbmUoVUlOVF9N
QVgpCiAgICAgLCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEKG5vU291cmNlSUQpCi0gICAgLCBtX3Rv
cEJyZWFrcG9pbnRJRChub0JyZWFrcG9pbnRJRCkKICAgICAsIG1fcGF1c2luZ0JyZWFrcG9pbnRJ
RChub0JyZWFrcG9pbnRJRCkKIHsKIH0KQEAgLTIwNSwxMiArMjEwLDk2IEBAIHZvaWQgRGVidWdn
ZXI6OnJlZ2lzdGVyQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBjb2Rl
QmxvY2stPnNldFN0ZXBwaW5nTW9kZShDb2RlQmxvY2s6OlN0ZXBwaW5nTW9kZUVuYWJsZWQpOwog
fQogCit2b2lkIERlYnVnZ2VyOjphZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCit7Cisg
ICAgYm9vbCB3YXNFbXB0eSA9IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKKworICAgIG1fb2JzZXJ2
ZXJzLmFkZCgmb2JzZXJ2ZXIpOworCisgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICBhdHRhY2hE
ZWJ1Z2dlcigpOworfQorCit2b2lkIERlYnVnZ2VyOjpyZW1vdmVPYnNlcnZlcihPYnNlcnZlciYg
b2JzZXJ2ZXIsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBtX29ic2VydmVycy5yZW1v
dmUoJm9ic2VydmVyKTsKKworICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAg
IGRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOworfQorCitib29sIERlYnVnZ2VyOjpj
YW5EaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9k
aXNwYXRjaGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsK
K30KKwordm9pZCBEZWJ1Z2dlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9u
PHZvaWQoT2JzZXJ2ZXImKT4gZnVuYykKK3sKKyAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25U
b09ic2VydmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBTZXRGb3JTY29wZTxib29sPiBj
aGFuZ2UobV9kaXNwYXRjaGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMsIHRydWUpOworCisgICAgZm9y
IChhdXRvKiBvYnNlcnZlciA6IGNvcHlUb1ZlY3RvcihtX29ic2VydmVycykpCisgICAgICAgIGZ1
bmMoKm9ic2VydmVyKTsKK30KKwogdm9pZCBEZWJ1Z2dlcjo6c2V0UHJvZmlsaW5nQ2xpZW50KFBy
b2ZpbGluZ0NsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVCghIW1fcHJvZmlsaW5nQ2xpZW50
ICE9ICEhY2xpZW50KTsKICAgICBtX3Byb2ZpbGluZ0NsaWVudCA9IGNsaWVudDsKIH0KIAordm9p
ZCBEZWJ1Z2dlcjo6c291cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNv
dXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpCit7CisgICAgLy8gUHJlZW1wdGl2ZWx5IGNoZWNrIHdoZXRoZXIgd2Ug
Y2FuIGRpc3BhdGNoIHNvIHRoYXQgd2UgZG9uJ3QgZG8gYW55IHVubmVjZXNzYXJ5IGFsbG9jYXRp
b25zLgorICAgIGlmICghY2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChlcnJvckxpbmUgIT0gLTEpIHsKKyAgICAgICAgYXV0byBzb3Vy
Y2VVUkwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7CisgICAgICAgIGF1dG8gZGF0YSA9
IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOworICAgICAgICBhdXRvIGZpcnN0
TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50
KCk7CisgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBv
YnNlcnZlcikgeworICAgICAgICAgICAgb2JzZXJ2ZXIuZmFpbGVkVG9QYXJzZVNvdXJjZShzb3Vy
Y2VVUkwsIGRhdGEsIGZpcnN0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOworICAgICAg
ICB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTQzo6U291cmNlSUQgc291cmNl
SUQgPSBzb3VyY2VQcm92aWRlci0+YXNJRCgpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dl
YmtpdC5vcmcvYi8xNjI3NzM+IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IERlYnVnZ2VyOjpTY3Jp
cHQgdG8gdXNlIFNvdXJjZVByb3ZpZGVyCisgICAgRGVidWdnZXI6OlNjcmlwdCBzY3JpcHQ7Cisg
ICAgc2NyaXB0LnNvdXJjZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7CisgICAgc2NyaXB0LnVy
bCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkwoKTsKKyAgICBzY3JpcHQuc291cmNlID0gc291
cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgc2NyaXB0LnN0YXJ0TGluZSA9
IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOwor
ICAgIHNjcmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCku
bV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CisgICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9IGlz
Q29udGVudFNjcmlwdChnbG9iYWxPYmplY3QpOworICAgIHNjcmlwdC5zb3VyY2VVUkwgPSBzb3Vy
Y2VQcm92aWRlci0+c291cmNlVVJMRGlyZWN0aXZlKCk7CisgICAgc2NyaXB0LnNvdXJjZU1hcHBp
bmdVUkwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpOworCisg
ICAgaW50IHNvdXJjZUxlbmd0aCA9IHNjcmlwdC5zb3VyY2UubGVuZ3RoKCk7CisgICAgaW50IGxp
bmVDb3VudCA9IDE7CisgICAgaW50IGxhc3RMaW5lU3RhcnQgPSAwOworICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgc291cmNlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2Vb
aV0gPT0gJ1xuJykgeworICAgICAgICAgICAgbGluZUNvdW50ICs9IDE7CisgICAgICAgICAgICBs
YXN0TGluZVN0YXJ0ID0gaSArIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzY3JpcHQuZW5k
TGluZSA9IHNjcmlwdC5zdGFydExpbmUgKyBsaW5lQ291bnQgLSAxOworICAgIGlmIChsaW5lQ291
bnQgPT0gMSkKKyAgICAgICAgc2NyaXB0LmVuZENvbHVtbiA9IHNjcmlwdC5zdGFydENvbHVtbiAr
IHNvdXJjZUxlbmd0aDsKKyAgICBlbHNlCisgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3Vy
Y2VMZW5ndGggLSBsYXN0TGluZVN0YXJ0OworCisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2
ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRpZFBhcnNl
U291cmNlKHNvdXJjZUlELCBzY3JpcHQpOworICAgIH0pOworfQorCiBTZWNvbmRzIERlYnVnZ2Vy
Ojp3aWxsRXZhbHVhdGVTY3JpcHQoKQogewogICAgIHJldHVybiBtX3Byb2ZpbGluZ0NsaWVudC0+
d2lsbEV2YWx1YXRlU2NyaXB0KCk7CkBAIC0yMjMsMTIgKzMxMiwxMiBAQCB2b2lkIERlYnVnZ2Vy
OjpkaWRFdmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0YXJ0VGltZSwgUHJvZmlsaW5nUmVhc29uIHJl
YXNvbikKIAogdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVC
bG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnJlYWtwb2ludFN0YXRlIGVuYWJsZWRPck5v
dCkKIHsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CisgICAgQVNTRVJUKGJyZWFr
cG9pbnQucmVzb2x2ZWQoKSk7CiAKICAgICBTY3JpcHRFeGVjdXRhYmxlKiBleGVjdXRhYmxlID0g
Y29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIAogICAgIFNvdXJjZUlEIHNvdXJjZUlEID0g
c3RhdGljX2Nhc3Q8U291cmNlSUQ+KGV4ZWN1dGFibGUtPnNvdXJjZUlEKCkpOwotICAgIGlmIChi
cmVha3BvaW50LnNvdXJjZUlEICE9IHNvdXJjZUlEKQorICAgIGlmIChicmVha3BvaW50LnNvdXJj
ZUlEKCkgIT0gc291cmNlSUQpCiAgICAgICAgIHJldHVybjsKIAogICAgIHVuc2lnbmVkIHN0YXJ0
TGluZSA9IGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpOwpAQCAtMjM4LDEwICszMjcsMTAgQEAgdm9p
ZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnJlYWtw
b2ludCYgYnJlYWtwb2ludCwgQnIKIAogICAgIC8vIEluc3BlY3RvciBicmVha3BvaW50IGxpbmUg
YW5kIGNvbHVtbiB2YWx1ZXMgYXJlIHplcm8tYmFzZWQgYnV0IHRoZSBleGVjdXRhYmxlCiAgICAg
Ly8gYW5kIENvZGVCbG9jayBsaW5lIGFuZCBjb2x1bW4gdmFsdWVzIGFyZSBvbmUtYmFzZWQuCi0g
ICAgdW5zaWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGluZSArIDE7CisgICAgdW5zaWduZWQgbGlu
ZSA9IGJyZWFrcG9pbnQubGluZU51bWJlcigpICsgMTsKICAgICBPcHRpb25hbDx1bnNpZ25lZD4g
Y29sdW1uOwotICAgIGlmIChicmVha3BvaW50LmNvbHVtbikKLSAgICAgICAgY29sdW1uID0gYnJl
YWtwb2ludC5jb2x1bW4gKyAxOworICAgIGlmIChicmVha3BvaW50LmNvbHVtbk51bWJlcigpKQor
ICAgICAgICBjb2x1bW4gPSBicmVha3BvaW50LmNvbHVtbk51bWJlcigpICsgMTsKIAogICAgIGlm
IChsaW5lIDwgc3RhcnRMaW5lIHx8IGxpbmUgPiBlbmRMaW5lKQogICAgICAgICByZXR1cm47CkBA
IC0yNjMsOSArMzUyLDggQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxv
Y2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnIKIAogdm9pZCBEZWJ1Z2dl
cjo6YXBwbHlCcmVha3BvaW50cyhDb2RlQmxvY2sqIGNvZGVCbG9jaykKIHsKLSAgICBCcmVha3Bv
aW50SURUb0JyZWFrcG9pbnRNYXAmIGJyZWFrcG9pbnRzID0gbV9icmVha3BvaW50SURUb0JyZWFr
cG9pbnQ7Ci0gICAgZm9yIChhdXRvKiBicmVha3BvaW50IDogYnJlYWtwb2ludHMudmFsdWVzKCkp
Ci0gICAgICAgIHRvZ2dsZUJyZWFrcG9pbnQoY29kZUJsb2NrLCAqYnJlYWtwb2ludCwgQnJlYWtw
b2ludEVuYWJsZWQpOworICAgIGZvciAoYXV0byYgYnJlYWtwb2ludCA6IG1fYnJlYWtwb2ludHMp
CisgICAgICAgIHRvZ2dsZUJyZWFrcG9pbnQoY29kZUJsb2NrLCBicmVha3BvaW50LCBCcmVha3Bv
aW50RW5hYmxlZCk7CiB9CiAKIGNsYXNzIERlYnVnZ2VyOjpUb2dnbGVCcmVha3BvaW50RnVuY3Rv
ciB7CkBAIC0zMTQsMTg4ICs0MDIsMTQzIEBAIERlYnVnZ2VyUGFyc2VEYXRhJiBEZWJ1Z2dlcjo6
ZGVidWdnZXJQYXJzZURhdGEoU291cmNlSUQgc291cmNlSUQsIFNvdXJjZVByb3ZpZGVyCiAgICAg
cmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9CiAKLXZvaWQgRGVidWdnZXI6OnJlc29s
dmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIFNvdXJjZVByb3ZpZGVyKiBzb3Vy
Y2VQcm92aWRlcikKK2Jvb2wgRGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KEJyZWFrcG9pbnQm
IGJyZWFrcG9pbnQsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlcikKIHsKLSAgICBSRUxF
QVNFX0FTU0VSVCghYnJlYWtwb2ludC5yZXNvbHZlZCk7Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQu
c291cmNlSUQgIT0gbm9Tb3VyY2VJRCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIWJyZWFrcG9pbnQu
cmVzb2x2ZWQoKSk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQubGlua2VkKCkpOwogCiAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0
IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3IgdG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2Vk
SW50IGFtYmlndWl0eQogICAgIC8vIEluc3BlY3RvciBicmVha3BvaW50IGxpbmUgYW5kIGNvbHVt
biB2YWx1ZXMgYXJlIHplcm8tYmFzZWQgYnV0IHRoZSBleGVjdXRhYmxlCiAgICAgLy8gYW5kIENv
ZGVCbG9jayBsaW5lIHZhbHVlcyBhcmUgb25lLWJhc2VkIHdoaWxlIGNvbHVtbiBpcyB6ZXJvLWJh
c2VkLgotICAgIGludCBsaW5lID0gYnJlYWtwb2ludC5saW5lICsgMTsKLSAgICBpbnQgY29sdW1u
ID0gYnJlYWtwb2ludC5jb2x1bW47CisgICAgaW50IGxpbmUgPSBicmVha3BvaW50LmxpbmVOdW1i
ZXIoKSArIDE7CisgICAgaW50IGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCk7CiAK
ICAgICAvLyBBY2NvdW50IGZvciBhIDxzY3JpcHQ+J3Mgc3RhcnQgcG9zaXRpb24gb24gdGhlIGZp
cnN0IGxpbmUgb25seS4KICAgICBpbnQgcHJvdmlkZXJTdGFydExpbmUgPSBzb3VyY2VQcm92aWRl
ci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOyAvLyBPbmUgYmFzZWQgdG8g
bWF0Y2ggdGhlIGFscmVhZHkgYWRqdXN0ZWQgbGluZS4KICAgICBpbnQgcHJvdmlkZXJTdGFydENv
bHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jhc2Vk
SW50KCk7IC8vIFplcm8gYmFzZWQgc28gY29sdW1uIHplcm8gaXMgemVyby4KLSAgICBpZiAobGlu
ZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVha3BvaW50LmNvbHVtbikgeworICAgIGlmIChs
aW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsK
ICAgICAgICAgQVNTRVJUKHByb3ZpZGVyU3RhcnRDb2x1bW4gPD0gY29sdW1uKTsKICAgICAgICAg
aWYgKHByb3ZpZGVyU3RhcnRDb2x1bW4pCiAgICAgICAgICAgICBjb2x1bW4gLT0gcHJvdmlkZXJT
dGFydENvbHVtbjsKICAgICB9CiAKLSAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgcGFyc2VEYXRhID0g
ZGVidWdnZXJQYXJzZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCwgc291cmNlUHJvdmlkZXIpOwor
ICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShicmVh
a3BvaW50LnNvdXJjZUlEKCksIHNvdXJjZVByb3ZpZGVyKTsKICAgICBPcHRpb25hbDxKU1RleHRQ
b3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVzZVBvc2l0aW9ucy5icmVh
a3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKCFyZXNv
bHZlZFBvc2l0aW9uKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGludCByZXNvbHZlZExpbmUgPSByZXNvbHZlZFBvc2l0aW9uLT5saW5lOwogICAgIGludCBy
ZXNvbHZlZENvbHVtbiA9IHJlc29sdmVkUG9zaXRpb24tPmNvbHVtbigpOwogCiAgICAgLy8gUmUt
YWNjb3VudCBmb3IgYSA8c2NyaXB0PidzIHN0YXJ0IHBvc2l0aW9uIG9uIHRoZSBmaXJzdCBsaW5l
IG9ubHkuCi0gICAgaWYgKHJlc29sdmVkTGluZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVh
a3BvaW50LmNvbHVtbikgeworICAgIGlmIChyZXNvbHZlZExpbmUgPT0gcHJvdmlkZXJTdGFydExp
bmUgJiYgYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkgewogICAgICAgICBpZiAocHJvdmlkZXJT
dGFydENvbHVtbikKICAgICAgICAgICAgIHJlc29sdmVkQ29sdW1uICs9IHByb3ZpZGVyU3RhcnRD
b2x1bW47CiAgICAgfQogCi0gICAgYnJlYWtwb2ludC5saW5lID0gcmVzb2x2ZWRMaW5lIC0gMTsK
LSAgICBicmVha3BvaW50LmNvbHVtbiA9IHJlc29sdmVkQ29sdW1uOwotICAgIGJyZWFrcG9pbnQu
cmVzb2x2ZWQgPSB0cnVlOworICAgIHJldHVybiBicmVha3BvaW50LnJlc29sdmUocmVzb2x2ZWRM
aW5lIC0gMSwgcmVzb2x2ZWRDb2x1bW4pOwogfQogCi1CcmVha3BvaW50SUQgRGVidWdnZXI6OnNl
dEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgYm9vbCYgZXhpc3RpbmcpCitib29s
IERlYnVnZ2VyOjpzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAg
QVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2ZWQpOwotICAgIEFTU0VSVChicmVha3BvaW50LnNvdXJj
ZUlEICE9IG5vU291cmNlSUQpOworICAgIEFTU0VSVChicmVha3BvaW50LnJlc29sdmVkKCkpOwog
Ci0gICAgU291cmNlSUQgc291cmNlSUQgPSBicmVha3BvaW50LnNvdXJjZUlEOwotICAgIHVuc2ln
bmVkIGxpbmUgPSBicmVha3BvaW50LmxpbmU7Ci0gICAgdW5zaWduZWQgY29sdW1uID0gYnJlYWtw
b2ludC5jb2x1bW47CisgICAgYXV0byYgYnJlYWtwb2ludHNGb3JMaW5lID0gbV9icmVha3BvaW50
c0ZvclNvdXJjZUlELmVuc3VyZShicmVha3BvaW50LnNvdXJjZUlEKCksIFtdIHsKKyAgICAgICAg
cmV0dXJuIExpbmVUb0JyZWFrcG9pbnRzTWFwKCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwog
Ci0gICAgU291cmNlSURUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSURU
b0JyZWFrcG9pbnRzLmZpbmQoYnJlYWtwb2ludC5zb3VyY2VJRCk7Ci0gICAgaWYgKGl0ID09IG1f
c291cmNlSURUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICBpdCA9IG1fc291cmNlSURUb0Jy
ZWFrcG9pbnRzLnNldChzb3VyY2VJRCwgTGluZVRvQnJlYWtwb2ludHNNYXAoKSkuaXRlcmF0b3I7
CisgICAgYXV0byYgYnJlYWtwb2ludHMgPSBicmVha3BvaW50c0ZvckxpbmUuZW5zdXJlKGJyZWFr
cG9pbnQubGluZU51bWJlcigpLCBbXSB7CisgICAgICAgIHJldHVybiBCcmVha3BvaW50c0xpc3Qo
KTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBMaW5lVG9CcmVha3BvaW50c01hcDo6
aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+dmFsdWUuZmluZChsaW5lKTsKLSAgICBpZiAoYnJlYWtz
SXQgPT0gaXQtPnZhbHVlLmVuZCgpKQotICAgICAgICBicmVha3NJdCA9IGl0LT52YWx1ZS5zZXQo
bGluZSwgYWRvcHRSZWYobmV3IEJyZWFrcG9pbnRzTGlzdCkpLml0ZXJhdG9yOwotCi0gICAgQnJl
YWtwb2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpicmVha3NJdC0+dmFsdWU7Ci0gICAgZm9yIChC
cmVha3BvaW50KiBjdXJyZW50ID0gYnJlYWtwb2ludHMuaGVhZCgpOyBjdXJyZW50OyBjdXJyZW50
ID0gY3VycmVudC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW50LT5jb2x1bW4gPT0gY29s
dW1uKSB7CisgICAgZm9yIChhdXRvJiBleGlzdGluZ0JyZWFrcG9pbnQgOiBicmVha3BvaW50cykg
eworICAgICAgICBpZiAoZXhpc3RpbmdCcmVha3BvaW50LT5jb2x1bW5OdW1iZXIoKSA9PSBicmVh
a3BvaW50LmNvbHVtbk51bWJlcigpKSB7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdCcmVh
a3BvaW50LT5pZCgpICE9IGJyZWFrcG9pbnQuaWQoKSk7CiAgICAgICAgICAgICAvLyBGb3VuZCBl
eGlzdGluZyBicmVha3BvaW50LiBEbyBub3QgY3JlYXRlIGEgZHVwbGljYXRlIGF0IHRoaXMgbG9j
YXRpb24uCi0gICAgICAgICAgICBleGlzdGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4g
Y3VycmVudC0+aWQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBleGlzdGluZyA9IGZhbHNlOwotICAgIEJyZWFrcG9pbnRJRCBpZCA9ICsrbV90b3BC
cmVha3BvaW50SUQ7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOwor
ICAgIGJyZWFrcG9pbnRzLmFwcGVuZChtYWtlUmVmKGJyZWFrcG9pbnQpKTsKIAotICAgIGJyZWFr
cG9pbnQuaWQgPSBpZDsKKyAgICBtX2JyZWFrcG9pbnRzLmFkZChtYWtlUmVmKGJyZWFrcG9pbnQp
KTsKIAotICAgIEJyZWFrcG9pbnQqIG5ld0JyZWFrcG9pbnQgPSBuZXcgQnJlYWtwb2ludChicmVh
a3BvaW50KTsKLSAgICBicmVha3BvaW50cy5hcHBlbmQobmV3QnJlYWtwb2ludCk7Ci0gICAgbV9i
cmVha3BvaW50SURUb0JyZWFrcG9pbnQuc2V0KGlkLCBuZXdCcmVha3BvaW50KTsKKyAgICB0b2dn
bGVCcmVha3BvaW50KGJyZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsKIAotICAgIHRvZ2ds
ZUJyZWFrcG9pbnQoKm5ld0JyZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsKLQotICAgIHJl
dHVybiBpZDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6cmVtb3ZlQnJl
YWtwb2ludChCcmVha3BvaW50SUQgaWQpCitib29sIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50
KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAgQVNTRVJUKGlkICE9IG5vQnJlYWtwb2lu
dElEKTsKKyAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCgpKTsKIAotICAgIEJyZWFrcG9p
bnRJRFRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgaWRJdCA9IG1fYnJlYWtwb2ludElEVG9CcmVh
a3BvaW50LmZpbmQoaWQpOwotICAgIEFTU0VSVChpZEl0ICE9IG1fYnJlYWtwb2ludElEVG9CcmVh
a3BvaW50LmVuZCgpKTsKLSAgICBCcmVha3BvaW50KiBicmVha3BvaW50ID0gaWRJdC0+dmFsdWU7
CisgICAgYXV0byBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9IG1fYnJlYWtwb2ludHNGb3JT
b3VyY2VJRC5maW5kKGJyZWFrcG9pbnQuc291cmNlSUQoKSk7CisgICAgaWYgKGJyZWFrcG9pbnRz
Rm9yTGluZUl0ZXJhdG9yID09IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5lbmQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU291cmNlSUQgc291cmNlSUQgPSBicmVha3BvaW50LT5z
b3VyY2VJRDsKLSAgICBBU1NFUlQoc291cmNlSUQpOwotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50
c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlE
KTsKLSAgICBBU1NFUlQoaXQgIT0gbV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkpOwotICAg
IExpbmVUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT52YWx1ZS5maW5k
KGJyZWFrcG9pbnQtPmxpbmUpOwotICAgIEFTU0VSVChicmVha3NJdCAhPSBpdC0+dmFsdWUuZW5k
KCkpOworICAgIGF1dG8gYnJlYWtwb2ludHNJdGVyYXRvciA9IGJyZWFrcG9pbnRzRm9yTGluZUl0
ZXJhdG9yLT52YWx1ZS5maW5kKGJyZWFrcG9pbnQubGluZU51bWJlcigpKTsKKyAgICBpZiAoYnJl
YWtwb2ludHNJdGVyYXRvciA9PSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuZW5k
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRvZ2dsZUJyZWFrcG9pbnQoKmJyZWFr
cG9pbnQsIEJyZWFrcG9pbnREaXNhYmxlZCk7CisgICAgdG9nZ2xlQnJlYWtwb2ludChicmVha3Bv
aW50LCBCcmVha3BvaW50RGlzYWJsZWQpOworCisgICAgYXV0byYgYnJlYWtwb2ludHMgPSBicmVh
a3BvaW50c0l0ZXJhdG9yLT52YWx1ZTsKIAotICAgIEJyZWFrcG9pbnRzTGlzdCYgYnJlYWtwb2lu
dHMgPSAqYnJlYWtzSXQtPnZhbHVlOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9vbCBmb3Vu
ZCA9IGZhbHNlOwotICAgIGZvciAoQnJlYWtwb2ludCogY3VycmVudCA9IGJyZWFrcG9pbnRzLmhl
YWQoKTsgY3VycmVudCAmJiAhZm91bmQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnQtPmlkID09IGJyZWFrcG9pbnQtPmlkKQorICAgIGZvciAoYXV0byYg
ZXhpc3RpbmdCcmVha3BvaW50IDogYnJlYWtwb2ludHMpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5n
QnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCkgPT0gYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkg
eworICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5nQnJlYWtwb2ludC0+aWQoKSA9PSBicmVha3Bv
aW50LmlkKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmb3VuZCk7CiAgICAgICAgICAgICBmb3Vu
ZCA9IHRydWU7CisgICAgICAgIH0KICAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKICNlbmRpZiAv
LyBBU1NFUlRfRU5BQkxFRAogCi0gICAgbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQucmVtb3Zl
KGlkSXQpOwotICAgIGJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50KTsKLSAgICBkZWxldGUg
YnJlYWtwb2ludDsKKyAgICBhdXRvIHJlbW92ZWQgPSBtX2JyZWFrcG9pbnRzLnJlbW92ZShicmVh
a3BvaW50KTsKKyAgICByZW1vdmVkIHw9ICFicmVha3BvaW50cy5yZW1vdmVBbGxNYXRjaGluZyhb
Jl0gKGNvbnN0IFJlZjxCcmVha3BvaW50PiYgZXhpc3RpbmdCcmVha3BvaW50KSB7CisgICAgICAg
IHJldHVybiAmYnJlYWtwb2ludCA9PSBleGlzdGluZ0JyZWFrcG9pbnQucHRyKCk7CisgICAgfSk7
CiAKICAgICBpZiAoYnJlYWtwb2ludHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0LT52YWx1ZS5y
ZW1vdmUoYnJlYWtzSXQpOwotICAgICAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIG1fc291cmNlSURUb0JyZWFrcG9pbnRzLnJlbW92ZShpdCk7CisgICAgICAgIGJyZWFr
cG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUoYnJlYWtwb2ludHNJdGVyYXRvcik7
CisgICAgICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuaXNFbXB0eSgp
KQorICAgICAgICAgICAgbV9icmVha3BvaW50c0ZvclNvdXJjZUlELnJlbW92ZShicmVha3BvaW50
c0ZvckxpbmVJdGVyYXRvcik7CiAgICAgfQorCisgICAgcmV0dXJuIHJlbW92ZWQ7CiB9CiAKLWJv
b2wgRGVidWdnZXI6Omhhc0JyZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIGNvbnN0IFRleHRQ
b3NpdGlvbiYgcG9zaXRpb24sIEJyZWFrcG9pbnQgKmhpdEJyZWFrcG9pbnQpCitSZWZQdHI8QnJl
YWtwb2ludD4gRGVidWdnZXI6OmRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgU291cmNlSUQgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9zaXRpb24p
CiB7CiAgICAgaWYgKCFtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKQotICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU291cmNlSURUb0JyZWFrcG9pbnRz
TWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmZpbmQoc291
cmNlSUQpOwotICAgIGlmIChpdCA9PSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3Ig
PSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZmluZChzb3VyY2VJRCk7CisgICAgaWYgKGJyZWFr
cG9pbnRzRm9yTGluZUl0ZXJhdG9yID09IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB1bnNpZ25lZCBsaW5lID0gcG9zaXRpb24u
bV9saW5lLnplcm9CYXNlZEludCgpOwogICAgIHVuc2lnbmVkIGNvbHVtbiA9IHBvc2l0aW9uLm1f
Y29sdW1uLnplcm9CYXNlZEludCgpOwogICAgIAotICAgIExpbmVUb0JyZWFrcG9pbnRzTWFwOjpj
b25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT52YWx1ZS5maW5kKGxpbmUpOwotICAgIGlmIChi
cmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBh
dXRvIGJyZWFrcG9pbnRzSXRlcmF0b3IgPSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFs
dWUuZmluZChsaW5lKTsKKyAgICBpZiAoYnJlYWtwb2ludHNJdGVyYXRvciA9PSBicmVha3BvaW50
c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOwor
CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogYnJlYWtwb2ludHNJdGVyYXRvci0+dmFsdWUp
IHsKKyAgICAgICAgdW5zaWduZWQgYnJlYWtMaW5lID0gYnJlYWtwb2ludC0+bGluZU51bWJlcigp
OworICAgICAgICB1bnNpZ25lZCBicmVha0NvbHVtbiA9IGJyZWFrcG9pbnQtPmNvbHVtbk51bWJl
cigpOwogCi0gICAgYm9vbCBoaXQgPSBmYWxzZTsKLSAgICBjb25zdCBCcmVha3BvaW50c0xpc3Qm
IGJyZWFrcG9pbnRzID0gKmJyZWFrc0l0LT52YWx1ZTsKLSAgICBCcmVha3BvaW50KiBicmVha3Bv
aW50OwotICAgIGZvciAoYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzLmhlYWQoKTsgYnJlYWtwb2lu
dDsgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQtPm5leHQoKSkgewotICAgICAgICB1bnNpZ25lZCBi
cmVha0xpbmUgPSBicmVha3BvaW50LT5saW5lOwotICAgICAgICB1bnNpZ25lZCBicmVha0NvbHVt
biA9IGJyZWFrcG9pbnQtPmNvbHVtbjsKICAgICAgICAgLy8gU2luY2UgZnJvbnRlbmQgdHJ1bmNh
dGVzIHRoZSBpbmRlbnQsIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gYSBsaW5lIG11c3QgbWF0Y2gg
dGhlIGJyZWFrcG9pbnQgKGxpbmUsMCkuCiAgICAgICAgIEFTU0VSVCh0aGlzID09IG1fY3VycmVu
dENhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigpKTsKLSAg
ICAgICAgaWYgKChsaW5lICE9IG1fbGFzdEV4ZWN1dGVkTGluZSAmJiBsaW5lID09IGJyZWFrTGlu
ZSAmJiAhYnJlYWtDb2x1bW4pCi0gICAgICAgICAgICB8fCAobGluZSA9PSBicmVha0xpbmUgJiYg
Y29sdW1uID09IGJyZWFrQ29sdW1uKSkgewotICAgICAgICAgICAgaGl0ID0gdHJ1ZTsKKyAgICAg
ICAgaWYgKChsaW5lICE9IG1fbGFzdEV4ZWN1dGVkTGluZSAmJiBsaW5lID09IGJyZWFrTGluZSAm
JiAhYnJlYWtDb2x1bW4pIHx8IChsaW5lID09IGJyZWFrTGluZSAmJiBjb2x1bW4gPT0gYnJlYWtD
b2x1bW4pKSB7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC0+c2hvdWxkUGF1c2UoKnRoaXMs
IGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQuY29weVJl
ZigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCFoaXQp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChoaXRCcmVha3BvaW50KQotICAgICAg
ICAqaGl0QnJlYWtwb2ludCA9ICpicmVha3BvaW50OwotCi0gICAgYnJlYWtwb2ludC0+aGl0Q291
bnQrKzsKLSAgICBpZiAoYnJlYWtwb2ludC0+aWdub3JlQ291bnQgPj0gYnJlYWtwb2ludC0+aGl0
Q291bnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChicmVha3BvaW50LT5jb25k
aXRpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdlIGNhbm5v
dCBzdG9wIGluIHRoZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgY29uZGl0aW9uIGNvZGUsCi0g
ICAgLy8gc28gbWFrZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBpcyBhbHJlYWR5IHBhdXNl
ZC4KLSAgICBUZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7Ci0KLSAgICBO
YWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVi
dWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICBKU09iamVj
dCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwotICAgIEpTVmFsdWUgcmVzdWx0ID0g
ZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYnJlYWtwb2ludC0+
Y29uZGl0aW9uLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKLQotICAgIC8vIFdl
IGNhbiBsb3NlIHRoZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgSmF2YVNjcmlwdC4KLSAgICBp
ZiAoIW1fY3VycmVudENhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxGcmFtZS0+bGV4aWNhbEds
b2JhbE9iamVjdChtX3ZtKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIC8vIEFuIGVy
cm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCi0gICAgICAgIGhhbmRsZUV4Y2Vw
dGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Ci0gICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnRvQm9vbGVhbihn
bG9iYWxPYmplY3QpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjbGFzcyBEZWJ1Z2dlcjo6
Q2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvciB7CkBAIC01MTksMTQgKzU2Miw5
MiBAQCB2b2lkIERlYnVnZ2VyOjpjbGVhckJyZWFrcG9pbnRzKCkKIHsKICAgICBtX3ZtLmhlYXAu
Y29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgbV90b3BCcmVha3BvaW50SUQgPSBub0JyZWFr
cG9pbnRJRDsKLSAgICBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5jbGVhcigpOwotICAgIG1f
c291cmNlSURUb0JyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50c0ZvclNvdXJj
ZUlELmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50cy5jbGVhcigpOworICAgIG1fc3BlY2lhbEJy
ZWFrcG9pbnQgPSBudWxscHRyOwogCiAgICAgQ2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3Rz
RnVuY3RvciBmdW5jdG9yKHRoaXMpOwogICAgIG1fdm0uaGVhcC5mb3JFYWNoQ29kZUJsb2NrKGZ1
bmN0b3IpOwogfQogCitib29sIERlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24o
QnJlYWtwb2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sK
KyAgICBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IGJyZWFrcG9pbnQuY29uZGl0aW9uKCk7Cisg
ICAgaWYgKGNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
Ly8gV2UgY2Fubm90IHN0b3AgaW4gdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBjb25kaXRp
b24gY29kZSwKKyAgICAvLyBzbyBtYWtlIGl0IGxvb2tzIGxpa2UgdGhlIGRlYnVnZ2VyIGlzIGFs
cmVhZHkgcGF1c2VkLgorICAgIFRlbXBvcmFyeVBhdXNlZFN0YXRlIHBhdXNlZFN0YXRlKCp0aGlz
KTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIERlYnVnZ2VyQ2Fs
bEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwor
ICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7CisgICAgSlNWYWx1
ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihj
b25kaXRpb24sIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOworCisgICAgLy8gV2Ug
Y2FuIGxvc2UgdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBKYXZhU2NyaXB0LgorICAgIGlm
ICghbV9jdXJyZW50Q2FsbEZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
ZXhjZXB0aW9uKSB7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV4Y2Vw
dGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0
LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworfQorCit2b2lkIERlYnVnZ2VyOjpldmFsdWF0ZUJy
ZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUKGlzQXR0YWNoZWQoZ2xvYmFsT2JqZWN0KSk7CisK
KyAgICBtX2N1cnJlbnRQcm9iZUJhdGNoSWQrKzsKKworICAgIGZvciAoYXV0byYgYWN0aW9uIDog
YnJlYWtwb2ludC5hY3Rpb25zKCkpIHsKKyAgICAgICAgYXV0byYgZGVidWdnZXJDYWxsRnJhbWUg
PSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKKworICAgICAgICBzd2l0Y2ggKGFjdGlvbi50
eXBlKCkpIHsKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OkxvZzoKKyAg
ICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNl
cnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJyZWFrcG9pbnRBY3Rpb25Mb2coZGVi
dWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGFjdGlvbi5kYXRhKCkpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFj
dGlvbjo6VHlwZTo6RXZhbHVhdGU6IHsKKyAgICAgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4g
ZXhjZXB0aW9uOworICAgICAgICAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0g
bnVsbHB0cjsKKyAgICAgICAgICAgIGRlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3Bl
RXh0ZW5zaW9uKGFjdGlvbi5kYXRhKCksIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24p
OworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICByZXBvcnRFeGNl
cHRpb24oZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0
aW9uOjpUeXBlOjpTb3VuZDoKKyAgICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVy
cyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJy
ZWFrcG9pbnRBY3Rpb25Tb3VuZChhY3Rpb24uaWQoKSk7CisgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpQ
cm9iZTogeworICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAg
ICAgICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOworICAgICAg
ICAgICAgSlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihhY3Rpb24uZGF0YSgpLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9u
KTsKKyAgICAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGRlYnVnZ2VyR2xvYmFsT2JqZWN0
ID0gZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCk7CisgICAgICAgICAgICBpZiAoZXhj
ZXB0aW9uKQorICAgICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihkZWJ1Z2dlckdsb2JhbE9i
amVjdCwgZXhjZXB0aW9uKTsKKworICAgICAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2
ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgICAgICAgICAgb2JzZXJ2ZXIu
YnJlYWtwb2ludEFjdGlvblByb2JlKGRlYnVnZ2VyR2xvYmFsT2JqZWN0LCBhY3Rpb24uaWQoKSwg
bV9jdXJyZW50UHJvYmVCYXRjaElkLCBtX25leHRQcm9iZVNhbXBsZUlkKyssIGV4Y2VwdGlvbiA/
IGV4Y2VwdGlvbi0+dmFsdWUoKSA6IHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlzQXR0YWNo
ZWQoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIGNsYXNz
IERlYnVnZ2VyOjpDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yIHsKIHB1YmxpYzoKICAgICBD
bGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CkBAIC01NzEsMTEgKzY5MiwzNSBAQCB2b2lkIERlYnVnZ2VyOjpzZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2UpCiAgICAgbV9wYXVzZU9uRXhjZXB0
aW9uc1N0YXRlID0gcGF1c2U7CiB9CiAKLXZvaWQgRGVidWdnZXI6OnNldFBhdXNlT25OZXh0U3Rh
dGVtZW50KGJvb2wgcGF1c2UpCit2b2lkIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bw
b3J0dW5pdHkoKQogewotICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHBhdXNlOwotICAg
IGlmIChwYXVzZSkKLSAgICAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQp
OworICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHRydWU7CisKKyAgICBzZXRTdGVwcGlu
Z01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmNhbmNlbFBh
dXNlQXROZXh0T3Bwb3J0dW5pdHkoKQoreworICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9
IGZhbHNlOworfQorCitib29sIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFr
cG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK3sKKyAgICBpZiAobV9zcGVjaWFsQnJlYWtw
b2ludCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zcGVjaWFsQnJlYWtwb2ludCA9
IG1ha2VSZWYoYnJlYWtwb2ludCk7CisgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVu
YWJsZWQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERlYnVnZ2VyOjpjYW5jZWxQYXVz
ZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAgaWYg
KCZicmVha3BvaW50ICE9IG1fc3BlY2lhbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIG1fc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOworICAgIHJldHVybiB0cnVl
OwogfQogCiB2b2lkIERlYnVnZ2VyOjpicmVha1Byb2dyYW0oKQpAQCAtNTk5LDcgKzc0NCw3IEBA
IHZvaWQgRGVidWdnZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiAgICAgaWYgKCFtX2lzUGF1c2VkKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRz
KCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogdm9p
ZCBEZWJ1Z2dlcjo6c3RlcE5leHRFeHByZXNzaW9uKCkKQEAgLTYxMCw3ICs3NTUsNyBAQCB2b2lk
IERlYnVnZ2VyOjpzdGVwTmV4dEV4cHJlc3Npb24oKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9
IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBtX3BhdXNlT25TdGVwTmV4dCA9IHRydWU7CiAgICAg
c2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVu
dHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2VyOjpzdGVwSW50b1N0YXRlbWVudCgpCkBAIC02
MjAsNyArNzY1LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcEludG9TdGF0ZW1lbnQoKQogCiAgICAg
bV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3Rl
cHBpbmdNb2RlRW5hYmxlZCk7Ci0gICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50
cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7CiB9CiAKIHZv
aWQgRGVidWdnZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKQEAgLTYzMCw3ICs3NzUsNyBAQCB2b2lk
IERlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCgpCiAKICAgICBtX3BhdXNlT25DYWxsRnJhbWUg
PSBtX2N1cnJlbnRDYWxsRnJhbWU7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVu
YWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBt
X2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2Vy
OjpzdGVwT3V0T2ZGdW5jdGlvbigpCkBAIC02NDIsNyArNzg3LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6
c3RlcE91dE9mRnVuY3Rpb24oKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENh
bGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWUodG9wRW50cnlGcmFtZSkg
OiBudWxscHRyOwogICAgIG1fcGF1c2VPblN0ZXBPdXQgPSB0cnVlOwogICAgIHNldFN0ZXBwaW5n
TW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVn
Z2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsK
IH0KIAogc3RhdGljIGlubGluZSBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdEZv
ckNhbGxGcmFtZShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNzAxLDEwICs4NDYs
MTcgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogCiAgICAgYm9vbCBkaWRQYXVzZUZvclN0ZXAgPSBwYXVzZU5vdzsKIAotICAgIEJy
ZWFrcG9pbnQgYnJlYWtwb2ludDsKICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBEZWJ1Z2dl
ckNhbGxGcmFtZTo6cG9zaXRpb25Gb3JDYWxsRnJhbWUodm0sIG1fY3VycmVudENhbGxGcmFtZSk7
Ci0gICAgYm9vbCBkaWRIaXRCcmVha3BvaW50ID0gaGFzQnJlYWtwb2ludChzb3VyY2VJRCwgcG9z
aXRpb24sICZicmVha3BvaW50KTsKLSAgICBwYXVzZU5vdyB8PSBkaWRIaXRCcmVha3BvaW50Owor
CisgICAgYXV0byBicmVha3BvaW50ID0gZGlkSGl0QnJlYWtwb2ludChnbG9iYWxPYmplY3QsIHNv
dXJjZUlELCBwb3NpdGlvbik7CisgICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgIHBhdXNlTm93
ID0gdHJ1ZTsKKworICAgIC8vIFNwZWNpYWwgYnJlYWtwb2ludHMgYXJlIG9ubHkgZ2l2ZW4gb25l
IG9wcG9ydHVuaXR5IHRvIHBhdXNlLgorICAgIGF1dG8gc3BlY2lhbEJyZWFrcG9pbnQgPSBXVEZN
b3ZlKG1fc3BlY2lhbEJyZWFrcG9pbnQpOworICAgIGlmIChzcGVjaWFsQnJlYWtwb2ludCAmJiBz
cGVjaWFsQnJlYWtwb2ludC0+c2hvdWxkUGF1c2UoKnRoaXMsIGdsb2JhbE9iamVjdCkpCisgICAg
ICAgIHBhdXNlTm93ID0gdHJ1ZTsKKwogICAgIG1fbGFzdEV4ZWN1dGVkTGluZSA9IHBvc2l0aW9u
Lm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKICAgICBpZiAoIXBhdXNlTm93KQogICAgICAgICByZXR1
cm47CkBAIC03MTYsMjQgKzg2OCw0NSBAQCB2b2lkIERlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gcmVzZXRpbmcgdGhlIHBhdXNlIHN0
YXRlIGJlZm9yZSBleGVjdXRpbmcgYW55IGJyZWFrcG9pbnQgYWN0aW9ucy4KICAgICBUZW1wb3Jh
cnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7CiAKLSAgICBpZiAoZGlkSGl0QnJlYWtw
b2ludCkgewotICAgICAgICBoYW5kbGVCcmVha3BvaW50SGl0KGdsb2JhbE9iamVjdCwgYnJlYWtw
b2ludCk7CisgICAgaWYgKGJyZWFrcG9pbnQgfHwgc3BlY2lhbEJyZWFrcG9pbnQpIHsKICAgICAg
ICAgLy8gTm90ZSB0aGF0IHRoZSBhY3Rpb25zIGNhbiBwb3RlbnRpYWxseSBzdG9wIHRoZSBkZWJ1
Z2dlciwgc28gd2UgbmVlZCB0byBjaGVjayB0aGF0CiAgICAgICAgIC8vIHdlIHN0aWxsIGhhdmUg
YSBjdXJyZW50IGNhbGwgZnJhbWUgd2hlbiB3ZSBnZXQgYmFjay4KLSAgICAgICAgaWYgKCFtX2N1
cnJlbnRDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGJyZWFr
cG9pbnQuYXV0b0NvbnRpbnVlKSB7CisgICAgICAgIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7
CisKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGV2YWx1YXRlQnJlYWtw
b2ludEFjdGlvbnMoKmJyZWFrcG9pbnQsIGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgICAgIGlm
ICghbV9jdXJyZW50Q2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICAgICAgaWYgKGJyZWFrcG9pbnQtPmF1dG9Db250aW51ZSgpKQorICAgICAgICAgICAgICAgIGF1
dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3BlY2lhbEJyZWFr
cG9pbnQpIHsKKyAgICAgICAgICAgIGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoKnNwZWNpYWxC
cmVha3BvaW50LCBnbG9iYWxPYmplY3QpOworCisgICAgICAgICAgICBpZiAoIW1fY3VycmVudENh
bGxGcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChzcGVj
aWFsQnJlYWtwb2ludC0+YXV0b0NvbnRpbnVlKCkpCisgICAgICAgICAgICAgICAgYXV0b0NvbnRp
bnVlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvQ29udGludWUpIHsKICAg
ICAgICAgICAgIGlmICghZGlkUGF1c2VGb3JTdGVwKQogICAgICAgICAgICAgICAgIHJldHVybjsK
LSAgICAgICAgICAgIGRpZEhpdEJyZWFrcG9pbnQgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICBtX3BhdXNpbmdCcmVha3BvaW50SUQgPSBicmVha3BvaW50LmlkOworCisgICAg
ICAgICAgICBicmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHNwZWNpYWxCcmVha3Bv
aW50ID0gbnVsbHB0cjsKKyAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50KQorICAgICAgICAg
ICAgbV9wYXVzaW5nQnJlYWtwb2ludElEID0gYnJlYWtwb2ludC0+aWQoKTsKICAgICB9CiAKICAg
ICBpZiAoYmxhY2tib3hUeXBlSXRlcmF0b3IgIT0gbV9ibGFja2JveGVkU2NyaXB0cy5lbmQoKSAm
JiBibGFja2JveFR5cGVJdGVyYXRvci0+dmFsdWUgPT0gQmxhY2tib3hUeXBlOjpEZWZlcnJlZCkg
ewogICAgICAgICBtX2FmdGVyQmxhY2tib3hlZFNjcmlwdCA9IHRydWU7Ci0gICAgICAgIHNldFBh
dXNlT25OZXh0U3RhdGVtZW50KHRydWUpOworICAgICAgICBzY2hlZHVsZVBhdXNlQXROZXh0T3Bw
b3J0dW5pdHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQxLDcgKzkxNCw3IEBA
IHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKICAgICAgICAgYXV0byByZWFzb24gPSBtX3JlYXNvbkZvclBhdXNlOwogICAgICAgICBpZiAo
YWZ0ZXJCbGFja2JveGVkU2NyaXB0KQogICAgICAgICAgICAgcmVhc29uID0gUGF1c2VkQWZ0ZXJC
bGFja2JveGVkU2NyaXB0OwotICAgICAgICBlbHNlIGlmIChkaWRIaXRCcmVha3BvaW50KQorICAg
ICAgICBlbHNlIGlmIChicmVha3BvaW50KQogICAgICAgICAgICAgcmVhc29uID0gUGF1c2VkRm9y
QnJlYWtwb2ludDsKICAgICAgICAgUGF1c2VSZWFzb25EZWNsYXJhdGlvbiByYXVzZVJlYXNvbkRl
Y2xhcmF0aW9uKCp0aGlzLCByZWFzb24pOwogCkBAIC03NTEsMTIgKzkyNCw0NSBAQCB2b2lkIERl
YnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAg
ICBtX3BhdXNpbmdCcmVha3BvaW50SUQgPSBub0JyZWFrcG9pbnRJRDsKIAotICAgIGlmICghbV9w
YXVzZUF0TmV4dE9wcG9ydHVuaXR5ICYmICFtX3BhdXNlT25DYWxsRnJhbWUpIHsKKyAgICBpZiAo
IW1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSAmJiAhbV9wYXVzZU9uQ2FsbEZyYW1lICYmICFtX3Nw
ZWNpYWxCcmVha3BvaW50KSB7CiAgICAgICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVE
aXNhYmxlZCk7CiAgICAgICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG51bGxwdHI7CiAgICAgfQog
fQogCit2b2lkIERlYnVnZ2VyOjpoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBSZWFzb25Gb3JQYXVzZSkKK3sKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMo
WyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwor
ICAgICAgICBvYnNlcnZlci5kaWRQYXVzZShnbG9iYWxPYmplY3QsIGN1cnJlbnREZWJ1Z2dlckNh
bGxGcmFtZSgpLCBleGNlcHRpb25PckNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCkpOworICAgIH0p
OworCisgICAgZGlkUGF1c2UoZ2xvYmFsT2JqZWN0KTsKKworICAgIG1fZG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cyA9IGZhbHNlOworICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisK
KyAgICBkaWRDb250aW51ZShnbG9iYWxPYmplY3QpOworCisgICAgZGlzcGF0Y2hGdW5jdGlvblRv
T2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRp
ZENvbnRpbnVlKCk7CisgICAgfSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBEZWJ1Z2dlcjo6ZXhjZXB0
aW9uT3JDYXVnaHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7Cisg
ICAgaWYgKHJlYXNvbkZvclBhdXNlKCkgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKQorICAgICAgICBy
ZXR1cm4gY3VycmVudEV4Y2VwdGlvbigpOworCisgICAgZm9yIChSZWZQdHI8RGVidWdnZXJDYWxs
RnJhbWU+IGZyYW1lID0gJmN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+Y2FsbGVyRnJhbWUoKSkgeworICAgICAgICBEZWJ1Z2dlclNjb3BlJiBzY29wZSA9
ICpmcmFtZS0+c2NvcGUoKTsKKyAgICAgICAgaWYgKHNjb3BlLmlzQ2F0Y2hTY29wZSgpKQorICAg
ICAgICAgICAgcmV0dXJuIHNjb3BlLmNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgfQor
CisgICAgcmV0dXJuIHsgfTsKK30KKwogdm9pZCBEZWJ1Z2dlcjo6ZXhjZXB0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2Vw
dGlvbiwgYm9vbCBoYXNDYXRjaEhhbmRsZXIpCiB7CiAgICAgaWYgKG1faXNQYXVzZWQpCkBAIC04
MDcsOCArMTAxMyw4IEBAIHZvaWQgRGVidWdnZXI6OmF0RXhwcmVzc2lvbihDYWxsRnJhbWUqIGNh
bGxGcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE9ubHkgcGF1c2UgYXQg
dGhlIG5leHQgZXhwcmVzc2lvbiB3aXRoIHN0ZXAtaW4sIHN0ZXAtbmV4dCwgYW5kIHN0ZXAtb3V0
LgotICAgIGJvb2wgc2hvdWxkQXR0ZW1wdFBhdXNlID0gbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5
IHx8IG1fcGF1c2VPblN0ZXBOZXh0IHx8IG1fcGF1c2VPblN0ZXBPdXQ7CisgICAgLy8gT25seSBw
YXVzZSBhdCB0aGUgbmV4dCBleHByZXNzaW9uIGZvciBzdGVwLWluLCBzdGVwLW5leHQsIHN0ZXAt
b3V0LCBvciBzcGVjaWFsIGJyZWFrcG9pbnRzLgorICAgIGJvb2wgc2hvdWxkQXR0ZW1wdFBhdXNl
ID0gbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5IHx8IG1fcGF1c2VPblN0ZXBOZXh0IHx8IG1fcGF1
c2VPblN0ZXBPdXQgfHwgbV9zcGVjaWFsQnJlYWtwb2ludDsKIAogICAgIFBhdXNlUmVhc29uRGVj
bGFyYXRpb24gcmVhc29uKCp0aGlzLCBQYXVzZWRBdEV4cHJlc3Npb24pOwogICAgIHVwZGF0ZUNh
bGxGcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1fdm0sIGNhbGxGcmFtZSks
IGNhbGxGcmFtZSwgc2hvdWxkQXR0ZW1wdFBhdXNlID8gQXR0ZW1wdFBhdXNlIDogTm9QYXVzZSk7
CkBAIC05MTcsNiArMTEyMyw3IEBAIHZvaWQgRGVidWdnZXI6OmNsZWFyTmV4dFBhdXNlU3RhdGUo
KQogICAgIG1fcGF1c2VPblN0ZXBOZXh0ID0gZmFsc2U7CiAgICAgbV9wYXVzZU9uU3RlcE91dCA9
IGZhbHNlOwogICAgIG1fYWZ0ZXJCbGFja2JveGVkU2NyaXB0ID0gZmFsc2U7CisgICAgbV9zcGVj
aWFsQnJlYWtwb2ludCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoRGVi
dWdnZXJTdGF0ZW1lbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC05MzMsNiArMTE0MCwyMCBA
QCB2b2lkIERlYnVnZ2VyOjpkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFtZSogY2Fs
bEZyYW1lKQogICAgIHVwZGF0ZUNhbGxGcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZy
YW1lKG1fdm0sIGNhbGxGcmFtZSksIGNhbGxGcmFtZSwgQXR0ZW1wdFBhdXNlKTsKIH0KIAordm9p
ZCBEZWJ1Z2dlcjo6d2lsbFJ1bk1pY3JvdGFzaygpCit7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRv
T2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLndp
bGxSdW5NaWNyb3Rhc2soKTsKKyAgICB9KTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6ZGlkUnVuTWlj
cm90YXNrKCkKK3sKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZl
ciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkUnVuTWljcm90YXNrKCk7CisgICAg
fSk7Cit9CisKIERlYnVnZ2VyQ2FsbEZyYW1lJiBEZWJ1Z2dlcjo6Y3VycmVudERlYnVnZ2VyQ2Fs
bEZyYW1lKCkKIHsKICAgICBpZiAoIW1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBmYmE0NGM2MGNjNmEzYTNh
NDg0N2ExYmRhZWM2Njg5MTMyYTQ4Njg3Li4xMTVhZWNmZWVhMzJjOTQ5MTAxYmM2YTJjM2ZlNWZi
ZTM5ODYwMjJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVi
dWdnZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApA
QCAtMjcsMTAgKzI3LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlclBhcnNlRGF0YS5oIgogI2luY2x1
ZGUgIkRlYnVnZ2VyUHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNpbmNs
dWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgorI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00OSwxOCArNDYsNiBA
QCBwdWJsaWM6CiAKICAgICBWTSYgdm0oKSB7IHJldHVybiBtX3ZtOyB9CiAKLSAgICBKU0M6OkRl
YnVnZ2VyQ2FsbEZyYW1lJiBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICBib29sIGhh
c0hhbmRsZXJGb3JFeGNlcHRpb25DYWxsYmFjaygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NF
UlQobV9yZWFzb25Gb3JQYXVzZSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pOwotICAgICAgICByZXR1
cm4gbV9oYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2s7Ci0gICAgfQotICAgIEpTVmFsdWUg
Y3VycmVudEV4Y2VwdGlvbigpCi0gICAgewotICAgICAgICBBU1NFUlQobV9yZWFzb25Gb3JQYXVz
ZSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pOwotICAgICAgICByZXR1cm4gbV9jdXJyZW50RXhjZXB0
aW9uOwotICAgIH0KLQogICAgIGJvb2wgbmVlZHNFeGNlcHRpb25DYWxsYmFja3MoKSBjb25zdCB7
IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkICYmIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSAhPSBEb250UGF1c2VPbkV4Y2VwdGlvbnM7IH0KICAgICBib29sIGlzSW50ZXJhY3RpdmVseURl
YnVnZ2luZygpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2ludHNBY3RpdmF0ZWQ7IH0KIApAQCAt
NzAsMTcgKzU1LDIwIEBAIHB1YmxpYzoKICAgICB9OwogICAgIHZvaWQgYXR0YWNoKEpTR2xvYmFs
T2JqZWN0Kik7CiAgICAgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JEZXRh
Y2gpOwotICAgIGJvb2wgaXNBdHRhY2hlZChKU0dsb2JhbE9iamVjdCopOwogCi0gICAgdm9pZCBy
ZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiwgU291cmNlUHJvdmlkZXIqKTsKLSAgICBCcmVh
a3BvaW50SUQgc2V0QnJlYWtwb2ludChCcmVha3BvaW50JiwgYm9vbCYgZXhpc3RpbmcpOwotICAg
IHZvaWQgcmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50SUQpOworICAgIGJvb2wgcmVzb2x2ZUJy
ZWFrcG9pbnQoQnJlYWtwb2ludCYsIFNvdXJjZVByb3ZpZGVyKik7CisgICAgYm9vbCBzZXRCcmVh
a3BvaW50KEJyZWFrcG9pbnQmKTsKKyAgICBib29sIHJlbW92ZUJyZWFrcG9pbnQoQnJlYWtwb2lu
dCYpOwogICAgIHZvaWQgY2xlYXJCcmVha3BvaW50cygpOwogCiAgICAgdm9pZCBhY3RpdmF0ZUJy
ZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsgfQogICAgIHZvaWQg
ZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChmYWxzZSk7
IH0KICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9icmVha3Bv
aW50c0FjdGl2YXRlZDsgfQogCisgICAgLy8gQnJlYWtwb2ludCAiZGVsZWdhdGUiIGZ1bmN0aW9u
YWxpdHkuCisgICAgYm9vbCBldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24oQnJlYWtwb2ludCYs
IEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKEJy
ZWFrcG9pbnQmLCBKU0dsb2JhbE9iamVjdCopOworCiAgICAgZW51bSBQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlIHsKICAgICAgICAgRG9udFBhdXNlT25FeGNlcHRpb25zLAogICAgICAgICBQYXVzZU9u
QWxsRXhjZXB0aW9ucywKQEAgLTEwNSw3ICs5MywxMCBAQCBwdWJsaWM6CiAgICAgUmVhc29uRm9y
UGF1c2UgcmVhc29uRm9yUGF1c2UoKSBjb25zdCB7IHJldHVybiBtX3JlYXNvbkZvclBhdXNlOyB9
CiAgICAgQnJlYWtwb2ludElEIHBhdXNpbmdCcmVha3BvaW50SUQoKSBjb25zdCB7IHJldHVybiBt
X3BhdXNpbmdCcmVha3BvaW50SUQ7IH0KIAotICAgIHZvaWQgc2V0UGF1c2VPbk5leHRTdGF0ZW1l
bnQoYm9vbCk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKKyAg
ICB2b2lkIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKKyAgICBib29sIHNjaGVkdWxl
UGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50Jik7CisgICAgYm9vbCBjYW5jZWxQ
YXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKICAgICB2b2lkIGJyZWFrUHJv
Z3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAgdm9pZCBzdGVwTmV4dEV4
cHJlc3Npb24oKTsKQEAgLTEyMyw5ICsxMTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBwcmVz
c0FsbFBhdXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NBbGxQYXVzZXM7IH0KICAgICB2
b2lkIHNldFN1cHByZXNzQWxsUGF1c2VzKGJvb2wgc3VwcHJlc3MpIHsgbV9zdXBwcmVzc0FsbFBh
dXNlcyA9IHN1cHByZXNzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTR2xv
YmFsT2JqZWN0KiwgU291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lTnVtYmVyLCBjb25zdCBX
VEY6OlN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxSdW5N
aWNyb3Rhc2soKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuTWljcm90YXNrKCkgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0dsb2JhbE9iamVjdCosIFNvdXJjZVByb3Zp
ZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgV1RGOjpTdHJpbmcmIGVycm9yTWVzc2Fn
ZSk7CiAKICAgICB2b2lkIGV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEpT
VmFsdWUgZXhjZXB0aW9uVmFsdWUsIGJvb2wgaGFzQ2F0Y2hIYW5kbGVyKTsKICAgICB2b2lkIGF0
U3RhdGVtZW50KENhbGxGcmFtZSopOwpAQCAtMTM3LDEwICsxMjYsNDYgQEAgcHVibGljOgogICAg
IHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oQ2FsbEZyYW1lKik7CiAgICAgdm9pZCBkaWRSZWFjaERl
YnVnZ2VyU3RhdGVtZW50KENhbGxGcmFtZSopOwogCi0gICAgdmlydHVhbCB2b2lkIHJlY29tcGls
ZUFsbEpTRnVuY3Rpb25zKCk7CisgICAgdm9pZCB3aWxsUnVuTWljcm90YXNrKCk7CisgICAgdm9p
ZCBkaWRSdW5NaWNyb3Rhc2soKTsKIAogICAgIHZvaWQgcmVnaXN0ZXJDb2RlQmxvY2soQ29kZUJs
b2NrKik7CiAKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4gV2Vi
IEluc3BlY3RvcjogU2ltcGxpZnkgRGVidWdnZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJvdmlk
ZXIKKyAgICBzdHJ1Y3QgU2NyaXB0IHsKKyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgU3Ry
aW5nIHNvdXJjZTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKKyAgICAgICAgU3RyaW5nIHNv
dXJjZU1hcHBpbmdVUkw7CisgICAgICAgIFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJv
dmlkZXI7CisgICAgICAgIGludCBzdGFydExpbmUgeyAwIH07CisgICAgICAgIGludCBzdGFydENv
bHVtbiB7IDAgfTsKKyAgICAgICAgaW50IGVuZExpbmUgeyAwIH07CisgICAgICAgIGludCBlbmRD
b2x1bW4geyAwIH07CisgICAgICAgIGJvb2wgaXNDb250ZW50U2NyaXB0IHsgZmFsc2UgfTsKKyAg
ICB9OworCisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVh
bCB+T2JzZXJ2ZXIoKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2Uo
U291cmNlSUQsIGNvbnN0IERlYnVnZ2VyOjpTY3JpcHQmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2
b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiAvKiB1cmwgKi8sIGNvbnN0IFN0
cmluZyYgLyogZGF0YSAqLywgaW50IC8qIGZpcnN0TGluZSAqLywgaW50IC8qIGVycm9yTGluZSAq
LywgY29uc3QgU3RyaW5nJiAvKiBlcnJvck1lc3NhZ2UgKi8pIHsgfQorCisgICAgICAgIHZpcnR1
YWwgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRS
dW5NaWNyb3Rhc2soKSB7IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNHbG9i
YWxPYmplY3QqLCBEZWJ1Z2dlckNhbGxGcmFtZSYsIEpTVmFsdWUgLyogZXhjZXB0aW9uT3JDYXVn
aHRWYWx1ZSAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpIHsgfQor
CisgICAgICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU3RyaW5nJiAvKiBkYXRhICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGJy
ZWFrcG9pbnRBY3Rpb25Tb3VuZChCcmVha3BvaW50QWN0aW9uSUQpIHsgfQorICAgICAgICB2aXJ0
dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblByb2JlKEpTR2xvYmFsT2JqZWN0KiwgQnJlYWtwb2lu
dEFjdGlvbklELCB1bnNpZ25lZCAvKiBiYXRjaElkICovLCB1bnNpZ25lZCAvKiBzYW1wbGVJZCAq
LywgSlNWYWx1ZSAvKiByZXN1bHQgKi8pIHsgfQorICAgIH07CisKKyAgICB2b2lkIGFkZE9ic2Vy
dmVyKE9ic2VydmVyJik7CisgICAgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYsIGJvb2wg
aXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBjbGFzcyBQcm9maWxpbmdDbGllbnQgewogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+UHJvZmlsaW5nQ2xpZW50KCk7CkBAIC0xNTYsMTcgKzE4
MSw0MyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0YXJ0
VGltZSwgUHJvZmlsaW5nUmVhc29uKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVCcmVha3BvaW50SGl0KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQnJlYWtwb2ludCYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRpb24o
SlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKSBjb25zdCB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JQYXVzZSkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSB7IH0KKyAgICBi
b29sIGlzQXR0YWNoZWQoSlNHbG9iYWxPYmplY3QqKTsKKworICAgIEpTQzo6RGVidWdnZXJDYWxs
RnJhbWUmIGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOworCisgICAgYm9vbCBoYXNIYW5kbGVy
Rm9yRXhjZXB0aW9uQ2FsbGJhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVh
c29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1faGFz
SGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrOworICAgIH0KKworICAgIEpTVmFsdWUgY3VycmVu
dEV4Y2VwdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZWFzb25Gb3JQYXVzZSA9PSBQ
YXVzZWRGb3JFeGNlcHRpb24pOworICAgICAgICByZXR1cm4gbV9jdXJyZW50RXhjZXB0aW9uOwor
ICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIC8qIGlzQmVpbmdEZXN0cm95ZWQgKi8pIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOworCisgICAgdmlydHVh
bCB2b2lkIGRpZFBhdXNlKEpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGhh
bmRsZVBhdXNlKEpTR2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yUGF1c2UpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDb250aW51ZShKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ29udGVu
dFNjcmlwdChKU0dsb2JhbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICB2
aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0aW9uKikg
Y29uc3QgeyB9CisKKyAgICBib29sIGRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSBjb25z
dCB7IHJldHVybiBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7IH0KIAogcHJpdmF0ZToK
LSAgICB0eXBlZGVmIEhhc2hNYXA8QnJlYWtwb2ludElELCBCcmVha3BvaW50Kj4gQnJlYWtwb2lu
dElEVG9CcmVha3BvaW50TWFwOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVkLCBSZWZQ
dHI8QnJlYWtwb2ludHNMaXN0PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRo
WmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gTGluZVRvQnJlYWtwb2ludHNNYXA7CisgICAgdHlwZWRl
ZiBIYXNoTWFwPHVuc2lnbmVkLCBCcmVha3BvaW50c0xpc3QsIFdURjo6SW50SGFzaDxpbnQ+LCBX
VEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IExpbmVUb0JyZWFrcG9pbnRz
TWFwOwogICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtwb2ludHNNYXAs
IFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFp
dHM8U291cmNlSUQ+PiBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA7CiAKKyAgICBKU1ZhbHVlIGV4
Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoSlNHbG9iYWxPYmplY3QqKTsKKwogICAgIGNsYXNzIENsZWFy
Q29kZUJsb2NrRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3I7CiAgICAgY2xhc3MgQ2xlYXJEZWJ1Z2dl
clJlcXVlc3RzRnVuY3RvcjsKICAgICBjbGFzcyBTZXRTdGVwcGluZ01vZGVGdW5jdG9yOwpAQCAt
MTg4LDcgKzIzOSw3IEBAIHByaXZhdGU6CiAgICAgICAgIERlYnVnZ2VyJiBtX2RlYnVnZ2VyOwog
ICAgIH07CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnQoU291cmNlSUQsIGNvbnN0IFRleHRQb3Np
dGlvbiYsIEJyZWFrcG9pbnQqIGhpdEJyZWFrcG9pbnQpOworICAgIFJlZlB0cjxCcmVha3BvaW50
PiBkaWRIaXRCcmVha3BvaW50KEpTR2xvYmFsT2JqZWN0KiwgU291cmNlSUQsIGNvbnN0IFRleHRQ
b3NpdGlvbiYpOwogCiAgICAgRGVidWdnZXJQYXJzZURhdGEmIGRlYnVnZ2VyUGFyc2VEYXRhKFNv
dXJjZUlELCBTb3VyY2VQcm92aWRlciopOwogCkBAIC0yMjMsNiArMjc0LDkgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGNsZWFyRGVidWdnZXJSZXF1ZXN0cyhKU0dsb2JhbE9iamVjdCopOwogICAgIHZv
aWQgY2xlYXJQYXJzZWREYXRhKCk7CiAKKyAgICBib29sIGNhbkRpc3BhdGNoRnVuY3Rpb25Ub09i
c2VydmVycygpIGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1
bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4pOworCiAgICAgVk0mIG1fdm07CiAgICAgSGFzaFNldDxK
U0dsb2JhbE9iamVjdCo+IG1fZ2xvYmFsT2JqZWN0czsKICAgICBIYXNoTWFwPFNvdXJjZUlELCBE
ZWJ1Z2dlclBhcnNlRGF0YSwgV1RGOjpJbnRIYXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdp
dGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJRD4+IG1fcGFyc2VEYXRhTWFwOwpAQCAtMjQ4LDE1
ICszMDIsMjMgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VJRCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlE
OwogICAgIGJvb2wgbV9hZnRlckJsYWNrYm94ZWRTY3JpcHQgeyBmYWxzZSB9OwogCi0gICAgQnJl
YWtwb2ludElEIG1fdG9wQnJlYWtwb2ludElEOworICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01h
cCBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQ7CisgICAgSGFzaFNldDxSZWY8QnJlYWtwb2ludD4+
IG1fYnJlYWtwb2ludHM7CisgICAgUmVmUHRyPEJyZWFrcG9pbnQ+IG1fc3BlY2lhbEJyZWFrcG9p
bnQ7CiAgICAgQnJlYWtwb2ludElEIG1fcGF1c2luZ0JyZWFrcG9pbnRJRDsKLSAgICBCcmVha3Bv
aW50SURUb0JyZWFrcG9pbnRNYXAgbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQ7Ci0gICAgU291
cmNlSURUb0JyZWFrcG9pbnRzTWFwIG1fc291cmNlSURUb0JyZWFrcG9pbnRzOworCisgICAgdW5z
aWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJZCB7IDEgfTsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRQ
cm9iZUJhdGNoSWQgeyAwIH07CiAKICAgICBSZWZQdHI8SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZT4g
bV9jdXJyZW50RGVidWdnZXJDYWxsRnJhbWU7CiAKKyAgICBIYXNoU2V0PE9ic2VydmVyKj4gbV9v
YnNlcnZlcnM7CisgICAgYm9vbCBtX2Rpc3BhdGNoaW5nRnVuY3Rpb25Ub09ic2VydmVycyB7IGZh
bHNlIH07CisKICAgICBQcm9maWxpbmdDbGllbnQqIG1fcHJvZmlsaW5nQ2xpZW50IHsgbnVsbHB0
ciB9OwogCisgICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgeyB0cnVlIH07
CisKICAgICBmcmllbmQgY2xhc3MgRGVidWdnZXJQYXVzZWRTY29wZTsKICAgICBmcmllbmQgY2xh
c3MgVGVtcG9yYXJ5UGF1c2VkU3RhdGU7CiAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4
dHJhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1
Z2dlclByaW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clByaW1pdGl2ZXMuaAppbmRleCA1ZmI2ZThhNjM5NjNhMmZmMWYyNmNjNzQ0YzAyYTkyODA0NjFk
YjA0Li5mZDM0ODM0NWQ3ZGVmNDVkYmQxYjdjOWU2NjI3ZGQwNGM0NzY4Mzg0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0aXZlcy5oCkBA
IC0zNSw0ICszNSw3IEBAIHN0YXRpYyBjb25zdGV4cHIgU291cmNlSUQgbm9Tb3VyY2VJRCA9IDA7
CiB0eXBlZGVmIHNpemVfdCBCcmVha3BvaW50SUQ7CiBzdGF0aWMgY29uc3RleHByIEJyZWFrcG9p
bnRJRCBub0JyZWFrcG9pbnRJRCA9IDA7CiAKK3R5cGVkZWYgaW50IEJyZWFrcG9pbnRBY3Rpb25J
RDsKK3N0YXRpYyBjb25zdGV4cHIgQnJlYWtwb2ludEFjdGlvbklEIG5vQnJlYWtwb2ludEFjdGlv
bklEID0gMDsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgKaW5kZXggMjEwMTllZGEx
ZDBjNGY3NzgzZGZhYzZkZGU1NzU4NmU0ZDcxZmU2ZS4uYzViMTI2ZTgwNTYxZjcwNmQ1ZjNjNzhh
ODIxZDZlYzFlNWM5YzQ5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaApAQCAtMzIsNiArMzIsNyBAQCBjbGFzcyBT
dG9wd2F0Y2g7CiB9CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgRGVidWdnZXI7CiBjbGFzcyBF
eGNlcHRpb247CiBjbGFzcyBTb3VyY2VDb2RlOwogY2xhc3MgVk07CkBAIC0zOSw3ICs0MCw2IEBA
IGNsYXNzIFZNOwogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgU2NyaXB0RGVidWdT
ZXJ2ZXI7CiB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckZ1bmN0aW9uQ2FsbEhhbmRs
ZXIpKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGZ1bmN0
aW9uT2JqZWN0LCBjb25zdCBKU0M6OkNhbGxEYXRhJiBjYWxsRGF0YSwgSlNDOjpKU1ZhbHVlIHRo
aXNWYWx1ZSwgY29uc3QgSlNDOjpBcmdMaXN0JiBhcmdzLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlv
bj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9y
RXZhbHVhdGVIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpTb3VyY2VD
b2RlJiwgSlNDOjpKU1ZhbHVlIHRoaXNWYWx1ZSwgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiBy
ZXR1cm5lZEV4Y2VwdGlvbik7CiAKQEAgLTUyLDcgKzUyLDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgSW5zcGVjdG9yRXZhbHVhdGVIYW5kbGVyIGV2YWx1YXRlSGFuZGxlcigpIGNvbnN0ID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZnJvbnRlbmRJbml0aWFsaXplZCgpID0gMDsKICAgICB2aXJ0dWFs
IFdURjo6U3RvcHdhdGNoJiBleGVjdXRpb25TdG9wd2F0Y2goKSBjb25zdCA9IDA7Ci0gICAgdmly
dHVhbCBTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7CisgICAgdmly
dHVhbCBKU0M6OkRlYnVnZ2VyJiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKICAgICB2aXJ0dWFs
IEpTQzo6Vk0mIHZtKCkgPSAwOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAKaW5kZXggNGZlYTQ4MTg1YjQzYjQyY2M2ZGJkYTc0MThmNTRlZmJkMjQ5Y2ZmNC4uYzJm
NzBjN2QwY2M4Mjk5Zjg2ZTUyMmJmNzhhOTU5NmEyZjgwZGEwNyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0
U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0zNSwxOCArMzUsMjIgQEAgbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyKEpTR2xvYmFsT2JqZWN0JiBn
bG9iYWxPYmplY3QpCi0gICAgOiBTY3JpcHREZWJ1Z1NlcnZlcihnbG9iYWxPYmplY3Qudm0oKSkK
KyAgICA6IERlYnVnZ2VyKGdsb2JhbE9iamVjdC52bSgpKQogICAgICwgbV9nbG9iYWxPYmplY3Qo
Z2xvYmFsT2JqZWN0KQogewogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXI6OmF0dGFjaERlYnVnZ2VyKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjphdHRhY2hEZWJ1Z2dl
cigpOworCiAgICAgYXR0YWNoKCZtX2dsb2JhbE9iamVjdCk7CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJv
eWVkKQogeworICAgIEpTQzo6RGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95
ZWQpOworCiAgICAgZGV0YWNoKCZtX2dsb2JhbE9iamVjdCwgaXNCZWluZ0Rlc3Ryb3llZCA/IERl
YnVnZ2VyOjpHbG9iYWxPYmplY3RJc0Rlc3RydWN0aW5nIDogRGVidWdnZXI6OlRlcm1pbmF0aW5n
RGVidWdnaW5nU2Vzc2lvbik7CiAgICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQogICAgICAgICBy
ZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwpAQCAtNTQsMTAgKzU4LDEyIEBAIHZvaWQgSlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVz
dHJveWVkKQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGls
ZVBhdXNlZCgpOworCiAgICAgLy8gRHJvcCBhbGwgbG9ja3Mgc28gYW5vdGhlciB0aHJlYWQgY2Fu
IHdvcmsgaW4gdGhlIFZNIHdoaWxlIHdlIGFyZSBuZXN0ZWQuCiAgICAgSlNDOjpKU0xvY2s6OkRy
b3BBbGxMb2NrcyBkcm9wQWxsTG9ja3MoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwogCi0gICAgd2hp
bGUgKCFtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMpIHsKKyAgICB3aGlsZSAoIWRvbmVQ
cm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSkgewogICAgICAgICBpZiAoUnVuTG9vcDo6Y3ljbGUo
SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuTG9vcE1vZGUoKSkgPT0gUnVuTG9v
cDo6Q3ljbGVSZXN1bHQ6OlN0b3ApCiAgICAgICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGRhYWJjZjc2NGUxN2QxZWQ2ZGNmNzZjYzU5
ZmMzOWU3ZWI5ZTc4NWUuLjgwMWU3NjJmOWMwMTljODYxNDFiYjVlMmI1MjIzMTBjMmE4YmIzYzYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0yNSwxMiArMjUsMTIgQEAK
IAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIElu
c3BlY3RvciB7CiAKLWNsYXNzIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwg
OiBwdWJsaWMgU2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgSlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyKTsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQyLDE4ICs0MiwxNCBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJ1bkxvb3BNb2RlIHJ1bkxvb3BNb2RlKCk7CiAKIHByaXZhdGU6CisgICAgLy8g
SlNDOjpEZWJ1Z2dlcgogICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKICAgICB2b2lk
IGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgZmluYWw7Ci0KLSAgICB2b2lk
IGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZENv
bnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBmaW5hbCB7IH0KICAgICB2b2lkIHJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkKCkgZmluYWw7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpK
U0dsb2JhbE9iamVjdCopIGNvbnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBO
T1RFOiBDdXJyZW50bHkgYWxsIGV4Y2VwdGlvbnMgYXJlIHJlcG9ydGVkIGF0IHRoZSBBUEkgYm91
bmRhcnkgdGhyb3VnaCByZXBvcnRBUElFeGNlcHRpb24uCiAgICAgLy8gVW50aWwgYSB0aW1lIGNv
bWVzIHdoZXJlIGFuIGV4Y2VwdGlvbiBjYW4gYmUgY2F1c2VkIG91dHNpZGUgb2YgdGhlIEFQSSAo
ZS5nLiBzZXRUaW1lb3V0CiAgICAgLy8gb3Igc29tZSBvdGhlciBhc3luYyBvcGVyYXRpb24gaW4g
YSBwdXJlIEpTQ29udGV4dCkgd2UgY2FuIGlnbm9yZSBleGNlcHRpb25zIHJlcG9ydGVkIGhlcmUu
Ci0gICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhj
ZXB0aW9uKikgY29uc3QgZmluYWwgeyB9CiAKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBtX2ds
b2JhbE9iamVjdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL1NjcmlwdEJyZWFrcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0QnJlYWtwb2ludC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODYwNDE3
OTZhNGViN2RiY2M4Y2JiOTc4NGRjNzFhMjFhMDQxYjIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
U2NyaXB0QnJlYWtwb2ludC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0j
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgot
Ci1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotdHlwZWRlZiBlbnVtIHsKLSAgICBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uVHlwZUxvZywKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUV2YWx1
YXRlLAotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlU291bmQsCi0gICAgU2NyaXB0QnJl
YWtwb2ludEFjdGlvblR5cGVQcm9iZQotfSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZTsKLQot
c3RydWN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24gewotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24oU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUgdHlwZSwgaW50IGlkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgaWRlbnRpZmll
cihpZGVudGlmaWVyKQotICAgICAgICAsIGRhdGEoZGF0YSkKLSAgICB7Ci0gICAgfQotCi0gICAg
U2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUgdHlwZTsKLSAgICBpbnQgaWRlbnRpZmllcjsKLSAg
ICBTdHJpbmcgZGF0YTsKLX07Ci0KLXR5cGVkZWYgVmVjdG9yPFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24+IEJyZWFrcG9pbnRBY3Rpb25zOwotCi1zdHJ1Y3QgU2NyaXB0QnJlYWtwb2ludCB7Ci0gICAg
U2NyaXB0QnJlYWtwb2ludCgpCi0gICAgewotICAgIH0KLQotICAgIFNjcmlwdEJyZWFrcG9pbnQo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
LCBib29sIGF1dG9Db250aW51ZSwgdW5zaWduZWQgaWdub3JlQ291bnQpCi0gICAgICAgIDogbGlu
ZU51bWJlcihsaW5lTnVtYmVyKQotICAgICAgICAsIGNvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIp
Ci0gICAgICAgICwgY29uZGl0aW9uKGNvbmRpdGlvbikKLSAgICAgICAgLCBhdXRvQ29udGludWUo
YXV0b0NvbnRpbnVlKQotICAgICAgICAsIGlnbm9yZUNvdW50KGlnbm9yZUNvdW50KQotICAgIHsK
LSAgICB9Ci0KLSAgICBTY3JpcHRCcmVha3BvaW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1u
TnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgQnJlYWtwb2ludEFjdGlvbnMmIGFjdGlv
bnMsIGJvb2wgYXV0b0NvbnRpbnVlLCB1bnNpZ25lZCBpZ25vcmVDb3VudCkKLSAgICAgICAgOiBs
aW5lTnVtYmVyKGxpbmVOdW1iZXIpCi0gICAgICAgICwgY29sdW1uTnVtYmVyKGNvbHVtbk51bWJl
cikKLSAgICAgICAgLCBjb25kaXRpb24oY29uZGl0aW9uKQotICAgICAgICAsIGFjdGlvbnMoYWN0
aW9ucykKLSAgICAgICAgLCBhdXRvQ29udGludWUoYXV0b0NvbnRpbnVlKQotICAgICAgICAsIGln
bm9yZUNvdW50KGlnbm9yZUNvdW50KQotICAgIHsKLSAgICB9Ci0KLSAgICBpbnQgbGluZU51bWJl
ciB7IDAgfTsKLSAgICBpbnQgY29sdW1uTnVtYmVyIHsgMCB9OwotICAgIFN0cmluZyBjb25kaXRp
b247Ci0gICAgQnJlYWtwb2ludEFjdGlvbnMgYWN0aW9uczsKLSAgICBib29sIGF1dG9Db250aW51
ZSB7IGZhbHNlIH07Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgeyAwIH07Ci19OwotCi19IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDNkOGJlZjQwZWZiYzJiMDdhYTZlN2Q1NmRmMDhlZTE1OGZkOGIwMTIuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgotI2luY2x1ZGUgIlNvdXJj
ZVByb3ZpZGVyLmgiCi0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBJbnNwZWN0b3IgewotCi1zdHJ1Y3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbjsKLQotY2xhc3Mg
U2NyaXB0RGVidWdMaXN0ZW5lciB7Ci1wdWJsaWM6Ci0gICAgc3RydWN0IFNjcmlwdCB7Ci0gICAg
ICAgIFN0cmluZyB1cmw7Ci0gICAgICAgIFN0cmluZyBzb3VyY2U7Ci0gICAgICAgIFN0cmluZyBz
b3VyY2VVUkw7Ci0gICAgICAgIFN0cmluZyBzb3VyY2VNYXBwaW5nVVJMOwotICAgICAgICBSZWZQ
dHI8SlNDOjpTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXI7Ci0gICAgICAgIGludCBzdGFy
dExpbmUgezB9OwotICAgICAgICBpbnQgc3RhcnRDb2x1bW4gezB9OwotICAgICAgICBpbnQgZW5k
TGluZSB7MH07Ci0gICAgICAgIGludCBlbmRDb2x1bW4gezB9OwotICAgICAgICBib29sIGlzQ29u
dGVudFNjcmlwdCB7ZmFsc2V9OwotICAgIH07Ci0KLSAgICB2aXJ0dWFsIH5TY3JpcHREZWJ1Z0xp
c3RlbmVyKCkgeyB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3Vy
Y2VJRCwgY29uc3QgU2NyaXB0JikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNl
U291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExp
bmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0KLSAg
ICB2aXJ0dWFsIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuTWljcm90YXNrKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUgY2FsbEZyYW1lcywgSlNDOjpKU1ZhbHVlIGV4
Y2VwdGlvbikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3Vu
ZChpbnQgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTY3JpcHRC
cmVha3BvaW50QWN0aW9uJiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpT
Qzo6SlNWYWx1ZSByZXN1bHQpID0gMDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3Rvcgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1Nl
cnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2Vy
dmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRlZDEyOTVmOTQzNjg3OGM3
M2U5Y2VkYjY2MTMxMjNlNDIyMWRkZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA4LCAyMDA5LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAg
IGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2Vy
dmVyLmgiCi0KLSNpbmNsdWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkRlYnVn
Z2VyU2NvcGUuaCIKLSNpbmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU0phdmFTY3Jp
cHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVk
ZSAiU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNp
bmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLVNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZl
cihWTSYgdm0pCi0gICAgOiBEZWJ1Z2dlcih2bSkKLXsKLX0KLQotU2NyaXB0RGVidWdTZXJ2ZXI6
On5TY3JpcHREZWJ1Z1NlcnZlcigpCi17Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNl
dEJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnRJRCBpZCwgY29uc3QgU2NyaXB0QnJlYWtwb2lu
dCYgc2NyaXB0QnJlYWtwb2ludCkKLXsKLSAgICBBU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQp
OwotICAgIEFTU0VSVCghbV9icmVha3BvaW50SURUb0FjdGlvbnMuY29udGFpbnMoaWQpKTsKLQot
ICAgIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLnNldChpZCwgc2NyaXB0QnJlYWtwb2ludC5hY3Rp
b25zKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludEFjdGlv
bnMoQnJlYWtwb2ludElEIGlkKQotewotICAgIEFTU0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7
Ci0KLSAgICBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5yZW1vdmUoaWQpOwotfQotCi1jb25zdCBC
cmVha3BvaW50QWN0aW9ucyYgU2NyaXB0RGVidWdTZXJ2ZXI6OmdldEFjdGlvbnNGb3JCcmVha3Bv
aW50KEJyZWFrcG9pbnRJRCBpZCkKLXsKLSAgICBBU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQp
OwotCi0gICAgYXV0byBlbnRyeSA9IG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmZpbmQoaWQpOwot
ICAgIGlmIChlbnRyeSAhPSBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIGVudHJ5LT52YWx1ZTsKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCcmVha3Bv
aW50QWN0aW9ucz4gZW1wdHlBY3Rpb25WZWN0b3IgPSBCcmVha3BvaW50QWN0aW9ucygpOwotICAg
IHJldHVybiBlbXB0eUFjdGlvblZlY3RvcjsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y2xlYXJCcmVha3BvaW50QWN0aW9ucygpCi17Ci0gICAgbV9icmVha3BvaW50SURUb0FjdGlvbnMu
Y2xlYXIoKTsKLX0KLQotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50
QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGJyZWFrcG9pbnRBY3Rpb24pCi17
Ci0gICAgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVn
Z2VyQ2FsbEZyYW1lKCk7Ci0KLSAgICBzd2l0Y2ggKGJyZWFrcG9pbnRBY3Rpb24udHlwZSkgewot
ICAgIGNhc2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c6Ci0gICAgICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7
Ci0gICAgICAgICAgICBsaXN0ZW5lci5icmVha3BvaW50QWN0aW9uTG9nKGRlYnVnZ2VyQ2FsbEZy
YW1lLmdsb2JhbE9iamVjdCgpLCBicmVha3BvaW50QWN0aW9uLmRhdGEpOwotICAgICAgICB9KTsK
LSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZh
bHVhdGU6IHsKLSAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgICAg
IEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7Ci0gICAgICAgIGRlYnVn
Z2VyQ2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGJyZWFrcG9pbnRBY3Rpb24u
ZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNl
cHRpb24pCi0gICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUuZ2xv
YmFsT2JqZWN0KCksIGV4Y2VwdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNh
c2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDoKLSAgICAgICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAg
ICAgICAgICAgIGxpc3RlbmVyLmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChicmVha3BvaW50QWN0aW9u
LmlkZW50aWZpZXIpOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU6IHsKLSAgICAgICAgTmFrZWRQdHI8RXhjZXB0
aW9uPiBleGNlcHRpb247Ci0gICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9
IG51bGxwdHI7Ci0gICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUuZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYnJlYWtwb2ludEFjdGlvbi5kYXRhLCBzY29wZUV4dGVu
c2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlm
IChleGNlcHRpb24pCi0gICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBl
eGNlcHRpb24pOwotCi0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNj
cmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci5icmVh
a3BvaW50QWN0aW9uUHJvYmUoZ2xvYmFsT2JqZWN0LCBicmVha3BvaW50QWN0aW9uLCBtX2N1cnJl
bnRQcm9iZUJhdGNoSWQsIG1fbmV4dFByb2JlU2FtcGxlSWQrKywgZXhjZXB0aW9uID8gZXhjZXB0
aW9uLT52YWx1ZSgpIDogcmVzdWx0KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzb3VyY2VQ
YXJzZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU291cmNlUHJvdmlkZXIqIHNvdXJj
ZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsK
LSAgICAvLyBQcmVlbXB0aXZlbHkgY2hlY2sgd2hldGhlciB3ZSBjYW4gZGlzcGF0Y2ggc28gdGhh
dCB3ZSBkb24ndCBkbyBhbnkgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuCi0gICAgaWYgKCFjYW5E
aXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYg
KGVycm9yTGluZSAhPSAtMSkgewotICAgICAgICBhdXRvIHNvdXJjZVVSTCA9IHNvdXJjZVByb3Zp
ZGVyLT5zb3VyY2VVUkwoKTsKLSAgICAgICAgYXV0byBkYXRhID0gc291cmNlUHJvdmlkZXItPnNv
dXJjZSgpLnRvU3RyaW5nKCk7Ci0gICAgICAgIGF1dG8gZmlyc3RMaW5lID0gc291cmNlUHJvdmlk
ZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKLSAgICAgICAgZGlzcGF0
Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIp
IHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmZhaWxlZFRvUGFyc2VTb3VyY2Uoc291cmNlVVJMLCBk
YXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc291
cmNlUHJvdmlkZXItPmFzSUQoKTsKLQotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3Jn
L2IvMTYyNzczPiBXZWIgSW5zcGVjdG9yOiBTaW1wbGlmeSBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpT
Y3JpcHQgdG8gdXNlIFNvdXJjZVByb3ZpZGVyCi0gICAgU2NyaXB0RGVidWdMaXN0ZW5lcjo6U2Ny
aXB0IHNjcmlwdDsKLSAgICBzY3JpcHQuc291cmNlUHJvdmlkZXIgPSBzb3VyY2VQcm92aWRlcjsK
LSAgICBzY3JpcHQudXJsID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgpOwotICAgIHNjcmlw
dC5zb3VyY2UgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICBzY3Jp
cHQuc3RhcnRMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVy
b0Jhc2VkSW50KCk7Ci0gICAgc2NyaXB0LnN0YXJ0Q29sdW1uID0gc291cmNlUHJvdmlkZXItPnN0
YXJ0UG9zaXRpb24oKS5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsKLSAgICBzY3JpcHQuaXNDb250
ZW50U2NyaXB0ID0gaXNDb250ZW50U2NyaXB0KGdsb2JhbE9iamVjdCk7Ci0gICAgc2NyaXB0LnNv
dXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkxEaXJlY3RpdmUoKTsKLSAgICBzY3Jp
cHQuc291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlKCk7Ci0KLSAgICBpbnQgc291cmNlTGVuZ3RoID0gc2NyaXB0LnNvdXJjZS5sZW5ndGgo
KTsKLSAgICBpbnQgbGluZUNvdW50ID0gMTsKLSAgICBpbnQgbGFzdExpbmVTdGFydCA9IDA7Ci0g
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkgewotICAgICAgICBpZiAo
c2NyaXB0LnNvdXJjZVtpXSA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBsaW5lQ291bnQgKz0gMTsK
LSAgICAgICAgICAgIGxhc3RMaW5lU3RhcnQgPSBpICsgMTsKLSAgICAgICAgfQotICAgIH0KLQot
ICAgIHNjcmlwdC5lbmRMaW5lID0gc2NyaXB0LnN0YXJ0TGluZSArIGxpbmVDb3VudCAtIDE7Ci0g
ICAgaWYgKGxpbmVDb3VudCA9PSAxKQotICAgICAgICBzY3JpcHQuZW5kQ29sdW1uID0gc2NyaXB0
LnN0YXJ0Q29sdW1uICsgc291cmNlTGVuZ3RoOwotICAgIGVsc2UKLSAgICAgICAgc2NyaXB0LmVu
ZENvbHVtbiA9IHNvdXJjZUxlbmd0aCAtIGxhc3RMaW5lU3RhcnQ7Ci0KLSAgICBkaXNwYXRjaEZ1
bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewot
ICAgICAgICBsaXN0ZW5lci5kaWRQYXJzZVNvdXJjZShzb3VyY2VJRCwgc2NyaXB0KTsKLSAgICB9
KTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6d2lsbFJ1bk1pY3JvdGFzaygpCi17Ci0g
ICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYg
bGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIud2lsbFJ1bk1pY3JvdGFzaygpOwotICAgIH0p
OwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaWRSdW5NaWNyb3Rhc2soKQotewotICAg
IGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxp
c3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVyLmRpZFJ1bk1pY3JvdGFzaygpOwotICAgIH0pOwot
fQotCi1ib29sIFNjcmlwdERlYnVnU2VydmVyOjpjYW5EaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5l
cnMoKSBjb25zdAotewotICAgIGlmIChtX2NhbGxpbmdMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICBpZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
c3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhGdW5jdGlvbjx2b2lkKFNjcmlwdERlYnVnTGlzdGVu
ZXImKT4gY2FsbGJhY2spCi17Ci0gICAgaWYgKCFjYW5EaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5l
cnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1f
Y2FsbGluZ0xpc3RlbmVycywgdHJ1ZSk7Ci0KLSAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29w
eVRvVmVjdG9yKG1fbGlzdGVuZXJzKSkKLSAgICAgICAgY2FsbGJhY2soKmxpc3RlbmVyKTsKLX0K
LQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6bm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2
ZW50cygpCi17Ci0gICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKLX0K
LQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlQnJlYWtwb2ludEhpdChKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKLXsKLSAgICBBU1NFUlQoaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKTsKLQotICAgIG1fY3Vy
cmVudFByb2JlQmF0Y2hJZCsrOwotCi0gICAgYXV0byBlbnRyeSA9IG1fYnJlYWtwb2ludElEVG9B
Y3Rpb25zLmZpbmQoYnJlYWtwb2ludC5pZCk7Ci0gICAgaWYgKGVudHJ5ICE9IG1fYnJlYWtwb2lu
dElEVG9BY3Rpb25zLmVuZCgpKSB7Ci0gICAgICAgIEJyZWFrcG9pbnRBY3Rpb25zIGFjdGlvbnMg
PSBlbnRyeS0+dmFsdWU7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWN0aW9ucy5z
aXplKCk7ICsraSkgewotICAgICAgICAgICAgaWYgKCFldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24o
YWN0aW9uc1tpXSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKCFp
c0F0dGFjaGVkKGdsb2JhbE9iamVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0gICAgfQotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVFeGNlcHRpb25J
bkJyZWFrcG9pbnRDb25kaXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKSBjb25zdAotewotICAgIHJlcG9ydEV4Y2VwdGlvbihn
bG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZVBhdXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERlYnVnZ2VyOjpSZWFzb25G
b3JQYXVzZSkKLXsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHRE
ZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0g
ICAgICAgIGF1dG8mIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
KCk7Ci0gICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLnNjb3Bl
KCktPmdsb2JhbE9iamVjdCgpOwotICAgICAgICBhdXRvIGpzQ2FsbEZyYW1lID0gdG9KUyhnbG9i
YWxPYmplY3QsIGdsb2JhbE9iamVjdCwgSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVn
Z2VyQ2FsbEZyYW1lKS5wdHIoKSk7Ci0gICAgICAgIGxpc3RlbmVyLmRpZFBhdXNlKGdsb2JhbE9i
amVjdCwganNDYWxsRnJhbWUsIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoZ2xvYmFsT2JqZWN0KSk7
Ci0gICAgfSk7Ci0KLSAgICBkaWRQYXVzZShnbG9iYWxPYmplY3QpOwotCi0gICAgbV9kb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gZmFsc2U7Ci0gICAgcnVuRXZlbnRMb29wV2hpbGVQYXVz
ZWQoKTsKLQotICAgIGRpZENvbnRpbnVlKGdsb2JhbE9iamVjdCk7Ci0KLSAgICBkaXNwYXRjaEZ1
bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewot
ICAgICAgICBsaXN0ZW5lci5kaWRDb250aW51ZSgpOwotICAgIH0pOwotfQotCi12b2lkIFNjcmlw
dERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikK
LXsKLSAgICBBU1NFUlQobGlzdGVuZXIpOwotCi0gICAgYm9vbCB3YXNFbXB0eSA9IG1fbGlzdGVu
ZXJzLmlzRW1wdHkoKTsKLSAgICBtX2xpc3RlbmVycy5hZGQobGlzdGVuZXIpOwotCi0gICAgLy8g
Rmlyc3QgbGlzdGVuZXIuIEF0dGFjaCB0aGUgZGVidWdnZXIuCi0gICAgaWYgKHdhc0VtcHR5KQot
ICAgICAgICBhdHRhY2hEZWJ1Z2dlcigpOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpy
ZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCBpc0JlaW5n
RGVzdHJveWVkKQotewotICAgIEFTU0VSVChsaXN0ZW5lcik7Ci0KLSAgICBtX2xpc3RlbmVycy5y
ZW1vdmUobGlzdGVuZXIpOwotCi0gICAgLy8gTGFzdCBsaXN0ZW5lci4gRGV0YWNoIHRoZSBkZWJ1
Z2dlci4KLSAgICBpZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpKQotICAgICAgICBkZXRhY2hEZWJ1
Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKLX0KLQotSlNDOjpKU1ZhbHVlIFNjcmlwdERlYnVnU2Vy
dmVyOjpleGNlcHRpb25PckNhdWdodFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKLXsKLSAgICBpZiAocmVhc29uRm9yUGF1c2UoKSA9PSBQYXVzZWRGb3JFeGNlcHRpb24p
Ci0gICAgICAgIHJldHVybiBjdXJyZW50RXhjZXB0aW9uKCk7Ci0KLSAgICBmb3IgKFJlZlB0cjxE
ZWJ1Z2dlckNhbGxGcmFtZT4gZnJhbWUgPSAmY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpKSB7Ci0gICAgICAgIERlYnVnZ2VyU2Nv
cGUmIHNjb3BlID0gKmZyYW1lLT5zY29wZSgpOwotICAgICAgICBpZiAoc2NvcGUuaXNDYXRjaFNj
b3BlKCkpCi0gICAgICAgICAgICByZXR1cm4gc2NvcGUuY2F1Z2h0VmFsdWUoZ2xvYmFsT2JqZWN0
KTsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0
b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdTZXJ2ZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdT
ZXJ2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdjMTEwZDc0YzExMzNhYjRm
Y2YzMWZmYzRiMjUyODBmZWQ5MmJjNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAwOCwgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAtMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEu
ICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
LSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5j
LiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBm
cm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENP
TlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBv
bmNlCi0KLSNpbmNsdWRlICJEZWJ1Z2dlci5oIgotI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQu
aCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5o
PgotI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSlNDIHsKLWNs
YXNzIENhbGxGcmFtZTsKLWNsYXNzIEpTR2xvYmFsT2JqZWN0OwotY2xhc3MgVk07Ci19Ci0KLW5h
bWVzcGFjZSBJbnNwZWN0b3IgewotCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBTY3JpcHREZWJ1
Z1NlcnZlciA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShTY3JpcHREZWJ1Z1NlcnZlcik7Ci0gICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJs
aWM6Ci0KLSAgICAvLyBGSVhNRTogTW92ZSBCcmVha3BvaW50QWN0aW9uIGhhbmRsaW5nIGludG8g
SlNDOjpEZWJ1Z2dlciBvciBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LgotICAgIHZvaWQgc2V0QnJl
YWtwb2ludEFjdGlvbnMoSlNDOjpCcmVha3BvaW50SUQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQm
KTsKLSAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnRBY3Rpb25zKEpTQzo6QnJlYWtwb2ludElEKTsK
LSAgICB2b2lkIGNsZWFyQnJlYWtwb2ludEFjdGlvbnMoKTsKLQotICAgIGNvbnN0IEJyZWFrcG9p
bnRBY3Rpb25zJiBnZXRBY3Rpb25zRm9yQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJRCk7Ci0K
LSAgICB2b2lkIGFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqKTsKLSAgICB2b2lkIHJl
bW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqLCBib29sIGlzQmVpbmdEZXN0cm95ZWQp
OwotCi1wcm90ZWN0ZWQ6Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXIoSlNDOjpWTSYpOwotICAgIH5T
Y3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlOwotCi0gICAgdmlydHVhbCB2b2lkIGF0dGFjaERl
YnVnZ2VyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVp
bmdEZXN0cm95ZWQpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xv
YmFsT2JqZWN0KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNl
ZCgpID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxP
YmplY3QqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCA9IDA7Ci0KLSAgICBib29s
IGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJik7
Ci0KLSAgICBib29sIGNhbkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpIGNvbnN0OwotICAg
IHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RGVi
dWdMaXN0ZW5lciYpPiBjYWxsYmFjayk7Ci0KLSAgICBib29sIG1fZG9uZVByb2Nlc3NpbmdEZWJ1
Z2dlckV2ZW50cyB7IHRydWUgfTsKLQotcHJpdmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8SlND
OjpCcmVha3BvaW50SUQsIEJyZWFrcG9pbnRBY3Rpb25zPiBCcmVha3BvaW50SURUb0FjdGlvbnNN
YXA7Ci0KLSAgICB2b2lkIHNvdXJjZVBhcnNlZChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpT
b3VyY2VQcm92aWRlciosIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNc2cpIGZp
bmFsOwotICAgIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQgZGlkUnVu
TWljcm90YXNrKCkgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVCcmVha3BvaW50SGl0KEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OkJyZWFrcG9pbnQmKSBmaW5hbDsKLSAgICB2b2lkIGhh
bmRsZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
SlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsKLSAgICB2b2lkIGhhbmRsZVBhdXNlKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBKU0M6OkRlYnVnZ2VyOjpSZWFzb25Gb3JQYXVzZSkgZmluYWw7Ci0g
ICAgdm9pZCBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkgZmluYWw7Ci0KLSAg
ICBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0
Kik7Ci0KLSAgICBCcmVha3BvaW50SURUb0FjdGlvbnNNYXAgbV9icmVha3BvaW50SURUb0FjdGlv
bnM7Ci0gICAgSGFzaFNldDxTY3JpcHREZWJ1Z0xpc3RlbmVyKj4gbV9saXN0ZW5lcnM7Ci0gICAg
Ym9vbCBtX2NhbGxpbmdMaXN0ZW5lcnMgeyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIG1fbmV4dFBy
b2JlU2FtcGxlSWQgeyAxIH07Ci0gICAgdW5zaWduZWQgbV9jdXJyZW50UHJvYmVCYXRjaElkIHsg
MCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdl
bnQuY3BwCmluZGV4IGJmZDc3NzRjZjNkNzM1Y2RlYWU3ZWIxOWQxYWU0NTI0MTY1ZTM1YzYuLjk3
Y2VhOTRiZDVhZmFhNjVhZTQwM2EzZDA5NTA1MmVkNzk5MjkyOTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1
ZGl0QWdlbnQuY3BwCkBAIC0yNiwxMCArMjYsMTAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JBdWRpdEFnZW50LmgiCiAKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVk
ZSAiT2JqZWN0Q29uc3RydWN0b3IuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvU3RyaW5nQnVpbGRlci5oPgpAQCAtMTA1LDkgKzEwNSw5IEBAIHZvaWQgSW5z
cGVjdG9yQXVkaXRBZ2VudDo6cnVuKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiB0ZXN0LCBjb25zCiAKICAgICBPcHRpb25hbDxpbnQ+IHNhdmVkUmVzdWx0SW5kZXg7CiAK
LSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBtX3NjcmlwdERlYnVnU2VydmVyLnBhdXNlT25FeGNlcHRp
b25zU3RhdGUoKTsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IG1f
c2NyaXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwogCi0gICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFNjcmlwdERlYnVnU2VydmVy
OjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZShEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAg
ICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZXhlY3V0ZShlcnJvclN0cmlu
ZywgZnVuY3Rpb25TdHJpbmcudG9TdHJpbmcoKSwgV1RGTW92ZShvcHRpb25zKSwgcmVzdWx0LCB3
YXNUaHJvd24sIHNhdmVkUmVzdWx0SW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCmluZGV4
IDgzYmNjYTYyOTc1NDhkZTNmNjgwMTlkZTVmZjUzMTNlZjc0YTI2OGMuLjA2YjFhODNmZDgyMzUz
NjA4MDI2NWY5YjliMjJmMDY1NjkwY2VjNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKQEAg
LTMyLDExICszMiwxNCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L05vbmNvcHlhYmxlLmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRGVidWdnZXI7Cit9CisK
IG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckF1
ZGl0QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgQXVkaXRCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgewpAQCAtNzEsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRl
OgogICAgIFJlZlB0cjxBdWRpdEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVy
OwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0g
ICAgU2NyaXB0RGVidWdTZXJ2ZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgSlNDOjpEZWJ1
Z2dlciYgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKIAogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+IG1faW5qZWN0ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMjljMTMwYjk2NWNhMjY1NjQxYzQwZjc1MDk5Y2Y2ZWJk
MjY0MDA3Mi4uZmQ4ZGMzM2ZhODI3NzkzNTM1ODBlMzIxZmMxNDNlYjQyMjcyMGU2NiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTMyLDEyICszMiwxNiBAQAogCiAjaW5j
bHVkZSAiQXN5bmNTdGFja1RyYWNlLmgiCiAjaW5jbHVkZSAiQ29udGVudFNlYXJjaFV0aWxpdGll
cy5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmgiCisjaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCisjaW5jbHVkZSAiSmF2
YVNjcmlwdENhbGxGcmFtZS5oIgogI2luY2x1ZGUgIlJlZ3VsYXJFeHByZXNzaW9uLmgiCiAjaW5j
bHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdh
dGNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC01MCw5ICs1NCw5IEBA
IGNvbnN0IGNoYXIqIGNvbnN0IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVj
dEdyb3VwID0gImJhY2t0cmFjZSI7CiAvLyBhY2NvcmRpbmcgdG8gdGhlIGJyZWFrcG9pbnQgYWN0
aW9uIGlkZW50aWZpZXIgYXNzaWduZWQgYnkgdGhlIGZyb250ZW5kLiBBIGJyZWFrcG9pbnQgbWF5
CiAvLyBoYXZlIHNldmVyYWwgb2JqZWN0IGdyb3VwcywgYW5kIG9iamVjdHMgZnJvbSBzZXZlcmFs
IGJhY2tlbmQgYnJlYWtwb2ludCBhY3Rpb24gaW5zdGFuY2VzIG1heQogLy8gY3JlYXRlIG9iamVj
dHMgaW4gdGhlIHNhbWUgZ3JvdXAuCi1zdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtw
b2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24pCitzdGF0aWMg
U3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihKU0M6OkJyZWFrcG9pbnRBY3Rp
b25JRCBpZCkKIHsKLSAgICByZXR1cm4gbWFrZVN0cmluZygiYnJlYWtwb2ludC1hY3Rpb24tIiwg
YWN0aW9uLmlkZW50aWZpZXIpOworICAgIHJldHVybiBtYWtlU3RyaW5nKCJicmVha3BvaW50LWFj
dGlvbi0iLCBpZCk7CiB9CiAKIHN0YXRpYyBib29sIGlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoY29u
c3QgU3RyaW5nJiBzb3VyY2VVUkwpCkBAIC02MCw2ICs2NCwxNTEgQEAgc3RhdGljIGJvb2wgaXNX
ZWJLaXRJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKICAgICByZXR1cm4g
c291cmNlVVJMLnN0YXJ0c1dpdGgoIl9fSW5qZWN0ZWRTY3JpcHRfIikgJiYgc291cmNlVVJMLmVu
ZHNXaXRoKCIuanMiKTsKIH0KIAorc3RhdGljIE9wdGlvbmFsPEpTQzo6QnJlYWtwb2ludDo6QWN0
aW9uOjpUeXBlPiBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZykKK3sKKyAgICBhdXRvIHR5cGUgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpwYXJzZUVudW1WYWx1ZUZyb21T
dHJpbmc8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU+KHR5cGVTdHJpbmcpOworICAgIGlmICghdHlwZSkgeworICAgICAgICBlcnJvclN0cmluZyA9
IG1ha2VTdHJpbmcoIlVua25vd24gYnJlYWtwb2ludCBhY3Rpb24gdHlwZTogIl9zLCB0eXBlU3Ry
aW5nKTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisKKyAgICBzd2l0Y2gg
KHR5cGUudmFsdWUoKSkgeworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkxvZzoKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtw
b2ludDo6QWN0aW9uOjpUeXBlOjpMb2c7CisKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZToKKyAgICAgICAgcmV0
dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZTsKKworICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNv
dW5kOgorICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OlNvdW5k
OworCisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFj
dGlvbjo6VHlwZTo6UHJvYmU6CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlv
bjo6VHlwZTo6UHJvYmU7CisgICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAg
cmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMg
VCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCwgRnVuY3Rpb248VChjb25zdCBTdHJpbmcmLCBK
U0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNMaXN0JiYsIGJvb2wsIHNpemVfdCk+IGNhbGxiYWNrKQor
eworICAgIFN0cmluZyBjb25kaXRpb247CisgICAgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zTGlz
dCBhY3Rpb25zOworICAgIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7CisgICAgc2l6ZV90IGln
bm9yZUNvdW50ID0gMDsKKworICAgIGlmIChvcHRpb25zUGF5bG9hZCkgeworICAgICAgICBvcHRp
b25zUGF5bG9hZC0+Z2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7CisKKyAgICAg
ICAgUmVmUHRyPEpTT046OkFycmF5PiBhY3Rpb25zUGF5bG9hZDsKKyAgICAgICAgb3B0aW9uc1Bh
eWxvYWQtPmdldEFycmF5KCJhY3Rpb25zIl9zLCBhY3Rpb25zUGF5bG9hZCk7CisgICAgICAgIGlm
IChhdXRvIGNvdW50ID0gYWN0aW9uc1BheWxvYWQgPyBhY3Rpb25zUGF5bG9hZC0+bGVuZ3RoKCkg
OiAwKSB7CisgICAgICAgICAgICBhY3Rpb25zLnJlc2VydmVDYXBhY2l0eShjb3VudCk7CisKKyAg
ICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYWN0aW9uT2JqZWN0OworICAgICAgICAgICAg
ICAgIGlmICghYWN0aW9uc1BheWxvYWQtPmdldChpKS0+YXNPYmplY3QoYWN0aW9uT2JqZWN0KSkg
eworICAgICAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJVbmV4cGVjdGVkIG5vbi1vYmpl
Y3QgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOworICAgICAgICAgICAgICAgICAgICByZXR1cm4g
eyB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFN0cmluZyBhY3Rpb25U
eXBlU3RyaW5nOworICAgICAgICAgICAgICAgIGlmICghYWN0aW9uT2JqZWN0LT5nZXRTdHJpbmco
InR5cGUiX3MsIGFjdGlvblR5cGVTdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9y
U3RyaW5nID0gIk1pc3NpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOworICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIGF1dG8gYWN0aW9uVHlwZSA9IGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5n
KGVycm9yU3RyaW5nLCBhY3Rpb25UeXBlU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAoIWFj
dGlvblR5cGUpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgYWN0aW9uRGF0YTsKKyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3QtPmdl
dFN0cmluZygiZGF0YSJfcywgYWN0aW9uRGF0YSk7CisKKyAgICAgICAgICAgICAgICAvLyBTcGVj
aWZ5aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVs
YXRlIHByb2JlIHNhbXBsZXMKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgZnJvbnRlbmQgYWNy
b3NzIG11bHRpcGxlIGJhY2tlbmQgcHJvYmUgYWN0aW9ucyBhbmQgc2VncmVnYXRlIG9iamVjdCBn
cm91cHMuCisgICAgICAgICAgICAgICAgSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgYWN0aW9uSUQg
PSBKU0M6Om5vQnJlYWtwb2ludEFjdGlvbklEOworICAgICAgICAgICAgICAgIGFjdGlvbk9iamVj
dC0+Z2V0SW50ZWdlcigiaWQiX3MsIGFjdGlvbklEKTsKKworICAgICAgICAgICAgICAgIGFjdGlv
bnMuYXBwZW5kKEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uKGFjdGlvblR5cGUudmFsdWUoKSwgYWN0
aW9uRGF0YSwgYWN0aW9uSUQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAg
IG9wdGlvbnNQYXlsb2FkLT5nZXRCb29sZWFuKCJhdXRvQ29udGludWUiX3MsIGF1dG9Db250aW51
ZSk7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5nZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywg
aWdub3JlQ291bnQpOworICAgIH0KKworICAgIHJldHVybiBjYWxsYmFjayhjb25kaXRpb24sIFdU
Rk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOworfQorCitPcHRpb25h
bDxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ+IEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxv
YWQpCit7CisgICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8T3B0aW9uYWw8UHJvdG9j
b2xCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkLCBbJl0gKGNvbnN0IFN0
cmluZyYgY29uZGl0aW9uLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNMaXN0JiYgYWN0aW9ucywg
Ym9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9j
b2xCcmVha3BvaW50PiB7CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQoc291cmNl
SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMp
LCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQ
YXlsb2FkKQoreworICAgIHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFsPFBy
b3RvY29sQnJlYWtwb2ludD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChjb25z
dCBTdHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zTGlzdCYmIGFjdGlv
bnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFBy
b3RvY29sQnJlYWtwb2ludD4geworICAgICAgICByZXR1cm4gUHJvdG9jb2xCcmVha3BvaW50KHVy
bCwgaXNSZWdleCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIFdURk1vdmUo
YWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOworICAgIH0pOworfQorCitJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJlYWtwb2lu
dCgpID0gZGVmYXVsdDsKKworSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3Bv
aW50OjpQcm90b2NvbEJyZWFrcG9pbnQoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQg
bGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlv
biwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zTGlzdCYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRp
bnVlLCBzaXplX3QgaWdub3JlQ291bnQpCisgICAgOiBtX2lkKG1ha2VTdHJpbmcoc291cmNlSUQs
ICc6JywgbGluZU51bWJlciwgJzonLCBjb2x1bW5OdW1iZXIpKQorI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgLCBtX3NvdXJjZUlEKHNvdXJjZUlEKQorI2VuZGlmCisgICAgLCBtX2xpbmVOdW1iZXIo
bGluZU51bWJlcikKKyAgICAsIG1fY29sdW1uTnVtYmVyKGNvbHVtbk51bWJlcikKKyAgICAsIG1f
Y29uZGl0aW9uKGNvbmRpdGlvbikKKyAgICAsIG1fYWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQor
ICAgICwgbV9hdXRvQ29udGludWUoYXV0b0NvbnRpbnVlKQorICAgICwgbV9pZ25vcmVDb3VudChp
Z25vcmVDb3VudCkKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICwgbV9pc1ZhbGlkKHRydWUpCisj
ZW5kaWYKK3sKK30KKworSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50
OjpQcm90b2NvbEJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5z
aWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNv
bmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zTGlzdCYmIGFjdGlvbnMsIGJvb2wgYXV0
b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpCisgICAgOiBtX2lkKG1ha2VTdHJpbmcoaXNS
ZWdleCA/ICIvIiA6ICIiLCB1cmwsIGlzUmVnZXggPyAiLyIgOiAiIiwgJzonLCBsaW5lTnVtYmVy
LCAnOicsIGNvbHVtbk51bWJlcikpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX2lzUmVnZXgo
aXNSZWdleCkKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICwgbV9jb2x1bW5O
dW1iZXIoY29sdW1uTnVtYmVyKQorICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQorICAgICwg
bV9hY3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgLCBtX2F1dG9Db250aW51ZShhdXRvQ29u
dGludWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGlnbm9yZUNvdW50KQorI2lmIEFTU0VSVF9FTkFC
TEVECisgICAgLCBtX2lzVmFsaWQodHJ1ZSkKKyNlbmRpZgoreworfQorCitSZWY8SlNDOjpCcmVh
a3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmNyZWF0
ZURlYnVnZ2VyQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJ
RCwgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGVidWdnZXJC
cmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CisgICAgQVNTRVJUKHNvdXJjZUlE
ICE9IEpTQzo6bm9Tb3VyY2VJRCk7CisgICAgQVNTRVJUKHNvdXJjZUlEID09IG1fc291cmNlSUQg
fHwgbV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOworCisgICAgYXV0byBkZWJ1Z2dlckJy
ZWFrcG9pbnQgPSBKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZShkZWJ1Z2dlckJyZWFrcG9pbnRJRCwg
bV9jb25kaXRpb24sIGNvcHlUb1ZlY3RvcihtX2FjdGlvbnMpLCBtX2F1dG9Db250aW51ZSwgbV9p
Z25vcmVDb3VudCk7CisgICAgZGVidWdnZXJCcmVha3BvaW50LT5saW5rKHNvdXJjZUlELCBtX2xp
bmVOdW1iZXIsIG1fY29sdW1uTnVtYmVyKTsKKyAgICByZXR1cm4gZGVidWdnZXJCcmVha3BvaW50
OworfQorCitSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
ZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCit7CisgICAgcmV0dXJuIHBhcnNlQnJl
YWtwb2ludE9wdGlvbnM8UmVmUHRyPEpTQzo6QnJlYWtwb2ludD4+KGVycm9yU3RyaW5nLCBvcHRp
b25zUGF5bG9hZCwgW10gKGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbnNMaXN0JiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVD
b3VudCkgeworICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50OjpjcmVhdGUoSlNDOjpub0Jy
ZWFrcG9pbnRJRCwgY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGln
bm9yZUNvdW50KTsKKyAgICB9KTsKK30KKwogSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudChBZ2VudENvbnRleHQmIGNvbnRleHQpCiAgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoIkRlYnVnZ2VyIl9zKQogICAgICwgbV9mcm9udGVuZERpc3BhdGNoZXIobWFrZVVu
aXF1ZTxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4oY29udGV4dC5mcm9udGVuZFJvdXRlcikp
CkBAIC04Nyw3ICsyMzYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgp
CiB7CiAgICAgbV9lbmFibGVkID0gdHJ1ZTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuYWRk
TGlzdGVuZXIodGhpcyk7CisgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5hZGRPYnNlcnZlcigqdGhp
cyk7CiAKICAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKG1fbGlzdGVuZXJz
KSkKICAgICAgICAgbGlzdGVuZXItPmRlYnVnZ2VyV2FzRW5hYmxlZCgpOwpAQCAtMTA4LDE1ICsy
NTcsMTMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGJvb2wgaXNCZWlu
Z0Rlc3Ryb3llZCkKICAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKG1fbGlz
dGVuZXJzKSkKICAgICAgICAgbGlzdGVuZXItPmRlYnVnZ2VyV2FzRGlzYWJsZWQoKTsKIAotICAg
IG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlTGlzdGVuZXIodGhpcywgaXNCZWluZ0Rlc3Ryb3ll
ZCk7CisgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVPYnNlcnZlcigqdGhpcywgaXNCZWlu
Z0Rlc3Ryb3llZCk7CiAKICAgICBjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpOwogCiAg
ICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmRl
YWN0aXZhdGVCcmVha3BvaW50cygpOwogCi0gICAgQVNTRVJUKG1famF2YVNjcmlwdEJyZWFrcG9p
bnRzLmlzRW1wdHkoKSk7Ci0KICAgICBjbGVhckFzeW5jU3RhY2tUcmFjZURhdGEoKTsKIAogICAg
IG1fcGF1c2VPbkFzc2VydGlvbkZhaWx1cmVzID0gZmFsc2U7CkBAIC0yMDYsMTcgKzM1MywyMiBA
QCBzdGF0aWMgUmVmUHRyPEpTT046Ok9iamVjdD4gYnVpbGRDU1BWaW9sYXRpb25QYXVzZVJlYXNv
bihjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZQogICAgIHJldHVybiByZWFzb24tPm9wZW5BY2Nlc3Nv
cnMoKTsKIH0KIAotUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24oSlNDOjpCcmVha3BvaW50SUQgZGVidWdnZXJCcmVh
a3BvaW50SWRlbnRpZmllcikKK1JlZlB0cjxKU09OOjpPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKEpTQzo6QnJlYWtwb2ludElEIGRlYnVn
Z2VyQnJlYWtwb2ludElEKQogewotICAgIEFTU0VSVChkZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlm
aWVyICE9IEpTQzo6bm9CcmVha3BvaW50SUQpOwotICAgIGF1dG8gaXQgPSBtX2RlYnVnZ2VyQnJl
YWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmZpbmQoZGVi
dWdnZXJCcmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgaWYgKGl0ID09IG1fZGVidWdnZXJCcmVh
a3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZpZXIuZW5kKCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOworICAgIEFTU0VSVChkZWJ1Z2dlckJyZWFrcG9pbnRJRCAh
PSBKU0M6Om5vQnJlYWtwb2ludElEKTsKIAotICAgIGF1dG8gcmVhc29uID0gUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50UGF1c2VSZWFzb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRCcmVh
a3BvaW50SWQoaXQtPnZhbHVlKQotICAgICAgICAucmVsZWFzZSgpOwotICAgIHJldHVybiByZWFz
b24tPm9wZW5BY2Nlc3NvcnMoKTsKKyAgICBmb3IgKGF1dG8mIFtwcm90b2NvbEJyZWFrcG9pbnRJ
RCwgZGVidWdnZXJCcmVha3BvaW50c10gOiBtX2RlYnVnZ2VyQnJlYWtwb2ludHNGb3JQcm90b2Nv
bEJyZWFrcG9pbnRJRCkgeworICAgICAgICBmb3IgKGF1dG8mIGRlYnVnZ2VyQnJlYWtwb2ludCA6
IGRlYnVnZ2VyQnJlYWtwb2ludHMpIHsKKyAgICAgICAgICAgIGlmIChkZWJ1Z2dlckJyZWFrcG9p
bnQtPmlkKCkgPT0gZGVidWdnZXJCcmVha3BvaW50SUQpIHsKKyAgICAgICAgICAgICAgICBhdXRv
IHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludFBhdXNlUmVhc29uOjpjcmVh
dGUoKQorICAgICAgICAgICAgICAgICAgICAuc2V0QnJlYWtwb2ludElkKHByb3RvY29sQnJlYWtw
b2ludElEKQorICAgICAgICAgICAgICAgICAgICAucmVsZWFzZSgpOworICAgICAgICAgICAgICAg
IHJldHVybiByZWFzb24tPm9wZW5BY2Nlc3NvcnMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiBudWxscHRyOwogfQogCiBSZWZQdHI8SlNPTjo6T2JqZWN0
PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEV4Y2VwdGlvblBhdXNlUmVhc29uKEpTQzo6
SlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IEluamVjdGVkU2NyaXB0JiBpbmplY3RlZFNjcmlwdCkK
QEAgLTIzNCw3ICszODYsNyBAQCBSZWZQdHI8SlNPTjo6T2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpidWlsZEV4Y2VwdGlvblBhdXNlUmVhc29uKEpTQzo6SlNWYQogCiB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmhhbmRsZUNvbnNvbGVBc3NlcnQoY29uc3QgU3RyaW5nJiBtZXNz
YWdlKQogewotICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5icmVha3BvaW50c0FjdGl2ZSgp
KQorICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
aWYgKG1fcGF1c2VPbkFzc2VydGlvbkZhaWx1cmVzKQpAQCAtMjUxLDcgKzQwMyw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkU2NoZWR1bGVBc3luY0NhbGwoSlNDOjpKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqCiAgICAgaWYgKCFtX2FzeW5jU3RhY2tUcmFjZURlcHRoKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoIW1fc2NyaXB0RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNB
Y3RpdmUoKSkKKyAgICBpZiAoIWJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsK
IAogICAgIFJlZjxTY3JpcHRDYWxsU3RhY2s+IGNhbGxTdGFjayA9IGNyZWF0ZVNjcmlwdENhbGxT
dGFjayhnbG9iYWxPYmplY3QsIG1fYXN5bmNTdGFja1RyYWNlRGVwdGgpOwpAQCAtMzMzLDIzICs0
ODUsNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZERpc3BhdGNoQXN5bmNDYWxs
KCkKICAgICAgICAgbV9wZW5kaW5nQXN5bmNDYWxscy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAK
LXN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUo
Y29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIGNvbmRpdGlvbiwgUmVmUHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgYm9vbCBp
c1JlZ2V4LCBib29sIGF1dG9Db250aW51ZSwgdW5zaWduZWQgaWdub3JlQ291bnQpCi17Ci0gICAg
UmVmPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRl
KCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0U3RyaW5nKCJ1cmwiX3MsIHVybCk7Ci0gICAg
YnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcigibGluZU51bWJlciJfcywgbGluZU51bWJlcik7
Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcigiY29sdW1uTnVtYmVyIl9zLCBjb2x1
bW5OdW1iZXIpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldFN0cmluZygiY29uZGl0aW9uIl9z
LCBjb25kaXRpb24pOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oImlzUmVnZXgi
X3MsIGlzUmVnZXgpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oImF1dG9Db250
aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJbnRlZ2Vy
KCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotCi0gICAgaWYgKGFjdGlvbnMpCi0gICAg
ICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEFycmF5KCJhY3Rpb25zIl9zLCBhY3Rpb25zKTsKLQot
ICAgIHJldHVybiBicmVha3BvaW50T2JqZWN0OwotfQotCiBzdGF0aWMgYm9vbCBtYXRjaGVzKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKIHsK
ICAgICBpZiAoaXNSZWdleCkgewpAQCAtMzU5LDgxICs0OTQsMTUgQEAgc3RhdGljIGJvb2wgbWF0
Y2hlcyhjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBwYXR0ZXJuLCBib29sIGlzUmVn
ZXgpCiAgICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwogfQogCi1zdGF0aWMgYm9vbCBicmVha3Bv
aW50QWN0aW9uVHlwZUZvclN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFNjcmlwdEJy
ZWFrcG9pbnRBY3Rpb25UeXBlKiBvdXRwdXQpCitzdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcG9p
bnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2Nv
bDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7Ci0gICAgICAgICpvdXRwdXQgPSBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUxvZzsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OkV2YWx1YXRlKSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlv
blR5cGVFdmFsdWF0ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBl
U3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1
ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewot
ICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJ
bnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2JlKSkgewotICAgICAgICAqb3V0cHV0ID0gU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
UmVmUHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgQnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCkK
LXsKLSAgICBpZiAoIWFjdGlvbnMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdW5zaWdu
ZWQgYWN0aW9uc0xlbmd0aCA9IGFjdGlvbnMtPmxlbmd0aCgpOwotICAgIGlmICghYWN0aW9uc0xl
bmd0aCkKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXN1bHQtPnJlc2VydmVDYXBhY2l0
eShhY3Rpb25zTGVuZ3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWN0aW9uc0xl
bmd0aDsgKytpKSB7Ci0gICAgICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdmFsdWUgPSBhY3Rpb25z
LT5nZXQoaSk7Ci0gICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKLSAgICAgICAg
aWYgKCF2YWx1ZS0+YXNPYmplY3Qob2JqZWN0KSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiVW5leHBlY3RlZCBub24tb2JqZWN0IGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyB0eXBlU3Ry
aW5nOwotICAgICAgICBpZiAoIW9iamVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCB0eXBlU3RyaW5n
KSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyB0eXBlIGZvciBpdGVtIGlu
IGdpdmVuIGFjdGlvbnMiX3M7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0eXBlOwotICAgICAgICBpZiAo
IWJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKHR5cGVTdHJpbmcsICZ0eXBlKSkgewotICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTm9uLXN0cmluZyB0eXBlIGZvciBpdGVtIGluIGdpdmVu
IGFjdGlvbnMiX3M7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAg
ICAgICAvLyBTcGVjaWZ5aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVz
ZWQgdG8gY29ycmVsYXRlIHByb2JlIHNhbXBsZXMKLSAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5k
IGFjcm9zcyBtdWx0aXBsZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmpl
Y3QgZ3JvdXBzLgotICAgICAgICBpbnQgaWRlbnRpZmllciA9IDA7Ci0gICAgICAgIG9iamVjdC0+
Z2V0SW50ZWdlcigiaWQiX3MsIGlkZW50aWZpZXIpOwotCi0gICAgICAgIFN0cmluZyBkYXRhOwot
ICAgICAgICBvYmplY3QtPmdldFN0cmluZygiZGF0YSJfcywgZGF0YSk7Ci0KLSAgICAgICAgcmVz
dWx0LT5hcHBlbmQoU2NyaXB0QnJlYWtwb2ludEFjdGlvbih0eXBlLCBpZGVudGlmaWVyLCBkYXRh
KSk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8UHJvdG9j
b2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6
QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKLXsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZl
ZCk7CisgICAgQVNTRVJUKGRlYnVnZ2VyQnJlYWtwb2ludC5yZXNvbHZlZCgpKTsKIAogICAgIGF1
dG8gbG9jYXRpb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQotICAg
ICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIoYnJlYWtwb2ludC5zb3VyY2VJRCkpCi0g
ICAgICAgIC5zZXRMaW5lTnVtYmVyKGJyZWFrcG9pbnQubGluZSkKKyAgICAgICAgLnNldFNjcmlw
dElkKFN0cmluZzo6bnVtYmVyKGRlYnVnZ2VyQnJlYWtwb2ludC5zb3VyY2VJRCgpKSkKKyAgICAg
ICAgLnNldExpbmVOdW1iZXIoZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIoKSkKICAgICAg
ICAgLnJlbGVhc2UoKTsKLSAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGJyZWFrcG9pbnQu
Y29sdW1uKTsKKyAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGRlYnVnZ2VyQnJlYWtwb2lu
dC5jb2x1bW5OdW1iZXIoKSk7CiAKICAgICByZXR1cm4gbG9jYXRpb247CiB9CkBAIC00NTksNjgg
KzUyOCw0OCBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbgogICAgIHJldHVybiB0cnVlOwogfQog
Ci12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxD
b2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SlNPTjo6
QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51
bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8
UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBvdXRMb2NhdGlvbnMpCiB7Ci0gICAgbG9j
YXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3Jl
YXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lm
aWVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHVybCA9IG9wdGlv
bmFsVVJMID8gKm9wdGlvbmFsVVJMIDogKm9wdGlvbmFsVVJMUmVnZXg7Ci0gICAgaW50IGNvbHVt
bk51bWJlciA9IG9wdGlvbmFsQ29sdW1uTnVtYmVyID8gKm9wdGlvbmFsQ29sdW1uTnVtYmVyIDog
MDsKLSAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbFVSTFJlZ2V4OworICAgIGF1dG8gcHJvdG9j
b2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmlu
Zywgb3B0aW9uYWxVUkwgPyAqb3B0aW9uYWxVUkwgOiAqb3B0aW9uYWxVUkxSZWdleCwgISFvcHRp
b25hbFVSTFJlZ2V4LCBsaW5lTnVtYmVyLCBvcHRpb25hbENvbHVtbk51bWJlciA/ICpvcHRpb25h
bENvbHVtbk51bWJlciA6IDAsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIXByb3RvY29sQnJl
YWtwb2ludCkKKyAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlm
aWVyID0gbWFrZVN0cmluZyhpc1JlZ2V4ID8gIi8iIDogIiIsIHVybCwgaXNSZWdleCA/ICIvOiIg
OiAiOiIsIGxpbmVOdW1iZXIsICc6JywgY29sdW1uTnVtYmVyKTsKLSAgICBpZiAobV9qYXZhU2Ny
aXB0QnJlYWtwb2ludHMuY29udGFpbnMoYnJlYWtwb2ludElkZW50aWZpZXIpKSB7CisgICAgaWYg
KG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY29udGFpbnMocHJv
dG9jb2xCcmVha3BvaW50LT5pZCgpKSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3Bv
aW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cy4iX3M7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBi
b29sIGF1dG9Db250aW51ZSA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsK
LSAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFjdGlvbnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAg
ICAgICAgb3B0aW9ucy0+Z2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAg
ICAgIG9wdGlvbnMtPmdldEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsK
LSAgICAgICAgb3B0aW9ucy0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAg
ICBvcHRpb25zLT5nZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotICAg
IH0KKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElELnNldChw
cm90b2NvbEJyZWFrcG9pbnQtPmlkKCksIHByb3RvY29sQnJlYWtwb2ludC52YWx1ZSgpKTsKIAot
ICAgIEJyZWFrcG9pbnRBY3Rpb25zIGJyZWFrcG9pbnRBY3Rpb25zOwotICAgIGlmICghYnJlYWtw
b2ludEFjdGlvbnNGcm9tUHJvdG9jb2woZXJyb3JTdHJpbmcsIGFjdGlvbnMsICZicmVha3BvaW50
QWN0aW9ucykpCi0gICAgICAgIHJldHVybjsKKyAgICBvdXRMb2NhdGlvbnMgPSBKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKIAotICAgIG1famF2
YVNjcmlwdEJyZWFrcG9pbnRzLnNldChicmVha3BvaW50SWRlbnRpZmllciwgYnVpbGRPYmplY3RG
b3JCcmVha3BvaW50Q29va2llKHVybCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRp
b24sIGFjdGlvbnMsIGlzUmVnZXgsIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpKTsKLQotICAg
IGZvciAoYXV0byYgZW50cnkgOiBtX3NjcmlwdHMpIHsKLSAgICAgICAgU2NyaXB0JiBzY3JpcHQg
PSBlbnRyeS52YWx1ZTsKKyAgICBmb3IgKGF1dG8mIFtzb3VyY2VJRCwgc2NyaXB0XSA6IG1fc2Ny
aXB0cykgewogICAgICAgICBTdHJpbmcgc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMgPSAhc2NyaXB0
LnNvdXJjZVVSTC5pc0VtcHR5KCkgPyBzY3JpcHQuc291cmNlVVJMIDogc2NyaXB0LnVybDsKLSAg
ICAgICAgaWYgKCFtYXRjaGVzKHNjcmlwdFVSTEZvckJyZWFrcG9pbnRzLCB1cmwsIGlzUmVnZXgp
KQorICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMsIHByb3RvY29s
QnJlYWtwb2ludC0+dXJsKCksIHByb3RvY29sQnJlYWtwb2ludC0+aXNSZWdleCgpKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBlbnRy
eS5rZXk7Ci0gICAgICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3Vu
dCk7Ci0gICAgICAgIHJlc29sdmVCcmVha3BvaW50KHNjcmlwdCwgYnJlYWtwb2ludCk7Ci0gICAg
ICAgIGlmICghYnJlYWtwb2ludC5yZXNvbHZlZCkKKyAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFr
cG9pbnQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25l
eHREZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICAgICAgaWYgKCFyZXNv
bHZlQnJlYWtwb2ludChzY3JpcHQsIGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKIAotICAgICAgICBib29sIGV4aXN0aW5nOwotICAgICAgICBzZXRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICAgICAgaWYgKGV4aXN0aW5nKQorICAgICAgICBp
ZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIFNjcmlwdEJyZWFrcG9pbnQgc2NyaXB0QnJlYWtwb2ludChicmVha3Bv
aW50LmxpbmUsIGJyZWFrcG9pbnQuY29sdW1uLCBjb25kaXRpb24sIGJyZWFrcG9pbnRBY3Rpb25z
LCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2ludChi
cmVha3BvaW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAg
ICAgIGRpZFNldEJyZWFrcG9pbnQocHJvdG9jb2xCcmVha3BvaW50LnZhbHVlKCksIGRlYnVnZ2Vy
QnJlYWtwb2ludCk7CiAKLSAgICAgICAgbG9jYXRpb25zLT5hZGRJdGVtKGJ1aWxkRGVidWdnZXJM
b2NhdGlvbihicmVha3BvaW50KSk7CisgICAgICAgIG91dExvY2F0aW9ucy0+YWRkSXRlbShidWls
ZERlYnVnZ2VyTG9jYXRpb24oZGVidWdnZXJCcmVha3BvaW50KSk7CiAgICAgfQogCi0gICAgKm91
dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7CisgICAgKm91dEJy
ZWFrcG9pbnRJZCA9IHByb3RvY29sQnJlYWtwb2ludC0+aWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25z
LCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZp
ZXIsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24p
Cit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpP
YmplY3QqIG9wdGlvbnNQYXlsb2FkLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCog
b3V0QnJlYWtwb2ludElkLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIG91
dEFjdHVhbExvY2F0aW9uKQogewogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5z
aWduZWQgbGluZU51bWJlcjsKQEAgLTUyOCw5MSArNTc3LDczIEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEpTT046CiAgICAgaWYgKCFwYXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCBsb2NhdGlvbiwgc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpCiAgICAgICAgIHJldHVybjsKIAotICAg
IFN0cmluZyBjb25kaXRpb24gPSBlbXB0eVN0cmluZygpOwotICAgIGJvb2wgYXV0b0NvbnRpbnVl
ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgPSAwOwotICAgIFJlZlB0cjxKU09O
OjpBcnJheT4gYWN0aW9uczsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgICBvcHRpb25zLT5n
ZXRTdHJpbmcoImNvbmRpdGlvbiJfcywgY29uZGl0aW9uKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0
Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOwotICAgICAgICBvcHRpb25z
LT5nZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0aW9ucyk7Ci0gICAgICAgIG9wdGlvbnMtPmdldElu
dGVnZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3VudCk7Ci0gICAgfQotCi0gICAgQnJlYWtw
b2ludEFjdGlvbnMgYnJlYWtwb2ludEFjdGlvbnM7Ci0gICAgaWYgKCFicmVha3BvaW50QWN0aW9u
c0Zyb21Qcm90b2NvbChlcnJvclN0cmluZywgYWN0aW9ucywgJmJyZWFrcG9pbnRBY3Rpb25zKSkK
LSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byBzY3JpcHRJdGVyYXRvciA9IG1fc2NyaXB0cy5m
aW5kKHNvdXJjZUlEKTsKICAgICBpZiAoc2NyaXB0SXRlcmF0b3IgPT0gbV9zY3JpcHRzLmVuZCgp
KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3Npbmcgc2NyaXB0IGZvciBzY3JpcHRJZCBp
biBnaXZlbiBsb2NhdGlvbiJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlw
dCYgc2NyaXB0ID0gc2NyaXB0SXRlcmF0b3ItPnZhbHVlOwotICAgIEpTQzo6QnJlYWtwb2ludCBi
cmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwg
YXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0
LCBicmVha3BvaW50KTsKLSAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2ZWQpIHsKKyAgICBhdXRv
IHByb3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoZXJy
b3JTdHJpbmcsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIG9wdGlvbnNQYXls
b2FkKTsKKyAgICBpZiAoIXByb3RvY29sQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gRG9uJ3Qgc2F2ZSBgcHJvdG9jb2xCcmVha3BvaW50YCBpbiBgbV9wcm90b2NvbEJyZWFr
cG9pbnRGb3JQcm90b2NvbEJyZWFrcG9pbnRJRGAgYmVjYXVzZSBpdAorICAgIC8vIHdhcyBzZXQg
c3BlY2lmaWNhbGx5IGZvciB0aGUgZ2l2ZW4gYHNvdXJjZUlEYCwgd2hpY2ggaXMgdW5pcXVlLCBt
ZWFuaW5nIHRoYXQgaXQgd2lsbCBuZXZlcgorICAgIC8vIGJlIHVzZWQgaW5zaWRlIGBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZWAuCisKKyAgICBhdXRvIGRlYnVnZ2VyQnJl
YWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC0+Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50KG1f
bmV4dERlYnVnZ2VyQnJlYWtwb2ludElEKyssIHNvdXJjZUlEKTsKKworICAgIGlmICghcmVzb2x2
ZUJyZWFrcG9pbnQoc2NyaXB0SXRlcmF0b3ItPnZhbHVlLCBkZWJ1Z2dlckJyZWFrcG9pbnQpKSB7
CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkNvdWxkIG5vdCByZXNvbHZlIGJyZWFrcG9pbnQiX3M7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBib29sIGV4aXN0aW5nOwotICAgIHNldEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgZXhpc3RpbmcpOwotICAgIGlmIChleGlzdGluZykgeworICAg
IGlmICghc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGxvY2F0aW9uIGFscmVhZHkgZXhpc3RzIl9z
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlm
aWVyID0gbWFrZVN0cmluZyhzb3VyY2VJRCwgJzonLCBicmVha3BvaW50LmxpbmUsICc6JywgYnJl
YWtwb2ludC5jb2x1bW4pOwotICAgIFNjcmlwdEJyZWFrcG9pbnQgc2NyaXB0QnJlYWtwb2ludChi
cmVha3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuY29sdW1uLCBjb25kaXRpb24sIGJyZWFrcG9pbnRB
Y3Rpb25zLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKLSAgICBkaWRTZXRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBzY3JpcHRCcmVha3BvaW50KTsKKyAg
ICBkaWRTZXRCcmVha3BvaW50KHByb3RvY29sQnJlYWtwb2ludC52YWx1ZSgpLCBkZWJ1Z2dlckJy
ZWFrcG9pbnQpOwogCi0gICAgYWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24o
YnJlYWtwb2ludCk7Ci0gICAgKm91dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElk
ZW50aWZpZXI7CisgICAgb3V0QWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24o
ZGVidWdnZXJCcmVha3BvaW50KTsKKyAgICAqb3V0QnJlYWtwb2ludElkID0gcHJvdG9jb2xCcmVh
a3BvaW50LT5pZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNldEJy
ZWFrcG9pbnQoY29uc3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50LCBjb25zdCBTdHJpbmcm
IGJyZWFrcG9pbnRJZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVh
a3BvaW50KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KFBy
b3RvY29sQnJlYWtwb2ludCYgcHJvdG9jb2xCcmVha3BvaW50LCBKU0M6OkJyZWFrcG9pbnQmIGRl
YnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBKU0M6OkJyZWFrcG9pbnRJRCBpZCA9IGJyZWFrcG9p
bnQuaWQ7Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50QWN0aW9ucyhpZCwg
c2NyaXB0QnJlYWtwb2ludCk7CisgICAgQVNTRVJUKHByb3RvY29sQnJlYWtwb2ludC5pc1ZhbGlk
KCkpOwogCi0gICAgYXV0byBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9IG1fYnJl
YWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5maW5kKGJyZWFrcG9p
bnRJZGVudGlmaWVyKTsKLSAgICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3Ig
PT0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmVuZCgp
KQotICAgICAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9IG1fYnJlYWtwb2lu
dElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5zZXQoYnJlYWtwb2ludElkZW50
aWZpZXIsIFZlY3RvcjxKU0M6OkJyZWFrcG9pbnRJRD4oKSkuaXRlcmF0b3I7Ci0gICAgZGVidWdT
ZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3ItPnZhbHVlLmFwcGVuZChpZCk7CisgICAgYXV0byYg
ZGVidWdnZXJCcmVha3BvaW50cyA9IG1fZGVidWdnZXJCcmVha3BvaW50c0ZvclByb3RvY29sQnJl
YWtwb2ludElELmVuc3VyZShwcm90b2NvbEJyZWFrcG9pbnQuaWQoKSwgW10geworICAgICAgICBy
ZXR1cm4gSlNDOjpCcmVha3BvaW50c0xpc3QoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAK
LSAgICBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJ
ZGVudGlmaWVyLnNldChpZCwgYnJlYWtwb2ludElkZW50aWZpZXIpOworICAgIGRlYnVnZ2VyQnJl
YWtwb2ludHMuYXBwZW5kKGRlYnVnZ2VyQnJlYWtwb2ludCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU2NyaXB0JiBzY3JpcHQsIEpT
Qzo6QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK2Jvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
cmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpcHQsIEpT
Qzo6QnJlYWtwb2ludCYgZGVidWdnZXJCcmVha3BvaW50KQogewotICAgIGlmIChicmVha3BvaW50
LmxpbmUgPCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0LnN0YXJ0TGluZSkgfHwgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5lbmRMaW5lKSA8IGJyZWFrcG9pbnQubGluZSkKLSAgICAg
ICAgcmV0dXJuOworICAgIGlmIChkZWJ1Z2dlckJyZWFrcG9pbnQubGluZU51bWJlcigpIDwgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5zdGFydExpbmUpIHx8IHN0YXRpY19jYXN0PHVuc2ln
bmVkPihzY3JpcHQuZW5kTGluZSkgPCBkZWJ1Z2dlckJyZWFrcG9pbnQubGluZU51bWJlcigpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlc29sdmVC
cmVha3BvaW50KGJyZWFrcG9pbnQsIHNjcmlwdC5zb3VyY2VQcm92aWRlci5nZXQoKSk7CisgICAg
cmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVzb2x2ZUJyZWFrcG9pbnQoZGVidWdnZXJCcmVh
a3BvaW50LCBzY3JpcHQuc291cmNlUHJvdmlkZXIuZ2V0KCkpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50
LCBib29sJiBleGlzdGluZykKK2Jvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludChKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKLSAgICBtX3Njcmlw
dERlYnVnU2VydmVyLnNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgZXhpc3RpbmcpOworICAgIHJl
dHVybiBtX3NjcmlwdERlYnVnU2VydmVyLnNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikKK3ZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQmIHByb3RvY29sQnJl
YWtwb2ludElEKQogewotICAgIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzLnJlbW92ZShicmVha3Bv
aW50SWRlbnRpZmllcik7CisgICAgbV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFr
cG9pbnRJRC5yZW1vdmUocHJvdG9jb2xCcmVha3BvaW50SUQpOwogCi0gICAgZm9yIChKU0M6OkJy
ZWFrcG9pbnRJRCBicmVha3BvaW50SUQgOiBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJRHMudGFrZShicmVha3BvaW50SWRlbnRpZmllcikpIHsKLSAgICAgICAg
bV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3BvaW50SWRlbnRp
Zmllci5yZW1vdmUoYnJlYWtwb2ludElEKTsKLQotICAgICAgICBjb25zdCBCcmVha3BvaW50QWN0
aW9ucyYgYnJlYWtwb2ludEFjdGlvbnMgPSBtX3NjcmlwdERlYnVnU2VydmVyLmdldEFjdGlvbnNG
b3JCcmVha3BvaW50KGJyZWFrcG9pbnRJRCk7Ci0gICAgICAgIGZvciAoYXV0byYgYWN0aW9uIDog
YnJlYWtwb2ludEFjdGlvbnMpCi0gICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5y
ZWxlYXNlT2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbikp
OworICAgIGZvciAoYXV0byYgZGVidWdnZXJCcmVha3BvaW50IDogbV9kZWJ1Z2dlckJyZWFrcG9p
bnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQudGFrZShwcm90b2NvbEJyZWFrcG9pbnRJRCkpIHsK
KyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhY3Rpb24gOiBkZWJ1Z2dlckJyZWFrcG9pbnQtPmFj
dGlvbnMoKSkKKyAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmpl
Y3RHcm91cChvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uLmlkKCkpKTsKIAog
ICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgp
KTsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50QWN0aW9ucyhi
cmVha3BvaW50SUQpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9p
bnQoYnJlYWtwb2ludElEKTsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVh
a3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCk7CiAgICAgfQogfQogCkBAIC02MzMsOSArNjY0LDkg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9yU3Ry
aW5nKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uQnJl
YWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpIHsKLSAgICAgICAgbV9zY3JpcHREZWJ1
Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElE
KTsKLSAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJl
YWtwb2ludElEOworICAgIGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2lu
dCkgeworICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29u
dGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51ZVRv
TG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBudWxscHRyOwogICAgIH0KIAogICAgIEpTQzo6
U291cmNlSUQgc291cmNlSUQ7CkBAIC02NTIsMjIgKzY4MywyMyBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29uZGl0aW9uOwot
ICAgIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQg
PSAwOwotICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0g
ICAgU2NyaXB0JiBzY3JpcHQgPSBzY3JpcHRJdGVyYXRvci0+dmFsdWU7Ci0gICAgcmVzb2x2ZUJy
ZWFrcG9pbnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2
ZWQpIHsKKyAgICBhdXRvIHByb3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6
ZnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIpOworICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAg
ICAvLyBEb24ndCBzYXZlIGBwcm90b2NvbEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJlYWtw
b2ludEZvclByb3RvY29sQnJlYWtwb2ludElEYCBiZWNhdXNlIGl0CisgICAgLy8gaXMgYSB0ZW1w
b3JhcnkgYnJlYWtwb2ludCB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGBsb2NhdGlv
bmAgaXMgcmVhY2hlZC4KKworICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xC
cmVha3BvaW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVha3Bv
aW50SUQrKywgc291cmNlSUQpOworCisgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHRJ
dGVyYXRvci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgbV9zY3JpcHRE
ZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNo
ZXItPnJlc3VtZWQoKTsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUg
YnJlYWtwb2ludCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgZXhpc3Rp
bmc7Ci0gICAgc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgaWYgKGV4
aXN0aW5nKSB7CisgICAgaWYgKCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsK
ICAgICAgICAgLy8gVGhlcmUgaXMgYW4gZXhpc3RpbmcgYnJlYWtwb2ludCBhdCB0aGlzIGxvY2F0
aW9uLiBJbnN0ZWFkIG9mCiAgICAgICAgIC8vIGFjdGluZyBsaWtlIGEgc2VyaWVzIG9mIHN0ZXBz
LCBqdXN0IHJlc3VtZSBhbmQgd2Ugd2lsbCBlaXRoZXIKICAgICAgICAgLy8gaGl0IHRoaXMgbmV3
IGJyZWFrcG9pbnQgb3Igbm90LgpAQCAtNjc2LDcgKzcwOCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEID0gYnJlYWtwb2ludC5pZDsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRl
YnVnZ2VyQnJlYWtwb2ludCA9IFdURk1vdmUoZGVidWdnZXJCcmVha3BvaW50KTsKIAogICAgIC8v
IFRyZWF0IHRoaXMgYXMgYSBzZXJpZXMgb2Ygc3RlcHMgdW50aWwgcmVhY2hpbmcgdGhlIG5ldyBi
cmVha3BvaW50LgogICAgIC8vIFNvIGRvbid0IGlzc3VlIGEgcmVzdW1lZCBldmVudCB1bmxlc3Mg
d2UgZXhpdCB0aGUgVk0gd2l0aG91dCBwYXVzaW5nLgpAQCAtNzE5LDcgKzc1MSw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QKICAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkRldGFpbHMo
ZXJyb3JTdHJpbmcsIGZ1bmN0aW9uSWQsIGRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkK
K3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVu
aXR5KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gcmVhc29uLCBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiYmIGRhdGEpCiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVk
KQogICAgICAgICByZXR1cm47CkBAIC03MjksMTAgKzc2MSwxMCBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVu
ZERpc3BhdAogICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24sIFdURk1vdmUoZGF0
YSkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIu
dm0oKSk7Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudCh0
cnVlKTsKKyAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1
bml0eSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25O
ZXh0U3RhdGVtZW50KCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VB
dE5leHRPcHBvcnR1bml0eSgpCiB7CiAgICAgaWYgKCFtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxl
ZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQwLDEzICs3NzIsMzMgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAgICAgbV9qYXZhU2Ny
aXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAogICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7Ci0g
ICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudChmYWxzZSk7Cisg
ICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAg
ICAgbV9lbmFibGVQYXVzZVdoZW5JZGxlID0gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEpTQzo6QnJlYWtw
b2ludCYgYnJlYWtwb2ludCwgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFz
b24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3sKKyAgICBKU0M6OkpTTG9ja0hvbGRl
ciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKKworICAgIGlmICghbV9zY3JpcHRE
ZWJ1Z1NlcnZlci5zY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShy
ZWFzb24sIFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpC
cmVha3BvaW50JiBicmVha3BvaW50KQoreworICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5j
YW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKKyAgICBjbGVhclBhdXNlRGV0YWlscygpOworICAgIHJldHVybiB0cnVlOwor
fQorCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nJikKIHsK
LSAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OlBhdXNlT25OZXh0U3RhdGVtZW50LCBudWxscHRyKTsKKyAgICBzY2hlZHVs
ZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCkBAIC03NTYsNyArODA4LDcgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FuY2VsUGF1c2VPbk5leHRTdGF0
ZW1lbnQoKTsKKyAgICBjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICBtX2NvbmRpdGlvblRvRGlzcGF0
Y2hSZXN1bWVkID0gU2hvdWxkRGlzcGF0Y2hSZXN1bWVkOjpXaGVuQ29udGludWVkOwogfQpAQCAt
ODIyLDcgKzg3NCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRs
ZSgpCiAgICAgbV9yZWdpc3RlcmVkSWRsZUNhbGxiYWNrID0gZmFsc2U7CiAKICAgICBpZiAobV9j
b25kaXRpb25Ub0Rpc3BhdGNoUmVzdW1lZCA9PSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5J
ZGxlKSB7Ci0gICAgICAgIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgICAgIGNh
bmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZl
ci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3Vt
ZWQoKTsKICAgICB9CkBAIC05NTgsNyArMTAxMCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVu
CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxT
dGFjay5nZXQoKSk7CiB9CiAKLVN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VN
YXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNj
cmlwdCYgc2NyaXB0KQogewogICAgIHJldHVybiBzY3JpcHQuc291cmNlTWFwcGluZ1VSTDsKIH0K
QEAgLTk3OCw3ICsxMDMwLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVz
ZUZvckludGVybmFsU2NyaXB0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdWwKICAgICB9CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJ
RCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0JiBzY3JpcHQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0IEpTQzo6
RGVidWdnZXI6OlNjcmlwdCYgc2NyaXB0KQogewogICAgIFN0cmluZyBzY3JpcHRJRFN0ciA9IFN0
cmluZzo6bnVtYmVyKHNvdXJjZUlEKTsKICAgICBib29sIGhhc1NvdXJjZVVSTCA9ICFzY3JpcHQu
c291cmNlVVJMLmlzRW1wdHkoKTsKQEAgLTEwMDQsNDQgKzEwNTYsMjQgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBj
b25zdCBTY3JpcHQKICAgICBpZiAoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9qYXZhU2NyaXB0QnJl
YWtwb2ludHMpIHsKLSAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9iamVj
dCA9IGVudHJ5LnZhbHVlOworICAgIGZvciAoYXV0byYgcHJvdG9jb2xCcmVha3BvaW50IDogbV9w
cm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC52YWx1ZXMoKSkgeworICAg
ICAgICBBU1NFUlQocHJvdG9jb2xCcmVha3BvaW50LmlzVmFsaWQoKSk7CisgICAgICAgIEFTU0VS
VChwcm90b2NvbEJyZWFrcG9pbnQuc291cmNlSUQoKSA9PSBKU0M6Om5vU291cmNlSUQpOwogCi0g
ICAgICAgIGJvb2wgaXNSZWdleDsKLSAgICAgICAgU3RyaW5nIHVybDsKLSAgICAgICAgYnJlYWtw
b2ludE9iamVjdC0+Z2V0Qm9vbGVhbigiaXNSZWdleCJfcywgaXNSZWdleCk7Ci0gICAgICAgIGJy
ZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygidXJsIl9zLCB1cmwpOwotICAgICAgICBpZiAoIW1h
dGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMsIHVybCwgaXNSZWdleCkpCisgICAgICAgIGlm
ICghbWF0Y2hlcyhzY3JpcHRVUkxGb3JCcmVha3BvaW50cywgcHJvdG9jb2xCcmVha3BvaW50LnVy
bCgpLCBwcm90b2NvbEJyZWFrcG9pbnQuaXNSZWdleCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIFNjcmlwdEJyZWFrcG9pbnQgc2NyaXB0QnJlYWtwb2ludDsKLSAgICAgICAg
YnJlYWtwb2ludE9iamVjdC0+Z2V0SW50ZWdlcigibGluZU51bWJlciJfcywgc2NyaXB0QnJlYWtw
b2ludC5saW5lTnVtYmVyKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0SW50ZWdlcigi
Y29sdW1uTnVtYmVyIl9zLCBzY3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlcik7Ci0gICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygiY29uZGl0aW9uIl9zLCBzY3JpcHRCcmVha3Bv
aW50LmNvbmRpdGlvbik7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEJvb2xlYW4oImF1
dG9Db250aW51ZSJfcywgc2NyaXB0QnJlYWtwb2ludC5hdXRvQ29udGludWUpOwotICAgICAgICBi
cmVha3BvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywgc2NyaXB0QnJlYWtw
b2ludC5pZ25vcmVDb3VudCk7Ci0gICAgICAgIEVycm9yU3RyaW5nIGVycm9yU3RyaW5nOwotICAg
ICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFjdGlvbnM7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmpl
Y3QtPmdldEFycmF5KCJhY3Rpb25zIl9zLCBhY3Rpb25zKTsKLSAgICAgICAgaWYgKCFicmVha3Bv
aW50QWN0aW9uc0Zyb21Qcm90b2NvbChlcnJvclN0cmluZywgYWN0aW9ucywgJnNjcmlwdEJyZWFr
cG9pbnQuYWN0aW9ucykpIHsKLSAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFr
cG9pbnQgPSBwcm90b2NvbEJyZWFrcG9pbnQuY3JlYXRlRGVidWdnZXJCcmVha3BvaW50KG1fbmV4
dERlYnVnZ2VyQnJlYWtwb2ludElEKyssIHNvdXJjZUlEKTsKIAotICAgICAgICBKU0M6OkJyZWFr
cG9pbnQgYnJlYWtwb2ludChzb3VyY2VJRCwgc2NyaXB0QnJlYWtwb2ludC5saW5lTnVtYmVyLCBz
Y3JpcHRCcmVha3BvaW50LmNvbHVtbk51bWJlciwgc2NyaXB0QnJlYWtwb2ludC5jb25kaXRpb24s
IHNjcmlwdEJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlLCBzY3JpcHRCcmVha3BvaW50Lmlnbm9yZUNv
dW50KTsKLSAgICAgICAgcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAg
ICAgICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKQorICAgICAgICBpZiAoIXJlc29sdmVCcmVh
a3BvaW50KHNjcmlwdCwgZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAgIGNvbnRpbnVl
OwogCi0gICAgICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgICAgIHNldEJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgZXhpc3RpbmcpOwotICAgICAgICBpZiAoZXhpc3RpbmcpCisgICAgICAgIGlmICghc2V0
QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpKQogICAgICAgICAgICAgY29udGludWU7CiAK
LSAgICAgICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVyID0gZW50cnkua2V5OwotICAgICAg
ICBkaWRTZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBzY3Jp
cHRCcmVha3BvaW50KTsKKyAgICAgICAgZGlkU2V0QnJlYWtwb2ludChwcm90b2NvbEJyZWFrcG9p
bnQsIGRlYnVnZ2VyQnJlYWtwb2ludCk7CiAKLSAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PmJyZWFrcG9pbnRSZXNvbHZlZChicmVha3BvaW50SWRlbnRpZmllciwgYnVpbGREZWJ1Z2dlckxv
Y2F0aW9uKGJyZWFrcG9pbnQpKTsKKyAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPmJyZWFr
cG9pbnRSZXNvbHZlZChwcm90b2NvbEJyZWFrcG9pbnQuaWQoKSwgYnVpbGREZWJ1Z2dlckxvY2F0
aW9uKGRlYnVnZ2VyQnJlYWtwb2ludCkpOwogICAgIH0KIH0KIApAQCAtMTA1MiwzNiArMTA4NCwz
OCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmZhaWxlZFRvUGFyc2VTb3VyY2UoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZwogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OndpbGxSdW5NaWNyb3Rhc2soKQogewotICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5i
cmVha3BvaW50c0FjdGl2ZSgpKQorICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGF1c2VPbk1pY3JvdGFza3MpCi0gICAgICAgIHNjaGVk
dWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6TWljcm90YXNrLCBudWxscHRyKTsKKyAgICAgICAgc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9y
dHVuaXR5KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok1pY3JvdGFzayk7CiB9
CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUnVuTWljcm90YXNrKCkKIHsKLSAg
ICBpZiAoIW1fc2NyaXB0RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBpZiAo
IWJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BhdXNl
T25NaWNyb3Rhc2tzKQotICAgICAgICBjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOworICAg
ICAgICBjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgY2FsbEZyYW1lcywgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1Z2h0
VmFsdWUpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJD
YWxsRnJhbWUsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKQogewogICAgIEFT
U0VSVCghbV9wYXVzZWRHbG9iYWxPYmplY3QpOwogICAgIG1fcGF1c2VkR2xvYmFsT2JqZWN0ID0g
Z2xvYmFsT2JqZWN0OwotICAgIG1fY3VycmVudENhbGxTdGFjayA9IHsgZ2xvYmFsT2JqZWN0LT52
bSgpLCBjYWxsRnJhbWVzIH07CiAKLSAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCk7
CisgICAgYXV0byogZGVidWdnZXJHbG9iYWxPYmplY3QgPSBkZWJ1Z2dlckNhbGxGcmFtZS5zY29w
ZSgpLT5nbG9iYWxPYmplY3QoKTsKKyAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSB7IG1fcGF1c2Vk
R2xvYmFsT2JqZWN0LT52bSgpLCB0b0pTKGRlYnVnZ2VyR2xvYmFsT2JqZWN0LCBkZWJ1Z2dlckds
b2JhbE9iamVjdCwgSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1l
KS5wdHIoKSkgfTsKKworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IobV9wYXVzZWRHbG9iYWxPYmplY3Qp
OwogCiAgICAgLy8gSWYgYSBoaWdoIGxldmVsIHBhdXNlIHBhdXNlIHJlYXNvbiBpcyBub3QgYWxy
ZWFkeSBzZXQsIHRyeSB0byBpbmZlciBhIHJlYXNvbiBmcm9tIHRoZSBkZWJ1Z2dlci4KICAgICBp
ZiAobV9wYXVzZVJlYXNvbiA9PSBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpP
dGhlcikgewogICAgICAgICBzd2l0Y2ggKG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVhc29uRm9yUGF1
c2UoKSkgewogICAgICAgICBjYXNlIEpTQzo6RGVidWdnZXI6OlBhdXNlZEZvckJyZWFrcG9pbnQ6
IHsKICAgICAgICAgICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50SWQgPSBtX3NjcmlwdERlYnVn
U2VydmVyLnBhdXNpbmdCcmVha3BvaW50SUQoKTsKLSAgICAgICAgICAgIGlmIChkZWJ1Z2dlckJy
ZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCkKKyAgICAgICAg
ICAgIGlmICghbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgfHwgZGVidWdn
ZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQt
PmlkKCkpCiAgICAgICAgICAgICAgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRhKERlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQsIGJ1aWxkQnJlYWtwb2ludFBh
dXNlUmVhc29uKGRlYnVnZ2VyQnJlYWtwb2ludElkKSk7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgfQpAQCAtMTExOSw3ICsxMTUzLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlMKIAog
ICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBkYXRhOwogICAgICAgICBpZiAoYXV0byBkZWJ1
Z2dlckJyZWFrcG9pbnRJZCA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2luZ0JyZWFrcG9pbnRJ
RCgpKSB7Ci0gICAgICAgICAgICBBU1NFUlQoZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250
aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQpOworICAgICAgICAgICAgQVNTRVJUKCFtX2NvbnRp
bnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCB8fCBkZWJ1Z2dlckJyZWFrcG9pbnRJZCAh
PSBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludC0+aWQoKSk7CiAgICAgICAg
ICAgICBkYXRhID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKICAgICAgICAgICAgIGRhdGEtPnNl
dFN0cmluZygib3JpZ2luYWxSZWFzb24iX3MsIFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpn
ZXRFbnVtQ29uc3RhbnRWYWx1ZShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpC
cmVha3BvaW50KSk7CiAgICAgICAgICAgICBkYXRhLT5zZXRWYWx1ZSgib3JpZ2luYWxEYXRhIl9z
LCBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9pbnRJZCkpOwpAQCAt
MTE1MSw5ICsxMTg1LDkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlMKIAogICAgIG1famF2YVNj
cmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7CiAKLSAgICBpZiAobV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCkgewotICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3Bv
aW50SUQpOwotICAgICAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCA9IEpTQzo6
bm9CcmVha3BvaW50SUQ7CisgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVh
a3BvaW50KSB7CisgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludCgq
bV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2NvbnRp
bnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAg
YXV0byYgc3RvcHdhdGNoID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJv
bm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKTsKQEAgLTExNjMsMTcgKzExOTcsMTcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTQzo6SlMKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKEpT
Qzo6QnJlYWtwb2ludEFjdGlvbklEIGlkKQogewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5w
bGF5QnJlYWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKTsKKyAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cGxheUJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpZCk7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFj
dGlvbiYgYWN0aW9uLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpK
U1ZhbHVlIHNhbXBsZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFj
dGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpCcmVha3Bv
aW50QWN0aW9uSUQgYWN0aW9uSUQsIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlk
LCBKU0M6OkpTVmFsdWUgc2FtcGxlKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBhdXRvIHBheWxvYWQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KHNhbXBs
ZSwgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbiksIHRydWUpOworICAgIGF1
dG8gcGF5bG9hZCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmplY3RHcm91
cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uSUQpLCB0cnVlKTsKICAgICBhdXRvIHJlc3VsdCA9
IFByb3RvY29sOjpEZWJ1Z2dlcjo6UHJvYmVTYW1wbGU6OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRQ
cm9iZUlkKGFjdGlvbi5pZGVudGlmaWVyKQorICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb25JRCkK
ICAgICAgICAgLnNldEJhdGNoSWQoYmF0Y2hJZCkKICAgICAgICAgLnNldFNhbXBsZUlkKHNhbXBs
ZUlkKQogICAgICAgICAuc2V0VGltZXN0YW1wKG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluc3Bl
Y3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCkuZWxhcHNlZFRpbWUoKS5zZWNv
bmRzKCkpCkBAIC0xMjA5LDEwICsxMjQzLDE1IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6YnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gcmVhCiB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9yQnJlYWtwb2ludFN0YXRl
KCkKIHsKICAgICBFcnJvclN0cmluZyBpZ25vcmVkOwotICAgIGZvciAoY29uc3QgU3RyaW5nJiBp
ZGVudGlmaWVyIDogY29weVRvVmVjdG9yKG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2Vy
dmVyQnJlYWtwb2ludElEcy5rZXlzKCkpKQotICAgICAgICByZW1vdmVCcmVha3BvaW50KGlnbm9y
ZWQsIGlkZW50aWZpZXIpOworICAgIGZvciAoYXV0byYgcHJvdG9jb2xCcmVha3BvaW50SUQgOiBj
b3B5VG9WZWN0b3IobV9kZWJ1Z2dlckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQu
a2V5cygpKSkKKyAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChpZ25vcmVkLCBwcm90b2NvbEJyZWFr
cG9pbnRJRCk7CiAKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5jbGVhcigpOworICAgIG1f
cHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY2xlYXIoKTsKKworICAg
IGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgeworICAgICAgICBt
X3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9u
RGVidWdnZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dl
ckJyZWFrcG9pbnQgPSBudWxscHRyOworICAgIH0KIAogICAgIGNsZWFyRGVidWdnZXJCcmVha3Bv
aW50U3RhdGUoKTsKIH0KQEAgLTEyMjEsNyArMTI2MCw2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpCiB7CiAgICAgewogICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBob2xkZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKLSAg
ICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJyZWFrcG9pbnRBY3Rpb25zKCk7CiAgICAg
ICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY2xlYXJCcmVha3BvaW50cygpOwogICAgICAgICBtX3Nj
cmlwdERlYnVnU2VydmVyLmNsZWFyQmxhY2tib3goKTsKICAgICB9CkBAIC0xMjI5LDkgKzEyNjcs
MTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckRlYnVnZ2VyQnJlYWtwb2lu
dFN0YXRlKCkKICAgICBtX3BhdXNlZEdsb2JhbE9iamVjdCA9IG51bGxwdHI7CiAgICAgbV9jdXJy
ZW50Q2FsbFN0YWNrID0geyB9OwogICAgIG1fc2NyaXB0cy5jbGVhcigpOwotICAgIG1fYnJlYWtw
b2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5jbGVhcigpOwotICAgIG1f
ZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZp
ZXIuY2xlYXIoKTsKLSAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCA9IEpTQzo6
bm9CcmVha3BvaW50SUQ7CisgICAgbV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFr
cG9pbnRJRC5jbGVhcigpOworICAgIG1fZGVidWdnZXJCcmVha3BvaW50c0ZvclByb3RvY29sQnJl
YWtwb2ludElELmNsZWFyKCk7CisgICAgbV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQgPSBKU0M6
Om5vQnJlYWtwb2ludElEICsgMTsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJl
YWtwb2ludCA9IG51bGxwdHI7CiAgICAgY2xlYXJQYXVzZURldGFpbHMoKTsKICAgICBtX2phdmFT
Y3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNlOwogICAgIG1faGFzRXhjZXB0aW9uVmFsdWUgPSBm
YWxzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCAzNWFmMTZkMjdkNmZmOWU0
ZGQ2YmU1ZTMyN2ZkOGQ2ODIyOGE3YzE3Li4yNDNlZGMzMDFiYjNkZjE3MmI3MThlNDUzN2RjMDFh
N2Y1MTQyYTQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCkBAIC0yOSwxNiArMjks
MTggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJCcmVha3BvaW50LmgiCiAjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JCYWNrZW5kRGlzcGF0
Y2hlcnMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmgiCi0jaW5j
bHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIu
aCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTQ2LDE1ICs0OCwx
NiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEFzeW5jU3RhY2tUcmFjZTsKIGNsYXNz
IEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2Ny
aXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAotY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UsIHB1YmxpYyBEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciwgcHVibGlj
IFNjcmlwdERlYnVnTGlzdGVuZXIgeworY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBEZWJ1Z2dl
ckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciwgcHVibGljIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVy
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsKICAg
ICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICB+SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCgpIG92ZXJyaWRlOwogCisgICAgc3RhdGljIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+
IGRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zUGF5bG9hZCk7CisKICAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3Qg
YmFja3RyYWNlT2JqZWN0R3JvdXA7CiAKICAgICAvLyBJbnNwZWN0b3JBZ2VudEJhc2UKQEAgLTY4
LDcgKzcxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXN5bmNTdGFja1RyYWNlRGVwdGgoRXJy
b3JTdHJpbmcmLCBpbnQgZGVwdGgpIGZpbmFsOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3Rp
dmUoRXJyb3JTdHJpbmcmLCBib29sIGFjdGl2ZSkgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3Bv
aW50QnlVcmwoRXJyb3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlv
bmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIGZpbmFsOwotICAgIHZvaWQgc2V0QnJlYWtw
b2ludChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpT
T046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKSBmaW5h
bDsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmpl
Y3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxQcm90b2NvbDo6RGVi
dWdnZXI6OkxvY2F0aW9uPiYgb3V0QWN0dWFsTG9jYXRpb24pIGZpbmFsOwogICAgIHZvaWQgcmVt
b3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50
aWZpZXIpIGZpbmFsOwogICAgIHZvaWQgY29udGludWVVbnRpbE5leHRSdW5Mb29wKEVycm9yU3Ry
aW5nJikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmLCBj
b25zdCBKU09OOjpPYmplY3QmIGxvY2F0aW9uKSBmaW5hbDsKQEAgLTg5LDE1ICs5MiwxNSBAQCBw
dWJsaWM6CiAgICAgdm9pZCBldmFsdWF0ZU9uQ2FsbEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJp
bmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0
IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCog
cmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBz
YXZlUmVzdWx0LCBjb25zdCBib29sKiBlbXVsYXRlVXNlckdlc3R1cmUsIFJlZlB0cjxQcm90b2Nv
bDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2FzVGhy
b3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KSBvdmVycmlkZTsKICAgICB2b2lk
IHNldFNob3VsZEJsYWNrYm94VVJMKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGJv
b2wgc2hvdWxkQmxhY2tib3gsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wq
IGlzUmVnZXgpIGZpbmFsOwogCi0gICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgotICAgIHZvaWQg
ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0JikgZmluYWw7CisgICAg
Ly8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6
U291cmNlSUQsIGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYpIGZpbmFsOwogICAgIHZvaWQg
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiBkYXRh
LCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2Fn
ZSkgZmluYWw7CiAgICAgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgZmluYWw7CiAgICAgdm9pZCBk
aWRSdW5NaWNyb3Rhc2soKSBmaW5hbDsKLSAgICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkpTVmFsdWUgY2FsbEZyYW1lcywgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9y
Q2F1Z2h0VmFsdWUpIGZpbmFsOworICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVn
aHRWYWx1ZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDb250aW51ZSgpIGZpbmFsOwotICAgIHZvaWQg
YnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcikgZmlu
YWw7Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCos
IGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25l
ZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkgZmluYWw7CisgICAgdm9pZCBicmVha3Bv
aW50QWN0aW9uU291bmQoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQpIGZpbmFsOworICAgIHZvaWQg
YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkJyZWFrcG9p
bnRBY3Rpb25JRCwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNW
YWx1ZSBzYW1wbGUpIGZpbmFsOwogCiAgICAgYm9vbCBpc1BhdXNlZCgpIGNvbnN0OwogICAgIGJv
b2wgYnJlYWtwb2ludHNBY3RpdmUoKSBjb25zdDsKQEAgLTExOCwxMCArMTIxLDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxEaXNwYXRjaEFzeW5jQ2FsbChBc3luY0NhbGxUeXBlLCBpbnQgY2Fs
bGJhY2tJZCk7CiAgICAgdm9pZCBkaWREaXNwYXRjaEFzeW5jQ2FsbCgpOwogCi0gICAgdm9pZCBz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpS
ZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSk7Ci0gICAgdm9pZCBjYW5jZWxQYXVz
ZU9uTmV4dFN0YXRlbWVudCgpOworICAgIHZvaWQgc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVu
aXR5KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24sIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+JiYgZGF0YSA9IG51bGxwdHIpOworICAgIHZvaWQgY2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1
bml0eSgpOwogICAgIGJvb2wgcGF1c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgY29uc3QgeyBy
ZXR1cm4gbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQ7IH0KIAorICAgIGJvb2wgc2NoZWR1bGVQ
YXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYsIERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSA9IG51bGxw
dHIpOworICAgIGJvb2wgY2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChKU0M6OkJyZWFr
cG9pbnQmKTsKKwogICAgIHZvaWQgYnJlYWtQcm9ncmFtKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSk7CiAgICAgdm9pZCBzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KTsKIApA
QCAtMTQyLDEyICsxNDgsMTIgQEAgcHJvdGVjdGVkOgogICAgIEluamVjdGVkU2NyaXB0TWFuYWdl
ciYgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7IH0KICAgICB2aXJ0dWFsIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9y
RXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSA9IDA7CiAK
LSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSB7IHJldHVybiBtX3Nj
cmlwdERlYnVnU2VydmVyOyB9CisgICAgSlNDOjpEZWJ1Z2dlciYgc2NyaXB0RGVidWdTZXJ2ZXIo
KSB7IHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgbXV0
ZUNvbnNvbGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0ZUNvbnNvbGUoKSA9IDA7CiAK
LSAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0Jik7
CisgICAgdmlydHVhbCBTdHJpbmcgc291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVi
dWdnZXI6OlNjcmlwdCYpOwogCiAgICAgdm9pZCBkaWRDbGVhckdsb2JhbE9iamVjdCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDbGVhckFzeW5jU3RhY2tUcmFjZURhdGEoKSB7IH0KQEAgLTE1Nyw5
ICsxNjMsNjQgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gY3VycmVudENhbGxGcmFtZXMoY29uc3QgSW5qZWN0ZWRTY3Jp
cHQmKTsKIAotICAgIHZvaWQgcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU2NyaXB0JiwgSlNDOjpC
cmVha3BvaW50Jik7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYsIGJv
b2wmIGV4aXN0aW5nKTsKLSAgICB2b2lkIGRpZFNldEJyZWFrcG9pbnQoY29uc3QgSlNDOjpCcmVh
a3BvaW50JiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOworICAgIGNs
YXNzIFByb3RvY29sQnJlYWtwb2ludCB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OworICAgIHB1YmxpYzoKKyAgICAgICAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2lu
dD4gZnJvbVBheWxvYWQoRXJyb3JTdHJpbmcmLCBKU0M6OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5l
TnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9u
c1BheWxvYWQgPSBudWxscHRyKTsKKyAgICAgICAgc3RhdGljIE9wdGlvbmFsPFByb3RvY29sQnJl
YWtwb2ludD4gZnJvbVBheWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgYm9v
bCBpc1JlZ2V4LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNv
bnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQgPSBudWxscHRyKTsKKworICAgICAgICBQ
cm90b2NvbEJyZWFrcG9pbnQoKTsKKyAgICAgICAgUHJvdG9jb2xCcmVha3BvaW50KEpTQzo6U291
cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3Qg
U3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9u
c0xpc3QmJiBhY3Rpb25zID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3Qg
aWdub3JlQ291bnQgPSAwKTsKKyAgICAgICAgUHJvdG9jb2xCcmVha3BvaW50KGNvbnN0IFN0cmlu
ZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVt
bk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEpTQzo6QnJl
YWtwb2ludDo6QWN0aW9uc0xpc3QmJiBhY3Rpb25zID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9
IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKworICAgICAgICBSZWY8SlNDOjpCcmVh
a3BvaW50PiBjcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQsIEpTQzo6
U291cmNlSUQpIGNvbnN0OworCisgICAgICAgIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorCisjaWYg
QVNTRVJUX0VOQUJMRUQKKyAgICAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCgpIGNvbnN0IHsg
cmV0dXJuIG1fc291cmNlSUQ7IH0KKyNlbmRpZgorICAgICAgICBjb25zdCBTdHJpbmcmIHVybCgp
IGNvbnN0IHsgcmV0dXJuIG1fdXJsOyB9CisgICAgICAgIGJvb2wgaXNSZWdleCgpIGNvbnN0IHsg
cmV0dXJuIG1faXNSZWdleDsgfQorCisgICAgICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVy
KCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKworICAgICAgICBjb25zdCBTdHJp
bmcmIGNvbmRpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fY29uZGl0aW9uOyB9CisgICAgICAgIGNv
bnN0IEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc0xpc3QmIGFjdGlvbnMoKSBjb25zdCB7IHJldHVy
biBtX2FjdGlvbnM7IH0KKyAgICAgICAgYm9vbCBhdXRvQ29udGludWUoKSBjb25zdCB7IHJldHVy
biBtX2F1dG9Db250aW51ZTsgfQorICAgICAgICBzaXplX3QgaWdub3JlQ291bnQoKSBjb25zdCB7
IHJldHVybiBtX2lnbm9yZUNvdW50OyB9CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBi
b29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBtX2lzVmFsaWQ7IH0KKyNlbmRpZgorCisgICAg
cHJpdmF0ZToKKyAgICAgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRJZCBtX2lkOworCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAgICAgSlNDOjpTb3VyY2VJRCBt
X3NvdXJjZUlEIHsgSlNDOjpub1NvdXJjZUlEIH07CisjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1f
dXJsOworICAgICAgICBib29sIG1faXNSZWdleCB7IGZhbHNlIH07CisKKyAgICAgICAgLy8gRklY
TUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0IFRl
eHRQb3NpdGlvbiBpbiBJbnNwZWN0b3IgdG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2VkSW50
IGFtYmlndWl0eQorICAgICAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXIgeyAwIH07CisgICAgICAg
IHVuc2lnbmVkIG1fY29sdW1uTnVtYmVyIHsgMCB9OworCisgICAgICAgIFN0cmluZyBtX2NvbmRp
dGlvbjsKKyAgICAgICAgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zTGlzdCBtX2FjdGlvbnM7Cisg
ICAgICAgIGJvb2wgbV9hdXRvQ29udGludWUgeyBmYWxzZSB9OworICAgICAgICBzaXplX3QgbV9p
Z25vcmVDb3VudCB7IDAgfTsKKworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIGJvb2wgbV9p
c1ZhbGlkIHsgZmFsc2UgfTsKKyNlbmRpZgorICAgIH07CisKKyAgICBib29sIHJlc29sdmVCcmVh
a3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYsIEpTQzo6QnJlYWtwb2ludCYpOwor
ICAgIGJvb2wgc2V0QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmKTsKKyAgICB2b2lkIGRpZFNl
dEJyZWFrcG9pbnQoUHJvdG9jb2xCcmVha3BvaW50JiwgSlNDOjpCcmVha3BvaW50Jik7CiAKICAg
ICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmluZyYpOwogICAgIHZvaWQgY2xlYXJEZWJ1Z2dl
ckJyZWFrcG9pbnRTdGF0ZSgpOwpAQCAtMTc4LDE3ICsyMzksMTUgQEAgcHJpdmF0ZToKICAgICBS
ZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihKU0M6OkJyZWFr
cG9pbnRJRCk7CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYnVpbGRFeGNlcHRpb25QYXVzZVJl
YXNvbihKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBjb25zdCBJbmplY3RlZFNjcmlwdCYpOwogCi0g
ICAgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyYsIFJlZlB0
cjxKU09OOjpBcnJheT4mIGFjdGlvbnMsIEJyZWFrcG9pbnRBY3Rpb25zKiByZXN1bHQpOwotCiAg
ICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQsIGludD4gQXN5bmNDYWxsSWRlbnRpZmllcjsK
ICAgICBzdGF0aWMgQXN5bmNDYWxsSWRlbnRpZmllciBhc3luY0NhbGxJZGVudGlmaWVyKEFzeW5j
Q2FsbFR5cGUsIGludCBjYWxsYmFja0lkKTsKIAogICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWJ1Z2dl
ckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVuZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPERl
YnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAKLSAgICBTY3Jp
cHREZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBt
X3NjcmlwdERlYnVnU2VydmVyOwogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3Rl
ZFNjcmlwdE1hbmFnZXI7Ci0gICAgSGFzaE1hcDxKU0M6OlNvdXJjZUlELCBTY3JpcHQ+IG1fc2Ny
aXB0czsKKyAgICBIYXNoTWFwPEpTQzo6U291cmNlSUQsIEpTQzo6RGVidWdnZXI6OlNjcmlwdD4g
bV9zY3JpcHRzOwogCiAgICAgc3RydWN0IEJsYWNrYm94Q29uZmlnIHsKICAgICAgICAgU3RyaW5n
IHVybDsKQEAgLTIwOSwxMCArMjY4LDEyIEBAIHByaXZhdGU6CiAgICAgSlNDOjpKU0dsb2JhbE9i
amVjdCogbV9wYXVzZWRHbG9iYWxPYmplY3QgeyBudWxscHRyIH07CiAgICAgSlNDOjpTdHJvbmc8
SlNDOjpVbmtub3duPiBtX2N1cnJlbnRDYWxsU3RhY2s7CiAKLSAgICBIYXNoTWFwPFN0cmluZywg
VmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPj4gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdT
ZXJ2ZXJCcmVha3BvaW50SURzOwotICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0Pj4gbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7Ci0gICAgSGFzaE1hcDxKU0M6OkJyZWFrcG9p
bnRJRCwgU3RyaW5nPiBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJy
ZWFrcG9pbnRJZGVudGlmaWVyOwotICAgIEpTQzo6QnJlYWtwb2ludElEIG1fY29udGludWVUb0xv
Y2F0aW9uQnJlYWtwb2ludElEIHsgSlNDOjpub0JyZWFrcG9pbnRJRCB9OworICAgIEhhc2hNYXA8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCwgUHJvdG9jb2xCcmVh
a3BvaW50PiBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElEOworICAg
IEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCwgSlND
OjpCcmVha3BvaW50c0xpc3Q+IG1fZGVidWdnZXJCcmVha3BvaW50c0ZvclByb3RvY29sQnJlYWtw
b2ludElEOworICAgIEpTQzo6QnJlYWtwb2ludElEIG1fbmV4dERlYnVnZ2VyQnJlYWtwb2ludElE
IHsgSlNDOjpub0JyZWFrcG9pbnRJRCArIDEgfTsKKworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50OworCiAgICAgU2hvdWxk
RGlzcGF0Y2hSZXN1bWVkIG1fY29uZGl0aW9uVG9EaXNwYXRjaFJlc3VtZWQgeyBTaG91bGREaXNw
YXRjaFJlc3VtZWQ6Ok5vIH07CiAKICAgICBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uIG1fcGF1c2VSZWFzb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRleCAy
ZmNiMmU3Yjg3NWZkNDc5YzRkZjYwYzRlM2NjYWM0NTQzY2ZkMmI5Li4zZWEwZGEzM2Q4MGQ1MWM3
OTE2YzY1MDY4NzhhYWUyYjAxYjAwNjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5j
cHAKQEAgLTM0LDEyICszNCwxMiBAQAogCiAjaW5jbHVkZSAiQ29tcGxldGlvbi5oIgogI2luY2x1
ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1
ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRIb3N0LmgiCiAj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAj
aW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgog
I2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXIuaCIKICNpbmNs
dWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKQEAgLTczLDcgKzczLDcgQEAgSW5zcGVjdG9yUnVudGlt
ZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkKIHsKIH0KIAotc3RhdGljIFNjcmlwdERl
YnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUoU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZl
cjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBuZXdTdGF0ZSkKK3N0YXRpYyBKU0M6OkRlYnVnZ2Vy
OjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoSlNDOjpE
ZWJ1Z2dlciYgc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OlBhdXNlT25FeGNlcHRp
b25zU3RhdGUgbmV3U3RhdGUpCiB7CiAgICAgYXV0byBwcmVzZW50U3RhdGUgPSBzY3JpcHREZWJ1
Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiAgICAgaWYgKHByZXNlbnRTdGF0ZSAh
PSBuZXdTdGF0ZSkKQEAgLTEyMyw5ICsxMjMsOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAog
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2Vw
dGlvbnM7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBKU0M6OkRl
YnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnM7CiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKQotICAgICAgICBwcmV2aW91c1BhdXNlT25FeGNl
cHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2
ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgICAgICBw
cmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9u
cyk7CiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUp
KQogICAgICAgICBtdXRlQ29uc29sZSgpOwogCkBAIC0xNjUsOSArMTY1LDkgQEAgdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW4KICAgICBpZiAob3B0aW9uYWxBcmd1bWVudHMpCiAgICAgICAgIGFyZ3Vt
ZW50cyA9IG9wdGlvbmFsQXJndW1lbnRzLT50b0pTT05TdHJpbmcoKTsKIAotICAgIFNjcmlwdERl
YnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9IFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnM7CisgICAg
YXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpEb250
UGF1c2VPbkV4Y2VwdGlvbnM7CiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUpKQotICAgICAgICBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUg
PSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIFNjcmlwdERl
YnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgICAgICBwcmV2aW91c1BhdXNl
T25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVi
dWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgaWYg
KGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKQogICAgICAgICBt
dXRlQ29uc29sZSgpOwogCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2
ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNl
cHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2
ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNv
bGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldFByZXZpZXcoZXJyb3JTdHJpbmcsIG9iamVj
dElkLCBwcmV2aWV3KTsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNl
T25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZl
cjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZl
ciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBtdXRlQ29uc29s
ZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVydGllcyhlcnJvclN0cmluZywgb2Jq
ZWN0SWQsIGFzQm9vbChvd25Qcm9wZXJ0aWVzKSwgc3RhcnQsIGNvdW50LCBhc0Jvb2woZ2VuZXJh
dGVQcmV2aWV3KSwgcHJvcGVydGllcyk7CkBAIC0yNDksNyArMjQ5LDcgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlwdERlYnVnU2Vy
dmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0
RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgYXV0byBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0
RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAg
bXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdlbmVyYXRl
UHJldmlldyksIHByb3BlcnRpZXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAppbmRleCBl
M2NiNjI0NTZjMmNmY2Y3ZjM4YzU4NzVlMGQ2ZTgzYzllNDQzMGZmLi45ZDc2NWQ5NjA3YWE5ZjY4
NjJiMDc2YWIzOWM2Y2JkMjg1NGQ2ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaApA
QCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCiBuYW1lc3Bh
Y2UgSlNDIHsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3MgVk07CiB9CiAKQEAgLTQ0LDcgKzQ1LDYg
QEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3Mg
SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVm
IFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9y
UnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIFJ1bnRpbWVC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewpAQCAtOTQsNyArOTQsNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRTdGF0ZShib29sKTsKIAogICAgIElu
amVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgU2NyaXB0
RGVidWdTZXJ2ZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgSlNDOjpEZWJ1Z2dlciYgbV9z
Y3JpcHREZWJ1Z1NlcnZlcjsKICAgICBKU0M6OlZNJiBtX3ZtOwogICAgIGJvb2wgbV9lbmFibGVk
IHtmYWxzZX07CiAgICAgYm9vbCBtX2lzVHlwZVByb2ZpbGluZ0VuYWJsZWQge2ZhbHNlfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKaW5kZXggOTdjYzkxZmY1
ZTIyYzk5ODEzOTNiNGRmYzU0ODljMjE4Mzg4MGZhOS4uYzEyZWM2OWEwMTVmNWFkYjYxN2Y4N2Fk
MTI5ZjdkOTVmZWVlYjJhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudC5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCIKIAorI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUgIkhlYXBJbmxpbmVzLmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIKICNpbmNsdWRlICJTYW1wbGluZ1Byb2ZpbGVy
LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvU3RvcHdh
dGNoLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuaAppbmRleCAzYjg4ZGVhYjc3NTNlYTVkYTFhYTczZmMwMmIyYTNlMjcxYzNl
MDM0Li42Zjc5Mjc4ZDUzMzE3MWUxZmRkMGFlZmU5ZGQyOWIzM2JmZDFmZTk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaApAQCAtMzgsOCArMzgsOCBAQCBwdWJsaWM6
CiAgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEpTQWdlbnRDb250ZXh0JiwgSW5zcGVj
dG9yQ29uc29sZUFnZW50Kik7CiAgICAgfkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCgpIGZp
bmFsOwogCi0gICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgotICAgIHZvaWQgYnJlYWtwb2ludEFj
dGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAg
Ly8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2co
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgZGF0YSkgZmluYWw7CiAKIHByaXZh
dGU6CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5n
JiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KaW5kZXggZjNhNzc1Mzcw
Mjk5NWViYzU0MzEyZWFkMGIwYzAyOGE1OGJiMTliOS4uOTk4YmM0YWZlNjhlYzcwNTAyYTAwOWI3
YmY1ZWQxZGU5NzU4YWIzMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uCkBAIC0zMTYsNyArMzE2LDggQEAKICAgICAgICAgICAgICJk
ZXNjcmlwdGlvbiI6ICJTZXQgYSBicmVha3BvaW50IG9uIHRoZSBnaXZlbiBldmVudCBsaXN0ZW5l
ci4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJwYWdlIl0sCiAgICAgICAgICAgICAi
cGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV2ZW50TGlzdGVuZXJJ
ZCIsICIkcmVmIjogIkV2ZW50TGlzdGVuZXJJZCIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiZXZlbnRMaXN0ZW5lcklkIiwgIiRyZWYiOiAiRXZlbnRMaXN0ZW5lcklkIiB9LAorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkRlYnVnZ2VyLkJyZWFrcG9p
bnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlvbnMgdG8g
YXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9CiAgICAg
ICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbiBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbgppbmRleCA1
YTE4OTc2MjgyNDQ3ZjdkZWViMDZmZGZkZTMyODhlM2JhMzY5ZTgxLi5lZWZhOTMzZjlmNWQyYzFm
NGZjNGRlNzU2NTc1NzQ5NGJiZWI5M2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29uCkBAIC0zOSw3ICsz
OSw4IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyBicmVha3BvaW50IG9uIHBh
cnRpY3VsYXIgZXZlbnQgb2YgZ2l2ZW4gdHlwZS4iLAogICAgICAgICAgICAgInBhcmFtZXRlcnMi
OiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicmVha3BvaW50VHlwZSIsICIkcmVmIjog
IkV2ZW50QnJlYWtwb2ludFR5cGUiIH0sCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJldmVu
dE5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24i
OiAiVGhlIG5hbWUgb2YgdGhlIHNwZWNpZmljIGV2ZW50IHRvIHN0b3Agb24uIiB9CisgICAgICAg
ICAgICAgICAgeyAibmFtZSI6ICJldmVudE5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9u
YWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5hbWUgb2YgdGhlIHNwZWNpZmljIGV2ZW50
IHRvIHN0b3Agb24uIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIk
cmVmIjogIkRlYnVnZ2VyLkJyZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIk9wdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlm
eSBpdHMgYmVoYXZpb3IuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcAppbmRleCAw
M2VlNjBiMzY1OTZhYjgyODVkZmE4YjQzNzFkOTlmZDQ0ZTk5NjE0Li40NGI4OTQ1NjczMGJlZTM2
M2VkYzE1ZTE4MjJjMzk4MGUxYmJhYjU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNaWNyb3Rhc2suY3BwCkBAIC05MSw2ICs5MSw5IEBAIHZvaWQgSlNNaWNyb3Rhc2s6
OnJ1bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgcHJvZmlsZWRDYWxsKGds
b2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpNaWNyb3Rhc2ssIG1fam9iLmdldCgpLCBoYW5k
bGVyQ2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGhhbmRsZXJBcmd1bWVudHMpOwogICAgIHNjb3Bl
LmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICBpZiAoVU5MSUtFTFkoZ2xvYmFsT2JqZWN0LT5oYXNE
ZWJ1Z2dlcigpKSkKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5kZWJ1Z2dlcigpLT5kaWRSdW5NaWNy
b3Rhc2soKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcAppbmRleCAwY2NmY2MxZTM2MGE4MjIwMjBmOThkMTVkYmU3MWI3NjcwMmZmOTE4Li42YTA3
NjRhZWQ4MTQxZDdhMjE5OTcxNWFmMDJmZGYxZGVlNDMxN2MyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dFRhcmdldC5jcHAKQEAgLTMzOSw3ICszMzksNyBAQCB2b2lkIEV2ZW50VGFyZ2V0Ojppbm5lcklu
dm9rZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCwgRXZlbnRMaXN0ZW5lclZlY3RvciBsaQog
CiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50KGNvbnRl
eHQsIGV2ZW50LCAqcmVnaXN0ZXJlZExpc3RlbmVyKTsKICAgICAgICAgcmVnaXN0ZXJlZExpc3Rl
bmVyLT5jYWxsYmFjaygpLmhhbmRsZUV2ZW50KGNvbnRleHQsIGV2ZW50KTsKLSAgICAgICAgSW5z
cGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChjb250ZXh0KTsKKyAgICAgICAg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChjb250ZXh0LCBldmVudCwg
KnJlZ2lzdGVyZWRMaXN0ZW5lcik7CiAKICAgICAgICAgaWYgKHJlZ2lzdGVyZWRMaXN0ZW5lci0+
aXNQYXNzaXZlKCkpCiAgICAgICAgICAgICBldmVudC5zZXRJblBhc3NpdmVMaXN0ZW5lcihmYWxz
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwCmluZGV4IDE5MWNmOGQwZTI1NjJjNDFkMDNjNTgzMGM4ZWUwNmIyMzlhOGZl
ODkuLjBhMDgxODA3OThmYzlkZGNjNWRhNzVjZmUwMzVmNTZkNzZlMTA4NDMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3Bw
CkBAIC00MTgsMTMgKzQxOCwxMyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2ls
bEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZQogICAgICAgICBk
b21EZWJ1Z2dlckFnZW50LT53aWxsSGFuZGxlRXZlbnQoZXZlbnQsIGxpc3RlbmVyKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
JiBsaXN0ZW5lcikKIHsKICAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdn
ZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKIAogICAgIGlmIChhdXRvKiBkb21EZWJ1
Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRE9NRGVidWdnZXJBZ2VudCgp
KQotICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRIYW5kbGVFdmVudCgpOworICAgICAgICBk
b21EZWJ1Z2dlckFnZW50LT5kaWRIYW5kbGVFdmVudChldmVudCwgbGlzdGVuZXIpOwogfQogCiB2
b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgY29uc3QgRXZlbnQmIGV2ZW50KQpA
QCAtNDczLDEwICs0NzMsMTIgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxG
aXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnQKICAgICAgICAgdGlt
ZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1lcih0aW1lcklkLCBmcmFtZUZvclNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoY29udGV4dCkpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRz
KQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgaW50IC8qIHRpbWVySWQgKi8sIGJv
b2wgb25lU2hvdCkKIHsKICAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdn
ZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKKyAgICBpZiAoYXV0byogZG9tRGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQoKSkK
KyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkRmlyZVRpbWVyKG9uZVNob3QpOwogICAgIGlm
IChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVs
aW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZVRpbWVyKCk7CiB9CkBA
IC03MTYsNiArNzE4LDkgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZENvbW1p
dExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnQKICAgICAgICAgaWYgKGF1
dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZURl
YnVnZ2VyQWdlbnQoKSkKICAgICAgICAgICAgIHBhZ2VEZWJ1Z2dlckFnZW50LT5tYWluRnJhbWVO
YXZpZ2F0ZWQoKTsKIAorICAgICAgICBpZiAoYXV0byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3Ry
dW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgICAgIGRv
bURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOworCiAgICAgICAgIGlmIChhdXRv
KiBlbmFibGVkUGFnZUhlYXBBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VI
ZWFwQWdlbnQoKSkKICAgICAgICAgICAgIGVuYWJsZWRQYWdlSGVhcEFnZW50LT5tYWluRnJhbWVO
YXZpZ2F0ZWQoKTsKICAgICB9CkBAIC0xMjYyLDYgKzEyNjcsOCBAQCB2b2lkIEluc3BlY3Rvcklu
c3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lSW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiBpbgogewogICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFn
ZW50LT5kaWREaXNwYXRjaEFzeW5jQ2FsbCgpOworICAgIGlmIChhdXRvKiBwYWdlRE9NRGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50
KCkpCisgICAgICAgIHBhZ2VET01EZWJ1Z2dlckFnZW50LT5kaWRGaXJlQW5pbWF0aW9uRnJhbWUo
KTsKICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJh
Y2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVBbmlt
YXRpb25GcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDczMGYzMzI1MWRkMDI3NDQwNGFkZWY4ZjZmM2Zi
NmUwOWNkNmZlMjkuLjVhZDc5ZTBkMTZhOTUzMmI4MWM4YjVhZjgwYWFjYWNlNTk4NjlkMWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRp
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKQEAgLTE3MSwxNCArMTcxLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCB3aWxs
RGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZv
aWQgd2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFdmVudCYsIGNvbnN0
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZl
bnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhG
cmFtZSosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlz
cGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9p
ZCBldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxFdmFsdWF0ZVNjcmlwdChGcmFtZSYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGlu
ZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVT
Y3JpcHQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKLSAgICBzdGF0aWMgdm9p
ZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0YXRpYyB2b2lk
IGRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHRpbWVySWQsIGJvb2wg
b25lU2hvdCk7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYpOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxMYXlvdXQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRM
YXlvdXQoRnJhbWUmLCBSZW5kZXJPYmplY3QmKTsKQEAgLTM5NCw3ICszOTQsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyBib29sIGlzRXZlbnRMaXN0ZW5lckRpc2FibGVkSW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2
ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEaXNwYXRj
aEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9jdW1lbnQmLCBjb25zdCBFdmVudCYp
OwogICAgIHN0YXRpYyB2b2lkIHdpbGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYsIEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKLSAgICBzdGF0aWMg
dm9pZCBkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIHN0YXRp
YyB2b2lkIGRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnQmLCBj
b25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3Bh
dGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBFdmVudCYpOwogICAgIHN0
YXRpYyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3Bh
dGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IEV2ZW50Jik7
CkBAIC00MDIsNyArNDAyLDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdm9pZCB3aWxsRXZhbHVh
dGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYsIGNvbnN0IFN0cmluZyYg
dXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAg
IHN0YXRpYyB2b2lkIHdpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBpbnQg
dGltZXJJZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3Rh
dGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVy
SWQsIGJvb2wgb25lU2hvdCk7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52YWxpZGF0ZUxheW91dElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExh
eW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQg
ZGlkTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgUmVuZGVyT2JqZWN0Jik7CkBAIC04
OTIsMTEgKzg5MiwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjbwogICAgICAgICByZXR1cm4g
d2lsbEhhbmRsZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXZlbnQsIGxpc3RlbmVy
KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoraW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjb250ZXh0LCBFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiBs
aXN0ZW5lcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAg
ICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1l
bnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICByZXR1cm4gZGlkSGFuZGxl
RXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAgICAgICAgcmV0dXJuIGRpZEhhbmRs
ZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXZlbnQsIGxpc3RlbmVyKTsKIH0KIAog
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRGlzcGF0Y2hFdmVudE9u
V2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRXZlbnQmIGV2ZW50LCBET01XaW5kb3cmIHdpbmRv
dykKQEAgLTk0NiwxMSArOTQ2LDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6d2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250CiAgICAgICAg
IHdpbGxGaXJlVGltZXJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lcklkLCBvbmVTaG90
LCBjb250ZXh0KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK2lubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmIGNvbnRleHQsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QpCiB7CiAgICAgRkFTVF9S
RVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKGF1dG8qIGluc3RydW1lbnRp
bmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAg
ICAgZGlkRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIGRpZEZp
cmVUaW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVySWQsIG9uZVNob3QpOwogfQog
CiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEludmFsaWRhdGVMYXlv
dXQoRnJhbWUmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNj
cmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAxN2E2NmYxMGMxYTIyNjFhZjFkOGQxZTdlYWJhMmU1
OGExOWUyNGRhLi4wNWZlZmJjYmVjNmQ1NjI0NmU3MjhmNjE5MDU3Zjg3NjY5MTY2NzIwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNw
cApAQCAtNTQsMTggKzU0LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1c2luZyBuYW1lc3Bh
Y2UgSW5zcGVjdG9yOwogCiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlcihQYWdlJiBwYWdlKQotICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoV2ViQ29yZTo6Y29tbW9u
Vk0oKSkKKyAgICA6IERlYnVnZ2VyKFdlYkNvcmU6OmNvbW1vblZNKCkpCiAgICAgLCBtX3BhZ2Uo
cGFnZSkKIHsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2Vy
KCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjphdHRhY2hEZWJ1Z2dlcigpOworCiAgICAgbV9wYWdl
LnNldERlYnVnZ2VyKHRoaXMpOwogfQogCiB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0
YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogeworICAgIEpTQzo6RGVidWdnZXI6
OmRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOworCiAgICAgbV9wYWdlLnNldERlYnVn
Z2VyKG51bGxwdHIpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoKTsKQEAgLTc3LDE4ICs4MSwyNCBAQCB2b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKQogICAgIERlYnVnZ2VyOjpyZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogfQogCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
ZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqKQordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZFBhdXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CisgICAgSlNDOjpEZWJ1Z2dl
cjo6ZGlkUGF1c2UoZ2xvYmFsT2JqZWN0KTsKKwogICAgIHNldEphdmFTY3JpcHRQYXVzZWQobV9w
YWdlLmdyb3VwKCksIHRydWUpOwogfQogCi12b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlk
Q29udGludWUoSlNHbG9iYWxPYmplY3QqKQordm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CisgICAgSlNDOjpEZWJ1
Z2dlcjo6ZGlkQ29udGludWUoZ2xvYmFsT2JqZWN0KTsKKwogICAgIHNldEphdmFTY3JpcHRQYXVz
ZWQobV9wYWdlLmdyb3VwKCksIGZhbHNlKTsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpydW5F
dmVudExvb3BXaGlsZVBhdXNlZCgpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAv
LyBPbiBpT1MsIHJ1bm5pbmcgYW4gRXZlbnRMb29wIGNhdXNlcyB1cyB0byBydW4gYSBuZXN0ZWQg
V2ViUnVuTG9vcC4KICAgICAvLyBTaW5jZSB0aGUgV2ViVGhyZWFkIGlzIGF1dG9yZWxlYXNlZCBh
dCB0aGUgZW5kIG9mIHJ1biBsb29wIGl0ZXJhdGlvbnMKQEAgLTExNSw3ICsxMjUsNyBAQCB2b2lk
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRlcm5hbCgp
CiAKICAgICBtX3BhZ2UuaW5jcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCk7CiAKLSAgICB3aGls
ZSAoIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cykgeworICAgIHdoaWxlICghZG9uZVBy
b2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKSB7CiAgICAgICAgIGlmICghcGxhdGZvcm1TaG91bGRD
b250aW51ZVJ1bm5pbmdFdmVudExvb3BXaGlsZVBhdXNlZCgpKQogICAgICAgICAgICAgYnJlYWs7
CiAgICAgfQpAQCAtMTI1LDExICsxMzUsMTMgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKQogCiBib29sIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6aXNDb250ZW50U2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBzdGF0ZSkgY29uc3QKIHsK
LSAgICByZXR1cm4gJmN1cnJlbnRXb3JsZCgqc3RhdGUpICE9ICZtYWluVGhyZWFkTm9ybWFsV29y
bGQoKTsKKyAgICByZXR1cm4gJmN1cnJlbnRXb3JsZCgqc3RhdGUpICE9ICZtYWluVGhyZWFkTm9y
bWFsV29ybGQoKSB8fCBKU0M6OkRlYnVnZ2VyOjppc0NvbnRlbnRTY3JpcHQoc3RhdGUpOwogfQog
CiB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVwb3J0RXhjZXB0aW9uKEpTR2xvYmFsT2Jq
ZWN0KiBzdGF0ZSwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikgY29uc3QKIHsKKyAgICBKU0M6
OkRlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlvbik7CisKICAgICBXZWJD
b3JlOjpyZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCAyMmQ4Y2Y3
ODlkOTViOGQ3OGZlYWUzYTQ5YTBhMGU1ZGFjMzlmZTA2Li5mZjM4MTlkYjQ4NWQ0MzA3NDZkYzZm
YzlkYWE1NWNkYTZhYTcyY2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZVNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0yNiw3ICsyNiw3IEBACiAKICNwcmFnbWEgb25jZQog
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0RGVidWdTZXJ2ZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTM0LDcgKzM0LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQYWdlOwogY2xhc3MgUGFnZUdyb3Vw
OwogCi1jbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9y
OjpTY3JpcHREZWJ1Z1NlcnZlciB7CitjbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwg
OiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUGFnZVNj
cmlwdERlYnVnU2VydmVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
QEAgLTQ0LDE0ICs0NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBv
dmVycmlkZTsKLSAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkg
b3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVy
cmlkZTsKLSAgICB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlk
ZTsKLSAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgYm9v
bCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOwot
ICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2Vw
dGlvbiopIGNvbnN0IG92ZXJyaWRlOworICAgIC8vIEpTQzo6RGVidWdnZXIKKyAgICB2b2lkIGF0
dGFjaERlYnVnZ2VyKCkgZmluYWw7CisgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVp
bmdEZXN0cm95ZWQpIGZpbmFsOworICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVj
dCopIGZpbmFsOworICAgIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopIGZp
bmFsOworICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKKyAgICBib29s
IGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgZmluYWw7CisgICAg
dm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9u
KikgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJu
YWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRG
YWN0b3J5LmNwcAppbmRleCBjYzQ1YjFmNGMyYjExMjZkYWExZTIwZGUxNmI4N2EyYzY2Yjc5MmNj
Li5lZWRlZDhmNDgyOWNlODQzMDY0MzMyMDc3ZDgzMDJjMzFkZGE5YjNmIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcApAQCAtMzYs
NyArMzYsNiBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgogI2luY2x1ZGUgIkpTRXhlY1N0YXRl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yUHJvdG9jb2xPYmplY3RzLmg+
Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QnJlYWtwb2ludC5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KIApAQCAtNzMsMTAgKzcyLDEwIEBAIFJlZjxK
U09OOjpPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlQ29uc29sZVByb2ZpbGVE
YXRhKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gZGF0YTsKIH0KIAotUmVmPEpTT046Ok9iamVj
dD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoY29uc3QgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9uLCB1bnNpZ25lZCBzYW1wbGVJZCkKK1JlZjxKU09O
OjpPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKEpT
Qzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklELCB1bnNpZ25lZCBzYW1wbGVJZCkKIHsKICAg
ICBSZWY8SlNPTjo6T2JqZWN0PiBkYXRhID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBk
YXRhLT5zZXRJbnRlZ2VyKCJwcm9iZUlkIl9zLCBhY3Rpb24uaWRlbnRpZmllcik7CisgICAgZGF0
YS0+c2V0SW50ZWdlcigicHJvYmVJZCJfcywgYWN0aW9uSUQpOwogICAgIGRhdGEtPnNldEludGVn
ZXIoInNhbXBsZUlkIl9zLCBzYW1wbGVJZCk7CiAgICAgcmV0dXJuIGRhdGE7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKaW5kZXggNTMw
NzU1ODc1OWEzODM4NWJiOGI4NWU5YjljZGQxNzBiMTNkODI4MS4uNDFiNmRkNjQ1MDlkMDRmNzYx
ZmFjMzk2NGY3ODdkMzI4OTRlMTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtMzEsMTUgKzMxLDEyIEBACiAgCiAjcHJhZ21h
IG9uY2UKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyUHJpbWl0aXZlcy5oPgog
I2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNp
bmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgog
Ci1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLXN0cnVjdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uOwot
fQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50OwpAQCAtNTEsNyArNDgsNyBA
QCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlRnVuY3Rpb25D
YWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3JpcHRMaW5lLCBpbnQgc2Ny
aXB0Q29sdW1uKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlQ29uc29sZVBy
b2ZpbGVEYXRhKGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHN0YXRpYyBSZWY8SlNPTjo6T2Jq
ZWN0PiBjcmVhdGVQcm9iZVNhbXBsZURhdGEoY29uc3QgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3Bv
aW50QWN0aW9uJiwgdW5zaWduZWQgc2FtcGxlSWQpOworICAgIHN0YXRpYyBSZWY8SlNPTjo6T2Jq
ZWN0PiBjcmVhdGVQcm9iZVNhbXBsZURhdGEoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQsIHVuc2ln
bmVkIHNhbXBsZUlkKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlRXZlbnRE
aXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4g
Y3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CiAgICAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVySWQsIFNlY29uZHMgdGlt
ZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDRhNjkxOTY5N2NiYzJmZThkOTM5
MTJjNTE3ZGVlZjVhMjQ4ODlkZTYuLjM2MWRiMTZjNGQ0YTRlMTkzOTQ0OTc4MDllNGJmMWMzYmM5
YjRlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmNwcApAQCAtNDQsMTggKzQ0LDIyIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpX
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSYgY29udGV4dCkKLSAgICA6
IFNjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuc2NyaXB0KCktPnZtKCkpCisgICAgOiBEZWJ1Z2dl
cihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQogICAgICwgbV93b3JrZXJHbG9iYWxTY29wZShjb250
ZXh0KQogewogfQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dl
cigpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKKwogICAgIG1fd29y
a2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmF0dGFjaERlYnVnZ2VyKHRoaXMpOwogfQogCiB2b2lk
IFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0
cm95ZWQpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ry
b3llZCk7CisKICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKSkKICAgICAgICAg
bV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNoRGVidWdnZXIodGhpcyk7CiAgICAg
aWYgKCFpc0JlaW5nRGVzdHJveWVkKQpAQCAtNzAsMTYgKzc0LDIwIEBAIHZvaWQgV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkKIAogdm9pZCBXb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQogeworICAgIEpTQzo6
RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKICAgICBUaW1lckJhc2U6OmZp
cmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCiAgICAgTWVzc2FnZVF1ZXVlV2FpdFJlc3Vs
dCByZXN1bHQ7CiAgICAgZG8gewogICAgICAgICByZXN1bHQgPSBtX3dvcmtlckdsb2JhbFNjb3Bl
LnRocmVhZCgpLnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9kZShtX3dvcmtlckdsb2JhbFNjb3Bl
KTsKLSAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhbV9k
b25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKTsKKyAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVz
c2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKTsK
IH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVwb3J0RXhjZXB0aW9uKEpTQzo6
SlNHbG9iYWxPYmplY3QqIGV4ZWMsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pIGNvbnN0CiB7
CisgICAgSlNDOjpEZWJ1Z2dlcjo6cmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CisK
ICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaApp
bmRleCBlYTcxZjFkZTg4ZDI2MDNlNTY2YjBkMDk0MmIzMmVhZmE2NGJiYTkwLi5jOGJhMzJlNDM3
Y2Q4ZmYzY2VhMzJiZjdjODQwNjdjOTlkNThjYjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMzEsMzAgKzMxLDI3IEBA
CiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0RGVidWdT
ZXJ2ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogCi1jbGFzcyBXb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2Vy
dmVyIHsKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEpTQzo6
RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdvcmtlclNjcmlwdERlYnVnU2Vy
dmVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKICAgICBXb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSYpOwogICAgIH5Xb3JrZXJTY3JpcHRE
ZWJ1Z1NlcnZlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKIAotICAgIHZvaWQgcmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGF0dGFjaERlYnVn
Z2VyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0
cm95ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0
Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0
Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIG92ZXJy
aWRlOwotICAgIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25z
dCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IG92ZXJyaWRlOworICAg
IC8vIEpTQzo6RGVidWdnZXIKKyAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgZmluYWw7CisgICAg
dm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIGZpbmFsOworICAgIHZv
aWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBmaW5hbDsKKyAgICB2b2lkIHJ1bkV2ZW50TG9v
cFdoaWxlUGF1c2VkKCkgZmluYWw7CisgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0ds
b2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7CiAKICAgICBXb3JrZXJH
bG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDM0ZGE5
NTgwYWU0YTg2ZjQ5YmM4OWI1Njc4ZWE2M2MxOTk4Y2YzZDYuLjE1ZjY2ZDFiZTM1YjgzM2VjNmEz
ZjYyZTRjMDBhOTZmNzA3YzM5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMTIsNiArMTEyLDcgQEAKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3RvcnkuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVz
Lmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3QuaD4KICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KQEAgLTkzMSwxMyArOTMyLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBu
CiAgICAgYXV0byBhZGRMaXN0ZW5lciA9IFsmXSAoUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxp
c3RlbmVyLCBjb25zdCBFdmVudExpc3RlbmVySW5mbyYgaW5mbykgewogICAgICAgICBpbnQgaWRl
bnRpZmllciA9IDA7CiAgICAgICAgIGJvb2wgZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgYm9v
bCBoYXNCcmVha3BvaW50ID0gZmFsc2U7CisgICAgICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+
IGJyZWFrcG9pbnQ7CiAKICAgICAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JFdmVudExpc3RlbmVy
IDogbV9ldmVudExpc3RlbmVyRW50cmllcy52YWx1ZXMoKSkgewogICAgICAgICAgICAgaWYgKGlu
c3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcygqaW5mby5ldmVudFRhcmdldCwgaW5mby5ldmVu
dFR5cGUsIGxpc3RlbmVyLmNhbGxiYWNrKCksIGxpc3RlbmVyLnVzZUNhcHR1cmUoKSkpIHsKICAg
ICAgICAgICAgICAgICBpZGVudGlmaWVyID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5pZGVudGlm
aWVyOwogICAgICAgICAgICAgICAgIGRpc2FibGVkID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5k
aXNhYmxlZDsKLSAgICAgICAgICAgICAgICBoYXNCcmVha3BvaW50ID0gaW5zcGVjdG9yRXZlbnRM
aXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBpbnNw
ZWN0b3JFdmVudExpc3RlbmVyLmJyZWFrcG9pbnQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk0NywxMiArOTQ4LDEyIEBAIHZvaWQgSW5zcGVj
dG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBuCiAKICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBpbnNwZWN0b3JFdmVudExp
c3RlbmVyLmlkZW50aWZpZXI7CiAgICAgICAgICAgICBkaXNhYmxlZCA9IGluc3BlY3RvckV2ZW50
TGlzdGVuZXIuZGlzYWJsZWQ7Ci0gICAgICAgICAgICBoYXNCcmVha3BvaW50ID0gaW5zcGVjdG9y
RXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAgICAgYnJlYWtwb2ludCA9IGlu
c3BlY3RvckV2ZW50TGlzdGVuZXIuYnJlYWtwb2ludDsKIAogICAgICAgICAgICAgbV9ldmVudExp
c3RlbmVyRW50cmllcy5hZGQoaWRlbnRpZmllciwgaW5zcGVjdG9yRXZlbnRMaXN0ZW5lcik7CiAg
ICAgICAgIH0KIAotICAgICAgICBsaXN0ZW5lcnNBcnJheS0+YWRkSXRlbShidWlsZE9iamVjdEZv
ckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlkZW50aWZpZXIsICppbmZvLmV2ZW50VGFyZ2V0LCBp
bmZvLmV2ZW50VHlwZSwgZGlzYWJsZWQsIGhhc0JyZWFrcG9pbnQpKTsKKyAgICAgICAgbGlzdGVu
ZXJzQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBp
ZGVudGlmaWVyLCAqaW5mby5ldmVudFRhcmdldCwgaW5mby5ldmVudFR5cGUsIGRpc2FibGVkLCBi
cmVha3BvaW50KSk7CiAgICAgfTsKIAogICAgIC8vIEdldCBDYXB0dXJpbmcgTGlzdGVuZXJzIChp
biB0aGlzIG9yZGVyKQpAQCAtOTg4LDcgKzk4OSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OnNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBl
CiAgICAgaXQtPnZhbHVlLmRpc2FibGVkID0gZGlzYWJsZWQ7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IGV2ZW50TGlzdGVuZXJJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNl
dEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50
IGV2ZW50TGlzdGVuZXJJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsK
ICAgICBhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVyRW50cmllcy5maW5kKGV2ZW50TGlzdGVuZXJJ
ZCk7CiAgICAgaWYgKGl0ID09IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuZW5kKCkpIHsKQEAgLTk5
Niw3ICs5OTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBpdC0+dmFsdWUuaGFzQnJlYWtwb2ludCA9IHRydWU7CisgICAgaXQtPnZhbHVl
LmJyZWFrcG9pbnQgPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRG
cm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpyZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBldmVudExpc3RlbmVySWQpCkBAIC0xMDA3LDcgKzEwMDgsNyBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
cihFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
aXQtPnZhbHVlLmhhc0JyZWFrcG9pbnQgPSBmYWxzZTsKKyAgICBpdC0+dmFsdWUuYnJlYWtwb2lu
dCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVz
PiYgYXhQcm9wZXJ0aWVzKQpAQCAtMTc1MSw3ICsxNzUyLDcgQEAgUmVmUHRyPEpTT046OkFycmF5
T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkQXIKICAgICByZXR1cm4gcHNldWRvRWxlbWVudHM7CiB9CiAKLVJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0
LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGJvb2wgaGFzQnJl
YWtwb2ludCkKK1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IElu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBpbnQgaWRlbnRpZmll
ciwgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IGJvb2wgZGlzYWJsZWQsIGNvbnN0IFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiBicmVha3BvaW50
KQogewogICAgIFJlZjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyID0gcmVnaXN0ZXJlZEV2
ZW50TGlzdGVuZXIuY2FsbGJhY2soKTsKIApAQCAtMTgzOSw4ICsxODQwLDggQEAgUmVmPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1
aWxkT2JqZWN0Rm9yRXYKICAgICAgICAgdmFsdWUtPnNldE9uY2UodHJ1ZSk7CiAgICAgaWYgKGRp
c2FibGVkKQogICAgICAgICB2YWx1ZS0+c2V0RGlzYWJsZWQoZGlzYWJsZWQpOwotICAgIGlmICho
YXNCcmVha3BvaW50KQotICAgICAgICB2YWx1ZS0+c2V0SGFzQnJlYWtwb2ludChoYXNCcmVha3Bv
aW50KTsKKyAgICBpZiAoYnJlYWtwb2ludCkKKyAgICAgICAgdmFsdWUtPnNldEhhc0JyZWFrcG9p
bnQoYnJlYWtwb2ludCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQogCkBAIC0yNTQ4LDEzICsyNTQ5
LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNo
KGNvbnN0IEV2ZW50JiBldmVudCkKICAgICBtX2Rpc3BhdGNoZWRFdmVudHMucmVtb3ZlKCZldmVu
dCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0JyZWFrcG9pbnRGb3JFdmVudExp
c3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwg
RXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkKK1JlZlB0cjxKU0M6OkJyZWFr
cG9pbnQ+IEluc3BlY3RvckRPTUFnZW50OjpicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVu
dFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVu
ZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCiB7CiAgICAgZm9yIChhdXRvJiBpbnNwZWN0b3JF
dmVudExpc3RlbmVyIDogbV9ldmVudExpc3RlbmVyRW50cmllcy52YWx1ZXMoKSkgewogICAgICAg
ICBpZiAoaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5tYXRjaGVzKHRhcmdldCwgZXZlbnRUeXBlLCBs
aXN0ZW5lciwgY2FwdHVyZSkpCi0gICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yRXZlbnRMaXN0
ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckV2ZW50TGlz
dGVuZXIuYnJlYWtwb2ludDsKICAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBu
dWxscHRyOwogfQogCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlkRm9yRXZlbnRMaXN0ZW5lcihF
dmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggN2U2ZDNmNjhkM2Q2MGNh
ZjNkM2EwMWFjYzM4MGEyNjA1ZjQyZDZlMy4uM2UzNzcwN2FmZWNmNzhmNDIxOGFhODMwMWUxZWEy
ZDQxYzcyNTE3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01BZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV2ZW50VGFy
Z2V0LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiVGlt
ZXIuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CkBAIC0xMjUsNyArMTI2LDcgQEAgcHVibGljOgogI2VuZGlmCiAgICAg
dm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBS
ZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVu
ZXI+PiYgbGlzdGVuZXJzQXJyYXkpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0RXZlbnRMaXN0ZW5l
ckRpc2FibGVkKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJZCwgYm9vbCBkaXNhYmxl
ZCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJv
clN0cmluZyYsIGludCBldmVudExpc3RlbmVySWQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklk
LCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMpIGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklk
KSBvdmVycmlkZTsKICAgICB2b2lkIGdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShF
cnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKICAgICB2
b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25z
dCBKU09OOjpBcnJheSogbm9kZUlkcywgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgU3RyaW5n
KiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCkgb3ZlcnJpZGU7CkBAIC0yMDUsNyArMjA2LDcg
QEAgcHVibGljOgogICAgIEVsZW1lbnQqIGFzc2VydEVsZW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkKTsKICAgICBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcmLCBpbnQg
bm9kZUlkKTsKIAotICAgIGJvb2wgaGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZlbnRU
YXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29s
IGNhcHR1cmUpOworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IGJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVu
dExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBpbnQgaWRGb3JFdmVudExpc3RlbmVyKEV2
ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwg
Ym9vbCBjYXB0dXJlKTsKIAogcHJpdmF0ZToKQEAgLTIzMSw3ICsyMzIsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxKU09OOjpBcnJheU9mPFN0cmluZz4+IGJ1aWxkQXJyYXlGb3JFbGVtZW50QXR0cmli
dXRlcyhFbGVtZW50Kik7CiAgICAgUmVmPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvckNvbnRhaW5lckNoaWxkcmVuKE5vZGUqIGNvbnRh
aW5lciwgaW50IGRlcHRoLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwogICAgIFJlZlB0cjxKU09O
OjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JQ
c2V1ZG9FbGVtZW50cyhjb25zdCBFbGVtZW50JiwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKLSAg
ICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBidWlsZE9iamVj
dEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImLCBpbnQgaWRl
bnRpZmllciwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wg
ZGlzYWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCk7CisgICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0
IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0Jiwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBjb25zdCBSZWZQdHI8
SlNDOjpCcmVha3BvaW50PiYpOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiBidWlsZE9iamVjdEZvckFjY2Vzc2liaWxpdHlQcm9w
ZXJ0aWVzKE5vZGUqKTsKICAgICB2b2lkIHByb2Nlc3NBY2Nlc3NpYmlsaXR5Q2hpbGRyZW4oQVhD
b3JlT2JqZWN0JiwgSlNPTjo6QXJyYXlPZjxpbnQ+Jik7CiAgICAgCkBAIC0yOTAsNyArMjkxLDcg
QEAgcHJpdmF0ZToKICAgICAgICAgQXRvbVN0cmluZyBldmVudFR5cGU7CiAgICAgICAgIGJvb2wg
dXNlQ2FwdHVyZSB7IGZhbHNlIH07CiAgICAgICAgIGJvb2wgZGlzYWJsZWQgeyBmYWxzZSB9Owot
ICAgICAgICBib29sIGhhc0JyZWFrcG9pbnQgeyBmYWxzZSB9OworICAgICAgICBSZWZQdHI8SlND
OjpCcmVha3BvaW50PiBicmVha3BvaW50OwogCiAgICAgICAgIEluc3BlY3RvckV2ZW50TGlzdGVu
ZXIoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMzUyYzEzMzM3NjQ2OWFi
ZWJhZGQxOTYxMjM2Mzg4OTZkMzBmYzQzMS4uZmIxMzhhMmUyZmZmMmUyMTUzMWFjMTg0ZjFlMWNj
YTJlNWU1N2E4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC03NiwxMCArNzYsMTEg
QEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBtX2luc3Ry
dW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZERPTURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiAKICAg
ICBtX2xpc3RlbmVyQnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX3BhdXNlT25BbGxJbnRlcnZh
bHNCcmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3Bv
aW50ID0gbnVsbHB0cjsKKyAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBudWxs
cHRyOworCiAgICAgbV91cmxCcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1fcGF1c2VPbkFsbElu
dGVydmFsc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVk
ID0gZmFsc2U7Ci0gICAgbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkID0gZmFsc2U7CiAgICAg
bV9wYXVzZU9uQWxsVVJMc0VuYWJsZWQgPSBmYWxzZTsKIH0KIApAQCAtMTExLDcgKzExMiwyMiBA
QCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2NhcmRBZ2VudCgpCiAgICAgbV9k
ZWJ1Z2dlckFnZW50ID0gbnVsbHB0cjsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJyZWFrcG9pbnRUeXBlU3RyaW5nLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSkKK3Zv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKCkKK3sKKyAg
ICBmb3IgKGF1dG8mIGJyZWFrcG9pbnQgOiBtX2xpc3RlbmVyQnJlYWtwb2ludHMudmFsdWVzKCkp
CisgICAgICAgIGJyZWFrcG9pbnQtPnJlc2V0SGl0Q291bnQoKTsKKworICAgIGlmIChtX3BhdXNl
T25BbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNC
cmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7CisKKyAgICBpZiAobV9wYXVzZU9uQWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCkKKyAgICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludC0+
cmVzZXRIaXRDb3VudCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2lu
dCkKKyAgICAgICAgbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50LT5yZXNldEhpdENvdW50
KCk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicmVha3BvaW50VHlw
ZVN0cmluZywgY29uc3QgU3RyaW5nKiBldmVudE5hbWUsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0
aW9uc1BheWxvYWQpCiB7CiAgICAgaWYgKGJyZWFrcG9pbnRUeXBlU3RyaW5nLmlzRW1wdHkoKSkg
ewogICAgICAgICBlcnJvclN0cmluZyA9ICJicmVha3BvaW50VHlwZSBpcyBlbXB0eSJfczsKQEAg
LTEyNCwxMCArMTQwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZl
bnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uc1BheWxv
YWQpOworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGV2
ZW50TmFtZSAmJiAhZXZlbnROYW1lLT5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGJyZWFrcG9p
bnRUeXBlLnZhbHVlKCkgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50
QnJlYWtwb2ludFR5cGU6Okxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBpZiAoIW1fbGlzdGVuZXJC
cmVha3BvaW50cy5hZGQoKmV2ZW50TmFtZSkpCi0gICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiQnJlYWtwb2ludCB3aXRoIGV2ZW50TmFtZSBhbHJlYWR5IGV4aXN0cyJfczsKKyAgICAgICAg
ICAgIG1fbGlzdGVuZXJCcmVha3BvaW50cy5zZXQoKmV2ZW50TmFtZSwgYnJlYWtwb2ludC5yZWxl
YXNlTm9uTnVsbCgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMzcs
MjUgKzE1NiwxOSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJl
YWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogCiAgICAgc3dpdGNoIChicmVh
a3BvaW50VHlwZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01E
ZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHNl
dEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgdHJ1ZSk7CisgICAgICAgIHNl
dEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgV1RGTW92ZShicmVha3BvaW50
KSk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01E
ZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6SW50ZXJ2YWw6Ci0gICAgICAgIGlmIChtX3Bh
dXNlT25BbGxJbnRlcnZhbHNFbmFibGVkKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJl
YWtwb2ludCBmb3IgSW50ZXJ2YWwgYWxyZWFkeSBleGlzdHMiX3M7Ci0gICAgICAgIG1fcGF1c2VP
bkFsbEludGVydmFsc0VuYWJsZWQgPSB0cnVlOworICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZh
bHNCcmVha3BvaW50ID0gV1RGTW92ZShicmVha3BvaW50KTsKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRU
eXBlOjpMaXN0ZW5lcjoKLSAgICAgICAgaWYgKG1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQp
Ci0gICAgICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBMaXN0ZW5lciBhbHJl
YWR5IGV4aXN0cyJfczsKLSAgICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IHRy
dWU7CisgICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJy
ZWFrcG9pbnQpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OlRpbWVvdXQ6Ci0gICAgICAgIGlm
IChtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQpCi0gICAgICAgICAgICBlcnJvclN0cmluZyA9
ICJCcmVha3BvaW50IGZvciBUaW1lb3V0IGFscmVhZHkgZXhpc3RzIl9zOwotICAgICAgICBtX3Bh
dXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSB0cnVlOworICAgICAgICBtX3BhdXNlT25BbGxUaW1l
b3V0c0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOwogICAgICAgICBicmVhazsKICAg
ICB9CiB9CkBAIC0xODYsMzQgKzE5OSwzMSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAKICAg
ICBzd2l0Y2ggKGJyZWFrcG9pbnRUeXBlLnZhbHVlKCkpIHsKICAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpBbmltYXRpb25GcmFt
ZToKLSAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KGVycm9yU3RyaW5nLCBmYWxz
ZSk7CisgICAgICAgIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgbnVs
bHB0cik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpE
T01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6SW50ZXJ2YWw6Ci0gICAgICAgIGlmICgh
bV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCkKKyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxJ
bnRlcnZhbHNCcmVha3BvaW50KQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2lu
dCBmb3IgSW50ZXJ2YWxzIG1pc3NpbmciX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFsbEludGVydmFs
c0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dCA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlzdGVuZXI6Ci0gICAgICAg
IGlmICghbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCkKKyAgICAgICAgaWYgKCFtX3BhdXNl
T25BbGxMaXN0ZW5lcnNCcmVha3BvaW50KQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJl
YWtwb2ludCBmb3IgTGlzdGVuZXJzIG1pc3NpbmciX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFsbExp
c3RlbmVyc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJl
YWtwb2ludCA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6VGltZW91dDoKLSAg
ICAgICAgaWYgKCFtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQpCisgICAgICAgIGlmICghbV9w
YXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50KQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAi
QnJlYWtwb2ludCBmb3IgVGltZW91dHMgbWlzc2luZyJfczsKLSAgICAgICAgbV9wYXVzZU9uQWxs
VGltZW91dHNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJl
YWtwb2ludCA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0g
ICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIGF1dG8gc3RhdGUgPSBldmVudC50YXJnZXQoKS0+c2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpLT5leGVjU3RhdGUoKTsKICAgICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc3RhdGUpOwogICAgIGlmIChpbmpl
Y3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCkBAIC0yMjUsMTIgKzIzNSwyMCBAQCB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudChFdmVudCYgZXZlbnQsIGNvbnN0
IFJlZ2lzdGVyZWRFdgogICAgICAgICBpbmplY3RlZFNjcmlwdC5zZXRFdmVudFZhbHVlKHRvSlMo
c3RhdGUsIGRlcHJlY2F0ZWRHbG9iYWxPYmplY3RGb3JQcm90b3R5cGUoc3RhdGUpLCBldmVudCkp
OwogICAgIH0KIAorICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgp
KQorICAgICAgICByZXR1cm47CisKICAgICBhdXRvKiBkb21BZ2VudCA9IG1faW5zdHJ1bWVudGlu
Z0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsKIAotICAgIGJvb2wgc2hvdWxkUGF1c2UgPSBt
X2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50RW5hYmxlZCgpIHx8IG1fcGF1c2VP
bkFsbExpc3RlbmVyc0VuYWJsZWQgfHwgbV9saXN0ZW5lckJyZWFrcG9pbnRzLmNvbnRhaW5zKGV2
ZW50LnR5cGUoKSk7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSAmJiBkb21BZ2VudCkKLSAgICAgICAg
c2hvdWxkUGF1c2UgPSBkb21BZ2VudC0+aGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2
ZW50LmN1cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ci5jYWxsYmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOwotICAg
IGlmICghc2hvdWxkUGF1c2UpCisgICAgYXV0byBicmVha3BvaW50ID0gbV9wYXVzZU9uQWxsTGlz
dGVuZXJzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpIHsKKyAgICAgICAgYXV0byBp
dCA9IG1fbGlzdGVuZXJCcmVha3BvaW50cy5maW5kKGV2ZW50LnR5cGUoKSk7CisgICAgICAgIGlm
IChpdCAhPSBtX2xpc3RlbmVyQnJlYWtwb2ludHMuZW5kKCkpCisgICAgICAgICAgICBicmVha3Bv
aW50ID0gaXQtPnZhbHVlLmNvcHlSZWYoKTsKKyAgICB9CisgICAgaWYgKCFicmVha3BvaW50ICYm
IGRvbUFnZW50KQorICAgICAgICBicmVha3BvaW50ID0gZG9tQWdlbnQtPmJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNl
Q2FwdHVyZSgpKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAogICAg
IFJlZjxKU09OOjpPYmplY3Q+IGV2ZW50RGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7CkBA
IC0yNDEsMTIgKzI1OSwzNiBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxI
YW5kbGVFdmVudChFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdgogICAgICAgICAgICAg
ZXZlbnREYXRhLT5zZXRJbnRlZ2VyKCJldmVudExpc3RlbmVySWQiX3MsIGV2ZW50TGlzdGVuZXJJ
ZCk7CiAgICAgfQogCi0gICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3Rh
dGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6TGlz
dGVuZXIsIFdURk1vdmUoZXZlbnREYXRhKSk7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVs
ZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQsIEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6TGlzdGVuZXIsIFdURk1vdmUoZXZlbnREYXRh
KSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSGFuZGxlRXZlbnQo
KQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRIYW5kbGVFdmVudChFdmVudCYg
ZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lcikKIHsKLSAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5jbGVhckV2ZW50VmFsdWUoKTsK
KyAgICBhdXRvIHN0YXRlID0gZXZlbnQudGFyZ2V0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+ZXhlY1N0YXRlKCk7CisgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKKyAgICBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICB7CisgICAgICAgIEpTQzo6
SlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOworCisgICAgICAgIGluamVjdGVkU2NyaXB0LmNsZWFy
RXZlbnRWYWx1ZSgpOworICAgIH0KKworICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3Bv
aW50c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBkb21BZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKTsKKworICAgIGF1dG8gYnJl
YWtwb2ludCA9IG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVh
a3BvaW50KQorICAgICAgICBicmVha3BvaW50ID0gbV9saXN0ZW5lckJyZWFrcG9pbnRzLmdldChl
dmVudC50eXBlKCkpOworICAgIGlmICghYnJlYWtwb2ludCAmJiBkb21BZ2VudCkKKyAgICAgICAg
YnJlYWtwb2ludCA9IGRvbUFnZW50LT5icmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQu
Y3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNh
bGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CisgICAgaWYg
KCFicmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmNh
bmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQpOwogfQogCiB2b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KQpAQCAt
MjU0LDEyICsyOTYsMjQgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmly
ZVRpbWVyKGJvb2wgb25lU2hvdCkKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2lu
dHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRQYXVzZSA9IG1f
ZGVidWdnZXJBZ2VudC0+cGF1c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwgKG9uZVNob3Qg
PyBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgOiBtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFi
bGVkKTsKLSAgICBpZiAoIXNob3VsZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG9uZVNo
b3QgPyBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQgOiBtX3BhdXNlT25BbGxJbnRlcnZh
bHNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byBicmVha1JlYXNvbiA9IG9uZVNob3QgPyBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OlRpbWVvdXQgOiBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkludGVydmFsOwotICAgIG1fZGVidWdnZXJBZ2VudC0+c2No
ZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChicmVha1JlYXNvbiwgbnVsbHB0cik7CisgICAgbV9k
ZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9p
bnQsIGJyZWFrUmVhc29uKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aWRGaXJlVGltZXIoYm9vbCBvbmVTaG90KQoreworICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5i
cmVha3BvaW50c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJyZWFrcG9p
bnQgPSBvbmVTaG90ID8gbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50IDogbV9wYXVzZU9u
QWxsSW50ZXJ2YWxzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJl
dHVybjsKKworICAgIG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtw
b2ludCgqYnJlYWtwb2ludCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
c2V0VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmlu
ZGV4IDAxZTNiZGNmMDA0YWU2NDBkZmE5NjNmZjlhNTRjMzVkMmFlY2QwNTIuLjlmNmU2MzhlMzNl
ZTAzMDk0OTllNjcyNjAyMWJkMGMwODE5NGU4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBA
IC0zMiwxMCArMzIsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2Vi
QWdlbnRCYXNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0pTT05WYWx1ZXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjQsNyArNjcsNyBA
QCBwdWJsaWM6CiAgICAgLy8gRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAg
ICB2b2lkIHNldFVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwg
Y29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVVSTEJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkgZmluYWw7Ci0gICAgdm9p
ZCBzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9p
bnRUeXBlLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSkgZmluYWw7CisgICAgdm9pZCBzZXRFdmVu
dEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBj
b25zdCBTdHJpbmcqIGV2ZW50TmFtZSwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5h
bDsKICAgICB2b2lkIHJlbW92ZUV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgYnJlYWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lKSBmaW5hbDsKIAog
ICAgIC8vIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyCkBAIC03MiwxOCArNzUsMjAg
QEAgcHVibGljOgogICAgIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpIG92ZXJyaWRlOwogCiAg
ICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIG1haW5GcmFt
ZU5hdmlnYXRlZCgpOwogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJp
bmcmIHVybCk7CiAgICAgdm9pZCB3aWxsRmV0Y2goY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZv
aWQgd2lsbEhhbmRsZUV2ZW50KEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIm
KTsKLSAgICB2b2lkIGRpZEhhbmRsZUV2ZW50KCk7CisgICAgdm9pZCBkaWRIYW5kbGVFdmVudChF
dmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAgdm9pZCB3aWxsRmly
ZVRpbWVyKGJvb2wgb25lU2hvdCk7CisgICAgdm9pZCBkaWRGaXJlVGltZXIoYm9vbCBvbmVTaG90
KTsKIAogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRD
b250ZXh0JiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVh
bCB2b2lkIGVuYWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKCk7CiAKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgYm9vbCBl
bmFibGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYpID0gMDsKIAogICAgIElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50IHsgbnVsbHB0
ciB9OwogCkBAIC05NCwxNCArOTksMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zcGVjdG9y
OjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAg
IEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdl
cjsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2xpc3RlbmVyQnJlYWtwb2ludHM7CisgICAgSGFz
aE1hcDxTdHJpbmcsIFJlZjxKU0M6OkJyZWFrcG9pbnQ+PiBtX2xpc3RlbmVyQnJlYWtwb2ludHM7
CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtw
b2ludDsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX3BhdXNlT25BbGxMaXN0ZW5lcnNC
cmVha3BvaW50OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbFRpbWVv
dXRzQnJlYWtwb2ludDsKIAogICAgIGVudW0gY2xhc3MgVVJMQnJlYWtwb2ludFR5cGUgeyBSZWd1
bGFyRXhwcmVzc2lvbiwgVGV4dCB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBVUkxCcmVha3BvaW50
VHlwZT4gbV91cmxCcmVha3BvaW50czsKLQotICAgIGJvb2wgbV9wYXVzZU9uQWxsSW50ZXJ2YWxz
RW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVk
IHsgZmFsc2UgfTsKLSAgICBib29sIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCB7IGZhbHNl
IH07CiAgICAgYm9vbCBtX3BhdXNlT25BbGxVUkxzRW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JU
aW1lbGluZUFnZW50LmNwcAppbmRleCAxNDBlMTU3OGM1ZjA5NmU0NDRlZDE0OTIwNzcxOGVlN2Y4
NjQ1NTI2Li4zMDFlZjk1MjU2NDliYTAwZGIyMjkzMzQ4NTI2MTczY2QxMTkyN2FjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudC5jcHAKQEAgLTUxLDkgKzUxLDkgQEAKICNpbmNsdWRlICJUaW1lbGluZVJlY29y
ZEZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXZWJE
ZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oPgotI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL1NjcmlwdEJyZWFrcG9pbnQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNo
Lmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxT
dGFja0RlcHRoKQogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFRyYWNraW5nVGltZWxp
bmVBZ2VudCh0aGlzKTsKIAotICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5h
ZGRMaXN0ZW5lcih0aGlzKTsKKyAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCku
YWRkT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV90cmFja2luZyA9IHRydWU7CiAKQEAgLTI0MSw3
ICsyNDEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAK
ICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdUaW1lbGluZUFnZW50KG51bGxw
dHIpOwogCi0gICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3Rl
bmVyKHRoaXMsIHRydWUpOworICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5y
ZW1vdmVPYnNlcnZlcigqdGhpcywgdHJ1ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBt
X2ZyYW1lU3RhcnRPYnNlcnZlciA9IG51bGxwdHI7CkBAIC02NjksMTEgKzY2OSw5IEBAIHZvaWQg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKQogICAgIGRp
ZENvbXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGU6Ok9ic2VydmVyQ2FsbGJh
Y2spOwogfQogCi0vLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0KLXZvaWQgSW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGlj
YWxHbG9iYWxPYmplY3QsIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYg
YWN0aW9uLCB1bnNpZ25lZCAvKmJhdGNoSWQqLywgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNW
YWx1ZSkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2Jl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6QnJlYWtwb2lu
dEFjdGlvbklEIGFjdGlvbklELCB1bnNpZ25lZCAvKmJhdGNoSWQqLywgdW5zaWduZWQgc2FtcGxl
SWQsIEpTQzo6SlNWYWx1ZSkKIHsKLSAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uLCBzYW1wbGVJZCksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUobGV4aWNhbEds
b2JhbE9iamVjdCkpOworICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25JRCwgc2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5
cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxP
YmplY3QpKTsKIH0KIAogc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVu
dFR5cGUgdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgK
aW5kZXggMzBmYzk3OTUyNGE5NGJlMGQzNDE1NTFlMWZlOGVkY2Y5YTRmN2IzYi4uOTVhOGUzZWQ3
MmQyZmI0NDUxNGEzMTNhMTQxYzFhOWE3OTg5Mzg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTM0
LDkgKzM0LDEwIEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNs
dWRlICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4K
KyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlclByaW1pdGl2ZXMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0RGVidWdMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0Zi9K
U09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC04MSw3ICs4Miw3IEBA
IGVudW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBlIHsKICAgICBPYnNlcnZlckNhbGxiYWNrLAog
fTsKIAotY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0
b3JBZ2VudEJhc2UgLCBwdWJsaWMgSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciAsIHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnTGlzdGVuZXIgeworY2xhc3Mg
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Ug
LCBwdWJsaWMgSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciAsIHB1
YmxpYyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
SW5zcGVjdG9yVGltZWxpbmVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBw
dWJsaWM6CkBAIC0xMDAsMTYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9DYXB0
dXJlRW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0SW5z
dHJ1bWVudHMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYpIG92ZXJyaWRlOwogCi0g
ICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgotICAgIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpT
b3VyY2VJRCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBmYWlsZWRUb1Bh
cnNlU291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludCwgaW50LCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHdpbGxSdW5NaWNyb3Rhc2soKSBvdmVycmlk
ZSB7IH0KLSAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQg
ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVl
KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGRpZENvbnRpbnVlKCkgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQpIG92
ZXJyaWRlIHsgfQotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25l
ZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHJlc3VsdCkgb3ZlcnJp
ZGU7CisgICAgLy8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIGJyZWFrcG9pbnRB
Y3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpCcmVha3BvaW50QWN0aW9uSUQs
IHVuc2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgcmVzdWx0
KSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZGlk
SW5zdGFsbFRpbWVyKGludCB0aW1lcklkLCBTZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hv
dCwgRnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDEzOWJiYzVlMzAyMTA2
NjUyNDc0NTU3MzkzNTVmOGNkZTc0YzIxOTAuLjc1NTQ1OGMwYjFkMTYzYzFjMTY2ZmNjYTU4ZjVk
NzhkMGFiZjk5MWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtOTQsNyArOTQsOCBA
QCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMuc2V0RW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAg
bV9kb21CcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1l
c0VuYWJsZWQgPSBmYWxzZTsKKworICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQgPSBudWxscHRyOwogCiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJs
ZSgpOwogfQpAQCAtMTUyLDYgKzE1MywxNCBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojpy
ZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZAogICAg
IH0KIH0KIAordm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKCkK
K3sKKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoKTsK
KworICAgIGlmIChtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAg
ICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7
Cit9CisKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZy
YW1lJiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCkBAIC0yNTIsMTEg
KzI2MSwyMyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZy
YW1lKCkKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRQYXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+
cGF1c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJh
bWVzRW5hYmxlZDsKLSAgICBpZiAoIXNob3VsZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9
IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3Bv
aW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1
c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpBbmltYXRpb25GcmFtZSwgbnVsbHB0cik7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5z
Y2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQsIEluc3BlY3Rvcjo6
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QW5pbWF0aW9uRnJhbWUpOworfQor
Cit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRGaXJlQW5pbWF0aW9uRnJhbWUoKQorewor
ICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFt
ZXNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVh
a3BvaW50KTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVT
dHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKQEAgLTI3MSwxMiArMjkyLDkgQEAgdm9pZCBQYWdl
RE9NRGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVu
dCkKICAgICB9CiB9CiAKLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZy
YW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCkKK3Zv
aWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYgYnJlYWtwb2ludCkKIHsKLSAgICBp
ZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCA9PSBlbmFibGVkKQotICAgICAg
ICBlcnJvclN0cmluZyA9IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQgPyAiQnJl
YWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgYWxyZWFkeSBleGlzdHMiX3MgOiAiQnJlYWtwb2lu
dCBmb3IgQW5pbWF0aW9uRnJhbWUgbWlzc2luZyJfczsKLQotICAgIG1fcGF1c2VPbkFsbEFuaW1h
dGlvbkZyYW1lc0VuYWJsZWQgPSBlbmFibGVkOworICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOwogfQogCiB2b2lkIFBhZ2VET01E
ZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2ZW50KE5vZGUmIHRhcmdldCwgaW50IGJy
ZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSlNPTjo6T2JqZWN0JiBkZXNjcmlwdGlvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9N
RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggN2RkZjQ1M2I5NDE5ZDIwZmE5MTQ2YzExN2ZhYWJm
YTUxZmYzNDYwNC4uYmE0ZWY2MDIzZGFiMzA4YjFhZDUxYmQ4NjI0OTBiYWI1NzBhMWEyZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1
Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VET01EZWJ1Z2dlckFnZW50LmgKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0JyZWFrcG9pbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtNDcsNiArNDksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVE
T01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBl
KSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgorICAgIHZvaWQg
bWFpbkZyYW1lTmF2aWdhdGVkKCkgZmluYWw7CiAgICAgdm9pZCBmcmFtZURvY3VtZW50VXBkYXRl
ZChGcmFtZSYpOwogICAgIHZvaWQgd2lsbEluc2VydERPTU5vZGUoTm9kZSYgcGFyZW50KTsKICAg
ICB2b2lkIGRpZEluc2VydERPTU5vZGUoTm9kZSYpOwpAQCAtNTUsMTIgKzU4LDEzIEBAIHB1Ymxp
YzoKICAgICB2b2lkIHdpbGxNb2RpZnlET01BdHRyKEVsZW1lbnQmKTsKICAgICB2b2lkIHdpbGxJ
bnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmKTsKICAgICB2b2lkIHdpbGxGaXJlQW5pbWF0aW9u
RnJhbWUoKTsKKyAgICB2b2lkIGRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogCiBwcml2YXRlOgog
ICAgIHZvaWQgZW5hYmxlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaXNhYmxlKCkgb3ZlcnJpZGU7
CiAKLSAgICB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGJv
b2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmKSBvdmVycmlkZTsKIAog
ICAgIHZvaWQgZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlJiwgaW50IGJyZWFrcG9pbnRUeXBl
LCBib29sIGluc2VydGlvbiwgSlNPTjo6T2JqZWN0JiBkZXNjcmlwdGlvbik7CiAgICAgdm9pZCB1
cGRhdGVTdWJ0cmVlQnJlYWtwb2ludHMoTm9kZSosIHVpbnQzMl90IHJvb3RNYXNrLCBib29sIHNl
dCk7CkBAIC02OCw3ICs3Miw4IEBAIHByaXZhdGU6CiAgICAgYm9vbCBoYXNCcmVha3BvaW50KE5v
ZGUqLCBpbnQgdHlwZSk7CiAKICAgICBIYXNoTWFwPE5vZGUqLCB1aW50MzJfdD4gbV9kb21CcmVh
a3BvaW50czsKLSAgICBib29sIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQgeyBm
YWxzZSB9OworCisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuY3BwCmluZGV4IDUwY2M5OGIzZmEzMGUzZGExZjZlNWVkZDI5MWM5Y2M2NjMxNjZl
NzEuLjIxN2NiNTVlNmMwZWQ3NmM5ZTY3NDE4YThjMzM0YTA0MThmY2UyZDYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dl
ckFnZW50LmNwcApAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKICAgICBXZWJEZWJ1Z2dlckFnZW50OjpkaXNhYmxl
KGlzQmVpbmdEZXN0cm95ZWQpOwogfQogCi1TdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKK1N0cmluZyBQYWdlRGVidWdn
ZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlw
dCYgc2NyaXB0KQogewogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNvdXJjZU1h
cEhUVFBIZWFkZXIoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlNvdXJjZU1hcCIpKTsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRl
ZChNQUtFX1NUQVRJQ19TVFJJTkdfSU1QTCgiWC1Tb3VyY2VNYXAiKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5o
CmluZGV4IGQxMzkxMDhiZmI5ODgzNDkzOWFkMDI5YzY3Yzk2YThmZTE5Yzc2M2EuLjRjMjdkZDFj
NzRiMTJlODU3YjZjZjY1MTBmODk5NzYwN2ExNjYyMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC01
MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICAvLyBEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlcgogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5n
KiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBi
b29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJl
dHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2
ZVJlc3VsdCwgY29uc3QgYm9vbCogZW11bGF0ZVVzZXJHZXN0dXJlLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29s
PiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBzYXZlZFJlc3VsdEluZGV4KSBvdmVycmlkZTsK
IAotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25M
b2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIC8v
IEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwogCiAgICAgLy8g
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9pZCBkaWRDbGVhcldpbmRvd09iamVjdElu
V29ybGQoRnJhbWUmLCBET01XcmFwcGVyV29ybGQmKTsKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZShib29sIGlz
QmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwogCi0gICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNj
cmlwdChjb25zdCBTY3JpcHQmKSBvdmVycmlkZTsKKyAgICBTdHJpbmcgc291cmNlTWFwVVJMRm9y
U2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYpIG92ZXJyaWRlOwogCiAgICAgdm9p
ZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCBhZDgzZjZkMzdiZDY0
YmNlMjIxZTNkYWNkN2EyMjk5MzExMmE4ZjYyLi4xNDc2ZmJjODE5NjM1N2Q5MTJiYzgyYTNjMzU0
ZTgzYTk0YTQ2MTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNDcs
NyArNDcsNyBAQCB2b2lkIFdvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnJlbW92ZURPTUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgLwogICAgIGVycm9yU3RyaW5nID0gIk5v
dCBzdXBwb3J0ZWQiX3M7CiB9CiAKLXZvaWQgV29ya2VyRE9NRGVidWdnZXJBZ2VudDo6c2V0QW5p
bWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCAvKiBl
bmFibGVkICovKQordm9pZCBXb3JrZXJET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFt
ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNDOjpCcmVha3Bv
aW50PiYmKQogewogICAgIGVycm9yU3RyaW5nID0gIk5vdCBzdXBwb3J0ZWQiX3M7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01E
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYjExMjg1ZTA0NjJkYTIxMTBmODk1NjY4Njdk
NWYwMjk2MTczMmViMC4uZGFkMThmNWMwZWM4YWEzYmM4YjRmNzhhZGZmNGU5MDhmZGQ4M2RmYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
d29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtMjYsNiArMjYsOCBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgiCisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MSw3ICs0Myw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBT
dHJpbmcmIHR5cGUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZvaWQgc2V0QW5pbWF0aW9u
RnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZTsKKyAg
ICB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIFJlZlB0cjxK
U0M6OkJyZWFrcG9pbnQ+JiYpIG92ZXJyaWRlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29y
a2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCmluZGV4IDMxOTE2NzY2M2M3ZDY3OGM0MGEyZGZmZTQx
NDY1ZDU1YjNlZTM1YTMuLjRhYzA3ZDZjYzM3YzIyODAzMzM4ZWI4MGQzNDIxOTUyMWI5NmYzZGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dv
cmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTM4LDggKzM4LDggQEAgcHVibGljOgogICAg
IFdvcmtlckRlYnVnZ2VyQWdlbnQoV29ya2VyQWdlbnRDb250ZXh0Jik7CiAgICAgfldvcmtlckRl
YnVnZ2VyQWdlbnQoKSBvdmVycmlkZTsKIAotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLSAg
ICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYpIG92ZXJyaWRlOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAgdm9p
ZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
IGRhdGEpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gbXV0ZSBj
b25zb2xlIGZvciB3b3JrZXJzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcAppbmRleCA1YjkzMWVm
YTFmMDNhYmE5ZjY3OWY3OTUyZGQ5YWRmNzNjODE2MWM4Li44NjU0MDhkYmZhNTAzNjIxZmFjNDFm
MjBmNmNmZmJmNDQzNThhNjBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRp
bWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcApAQCAtMjg0LDYg
KzI4NCw4IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKICAgICAvLyB3YWl0IHVuaXQgdGhlIGVu
ZCBvZiB0aGlzIGZ1bmN0aW9uIHRvIGRlbGV0ZSBET01UaW1lci4KICAgICBSZWY8RE9NVGltZXI+
IHByb3RlY3RlZFRoaXMoKnRoaXMpOwogCisgICAgYm9vbCBvbmVTaG90ID0gIXJlcGVhdEludGVy
dmFsKCk7CisKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKICAgICBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0ID0gKnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsK
IApAQCAtMjkxLDcgKzI5Myw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKICAgICBpZiAoaXM8
RG9jdW1lbnQ+KGNvbnRleHQpKSB7CiAgICAgICAgIGF1dG8mIGRvY3VtZW50ID0gZG93bmNhc3Q8
RG9jdW1lbnQ+KGNvbnRleHQpOwogICAgICAgICBpZiAoYXV0byogaG9sZGluZ1RhbmsgPSBkb2N1
bWVudC5kb21UaW1lckhvbGRpbmdUYW5rSWZFeGlzdHMoKTsgaG9sZGluZ1RhbmsgJiYgaG9sZGlu
Z1RhbmstPmNvbnRhaW5zKCp0aGlzKSkgewotICAgICAgICAgICAgaWYgKCFyZXBlYXRJbnRlcnZh
bCgpKQorICAgICAgICAgICAgaWYgKG9uZVNob3QpCiAgICAgICAgICAgICAgICAgc3RhcnRPbmVT
aG90KDBfcyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMwOSw3ICszMTEs
NyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAgLy8gT25seSB0aGUgZmlyc3QgZXhlY3V0
aW9uIG9mIGEgbXVsdGktc2hvdCB0aW1lciBzaG91bGQgZ2V0IGFuIGFmZmlybWF0aXZlIHVzZXIg
Z2VzdHVyZSBpbmRpY2F0b3IuCiAgICAgbV91c2VyR2VzdHVyZVRva2VuVG9Gb3J3YXJkID0gbnVs
bHB0cjsKIAotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcihjb250
ZXh0LCBtX3RpbWVvdXRJZCwgIXJlcGVhdEludGVydmFsKCkpOworICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcihjb250ZXh0LCBtX3RpbWVvdXRJZCwgb25lU2hvdCk7
CiAKICAgICAvLyBTaW1wbGUgY2FzZSBmb3Igbm9uLW9uZS1zaG90IHRpbWVycy4KICAgICBpZiAo
aXNBY3RpdmUoKSkgewpAQCAtMzIwLDcgKzMyMiw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkK
IAogICAgICAgICBtX2FjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKIAotICAgICAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0KTsKKyAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsIG9u
ZVNob3QpOwogCiAgICAgICAgIHVwZGF0ZVRocm90dGxpbmdTdGF0ZUlmTmVjZXNzYXJ5KGZpcmVT
dGF0ZSk7CiAgICAgICAgIHJldHVybjsKQEAgLTMzOCw3ICszNDAsNyBAQCB2b2lkIERPTVRpbWVy
OjpmaXJlZCgpCiAjZW5kaWYKICAgICBtX2FjdGlvbi0+ZXhlY3V0ZShjb250ZXh0KTsKIAotICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRleHQpOworICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElk
LCBvbmVTaG90KTsKIAogICAgIC8vIENoZWNrIGlmIHdlIHNob3VsZCB0aHJvdHRsZSBuZXN0ZWQg
c2luZ2xlLXNob3QgdGltZXJzLgogICAgIGlmIChuZXN0ZWRUaW1lcnMpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwppbmRleCAz
YjE5OWZhNjg4ZmI1Njk2MzI4MTU3NDNmMzA0YWY4YzQ1N2FmNmZkLi5lZDVhYjAwOTZiMmQxMDY2
NzhmYTk5ODI4NTJlYzk4YjZmMzIxNThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCkBAIC0xOTcsMTIgKzE5Nyw4IEBAIFdJ
LnNldHRpbmdzID0gewogICAgIHNlYXJjaFJlZ3VsYXJFeHByZXNzaW9uOiBuZXcgV0kuU2V0dGlu
Zygic2VhcmNoLXJlZ3VsYXItZXhwcmVzc2lvbiIsIGZhbHNlKSwKICAgICBzZWxlY3RlZE5ldHdv
cmtEZXRhaWxDb250ZW50Vmlld0lkZW50aWZpZXI6IG5ldyBXSS5TZXR0aW5nKCJuZXR3b3JrLWRl
dGFpbC1jb250ZW50LXZpZXctaWRlbnRpZmllciIsICJwcmV2aWV3IiksCiAgICAgc291cmNlTWFw
c0VuYWJsZWQ6IG5ldyBXSS5TZXR0aW5nKCJzb3VyY2UtbWFwcy1lbmFibGVkIiwgdHJ1ZSksCi0g
ICAgc2hvd0FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93
LWFsbC1hbmltYXRpb24tZnJhbWVzLWJyZWFrcG9pbnQiLCBmYWxzZSksCi0gICAgc2hvd0FsbElu
dGVydmFsc0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFsbC1pbnRldmVyYWxzLWJy
ZWFrcG9pbnQiLCBmYWxzZSksCi0gICAgc2hvd0FsbExpc3RlbmVyc0JyZWFrcG9pbnQ6IG5ldyBX
SS5TZXR0aW5nKCJzaG93LWFsbC1saXN0ZW5lcnMtYnJlYWtwb2ludCIsIGZhbHNlKSwKICAgICBz
aG93QWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFsbC1taWNy
b3Rhc2tzLWJyZWFrcG9pbnQiLCBmYWxzZSksCiAgICAgc2hvd0FsbFJlcXVlc3RzQnJlYWtwb2lu
dDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxsLXJlcXVlc3RzLWJyZWFrcG9pbnQiLCBmYWxzZSks
Ci0gICAgc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxs
LXRpbWVvdXRzLWJyZWFrcG9pbnQiLCBmYWxzZSksCiAgICAgc2hvd0Fzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludDogbmV3IFdJLlNldHRpbmcoInNob3ctYXNzZXJ0aW9uLWZhaWx1cmVzLWJyZWFr
cG9pbnQiLCB0cnVlKSwKICAgICBzaG93Q2FudmFzUGF0aDogbmV3IFdJLlNldHRpbmcoInNob3ct
Y2FudmFzLXBhdGgiLCBmYWxzZSksCiAgICAgc2hvd0ltYWdlR3JpZDogbmV3IFdJLlNldHRpbmco
InNob3ctaW1hZ2UtZ3JpZCIsIHRydWUpLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVy
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJl
YWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzCmluZGV4IGFlNGNjNDdjNTFjY2Q3ODMwODk2YWVh
OGMzM2MyNDFiODg5NDFjMzUuLjA5OGNhMmRmY2NiYmE2YjFkN2FjY2I5NjRkMTM4NWI3YmE0YmM4
MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRy
b2xsZXIuanMKQEAgLTQwLDYwICs0MCw1OSBAQCBXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xs
ZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYgogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9jdW1lbnQuYm9keS5jb250YWlucyhicmVha3Bv
aW50RGlzcGxheUVsZW1lbnQpLCAiQnJlYWtwb2ludCBwb3BvdmVyIGRpc3BsYXkgZWxlbWVudCBt
dXN0IGJlIGluIHRoZSBET00uIik7CiAKLSAgICAgICAgY29uc3QgZWRpdEJyZWFrcG9pbnQgPSAo
KSA9PiB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcG9wb3ZlciwgIkJyZWFr
cG9pbnQgcG9wb3ZlciBhbHJlYWR5IGV4aXN0cy4iKTsKLSAgICAgICAgICAgIGlmICh0aGlzLl9w
b3BvdmVyKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQu
ZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJp
bmcoIkVkaXQgQnJlYWtwb2ludFx1MjAyNiIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVha3BvaW50IHBvcG92ZXIgYWxyZWFkeSBl
eGlzdHMuIik7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIpCisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgdGhpcy5fY3JlYXRlUG9wb3ZlckNvbnRl
bnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICB0aGlzLl9wb3BvdmVyID0gbmV3IFdJLlBvcG92
ZXIodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9wb3Bv
dmVyQ29udGVudEVsZW1lbnQ7CisgICAgICAgICAgICAgICAgdGhpcy5fY3JlYXRlUG9wb3ZlckNv
bnRlbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBX
SS5Qb3BvdmVyKHRoaXMpOworICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIuY29udGVudCA9
IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudDsKIAotICAgICAgICAgICAgbGV0IGJvdW5kcyA9
IFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudC5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgICAgICBib3VuZHMub3JpZ2luLnggLT0gMTsg
Ly8gTW92ZSB0aGUgYW5jaG9yIGxlZnQgb25lIHBpeGVsIHNvIGl0IGxvb2tzIG1vcmUgY2VudGVy
ZWQuCi0gICAgICAgICAgICB0aGlzLl9wb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dJ
LlJlY3RFZGdlLk1BWF9ZXSk7Ci0gICAgICAgIH07CisgICAgICAgICAgICAgICAgbGV0IGJvdW5k
cyA9IFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudC5n
ZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAgICAgICAgICAgYm91bmRzLm9yaWdpbi54
IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3Jl
IGNlbnRlcmVkLgorICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIucHJlc2VudChib3VuZHMu
cGFkKDIpLCBbV0kuUmVjdEVkZ2UuTUFYX1ldKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CiAKLSAgICAgICAgY29uc3QgcmVtb3ZlQnJlYWtwb2ludCA9ICgpID0+IHsKLSAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAg
ICB9OworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKKyAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpLCAo
KSA9PiB7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9ICFicmVha3BvaW50
LmRpc2FibGVkOworICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgY29uc3QgdG9nZ2xlQnJlYWtw
b2ludCA9ICgpID0+IHsKLSAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtw
b2ludC5kaXNhYmxlZDsKLSAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmVk
aXRhYmxlICYmIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKSB7CisgICAgICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiQ2FuY2VsIEF1dG9tYXRpYyBDb250aW51
ZSIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVl
ID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAgICAgICAgICAgICAgIH0pOworICAgICAg
ICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
SXRlbShXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwgKCkgPT4geworICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgdG9nZ2xlQXV0b0NvbnRpbnVl
ID0gKCkgPT4gewotICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSAhYnJlYWtw
b2ludC5hdXRvQ29udGludWU7Ci0gICAgICAgIH07CisgICAgICAgIGlmIChicmVha3BvaW50LmVk
aXRhYmxlICYmICFicmVha3BvaW50LmF1dG9Db250aW51ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxl
ZCAmJiBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJTZXQgdG8gQXV0b21hdGljYWxseSBDb250aW51ZSIp
LCAoKSA9PiB7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSAhYnJl
YWtwb2ludC5hdXRvQ29udGludWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAg
ICAgIGNvbnN0IHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uID0gKCkgPT4gewotICAg
ICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAgICAgICAgICAgICBpZ25vcmVOZXR3b3Jr
VGFiOiB0cnVlLAotICAgICAgICAgICAgICAgIGlnbm9yZVNlYXJjaFRhYjogdHJ1ZSwKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgICAgICBXSS5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNv
ZGVMb2NhdGlvbihicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbiwgb3B0aW9ucyk7Ci0gICAg
ICAgIH07CisgICAgICAgIGlmIChicmVha3BvaW50LnJlbW92YWJsZSkgeworICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwg
KCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVh
a3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBl
bmRJdGVtKFdJLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9pbnRcdTIwMjYiKSwgZWRpdEJyZWFrcG9p
bnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50LmF1dG9Db250aW51ZSAmJiAhYnJlYWtwb2lu
dC5kaXNhYmxlZCkgewotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0
cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQpOwotICAgICAgICAg
ICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiQ2FuY2VsIEF1dG9tYXRpYyBD
b250aW51ZSIpLCB0b2dnbGVBdXRvQ29udGludWUpOwotICAgICAgICB9IGVsc2UgaWYgKCFicmVh
a3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5V
SVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJyZWFrcG9pbnQpOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJF
bmFibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLQotICAgICAgICBpZiAoIWJy
ZWFrcG9pbnQuYXV0b0NvbnRpbnVlICYmICFicmVha3BvaW50LmRpc2FibGVkICYmIGJyZWFrcG9p
bnQuYWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJ
LlVJU3RyaW5nKCJTZXQgdG8gQXV0b21hdGljYWxseSBDb250aW51ZSIpLCB0b2dnbGVBdXRvQ29u
dGludWUpOwotCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVt
b3ZhYmxlKGJyZWFrcG9pbnQpKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
SS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgcmVtb3ZlQnJlYWtwb2ludCk7Ci0KLSAg
ICAgICAgaWYgKGJyZWFrcG9pbnQuX3NvdXJjZUNvZGVMb2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlv
bigpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQgJiYgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRp
b24oKSkgewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJSZXZlYWwgaW4gT3Jp
Z2luYWwgUmVzb3VyY2UiKSwgcmV2ZWFsT3JpZ2luYWxTb3VyY2VDb2RlTG9jYXRpb24pOworICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIE9y
aWdpbmFsIFJlc291cmNlIiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zdCBvcHRpb25z
ID0geworICAgICAgICAgICAgICAgICAgICBpZ25vcmVOZXR3b3JrVGFiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCisgICAgICAgICAgICAgICAgfTsK
KyAgICAgICAgICAgICAgICBXSS5zaG93T3JpZ2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVMb2Nh
dGlvbihicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbiwgb3B0aW9ucyk7CisgICAgICAgICAg
ICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTI0LDcgKzEyMywyMiBAQCBXSS5CcmVha3Bv
aW50UG9wb3ZlckNvbnRyb2xsZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIg
ZXh0ZW5kcyBXSS5PYgogICAgICAgICBsZXQgY2hlY2tib3hMYWJlbCA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgIGNoZWNrYm94TGFiZWwuY2xhc3NOYW1lID0gInRv
Z2dsZSI7CiAgICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kQ2hpbGQoY2hlY2tib3hFbGVtZW50
KTsKLSAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmQodGhpcy5fYnJlYWtwb2ludC5zb3VyY2VD
b2RlTG9jYXRpb24uZGlzcGxheUxvY2F0aW9uU3RyaW5nKCkpOworICAgICAgICBpZiAodGhpcy5f
YnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KQorICAgICAgICAg
ICAgY2hlY2tib3hMYWJlbC5hcHBlbmQodGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRp
b24uZGlzcGxheUxvY2F0aW9uU3RyaW5nKCkpOworICAgICAgICBlbHNlIGlmICh0aGlzLl9icmVh
a3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KSB7CisgICAgICAgICAgICBsZXQg
ZGlzcGxheU5hbWU7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAg
ZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFtZXMiKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJ
bnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlT
dHJpbmcoIkFsbCBJbnRlcnZhbHMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQg
PT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAg
ICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBFdmVudHMiKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxU
aW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBXSS5VSVN0
cmluZygiQWxsIFRpbWVvdXRzIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
ZGlzcGxheU5hbWUgPSBicmVha3BvaW50LmV2ZW50TmFtZTsKKyAgICAgICAgICAgIGNoZWNrYm94
TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoZGlzcGxheU5hbWUpKTsK
KyAgICAgICAgfQogCiAgICAgICAgIGxldCB0YWJsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
InRhYmxlIik7CiAKQEAgLTE3Niw3ICsxOTAsNyBAQCBXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRy
b2xsZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYgog
ICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0LmlkID0gImVkaXQtYnJlYWtwb2ludC1wb3Bv
dmVyLWlnbm9yZSI7CiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5wdXQudHlwZSA9ICJudW1i
ZXIiOwogICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0Lm1pbiA9IDA7Ci0gICAgICAgIHRo
aXMuX2lnbm9yZUNvdW50SW5wdXQudmFsdWUgPSAwOworICAgICAgICB0aGlzLl9pZ25vcmVDb3Vu
dElucHV0LnZhbHVlID0gYnJlYWtwb2ludC5pZ25vcmVDb3VudDsKICAgICAgICAgdGhpcy5faWdu
b3JlQ291bnRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJjaGFuZ2UiLCB0aGlzLl9wb3BvdmVySWdu
b3JlSW5wdXRDaGFuZ2VkLmJpbmQodGhpcykpOwogCiAgICAgICAgIGlnbm9yZUNvdW50TGFiZWwu
c2V0QXR0cmlidXRlKCJmb3IiLCB0aGlzLl9pZ25vcmVDb3VudElucHV0LmlkKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURl
YnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwppbmRleCBkMjljZGI4NDliZjFjNmY5YzVm
OTI5MDJkZmUyMDQwOTA3YWFhNTE4Li43OTdhYzllZDE0YTkwMzBjMWQ4NTc3NmIxYTkwMzE2ODUw
M2Q0NTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCkBAIC0z
MywzNiArMzMsMjcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2RvbUJyZWFrcG9pbnRGcmFt
ZUlkZW50aWZpZXJNYXAgPSBuZXcgTWFwOwogCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtw
b2ludHMgPSBbXTsKKyAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9
IG51bGw7CisgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBudWxsOworICAg
ICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5f
YWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbDsKKwogICAgICAgICB0aGlzLl91cmxCcmVha3Bv
aW50cyA9IFtdOwogCi0gICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtYW5pbWF0aW9uLWZy
YW1lcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2lu
dCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0
aW9uRnJhbWUsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAotICAgICAgICB9KTsKLQotICAgICAg
ICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0
dGluZygiYnJlYWstb24tYWxsLWludGVydmFscyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuSW50ZXJ2YWwsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAotICAgICAgICB9KTsKLQot
ICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tYWxsLWxpc3RlbmVycyIsIGZhbHNlKTsKLSAgICAgICAgdGhp
cy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhp
cy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAotICAgICAgICB9
KTsKLQotICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9
IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtdGltZW91dHMiLCBmYWxzZSk7Ci0gICAgICAg
IHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCwgewotICAgICAgICAgICAgZGlzYWJsZWQ6ICF0
aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAg
fSk7Ci0KICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcg
PSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLXJlcXVlc3RzIiwgZmFsc2UpOwogICAgICAg
ICB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQgPSBuZXcgV0kuVVJMQnJlYWtwb2ludChXSS5V
UkxCcmVha3BvaW50LlR5cGUuVGV4dCwgIiIsIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhp
cy5fYWxsUmVxdWVzdHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0p
OwogCi0gICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVh
a3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3Bv
aW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5FdmVudEJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5FdmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0
ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2Vk
LCB0aGlzKTsKLSAgICAgICAgV0kuVVJMQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLlVS
TEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZVVSTEJy
ZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkRPTUJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVE
aWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwg
dGhpcyk7CisKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVu
dEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9u
RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hh
bmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2
ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0ku
RXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRv
Q29udGludWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJv
cGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5k
bGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZCwgdGhpcyk7CisKKyAgICAgICAgV0kuVVJM
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlVVJMQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFu
Z2VkLCB0aGlzKTsKIAogICAgICAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RE9NTWFuYWdlci5FdmVudC5Ob2RlUmVtb3ZlZCwgdGhpcy5fbm9kZVJlbW92ZWQsIHRoaXMpOwog
ICAgICAgICBXSS5kb21NYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NTWFuYWdlci5FdmVu
dC5Ob2RlSW5zZXJ0ZWQsIHRoaXMuX25vZGVJbnNlcnRlZCwgdGhpcyk7CkBAIC03OCw3ICs2OSw3
IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAgICBsZXQgZXhpc3RpbmdTZXJpYWxpemVk
QnJlYWtwb2ludHMgPSBXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShrZXkpOwogICAgICAgICAgICAg
ICAgICAgICBpZiAoZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGZvciAobGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQgb2YgZXhp
c3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludHMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXdhaXQgb2JqZWN0U3RvcmUucHV0T2JqZWN0KGNvbnN0cnVjdG9yLmRlc2VyaWFsaXplKGV4aXN0
aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBh
d2FpdCBvYmplY3RTdG9yZS5wdXRPYmplY3QoY29uc3RydWN0b3IuZnJvbUpTT04oZXhpc3RpbmdT
ZXJpYWxpemVkQnJlYWtwb2ludCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgfQogCkBAIC04Niw3ICs3Nyw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICAgICAg
dGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0cnVlOwogICAgICAgICAgICAgICAgIGZvciAo
bGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50IG9mIHNlcmlhbGl6ZWRCcmVha3BvaW50cykgewotICAg
ICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGNvbnN0cnVjdG9yLmRlc2VyaWFsaXpl
KHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBjb25zdHJ1Y3Rvci5mcm9tSlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CiAKICAgICAg
ICAgICAgICAgICAgICAgY29uc3Qga2V5ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgb2Jq
ZWN0U3RvcmUuYXNzb2NpYXRlT2JqZWN0KGJyZWFrcG9pbnQsIGtleSwgc2VyaWFsaXplZEJyZWFr
cG9pbnQpOwpAQCAtMTA1LDQyICs5NiwyMSBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBpZiAoRE9N
RGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpIHx8IERPTURlYnVnZ2Vy
TWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50cygpKSB7CiAgICAgICAgICAg
ICBsb2FkQnJlYWtwb2ludHMoV0kuRXZlbnRCcmVha3BvaW50LCBXSS5vYmplY3RTdG9yZXMuZXZl
bnRCcmVha3BvaW50cywgWyJldmVudC1icmVha3BvaW50cyJdLCAoYnJlYWtwb2ludCkgPT4gewot
ICAgICAgICAgICAgICAgIC8vIE1pZ3JhdGUgYHJlcXVlc3RBbmltYXRpb25GcmFtZWAsIGBzZXRU
aW1lb3V0YCwgYW5kIGBzZXRJbnRlcnZhbGAgZ2xvYmFsIGJyZWFrcG9pbnRzLgotICAgICAgICAg
ICAgICAgIHN3aXRjaCAoYnJlYWtwb2ludC50eXBlKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZToKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC5kaXNhYmxlZCA9IGJyZWFrcG9p
bnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghV0kuc2V0dGluZ3Muc2hvd0Fs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIFdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVlID0g
dHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZlbnRCcmVha3BvaW50KHRo
aXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAgICB9
Ci0gICAgICAgICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmRl
bGV0ZU9iamVjdChicmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotCi0g
ICAgICAgICAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lcjoKLSAgICAg
ICAgICAgICAgICAgICAgc3dpdGNoIChicmVha3BvaW50LmV2ZW50TmFtZSkgewotICAgICAgICAg
ICAgICAgICAgICBjYXNlICJzZXRUaW1lb3V0IjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRo
aXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludC5kaXNhYmxlZCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQ7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVdJLnNldHRpbmdzLnNob3dBbGxUaW1lb3V0
c0JyZWFrcG9pbnQudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSS5zZXR0
aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxUaW1lb3V0
c0JyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSAic2V0SW50ZXJ2YWwi
OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludC5k
aXNhYmxlZCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoIVdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3Muc2hvd0FsbEludGVydmFsc0JyZWFr
cG9pbnQudmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRk
RXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQpOwotICAgICAgICAg
ICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZXZl
bnRCcmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICB0aGlzLmFk
ZEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICBsZXQgbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludCA9ICh0eXBlLCBzaG93blNl
dHRpbmdzS2V5LCBlbmFibGVkU2V0dGluZ3NLZXkpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAo
IVdJLlNldHRpbmcubWlncmF0ZVZhbHVlKHNob3duU2V0dGluZ3NLZXkpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLkV2ZW50QnJl
YWtwb2ludCh0eXBlLCB7CisgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOiAhV0kuU2V0dGlu
Zy5taWdyYXRlVmFsdWUoZW5hYmxlZFNldHRpbmdzS2V5KSwKKyAgICAgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtw
b2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCAic2hvdy1hbGwtYW5pbWF0aW9uLWZyYW1lcy1icmVh
a3BvaW50IiwgImJyZWFrLW9uLWFsbC1hbmltYXRpb24tZnJhbWVzIik7CisgICAgICAgICAgICB0
aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVh
a3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsLCAic2hvdy1hbGwtaW50ZXZl
cmFscy1icmVha3BvaW50IiwgImJyZWFrLW9uLWFsbC1pbnRlcnZhbHMiKTsKKyAgICAgICAgICAg
IHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQgPz89IGxvYWRMZWdhY3lHbG9iYWxFdmVudEJy
ZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsICJzaG93LWFsbC1saXN0
ZW5lcnMtYnJlYWtwb2ludCIsICJicmVhay1vbi1hbGwtbGlzdGVuZXJzIik7CisgICAgICAgICAg
ICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPz89IGxvYWRMZWdhY3lHbG9iYWxFdmVudEJy
ZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCwgInNob3ctYWxsLXRpbWVv
dXRzLWJyZWFrcG9pbnQiLCAiYnJlYWstb24tYWxsLXRpbWVvdXRzIik7CiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzVVJMQnJlYWtwb2ludHMoKSB8
fCBET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNYSFJCcmVha3BvaW50cygpKSB7CkBAIC0xNjAs
MTYgKzEzMCwxNiBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICh0YXJnZXQgPT09IFdJLmFz
c3VtaW5nTWFpblRhcmdldCgpICYmIHRhcmdldC5tYWluUmVzb3VyY2UpCiAgICAgICAgICAgICAg
ICAgdGhpcy5fc3BlY3VsYXRpdmVseVJlc29sdmVET01CcmVha3BvaW50c0ZvclVSTCh0YXJnZXQu
bWFpblJlc291cmNlLnVybCk7CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWxsQW5pbWF0aW9u
RnJhbWVzQnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxBbmlt
YXRpb25GcmFtZXNCcmVha3BvaW50KQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50
QnJlYWtwb2ludCh0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCB0YXJnZXQpOwog
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQuZGlzYWJsZWQp
CisgICAgICAgICAgICBpZiAodGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKICAgICAgICAg
ICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxMaXN0ZW5lcnNC
cmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgaWYgKHRoaXMuX2FsbExpc3RlbmVyc0Jy
ZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRo
aXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAgICAgIGlmICgh
dGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgaWYgKHRo
aXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVF
dmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0YXJnZXQpOwogCiAg
ICAgICAgICAgICBpZiAoIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludC5kaXNhYmxlZCkKQEAg
LTI3MCwxNSArMjQwLDYgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdn
ZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGxpc3RlbmVyQnJlYWtwb2ludHMo
KSB7IHJldHVybiB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzOyB9CiAgICAgZ2V0IHVybEJyZWFr
cG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fdXJsQnJlYWtwb2ludHM7IH0KIAotICAgIGlzQnJlYWtw
b2ludFNwZWNpYWwoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmVha3BvaW50
ID09PSB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBi
cmVha3BvaW50ID09PSB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50Ci0gICAgICAgICAgICB8
fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50Ci0gICAgICAgICAg
ICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQKLSAgICAgICAg
ICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludDsKLSAgICB9
Ci0KICAgICBkb21CcmVha3BvaW50c0Zvck5vZGUobm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KG5vZGUgaW5zdGFuY2VvZiBXSS5ET01Ob2RlKTsKQEAgLTMxOSw3ICsyODAsNyBA
QCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50IHx8ICFicmVha3BvaW50LnVybCkK
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVj
aWFsKGJyZWFrcG9pbnQpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50Lmdsb2JhbCkgewogICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQpAQCAtMzQxLDcgKzMwMiw3IEBAIFdJLkRPTURlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRo
aXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJlYWtw
b2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMzgzLDE4ICszNDQsMzggQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlm
ICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpZiAo
dGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZl
bnRCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9pbnQuZ2xvYmFsLCBicmVha3BvaW50
KTsKKworICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQudHlwZSkgeworICAgICAgICBjYXNlIFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lOgorICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5f
YWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsOgor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQs
IHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQsIGJyZWFrcG9pbnQpOworICAgICAgICAgICAg
dGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyOgor
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnROYW1lKSB7CisgICAgICAgICAgICAgICAg
aWYgKHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5n
LmV2ZW50TmFtZSA9PT0gYnJlYWtwb2ludC5ldmVudE5hbWUpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9p
bnRzLnB1c2goYnJlYWtwb2ludCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0aGlzLl9h
bGxMaXN0ZW5lcnNCcmVha3BvaW50LCBicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
VGltZW91dDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQsIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAg
ICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBicmVha3BvaW50
KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5ldmVudE5hbWUsIGJyZWFrcG9p
bnQpOwotCi0gICAgICAgIGlmICh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmZpbmQoKGV4aXN0
aW5nKSA9PiBleGlzdGluZy5ldmVudE5hbWUgPT09IGJyZWFrcG9pbnQuZXZlbnROYW1lKSkKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9p
bnRzLnB1c2goYnJlYWtwb2ludCk7CisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRQcm9i
ZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRB
ZGRlZCwge2JyZWFrcG9pbnR9KTsKIApAQCAtNDE1LDM4ICszOTYsNDYgQEAgV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAgICBi
cmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRS
ZW1vdmVkLCB7YnJlYWtwb2ludH0pOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBE
aXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1vdmluZyBhY3Rpb25zIGRvZXNuJ3Qg
cmUtYWRkIHRoZSBicmVha3BvaW50LgorICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMoKTsKKworICAgICAgICBzd2l0Y2gg
KGJyZWFrcG9pbnQudHlwZSkgeworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LkFuaW1hdGlvbkZyYW1lOgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2lu
dCk7CisgICAgICAgICAgICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gbnVs
bDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuSW50ZXJ2YWw6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxJbnRl
cnZhbHNCcmVha3BvaW50LCB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKKyAgICAgICAg
ICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBudWxsOworICAgICAgICAgICAgYnJl
YWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcjoKKyAg
ICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TmFtZSkgeworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2lu
dCksIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJCcmVh
a3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5yZW1vdmUoYnJl
YWtwb2ludCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQsIHRoaXMuX2FsbExpc3RlbmVyc0Jy
ZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQg
PSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz
ZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0OgorICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0aGlzLl9hbGxUaW1lb3V0c0JyZWFr
cG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbDsK
KyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
YnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgYnJl
YWtwb2ludCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZXZlbnROYW1lLCBi
cmVha3BvaW50KTsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9saXN0ZW5lckJyZWFr
cG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9pbnQpLCBicmVha3BvaW50KTsKLSAgICAgICAgaWYgKCF0
aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9pbnQpKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMucmVtb3ZlKGJy
ZWFrcG9pbnQpOwotCiAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAg
ICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50cy5kZWxldGVPYmplY3Qo
YnJlYWtwb2ludCk7CiAKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZVByb2Jlc0Zv
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludFJlbW92
ZWQsIHticmVha3BvaW50fSk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0g
ICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdl
dHMpIHsKLSAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMik6IERPTURlYnVnZ2Vy
LnJlbW92ZUV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgotICAgICAgICAgICAgaWYgKHRh
cmdldC5oYXNDb21tYW5kKCJET01EZWJ1Z2dlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQiKSkKLSAg
ICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9p
bnQoYnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICBl
bHNlIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnQiKSkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpOwotICAgICAgICAg
ICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3Bv
aW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAg
IH0KIAogICAgIHVybEJyZWFrcG9pbnRGb3JVUkwodXJsKQpAQCAtNDYwLDcgKzQ0OSw3IEBAIFdJ
LkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkg
eworICAgICAgICBpZiAoYnJlYWtwb2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVh
a3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtNDkzLDcgKzQ4Miw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFr
cG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3Bv
aW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludC5nbG9iYWwp
IHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlVSTEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtNzA0LDYgKzY5Myw4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKCF0aGlzLl9y
ZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRGlz
YWJsZWRUZW1wb3JhcmlseSkKICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJl
YWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAorICAgICAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5v
cHRpb25zID0gYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpOworCiAgICAgICAgICAgICB0
YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudEJyZWFrcG9pbnQuaW52b2tlKGNvbW1hbmRB
cmd1bWVudHMsIGNhbGxiYWNrKTsKICAgICAgICAgfQogICAgIH0KQEAgLTc2MCwyNiArNzUxLDQw
IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKICAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQp
OwogCi0gICAgICAgIHN3aXRjaCAoYnJlYWtwb2ludCkgewotICAgICAgICBjYXNlIHRoaXMuX2Fs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICB0aGlzLl9hbGxBbmltYXRp
b25GcmFtZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUgPSAhYnJlYWtwb2ludC5kaXNh
YmxlZDsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdC
cmVha3BvaW50cykKKyAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRz
LnB1dE9iamVjdChicmVha3BvaW50KTsKKyAgICB9CiAKLSAgICAgICAgY2FzZSB0aGlzLl9hbGxJ
bnRlcnZhbHNCcmVha3BvaW50OgotICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAg
ICAgICByZXR1cm47CisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlD
aGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJn
ZXQ7CiAKLSAgICAgICAgY2FzZSB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50OgotICAgICAg
ICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0g
IWJyZWFrcG9pbnQuZGlzYWJsZWQ7CisgICAgICAgIC8vIFNwZWNpZmljIGV2ZW50IGxpc3RlbmVy
IGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBET01NYW5hZ2VyYC4KKyAgICAgICAgaWYgKGJy
ZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBj
YXNlIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRoaXMuX2FsbFRp
bWVvdXRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJs
ZWQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoIXRoaXMu
X3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50
QnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOworCisgICAgICAgIGlmIChicmVha3Bv
aW50LmRpc2FibGVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHRh
cmdldCBvZiBXSS50YXJnZXRzKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgfQorCisKKyAgICBfaGFuZGxlRXZlbnRCcmVh
a3BvaW50QWN0aW9uc0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBsZXQgYnJlYWtwb2lu
dCA9IGV2ZW50LnRhcmdldDsKKworICAgICAgICAvLyBTcGVjaWZpYyBldmVudCBsaXN0ZW5lciBi
cmVha3BvaW50cyBhcmUgaGFuZGxlZCBieSBgRE9NTWFuYWdlcmAuCisgICAgICAgIGlmIChicmVh
a3BvaW50LmV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhp
cy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpOwor
CisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJy
ZWFrcG9pbnQpOwogICAgIH0KIAogICAgIF9oYW5kbGVVUkxCcmVha3BvaW50RGlzYWJsZWRTdGF0
ZUNoYW5nZWQoZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcwppbmRleCA2ZjI5NzhkOTQ0
ZjYzZjRkOWQzZTFmM2FiNDEyMjFjMTNkOTYzYjEzLi5iM2QyNmMwNmQ5NDFhMmRiZTkzZGZlMTMz
MGU2OGQ3ZmQwM2U4YTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKQEAgLTUwLDcgKzUw
LDExIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIHRoaXMuX2hhc1JlcXVlc3RlZERvY3VtZW50ID0gZmFsc2U7CiAgICAgICAgIHRo
aXMuX3BlbmRpbmdEb2N1bWVudFJlcXVlc3RDYWxsYmFja3MgPSBudWxsOwogCi0gICAgICAgIFdJ
LkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkV2ZW50QnJlYWtwb2ludC5FdmVu
dC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJs
ZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRo
aXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5F
dmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRh
YmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwg
dGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMp
OworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3Bv
aW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFu
Z2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkLCB0aGlzKTsKIAog
ICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNv
dXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9
CkBAIC0xMjYsNiArMTMwLDEyIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAmJiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1h
bmQoIkRPTS5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciIpOwogICAgIH0KIAorICAg
IHN0YXRpYyBzdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50Q29uZmlndXJhdGlvbigpCisg
ICAgeworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBET00uc2V0QnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIgZGlkIG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0
LgorICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJET00uc2V0QnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIiLCAib3B0aW9ucyIpOworICAgIH0KKwogICAgIHN0YXRp
YyBzdXBwb3J0c0VkaXRpbmdVc2VyQWdlbnRTaGFkb3dUcmVlcyh7ZnJvbnRlbmRPbmx5LCB0YXJn
ZXR9ID0ge30pCiAgICAgewogICAgICAgICB0YXJnZXQgPSB0YXJnZXQgfHwgSW5zcGVjdG9yQmFj
a2VuZDsKQEAgLTY2Nyw2ICs2NzcsOCBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJl
YWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB9CiAKKyAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKICAgICAg
ICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7
CiAgICAgfQogCkBAIC02ODAsNiArNjkyLDEyIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01N
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50
LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0
ZW5lcklkKTsKICAgICAgICAgfQogCisgICAgICAgIC8vIERpc2FibGUgdGhlIGJyZWFrcG9pbnQg
Zmlyc3QsIHNvIHJlbW92aW5nIGFjdGlvbnMgZG9lc24ndCByZS1hZGQgdGhlIGJyZWFrcG9pbnQu
CisgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBicmVha3BvaW50
LmNsZWFyQWN0aW9ucygpOworCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVQcm9i
ZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LkV2ZW50QnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAgICAgfQogCkBAIC03MTAs
NyArNzI4LDEwIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgICAgICBpZiAoIVdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0Rp
c2FibGVkVGVtcG9yYXJpbHkpCiAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmJy
ZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7CiAKLSAgICAgICAgICAgIHRhcmdldC5ET01BZ2VudC5z
ZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJ
ZCk7CisgICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlz
dGVuZXIuaW52b2tlKHsKKyAgICAgICAgICAgICAgICBldmVudExpc3RlbmVySWQ6IGV2ZW50TGlz
dGVuZXIuZXZlbnRMaXN0ZW5lcklkLAorICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJyZWFrcG9p
bnQub3B0aW9uc1RvUHJvdG9jb2woKSwKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAg
fQogCkBAIC03MjgsNiArNzQ5LDM0IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBfaGFuZGxlRXZlbnRC
cmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKworICAgICAgICAvLyBOb24tc3BlY2lmaWMg
ZXZlbnQgbGlzdGVuZXIgYnJlYWtwb2ludHMgYXJlIGhhbmRsZWQgYnkgYERPTURlYnVnZ2VyTWFu
YWdlcmAuCisgICAgICAgIGlmICghYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKQorICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7
CisgICAgfQorCisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKGV2ZW50
KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAg
ICAgLy8gTm9uLXNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVk
IGJ5IGBET01EZWJ1Z2dlck1hbmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZXZlbnRM
aXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9oYW5kbGVFdmVu
dEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCk7CisKKyAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Cisg
ICAgfQorCiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAg
IGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dl
ck1hbmFnZXIuanMKaW5kZXggYjQ5YmU1MGFiYTMzYzVlOWIyOGFjNjVhN2Q4MTI5OGE4Y2U4ZmY1
Ny4uOTk5MDI4YzJlY2NhM2E0ZjY5NzY2ZDFkOTA2Yzc5Yzc2OWM5NjgwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJN
YW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMjksMTIgKzI5LDEyIEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsK
ICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2Jy
ZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7
Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2
ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlE
aWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2lu
dEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFu
Z2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAg
ICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
QWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlQnJlYWtwb2ludEFjdGlvbnNEaWRDaGFuZ2Us
IHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9u
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhp
cyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVk
aXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhp
cyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVCcmVha3BvaW50
QWN0aW9uc0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxv
Y2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdl
LCB0aGlzKTsKIAogICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5k
bGVUaW1lbGluZUNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTU2LDMxICs1Niwz
MSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgY29uc3Qgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiA9IG5ldyBX
SS5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIEluZmluaXR5KTsKIAogICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tZGVidWdnZXItc3RhdGVtZW50cyIsIHRydWUpOwotICAgICAg
ICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQo
c3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRl
bWVudHNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVh
a3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fZGVidWdnZXJT
dGF0ZW1lbnRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAogICAgICAgICB9KTsKICAg
ICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7
CiAKICAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9
IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtZXhjZXB0aW9ucyIsIGZhbHNlKTsKLSAgICAg
ICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChzcGVj
aWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVh
a3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9j
YXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFr
cG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2Fs
bEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl91
bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGlu
ZygiYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9ucyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5f
dW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KHNwZWNpYWxC
cmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExv
Y2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9u
c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRo
aXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVlOwogCiAgICAg
ICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3
IFdJLlNldHRpbmcoImJyZWFrLW9uLWFzc2VydGlvbi1mYWlsdXJlcyIsIGZhbHNlKTsKLSAgICAg
ICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQo
c3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWls
dXJlc0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lhbEJyZWFr
cG9pbnRMb2NhdGlvbiwgewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9hc3NlcnRpb25G
YWlsdXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAg
ICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAK
ICAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5l
dyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtbWljcm90YXNrcyIsIGZhbHNlKTsKLSAgICAgICAg
dGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChzcGVjaWFs
QnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3Bv
aW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRp
b24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9p
bnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2FsbE1p
Y3JvdGFza3NCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKQEAgLTEyNiwxNCArMTI2LDE0IEBA
IFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0ku
U2V0dGluZy5taWdyYXRlVmFsdWUoImJyZWFrcG9pbnRzIik7CiAgICAgICAgICAgICBpZiAoZXhp
c3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBl
eGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9p
bnRzKQotICAgICAgICAgICAgICAgICAgICBhd2FpdCBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2lu
dHMucHV0T2JqZWN0KFdJLkJyZWFrcG9pbnQuZnJvbUpTT04oZXhpc3RpbmdTZXJpYWxpemVkQnJl
YWtwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBhd2FpdCBXSS5vYmplY3RTdG9yZXMuYnJl
YWtwb2ludHMucHV0T2JqZWN0KFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZyb21KU09OKGV4aXN0
aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
bGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50cyA9IGF3YWl0IFdJLm9iamVjdFN0b3Jlcy5icmVha3Bv
aW50cy5nZXRBbGwoKTsKIAogICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMg
PSB0cnVlOwogICAgICAgICAgICAgZm9yIChsZXQgc2VyaWFsaXplZEJyZWFrcG9pbnQgb2Ygc2Vy
aWFsaXplZEJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBX
SS5CcmVha3BvaW50LmZyb21KU09OKHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKyAgICAgICAgICAg
ICAgICBsZXQgYnJlYWtwb2ludCA9IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZyb21KU09OKHNl
cmlhbGl6ZWRCcmVha3BvaW50KTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG51bGw7
CiAgICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmFzc29jaWF0ZU9i
amVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAgLTM0MiwyNSAr
MzQyLDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAgIGlzQnJlYWtw
b2ludFJlbW92YWJsZShicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJyZWFrcG9p
bnQgIT09IHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQKLSAgICAgICAgICAgICYm
IGJyZWFrcG9pbnQgIT09IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50Ci0gICAgICAgICAg
ICAmJiBicmVha3BvaW50ICE9PSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50Owot
ICAgIH0KLQotICAgIGlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAg
ICAgIHJldHVybiAhdGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkKLSAgICAg
ICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2lu
dAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTWljcm90YXNrc0JyZWFr
cG9pbnQ7Ci0gICAgfQotCi0gICAgaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQp
OwotICAgIH0KLQogICAgIGdldCBicmVha3BvaW50c0VuYWJsZWQoKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWU7CkBAIC02NTksMTEg
KzY0MCwxMSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKIAogICAgIGFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2lu
dCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtw
b2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC02ODIsMjIgKzY2MywyMiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dl
ck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdC
cmVha3BvaW50cykKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5wdXRP
YmplY3QoYnJlYWtwb2ludCk7CiAKLSAgICAgICAgdGhpcy5fYWRkUHJvYmVzRm9yQnJlYWtwb2lu
dChicmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFr
cG9pbnQpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAgICAgfQog
CiAgICAgcmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KQogICAgIHsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQpOworICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQpOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2lu
dCkpOwotICAgICAgICBpZiAoIXRoaXMuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQp
KQorICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnJlbW92YWJsZSk7CisgICAgICAg
IGlmICghYnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBp
ZiAoYnJlYWtwb2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQg
PSB0cnVlOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNzIxLDcgKzcwMiw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIXRo
aXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJy
ZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsKIAotICAgICAgICB0aGlzLl9yZW1v
dmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB0aGlzLnJlbW92ZVBy
b2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVk
LCB7YnJlYWtwb2ludH0pOwogICAgIH0KQEAgLTczMSw2ICs3MTIsNzcgQEAgV0kuRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHJldHVybiB0aGlzLl9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIrKzsKICAgICB9CiAK
KyAgICBhZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMoYnJlYWtwb2lu
dCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlkZW50
aWZpZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJlYWtwb2ludCwgbmV3IFNldCk7CisKKyAgICAgICAg
dGhpcy51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0KKworICAg
IHJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuaGFz
KGJyZWFrcG9pbnQpKTsKKworICAgICAgICB0aGlzLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFr
cG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQpOworICAgIH0KKworICAgIHVwZGF0ZVByb2Jlc0ZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIGxldCBrbm93blByb2JlSWRlbnRp
ZmllcnMgPSB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50LmdldChicmVh
a3BvaW50KTsKKyAgICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMpIHsKKyAgICAgICAg
ICAgIC8vIFNvbWV0aW1lcyBhY3Rpb25zIGNoYW5nZSBiZWZvcmUgdGhlIGFkZGVkIGJyZWFrcG9p
bnQgaXMgZnVsbHkgZGlzcGF0Y2hlZC4KKyAgICAgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJl
YWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIGxldCBzZWVuUHJvYmVJZGVudGlmaWVycyA9IG5ldyBTZXQ7CisKKyAgICAgICAgZm9y
IChsZXQgcHJvYmVBY3Rpb24gb2YgYnJlYWtwb2ludC5wcm9iZUFjdGlvbnMpIHsKKyAgICAgICAg
ICAgIGxldCBwcm9iZUlkZW50aWZpZXIgPSBwcm9iZUFjdGlvbi5pZDsKKyAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHByb2JlSWRlbnRpZmllciwgIlByb2JlIGFkZGVkIHdpdGhvdXQgYnJlYWtw
b2ludCBhY3Rpb24gaWRlbnRpZmllcjogIiwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgICAgIHNl
ZW5Qcm9iZUlkZW50aWZpZXJzLmFkZChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYg
KCFrbm93blByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpIHsKKyAgICAgICAg
ICAgICAgICAvLyBOZXcgcHJvYmU7IGZpbmQgb3IgY3JlYXRlIHJlbGV2YW50IHByb2JlIHNldC4K
KyAgICAgICAgICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmll
cik7CisgICAgICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIGxldCBuZXdQcm9iZSA9IG5ldyBX
SS5Qcm9iZShwcm9iZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQsIHByb2JlQWN0aW9uLmRhdGEpOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5zZXQocHJvYmVJZGVudGlm
aWVyLCBuZXdQcm9iZSk7CisgICAgICAgICAgICAgICAgcHJvYmVTZXQuYWRkUHJvYmUobmV3UHJv
YmUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmll
cik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZSwgIlByb2JlIGtub3duIGJ1dCBj
b3VsZG4ndCBiZSBmb3VuZCBieSBpZGVudGlmaWVyOiAiLCBwcm9iZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgLy8gVXBkYXRlIHByb2JlIGV4cHJlc3Npb247IGlmIGl0IGRpZmZlcmVkLCBjaGFu
Z2UgZXZlbnRzIHdpbGwgZmlyZS4KKyAgICAgICAgICAgIHByb2JlLmV4cHJlc3Npb24gPSBwcm9i
ZUFjdGlvbi5kYXRhOworICAgICAgICB9CisKKyAgICAgICAgLy8gTG9vayBmb3IgbWlzc2luZyBw
cm9iZXMgYmFzZWQgb24gd2hhdCB3ZSBzYXcgbGFzdC4KKyAgICAgICAgZm9yIChsZXQgcHJvYmVJ
ZGVudGlmaWVyIG9mIGtub3duUHJvYmVJZGVudGlmaWVycykgeworICAgICAgICAgICAgaWYgKHNl
ZW5Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgICAgICAvLyBUaGUgcHJvYmUgaGFzIGdvbmUgbWlzc2luZywgcmVt
b3ZlIGl0LgorICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVz
QnlJZGVudGlmaWVyLmdldChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fcHJv
YmVzQnlJZGVudGlmaWVyLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAga25v
d25Qcm9iZUlkZW50aWZpZXJzLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAg
cHJvYmVTZXQucmVtb3ZlUHJvYmUocHJvYmUpOworCisgICAgICAgICAgICAvLyBSZW1vdmUgdGhl
IHByb2JlIHNldCBpZiBpdCBoYXMgYmVjb21lIGVtcHR5LgorICAgICAgICAgICAgaWYgKCFwcm9i
ZVNldC5wcm9iZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJvYmVTZXRzQnlC
cmVha3BvaW50LmRlbGV0ZShwcm9iZVNldC5icmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBw
cm9iZVNldC53aWxsUmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwge3By
b2JlU2V0fSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBEZWJ1
Z2dlck9ic2VydmVyCiAKICAgICBicmVha3BvaW50UmVzb2x2ZWQodGFyZ2V0LCBicmVha3BvaW50
SWRlbnRpZmllciwgbG9jYXRpb24pCkBAIC05OTcsNjAgKzEwNDksNiBAQCBXSS5EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
cmV0dXJuIG5ldyBXSS5TY29wZUNoYWluTm9kZSh0eXBlLCBbb2JqZWN0XSwgcGF5bG9hZC5uYW1l
LCBwYXlsb2FkLmxvY2F0aW9uLCBwYXlsb2FkLmVtcHR5KTsKICAgICB9CiAKLSAgICBfZGVidWdn
ZXJCcmVha3BvaW50QWN0aW9uVHlwZSh0eXBlKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBl
KSB7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZzoKLSAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlv
blR5cGUuTG9nOwotICAgICAgICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0
ZToKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJl
YWtwb2ludEFjdGlvblR5cGUuRXZhbHVhdGU7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFj
dGlvbi5UeXBlLlNvdW5kOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51
bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5Tb3VuZDsKLSAgICAgICAgY2FzZSBXSS5C
cmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
QmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb25UeXBlLlByb2JlOwotICAgICAg
ICBkZWZhdWx0OgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UpOwotICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9u
VHlwZS5Mb2c7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfZGVidWdnZXJCcmVha3BvaW50T3B0
aW9ucyhicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgbGV0IGFjdGlvbnMgPSBicmVha3BvaW50
LmFjdGlvbnM7Ci0gICAgICAgIGFjdGlvbnMgPSBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rp
b24udG9Qcm90b2NvbCgpKTsKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMuZmlsdGVyKChhY3Rp
b24pID0+IHsKLSAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSAhPT0gV0kuQnJlYWtwb2ludEFj
dGlvbi5UeXBlLkxvZykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAg
ICAgaWYgKCEvXCRcey4qP1x9Ly50ZXN0KGFjdGlvbi5kYXRhKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgbGV0IGxleGVyID0gbmV3IFdJLkJyZWFrcG9pbnRM
b2dNZXNzYWdlTGV4ZXI7Ci0gICAgICAgICAgICBsZXQgdG9rZW5zID0gbGV4ZXIudG9rZW5pemUo
YWN0aW9uLmRhdGEpOwotICAgICAgICAgICAgaWYgKCF0b2tlbnMpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBsZXQgdGVtcGxhdGVMaXRlcmFsID0gdG9rZW5z
LnJlZHVjZSgodGV4dCwgdG9rZW4pID0+IHsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4udHlw
ZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuUGxhaW5UZXh0KQot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCArIHRva2VuLmRhdGEuZXNjYXBlQ2hhcmFj
dGVycygiYFxcIik7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFr
cG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBlLkV4cHJlc3Npb24pCi0gICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0ZXh0ICsgIiR7IiArIHRva2VuLmRhdGEgKyAifSI7Ci0gICAgICAgICAg
ICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICB9LCAiIik7Ci0KLSAgICAgICAgICAgIGFj
dGlvbi5kYXRhID0gImNvbnNvbGUubG9nKGAiICsgdGVtcGxhdGVMaXRlcmFsICsgImApIjsKLSAg
ICAgICAgICAgIGFjdGlvbi50eXBlID0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRl
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICBjb25kaXRpb246IGJyZWFrcG9pbnQuY29uZGl0aW9uLAotICAgICAg
ICAgICAgaWdub3JlQ291bnQ6IGJyZWFrcG9pbnQuaWdub3JlQ291bnQsCi0gICAgICAgICAgICBh
dXRvQ29udGludWU6IGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlLAotICAgICAgICAgICAgYWN0aW9u
cywKLSAgICAgICAgfTsKLSAgICB9Ci0KICAgICBfc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBz
cGVjaWZpY1RhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50
LmRpc2FibGVkKTsKQEAgLTEwODgsMTIgKzEwODYsNiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBj
bGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFzcGVj
aWZpY1RhcmdldCkKICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVzb2x2ZWQgPSBmYWxzZTsKIAot
ICAgICAgICAvLyBDb252ZXJ0IEJyZWFrcG9pbnRBY3Rpb24gdHlwZXMgdG8gRGVidWdnZXJBZ2Vu
dCBwcm90b2NvbCB0eXBlcy4KLSAgICAgICAgLy8gTk9URTogQnJlYWtwb2ludC5vcHRpb25zIHJl
dHVybnMgbmV3IG9iamVjdHMgZWFjaCB0aW1lLCBzbyBpdCBpcyBzYWZlIHRvIG1vZGlmeS4KLSAg
ICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRPcHRpb25zKGJyZWFr
cG9pbnQpOwotICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2Ygb3B0aW9ucy5hY3Rpb25zKQotICAg
ICAgICAgICAgYWN0aW9uLnR5cGUgPSB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRBY3Rpb25UeXBl
KGFjdGlvbi50eXBlKTsKLQogICAgICAgICBpZiAoYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmll
cikgewogICAgICAgICAgICAgbGV0IHRhcmdldHMgPSBzcGVjaWZpY1RhcmdldCA/IFtzcGVjaWZp
Y1RhcmdldF0gOiBXSS50YXJnZXRzOwogICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRh
cmdldHMpIHsKQEAgLTExMDIsMTQgKzEwOTQsMTQgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAg
IHVybDogYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAg
dXJsUmVnZXg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyOiBi
cmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXIsCi0gICAgICAgICAgICAg
ICAgICAgIG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5v
cHRpb25zVG9Qcm90b2NvbCgpLAogICAgICAgICAgICAgICAgIH0sIGRpZFNldEJyZWFrcG9pbnQu
YmluZCh0aGlzLCB0YXJnZXQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChi
cmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBi
cmVha3BvaW50LnRhcmdldDsKICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldEJy
ZWFrcG9pbnQuaW52b2tlKHsKICAgICAgICAgICAgICAgICBsb2NhdGlvbjoge3NjcmlwdElkOiBi
cmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIsIGxpbmVOdW1iZXI6IGJyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogYnJlYWtwb2ludC5zb3VyY2VD
b2RlTG9jYXRpb24uY29sdW1uTnVtYmVyfSwKLSAgICAgICAgICAgICAgICBvcHRpb25zCisgICAg
ICAgICAgICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpLAogICAg
ICAgICAgICAgfSwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMsIHRhcmdldCkpOwogICAgICAg
ICB9IGVsc2UKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVua25vd24gc291
cmNlIGZvciBicmVha3BvaW50LiIpOwpAQCAtMTIzMyw4ICsxMjI1LDggQEAgV0kuRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpOwot
ICAgICAgICBpZiAoIXRoaXMuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZWRpdGFibGUpOworICAgICAgICBpZiAoIWJy
ZWFrcG9pbnQuZWRpdGFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUmVt
b3ZlIHRoZSBicmVha3BvaW50IHdpdGggaXRzIG9sZCBpZC4KQEAgLTEyNTAsNyArMTI0Miw3IEBA
IFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRD
aGFuZ2UoZXZlbnQpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQo
ZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgdGhpcy51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGV2
ZW50LnRhcmdldCk7CiAgICAgfQogCiAgICAgX3N0YXJ0RGlzYWJsaW5nQnJlYWtwb2ludHNUZW1w
b3JhcmlseSgpCkBAIC0xNDEzLDc3ICsxNDA1LDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2lnbm9y
ZUJyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwogICAgIH0K
IAotICAgIF9hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAg
ICBpZiAodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMoYnJlYWtw
b2ludCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlk
ZW50aWZpZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJlYWtwb2ludCwgbmV3IFNldCk7Ci0KLSAgICAg
ICAgdGhpcy5fdXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICB9Ci0K
LSAgICBfcmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2lu
dC5oYXMoYnJlYWtwb2ludCkpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0Zv
ckJyZWFrcG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQpOwotICAgIH0KLQotICAgIF91cGRhdGVQcm9i
ZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBsZXQga25vd25Qcm9i
ZUlkZW50aWZpZXJzID0gdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5n
ZXQoYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICgha25vd25Qcm9iZUlkZW50aWZpZXJzKSB7Ci0g
ICAgICAgICAgICAvLyBTb21ldGltZXMgYWN0aW9ucyBjaGFuZ2UgYmVmb3JlIHRoZSBhZGRlZCBi
cmVha3BvaW50IGlzIGZ1bGx5IGRpc3BhdGNoZWQuCi0gICAgICAgICAgICB0aGlzLl9hZGRQcm9i
ZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KLSAgICAgICAgbGV0IHNlZW5Qcm9iZUlkZW50aWZpZXJzID0gbmV3IFNldDsKLQotICAg
ICAgICBmb3IgKGxldCBwcm9iZUFjdGlvbiBvZiBicmVha3BvaW50LnByb2JlQWN0aW9ucykgewot
ICAgICAgICAgICAgbGV0IHByb2JlSWRlbnRpZmllciA9IHByb2JlQWN0aW9uLmlkOwotICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQocHJvYmVJZGVudGlmaWVyLCAiUHJvYmUgYWRkZWQgd2l0aG91
dCBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVyOiAiLCBicmVha3BvaW50KTsKLQotICAgICAg
ICAgICAgc2VlblByb2JlSWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAg
ICAgICBpZiAoIWtub3duUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlmaWVyKSkgewot
ICAgICAgICAgICAgICAgIC8vIE5ldyBwcm9iZTsgZmluZCBvciBjcmVhdGUgcmVsZXZhbnQgcHJv
YmUgc2V0LgotICAgICAgICAgICAgICAgIGtub3duUHJvYmVJZGVudGlmaWVycy5hZGQocHJvYmVJ
ZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNl
dEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgbGV0IG5ld1Byb2Jl
ID0gbmV3IFdJLlByb2JlKHByb2JlSWRlbnRpZmllciwgYnJlYWtwb2ludCwgcHJvYmVBY3Rpb24u
ZGF0YSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLnNldChwcm9i
ZUlkZW50aWZpZXIsIG5ld1Byb2JlKTsKLSAgICAgICAgICAgICAgICBwcm9iZVNldC5hZGRQcm9i
ZShuZXdQcm9iZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgIGxldCBwcm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5nZXQocHJvYmVJ
ZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlLCAiUHJvYmUga25v
d24gYnV0IGNvdWxkbid0IGJlIGZvdW5kIGJ5IGlkZW50aWZpZXI6ICIsIHByb2JlSWRlbnRpZmll
cik7Ci0gICAgICAgICAgICAvLyBVcGRhdGUgcHJvYmUgZXhwcmVzc2lvbjsgaWYgaXQgZGlmZmVy
ZWQsIGNoYW5nZSBldmVudHMgd2lsbCBmaXJlLgotICAgICAgICAgICAgcHJvYmUuZXhwcmVzc2lv
biA9IHByb2JlQWN0aW9uLmRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBMb29rIGZvciBt
aXNzaW5nIHByb2JlcyBiYXNlZCBvbiB3aGF0IHdlIHNhdyBsYXN0LgotICAgICAgICBmb3IgKGxl
dCBwcm9iZUlkZW50aWZpZXIgb2Yga25vd25Qcm9iZUlkZW50aWZpZXJzKSB7Ci0gICAgICAgICAg
ICBpZiAoc2VlblByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpCi0gICAgICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBwcm9iZSBoYXMgZ29uZSBtaXNz
aW5nLCByZW1vdmUgaXQuCi0gICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNl
dEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlz
Ll9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0
aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAg
ICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICBwcm9iZVNldC5yZW1vdmVQcm9iZShwcm9iZSk7Ci0KLSAgICAgICAgICAgIC8vIFJl
bW92ZSB0aGUgcHJvYmUgc2V0IGlmIGl0IGhhcyBiZWNvbWUgZW1wdHkuCi0gICAgICAgICAgICBp
ZiAoIXByb2JlU2V0LnByb2Jlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9wcm9i
ZVNldHNCeUJyZWFrcG9pbnQuZGVsZXRlKHByb2JlU2V0LmJyZWFrcG9pbnQpOwotICAgICAgICAg
ICAgICAgIHByb2JlU2V0LndpbGxSZW1vdmUoKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1v
dmVkLCB7cHJvYmVTZXR9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAg
IF9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIGxldCBw
cm9iZVNldCA9IHRoaXMuX3Byb2JlU2V0c0J5QnJlYWtwb2ludC5nZXQoYnJlYWtwb2ludCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggNWY1YzE4NDkxNmRjZTVmNTJm
ZjViMTU5YjFkNmVmYWYwY2ExYjc3Zi4uNWY5MGFhZGJjNDk0ZGFmNDY2OGRiM2Y1ZDkxNzBkZWI1
Mjk5MWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtOTUyLDEw
ICs5NTIsMTQgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAotICAg
ICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UaW1lbGluZS5FdmVudFR5cGUuUHJvYmVT
YW1wbGU6CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVsaW5lLkV2ZW50
VHlwZS5Qcm9iZVNhbXBsZTogeworICAgICAgICAgICAgbGV0IHByb2JlID0gV0kuZGVidWdnZXJN
YW5hZ2VyLnByb2JlRm9ySWRlbnRpZmllcihyZWNvcmRQYXlsb2FkLmRhdGEucHJvYmVJZCk7Cisg
ICAgICAgICAgICBpZiAocHJvYmUuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50KQorICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHByb2JlLmJy
ZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOworCiAgICAgICAgICAgICAvLyBQYXNzIHRoZSBz
dGFydFRpbWUgYXMgdGhlIGVuZFRpbWUgc2luY2UgdGhpcyByZWNvcmQgdHlwZSBoYXMgbm8gZHVy
YXRpb24uCi0gICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIucHJvYmVGb3JJZGVudGlmaWVyKHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlkKS5icmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuU2NyaXB0
VGltZWxpbmVSZWNvcmQoV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlByb2JlU2Ft
cGxlUmVjb3JkZWQsIHN0YXJ0VGltZSwgc3RhcnRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2Rl
TG9jYXRpb24sIHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlkKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVsaW5lLkV2ZW50VHlwZS5UaW1lcklu
c3RhbGw6CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihlbmRUaW1lKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggNWRiMjcx
NWViYzIyODRjOTZiMWNiNmY5ZjYzNGU1YjQyODdmNmM3NC4uOWExMTU4ZmU2NTQ2Zjk5ZmFiYmRi
MDRmZTI5ZmRjOWZhMTM4MjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbApAQCAtMTI3LDYgKzEyNyw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9JbmxpbmVTd2F0Y2guY3NzIj4KICAgICA8bGluayByZWw9InN0
eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lucHV0UG9wb3Zlci5jc3MiPgogICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5jc3MiPgorICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxl
bWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5ZXJE
ZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVm
PSJWaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVs
PSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmNzcyI+CkBAIC0z
NDksNiArMzUwLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZl
ci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtlck9ic2VydmVy
LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbGxlY3Rpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ29uc29sZU1lc3NhZ2UuanMiPjwvc2NyaXB0PgpA
QCAtMzY5LDcgKzM3MSw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BcHBsaWNhdGlvbkNh
Y2hlTWFuaWZlc3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQmFja0Zv
cndhcmRFbnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Cb3hTaGFk
b3cuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludC5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVJbnN0cnVtZW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVVRpbWVsaW5lLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4K
QEAgLTQxNiw2ICs0MTcsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFi
YXNlT2JqZWN0U3RvcmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9Jc3N1ZU1lc3NhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9MYXllci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlv
dXRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTcxNiw2ICs3MTgsNyBAQAogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9JbmxpbmVTd2F0Y2guanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9JbnB1dFBvcG92ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Jc3N1ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
SmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0JyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQnJlYWtwb2ludC5qcwppbmRleCA5YTIwOWU4Mjg2YmJlNWI2ODk1ZmVjNDk5ZTAw
YWZkYmJiZGRjYzhjLi5mNDA2ODdiY2YzY2MzMzM4MTY4N2NkODhhZGI4ODk3NWQ1NDliMmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJl
YWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQnJlYWtwb2ludC5qcwpAQCAtMjUsMTA4ICsyNSw2MyBAQAogCiBXSS5CcmVha3BvaW50ID0g
Y2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKHNv
dXJjZUNvZGVMb2NhdGlvbiwge2NvbnRlbnRJZGVudGlmaWVyLCBkaXNhYmxlZCwgY29uZGl0aW9u
LCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKHtkaXNh
YmxlZCwgY29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV0ku
U291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVu
dGlmaWVyIHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0cmluZyIpOwotICAgICAg
ICBjb25zb2xlLmFzc2VydCghZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkID09PSAiYm9vbGVh
biIpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghY29uZGl0aW9uIHx8IHR5cGVvZiBjb25kaXRp
b24gPT09ICJzdHJpbmciKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWlnbm9yZUNvdW50IHx8
ICFpc05hTihpZ25vcmVDb3VudCkpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghYXV0b0NvbnRp
bnVlIHx8IHR5cGVvZiBhdXRvQ29udGludWUgPT09ICJib29sZWFuIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFkaXNhYmxlZCB8fCB0eXBlb2YgZGlzYWJsZWQgPT09ICJib29sZWFuIiwgZGlz
YWJsZWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCghY29uZGl0aW9uIHx8IHR5cGVvZiBjb25k
aXRpb24gPT09ICJzdHJpbmciLCBjb25kaXRpb24pOworICAgICAgICBjb25zb2xlLmFzc2VydCgh
aWdub3JlQ291bnQgfHwgIWlzTmFOKGlnbm9yZUNvdW50KSwgaWdub3JlQ291bnQpOworICAgICAg
ICBjb25zb2xlLmFzc2VydCghYXV0b0NvbnRpbnVlIHx8IHR5cGVvZiBhdXRvQ29udGludWUgPT09
ICJib29sZWFuIiwgYXV0b0NvbnRpbnVlKTsKIAogICAgICAgICBzdXBlcigpOwogCi0gICAgICAg
IHRoaXMuX2lkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291
cmNlQ29kZUxvY2F0aW9uOworICAgICAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5z
dGFudGlhdGVkIGRpcmVjdGx5LiBDcmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXSS5CcmVha3BvaW50
ICYmIHRoaXMgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKIAotICAgICAgICBsZXQgc291cmNl
Q29kZSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOwotICAgICAgICBpZiAo
c291cmNlQ29kZSkgewotICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBzb3Vy
Y2VDb2RlLmNvbnRlbnRJZGVudGlmaWVyOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNv
bnRlbnRJZGVudGlmaWVyIHx8IGNvbnRlbnRJZGVudGlmaWVyID09PSB0aGlzLl9jb250ZW50SWRl
bnRpZmllciwgIlRoZSBjb250ZW50IGlkZW50aWZpZXIgZnJvbSB0aGUgc291cmNlIGNvZGUgc2hv
dWxkIG1hdGNoIHRoZSBnaXZlbiB2YWx1ZS4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAg
ICB0aGlzLl9jb250ZW50SWRlbnRpZmllciA9IGNvbnRlbnRJZGVudGlmaWVyIHx8IG51bGw7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyIHx8IHRoaXMuX2lz
U3BlY2lhbCgpLCAiVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhIGNvbnRlbnQgaWRlbnRpZmllciBm
b3IgYSBicmVha3BvaW50LiIpOwotCi0gICAgICAgIHRoaXMuX3NjcmlwdElkZW50aWZpZXIgPSBz
b3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS5pZCA6IG51bGw7Ci0g
ICAgICAgIHRoaXMuX3RhcmdldCA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBz
b3VyY2VDb2RlLnRhcmdldCA6IG51bGw7CiAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJs
ZWQgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlvbiB8fCAiIjsK
ICAgICAgICAgdGhpcy5faWdub3JlQ291bnQgPSBpZ25vcmVDb3VudCB8fCAwOwogICAgICAgICB0
aGlzLl9hdXRvQ29udGludWUgPSBhdXRvQ29udGludWUgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMu
X2FjdGlvbnMgPSBbXTsKLSAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTsKLQotICAgICAg
ICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2Rl
TG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25M
b2NhdGlvbkNoYW5nZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24u
YWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuRGlzcGxheUxvY2F0
aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdl
ZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gSW1wb3J0IC8gRXhwb3J0CiAKLSAgICBzdGF0aWMg
ZnJvbUpTT04oanNvbikKLSAgICB7Ci0gICAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBudWxsOwot
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBCcmVha3BvaW50KG5ldyBXSS5Tb3VyY2VDb2Rl
TG9jYXRpb24oc291cmNlQ29kZSwganNvbi5saW5lTnVtYmVyIHx8IDAsIGpzb24uY29sdW1uTnVt
YmVyIHx8IDApLCB7Ci0gICAgICAgICAgICAvLyBUaGUgJ3VybCcgZmFsbGJhY2sgaXMgZm9yIHRy
YW5zaXRpb25pbmcgZnJvbSBvbGRlciBmcm9udGVuZHMgYW5kIHNob3VsZCBiZSByZW1vdmVkLgot
ICAgICAgICAgICAgY29udGVudElkZW50aWZpZXI6IGpzb24uY29udGVudElkZW50aWZpZXIgfHwg
anNvbi51cmwsCi0gICAgICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKLSAgICAgICAg
ICAgIGNvbmRpdGlvbjoganNvbi5jb25kaXRpb24sCi0gICAgICAgICAgICBpZ25vcmVDb3VudDog
anNvbi5pZ25vcmVDb3VudCwKLSAgICAgICAgICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29u
dGludWUsCi0gICAgICAgIH0pOwotICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5h
Y3Rpb25zLm1hcCgoYWN0aW9uSlNPTikgPT4gV0kuQnJlYWtwb2ludEFjdGlvbi5mcm9tSlNPTihh
Y3Rpb25KU09OLCBicmVha3BvaW50KSk7Ci0gICAgICAgIHJldHVybiBicmVha3BvaW50OwotICAg
IH0KLQogICAgIHRvSlNPTihrZXkpCiAgICAgewotICAgICAgICAvLyBUaGUgaWQsIHNjcmlwdElk
ZW50aWZpZXIsIHRhcmdldCwgYW5kIHJlc29sdmVkIHN0YXRlIGFyZSB0aWVkIHRvIHRoZSBjdXJy
ZW50IHNlc3Npb24sIHNvIGRvbid0IGluY2x1ZGUgdGhlbSBmb3Igc2VyaWFsaXphdGlvbi4KLSAg
ICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAgICBjb250ZW50SWRlbnRpZmllcjogdGhpcy5f
Y29udGVudElkZW50aWZpZXIsCi0gICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24ubGluZU51bWJlciwKLSAgICAgICAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlciwKLSAgICAgICAgICAgIGRpc2FibGVkOiB0
aGlzLl9kaXNhYmxlZCwKLSAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5fY29uZGl0aW9uLAot
ICAgICAgICAgICAgaWdub3JlQ291bnQ6IHRoaXMuX2lnbm9yZUNvdW50LAotICAgICAgICAgICAg
YWN0aW9uczogdGhpcy5fYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYWN0aW9uLnRvSlNPTigpKSwK
LSAgICAgICAgICAgIGF1dG9Db250aW51ZTogdGhpcy5fYXV0b0NvbnRpbnVlLAotICAgICAgICB9
OwotICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCi0gICAg
ICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVO
dW1iZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAg
ICAgICBsZXQganNvbiA9IHt9OworICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCisgICAgICAg
ICAgICBqc29uLmRpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAgIGlmICh0aGlzLmVk
aXRhYmxlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9uKQorICAgICAgICAgICAg
ICAgIGpzb24uY29uZGl0aW9uID0gdGhpcy5fY29uZGl0aW9uOworICAgICAgICAgICAgaWYgKHRo
aXMuX2lnbm9yZUNvdW50KQorICAgICAgICAgICAgICAgIGpzb24uaWdub3JlQ291bnQgPSB0aGlz
Ll9pZ25vcmVDb3VudDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hY3Rpb25zLmxlbmd0aCkKKyAg
ICAgICAgICAgICAgICBqc29uLmFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9
PiBhY3Rpb24udG9KU09OKCkpOworICAgICAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSkK
KyAgICAgICAgICAgICAgICBqc29uLmF1dG9Db250aW51ZSA9IHRoaXMuX2F1dG9Db250aW51ZTsK
KyAgICAgICAgfQogICAgICAgICByZXR1cm4ganNvbjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMK
IAotICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKSB7IHJldHVybiB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb247IH0KLSAgICBnZXQgY29udGVudElkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9j
b250ZW50SWRlbnRpZmllcjsgfQotICAgIGdldCBzY3JpcHRJZGVudGlmaWVyKCkgeyByZXR1cm4g
dGhpcy5fc2NyaXB0SWRlbnRpZmllcjsgfQotICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlz
Ll90YXJnZXQ7IH0KLQotICAgIGdldCBpZGVudGlmaWVyKCkKKyAgICBnZXQgZ2xvYmFsKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pZDsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBz
dWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAg
IHNldCBpZGVudGlmaWVyKGlkKQorICAgIGdldCByZW1vdmFibGUoKQogICAgIHsKLSAgICAgICAg
dGhpcy5faWQgPSBpZCB8fCBudWxsOworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNz
ZXMgaWYgbmVlZGVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBnZXQgcmVz
b2x2ZWQoKQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5f
cmVzb2x2ZWQ7Ci0gICAgfQotCi0gICAgc2V0IHJlc29sdmVkKHJlc29sdmVkKQotICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX3Jlc29sdmVkID09PSByZXNvbHZlZCkKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCghcmVzb2x2ZWQgfHwgdGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uLnNvdXJjZUNvZGUgfHwgdGhpcy5faXNTcGVjaWFsKCksICJCcmVha3BvaW50cyBt
dXN0IGhhdmUgYSBTb3VyY2VDb2RlIHRvIGJlIHJlc29sdmVkLiIsIHRoaXMpOwotCi0gICAgICAg
IHRoaXMuX3Jlc29sdmVkID0gcmVzb2x2ZWQgfHwgZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlk
Q2hhbmdlKTsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4K
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGdldCBkaXNhYmxlZCgpCkBAIC0x
NTEsNiArMTA2LDkgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIHNldCBjb25kaXRpb24oY29uZGl0aW9uKQogICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiBjb25kaXRpb24gPT09ICJzdHJpbmciKTsKKwogICAgICAgICBpZiAodGhpcy5f
Y29uZGl0aW9uID09PSBjb25kaXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2MSwx
MSArMTE5LDE1IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICBnZXQgaWdub3JlQ291bnQoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2lnbm9y
ZUNvdW50OwogICAgIH0KIAogICAgIHNldCBpZ25vcmVDb3VudChpZ25vcmVDb3VudCkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGlnbm9yZUNvdW50ID49IDAsICJJZ25vcmUgY291bnQgY2Fubm90IGJl
IG5lZ2F0aXZlLiIpOwogICAgICAgICBpZiAoaWdub3JlQ291bnQgPCAwKQogICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMTgwLDExICsxNDIsMTUgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFr
cG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBhdXRvQ29udGludWUoKQogICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAg
cmV0dXJuIHRoaXMuX2F1dG9Db250aW51ZTsKICAgICB9CiAKICAgICBzZXQgYXV0b0NvbnRpbnVl
KGNvbnQpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlz
KTsKKwogICAgICAgICBpZiAodGhpcy5fYXV0b0NvbnRpbnVlID09PSBjb250KQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xOTUsMTEgKzE2MSwxNSBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3Mg
QnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGFjdGlvbnMoKQogICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAg
cmV0dXJuIHRoaXMuX2FjdGlvbnM7CiAgICAgfQogCiAgICAgZ2V0IHByb2JlQWN0aW9ucygpCiAg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAg
ICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoZnVuY3Rpb24oYWN0aW9uKSB7CiAgICAg
ICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Q
cm9iZTsKICAgICAgICAgfSk7CkBAIC0yMDgsMjcgKzE3OCwzNCBAQCBXSS5CcmVha3BvaW50ID0g
Y2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgIGN5Y2xlVG9OZXh0TW9kZSgp
CiAgICAgewogICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgewotICAgICAgICAgICAgLy8gV2hl
biBjeWNsaW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdoZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0
byBlbmFibGVkLgotICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSBmYWxzZTsKKyAgICAg
ICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAgICAgICAgICAgLy8gV2hlbiBjeWNs
aW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdoZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFi
bGVkLgorICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbnRpbnVlID0gZmFsc2U7CisgICAgICAg
ICAgICB9CisKICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLmF1dG9Db250aW51ZSkgewot
ICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGlmICh0
aGlzLmF1dG9Db250aW51ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVl
OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dGhpcy5hY3Rpb25zLmxlbmd0aCkgewotICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSB0
cnVlOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5s
ZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAg
dGhpcy5kaXNhYmxlZCA9IHRydWU7CiAgICAgfQogCi0gICAgY3JlYXRlQWN0aW9uKHR5cGUsIHBy
ZWNlZGluZ0FjdGlvbiwgZGF0YSkKKyAgICBjcmVhdGVBY3Rpb24odHlwZSwge2RhdGEsIHByZWNl
ZGluZ0FjdGlvbn0gPSB7fSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRp
dGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBuZXdBY3Rpb24gPSBuZXcgV0kuQnJlYWtwb2lu
dEFjdGlvbih0aGlzLCB0eXBlLCBkYXRhIHx8IG51bGwpOwogCiAgICAgICAgIGlmICghcHJlY2Vk
aW5nQWN0aW9uKQpAQCAtMjQ5LDYgKzIyNiw4IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVh
a3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICByZWNyZWF0ZUFjdGlvbih0eXBlLCBhY3Rp
b25Ub1JlcGxhY2UpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxl
LCB0aGlzKTsKKwogICAgICAgICBsZXQgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0
aW9uVG9SZXBsYWNlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAg
ICAgICAgaWYgKGluZGV4ID09PSAtMSkKQEAgLTI2NSw2ICsyNDQsOCBAQCBXSS5CcmVha3BvaW50
ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgcmVtb3ZlQWN0aW9u
KGFjdGlvbikKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRo
aXMpOworCiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24p
OwogICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogICAgICAgICBpZiAoaW5k
ZXggPT09IC0xKQpAQCAtMjgwLDYgKzI2MSw4IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVh
a3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBjbGVhckFjdGlvbnModHlwZSkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAg
IGlmICghdHlwZSkKICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMgPSBbXTsKICAgICAgICAgZWxz
ZQpAQCAtMjg4LDE3ICsyNzEsNjQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9CiAKLSAgICBzYXZl
SWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCisgICAgcmVtb3ZlKCkKICAgICB7Ci0gICAgICAgIGNv
b2tpZVsiYnJlYWtwb2ludC1jb250ZW50LWlkZW50aWZpZXIiXSA9IHRoaXMuX2NvbnRlbnRJZGVu
dGlmaWVyOwotICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtbGluZS1udW1iZXIiXSA9IHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOwotICAgICAgICBjb29raWVbImJyZWFrcG9p
bnQtY29sdW1uLW51bWJlciJdID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJl
cjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5yZW1vdmFibGUsIHRoaXMpOworCisgICAg
ICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgfQorCisgICAg
b3B0aW9uc1RvUHJvdG9jb2woKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5l
ZGl0YWJsZSwgdGhpcyk7CisKKyAgICAgICAgbGV0IHBheWxvYWQgPSB7fTsKKworICAgICAgICBp
ZiAodGhpcy5fY29uZGl0aW9uKQorICAgICAgICAgICAgcGF5bG9hZC5jb25kaXRpb24gPSB0aGlz
Ll9jb25kaXRpb247CisKKyAgICAgICAgaWYgKHRoaXMuX2FjdGlvbnMubGVuZ3RoKSB7CisgICAg
ICAgICAgICBwYXlsb2FkLmFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBh
Y3Rpb24udG9Qcm90b2NvbCgpKS5maWx0ZXIoKGFjdGlvbikgPT4geworICAgICAgICAgICAgICAg
IGlmIChhY3Rpb24udHlwZSAhPT0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZykKKyAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIS9cJFx7
Lio/XH0vLnRlc3QoYWN0aW9uLmRhdGEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKKworICAgICAgICAgICAgICAgIGxldCBsZXhlciA9IG5ldyBXSS5CcmVha3BvaW50TG9nTWVz
c2FnZUxleGVyOworICAgICAgICAgICAgICAgIGxldCB0b2tlbnMgPSBsZXhlci50b2tlbml6ZShh
Y3Rpb24uZGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKCF0b2tlbnMpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZUxpdGVy
YWwgPSB0b2tlbnMucmVkdWNlKCh0ZXh0LCB0b2tlbikgPT4geworICAgICAgICAgICAgICAgICAg
ICBpZiAodG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5
cGUuUGxhaW5UZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQgKyB0b2tl
bi5kYXRhLmVzY2FwZUNoYXJhY3RlcnMoImBcXCIpOworICAgICAgICAgICAgICAgICAgICBpZiAo
dG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuRXhw
cmVzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgIiR7IiArIHRv
a2VuLmRhdGEgKyAifSI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAg
ICAgICAgICAgIH0sICIiKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gImNvbnNv
bGUubG9nKGAiICsgdGVtcGxhdGVMaXRlcmFsICsgImApIjsKKyAgICAgICAgICAgICAgICBhY3Rp
b24udHlwZSA9IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKHRoaXMuX2F1dG9Db250aW51ZSkKKyAgICAgICAgICAgIHBheWxvYWQuYXV0b0NvbnRpbnVl
ID0gdGhpcy5fYXV0b0NvbnRpbnVlOworCisgICAgICAgIGlmICh0aGlzLl9pZ25vcmVDb3VudCkK
KyAgICAgICAgICAgIHBheWxvYWQuaWdub3JlQ291bnQgPSB0aGlzLl9pZ25vcmVDb3VudDsKKwor
ICAgICAgICByZXR1cm4gIWlzRW1wdHlPYmplY3QocGF5bG9hZCkgPyBwYXlsb2FkIDogdW5kZWZp
bmVkOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAoQ2FsbGVkIGJ5IEJyZWFrcG9pbnRBY3Rp
b24pCiAKICAgICBicmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKGFjdGlvbikKICAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBp
bmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwogICAgICAgICBjb25zb2xlLmFz
c2VydChpbmRleCAhPT0gLTEpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQpAQCAtMzA2LDM0
ICszMzYsMTQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5CcmVha3Bv
aW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQot
ICAgIF9pc1NwZWNpYWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5pc0VxdWFsKG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHks
IEluZmluaXR5KSk7Ci0gICAgfQotCi0gICAgX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hh
bmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOwotICAg
IH0KLQotICAgIF9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKGV2ZW50
KQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtw
b2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOwotICAgIH0K
IH07CiAKIFdJLkJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiYnJlYWtwb2ludCI7CiAKIFdJ
LkJyZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAgRGlzYWJsZWRTdGF0ZURpZENoYW5nZTogImJyZWFr
cG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCi0gICAgUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCiAgICAgQ29uZGl0
aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1jb25kaXRpb24tZGlkLWNoYW5nZSIsCiAgICAgSWdu
b3JlQ291bnREaWRDaGFuZ2U6ICJicmVha3BvaW50LWlnbm9yZS1jb3VudC1kaWQtY2hhbmdlIiwK
ICAgICBBY3Rpb25zRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1hY3Rpb25zLWRpZC1jaGFuZ2UiLAog
ICAgIEF1dG9Db250aW51ZURpZENoYW5nZTogImJyZWFrcG9pbnQtYXV0by1jb250aW51ZS1kaWQt
Y2hhbmdlIiwKLSAgICBMb2NhdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtbG9jYXRpb24tZGlk
LWNoYW5nZSIsCi0gICAgRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1kaXNw
bGF5LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMK
aW5kZXggZDhiZTdmNWQyZThiZDg2YjUzYmJjNTliMjhmYTFmN2JmMDMyMDZkZi4uMzRmYjBhM2Q4
YWFlZmU0NGU1MTMyNjc5MGZkNjYyNGExMjI2NWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rp
b24uanMKQEAgLTI3LDggKzI3LDkgQEAgV0kuQnJlYWtwb2ludEFjdGlvbiA9IGNsYXNzIEJyZWFr
cG9pbnRBY3Rpb24KIHsKICAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB0eXBlLCBkYXRhKQog
ICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJy
ZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkJyZWFr
cG9pbnRBY3Rpb24uVHlwZSkuaW5jbHVkZXModHlwZSkpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBl
KS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkYXRhIHx8
IHR5cGVvZiBkYXRhID09PSAic3RyaW5nIiwgZGF0YSk7CiAKICAgICAgICAgdGhpcy5fYnJlYWtw
b2ludCA9IGJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9p
bnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJl
YWtwb2ludC5qcwppbmRleCA3OTk0NTliN2I2NDFmYzZmZGJhMDc1ZmIyODc5M2Y5N2Q4MDc3ZjZl
Li4wNTM3ZDM2YmJiN2QwZWVlMWFmZmEwYjM2ZGE0YTJmMTVjY2M0NTc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJl
YWtwb2ludC5qcwpAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAgKi8KIAotV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKK1dJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50
IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNvbnN0cnVjdG9yKGRvbU5vZGVPckluZm8s
IHR5cGUsIHtkaXNhYmxlZH0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRv
bU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlIHx8IHR5cGVvZiBkb21Ob2RlT3JJbmZv
ID09PSAib2JqZWN0IiwgZG9tTm9kZU9ySW5mbyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9i
amVjdC52YWx1ZXMoV0kuRE9NQnJlYWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7
CiAKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkfSk7CiAKICAgICAg
ICAgaWYgKGRvbU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlKSB7CiAgICAgICAgICAg
ICB0aGlzLl9kb21Ob2RlSWRlbnRpZmllciA9IGRvbU5vZGVPckluZm8uaWQ7CkBAIC00NCwxNSAr
NDQsMTQgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwotICAgICAg
ICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwogICAgIH0KIAogICAgIC8vIFN0
YXRpYwogCi0gICAgc3RhdGljIGRlc2VyaWFsaXplKHNlcmlhbGl6ZWRJbmZvKQorICAgIHN0YXRp
YyBmcm9tSlNPTihqc29uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXSS5ET01CcmVha3Bv
aW50KHNlcmlhbGl6ZWRJbmZvLCBzZXJpYWxpemVkSW5mby50eXBlLCB7Ci0gICAgICAgICAgICBk
aXNhYmxlZDogISFzZXJpYWxpemVkSW5mby5kaXNhYmxlZCwKKyAgICAgICAgcmV0dXJuIG5ldyBX
SS5ET01CcmVha3BvaW50KGpzb24sIGpzb24udHlwZSwgeworICAgICAgICAgICAgZGlzYWJsZWQ6
IGpzb24uZGlzYWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNjIsMjEgKzYxLDYgQEAg
V0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9CiAgICAgZ2V0IHBhdGgoKSB7IHJl
dHVybiB0aGlzLl9wYXRoOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQotICAgIHsKLSAgICAgICAg
cmV0dXJuIHRoaXMuX2Rpc2FibGVkOwotICAgIH0KLQotICAgIHNldCBkaXNhYmxlZChkaXNhYmxl
ZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PT0gZGlzYWJsZWQpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKLQot
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01CcmVha3BvaW50LkV2
ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkKTsKLSAgICB9Ci0KICAgICBnZXQgZG9tTm9kZUlkZW50
aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGVJZGVudGlmaWVyOwpA
QCAtOTYsNiArODAsMTMgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgZGF0YSk7CiAgICAgfQogCisg
ICAgcmVtb3ZlKCkKKyAgICB7CisgICAgICAgIHN1cGVyLnJlbW92ZSgpOworCisgICAgICAgIFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KHRoaXMpOworICAgIH0KKwog
ICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVsi
ZG9tLWJyZWFrcG9pbnQtdXJsIl0gPSB0aGlzLl91cmw7CkBAIC0xMDUsMTMgKzk2LDEwIEBAIFdJ
LkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICB0b0pTT04oa2V5KQogICAgIHsKLSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAg
ICB1cmw6IHRoaXMuX3VybCwKLSAgICAgICAgICAgIHBhdGg6IHRoaXMuX3BhdGgsCi0gICAgICAg
ICAgICB0eXBlOiB0aGlzLl90eXBlLAotICAgICAgICB9OwotICAgICAgICBpZiAodGhpcy5fZGlz
YWJsZWQpCi0gICAgICAgICAgICBqc29uLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgbGV0IGpz
b24gPSBzdXBlci50b0pTT04oa2V5KTsKKyAgICAgICAganNvbi51cmwgPSB0aGlzLl91cmw7Cisg
ICAgICAgIGpzb24ucGF0aCA9IHRoaXMuX3BhdGg7CisgICAgICAgIGpzb24udHlwZSA9IHRoaXMu
X3R5cGU7CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkK
ICAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmRvbUJyZWFrcG9pbnRzLmtleVBhdGhd
ID0gdGhpcy5fdXJsICsgIjoiICsgdGhpcy5fcGF0aCArICI6IiArIHRoaXMuX3R5cGU7CiAgICAg
ICAgIHJldHVybiBqc29uOwpAQCAtMTI2LDUgKzExNCw0IEBAIFdJLkRPTUJyZWFrcG9pbnQuVHlw
ZSA9IHsKIAogV0kuRE9NQnJlYWtwb2ludC5FdmVudCA9IHsKICAgICBET01Ob2RlQ2hhbmdlZDog
ImRvbS1icmVha3BvaW50LWRvbS1ub2RlLWNoYW5nZWQiLAotICAgIERpc2FibGVkU3RhdGVDaGFu
Z2VkOiAiZG9tLWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJl
YWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9F
dmVudEJyZWFrcG9pbnQuanMKaW5kZXggZmYxZTc5Y2ZlNGRiYTVkNmM0NDI4YWI0N2ZjYWI0OTM1
ZmViMDJhZS4uY2I1ZjFiZWQ4NmM4NjFiODI2MjVmYTZiZGFjNDc4NmY4NWQ5YWQ4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJl
YWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRXZlbnRCcmVha3BvaW50LmpzCkBAIC0yMywyOCArMjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBF
dmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLkV2ZW50QnJlYWtwb2ludCA9IGNs
YXNzIEV2ZW50QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKLSAgICBjb25zdHJ1
Y3Rvcih0eXBlLCB7ZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBkaXNhYmxlZH0gPSB7fSkKKyAg
ICBjb25zdHJ1Y3Rvcih0eXBlLCB7ZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBkaXNhYmxlZCwg
YWN0aW9ucywgY29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAg
IHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTog
RE9NRGVidWdnZXIuRXZlbnRCcmVha3BvaW50VHlwZXMuVGltZXIgd2FzIHJlbW92ZWQuCisgICAg
ICAgIGlmICh0eXBlID09PSAidGltZXIiKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50TmFt
ZSkgeworICAgICAgICAgICAgY2FzZSAic2V0SW50ZXJ2YWwiOgorICAgICAgICAgICAgICAgIHR5
cGUgPSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbDsKKyAgICAgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICAgICAgY2FzZSAic2V0VGltZW91dCI6CisgICAgICAgICAgICAgICAg
dHlwZSA9IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmFzc2Vy
dChPYmplY3QudmFsdWVzKFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0eXBlKSwg
dHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFldmVudE5hbWUgfHwgdHlwZSA9PT0gV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUsIGV2ZW50TmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFldmVudExpc3RlbmVyIHx8IHR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLCBldmVu
dExpc3RlbmVyKTsKKworICAgICAgICBzdXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9u
cywgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0pOwogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0
eXBlOwogICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSBldmVudE5hbWUgfHwgbnVsbDsKICAgICAg
ICAgdGhpcy5fZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIgfHwgbnVsbDsKLSAgICAgICAg
dGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0
aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0aWMg
ZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuRXZlbnRCcmVha3Bv
aW50KHNlcmlhbGl6ZWRJbmZvLnR5cGUsIHsKLSAgICAgICAgICAgIGV2ZW50TmFtZTogc2VyaWFs
aXplZEluZm8uZXZlbnROYW1lLAotICAgICAgICAgICAgZGlzYWJsZWQ6ICEhc2VyaWFsaXplZElu
Zm8uZGlzYWJsZWQsCisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkV2ZW50QnJlYWtw
b2ludChqc29uLnR5cGUsIHsKKyAgICAgICAgICAgIGV2ZW50TmFtZToganNvbi5ldmVudE5hbWUs
CisgICAgICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKKyAgICAgICAgICAgIGNvbmRp
dGlvbjoganNvbi5jb25kaXRpb24sCisgICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25v
cmVDb3VudCwKKyAgICAgICAgICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUsCiAg
ICAgICAgIH0pOworICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zPy5t
YXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNP
TiwgYnJlYWtwb2ludCkpIHx8IFtdOworICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKICAgICB9
CiAKICAgICAvLyBQdWJsaWMKQEAgLTUzLDE5ICs3MiwzNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQg
PSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBnZXQgZXZlbnRO
YW1lKCkgeyByZXR1cm4gdGhpcy5fZXZlbnROYW1lOyB9CiAgICAgZ2V0IGV2ZW50TGlzdGVuZXIo
KSB7IHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVyOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQor
ICAgIGdldCBnbG9iYWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOwor
ICAgICAgICBzd2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50OgorICAgICAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBET00uc2V0QnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIgZGlkIG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0Lgor
ICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBET01EZWJ1Z2dlci5zZXRFdmVudEJy
ZWFrcG9pbnQgZGlkIG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAg
ICByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lciA/IEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFu
ZCgiRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIiwgIm9wdGlvbnMiKSA6IEluc3Bl
Y3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIuc2V0RXZlbnRCcmVha3BvaW50Iiwg
Im9wdGlvbnMiKTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsK
KyAgICByZW1vdmUoKQorICAgIHsKKyAgICAgICAgc3VwZXIucmVtb3ZlKCk7CiAKLSAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgaWYgKHRoaXMuX2V2ZW50TGlzdGVuZXIpCisg
ICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
KHRoaXMuX2V2ZW50TGlzdGVuZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KHRoaXMpOwogICAgIH0KIAogICAg
IHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKQEAgLTc1LDE5ICsxMDksMTQgQEAgV0kuRXZl
bnRCcmVha3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgICAgICAgICBjb29raWVbImV2ZW50LWJyZWFrcG9pbnQtZXZlbnQtbmFtZSJdID0gdGhpcy5f
ZXZlbnROYW1lOwogICAgICAgICBpZiAodGhpcy5fZXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAg
IGNvb2tpZVsiZXZlbnQtYnJlYWtwb2ludC1ldmVudC1saXN0ZW5lciJdID0gdGhpcy5fZXZlbnRM
aXN0ZW5lci5ldmVudExpc3RlbmVySWQ7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKLSAg
ICAgICAgICAgIGNvb2tpZVsiZXZlbnQtYnJlYWtwb2ludC1kaXNhYmxlZCJdID0gdGhpcy5fZGlz
YWJsZWQ7CiAgICAgfQogCiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBqc29u
ID0gewotICAgICAgICAgICAgdHlwZTogdGhpcy5fdHlwZSwKLSAgICAgICAgfTsKKyAgICAgICAg
bGV0IGpzb24gPSBzdXBlci50b0pTT04oa2V5KTsKKyAgICAgICAganNvbi50eXBlID0gdGhpcy5f
dHlwZTsKICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TmFtZSkKICAgICAgICAgICAgIGpzb24uZXZl
bnROYW1lID0gdGhpcy5fZXZlbnROYW1lOwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0g
ICAgICAgICAgICBqc29uLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgaWYgKGtleSA9PT0gV0ku
T2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQogICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9y
ZXMuZXZlbnRCcmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX3R5cGUgKyAodGhpcy5fZXZlbnRO
YW1lID8gIjoiICsgdGhpcy5fZXZlbnROYW1lIDogIiIpOwogICAgICAgICByZXR1cm4ganNvbjsK
QEAgLTk5LDExICsxMjgsNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZSA9IHsKICAgICBJbnRl
cnZhbDogImludGVydmFsIiwKICAgICBMaXN0ZW5lcjogImxpc3RlbmVyIiwKICAgICBUaW1lb3V0
OiAidGltZW91dCIsCi0KLSAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBET01EZWJ1Z2dl
ci5FdmVudEJyZWFrcG9pbnRUeXBlcy5UaW1lciB3YXMgcmVtb3ZlZC4KLSAgICBUaW1lcjogInRp
bWVyIiwKLX07Ci0KLVdJLkV2ZW50QnJlYWtwb2ludC5FdmVudCA9IHsKLSAgICBEaXNhYmxlZFN0
YXRlQ2hhbmdlZDogImV2ZW50LWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0phdmFTY3JpcHRCcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZjExOTc4
OTU2ZjUzZjlkMzZhNjdlYjM2NjJiMTM0YTVjNGUwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9p
bnQuanMKQEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludCA9IGNsYXNzIEphdmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtw
b2ludAoreworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbiwge2NvbnRlbnRJZGVu
dGlmaWVyLCBkaXNhYmxlZCwgY29uZGl0aW9uLCBhY3Rpb25zLCBpZ25vcmVDb3VudCwgYXV0b0Nv
bnRpbnVlfSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxv
Y2F0aW9uIGluc3RhbmNlb2YgV0kuU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVyIHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9
PT0gInN0cmluZyIpOworCisgICAgICAgIHN1cGVyKHtkaXNhYmxlZCwgY29uZGl0aW9uLCBhY3Rp
b25zLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSk7CisKKyAgICAgICAgdGhpcy5faWQgPSBu
dWxsOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRp
b247CisKKyAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24u
c291cmNlQ29kZTsKKyAgICAgICAgaWYgKHNvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyID0gc291cmNlQ29kZS5jb250ZW50SWRlbnRpZmllcjsKKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50SWRlbnRpZmllciB8fCBjb250ZW50SWRlbnRp
ZmllciA9PT0gdGhpcy5fY29udGVudElkZW50aWZpZXIsICJUaGUgY29udGVudCBpZGVudGlmaWVy
IGZyb20gdGhlIHNvdXJjZSBjb2RlIHNob3VsZCBtYXRjaCB0aGUgZ2l2ZW4gdmFsdWUuIik7Cisg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBjb250
ZW50SWRlbnRpZmllciB8fCBudWxsOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250
ZW50SWRlbnRpZmllciB8fCB0aGlzLl9pc1NwZWNpYWwoKSwgIlRoZXJlIHNob3VsZCBhbHdheXMg
YmUgYSBjb250ZW50IGlkZW50aWZpZXIgZm9yIGEgYnJlYWtwb2ludC4iKTsKKworICAgICAgICB0
aGlzLl9zY3JpcHRJZGVudGlmaWVyID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/
IHNvdXJjZUNvZGUuaWQgOiBudWxsOworICAgICAgICB0aGlzLl90YXJnZXQgPSBzb3VyY2VDb2Rl
IGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS50YXJnZXQgOiBudWxsOworICAgICAg
ICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbi5hZGRFdmVudExpc3RlbmVyKFdJLlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5Mb2NhdGlv
bkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdJLlNv
dXJjZUNvZGVMb2NhdGlvbi5FdmVudC5EaXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3Vy
Y2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKKyAgICB9CisKKyAg
ICAvLyBJbXBvcnQgLyBFeHBvcnQKKworICAgIHN0YXRpYyBmcm9tSlNPTihqc29uKQorICAgIHsK
KyAgICAgICAgY29uc3Qgc291cmNlQ29kZSA9IG51bGw7CisgICAgICAgIGxldCBicmVha3BvaW50
ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24o
c291cmNlQ29kZSwganNvbi5saW5lTnVtYmVyIHx8IDAsIGpzb24uY29sdW1uTnVtYmVyIHx8IDAp
LCB7CisgICAgICAgICAgICAvLyBUaGUgJ3VybCcgZmFsbGJhY2sgaXMgZm9yIHRyYW5zaXRpb25p
bmcgZnJvbSBvbGRlciBmcm9udGVuZHMgYW5kIHNob3VsZCBiZSByZW1vdmVkLgorICAgICAgICAg
ICAgY29udGVudElkZW50aWZpZXI6IGpzb24uY29udGVudElkZW50aWZpZXIgfHwganNvbi51cmws
CisgICAgICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKKyAgICAgICAgICAgIGNvbmRp
dGlvbjoganNvbi5jb25kaXRpb24sCisgICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25v
cmVDb3VudCwKKyAgICAgICAgICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUsCisg
ICAgICAgIH0pOworICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zPy5t
YXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNP
TiwgYnJlYWtwb2ludCkpIHx8IFtdOworICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKKyAgICB9
CisKKyAgICB0b0pTT04oa2V5KQorICAgIHsKKyAgICAgICAgLy8gVGhlIGlkLCBzY3JpcHRJZGVu
dGlmaWVyLCB0YXJnZXQsIGFuZCByZXNvbHZlZCBzdGF0ZSBhcmUgdGllZCB0byB0aGUgY3VycmVu
dCBzZXNzaW9uLCBzbyBkb24ndCBpbmNsdWRlIHRoZW0gZm9yIHNlcmlhbGl6YXRpb24uCisgICAg
ICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpzb24uY29udGVudElk
ZW50aWZpZXIgPSB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAganNvbi5saW5lTnVt
YmVyID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGpzb24u
Y29sdW1uTnVtYmVyID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAg
ICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQorICAgICAgICAg
ICAganNvbltXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl9jb250
ZW50SWRlbnRpZmllciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVy
ICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAg
cmV0dXJuIGpzb247CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgc291cmNlQ29k
ZUxvY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uOyB9CisgICAgZ2V0
IGNvbnRlbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5fY29udGVudElkZW50aWZpZXI7IH0K
KyAgICBnZXQgc2NyaXB0SWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMuX3NjcmlwdElkZW50aWZp
ZXI7IH0KKyAgICBnZXQgdGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fdGFyZ2V0OyB9CisKKyAgICBn
ZXQgZ2xvYmFsKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNl
IFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAg
ICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAg
ICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoK
KyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtw
b2ludDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KKworICAgIGdldCByZW1vdmFibGUoKQorICAgIHsKKyAgICAgICAg
c3dpdGNoICh0aGlzKSB7CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFs
bEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci51
bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZ2V0IGVkaXRh
YmxlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRl
YnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNl
IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2Fz
ZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAg
ICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50Ogor
ICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDoK
KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIGdldCBpZGVudGlmaWVyKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9pZDsKKyAgICB9CisKKyAgICBzZXQgaWRlbnRpZmllcihpZCkKKyAgICB7CisgICAg
ICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICB9CisKKyAgICBnZXQgcmVzb2x2ZWQoKQor
ICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVkOworICAgIH0KKworICAgIHNldCBy
ZXNvbHZlZChyZXNvbHZlZCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCA9PT0g
cmVzb2x2ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXJlc29sdmVkIHx8IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlIHx8IHRoaXMu
X2lzU3BlY2lhbCgpLCAiQnJlYWtwb2ludHMgbXVzdCBoYXZlIGEgU291cmNlQ29kZSB0byBiZSBy
ZXNvbHZlZC4iLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHJlc29sdmVkIHx8
IGZhbHNlOworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOworICAgIH0KKwor
ICAgIHJlbW92ZSgpCisgICAgeworICAgICAgICBzdXBlci5yZW1vdmUoKTsKKworICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzKTsKKyAgICB9CisKKyAgICBz
YXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbImphdmFz
Y3JpcHQtYnJlYWtwb2ludC1jb250ZW50LWlkZW50aWZpZXIiXSA9IHRoaXMuX2NvbnRlbnRJZGVu
dGlmaWVyOworICAgICAgICBjb29raWVbImphdmFzY3JpcHQtYnJlYWtwb2ludC1saW5lLW51bWJl
ciJdID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGNvb2tp
ZVsiamF2YXNjcmlwdC1icmVha3BvaW50LWNvbHVtbi1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAg
X2lzU3BlY2lhbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uLmlzRXF1YWwobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5m
aW5pdHkpKTsKKyAgICB9CisKKyAgICBfc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2Vk
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEp
OworICAgIH0KKworICAgIF9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2Vk
KGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCBldmVu
dC5kYXRhKTsKKyAgICB9Cit9OworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5UeXBlSWRlbnRp
ZmllciA9ICJqYXZhc2NyaXB0LWJyZWFrcG9pbnQiOworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5FdmVudCA9IHsKKyAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAiamF2YXNjcmlwdC1icmVh
a3BvaW50LXJlc29sdmVkLXN0YXRlLWRpZC1jaGFuZ2UiLAorICAgIExvY2F0aW9uRGlkQ2hhbmdl
OiAiamF2YXNjcmlwdC1icmVha3BvaW50LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAorICAgIERpc3Bs
YXlMb2NhdGlvbkRpZENoYW5nZTogImphdmFzY3JpcHQtYnJlYWtwb2ludC1kaXNwbGF5LWxvY2F0
aW9uLWRpZC1jaGFuZ2UiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcwppbmRleCBhNTEzY2UzMThhNmZiMzkyYjU0
MjI3OWVmNWVlNDk5ODkxZmU3ZjM4Li45YjYyN2U1OTg4OTk4YjJjYzMwMGFmZTZmMjY0Zjk0ZjBm
YmU1MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvUHJvYmVTZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Byb2JlU2V0LmpzCkBAIC00Miw3ICs0Miw3IEBAIFdJLlByb2JlU2V0ID0gY2xh
c3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVu
dExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFp
blJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdJLlByb2JlLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhp
cyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50
LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7
CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC02OCw3ICs2OCw3IEBAIFdJLlByb2JlU2V0ID0g
Y2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGNyZWF0ZVByb2JlKGV4cHJl
c3Npb24pCiAgICAgewotICAgICAgICB0aGlzLmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZSwgbnVsbCwgZXhwcmVzc2lvbik7CisgICAgICAgIHRo
aXMuYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2Jl
LCB7ZGF0YTogZXhwcmVzc2lvbn0pOwogICAgIH0KIAogICAgIGFkZFByb2JlKHByb2JlKQpAQCAt
MTAxLDcgKzEwMSw3IEBAIFdJLlByb2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgICAgICBXSS5GcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2
ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhp
cyk7CiAgICAgICAgIFdJLlByb2JlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuUHJvYmUuRXZlbnQu
U2FtcGxlQWRkZWQsIHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLkJy
ZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVk
U3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0
aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0
aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCiAg
ICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcwppbmRleCA0N2VlZjY0ZTNkY2RmMTY3
NDI5ODk2MTJjYTVmOGQ3ZmJkODU2OWIzLi5mNWJjOTVlZDJhODBkMjc0YmJlYjIyZjU0Yjg4ZTM0
ODJjNjhlNjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcwpAQCAtMjMsMjYgKzIzLDI1IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuVVJMQnJlYWtwb2lu
dCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLlVSTEJyZWFrcG9p
bnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNv
bnN0cnVjdG9yKHR5cGUsIHVybCwge2Rpc2FibGVkfSA9IHt9KQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5VUkxCcmVha3BvaW50LlR5cGUpLmluY2x1ZGVz
KHR5cGUpLCB0eXBlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHVybCA9PT0gInN0
cmluZyIsIHVybCk7CiAKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVk
fSk7CiAKICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuX3VybCA9IHVy
bDsKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykK
KyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0ku
VVJMQnJlYWtwb2ludChzZXJpYWxpemVkSW5mby50eXBlLCBzZXJpYWxpemVkSW5mby51cmwsIHsK
LSAgICAgICAgICAgIGRpc2FibGVkOiAhIXNlcmlhbGl6ZWRJbmZvLmRpc2FibGVkLAorICAgICAg
ICByZXR1cm4gbmV3IFdJLlVSTEJyZWFrcG9pbnQoanNvbi50eXBlLCBqc29uLnVybCwgeworICAg
ICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApA
QCAtNTEsMTkgKzUwLDE2IEBAIFdJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9
CiAgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQogCi0gICAgZ2V0IGRpc2FibGVk
KCkKKyAgICBnZXQgZ2xvYmFsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxl
ZDsKKyAgICAgICAgcmV0dXJuIHRoaXMgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQ7CiAgICAgfQogCi0gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQorICAg
IHJlbW92ZSgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVk
KQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzdXBlci5yZW1vdmUoKTsKIAotICAgICAg
ICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLlVSTEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQp
OworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtwb2ludCh0aGlz
KTsKICAgICB9CiAKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCkBAIC03NCwyMiAr
NzAsMTUgQEAgV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIHRvSlNPTihrZXkpCiAgICAgewotICAgICAgICBsZXQganNvbiA9IHsK
LSAgICAgICAgICAgIHR5cGU6IHRoaXMuX3R5cGUsCi0gICAgICAgICAgICB1cmw6IHRoaXMuX3Vy
bCwKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAg
anNvbi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtl
eSk7CisgICAgICAgIGpzb24udHlwZSA9IHRoaXMuX3R5cGU7CisgICAgICAgIGpzb24udXJsID0g
dGhpcy5fdXJsOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1i
b2wpCiAgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy51cmxCcmVha3BvaW50cy5rZXlQ
YXRoXSA9IHRoaXMuX3R5cGUgKyAiOiIgKyB0aGlzLl91cmw7CiAgICAgICAgIHJldHVybiBqc29u
OwogICAgIH0KIH07CiAKLVdJLlVSTEJyZWFrcG9pbnQuRXZlbnQgPSB7Ci0gICAgRGlzYWJsZWRT
dGF0ZUNoYW5nZWQ6ICJ1cmwtYnJlYWtwb2ludC1kaXNhYmxlZC1zdGF0ZS1jaGFuZ2VkIiwKLX07
Ci0KIFdJLlVSTEJyZWFrcG9pbnQuVHlwZSA9IHsKICAgICBUZXh0OiAidGV4dCIsCiAgICAgUmVn
dWxhckV4cHJlc3Npb246ICJyZWdleCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9UZXN0Lmh0bWwKaW5kZXggMWZhOWM5ZTRiODVkYTBmMTk5NzA2ZDYwNWQwOTYwMjMy
NWYwYmI0ZC4uZWVkYThlYjEzNTJiNzcyMGY3MTIxYzY1MDU4ZDM4NmZiZTI3ZGRjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMTA4LDYg
KzEwOCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJPYnNlcnZlci5qcyI+
PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbnNvbGVNZXNzYWdlLmpzIj48L3NjcmlwdD4KQEAgLTEy
Niw3ICsxMjcsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQW5pbWF0aW9uLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0FuaW1hdGlvbkNvbGxlY3Rpb24uanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQm94U2hhZG93LmpzIj48L3NjcmlwdD4K
LSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvQ1BVSW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9DUFVUaW1lbGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9DUFVUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CkBAIC0xNjksNiArMTY5LDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVj
dFN0b3JlSW5kZXguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSXNzdWVN
ZXNzYWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0phdmFTY3JpcHRC
cmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheWVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheW91dEluc3RydW1lbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5b3V0VGltZWxpbmVSZWNvcmQu
anMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcwppbmRleCAwM2Y2
YzY5NzFhYTI2ODQ5ZmFjMzA4NzM5NDhjZmYzMjM4NTlkYzY5Li42MWNiMDBhMzJhMDQzZTA1NjY1
MDM2NWI3ZTUyZDBhYjZlZGQ2NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5q
cwpAQCAtMTE1LDcgKzExNSw3IEBAIFdJLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gY2xhc3MgQnJl
YWtwb2ludEFjdGlvblZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9hcHBlbmRBY3Rpb25C
dXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMu
X2FjdGlvbi5icmVha3BvaW50LmNyZWF0ZUFjdGlvbih0aGlzLl9hY3Rpb24udHlwZSwgdGhpcy5f
YWN0aW9uKTsKKyAgICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMuX2FjdGlvbi5icmVha3BvaW50
LmNyZWF0ZUFjdGlvbih0aGlzLl9hY3Rpb24udHlwZSwge3ByZWNlZWRpbmdBY3Rpb246IHRoaXMu
X2FjdGlvbn0pOwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5icmVha3BvaW50QWN0aW9uVmlld0Fw
cGVuZEFjdGlvblZpZXcodGhpcywgbmV3QWN0aW9uKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxl
bWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVh
a3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4IDA1YWM1ZmRmZWZhODgyYThiNGQ1Yjg2OGM2YzVk
ZDQxM2I3NjRlODkuLmMzNGUyNTMxMzQ1ZjAxNmU1NTIzOTQxMTg3ZjBlNjg1M2NhOGRlZWEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpAQCAtMzQsMTUgKzM0LDYgQEAK
IAogICAgIGZpbGw6IHZhcigtLWJyZWFrcG9pbnQtY29sb3IpOwogICAgIHN0cm9rZTogaHNsYSgw
LCAwJSwgMTAlLCAwLjMpOwotICAgIGZpbHRlcjogZ3JheXNjYWxlKCk7Ci19Ci0KLS5pdGVtLmJy
ZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQgewotICAgIGZpbHRlcjog
bm9uZTsKLX0KLQotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5h
Y3RpdmUpIC50cmVlLW91dGxpbmU6Zm9jdXMtd2l0aGluIC5pdGVtLmJyZWFrcG9pbnQuc2VsZWN0
ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQgewotICAgIHN0cm9rZTogdmFyKC0t
c2VsZWN0ZWQtZm9yZWdyb3VuZC1jb2xvcik7CiB9CiAKIC5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1
cyA+IC5zdGF0dXMtaW1hZ2UuYXV0by1jb250aW51ZTo6YWZ0ZXIgewpAQCAtNTksODAgKzUwLDEy
IEBAIGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAu
dHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuCiAgICAgZmlsbDogdmFyKC0tYnJlYWtwb2ludC1j
b2xvci1kaXNhYmxlZCk7CiB9CiAKLS5pdGVtLmJyZWFrcG9pbnQgLnN1YnRpdGxlLmZvcm1hdHRl
ZC1sb2NhdGlvbiB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0uYnJlYWtwb2ludC1k
ZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVtZW50LWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9p
bnQtZXhjZXB0aW9uLWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlw
ZUljb25zLnN2ZyNFeGNlcHRpb24tbGlnaHQpOwotfQotCi0uYnJlYWtwb2ludC1hc3NlcnRpb24t
aWNvbiAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fz
c2VydGlvbi1saWdodCk7Ci19Ci0KLS5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsK
LSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjTWljcm90YXNrLWxpZ2h0
KTsKLX0KLQotLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24geworLml0ZW0uYnJlYWtwb2lu
dC5wYXVzZWQgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2
ZyNQYXVzZWRCcmVha3BvaW50LWxpZ2h0KTsKIH0KIAotLyogV2hlbiBhbmltYXRpbmcgYSBsYXll
ciBvbiB0b3Agb2YgYSB0cmVlIGVsZW1lbnQncyBpY29uLCBtb3ZlIHRoZSBtYWluCi1pY29uIHRv
IHRoZSBpY29uIGVsZW1lbnQncyBiYWNrZ3JvdW5kIHNvIGFuaW1hdGlvbnMgYXJlIGxheWVyZWQg
b24gdG9wLiAqLwotLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gewotICAgIGJh
Y2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWxp
Z2h0KTsKLSAgICBjb250ZW50OiAnJzsKLX0KLQotLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWlj
b24gLmljb24gPiBzcGFuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwot
ICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotCi0gICAgYm9yZGVy
LXJhZGl1czogNTAlOwotICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7Ci0gICAgdHJhbnNpdGlvbjog
bm9uZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjE2LCAzMCUsIDQyJSk7Ci19Ci0KLS5k
YXRhLXVwZGF0ZWQuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4gewot
ICAgIGJvcmRlci1yYWRpdXM6IDA7Ci0gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjg1KTsKLSAgICB0
cmFuc2l0aW9uOiBhbGwgLjRzIGVhc2Utb3V0OwotICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEo
MjE2LCAzMCUsIDQyJSwgMC4xKTsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgewotICAgIC5icmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1pY29uIC5pY29uIHsK
LSAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3Rh
dGVtZW50LWRhcmspOwotICAgIH0KLSAgICAKLSAgICAuYnJlYWtwb2ludC1leGNlcHRpb24taWNv
biAuaWNvbiB7Ci0gICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNF
eGNlcHRpb24tZGFyayk7Ci0gICAgfQotCi0gICAgLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24g
Lmljb24gewotICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNz
ZXJ0aW9uLWRhcmspOwotICAgIH0KLQotICAgIC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5p
Y29uIHsKLSAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3Jv
dGFzay1kYXJrKTsKLSAgICB9Ci0KLSAgICAuYnJlYWtwb2ludC1wYXVzZWQtaWNvbiAuaWNvbiB7
CisgICAgLml0ZW0uYnJlYWtwb2ludC5wYXVzZWQgLmljb24gewogICAgICAgICBjb250ZW50OiB1
cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUGF1c2VkQnJlYWtwb2ludC1kYXJrKTsKICAgICB9
Ci0KLSAgICAuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiB7Ci0gICAgICAgIGJh
Y2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRh
cmspOwotICAgIH0KLSAgICAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3Bv
aW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5kZXggMjYzZjA3YzI4ZTdmOWRiZWMwODdj
YWIzYWU3NTk2NDEwYjVlZmZkNS4uY2YyZTA2ZWU4ZjU2ZDA2N2FhNmRjMDU5MmE2YTYxOTJkMDg4
OWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjUsMjYgKzI1
LDI2IEBACiAKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVl
RWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9y
KGJyZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJy
ZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGV9ID0ge30pCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7
CiAKLSAgICAgICAgaWYgKCFjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWUgPSBXSS5C
cmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVDbGFzc05hbWU7CisgICAg
ICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFt
ZXMgPSBbXTsKKyAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJicmVha3BvaW50Iik7CiAKLSAgICAg
ICAgY29uc3Qgc3VidGl0bGUgPSBudWxsOwotICAgICAgICBzdXBlcihbImJyZWFrcG9pbnQiLCBj
bGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUsIGJyZWFrcG9pbnQpOworICAgICAgICBzdXBlcihj
bGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIGJyZWFrcG9pbnQpOworCisgICAgICAgIC8vIFRo
aXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIENyZWF0ZSBhIGNv
bmNyZXRlIHN1YmNsYXNzIGluc3RlYWQuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29u
c3RydWN0b3IgIT09IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCAmJiB0aGlzIGluc3RhbmNlb2Yg
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50ID0g
YnJlYWtwb2ludDsKICAgICAgICAgdGhpcy5fcHJvYmVTZXQgPSBudWxsOwogCiAgICAgICAgIHRo
aXMuX2xpc3RlbmVyU2V0ID0gbmV3IFdJLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIkJyZWFrcG9p
bnRUcmVlRWxlbWVudCBsaXN0ZW5lcnMiKTsKLSAgICAgICAgaWYgKCF0aXRsZSkKLSAgICAgICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQu
RXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5n
ZSk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJy
ZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVz
KTsKLSAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwgV0kuQnJl
YWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7
Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFr
cG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsK
LSAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlz
Ll91cGRhdGVTdGF0dXMpOworICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVh
a3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMu
dXBkYXRlU3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtw
b2ludCwgV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMudXBk
YXRlU3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVidWdn
ZXJNYW5hZ2VyLCBXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlk
Q2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJl
Z2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2Jl
U2V0QWRkZWQsIHRoaXMuX3Byb2JlU2V0QWRkZWQpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNl
dC5yZWdpc3RlcihXSS5kZWJ1Z2dlck1hbmFnZXIsIFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
cm9iZVNldFJlbW92ZWQsIHRoaXMuX3Byb2JlU2V0UmVtb3ZlZCk7CiAKQEAgLTU1LDggKzU1LDgg
QEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50
IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVn
aXN0ZXIodGhpcy5zdGF0dXMsICJjbGljayIsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNr
ZWQpOwogCiAgICAgICAgIGlmICghdGl0bGUpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVUaXRs
ZXMoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CisgICAgICAgICAgICB0aGlzLnVw
ZGF0ZVRpdGxlcygpOworICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cygpOwogCiAgICAgICAgIHRo
aXMuX2ljb25BbmltYXRpb25MYXllckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CiAgICAgICAgIHRoaXMuaWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkFu
aW1hdGlvbkxheWVyRWxlbWVudCk7CkBAIC03MCwxMSArNzAsNiBAQCBXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFs
VHJlZUVsZQogICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKICAgICB9CiAKLSAgICBn
ZXQgZmlsdGVyYWJsZURhdGEoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5i
cmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyXX07Ci0gICAgfQotCiAgICAgb25kZWxldGUoKQog
ICAgIHsKICAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0
aGF0IHdpbGwgcmVtb3ZlIHRoaXMKQEAgLTgyLDggKzc3LDggQEAgV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRy
ZWVFbGUKICAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUg
aXQgKGUuZy4gVGV4dEVkaXRvcikuCiAgICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5
Ym9hcmRTaG9ydGN1dCA9IHRydWU7CiAKLSAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5p
c0JyZWFrcG9pbnRSZW1vdmFibGUodGhpcy5fYnJlYWtwb2ludCkpIHsKLSAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHRoaXMuX2JyZWFrcG9pbnQpOworICAg
ICAgICBpZiAodGhpcy5fYnJlYWtwb2ludC5yZW1vdmFibGUpIHsKKyAgICAgICAgICAgIHRoaXMu
X2JyZWFrcG9pbnQucmVtb3ZlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAg
fQogCkBAIC0xMzQsNDEgKzEyOSwyNyBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFz
cyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgICAg
ICBzdXBlci5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7CiAgICAgfQog
Ci0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX3VwZGF0ZVRpdGxlcygp
Ci0gICAgewotICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fYnJlYWtwb2lu
dC5zb3VyY2VDb2RlTG9jYXRpb247CisgICAgZ2V0IGxpc3RlbmVyU2V0KCkgeyByZXR1cm4gdGhp
cy5fbGlzdGVuZXJTZXQ7IH0KIAotICAgICAgICB2YXIgZGlzcGxheUxpbmVOdW1iZXIgPSBzb3Vy
Y2VDb2RlTG9jYXRpb24uZGlzcGxheUxpbmVOdW1iZXI7Ci0gICAgICAgIHZhciBkaXNwbGF5Q29s
dW1uTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7Ci0gICAg
ICAgIGlmIChkaXNwbGF5Q29sdW1uTnVtYmVyID4gMCkKLSAgICAgICAgICAgIHRoaXMubWFpblRp
dGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQ6JWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIg
KyAxLCBkaXNwbGF5Q29sdW1uTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBh
bmQgY29sdW1uIG51bWJlcnMgYXJlIDEtYmFzZWQuCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAg
IHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQiKS5mb3JtYXQoZGlzcGxheUxp
bmVOdW1iZXIgKyAxKTsgLy8gVGhlIHVzZXIgdmlzaWJsZSBsaW5lIG51bWJlciBpcyAxLWJhc2Vk
LgotCi0gICAgICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkg
ewotICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHNvdXJjZUNvZGVMb2NhdGlvbi5mb3JtYXR0
ZWRMb2NhdGlvblN0cmluZygpOwotCi0gICAgICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9u
Lmhhc0Zvcm1hdHRlZExvY2F0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVs
ZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9j
YXRpb25TdHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
dGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgICAgIHRo
aXMudG9vbHRpcCA9IHRoaXMubWFpblRpdGxlICsgIiBcdTIwMTQgIiArIFdJLlVJU3RyaW5nKCJv
cmlnaW5hbGx5ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9u
U3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0YXR1cygpCisgICAg
dXBkYXRlU3RhdHVzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zdGF0dXMpCiAgICAgICAg
ICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5C
cmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lLCB0
aGlzLl9icmVha3BvaW50LmRpc2FibGVkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0
LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVT
dHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwotICAgICAgICB0
aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0
dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQucmVzb2x2ZWQg
JiYgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCk7CisgICAgICAgIGlmICh0
aGlzLl9icmVha3BvaW50LmVkaXRhYmxlKQorICAgICAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NM
aXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGlu
dWVTdHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAgIH0K
IAorICAgIHVwZGF0ZVRpdGxlcygpCisgICAgeworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1
YmNsYXNzZXMgaWYgbmVlZGVkLgorICAgIH0KKworICAgIC8vIFByaXZhdGUKKwogICAgIF9hZGRQ
cm9iZVNldChwcm9iZVNldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0
IGluc3RhbmNlb2YgV0kuUHJvYmVTZXQpOwpAQCAtMjMwLDE3ICsyMTEsNiBAQCBXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5H
ZW5lcmFsVHJlZUVsZQogICAgICAgICB9LCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVE
YXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsKICAgICB9CiAKLSAgICBfYnJlYWtwb2ludExv
Y2F0aW9uRGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZl
bnQudGFyZ2V0ID09PSB0aGlzLl9icmVha3BvaW50KTsKLQotICAgICAgICAvLyBUaGUgQnJlYWtw
b2ludCBoYXMgYSBuZXcgZGlzcGxheSBTb3VyY2VDb2RlLiBUaGUgc2lkZWJhciB3aWxsIHJlbW92
ZSB1cywgYW5kIG9uZGV0YWNoKCkgd2lsbCBjbGVhciBsaXN0ZW5lcnMuCi0gICAgICAgIGlmIChl
dmVudC5kYXRhLm9sZERpc3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLl9icmVha3BvaW50LmRpc3Bs
YXlTb3VyY2VDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VwZGF0
ZVRpdGxlcygpOwotICAgIH0KLQogICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24oZXZl
bnQpCiAgICAgewogICAgICAgICAvLyBUbyBwcmV2ZW50IHRoZSB0cmVlIGVsZW1lbnQgZnJvbSBz
ZWxlY3RpbmcuCkBAIC0yNTMsMTIgKzIyMyw5IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9
IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAg
ICAgfQogfTsKIAotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxl
Q2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24iOwogV0kuQnJlYWtwb2lu
dFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInN0YXR1cy1p
bWFnZSI7Ci1XSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxl
Q2xhc3NOYW1lID0gInJlc29sdmVkIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJ
bWFnZUF1dG9Db250aW51ZVN0eWxlQ2xhc3NOYW1lID0gImF1dG8tY29udGludWUiOwogV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJk
aXNhYmxlZCI7Ci1XSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHls
ZUNsYXNzTmFtZSA9ICJmb3JtYXR0ZWQtbG9jYXRpb24iOwogV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50LlByb2JlRGF0YVVwZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJkYXRhLXVwZGF0ZWQiOwogCiBX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9u
ID0gNDAwOyAvLyBtaWxsaXNlY29uZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMK
aW5kZXggNzVjYzdkNDZhNmE4NmI4ZTZhNDQyYmRhMDFiOTljNTJkZDk0YjJkNS4uNTdjM2M0MWJm
NTQwODIzMGQ3NjU4NWFlMGYzZjY4ZmViODI4NGI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJl
ZUVsZW1lbnQuanMKQEAgLTEwNyw2ICsxMDcsMTQgQEAgV0kuQ2FsbEZyYW1lVHJlZUVsZW1lbnQg
PSBjbGFzcyBDYWxsRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWUK
ICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CiAgICAgfQogCisgICAgcG9wdWxhdGVDb250
ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY2Fs
bEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAgICAgICAgIFdJLmFwcGVuZENvbnRleHRN
ZW51SXRlbXNGb3JTb3VyY2VDb2RlKGNvbnRleHRNZW51LCB0aGlzLl9jYWxsRnJhbWUuc291cmNl
Q29kZUxvY2F0aW9uKTsKKworICAgICAgICBzdXBlci5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRl
eHRNZW51LCBldmVudCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3VwZGF0ZVN0
YXR1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4IDI5NmMyYTU0MjNhMGY2OTFlYWM3ZDJkMGU5MzYw
MGY1MTU0ZjBkZTguLjE5ZjY0YmQzOThmZTE1ZDI5MDFlYzJkODI3MTM4YTIxNjI0YjE3YzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRWaWV3LmpzCkBAIC05Myw3ICs5Myw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBX
SS5NZWRpYVRpbWVsaW5lVmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwog
ICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0ku
QnJlYWtwb2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2Fn
ZSkgeworICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVz
c2FnZSkgewogICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2Nh
dGlvbikKICAgICAgICAgICAgICAgICByZXR1cm4gV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJl
cHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNw
bGF5U291cmNlQ29kZSwgZXh0cmFBcmd1bWVudHMpOwogICAgICAgICB9CkBAIC0yMzQsNyArMjM0
LDcgQEAgV0kuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcK
ICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRnJhbWUpCiAgICAg
ICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QubWFpblJlc291cmNlOwogCi0gICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKICAgICAgICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICAg
ICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291
cmNlQ29kZTsKICAgICAgICAgfQpAQCAtMjc5LDcgKzI3OSw3IEBAIFdJLkNvbnRlbnRWaWV3ID0g
Y2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICByZXR1cm4gdHJ1
ZTsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuVGltZWxpbmUp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9m
IFdJLklzc3VlTWVzc2FnZSkKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXSS5Jc3N1ZU1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Qu
c291cmNlQ29kZUxvY2F0aW9uOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFu
Y2VvZiBXSS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRleHRNZW51VXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKaW5kZXggZDBiNDA1MmQzMGRlZGNhYTky
NTZiY2Y4NWY0MTJjMTMxZWRmNjcyNS4uZWMyY2M2NDVlZjkzMGI5YTc4MTgwYTc0OTVjZmE2OGJl
NWQ2NDA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKQEAgLTExOCw3ICsx
MTgsNyBAQCBXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yU291cmNlQ29kZSA9IGZ1bmN0aW9u
KGNvbnRleHRNZW51LCBzb3VyY2VDb2RlT3JMb2NhdAogICAgICAgICAgICAgfSk7CiAgICAgICAg
IH0gZWxzZSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5n
KCJBZGQgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLmFkZEJyZWFrcG9pbnQobmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pKTsKKyAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChuZXcgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQobG9jYXRpb24pKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKaW5kZXggNmIz
M2IyY2UzYzFmMmVlNGVhYTEzYzgzYWZhMzRhZGRiZjBhNDQ3Ni4uMTc0ZDIyYTM3MDBkOTE4YmY5
YmJkNjFmNDVhYjlkMzA1NWMwODdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzCkBAIC0yMywyOCArMjMsMjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0uYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3Itc3VidHJl
ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJy
ZWFrcG9pbnQuZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludFN1YnRyZWVN
b2RpZmllZC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRy
aWJ1dGUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRl
bS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsK
ICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludEF0
dHJpYnV0ZU1vZGlmaWVkLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQt
Zm9yLW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5p
dGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3QoLnBhdXNlZCkgLmljb24gewogICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50Tm9kZVJl
bW92ZWQtbGlnaHQpOwogfQogCiBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7
Ci0gICAgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90
KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5k
b20uc3VidHJlZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludFN1YnRyZWVNb2RpZmll
ZC1kYXJrKTsKICAgICB9CiAKLSAgICAuYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0
cmlidXRlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAg
IC5pdGVtLmJyZWFrcG9pbnQuZG9tLmF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmlj
b24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJl
YWtwb2ludEF0dHJpYnV0ZU1vZGlmaWVkLWRhcmspOwogICAgIH0KIAotICAgIC5icmVha3BvaW50
LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1p
Y29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1yZW1vdmVkOm5vdCgu
cGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNET01CcmVha3BvaW50Tm9kZVJlbW92ZWQtZGFyayk7CiAgICAgfQotfQpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qcwppbmRleCBhZDZiYjFhMTQ5MjIyY2MzZDY3MWI2ZmRiZTJjNDQ4MmMwZDUwYjY3Li42M2U2
MTZhOTE3YTIwNjAzNzdiM2Y1YWUwNGFmYzA2YjAzYjk3YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0yMywyNiArMjMsMjAgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQgPSBjbGFzcyBET01CcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJl
ZUVsZW1lbnQKK1dJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9p
bnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAogewotICAgIGNv
bnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0
cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50
KTsKIAotICAgICAgICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJkb20iLCBgYnJl
YWtwb2ludC1mb3ItJHticmVha3BvaW50LnR5cGV9YF07Ci0gICAgICAgIGlmIChjbGFzc05hbWUp
Ci0gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFB
cnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOwor
ICAgICAgICBjbGFzc05hbWVzLnB1c2goImRvbSIsIGJyZWFrcG9pbnQudHlwZSk7CiAKICAgICAg
ICAgaWYgKCF0aXRsZSkKICAgICAgICAgICAgIHRpdGxlID0gV0kuRE9NQnJlYWtwb2ludFRyZWVF
bGVtZW50LmRpc3BsYXlOYW1lRm9yVHlwZShicmVha3BvaW50LnR5cGUpOwogCi0gICAgICAgIGNv
bnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1
YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRp
bGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRo
aXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFn
ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2Vw
YXJhdGVseSA9IHRydWU7CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0
aXRsZX0pOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtNjEsMTA4ICs1NSw0IEBAIFdJLkRP
TUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCBl
eHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQog
ICAgIH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAg
ICAgc3VwZXIub25hdHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdl
ZCwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5h
YmxlZERpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLQotICAgICAgICB0aGlz
Ll9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnRDbGlja2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVt
ZW50Rm9jdXNlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsK
LSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSB0aGlzLl9z
dGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKTsKLQotICAgICAgICB0aGlzLnN0
YXR1cy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVt
ZW50Q2xpY2tlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3Vz
IiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5z
dGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFn
ZUVsZW1lbnRNb3VzZURvd24pOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwotICAg
IH0KLQotICAgIG9uZGV0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7Ci0K
LSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7
Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5f
Ym91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVt
b3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xp
Y2tlZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNl
ZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3du
ID0gbnVsbDsKLSAgICB9Ci0KLSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBz
ZXQgdGhpcyBmbGFnIHNvIHRoYXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwot
ICAgICAgICAvLyBCcmVha3BvaW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2Fz
IGRlbGV0ZWQgZnJvbQotICAgICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20g
b3V0c2lkZSBpdCAoZS5nLiBUZXh0RWRpdG9yKS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFE
ZWxldGVLZXlib2FyZFNob3J0Y3V0ID0gdHJ1ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgb25zcGFjZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUo
Y29udGV4dE1lbnUsIGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0OwotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2Fi
bGVkID8gV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlz
YWJsZSBCcmVha3BvaW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWws
IHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgZnVuY3Rpb24o
KSB7Ci0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2lu
dChicmVha3BvaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0g
ICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlz
Ll90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZv
Y3VzZWQoZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1
cy4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQg
dHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
Ci0gICAgfQotCi0gICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2Fi
bGVkOwotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLnN0YXR1cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5j
bGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2Fi
bGVkU3R5bGVDbGFzc05hbWUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAg
ICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQpOwotICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcu
anMKaW5kZXggNzk5ZjY4Y2NiNjJkYTBiYTUzYmRhMDQ5OWJhYjIxZmYxMTE2ZGRlMS4uZjUzYjFm
NDU0NWZhODZkOGIxYzIyZTQ1YmY2ZDEzZTNkZWQ2NDgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250
ZW50Vmlldy5qcwpAQCAtOTUsNyArOTUsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFz
cyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICAgICAg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCwgdGhpcy5fZG9tQnJlYWtwb2ludEFkZGVkT3JS
ZW1vdmVkLCB0aGlzKTsKICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3Zl
ZCwgdGhpcy5fZG9tQnJlYWtwb2ludEFkZGVkT3JSZW1vdmVkLCB0aGlzKTsKIAotICAgICAgICAg
ICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZl
bnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxl
ZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0
aGlzLl9oYW5kbGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwogICAg
ICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9p
bnQuRXZlbnQuRE9NTm9kZUNoYW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2Rl
Q2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERp
ZENoYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3Nz
CmluZGV4IDRmYzNjNGE2ZmRjZjZmOTE2NDNkYmFlODZkMjIyNjJmNTFmMTMyNTMuLjE2MWNlZGNm
MTI3ZThmMmJiMzVlNTFmNjZmZjM0MTkxZDM0ZTYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTIzLDM2ICsyMywzNiBAQAogICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFr
cG9pbnQtZm9yLWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5p
Y29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2Vk
KSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50
QnJlYWtwb2ludEFuaW1hdGlvbkZyYW1lLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQu
YnJlYWtwb2ludC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNv
biB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5vdCgucGF1c2VkKSAuaWNvbiB7
CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2lu
dEludGVydmFsLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3It
bGlzdGVuZXI6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVh
a3BvaW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludExpc3RlbmVyLWxpZ2h0
KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJy
ZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZXZlbnQudGlt
ZW91dDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlw
ZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRUaW1lb3V0LWxpZ2h0KTsKIH0KIAogQG1lZGlhKHBy
ZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtw
b2ludC1mb3ItYW5pbWF0aW9uLWZyYW1lOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmlj
b24geworICAgIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1
c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2
ZyNFdmVudEJyZWFrcG9pbnRBbmltYXRpb25GcmFtZS1kYXJrKTsKICAgICB9Ci0gICAgCi0gICAg
LmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50
LXBhdXNlZC1pY29uKSAuaWNvbiB7CisKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVy
dmFsOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
VHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRJbnRlcnZhbC1kYXJrKTsKICAgICB9Ci0gICAg
Ci0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVh
a3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50
Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9J
bWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRMaXN0ZW5lci1kYXJrKTsKICAgICB9
Ci0gICAgCi0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3Qo
LmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKworICAgIC5pdGVtLmJyZWFrcG9pbnQu
ZXZlbnQudGltZW91dDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50VGltZW91dC1kYXJrKTsKLSAg
ICB9ICAgCisgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qcwppbmRleCBlMGJmZWJmMTFkOTE2MDJkNDk5MGYyN2IzODdhYWU5YmIwYWMxZDg5Li45Y2Y0
YTdkNWI5YjRiMzk3ODNjOWZjZGFmOWRkNThjNDY4NWZlZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxl
bWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9F
dmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMTM2ICsyMywxOSBAQAogICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLkV2ZW50QnJlYWtwb2ludFRy
ZWVFbGVtZW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5H
ZW5lcmFsVHJlZUVsZW1lbnQKK1dJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3Mg
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1l
bnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7
fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30p
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0ku
RXZlbnRCcmVha3BvaW50KTsKIAotICAgICAgICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2lu
dCIsICJldmVudCIsIGBicmVha3BvaW50LWZvci0ke2JyZWFrcG9pbnQudHlwZX1gXTsKLSAgICAg
ICAgaWYgKGNsYXNzTmFtZSkKLSAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc05hbWUp
OworICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBj
bGFzc05hbWVzID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiZXZlbnQiLCBicmVha3Bv
aW50LnR5cGUpOwogCiAgICAgICAgIGlmICghdGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9IGJy
ZWFrcG9pbnQuZXZlbnROYW1lOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAg
ICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKLQot
ICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1h
Z2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJ
LkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsK
LQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAgfQot
Ci0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBvbmF0dGFjaCgpCi0gICAgewotICAgICAgICBzdXBl
ci5vbmF0dGFjaCgpOwotCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRM
aXN0ZW5lcihXSS5FdmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRo
aXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWRE
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xp
Y2tlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZv
Y3VzZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAg
ICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVz
SW1hZ2VFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVz
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVt
ZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0K
LSAgICBvbmRldGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxs
LCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAg
ICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5k
U3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91
c2VEb3duKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQg
PSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBu
dWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51
bGw7Ci0gICAgfQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRo
aXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAg
ICAgLy8gQnJlYWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxl
dGVkIGZyb20KLSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNp
ZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRl
S2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuZXZlbnRMaXN0ZW5lcikKLSAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3Rl
bmVyKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJl
bW92ZUV2ZW50QnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
b25zcGFjZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4
dE1lbnUsIGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0OwotCi0gICAgICAgIGxldCBsYWJlbCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQg
PyBXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxl
IEJyZWFrcG9pbnQiKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShsYWJlbCwgdGhp
cy5fdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAg
ICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQotICAgICAgICAgICAgICAgIFdJ
LmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoYnJlYWtwb2ludC5l
dmVudExpc3RlbmVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAg
ICB9KTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50
Q2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsK
LSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVudCkKLSAgICB7Ci0g
ICAgICAgIC8vIFByZXZlbnQgdHJlZSBvdXRsaW5lIGZvY3VzLgotICAgICAgICBldmVudC5zdG9w
UHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3du
KGV2ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1lbnQgc2VsZWN0aW9u
LgotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfdG9nZ2xl
QnJlYWtwb2ludCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2Fi
bGVkID0gIXRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7Ci0gICAgfQotCi0gICAgX3Vw
ZGF0ZVN0YXR1cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQotICAgICAgICAg
ICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNz
TGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRT
dHlsZUNsYXNzTmFtZSwgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCk7Cisg
ICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOwogICAgIH0KIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9F
dmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzCmluZGV4IDQ3NjU3
NTJlMmYwMDNjY2U0M2M0OWEyYjZlN2NhZGZkYWMyOThmMjkuLmNkNWRmZmI0ZTdmYTNiNjRiOWYx
OGY2ZGJkOGQwNmRiYTk4N2ZiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0
aW9uR3JvdXAuY3NzCkBAIC0zNCwzICszNCwxMSBAQAogICAgIGhlaWdodDogMTJweDsKICAgICBt
YXJnaW46IDA7CiB9CisKKy5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRb
dHlwZT0iY2hlY2tib3giXSArIC5nby10by1hcnJvdyB7CisgICAgdmVydGljYWwtYWxpZ246IC0y
cHg7Cit9CisKKy5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0i
Y2hlY2tib3giXTpub3QoOmNoZWNrZWQpICsgLmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBu
b25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKaW5kZXgg
Njg2ZjlmNzk1ZmFmMTg5MGM2YjA5Y2U4MDM1ODBhY2I2N2M5YjViNS4uZWYxYmEzNWJjM2I3Yjlh
ZTljYTMwNzY4YzA4NDg3NTM4OWRhNmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVy
U2VjdGlvbkdyb3VwLmpzCkBAIC03Miw3ICs3Miw5IEBAIFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9u
R3JvdXAgPSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwIGV4dGVuZHMgV0kuRGV0YWls
CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChXSS5ET01NYW5hZ2VyLnN1cHBvcnRz
RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKCkpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ldmVu
dExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJpbnB1dCIpOworICAgICAgICAgICAgICAgIGxldCB0b2dnbGVDb250YWluZXIgPSBkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExp
c3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQgPSB0b2dnbGVDb250YWluZXIuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7CiAgICAgICAgICAgICAgICAgdGhp
cy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50LnR5cGUgPSAiY2hlY2tib3gi
OwogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRUb2dnbGUoKTsKICAgICAg
ICAgICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQuYWRk
RXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2ZW50KSA9PiB7CkBAIC04MCwxMyArODIsMjYgQEAg
V0kuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCA9IGNsYXNzIEV2ZW50TGlzdGVuZXJTZWN0aW9u
R3JvdXAgZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNFdmVu
dExpc3RlbmVyQnJlYWtwb2ludCA9ICEhdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dn
bGVFbGVtZW50LmNoZWNrZWQ7CiAgICAgICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgICAgICAg
ICBpZiAoV0kuRE9NTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50Q29uZmln
dXJhdGlvbigpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXZlYWxCcmVha3BvaW50R29U
b0Fycm93ID0gdG9nZ2xlQ29udGFpbmVyLmFwcGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJvd0J1
dHRvbigpKTsKKyAgICAgICAgICAgICAgICAgICAgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdy50
aXRsZSA9IFdJLlVJU3RyaW5nKCJSZXZlYWwgaW4gU291cmNlcyBUYWIiKTsKKyAgICAgICAgICAg
ICAgICAgICAgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdy5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5oYXNFdmVudExpc3RlbmVyQnJlYWtwb2ludCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGxldCBicmVha3BvaW50VG9TZWxlY3QgPSBXSS5kb21NYW5hZ2VyLmJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVySWQodGhpcy5fZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOworICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludFRvU2VsZWN0KTsK
KworICAgICAgICAgICAgICAgICAgICAgICAgV0kuc2hvd1NvdXJjZXNUYWIoe2JyZWFrcG9pbnRU
b1NlbGVjdH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisK
ICAgICAgICAgICAgICAgICBsZXQgdG9nZ2xlTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CiAgICAgICAgICAgICAgICAgdG9nZ2xlTGFiZWwudGV4dENvbnRlbnQgPSBXSS5V
SVN0cmluZygiQnJlYWtwb2ludCIpOwogICAgICAgICAgICAgICAgIHRvZ2dsZUxhYmVsLmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIHRo
aXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudC5jbGljaygpOwogICAgICAg
ICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgcm93cy5wdXNoKG5ldyBXSS5EZXRhaWxz
U2VjdGlvblNpbXBsZVJvdyh0b2dnbGVMYWJlbCwgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnRUb2dnbGVFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgcm93cy5wdXNoKG5ldyBXSS5EZXRh
aWxzU2VjdGlvblNpbXBsZVJvdyh0b2dnbGVMYWJlbCwgdG9nZ2xlQ29udGFpbmVyKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3Mg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJl
YWtwb2ludFRyZWVFbGVtZW50LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWU5YTExOWUwNWFkYzcxMTUxYzUy
Y2Q4YWM0MjJkNDkzMzZkYWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3MKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5pdGVtLmJyZWFrcG9pbnQu
amF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZSB7CisgICAgZmlsdGVyOiBncmF5c2Nh
bGUoKTsKK30KKworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVz
LWltYWdlLnJlc29sdmVkIHsKKyAgICBmaWx0ZXI6IG5vbmU7Cit9CisKK2JvZHk6bm90KC53aW5k
b3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3Vz
LXdpdGhpbiAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5z
dGF0dXMtaW1hZ2UucmVzb2x2ZWQgeworICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdy
b3VuZC1jb2xvcik7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3VidGl0bGUu
Zm9ybWF0dGVkLWxvY2F0aW9uIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy8qIFdo
ZW4gYW5pbWF0aW5nIGEgbGF5ZXIgb24gdG9wIG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwgbW92
ZSB0aGUgbWFpbgoraWNvbiB0byB0aGUgaWNvbiBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBhbmlt
YXRpb25zIGFyZSBsYXllcmVkIG9uIHRvcC4gKi8KKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlw
dC5saW5lIC5pY29uIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJ
Y29ucy5zdmcjUmVzdWx0TGluZS1saWdodCk7CisgICAgY29udGVudDogJyc7Cit9CisKKy5pdGVt
LmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3BhbiB7CisgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7Cisg
ICAgbGVmdDogMDsKKworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICB0cmFuc2Zvcm06IHNj
YWxlKDApOworICAgIHRyYW5zaXRpb246IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNs
KDIxNiwgMzAlLCA0MiUpOworfQorCisuZGF0YS11cGRhdGVkLml0ZW0uYnJlYWtwb2ludC5qYXZh
c2NyaXB0LmxpbmUgLmljb24gPiBzcGFuIHsKKyAgICBib3JkZXItcmFkaXVzOiAwOworICAgIHRy
YW5zZm9ybTogc2NhbGUoMC44NSk7CisgICAgdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlLW91dDsK
KyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxNiwgMzAlLCA0MiUsIDAuMSk7Cit9CisKKy5p
dGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24geworICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1s
aWdodCk7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRpb24gLmljb24g
eworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tbGln
aHQpOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuYXNzZXJ0aW9uIC5pY29uIHsK
KyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWxpZ2h0
KTsKK30KKworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7Cisg
ICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1saWdodCk7
Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAuaXRlbS5i
cmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbiB7CisgICAgICAgIGJhY2tncm91bmQtaW1h
Z2U6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRhcmspOworICAgIH0K
KworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmlj
b24geworICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRGVidWdn
ZXJTdGF0ZW1lbnQtZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2Ny
aXB0LmV4Y2VwdGlvbiAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlw
ZUljb25zLnN2ZyNFeGNlcHRpb24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2lu
dC5qYXZhc2NyaXB0LmFzc2VydGlvbiAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9J
bWFnZXMvVHlwZUljb25zLnN2ZyNBc3NlcnRpb24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0u
YnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stZGFyayk7CisgICAgfQorfQpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0
QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNjQ2YzI1YzlkNjFmNzYzOWNm
NmEzZTUxZDc0ZTFjMGM2MGI4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkphdmFTY3JpcHRCcmVh
a3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50
IGV4dGVuZHMgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IoYnJl
YWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxlfSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KTsK
KworICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBj
bGFzc05hbWVzID0gWyJsaW5lIl07CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiamF2YXNjcmlw
dCIpOworCisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOwor
CisgICAgICAgIGlmICghdGl0bGUpCisgICAgICAgICAgICB0aGlzLmxpc3RlbmVyU2V0LnJlZ2lz
dGVyKGJyZWFrcG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlk
Q2hhbmdlLCB0aGlzLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOworICAgICAgICB0aGlz
Lmxpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMudXBkYXRlU3RhdHVzKTsKKyAgICB9
CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCisgICAgeworICAg
ICAgICByZXR1cm4ge3RleHQ6IFt0aGlzLmJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXJdfTsK
KyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHVwZGF0ZVN0YXR1cygpCisgICAgewor
ICAgICAgICBzdXBlci51cGRhdGVTdGF0dXMoKTsKKworICAgICAgICBpZiAoIXRoaXMuc3RhdHVz
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50
b2dnbGUoInJlc29sdmVkIiwgdGhpcy5icmVha3BvaW50LnJlc29sdmVkICYmIFdJLmRlYnVnZ2Vy
TWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgIH0KKworICAgIHVwZGF0ZVRpdGxlcygp
CisgICAgeworICAgICAgICBzdXBlci51cGRhdGVUaXRsZXMoKTsKKworICAgICAgICBsZXQgc291
cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKKwor
ICAgICAgICBsZXQgZGlzcGxheUxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxh
eUxpbmVOdW1iZXI7CisgICAgICAgIGxldCBkaXNwbGF5Q29sdW1uTnVtYmVyID0gc291cmNlQ29k
ZUxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7CisgICAgICAgIGlmIChkaXNwbGF5Q29sdW1u
TnVtYmVyID4gMCkKKyAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxp
bmUgJWQ6JWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxLCBkaXNwbGF5Q29sdW1uTnVt
YmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYXJl
IDEtYmFzZWQuCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0ku
VUlTdHJpbmcoIkxpbmUgJWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxKTsgLy8gVGhl
IHVzZXIgdmlzaWJsZSBsaW5lIG51bWJlciBpcyAxLWJhc2VkLgorCisgICAgICAgIGlmIChzb3Vy
Y2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICAgICAgdGhpcy5z
dWJ0aXRsZSA9IHNvdXJjZUNvZGVMb2NhdGlvbi5mb3JtYXR0ZWRMb2NhdGlvblN0cmluZygpOwor
CisgICAgICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc0Zvcm1hdHRlZExvY2F0aW9u
KCkpCisgICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
Zm9ybWF0dGVkLWxvY2F0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZm9ybWF0dGVkLWxvY2F0aW9u
Iik7CisKKyAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMubWFpblRpdGxlICsgIiBcdTIw
MTQgIiArIFdJLlVJU3RyaW5nKCJvcmlnaW5hbGx5ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2Nh
dGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAg
Ly8gUHJpdmF0ZQorCisgICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZShldmVudCkKKyAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gdGhpcy5icmVha3Bv
aW50KTsKKworICAgICAgICAvLyBUaGUgQnJlYWtwb2ludCBoYXMgYSBuZXcgZGlzcGxheSBTb3Vy
Y2VDb2RlLiBUaGUgc2lkZWJhciB3aWxsIHJlbW92ZSB1cywgYW5kIG9uZGV0YWNoKCkgd2lsbCBj
bGVhciBsaXN0ZW5lcnMuCisgICAgICAgIGlmIChldmVudC5kYXRhLm9sZERpc3BsYXlTb3VyY2VD
b2RlID09PSB0aGlzLmJyZWFrcG9pbnQuZGlzcGxheVNvdXJjZUNvZGUpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRhdGVUaXRsZXMoKTsKKyAgICB9Cit9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRh
aWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDEzNDUzYzI1Y2FjZjI5MjIw
ZmRlZTQ0ODBlMTlkYjBlNjM4MTk5ZTcuLjg4MzBmM2MxZDcwZDc4MWQyN2Y1ZTZhMTA3ZTU0MGJj
ZWYzYjMxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAg
LTY4LDYgKzY4LDExIEBAIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFByb2Jl
RGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbHNTCiAgICAgICAgIH0pOwogCiAg
ICAgICAgIGluc3BlY3RlZFByb2JlU2V0cy5zb3J0KGZ1bmN0aW9uIHNvcnRCeVNvdXJjZUxvY2F0
aW9uKGFQcm9iZVNldCwgYlByb2JlU2V0KSB7CisgICAgICAgICAgICBpZiAoIShhUHJvYmVTZXQg
aW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuIDE7CisgICAgICAgICAgICBpZiAoIShiUHJvYmVTZXQgaW5zdGFuY2VvZiBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCiAgICAgICAgICAg
ICB2YXIgYUxvY2F0aW9uID0gYVByb2JlU2V0LmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9u
OwogICAgICAgICAgICAgdmFyIGJMb2NhdGlvbiA9IGJQcm9iZVNldC5icmVha3BvaW50LnNvdXJj
ZUNvZGVMb2NhdGlvbjsKICAgICAgICAgICAgIHZhciBjb21wYXJpc29uUmVzdWx0ID0gYUxvY2F0
aW9uLnNvdXJjZUNvZGUuZGlzcGxheU5hbWUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGJMb2NhdGlv
bi5zb3VyY2VDb2RlLmRpc3BsYXlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0
aW9uLmpzCmluZGV4IDgzNzczN2MwZDNhZDI4ZjhmNjUwNmQ3NmZmMTU5MDZlODM1NzE1OWUuLmM1
NGRkNzcyMmZmNzFkMzljZjVkNzBiMDI2ODY4MGY3NjZlYjhjMDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rp
b24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJv
YmVTZXREZXRhaWxzU2VjdGlvbi5qcwpAQCAtMzAsNiArMzAsMjAgQEAgV0kuUHJvYmVTZXREZXRh
aWxzU2VjdGlvbiA9IGNsYXNzIFByb2JlU2V0RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXSS5EZXRh
aWxzU2VjdGkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNl
b2YgV0kuUHJvYmVTZXQsICJJbnZhbGlkIFByb2JlU2V0IGFyZ3VtZW50OiIsIHByb2JlU2V0KTsK
IAorICAgICAgICBsZXQgdGl0bGUgPSAiIjsKKyAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5FdmVudEJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGlmIChwcm9i
ZVNldC5icmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwg
QW5pbWF0aW9uIEZyYW1lcyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtw
b2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIEludGVydmFscyIpOworICAg
ICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBX
SS5VSVN0cmluZygiQWxsIEV2ZW50cyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQu
YnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2lu
dCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwgVGltZW91dHMiKTsK
KyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aXRsZSA9IHByb2JlU2V0LmJyZWFr
cG9pbnQuZXZlbnROYW1lOworICAgICAgICB9CisKICAgICAgICAgdmFyIG9wdGlvbnNFbGVtZW50
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHZhciBkYXRhR3JpZCA9
IG5ldyBXSS5Qcm9iZVNldERhdGFHcmlkKHByb2JlU2V0KTsKIApAQCAtMzgsNyArNTIsNyBAQCBX
SS5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0gY2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBl
eHRlbmRzIFdJLkRldGFpbHNTZWN0aQogCiAgICAgICAgIHZhciBwcm9iZVNlY3Rpb25Hcm91cCA9
IG5ldyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFtzaW5nbGV0b25Sb3ddKTsKIAotICAgICAgICBz
dXBlcigicHJvYmUiLCAiIiwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOwor
ICAgICAgICBzdXBlcigicHJvYmUiLCB0aXRsZSwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9u
c0VsZW1lbnQpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9iZS1z
ZXQiKTsKIApAQCAtNjUsMTAgKzc5LDEyIEBAIFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gPSBj
bGFzcyBQcm9iZVNldERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV0kuRGV0YWlsc1NlY3RpCiAgICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNl
dC5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAgICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNl
dC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAK
LSAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50J3Mg
cmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKLSAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21l
IGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCi0gICAgICAgIHRoaXMuX3VwZGF0
ZUxpbmtFbGVtZW50KCk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMu
X3Byb2JlU2V0LmJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURp
ZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQpOworICAgICAgICBpZiAodGhpcy5fcHJv
YmVTZXQuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSB7Cisg
ICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNvdXJjZSBsaW5rIHdoZW4gdGhlIGJyZWFrcG9pbnQn
cyByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VzLAorICAgICAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4g
YmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICB0
aGlzLl91cGRhdGVMaW5rRWxlbWVudCgpOworICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQu
cmVnaXN0ZXIodGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludCwgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQp
OworICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQuaW5zdGFsbCgpOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggNmEzMGJkZDJmMTcwZDdl
ZmZlMjE0YWVkNjJhNTE3MDBhMmRiNmIyMC4uNDY2MTliZjZhMzFjZjIyNTE3YTU5Y2M1YTgwNTk3
OGJmMTEyZjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTY2LDEw
ICs2NiwxMSBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0
RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NM
aXN0LmFkZCgic291cmNlLWNvZGUiKTsKIAogICAgICAgICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1
Z2dpbmcpIHsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRT
dGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlz
Ll9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVE
aWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAg
ICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7
CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2lu
dFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlk
Q2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAg
ICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3Bv
aW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuTG9j
YXRpb25EaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7CiAK
ICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRN
YW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCB0aGlzLl90YXJnZXRBZGRlZCwgdGhpcyk7CiAgICAg
ICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdl
ci5FdmVudC5UYXJnZXRSZW1vdmVkLCB0aGlzLl90YXJnZXRSZW1vdmVkLCB0aGlzKTsKQEAgLTE2
Nyw3ICsxNjgsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVU
ZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgIGNsb3NlKCkKICAgICB7CiAgICAg
ICAgIGlmICh0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZykgewotICAgICAgICAgICAgV0kuQnJlYWtw
b2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICAgICAg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0
aGlzKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5yZW1vdmVF
dmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCkBAIC0xMzA1LDcgKzEzMDYsNyBAQCBX
SS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVu
ZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICB2YXIgZWRpdG9yTGluZUluZm8gPSB7bGluZU51bWJl
ciwgY29sdW1uTnVtYmVyfTsKICAgICAgICAgdmFyIHVuZm9ybWF0dGVkTGluZUluZm8gPSB0aGlz
Ll91bmZvcm1hdHRlZExpbmVJbmZvRm9yRWRpdG9yTGluZUluZm8oZWRpdG9yTGluZUluZm8pOwog
ICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc291cmNlQ29kZS5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24odW5mb3JtYXR0ZWRMaW5lSW5mby5saW5lTnVtYmVyLCB1bmZvcm1h
dHRlZExpbmVJbmZvLmNvbHVtbk51bWJlcik7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3
IFdJLkJyZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0aW9uKTsKIAog
ICAgICAgICB2YXIgbGluZUluZm8gPSB0aGlzLl9lZGl0b3JMaW5lSW5mb0ZvclNvdXJjZUNvZGVM
b2NhdGlvbihicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX2Fk
ZEJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUluZm8oYnJlYWtwb2ludCwgbGluZUluZm8pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBmYWJm
M2VjMWVmOWNiMTM2Y2IyODcwYTU0ODY3NGQxYmE4NDMzNTUxLi5lZjRiZDI0YjcwOTdiNzEzODUw
M2M2ZTEwNjU1ZDViM2JmMTdlMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcwpAQCAtMTY5LDcgKzE2OSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXCiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUub25kZWxldGUgPSAo
c2VsZWN0ZWRUcmVlRWxlbWVudCkgPT4gewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5zZWxlY3RlZCk7CiAKLSAgICAgICAgICAgIGlmICghV0kuZGVidWdn
ZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJl
c2VudGVkT2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkgewogICAgICAgICAgICAgICAgIGxldCB0cmVlRWxl
bWVudFRvU2VsZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5uZXh0U2VsZWN0YWJsZVNpYmxpbmc7
CiAgICAgICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50VG9TZWxlY3QpIHsKICAgICAgICAgICAg
ICAgICAgICAgY29uc3Qgb21pdEZvY3VzID0gdHJ1ZTsKQEAgLTMyNiw3ICszMjYsNyBAQCBXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdl
LCB0aGlzLl9oYW5kbGVEZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcyk7CiAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5XYWl0aW5nVG9QYXVzZSwgdGhpcy5faGFuZGxlRGVidWdnZXJXYWl0aW5nVG9Q
YXVzZSwgdGhpcyk7CiAKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVE
ZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dl
ck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLklzc3Vl
TWVzc2FnZS5hZGRFdmVudExpc3RlbmVyKFdJLklzc3VlTWVzc2FnZS5FdmVudC5EaXNwbGF5TG9j
YXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9u
RGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgdGhpcy5faGFuZGxl
RE9NQnJlYWtwb2ludERPTU5vZGVDaGFuZ2VkLCB0aGlzKTsKQEAgLTM4NywxNyArMzg3LDE3IEBA
IFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRlZCkgewotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdz
LnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAg
ICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Mu
c2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxUaW1lb3V0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJl
YWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsKIAot
ICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZh
bHVlKQotICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFr
cG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpOworICAg
ICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50
KQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBpZiAoV0kuc2V0dGlu
Z3Muc2hvd0FsbExpc3RlbmVyc0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICAgICAgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCk7CisgICAgICAgICAgICBpZiAoV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5f
YWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dCk7CiAKICAgICAgICAgICAgIGZvciAobGV0IGV2ZW50QnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIubGlzdGVuZXJCcmVha3BvaW50cykKICAgICAgICAgICAgICAgICB0aGlzLl9h
ZGRCcmVha3BvaW50KGV2ZW50QnJlYWtwb2ludCk7CkBAIC00NTIsNyArNDUyLDcgQEAgV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgICAg
ICBXSS5CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Cisg
ICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLklzc3VlTWVzc2FnZS5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5ET01CcmVha3BvaW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJl
bW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CkBAIC0xMjAxLDcgKzEyMDEsNyBA
QCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkg
PT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5h
bGxFeGNlcHRpb25zQnJlYWtwb2ludCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+
IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5j
YXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQp
ID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50LAotICAgICAgICAgICAgICAgICh0cmVlRWxlbWVu
dCkgPT4gdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgfHwg
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV0kuU2NyaXB0VHJlZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgKHRy
ZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50VHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVF
bGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuU2NyaXB0VHJlZUVsZW1lbnQsCiAg
ICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LAogICAg
ICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmpl
Y3QgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50
LAogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50
ZWRPYmplY3QgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQs
CkBAIC0xMjI0LDggKzEyMjQsOCBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9
IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGEg
aW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgYiBpbnN0YW5jZW9mIFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFy
ZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYik7CisgICAgICAgICAgICBpZiAoYSBpbnN0YW5j
ZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgYiBpbnN0YW5jZW9mIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHRoaXMuX2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKTsKIAog
ICAgICAgICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLm1h
aW5UaXRsZSkgfHwgYS5zdWJ0aXRsZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi5zdWJ0aXRsZSk7
CiAgICAgICAgIH07CkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMg
VwogICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5z
ZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKHRyZWVFbGVtZW50LCBw
YXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgY29tcGFyYXRvcikpOwogICAgIH0KIAotICAgIF9j
b21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKQorICAgIF9jb21wYXJlSmF2YVNjcmlw
dEJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmICghYS5yZXBy
ZXNlbnRlZE9iamVjdCB8fCAhYi5yZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgICAgIHJldHVy
biAwOwpAQCAtMTI1MSw3ICsxMjUxLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAg
ICAgaWYgKHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGJyZWFr
cG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgbGV0IGNvbnN0cnVj
dG9yID0gV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50OworICAgICAgICBsZXQgY29uc3RydWN0b3Ig
PSBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50OwogICAgICAgICBsZXQgb3B0aW9u
cyA9IHt9OwogICAgICAgICBsZXQgcGFyZW50VHJlZUVsZW1lbnQgPSB0aGlzLl9icmVha3BvaW50
c1RyZWVPdXRsaW5lOwogCkBAIC0xMjY5LDE5ICsxMjY5LDE5IEBAIFdJLlNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXCiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVn
Z2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBv
cHRpb25zLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1pY29uIjsK
KyAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9IFsiZGVidWdnZXItc3RhdGVtZW50Il07
CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxlID0gV0kuVUlTdHJpbmcoIkRlYnVnZ2VyIFN0YXRl
bWVudHMiKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1h
bmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xh
c3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24iOworICAgICAgICAgICAgb3B0aW9u
cy5jbGFzc05hbWVzID0gWyJleGNlcHRpb24iXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUg
PSBXSS5yZXBlYXRlZFVJU3RyaW5nLmFsbEV4Y2VwdGlvbnMoKTsKICAgICAgICAgfSBlbHNlIGlm
IChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJl
YWtwb2ludCkgewotICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1l
eGNlcHRpb24taWNvbiI7CisgICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImV4Y2Vw
dGlvbiJdOwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLnJlcGVhdGVkVUlTdHJpbmcu
dW5jYXVnaHRFeGNlcHRpb25zKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCkgewotICAgICAg
ICAgICAgb3B0aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiI7Cisg
ICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImFzc2VydGlvbiJdOwogICAgICAgICAg
ICAgb3B0aW9ucy50aXRsZSA9IFdJLnJlcGVhdGVkVUlTdHJpbmcuYXNzZXJ0aW9uRmFpbHVyZXMo
KTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWxsTWljcm90YXNrc0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1l
ID0gImJyZWFrcG9pbnQtbWljcm90YXNrLWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFz
c05hbWVzID0gWyJtaWNyb3Rhc2siXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5V
SVN0cmluZygiQWxsIE1pY3JvdGFza3MiKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50
IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludCkgewogICAgICAgICAgICAgaWYgKCFicmVha3Bv
aW50LmRvbU5vZGVJZGVudGlmaWVyKQpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCBleHRlbmRzIFcKICAgICBfcmVtb3ZlQWxsQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpCiAgICAg
ewogICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGJyZWFrcG9pbnRzKSB7Ci0gICAgICAg
ICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3Bv
aW50KSkKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LnJlbW92YWJsZSkKICAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTEzODMsNyArMTM4Myw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXCiAKICAgICAgICAgbGV0IGJyZWFrcG9pbnRzID0gW107CiAgICAgICAgIGZvciAobGV0IGNo
aWxkIG9mIHRyZWVFbGVtZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChjaGlsZCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChjaGlsZCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
VHJlZUVsZW1lbnQpOwogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBjaGlsZC5icmVha3Bv
aW50OwogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAg
ICBpZiAoYnJlYWtwb2ludCkKQEAgLTE0MDMsNyArMTQwMyw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0
ZW5kcyBXCiAKICAgICAgICAgICAgIGlzc3VlVHJlZUVsZW1lbnQgPSBuZXcgV0kuSXNzdWVUcmVl
RWxlbWVudChpc3N1ZU1lc3NhZ2UpOwogCi0gICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5p
bnNlcnRDaGlsZChpc3N1ZVRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlz
dFNvcnRlZEJ5RnVuY3Rpb24oaXNzdWVUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hp
bGRyZW4sIHRoaXMuX2NvbXBhcmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKSk7CisgICAgICAgICAg
ICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChpc3N1ZVRyZWVFbGVtZW50LCBpbnNlcnRp
b25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oaXNzdWVUcmVlRWxlbWVudCwg
cGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtw
b2ludFRyZWVFbGVtZW50cykpOwogICAgICAgICAgICAgaWYgKHBhcmVudFRyZWVFbGVtZW50LmNo
aWxkcmVuLmxlbmd0aCA9PT0gMSkKICAgICAgICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5l
eHBhbmQoKTsKICAgICAgICAgfQpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgV0kuU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBl
eHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlz
LmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAog
ICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50
QnJlYWtwb2ludFRyZWVFbGVtZW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25G
cmFtZXNCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2lu
dC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwK
ICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoInJlcXVlc3RBbmltYXRpb25GcmFt
ZSBGaXJlZCIpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNv
blRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAg
LTE1OTUsOCArMTU5NSw4IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0
aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxp
bmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlk
Q2hhbmdlLCB0aGlzKTsKIAogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYnJlYWtwb2ludEZvcklkZW50aWZpZXIocGF1c2VEYXRhLmJyZWFrcG9pbnRJZCk7
Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudChicmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAi
YnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludFRyZWVF
bGVtZW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2lu
dCwgeworICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAg
ICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJUcmlnZ2VyZWQgQnJlYWtwb2ludCIpLAogICAgICAg
ICAgICAgfSk7CiAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludERldGFpbHNTZWN0aW9uID0gbmV3
IFdJLkRldGFpbHNTZWN0aW9uUm93OwpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCBleHRlbmRzIFcKIAogICAgICAgICAgICAgbGV0IHR5cGUgPSBXSS5ET01CcmVha3BvaW50VHJl
ZUVsZW1lbnQuZGlzcGxheU5hbWVGb3JUeXBlKGRvbUJyZWFrcG9pbnQudHlwZSk7CiAgICAgICAg
ICAgICBsZXQgZG9tQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkRPTUJyZWFrcG9pbnRU
cmVlRWxlbWVudChkb21CcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAi
YnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJw
YXVzZWQiXSwKICAgICAgICAgICAgICAgICB0aXRsZTogdHlwZSwKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnRSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25S
b3c7CkBAIC0xNzE1LDcgKzE3MTUsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAg
ICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRy
ZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQg
ZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQoZXZlbnRCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJl
YWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVz
ZWQiXSwKICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlx1MjAxQyVzXHUyMDFE
IEV2ZW50IEZpcmVkIikuZm9ybWF0KHBhdXNlRGF0YS5ldmVudE5hbWUpLAogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxk
KGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE3NTgsNyArMTc1OCw3IEBAIFdJLlNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRs
aW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0
cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5l
dyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFr
cG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2Vk
Il0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJzZXRJbnRlcnZhbCBGaXJl
ZCIpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE4MDIs
NyArMTgwMiw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9w
YXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1
cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudChldmVudEJy
ZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNl
ZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAg
ICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiJXMgRmlyZWQiKS5mb3JtYXQocGF1c2VEYXRh
LmV2ZW50TmFtZSksCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVh
c29uVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwpA
QCAtMTgxOCw3ICsxODE4LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBj
bGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAg
IHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0
bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50
QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIHsKLSAgICAgICAg
ICAgICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAg
ICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5V
SVN0cmluZygic2V0VGltZW91dCBGaXJlZCIpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAg
ICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2lu
dFRyZWVFbGVtZW50KTsKQEAgLTE4NDQsNyArMTg0NCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXCiAgICAgICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMu
Y3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAg
ICAgICAgICAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5VUkxC
cmVha3BvaW50VHJlZUVsZW1lbnQodXJsQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgICAg
ICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICAg
ICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFdJ
LlVJU3RyaW5nKCJUcmlnZ2VyZWQgVVJMIEJyZWFrcG9pbnQiKSwKICAgICAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgICAgICBsZXQgdXJsQnJlYWtwb2ludFJvdyA9IG5ldyBXSS5EZXRhaWxz
U2VjdGlvblJvdzsKQEAgLTE5NTAsOSArMTk1MCw5IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKHRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCkg
ewogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0cmVlRWxlbWVudC5icmVha3BvaW50Owot
ICAgICAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRTcGVjaWFsKGJy
ZWFrcG9pbnQpKQorICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBicmVha3BvaW50
LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZTsKQEAgLTE5ODEsMjUgKzE5ODEs
OSBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNl
dHRpbmdzLnNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDsKICAgICAgICAgICAgIGJyZWFrOwog
Ci0gICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0Jy
ZWFrcG9pbnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50OgotICAgICAgICAg
ICAgc2V0dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50OwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
TGlzdGVuZXJzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5z
aG93QWxsTGlzdGVuZXJzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAg
IGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2ludDoKICAgICAg
ICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsUmVxdWVzdHNCcmVha3BvaW50Owog
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWxsVGltZW91dHNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdz
LnNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQ7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCiAgICAgICAgIGlmIChzZXR0aW5nKQpAQCAtMjAwOCw3ICsxOTkyLDcgQEAgV0kuU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCBleHRlbmRzIFcKICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFdJLlRyZWVPdXRsaW5l
LkV2ZW50LkVsZW1lbnRSZW1vdmVkKSB7CiAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxl
bWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsK
ICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAg
aWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2Vy
TWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgfHwgIVdJLmRlYnVnZ2VyTWFuYWdl
ci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNl
bnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludCB8fCAhc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmFibGUp
IHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOwogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBkb250UG9wdWxhdGUgPSB0cnVlOwogICAgICAgICAgICAg
ICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1NlbGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQudHJh
dmVyc2VOZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQsIGRvbnRQb3B1bGF0ZSk7CkBAIC0y
MDUyLDI1ICsyMDM2LDIzIEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIH0KIAog
ICAgICAgICBpZiAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50
cygpIHx8IFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3Bv
aW50cygpKSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRC
cmVha3BvaW50KGJyZWFrcG9pbnQsIGxhYmVsLCBjaGVja2VkKSB7CisgICAgICAgICAgICBmdW5j
dGlvbiBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KGxhYmVsLCBicmVha3BvaW50
LCB0eXBlKSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVt
KGxhYmVsLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKQorICAgICAg
ICAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgIFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0g
ICAgICAgICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtw
b2ludC5kaXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0sIGNoZWNrZWQpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRCcmVha3BvaW50KG5ldyBXSS5FdmVudEJyZWFrcG9pbnQodHlwZSkpOworICAgICAg
ICAgICAgICAgIH0sICEhYnJlYWtwb2ludCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAg
IGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwgQW5pbWF0aW9u
IEZyYW1lcyIpLCBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52
YWx1ZSk7Ci0gICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJB
bGwgVGltZW91dHMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52YWx1
ZSk7Ci0gICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBXSS5VSVN0cmluZygiQWxs
IEludGVydmFscyIpLCBXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1
ZSk7CisgICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJ
U3RyaW5nKCJBbGwgQW5pbWF0aW9uIEZyYW1lcyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
QW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0
aW9uRnJhbWUpOworICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2lu
dChXSS5VSVN0cmluZygiQWxsIFRpbWVvdXRzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxU
aW1lb3V0c0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpOworICAg
ICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5VSVN0cmluZygi
QWxsIEludGVydmFscyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtw
b2ludCwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpOwogCiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKIAogICAgICAgICAgICAgaWYgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5zdXBwb3J0c0FsbExpc3RlbmVyc0JyZWFrcG9pbnQoKSkKLSAgICAgICAg
ICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCBXSS5VSVN0cmluZygiQWxsIEV2ZW50cyIp
LCBXSS5zZXR0aW5ncy5zaG93QWxsTGlzdGVuZXJzQnJlYWtwb2ludC52YWx1ZSk7CisgICAgICAg
ICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5VSVN0cmluZygi
QWxsIEV2ZW50cyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dCwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpOwogCiAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFdmVudCBCcmVha3BvaW50XHUyMDI2Iiks
ICgpID0+IHsKICAgICAgICAgICAgICAgICBsZXQgcG9wb3ZlciA9IG5ldyBXSS5FdmVudEJyZWFr
cG9pbnRQb3BvdmVyKHRoaXMpOwpAQCAtMjQyMSw3ICsyNDAzLDcgQEAgV0kuU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBl
eHRlbmRzIFcKICAgICAgICAgbGV0IHdhc1NlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgIGxldCBv
bGREZWJ1Z2dlclRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgbGV0IG5ld0RlYnVnZ2VyVHJl
ZUVsZW1lbnQgPSBudWxsOwotICAgICAgICBpZiAoZGVidWdnZXJPYmplY3QgaW5zdGFuY2VvZiBX
SS5CcmVha3BvaW50KSB7CisgICAgICAgIGlmIChkZWJ1Z2dlck9iamVjdCBpbnN0YW5jZW9mIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50KSB7CiAgICAgICAgICAgICBvbGREZWJ1Z2dlclRyZWVFbGVt
ZW50ID0gdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQoZGVidWdn
ZXJPYmplY3QpOwogICAgICAgICAgICAgaWYgKG9sZERlYnVnZ2VyVHJlZUVsZW1lbnQpCiAgICAg
ICAgICAgICAgICAgd2FzU2VsZWN0ZWQgPSBvbGREZWJ1Z2dlclRyZWVFbGVtZW50LnNlbGVjdGVk
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VGV4dFJlc291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCBmOTJkZDJiMzEw
ZTQzYWNkM2QxYTUzNTBkZTIwNDNiYjliYTc1MThlLi5mN2QyZGVmZjQxNGY4OWYxMDMxODExZjQ4
YWVlNTUxOTMwY2JjMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5q
cwpAQCAtOTgsNyArOTgsNyBAQCBXSS5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRl
eHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDbwogICAgIGdldCBzdXBw
bGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsKICAgICAgICAgbGV0IG9iamVjdHMg
PSBXSS5kZWJ1Z2dlck1hbmFnZXIucHJvYmVTZXRzLmZpbHRlcihmdW5jdGlvbihwcm9iZVNldCkg
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLmNvbnRlbnRJZGVudGlmaWVyID09
PSBwcm9iZVNldC5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyOworICAgICAgICAgICAgcmV0
dXJuICEocHJvYmVTZXQuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KSB8fCB0aGlzLl9yZXNvdXJjZS5jb250ZW50SWRlbnRpZmllciA9PT0gcHJvYmVTZXQuYnJl
YWtwb2ludC5jb250ZW50SWRlbnRpZmllcjsKICAgICAgICAgfSwgdGhpcyk7CiAKICAgICAgICAg
Ly8gSWYgdGhlIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGhhcyBhbiBleGVjdXRpb25MaW5lTnVtYmVy
LCB3ZSBjYW4gYXNzdW1lCkBAIC0zMTksNyArMzE5LDcgQEAgV0kuVGV4dFJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLlJlc291cmNl
Q28KICAgICBfcHJvYmVTZXRzQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVh
a3BvaW50ID0gZXZlbnQuZGF0YS5wcm9iZVNldC5icmVha3BvaW50OwotICAgICAgICBpZiAoYnJl
YWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5yZXNvdXJjZSkK
KyAgICAgICAgaWYgKCEoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KSB8fCBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlz
LnJlc291cmNlKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
Q29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmlu
ZGV4IDBmMjQ4OTRmMzg5YzY4NzIyMWVhYWM5YzM1ZDVmMTc1OWZmMTNhNWYuLjAyMWRiZWUwNWUz
MDg3YmY5NmRiYjRiYzM2NWY0ZjQ3OWVlYzU4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtw
b2ludFRyZWVFbGVtZW50LmNzcwpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLmJyZWFrcG9pbnQudXJsIC5zdWJ0aXRsZSB7Cisu
aXRlbS5icmVha3BvaW50LnVybCAuc3VidGl0bGUgewogICAgIGZvbnQtZmFtaWx5OiBNZW5sbywg
bW9ub3NwYWNlOwogfQogCi0uYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1p
Y29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LnVybDpub3QoLnBhdXNlZCkgLmljb24gewog
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNVUkxCcmVha3BvaW50LWxp
Z2h0KTsKIH0KIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5i
cmVha3BvaW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKyAgICAu
aXRlbS5icmVha3BvaW50LnVybDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjVVJMQnJlYWtwb2ludC1kYXJrKTsKICAgICB9
Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtw
b2ludFRyZWVFbGVtZW50LmpzCmluZGV4IDAyOGE1MDZmNzEyNWIyZTg0N2RhY2ZkNTA1OGFiOTI3
NjBjZDAyN2EuLjhkMjc2ZDQzYzg2N2Q4ODA0MGMyMTg0MmFiNjhlZWY4MzBjYmE1MDEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTIzLDE1ICsyMywxNSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLlVSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRz
IFdJLkdlbmVyYWxUcmVlRWxlbWVudAorV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xh
c3MgVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50CiB7Ci0gICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZSwgdGl0bGV9ID0g
e30pCisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxlfSA9IHt9
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJ
LlVSTEJyZWFrcG9pbnQpOwogCi0gICAgICAgIGxldCBjbGFzc05hbWVzID0gWyJicmVha3BvaW50
IiwgInVybCJdOwotICAgICAgICBpZiAoY2xhc3NOYW1lKQotICAgICAgICAgICAgY2xhc3NOYW1l
cy5wdXNoKGNsYXNzTmFtZSk7CisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVz
KSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbXTsKKyAgICAgICAgY2xhc3NOYW1lcy5wdXNo
KCJ1cmwiKTsKIAogICAgICAgICBsZXQgc3VidGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUpIHsK
QEAgLTQyLDExNSArNDIsNiBAQCBXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBV
UkxCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVAogICAgICAgICAgICAg
ICAgIHN1YnRpdGxlID0gIi8iICsgYnJlYWtwb2ludC51cmwgKyAiLyI7CiAgICAgICAgIH0KIAot
ICAgICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIGJyZWFrcG9pbnQpOwot
Ci0gICAgICAgIHRoaXMuc3RhdHVzID0gV0kuSW1hZ2VVdGlsaXRpZXMudXNlU1ZHU3ltYm9sKCJJ
bWFnZXMvQnJlYWtwb2ludC5zdmciKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NOYW1lID0g
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1l
OwotCi0gICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLSAgICB9
Ci0KLSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIG9uYXR0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1
cGVyLm9uYXR0YWNoKCk7Ci0KLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVu
dExpc3RlbmVyKFdJLlVSTEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRo
aXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWRE
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xp
Y2tlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZv
Y3VzZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAg
ICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVz
SW1hZ2VFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVz
LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVt
ZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0K
LSAgICBvbmRldGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxs
LCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAg
ICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5k
U3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91
c2VEb3duKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQg
PSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBu
dWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51
bGw7Ci0gICAgfQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRo
aXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAg
ICAgLy8gQnJlYWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxl
dGVkIGZyb20KLSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNp
ZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRl
S2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZVVSTEJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAgICB0aGlz
Ll90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IG9uc3BhY2UoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRl
eHRNZW51LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdDsKLSAgICAgICAgbGV0IGxhYmVsID0gYnJlYWtwb2ludC5kaXNhYmxlZCA/
IFdJLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpIDogV0kuVUlTdHJpbmcoIkRpc2FibGUg
QnJlYWtwb2ludCIpOwotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxhYmVsLCB0aGlz
Ll90b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKLSAgICAg
ICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9p
bnQpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfc3RhdHVz
SW1hZ2VFbGVtZW50Q2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJy
ZWFrcG9pbnQoKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVu
dCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBvdXRsaW5lIGZvY3VzLgotICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVt
ZW50TW91c2VEb3duKGV2ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1l
bnQgc2VsZWN0aW9uLgotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0K
LSAgICBfdG9nZ2xlQnJlYWtwb2ludCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmRpc2FibGVkID0gIXRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7Ci0gICAg
fQotCi0gICAgX3VwZGF0ZVN0YXR1cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuc3RhdHVz
KQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50
b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNs
YXNzTmFtZSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMu
c3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0lt
YWdlUmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSwgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRz
RW5hYmxlZCk7CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZSwg
c3VidGl0bGV9KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDJiODI5NzIxOWNlZTQ3N2FkZTEzMzAxZmM1
M2JkYmY5NGExN2ExYzUuLmYzMDE5NTQwNDA1YzQyMzhhOGE5ZWE1NmE4YjUwZmNkZDRhMDlhNDYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wOC0xMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNz
b0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtw
b2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVudC1i
cmVha3BvaW50LXV0aWxpdGllcy5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlh
bGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNU
ZXN0Q2FzZXMpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIu
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXN5bmMgdGVhcmRvd24pOgorICAgICAgICAo
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6
ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhw
ZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0
aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJy
ZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFr
cG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQWRkIHRlc3RzIGZvciBuZXcgZXZlbnQgYnJl
YWtwb2ludCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzOgorICAgICAgICAoVGVzdFBhZ2UucmVn
aXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzKToK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qczoK
KyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuUHJvdG9jb2xUZXN0LlByb2Jl
Lmluc3RhbGxUcmFjaW5nTGlzdGVuZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtc2NvcGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZGVi
dWdnZXItc3RhY2stb3ZlcmZsb3cuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
cGF1c2UtcmVhc29uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1h
bmFnZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRt
bDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlz
LXZhbHVlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9u
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRt
bDoKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGJyZWFrcG9pbnQgdGVzdHMgdG8gdXNlIG5ldyBt
b2RlbCBvYmplY3RzLgorCiAyMDIwLTA4LTA5ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFs
bGF3YUBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBEcmFnL2Ryb3AgYW4gaW1hZ2Ugb2Yg
YSB1bnN1cHBvcnRlZCBmb3JtYXQgdG8gYW4gZmlsZSBpbnB1dCBlbGVtZW50IHNob3VsZCBjb252
ZXJ0IGl0IHRvIGEgc3VwcG9ydGVkIGZvcm1hdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKaW5kZXggNDZh
YTdjMzQ5Y2FlNTAwMDFlOTU3OTE5Y2IwMDA2ZTMyZDhmOTNmMy4uMmUyNzIzM2MxNTlkNjRmYzk4
NWU1MjhlOThlOWY0ZDAyYWNjYmJiNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCkBAIC0xMywzNyAr
MTMsMzcgQEAgSW5zcGVjdG9yVGVzdC5zdGFydFRyYWNpbmdCcmVha3BvaW50cyA9IGZ1bmN0aW9u
KCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgd2FzIHJlbW92ZWQuIik7
CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAg
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5F
dmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBl
ISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGRpc2FibGVkIHN0YXRlIGNoYW5nZWQ6ICIg
KyBicmVha3BvaW50LmRpc2FibGVkKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2Us
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRh
cmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJy
ZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4
cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVh
a3BvaW50IHJlc29sdmVkIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LnJlc29sdmVkKTsK
ICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZl
bnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIg
YnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIp
OworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGF1dG9jb250aW51ZSBzdGF0ZSBjaGFuZ2VkOiAi
ICsgYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdl
LCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9u
KGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAg
ICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVu
ZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0
IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgY29uZGl0
aW9uIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmNvbmRpdGlvbik7CiAgICAgfSk7CiAKLSAgICBX
SS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25z
RGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCBm
dW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9p
bnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVk
IG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50
IGFjdGlvbnMgY2hhbmdlZC4gTmV3IGNvdW50OiAiICsgYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0
aCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rv
ci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzCmluZGV4IDc2OWFlNGFmMDQ0MGM0ZjEzZjM2NWIx
N2NhMGJiNTAyNmQwZmMzOTYuLjExZWVkMmU1ODFiNmE3MDBhZDdmYWM2MGJlYTU3MWM1NDI0ZTg5
YjAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNl
cy9wcm9iZS10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jl
c291cmNlcy9wcm9iZS10ZXN0LmpzCkBAIC02MCwzNyArNjAsMzcgQEAgUHJvdG9jb2xUZXN0LlBy
b2JlLmluc3RhbGxUcmFjaW5nTGlzdGVuZXJzID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiQnJlYWtwb2ludCB3YXMgcmVtb3ZlZC4iKTsKICAgICB9KTsKIAotICAgIFdJ
LkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVk
U3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVE
aWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZl
bnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwg
IlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkJyZWFrcG9pbnQgZGlzYWJsZWQgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuZGlzYWJs
ZWQpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0
ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5z
dGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUh
Iik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVzb2x2ZWQgc3Rh
dGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQucmVzb2x2ZWQpOwogICAgIH0pOwogCi0gICAgV0ku
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRp
bnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRD
aGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQu
dGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0ku
QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVu
ZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJy
ZWFrcG9pbnQgYXV0b2NvbnRpbnVlIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmF1dG9D
b250aW51ZSk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlw
ZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBjb25kaXRpb24gY2hhbmdlZDogIiArIGJy
ZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2Jq
ZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgYWN0aW9ucyBjaGFuZ2VkLiBO
ZXcgY291bnQ6ICIgKyBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1l
dmFsLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rp
b24tZXZhbC5odG1sCmluZGV4IDU1NjJlMmIzM2Y2ZTYzZjZmNzE2MjEzYTE1YTMxNThhMzg3YjA5
MDQuLmQ1NTQ3YmNjNjcwYTcxOTkyNjExNTJiZTc1MTQ3MGRjMjkzODA0MGYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9u
LWV2YWwuaHRtbApAQCAtMjgsOSArMjgsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICB2
YXIgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDQsIDAp
OwogICAgICAgICAvLyBDcmVhdGUgdGhlIGJyZWFrcG9pbnQgYW5kIGl0cyBhY3Rpb25zIGJlZm9y
ZSBzZW5kaW5nIGFueXRoaW5nIHRvIHRoZSBiYWNrZW5kLgotICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAgICBicmVha3Bv
aW50LmF1dG9Db250aW51ZSA9IHRydWU7Ci0gICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9u
KFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwgbnVsbCwgImFjdGlvbihhLCBiKSIp
OworICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5
cGUuRXZhbHVhdGUsIHtkYXRhOiAiYWN0aW9uKGEsIGIpIn0pOwogCiAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwK
aW5kZXggYjdjYzIzZGMzODU1ZjZmZjc3ODBiZmY2ZTc4OTZmOTZkZTQ0ODdlZS4uZWUwOTU1YTVi
NjNiNWE2NDQwNzFmMmQ1NzJhNTNkZmE0NzFlYjFkZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbApAQCAt
MjQsMTEgKzI0LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgICAgICByZXR1
cm47CiAKICAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRl
U291cmNlQ29kZUxvY2F0aW9uKDQsIDApOwotICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50
ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICAgICAgICAgIGxldCBicmVh
a3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAg
ICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CiAKICAgICAgICAgICAgICAg
ICBmdW5jdGlvbiBhZGRMb2dBY3Rpb24oZGF0YSkgewotICAgICAgICAgICAgICAgICAgICBicmVh
a3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCBicmVha3Bv
aW50LmFjdGlvbnMubGFzdFZhbHVlLCBkYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtw
b2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZywge2RhdGF9KTsK
ICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBhZGRMb2dBY3Rpb24oImAke2F9
YCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9p
bnQtY29sdW1ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9p
bnQtY29sdW1ucy5odG1sCmluZGV4IGQwMmU4ZTNiOWZjMTRlNzA4M2RlOWVhNzE5OGRlY2JmODcx
Y2FlYzkuLjE0MTc0ODU4NDNmNzhmZjFiOGFmNzEzZDdmZmQyYmE2NTJiNGY2MjcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWNvbHVtbnMuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5z
Lmh0bWwKQEAgLTM4LDcgKzM4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHZhciB0ZXN0
SW5mbyA9IHRlc3RJbmZvTGlzdFtjdXJyZW50VGVzdEluZGV4XTsKICAgICAgICAgCiAgICAgICAg
IHZhciBsb2NhdGlvbiA9IGN1cnJlbnRTY3JpcHRzW3Rlc3RJbmZvLnNjcmlwdEluZGV4XS5jcmVh
dGVTb3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8ubGluZSwgdGVzdEluZm8uY29sdW1uKTsKLSAg
ICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAg
ICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9u
KTsKIAogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50
KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9p
bnQtc2NvcGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LXNjb3BlLmh0bWwKaW5kZXggMjQxMTQ0NjA4ZDg4NTkxNWI5NjViYzkxMTBkMjRjNDQ0ZmYyNDE0
NS4uZjBhY2MxYTQyNDRhYWYzMWNjZGQwMDk2MTZiYmNlMzFjM2NmNjdlMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sCkBA
IC0yOSw3ICsyOSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIHZhciB0ZXN0SW5mbyA9
IHRlc3RJbmZvTGlzdFtjdXJyZW50VGVzdEluZGV4XTsKICAgICAgICAgdmFyIGxvY2F0aW9uID0g
c2NyaXB0T2JqZWN0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0ZXN0
SW5mby5jb2x1bW4pOwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50
KGxvY2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQobG9jYXRpb24pOwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KHRlc3RJbmZvLnN0YXJ0RnVuYyk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZGVidWdnZXItc3RhY2stb3ZlcmZsb3cuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sCmluZGV4IDRkOTU3Yzgw
OTI3MzdhMWZmMjRiMWQzYTc1YjI0Y2MxMTlkYWIxY2YuLjJjN2Y3ZGE2NDRkNWM1MTJhMGU0NTcz
MDNkNTFhMGZjNjVmZDMxMWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sCkBAIC0xNSw3ICsxNSw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyAwIGJhc2VkIGluZGljZXMuCiAgICAgICAg
IGxldCB0ZXN0SW5mbyA9IHtsaW5lOiA4LCBjb2x1bW46IDh9OwogICAgICAgICBsZXQgbG9jYXRp
b24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUs
IHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFr
cG9pbnQobG9jYXRpb24pOworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKCJzdGFydCgpIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLXJlYXNvbi5odG1sCmluZGV4IGFjYzE5NTNiNjMyMzMzYmVmMzFiOTVjZmUwOGJk
ZDMwY2Q1YTlmYmMuLmE2YWZkNDQ0ZThmYTFlM2Q0NDZkZTdlZDAxNTFiOTllNzliNjRkMjMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1yZWFzb24uaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwK
QEAgLTE2LDcgKzE2LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGlmICghL3BhdXNlLXJl
YXNvbnNcLmpzJC8udGVzdChzY3JpcHQudXJsKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBsZXQgc291cmNlQ29kZUxvY2F0aW9uID0gc2NyaXB0LmNyZWF0ZVNvdXJjZUNvZGVMb2Nh
dGlvbigzLCAwKTsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChz
b3VyY2VDb2RlTG9jYXRpb24pOworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludChzb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAgICAgYnJlYWs7CiAgICAg
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1hbmFn
ZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcHJvYmUtbWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbAppbmRleCBiZjRhYWYyMWMy
MjY5ZTZjMzExYjRlMzFmMzE3ZTdhOWExOGVlY2JiLi5mNTZhMzZiMzYzYjI4ODQwNmI3N2U5NDQ0
MmYyYjUzODIzOTI3NGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcHJvYmUtbWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcHJvYmUtbWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRt
bApAQCAtMzMsMTQgKzMzLDE0IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICB2YXIg
bG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDQsIDApOwog
ICAgICAgICAgICAgLy8gQ3JlYXRlIHRoZSBicmVha3BvaW50IGFuZCBpdHMgYWN0aW9ucyBiZWZv
cmUgc2VuZGluZyBhbnl0aGluZyB0byB0aGUgYmFja2VuZC4KLSAgICAgICAgICAgIHZhciBicmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOwogICAgICAgICAgICAgZm9yICh2
YXIgaSBvZiBbMCwgMV0pCi0gICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24o
V0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlLCBudWxsLCAiYSIpOworICAgICAgICAgICAg
ICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9i
ZSwge2RhdGE6ICJhIn0pOwogCiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJl
YWtwb2ludChicmVha3BvaW50KTsKIAotICAgICAgICAgICAgYnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oKSB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RUaGF0KGJyZWFrcG9pbnQucmVz
b2x2ZWQsICJCcmVha3BvaW50IHNob3VsZCBiZSByZXNvbHZlZC4iKTsKICAgICAgICAgICAgIH0p
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcv
c3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRp
bnVlLWJyZWFrcG9pbnQuaHRtbAppbmRleCBhMTcyNWNmYmY5YTUwMjY4MmQwZmY2ZGRkMDYxYzA2
YjM4OTAxZGM5Li5mZmZhZTBlMjk5ODE4NzE2MmM0YTQ4OWQ3MjA5MjY0NmMyYTliYWEyIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmct
dGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1i
cmVha3BvaW50Lmh0bWwKQEAgLTI0LDkgKzI0LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAg
ICAgICAvLyBTZXQgYXV0b0NvbnRpbnVlIGJyZWFrcG9pbnQuCiAgICAgICAgICAgICBsZXQgc2Ny
aXB0ID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1lLm1haW5SZXNvdXJjZS5zY3JpcHRzWzBd
OwogICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gc2NyaXB0LmNyZWF0ZVNvdXJjZUNvZGVMb2Nh
dGlvbig4LCAwKTsKLSAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9p
bnQobG9jYXRpb24pOworICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29u
dGludWUgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCBudWxsLCAiYWxlcnQoMS41KTsiKTsKKyAgICAg
ICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5F
dmFsdWF0ZSwge2RhdGE6ICJhbGVydCgxLjUpOyJ9KTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAvLyBTdGVw
IHRocm91Z2ggdGhlIGJyZWFrcG9pbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0
bWwKaW5kZXggMzk3NTlkY2I2NTRhY2IwMDJmMWRhOTEwMzE0NjlmODkzMWE0YjljOC4uYzcyYmJj
ZTJiNjFjMjk4MmU5NzI1ZmU5MzQ2MjM0Mzc2MmU3NzgwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVz
LXRoaXMtdmFsdWUuaHRtbApAQCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAg
ICAgLy8gMCBiYXNlZCBpbmRpY2VzLgogICAgICAgICBsZXQgdGVzdEluZm8gPSB7bGluZTogMywg
Y29sdW1uOiA0fTsKICAgICAgICAgbGV0IGxvY2F0aW9uID0gc2NyaXB0T2JqZWN0LmNyZWF0ZVNv
dXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0ZXN0SW5mby5jb2x1bW4pOwotICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAg
bGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwog
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic3RhcnRBQkMoKSIpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLXJlY3Vyc2lv
bi5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0
bWwKaW5kZXggOGNiYWJhMWFkMmVjM2Q3M2NiMjYzMDg5OGExZWVhYjExNzUzYTJkMC4uNjViMGNj
NjFhZTM4MTE4YjZhNzA2ZGEzODEzMTA2YTcwMmI0NDA1OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0bWwKQEAgLTI0LDcgKzI0LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHZhciB0ZXN0SW5mb3MgPSBbe2xpbmUgOiAzLCBj
b2x1bW4gOiA4fSwge2xpbmUgOiA0LCBjb2x1bW4gOiA4fV07CiAgICAgICAgIGZvciAobGV0IHRl
c3RJbmZvIG9mIHRlc3RJbmZvcykgewogICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gc2NyaXB0
T2JqZWN0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0ZXN0SW5mby5j
b2x1bW4pOwotICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChs
b2NhdGlvbik7CisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
QnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAgICAgfQogICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJzdGFydFJlY3Vyc2UoKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVu
dC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDkwYjI2YTc3
YmQ1NTY2OTVmMWIwMWZmMTcyOWQ2NWE1ZGYyOGM3MWMuLmY5ZWYwNGY3OWQ2Y2I4M2Q4OWFhMTVk
MjhiNDVhODVhYTNlZDFkODYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1m
cmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAorQ09OU09MRSBN
RVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cg
MworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMgZm9yIEV2
ZW50IEFuaW1hdGlvbkZyYW1lIGJyZWFrcG9pbnRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5BZGRCcmVha3BvaW50CitDcmVhdGlu
ZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImFuaW1hdGlv
bi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJh
bWUiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVy
IGlzIHJ1bi4KQEAgLTE1LDYgKzIwLDcgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50
LkFuaW1hdGlvbkZyYW1lLkFkZERpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlv
bi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2
ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVh
a3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRpb25GcmFtZSIgb24gd2luZG93Li4uCkBA
IC0yMiw2ICsyOCw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFr
cG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5SZW1vdmVCcmVha3BvaW50CitDcmVh
dGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImFuaW1h
dGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgImFuaW1hdGlvbi1mcmFt
ZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9u
IHdpbmRvdy4uLgpAQCAtMjksNiArMzYsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBy
ZW1vdmVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5SZW1vdmVEaXNh
YmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9p
bnQuLi4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNh
YmxpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgImFu
aW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgpAQCAtMzYsMyArNDQsMTAzIEBAIEZp
cmluZyAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBu
b3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFu
aW1hdGlvbkZyYW1lLk9wdGlvbnMuQ29uZGl0aW9uCitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1l
IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJl
YWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlv
biB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
cGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVi
dWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcg
ImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJhbmltYXRpb24t
ZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicu
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFy
ZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlv
bkZyYW1lLk9wdGlvbnMuQWN0aW9uLkxvZworQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZl
bnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9p
bnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQg
cGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0
aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQu
QW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitDcmVhdGluZyAiYW5pbWF0
aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIg
RXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2lu
dCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24t
ZnJhbWUtYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWwKaW5kZXggZjBiYTQ3YjQ2
MjUyNWUyOWVlZTA2ZDdmMTJmYTUyNzkzY2EzNDA3MS4uZmZhZWY4YjRlNDczNGY4NzM4YTliZDhi
YTkwODBiMDczNWY5MzUxZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVh
a3BvaW50cy5odG1sCkBAIC00NSw3ICs0NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5U
eXBlLkFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAg
IC5jYXRjaChyZWplY3QpOwogICAgICAgICB9LApAQCAtNTgsNyArNTgsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBX
SS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uQW5pbWF0aW9uRnJhbWUsIGV2ZW50TmFtZSwg
IlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVu
dE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC03Miw3ICs3Miw3IEBAIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCBy
ZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5BbmltYXRpb25GcmFtZSwgZXZl
bnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOwogCi0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5F
dmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSkKICAgICAgICAgICAgIC50aGVuKElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAg
ICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ci
LCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04Niw3ICs4Niw3
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNv
bHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5BbmltYXRpb25GcmFt
ZSwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVh
a3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5h
ZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRl
QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSkKICAgICAg
ICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVha3Bv
aW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVt
b3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCkBAIC05NSw2ICs5NSw4IEBA
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC50ZWFyZG93biwKICAgICB9KTsKIAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2VzKHN1aXRlLCBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSwgZXZlbnROYW1lKTsKKwogICAgIHN1aXRlLnJ1
blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50
ZXJ2YWwtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDVlYzQ4MGE3OGI1ZDgzYmNkNzBl
YWI3M2E5N2EyMGRmZGViODM2OGQuLmFjYjcwOWZmMGY4MmFkODBmNWY3NWE0NTQ3MDQyODM3ZGU3
ZTNhMDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZl
bnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDggKzEsMTMgQEAKLVRlc3RzIGZvciBFdmVudCBUaW1lciBicmVha3BvaW50cy4K
K0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FH
RTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBB
Q1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKK1Rl
c3RzIGZvciBFdmVudCBJbnRlcnZhbCBicmVha3BvaW50cy4KIAogCi09PSBSdW5uaW5nIHRlc3Qg
c3VpdGU6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERP
TURlYnVnZ2VyLkV2ZW50LkludGVydmFsCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuSW50ZXJ2YWwuQWRkQnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVu
dCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBG
aXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZv
cmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC0xNSw2ICsyMCw3IEBAIEFTWU5DIENBTEwgU1RB
Q0s6CiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5BZGREaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5n
ICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQg
QnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgog
RmlyaW5nICJzZXRJbnRlcnZhbCIgb24gd2luZG93Li4uCkBAIC0yMiw2ICsyOCw3IEBAIFBBU1M6
IFNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5J
bnRlcnZhbC5SZW1vdmVCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5n
ICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRJbnRlcnZhbCIgb24g
d2luZG93Li4uCkBAIC0yOSw2ICszNiw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJl
bW92ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLlJlbW92ZURpc2FibGVkQnJl
YWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcg
ImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgImludGVydmFsIiBFdmVu
dCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4K
QEAgLTM3LDYgKzQ1LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNh
YmxlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuUmVwZWF0RmlyZUJyZWFrcG9p
bnQKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJpbnRl
cnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRJbnRlcnZhbCIgb24gd2luZG93
Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgpAQCAt
NTUsMyArNjQsMTAzIEBAIEFTWU5DIENBTEwgU1RBQ0s6CiAzOiBbUF0gR2xvYmFsIENvZGUKIC0t
IFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVn
Z2VyLkV2ZW50LkludGVydmFsLk9wdGlvbnMuQ29uZGl0aW9uCitDcmVhdGluZyAiaW50ZXJ2YWwi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3Ry
dWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1bm5p
bmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2
ZW50LkludGVydmFsLk9wdGlvbnMuSWdub3JlQ291bnQKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZl
bnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgor
CitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5BY3Rpb24uTG9nCitDcmVhdGlu
ZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiaW50ZXJ2YWwiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1j
b250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGlu
ZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitDcmVhdGluZyAiaW50
ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxp
bmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4K
KworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwt
YnJlYWtwb2ludHMuaHRtbAppbmRleCBiM2IyYWZmZTg2NGZjMDI3OWFhODg5ZTI2NGU4M2I3YzFj
ODhjNDY0Li4wMjg0YmRhMjlhZWJiOGM3ODJhNDUxNWQ1Zjc1OWVhZDAzYjgyOWJjIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJy
ZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9l
dmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1sCkBAIC05LDIwICs5LDIwIEBACiBsZXQgaW50
ZXJ2YWxJRCA9IE5hTjsKIAogZnVuY3Rpb24gaGFuZGxlV2luZG93X3NldEludGVydmFsKCkgewot
ICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250ZW5kKCJUZXN0UGFnZS1zZXRJbnRlcnZh
bCIpOwotCiAgICAgcmVwZWF0Q2xlYXJJbnRlcnZhbCgpOworCisgICAgVGVzdFBhZ2UuZGlzcGF0
Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLXNldEludGVydmFsIik7CiB9CiAKIGZ1bmN0aW9u
IGhhbmRsZVJlcGVhdCgpIHsKIH0KIAogZnVuY3Rpb24gdHJpZ2dlcl9zZXRJbnRlcnZhbCgpIHsK
LSAgICBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoaGFuZGxlV2luZG93X3NldEludGVydmFsLCAx
MDApOworICAgIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2
YWwsIDEwKTsKIH0KIAogZnVuY3Rpb24gcmVwZWF0U2V0SW50ZXJ2YWwoKSB7Ci0gICAgaW50ZXJ2
YWxJRCA9IHNldEludGVydmFsKGhhbmRsZVJlcGVhdCwgMTAwKTsKKyAgICBpbnRlcnZhbElEID0g
c2V0SW50ZXJ2YWwoaGFuZGxlUmVwZWF0LCAxMCk7CiB9CiAKIGZ1bmN0aW9uIHJlcGVhdENsZWFy
SW50ZXJ2YWwoKSB7CkBAIC0zMyw3ICszMyw3IEBAIGZ1bmN0aW9uIHJlcGVhdENsZWFySW50ZXJ2
YWwoKSB7CiBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGNvbnN0IGV2ZW50TmFtZSA9ICJzZXRJbnRl
cnZhbCI7CiAKLSAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
IkRPTURlYnVnZ2VyLkV2ZW50LlRpbWVyIik7CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVz
dC5jcmVhdGVBc3luY1N1aXRlKCJET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbCIpOwogCiAgICAg
c3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiBgRE9NRGVidWdnZXIuRXZlbnQuSW50
ZXJ2YWwuQWRkQnJlYWtwb2ludGAsCkBAIC02MSw3ICs2MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2lu
dC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5j
YXRjaChyZWplY3QpOwogICAgICAgICB9LApAQCAtNzQsNyArNzQsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5E
ZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uSW50ZXJ2YWwsIGV2ZW50TmFtZSwgIlNob3VsZCBu
b3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLklu
dGVydmFsKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
ZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAg
LmNhdGNoKHJlamVjdCk7CkBAIC04OCw3ICs4OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
ICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFu
YWdlci5QYXVzZVJlYXNvbi5JbnRlcnZhbCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBm
b3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRl
cnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCkKICAg
ICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFr
cG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5h
d2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVj
dCk7CkBAIC0xMDIsNyArMTAyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNl
UmVhc29uLkludGVydmFsLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVk
IGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVy
dmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAg
ICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFr
cG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5y
ZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKQEAgLTEzNCw3ICsxMzQs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3Bv
aW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5F
dmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCkKICAgICAgICAgICAgIC50aGVuKCgpID0+IHsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRmlyaW5nIFwic2V0SW50ZXJ2YWxc
IiBvbiB3aW5kb3cuLi4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgcmVwZWF0U2V0SW50ZXJ2YWwoKWApOwpAQCAtMTQ0LDExICsxNDQsMTMg
QEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkludGVydmFsLCBldmVudE5hbWUpOworCiAgICAgc3VpdGUucnVuVGVz
dENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0i
cnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0cyBmb3IgRXZlbnQgVGltZXIgYnJlYWtwb2ludHMuPC9w
PgorICAgIDxwPlRlc3RzIGZvciBFdmVudCBJbnRlcnZhbCBicmVha3BvaW50cy48L3A+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0
ZWQudHh0CmluZGV4IDc4MWI3Y2QyZGQwYTU4MGVlOTk0NTM3OWU0M2FiNjhhYzNhNTBhMmEuLmE5
ZWY4ZmY4YWRmY2ZhYjQwNTIzOGI1ZTQxYTRlMDAwNDk1M2U1YzYgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZl
bnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CkBAIC0xLDMgKzEsNyBAQAorQ09O
U09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBC
UkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElP
TiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMg
Zm9yIEV2ZW50IExpc3RlbmVyIGJyZWFrcG9pbnRzLgogCiAKQEAgLTc1LDYgKzc5LDcgQEAgUEFT
UzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LgogLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuTGlzdGVuZXIuQWxsRXZlbnRzQnJlYWtwb2ludAorQ3JlYXRpbmcgImxpc3RlbmVy
IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImxpc3RlbmVyIiBFdmVudCBCcmVha3BvaW50
Li4uCiBGaXJpbmcgImNsaWNrIiBvbiBib2R5Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3Jl
IGV2ZW50IGhhbmRsZXIgaXMgcnVuLgpAQCAtMTIxLDMgKzEyNiwxMDMgQEAgRGlzYWJsaW5nIGJy
ZWFrcG9pbnRzLi4uCiBQQVNTOiBTaG91bGQgaGF2ZSBwYXVzZWQgb25jZS4KIC0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50
Lkxpc3RlbmVyLk9wdGlvbnMuQ29uZGl0aW9uCitDcmVhdGluZyAiY2xpY2siIEV2ZW50IEJyZWFr
cG9pbnQuLi4KK0FkZGluZyAibGlzdGVuZXI6Y2xpY2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KKwor
U2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lkxp
c3RlbmVyLk9wdGlvbnMuSWdub3JlQ291bnQKK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitT
ZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NRGVidWdnZXIuRXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5BY3Rpb24uTG9nCitDcmVhdGluZyAi
Y2xpY2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAibGlzdGVuZXI6Y2xpY2siIEV2ZW50
IEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1j
b250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGlu
ZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitDcmVhdGluZyAiY2xp
Y2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAibGlzdGVuZXI6Y2xpY2siIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5h
YmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2lu
dHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVu
ZXItYnJlYWtwb2ludHMuaHRtbAppbmRleCBmYmI0OTgwOGVmZTk3OGNiNTVkNDYxNDM5ZWUwZWJi
OGRhN2JiNTcxLi42NzQ2MTZhODU4OGQzZTQ5MjM2YjQzOTUzYTBiYWFkNDhiM2Q4Y2Y5IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVy
LWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAg
ICAgICB9KTsKIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50
TmFtZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7ZXZlbnROYW1l
fSkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5h
d2FpdEV2ZW50KCJib2R5IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgICAgICAuY2F0Y2gocmVq
ZWN0KTsKICAgICAgICAgICAgIH0sCkBAIC03MSw3ICs3MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwg
V0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBldmVudE5hbWUsICJTaG91
bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgZXZlbnROYW1lKQorICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWV9KQogICAgICAgICAgICAgICAgIC50aGVu
KEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAg
ICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQo
ImJvZHkiLCBldmVudE5hbWUpKQogICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAt
ODUsNyArODUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJl
YXNvbi5MaXN0ZW5lciwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBi
cmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwg
ZXZlbnROYW1lKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVu
dE5hbWV9KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgiYm9keSIsIGV2ZW50TmFtZSkpCiAgICAgICAg
ICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC05OSw3ICs5OSw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVj
dCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBldmVudE5hbWUsICJT
aG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9p
bnQpCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
cmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJib2R5IiwgZXZlbnROYW1lKSkKQEAgLTEyOCw3ICsx
MjgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3Qp
OwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0Jy
ZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKQogICAgICAgICAg
ICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGaXJp
bmcgXCJjbGlja1wiIG9uIGJvZHkuLi4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdHJpZ2dlcl9jbGljaygpYCk7CkBAIC0xNzMsNyArMTcz
LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAg
ICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgImNsaWNr
IikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFr
cG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWU6ICJjbGlj
ayJ9KQogICAgICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJGaXJpbmcgXCJjbGlja1wiIG9uIGRpdiN4Li4uIik7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrWCgpYCk7CkBAIC0y
MTEsNyArMjExLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICAudGhlbihy
ZXNvbHZlLCByZWplY3QpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuTGlzdGVuZXIsICJjbGljayIpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3Rl
bmVyLCB7ZXZlbnROYW1lOiAiY2xpY2sifSkKICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRmlyaW5nIFwiY2xpY2tcIiBvbiBkaXYj
eC4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKGBjbGlja1goKWApOwpAQCAtMjIxLDYgKzIyMSw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAg
ICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwK
ICAgICB9KTsKIAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9p
bnRPcHRpb25zVGVzdENhc2VzKHN1aXRlLCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5l
ciwgImNsaWNrIik7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9l
dmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy1leHBlY3RlZC50eHQK
aW5kZXggY2E1ZDAxMGRlZWM5YWE0OWNiYmI0MWI0ZTRlYTNmY2I0OGQzYTdkYi4uOWE2YmY4YWQx
YjJhYTc5NjI5Yjg2M2RlN2UzZDRkZmI1MTg4MzMyYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVv
dXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTMgQEAKK0NPTlNPTEUgTUVT
U0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lO
VCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMK
K0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBFdmVu
dCBUaW1lciBicmVha3BvaW50cy4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTURlYnVn
Z2VyLkV2ZW50LlRpbWVyCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQu
VGltZW91dC5BZGRCcmVha3BvaW50CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2lu
dC4uLgogQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldFRp
bWVvdXQiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5k
bGVyIGlzIHJ1bi4KQEAgLTE1LDYgKzIwLDcgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5p
bmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2
ZW50LlRpbWVvdXQuQWRkRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAidGltZW91dCIgRXZl
bnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBE
aXNhYmxpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0VGltZW91
dCIgb24gd2luZG93Li4uCkBAIC0yMiw2ICsyOCw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2Ug
Zm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lb3V0LlJlbW92ZUJyZWFr
cG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRp
bWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVh
a3BvaW50Li4uCiBGaXJpbmcgInNldFRpbWVvdXQiIG9uIHdpbmRvdy4uLgpAQCAtMjksNiArMzYs
NyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCiAtLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5UaW1lb3V0LlJlbW92ZURpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgInRpbWVv
dXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2lu
dC4uLgogRGlzYWJsaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAi
dGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgpAQCAtMzYsMyArNDQsMTAzIEBAIEZpcmluZyAi
c2V0VGltZW91dCIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1v
dmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25zLkNvbmRp
dGlvbgorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAidGlt
ZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2Un
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitT
ZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3Jl
YXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAidGltZW91dCIgRXZl
bnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5BY3Rp
b24uTG9nCitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0
aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0Vu
YWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1
c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQ3Jl
YXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAidGltZW91dCIgRXZl
bnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFr
cG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRp
bWVvdXQtYnJlYWtwb2ludHMuaHRtbAppbmRleCBhNDFlY2Q2OWVjYjdkMTM4NGQwNzdiOTUwY2Mx
MDA1N2FlNDEwMDkxLi42YTM0OWE0Yjc3MjM1ZTliYjE4OGM0YzFhMWNiOGIzYTczYTQyMWFjIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVv
dXQtYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbApAQCAtMTEsNyArMTEsNyBAQCBmdW5j
dGlvbiBoYW5kbGVXaW5kb3dfc2V0VGltZW91dCgpIHsKIH0KIAogZnVuY3Rpb24gdHJpZ2dlcl9z
ZXRUaW1lb3V0KCkgewotICAgIHNldFRpbWVvdXQoaGFuZGxlV2luZG93X3NldFRpbWVvdXQsIDEw
MCk7CisgICAgc2V0VGltZW91dChoYW5kbGVXaW5kb3dfc2V0VGltZW91dCwgMTApOwogfQogCiBm
dW5jdGlvbiB0ZXN0KCkgewpAQCAtNDUsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAg
ICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LlRpbWVvdXQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJl
amVjdCk7CiAgICAgICAgIH0sCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2Vy
TWFuYWdlci5QYXVzZVJlYXNvbi5UaW1lb3V0LCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNl
IGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxU
aW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpCiAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJl
YWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVq
ZWN0KTsKQEAgLTcyLDcgKzcyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNl
UmVhc29uLlRpbWVvdXQsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQg
YnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3Bv
aW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJl
YWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KQogICAgICAgICAgICAgLnRo
ZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAg
ICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndp
bmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg2LDcg
Kzg2LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNl
KHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLlRpbWVvdXQs
IGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtw
b2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRk
QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KQogICAgICAgICAgICAgLnRoZW4oSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAg
ICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQog
ICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVu
dCgid2luZG93IiwgZXZlbnROYW1lKSkKQEAgLTk1LDYgKzk1LDggQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJk
b3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJl
YWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRp
bWVvdXQsIGV2ZW50TmFtZSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
IH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9yZXNvdXJjZXMvZXZlbnQtYnJlYWtwb2ludC11dGlsaXRpZXMuanMgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVudC1icmVha3BvaW50LXV0aWxp
dGllcy5qcwppbmRleCAxOWIyNWQxYWRkMjBiMmY1ZTBhMWIyZjdkODMzMjhmZmJiZTE2ZGM2Li5l
NDAxM2E4MWJjZTRkM2Q0ZWE1MzJhZWYzMWQzNjE3YWI1Mjc0YTQ1IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVudC1icmVha3BvaW50
LXV0aWxpdGllcy5qcworKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jl
c291cmNlcy9ldmVudC1icmVha3BvaW50LXV0aWxpdGllcy5qcwpAQCAtMSwxNCArMSwxOTkgQEAK
IFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50ID0ge307CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RDYXNlcyA9IGZ1bmN0aW9uKHN1aXRlLCB0eXBlLCBl
dmVudE5hbWUpIHsKKyAgICAgICAgYXN5bmMgZnVuY3Rpb24gdHJpZ2dlckJyZWFrcG9pbnQoKSB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
Iik7CisgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2UtIiArIGV2ZW50TmFtZSksCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdHJpZ2dlcl8ke2V2ZW50TmFt
ZX0oKWApLAorICAgICAgICAgICAgXSk7CisgICAgICAgIH0KKworICAgICAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1lICsgIi5PcHRpb25zLkNvbmRp
dGlvbiIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVnZ2Vy
IHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBoYXMgYSB0cnV0aHkgYnJlYWtw
b2ludCBjb25kaXRpb24uIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVy
ID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2Vy
LkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VD
b3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOwor
ICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBh
d2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUs
IHtldmVudE5hbWV9KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgp
OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRpbmcgY29uZGl0aW9u
IHRvICdmYWxzZScuLi4iKTsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmNvbmRpdGlvbiA9
ICJmYWxzZSI7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uIik7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmNvbmRpdGlvbiA9ICJ0cnVlIjsKKyAg
ICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50
KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBu
b3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91
bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRlYXJkb3du
OiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwKKyAgICAgICAgfSk7CisK
KyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZTogc3VpdGUubmFt
ZSArICIuT3B0aW9ucy5JZ25vcmVDb3VudCIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNo
ZWNrIHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2lu
dCBpcyBoaXQgYXQgbGVhc3QgYXMgbWFueSB0aW1lcyBhcyBpdCdzIGBpZ25vcmVDb3VudGAuIiwK
KyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291
bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uIik7Cisg
ICAgICAgICAgICAgICAgYnJlYWtwb2ludC5pZ25vcmVDb3VudCA9IDI7CisKKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCBpID0gMTsgaSA8PTQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBhd2FpdCB0cmln
Z2VyQnJlYWtwb2ludCgpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQs
IDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQs
IGkgLSAyLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCisg
ICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5h
bWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQWN0aW9uLkxvZyIsCisgICAgICAgICAgICBkZXNj
cmlwdGlvbjogIkNoZWNrIHRoYXQgbG9nIGJyZWFrcG9pbnQgYWN0aW9ucyBleGVjdXRlIHdoZW4g
dGhlIGJyZWFrcG9pbnQgaXMgaGl0LiIsCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAg
ICAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgICAgIGxldCBs
aXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAr
K3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1
bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dCh0eXBlLCB7ZXZlbnROYW1lfSk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5l
d2xpbmUoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgbG9n
IGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgIGxldCBhY3Rpb24gPSBicmVha3BvaW50LmNy
ZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCB7ZGF0YTogIkJSRUFLUE9J
TlQgQUNUSU9OIExPRyAxIn0pOworCisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkg
PD0gNDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFZGl0aW5nIGxvZyBhY3Rpb24uLi4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAke2l9YDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYXV0by1j
b250aW51ZS4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0
b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgp
OworCisgICAgICAgICAgICAgICAgICAgIGxldCBbbWVzc2FnZUFkZGVkRXZlbnRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIu
YXdhaXRFdmVudChXSS5Db25zb2xlTWFuYWdlci5FdmVudC5NZXNzYWdlQWRkZWQpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgdHJpZ2dlckJyZWFrcG9pbnQoKSwKKyAgICAgICAgICAgICAgICAg
ICAgXSk7CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCht
ZXNzYWdlQWRkZWRFdmVudC5kYXRhLm1lc3NhZ2UubWVzc2FnZVRleHQsIGFjdGlvbi5kYXRhLCAi
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1lICsgIi5PcHRpb25zLkFjdGlvbnMuRXZhbHVh
dGUiLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGV2YWx1YXRlIGJyZWFr
cG9pbnQgYWN0aW9ucyBleGVjdXRlIHdoZW4gdGhlIGJyZWFrcG9pbnQgaXMgaGl0LiIsCisgICAg
ICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0g
MDsKKworICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkg
PT4geworICAgICAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKwor
ICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludCh0eXBlLCB7ZXZlbnROYW1lfSk7CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uIik7CisgICAgICAgICAg
ICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6ICJ3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZB
TFVBVEUgPSAxOyJ9KTsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYHdpbmRvdy5CUkVBS1BPSU5UX0FD
VElPTl9FVkFMVUFURSA9ICR7aX07YDsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkg
PT09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
RW5hYmxpbmcgYXV0by1jb250aW51ZS4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVh
a3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRBY3Rpb25FdmFs
dWF0ZVJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdpbmRvdy5C
UkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURWApOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKGJyZWFrcG9pbnRBY3Rpb25FdmFsdWF0ZVJlc3VsdCwgaSwgIlNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAgICAgICAg
IGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dEVxdWFsKHBhdXNlQ291bnQsIGksICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwocGF1c2VDb3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAg
fQorCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC50ZWFyZG93biwKKyAgICAgICAgfSk7CisgICAgfTsKKwogICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LnRlYXJkb3duID0gZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAg
ICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOwotICAgICAgICBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCk7Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCk7
CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50Py5yZW1vdmUoKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFs
c0JyZWFrcG9pbnQ/LnJlbW92ZSgpOworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
TGlzdGVuZXJzQnJlYWtwb2ludD8ucmVtb3ZlKCk7CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQ/LnJlbW92ZSgpOwogCiAgICAgICAgIGZvciAobGV0
IGJyZWFrcG9pbnQgb2YgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmxpc3RlbmVyQnJlYWtwb2ludHMp
Ci0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKIAogICAgICAg
ICByZXNvbHZlKCk7CiAgICAgfTsKQEAgLTQyLDggKzIyNywxMSBAQCBUZXN0UGFnZS5yZWdpc3Rl
ckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAgfSk7CiAgICAgfTsKIAotICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQgPSBmdW5jdGlvbih0eXBlLCBl
dmVudE5hbWUpIHsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYENyZWF0aW5nICIke2V2ZW50
TmFtZX0iIEV2ZW50IEJyZWFrcG9pbnQuLi5gKTsKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5jcmVhdGVCcmVha3BvaW50ID0gZnVuY3Rpb24odHlwZSwge2V2ZW50TmFtZX0gPSB7
fSkgeworICAgICAgICBpZiAodHlwZSAhPT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVu
ZXIpCisgICAgICAgICAgICBldmVudE5hbWUgPSBudWxsOworCisgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKGBDcmVhdGluZyAiJHtldmVudE5hbWUgfHwgdHlwZX0iIEV2ZW50IEJyZWFrcG9pbnQu
Li5gKTsKICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJy
ZWFrcG9pbnQobmV3IFdJLkV2ZW50QnJlYWtwb2ludCh0eXBlLCB7ZXZlbnROYW1lfSkpOwogICAg
IH07CiAKQEAgLTc0LDcgKzI2Miw3IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkg
PT4gewogICAgICAgICAgICAgICAgIHJlc29sdmUoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICB9
KTsKIAotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtw
b2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CiAgICAg
ICAgIH0pOwogICAgIH07CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
YnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQK
aW5kZXggNzZhODY0NDhiYzllMTczZjM2ZDZkN2NmMzA0ZjBjZTc3MDZhYTUwZi4uNThmOTU2MjJj
ZWNkY2UwNDIwM2I2ODdjZGM4NDkzNTJiMWMwNjVjMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0
ZW5lci1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFL
UE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1F
U1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0aW5nIERPTUFnZW50LnNldEJyZWFr
cG9pbnRGb3JFdmVudExpc3RlbmVyIGFuZCBET01BZ2VudC5yZW1vdmVCcmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lci4KIAogICAKQEAgLTE5LDYgKzIzLDk0IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1
c2UgYmVmb3JlIGJ1dHRvbjIgZXZlbnQgaGFuZGxlciBpcyBydW4uCiBDbGlja2luZyBidXR0b24x
Li4uCiBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGJlZm9yZSBidXR0b24xIGV2ZW50IGhhbmRsZXIg
aXMgcnVuLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyLk9wdGlvbnMuQ29uZGl0aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxz
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5JZ25vcmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNv
dW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMu
QWN0aW9uLkxvZworCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRp
bnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxv
ZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9u
cy5BY3Rpb25zLkV2YWx1YXRlCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlv
bi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24u
Li4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLnNldEJyZWFr
cG9pbnRGb3JFdmVudExpc3RlbmVyLkludmFsaWQKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVy
cm9yLgogRXJyb3I6IE1pc3NpbmcgZXZlbnQgbGlzdGVuZXIgZm9yIGdpdmVuIGV2ZW50TGlzdGVu
ZXJJZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZv
ci1ldmVudC1saXN0ZW5lci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3Bv
aW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sCmluZGV4IDBkMmZlYTVhYTUyZDQ1NDRhMTFmMjQ2
ODEwNWNlNDgzN2ZiNDM2YWEuLmYzMGM5MmE2ZDA3MWFiOGFkZGM4OTkyZmZjNzkwMDczZGY1NTY1
M2YgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3It
ZXZlbnQtbGlzdGVuZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFr
cG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKQEAgLTIzLDkgKzIzLDIyIEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgbGV0IGJ1dHRvbjFOb2RlID0gbnVsbDsKICAgICBsZXQgYnV0dG9uMk5v
ZGUgPSBudWxsOwogCi0gICAgZnVuY3Rpb24gYXdhaXRHZXRDbGlja0V2ZW50TGlzdGVuZXIobm9k
ZUlkKSB7Ci0gICAgICAgIHJldHVybiBET01BZ2VudC5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUo
bm9kZUlkKQotICAgICAgICAudGhlbigoe2xpc3RlbmVyc30pID0+IGxpc3RlbmVycy5maW5kKChl
dmVudExpc3RlbmVyKSA9PiBldmVudExpc3RlbmVyLnR5cGUgPT09ICJjbGljayIpKTsKKyAgICBh
c3luYyBmdW5jdGlvbiBnZXRDbGlja0V2ZW50TGlzdGVuZXIobm9kZUlkKSB7CisgICAgICAgIGxl
dCB7bGlzdGVuZXJzfSA9IGF3YWl0IERPTUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShu
b2RlSWQpOworICAgICAgICByZXR1cm4gbGlzdGVuZXJzLmZpbmQoKGV2ZW50TGlzdGVuZXIpID0+
IGV2ZW50TGlzdGVuZXIudHlwZSA9PT0gImNsaWNrIik7CisgICAgfQorCisgICAgYXN5bmMgZnVu
Y3Rpb24gc2V0QnJlYWtwb2ludEZvckNsaWNrRXZlbnRMaXN0ZW5lcihub2RlKSB7CisgICAgICAg
IGxldCBjbGlja0V2ZW50TGlzdGVuZXIgPSBhd2FpdCBnZXRDbGlja0V2ZW50TGlzdGVuZXIobm9k
ZS5pZCk7CisgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFjbGlja0V2ZW50TGlzdGVuZXIu
aGFzQnJlYWtwb2ludCwgIkNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBidXR0b24xIHNob3VsZCBu
b3QgaGF2ZSBhIGJyZWFrcG9pbnQuIik7CisKKyAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChy
ZXNvbHZlLCByZWplY3QpID0+IHsKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5z
aW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRC
cmVha3BvaW50QWRkZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIHJlc29sdmUoZXZl
bnQuZGF0YS5icmVha3BvaW50KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBXSS5k
b21NYW5hZ2VyLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGNsaWNrRXZlbnRMaXN0ZW5l
cik7CisgICAgICAgIH0pOwogICAgIH0KIAogICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlQXN5bmNTdWl0ZSgiRE9NLkJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIik7CkBAIC00
OSw3ICs2Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBXSS5EZWJ1Z2dlck1hbmFn
ZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGBQYXVzZSByZWFzb24gc2hvdWxkIGJlIExpc3RlbmVy
LmApOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFyZ2V0RGF0
YS5wYXVzZURhdGEuZXZlbnROYW1lLCAiY2xpY2siLCBgUGF1c2UgZGF0YSBldmVudE5hbWUgc2hv
dWxkIGJlICJjbGljayIuYCk7CiAKLSAgICAgICAgICAgICAgICBhd2FpdEdldENsaWNrRXZlbnRM
aXN0ZW5lcihidXR0b24xTm9kZS5pZCkKKyAgICAgICAgICAgICAgICBnZXRDbGlja0V2ZW50TGlz
dGVuZXIoYnV0dG9uMU5vZGUuaWQpCiAgICAgICAgICAgICAgICAgLnRoZW4oKGNsaWNrRXZlbnRM
aXN0ZW5lcikgPT4gewogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCh0
YXJnZXREYXRhLnBhdXNlRGF0YS5ldmVudExpc3RlbmVySWQgPT09IGNsaWNrRXZlbnRMaXN0ZW5l
ci5ldmVudExpc3RlbmVySWQsIGBQYXVzZSBkYXRhIGV2ZW50TGlzdGVuZXJJZCBzaG91bGQgYmUg
IiR7Y2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZH0iLmApOwogICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjbGlja0V2ZW50TGlzdGVuZXIuaGFzQnJlYWtw
b2ludCwgIkNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBidXR0b24xIHNob3VsZCBoYXZlIGEgYnJl
YWtwb2ludC4iKTsKQEAgLTc3LDcgKzkwLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlja0J1dHRvbjEoKWApOwog
ICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVy
KGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAgZ2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRv
bjFOb2RlLmlkKQogICAgICAgICAgICAgLnRoZW4oKGNsaWNrRXZlbnRMaXN0ZW5lcikgPT4gewog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KCFjbGlja0V2ZW50TGlzdGVuZXIu
aGFzQnJlYWtwb2ludCwgIkNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBidXR0b24xIHNob3VsZCBu
b3QgaGF2ZSBhIGJyZWFrcG9pbnQuIik7CiAKQEAgLTExMSw3ICsxMjQsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdldERhdGEu
cGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5MaXN0ZW5lciwgYFBh
dXNlIHJlYXNvbiBzaG91bGQgYmUgTGlzdGVuZXIuYCk7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQodGFyZ2V0RGF0YS5wYXVzZURhdGEuZXZlbnROYW1lLCAiY2xpY2siLCBg
UGF1c2UgZGF0YSBldmVudE5hbWUgc2hvdWxkIGJlICJjbGljayIuYCk7CiAKLSAgICAgICAgICAg
ICAgICBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKKyAgICAgICAg
ICAgICAgICBnZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCiAgICAgICAgICAg
ICAgICAgLnRoZW4oKGNsaWNrRXZlbnRMaXN0ZW5lcikgPT4gewogICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydCh0YXJnZXREYXRhLnBhdXNlRGF0YS5ldmVudExpc3RlbmVy
SWQgPT09IGNsaWNrRXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsIGBQYXVzZSBkYXRhIGV2
ZW50TGlzdGVuZXJJZCBzaG91bGQgYmUgIiR7Y2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVu
ZXJJZH0iLmApOwogICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjbGlj
a0V2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludCwgIkNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBi
dXR0b24xIHNob3VsZCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKQEAgLTEzOSw3ICsxNTIsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYGNsaWNrQnV0dG9uMSgpYCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
YXdhaXRHZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCisgICAgICAgICAgICBn
ZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCiAgICAgICAgICAgICAudGhlbigo
Y2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnQoY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQsICJDbGljayBldmVudCBsaXN0
ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgaGF2ZSBhIGJyZWFrcG9pbnQuIik7CiAKQEAgLTE1NCw2
ICsxNjcsMTk1IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIH0KICAgICB9KTsKIAorICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lci5PcHRpb25zLkNvbmRpdGlvbiIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAi
Q2hlY2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3Bv
aW50IGhhcyBhIHRydXRoeSBicmVha3BvaW50IGNvbmRpdGlvbi4iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICBs
ZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAr
K3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQg
c2V0QnJlYWtwb2ludEZvckNsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZSk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLiIpOworICAgICAgICAgICAg
YnJlYWtwb2ludC5jb25kaXRpb24gPSAiZmFsc2UiOworCisgICAgICAgICAgICBmb3IgKGxldCBp
ID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4u
Iik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0gInRydWUiOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGlu
ZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLiIpOworICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZUJ1dHRvbjFD
bGljayIpLAorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KGBjbGlja0J1dHRvbjEoKWApLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAg
ICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1
c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBs
aXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9u
cy5JZ25vcmVDb3VudCIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVi
dWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50IGlzIGhpdCBhdCBsZWFz
dCBhcyBtYW55IHRpbWVzIGFzIGl0J3MgYGlnbm9yZUNvdW50YC4iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICBs
ZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAr
K3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQg
c2V0QnJlYWtwb2ludEZvckNsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZSk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4iKTsKKyAgICAgICAgICAgIGJy
ZWFrcG9pbnQuaWdub3JlQ291bnQgPSAyOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsg
aSA8PTQ7ICsraSkgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLiIpOworICAgICAgICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZUJ1dHRvbjFDbGljayIp
LAorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlj
a0J1dHRvbjEoKWApLAorICAgICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgaWYg
KGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChw
YXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3Vu
dCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5l
cik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAg
ICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5BY3Rp
b24uTG9nIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGxvZyBicmVha3BvaW50
IGFjdGlvbnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAg
ICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
c3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0g
YXdhaXQgc2V0QnJlYWtwb2ludEZvckNsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZSk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiQWRkaW5nIGxvZyBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgIGxldCBh
Y3Rpb24gPSBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUu
TG9nLCB7ZGF0YTogIkJSRUFLUE9JTlQgQUNUSU9OIExPRyAxIn0pOworCisgICAgICAgICAgICBm
b3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIp
OworICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZGF0YSA9IGBCUkVBS1BPSU5UIEFDVElPTiBM
T0cgJHtpfWA7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVl
Li4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAg
ICAgICBsZXQgW21lc3NhZ2VBZGRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAg
ICAgICAgICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIuYXdhaXRFdmVudChXSS5Db25zb2xlTWFu
YWdlci5FdmVudC5NZXNzYWdlQWRkZWQpLAorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAg
ICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKG1lc3NhZ2VBZGRlZEV2ZW50LmRhdGEubWVzc2FnZS5tZXNzYWdlVGV4dCwgYWN0aW9uLmRh
dGEsICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAg
ICAgIGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VD
b3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0
ZW5lcik7CisgICAgICAgIH0sCisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Cisg
ICAgICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5B
Y3Rpb25zLkV2YWx1YXRlIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IGV2YWx1
YXRlIGJyZWFrcG9pbnQgYWN0aW9ucyBleGVjdXRlIHdoZW4gdGhlIGJyZWFrcG9pbnQgaXMgaGl0
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9
IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1
dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uIik7
CisgICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FD
VElPTl9FVkFMVUFURSA9IDE7In0pOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8
PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSA+IDEpIHsKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uIik7CisgICAgICAgICAg
ICAgICAgICAgIGFjdGlvbi5kYXRhID0gYHdpbmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFU
RSA9ICR7aX07YDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGF1dG8tY29udGlu
dWUuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVl
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAg
ICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZUJ1dHRvbjFDbGljayIpLAorICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlja0J1dHRvbjEoKWApLAorICAg
ICAgICAgICAgICAgIF0pOworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRBY3Rpb25F
dmFsdWF0ZVJlc3VsdCA9IGF3YWl0IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdpbmRv
dy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURWApOworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0LCBpLCAiU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICBpZiAo
aSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBh
dXNlQ291bnQsIGksICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIs
ICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVh
a3BvaW50LnJlbW92ZSgpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOwor
ICAgICAgICB9LAorICAgIH0pOworCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAgICBu
YW1lOiAiRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLkludmFsaWQiLAogICAgICAg
ICBkZXNjcmlwdGlvbjogIkludmFsaWQgZXZlbnQgbGlzdGVuZXIgaWRlbnRpZmllcnMgc2hvdWxk
IGNhdXNlIGFuIGVycm9yLiIsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29y
a2VyL2RlYnVnZ2VyLXBhdXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2Rl
YnVnZ2VyLXBhdXNlLmh0bWwKaW5kZXggZWUzYTEyNWE3MWQxOGEzMjU4NTEyMjhjM2IxZGFhNjk0
MTY1NjcxYi4uNWFjYmQxOTJmZTBlMmQ4MWI0M2Q3M2EyZTM1ZmY5ZjM3MmQ0MDgzYSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbApAQCAt
NjMsNyArNjMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgZGVzY3JpcHRpb246ICJXb3Jr
ZXIgc2hvdWxkIHBhdXNlIG9uIGJyZWFrcG9pbnQuIiwKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHdvcmtlclRhcmdldC5tYWluUmVz
b3VyY2UuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDgsIDApOwotICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICBsZXQg
YnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHdvcmtlci5wb3N0TWVzc2Fn
ZSgidHJpZ2dlckJyZWFrcG9pbnQiKWApOwogICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IChldmVudCkgPT4gewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9k
ZWJ1Z2dlci1zaGFyZWQtYnJlYWtwb2ludC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dv
cmtlci9kZWJ1Z2dlci1zaGFyZWQtYnJlYWtwb2ludC5odG1sCmluZGV4IGEzYjMzNGM0ZDY2MzNi
ZTM2OTcwYjc4OWViNmVjODljOGI2MWNkMzIuLmEzZjI2ZmRkMDJkNzQ3MDE2MmE2ZGJjYjczOGQx
NWRhNzM2YjNkZjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVi
dWdnZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
d29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwKQEAgLTk0LDcgKzk0LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCh3b3JrZXJUYXJnZXQxLm1haW5SZXNvdXJjZSBpbnN0
YW5jZW9mIFdJLlNjcmlwdCk7CiAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSB3b3JrZXJUYXJn
ZXQxLm1haW5SZXNvdXJjZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oOCwgMCk7Ci0gICAgICAg
ICAgICBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICAg
ICAgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsK
IAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdHJpZ2dlcldvcmtl
ckJyZWFrcG9pbnRQYXVzZXMoKWApOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406443</attachid>
            <date>2020-08-11 19:23:44 -0700</date>
            <delta_ts>2020-08-11 19:36:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215362-20200811192343.patch</filename>
            <type>text/plain</type>
            <size>494440</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVmZjdmMjY2NDFiOThmNmQ5NjM5Y2JhODY1ZDM0
NTg0NTY2OTc0MmQuLjY2YzJhMTdjMjY0YmYzOTljNmEwY2U3N2E5Y2VkOTk1YmI3YWVmMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MSBAQAorMjAyMC0wOC0xMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0
byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZl
bnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3Qg
TiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVu
dCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNgIHBhcmFtYXRl
ciB0byBgRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyYCB0byBhbGxvdyBjb25maWd1
cmF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb246
CisgICAgICAgIEFkZCBhbiBgb3B0aW9uc2AgcGFyYW1hdGVyIHRvIGBET01EZWJ1Z2dlci5zZXRF
dmVudEJyZWFrcG9pbnRgIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBkZWJ1
Z2dlci9CcmVha3BvaW50Lmg6CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlkIGNvbnN0KTog
QWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnNvdXJjZUlEIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmxpbmVOdW1iZXIgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y29sdW1uTnVtYmVyIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNvbmRpdGlvbiBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpCcmVha3BvaW50OjphY3Rpb25zIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OmlzQXV0b0NvbnRpbnVlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OnJlc2V0SGl0Q291bnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2lu
dDo6aXNMaW5rZWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6aXNS
ZXNvbHZlZCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50c0xpc3Q6On5C
cmVha3BvaW50c0xpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRlYnVnZ2VyL0JyZWFrcG9pbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpBY3Rpb24pOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAg
IChKU0M6OkJyZWFrcG9pbnQ6OkJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJl
YWtwb2ludDo6bGluayk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpyZXNvbHZl
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnNob3VsZFBhdXNlKTogQWRkZWQu
CisgICAgICAgIFVuaWZ5IGBKU0M6OkJyZWFrcG9pbnRgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHRC
cmVha3BvaW50YC4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0aXZlcy5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6RGVidWdnZXIpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6YWRkT2JzZXJ2ZXIpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
OnJlbW92ZU9ic2VydmVyKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5EaXNw
YXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyk6IEFkZGVkLgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6c291cmNlUGFyc2VkKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Ojp0b2dnbGVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmFwcGx5QnJlYWtw
b2ludHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmRpZEhpdEJy
ZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNsZWFyQnJlYWtwb2lu
dHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9u
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rp
b25zKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0
T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNhbmNlbFBhdXNl
QXROZXh0T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNjaGVk
dWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6Y29udGludWVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
OnN0ZXBOZXh0RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwSW50b1N0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmhhbmRs
ZVBhdXNlKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpleGNlcHRpb25PckNhdWdo
dFZhbHVlKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjphdEV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2xlYXJOZXh0UGF1c2VTdGF0ZSk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjp3aWxsUnVuTWljcm90YXNrKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
YnVnZ2VyOjpkaWRSdW5NaWNyb3Rhc2spOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
Omhhc0JyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0UGF1
c2VPbk5leHRTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBVbmlmeSBgSlNDOjpEZWJ1Z2dl
cmAgYW5kIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB0byBzaW1wbGlmeSBicmVha3Bv
aW50IGxvZ2ljLgorICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYSAic3BlY2lhbCBi
cmVha3BvaW50Iiwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBgSlNDOjpCcmVha3BvaW50YAorICAg
ICAgICB0aGF0IGlzIGV4cGVjdGVkIHRvIHBhdXNlIGF0IHRoZSBuZXh0IG9wcG9ydHVuaXR5IGJ1
dCBpc24ndCB0aWVkIHRvIGEgcGFydGljdWxhciBsb2NhdGlvbi4KKyAgICAgICAgQXMgYW4gZXhh
bXBsZSwgd2hlbmV2ZXIgYW4gZXZlbnQgYnJlYWtwb2ludCBpcyBoaXQsIGluc3RlYWQgb2YganVz
dCBwYXVzaW5nIGF0IHRoZSBuZXh0CisgICAgICAgIG9wcG9ydHVuaXR5LCB0aGUgbmV3bHkgbWFu
YWdlZCBgSlNDOjpCcmVha3BvaW50YCBpcyB1c2VkIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIs
IGFsbG93aW5nCisgICAgICAgIGZvciBpdCdzIGNvbmZpZ3VyYXRpb24gKGllLmcuIGNvbmRpdGlv
biwgaWdub3JlIGNvdW50LCBhY3Rpb25zLCBhdXRvLWNvbnRpbnVlKSB0byBiZSB1c2VkLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6b2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcpOiBBZGRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6cGFyc2VCcmVha3BvaW50T3B0aW9ucyk6IEFkZGVkLgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZy
b21QYXlsb2FkKTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVha3BvaW50KTogQWRkZWQuCisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtw
b2ludDo6Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6bWF0
Y2hlcyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZCk6IEFkZGVkLgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24p
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25z
b2xlQXNzZXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkU2NoZWR1bGVBc3luY0NhbGwpOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZERlYnVnZ2Vy
TG9jYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkU2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbik6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VB
dE5leHRPcHBvcnR1bml0eSk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VGb3JT
cGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KTogQWRkZWQuCisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdW1lKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRsZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNj
cmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
cnNlU291cmNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
d2lsbFJ1bk1pY3JvdGFzayk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFJ1bk1pY3JvdGFzayk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3Bv
aW50U3RhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
bGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6bWF0Y2hl
cyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6OmJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2lu
dENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgQ3Jl
YXRlIGEgcHJpdmF0ZSBgUHJvdG9jb2xCcmVha3BvaW50YCBjbGFzcyB0aGF0IGhvbGRzIHRoZSBk
YXRhIHNlbnQgYnkgdGhlIGZyb250ZW5kLiBUaGlzCisgICAgICAgIGlzIG5lY2Vzc2FyeSBiZWNh
dXNlIGJyZWFrcG9pbnRzIGluIHRoZSBmcm9udGVuZCBoYXZlIGEgcG90ZW50aWFsbHkgb25lLXRv
LW1hbnkgcmVsYXRpb25zaGlwCisgICAgICAgIHdpdGggYnJlYWtwb2ludHMgaW4gdGhlIGJhY2tl
bmQsIGFzIHRoZSBzYW1lIHNjcmlwdCBjYW4gYmUgbG9hZGVkIG1hbnkgdGltZXMgb24gYSBwYWdl
LiBFYWNoCisgICAgICAgIG9mIHRob3NlIHNjcmlwdHMgaXMgaW5kZXBlbmRlbnQsIGhvd2V2ZXIs
IGFuZCBjYW4gZXhlY3V0ZSBkaWZmZXJlbnRseSwgbWVhbmluZyB0aGF0IHRoZSBzYW1lCisgICAg
ICAgIGJyZWFrcG9pbnQgZm9yIGVhY2ggc2NyaXB0IGFsc28gbmVlZHMgYSBkaWZmZXJlbnQgc3Rh
dGUgKGUuZy4gaWdub3JlIGNvdW50KS4gQXMgc3VjaCwgdGhlCisgICAgICAgIGBQcm90b2NvbEJy
ZWFrcG9pbnRgIGlzIGEgc29ydCBvZiAiYmx1ZXByaW50IiB0aGF0IGlzIGFjdHVhbGl6ZWQgd2hl
bmV2ZXIgYSBuZXcgc2NyaXB0IGlzCisgICAgICAgIHBhcnNlZCB0aGF0IG1hdGNoZXMgdGhlIFVS
TCBvZiB0aGUgYFByb3RvY29sQnJlYWtwb2ludGAgdG8gY3JlYXRlIGEgYEpTQzo6QnJlYWtwb2lu
dGAgdGhhdAorICAgICAgICBpcyB1c2VkIGJ5IHRoZSBgSlNDOjpEZWJ1Z2dlcmAuIGBQcm90b2Nv
bEJyZWFrcG9pbnRgIGFsc28gcGFyc2VzIGJyZWFrcG9pbnQgY29uZmlndXJhdGlvbnMuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6SlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGls
ZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2aWV3KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgUmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcmAgd2l0aCBg
SlNDOjpEZWJ1Z2dlcmAuCisKKyAgICAgICAgKiBydW50aW1lL0pTTWljcm90YXNrLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNNaWNyb3Rhc2s6OnJ1bik6CisgICAgICAgIERyaXZlLWJ5OiByMjQ4ODk0
IG1pc3Rha2VubHkgb21pdHRlZCB0aGUgY2FsbCB0byBub3RpZnkgdGhlIGRlYnVnZ2VyIHRoYXQg
dGhlIG1pY3JvdGFzayByYW4uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2lu
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorCiAyMDIwLTA4
LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoKSBuZWdsZWN0ZWQgdG8gc2V0IHRoZSBleGNlcHRpb24g
cG9pbnRlciByZXN1bHQgaW4gb25lIGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk1NzMwNGI0YTAwMjk2
ODJjNTFkOGI1ODlmMGM3YTBlZGViNmFmOC4uODM1NWU2YTY3MmJjODZhMWMzZTFiMjExYmFkNDYz
NzMxZTRhNDlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0wOC0xMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0
byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZl
bnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3Qg
TiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVu
dCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisgICAgICAgIFRlc3RzOiBp
bnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFr
cG9pbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
aW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sCisgICAgICAgICAgICAgICBp
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbAorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9p
bnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6IERl
bGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6bWFp
bkZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlVGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmlyZVRp
bWVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmln
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVB
bmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6
ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dl
ckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtw
b2ludCk6CisgICAgICAgIEtlZXAgYSBgSlNDOjpCcmVha3BvaW50YCBmb3IgZWFjaCBldmVudCBi
cmVha3BvaW50IGluc3RlYWQgb2YgYSBzaW1wbGUgYGJvb2xgLCBhbGxvd2luZyBmb3IKKyAgICAg
ICAgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBicmVha3BvaW50IGlzIGZpcnN0IHNldC4gV2hlbiBh
bnkgb2YgdGhlc2UgYnJlYWtwb2ludHMgYXJlIGhpdCwgcGFzcworICAgICAgICBpdCB0byB0aGUg
YEpTQzo6RGVidWdnZXJgIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIsIHdoaWNoIGJlaGF2ZXMg
dGhlIHNhbWUgYXMgInBhdXNlIEFTQVAiCisgICAgICAgIGJ1dCBhbHNvIHN1cHBvcnRzIGEgY29u
ZGl0aW9uLCBhbiBpZ25vcmUgY291bnQsIGFjdGlvbnMsIGFuZCBhdXRvLWNvbnRpbnVlLiBSZXNl
dCB0aGUgaGl0CisgICAgICAgIGNvdW50IGZvciBhbnkgb2YgdGhlc2UgInNwZWNpYWwgYnJlYWtw
b2ludHMiIHRoYXQgcGVyc2lzdCBhY3Jvc3MgV2ViIEluc3BlY3RvciBzZXNzaW9ucworICAgICAg
ICB3aGVuIHRoZSBtYWluIGZyYW1lIG5hdmlnYXRlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
UGFnZVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERl
YnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpZFBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlkQ29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVn
U2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjppc0NvbnRlbnRTY3JpcHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZXBvcnRFeGNl
cHRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmF0
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVy
OjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICBSZXBs
YWNlIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB3aXRoIGBKU0M6OkRlYnVnZ2VyYC4K
KworICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToK
KyAgICAgICAgUmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50YCB3aXRoIGBKU0M6
OkJyZWFrcG9pbnRgLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRI
YW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpcmVUaW1lcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEhhbmRsZUV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwpOgorCisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
Ojppbm5lckludm9rZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgIFdoZW4gbm90
aWZ5aW5nIFdlYiBJbnNwZWN0b3IgdGhhdCBhY3Rpdml0eSBkaWQgb2NjdXIsIGluY2x1ZGUgYWxs
IGluZm9ybWF0aW9uIHByZXZpb3VzbHkKKyAgICAgICAgaW5jbHVkZWQgd2hlbiBub3RpZnlpbmcg
V2ViIEluc3BlY3RvciB0aGF0IHRoYXQgYWN0aXZpdHkgd2FzIGFib3V0IHRvIG9jY3VyIHNvIHRo
YXQgV2ViCisgICAgICAgIEluc3BlY3RvciBjYW4ga25vdyB3aGV0aGVyIGEgcGF1c2UgZm9yIHRo
ZSAic3BlY2lhbCBicmVha3BvaW50IiBmb3IgdGhhdCBhY3Rpdml0eSBpcyBzdGlsbAorICAgICAg
ICBzY2hlZHVsZWQgYW5kIGlmIHNvIGNhbmNlbCBpdC4KKwogMjAyMC0wOC0xMSAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gZ3N0
LWZ1bGwgc3RhbmRhbG9uZSBsaWJyYXJ5IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmlu
ZGV4IDE2NzdiMTVmOTg0NTVlOWNkZDI4ODRhMzFiZmY2MDY1Yzg4ZDA5NzAuLmZkYTBhZjUxNzhh
NTVjNDEyODYyMTNjZjkwYmQ4ODVjYjRiYzJjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM2MyBAQAorMjAyMC0wOC0xMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMg
dG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0byBkbyB0aGluZ3MgbGlrZToKKyAgICAg
ICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZlbnQudHlwZWAgaXMgYSBjZXJ0YWluIHZh
bHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3QgTiBwYXVzZXMKKyAgICAgICAgIC0gZXZh
bHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVudCBsaXN0ZW5lciBpcyBpbnZva2VkIHdp
dGhvdXQgcGF1c2luZworCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2lu
dC5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5w
cm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBn
bG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZW1v
dmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlZGl0
YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGNvbmRp
dGlvbik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWdub3JlQ291bnQp
OgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGlnbm9yZUNvdW50KToKKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBhdXRvQ29udGludWUpOgorICAgICAg
ICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGF1dG9Db250aW51ZSk6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgYWN0aW9ucyk6CisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5nZXQgcHJvYmVBY3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQu
cHJvdG90eXBlLmN5Y2xlVG9OZXh0TW9kZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3Rv
dHlwZS5jcmVhdGVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUucmVj
cmVhdGVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlQWN0
aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmNsZWFyQWN0aW9ucyk6Cisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLm9wdGlvbnNUb1Byb3RvY29sKTogQWRkZWQuCisgICAg
ICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdJLkJyZWFrcG9pbnQuZnJvbUpTT04pOiBEZWxldGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgY29udGVudElkZW50aWZpZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNjcmlwdElkZW50
aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHRh
cmdldCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWRl
bnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQg
aWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5n
ZXQgcmVzb2x2ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IHJlc29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBl
LnNhdmVJZGVudGl0eVRvQ29va2llKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQu
cHJvdG90eXBlLl9pc1NwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5w
cm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxh
eUxvY2F0aW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NQnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NQnJlYWtwb2ludC5mcm9tSlNPTik6IEFkZGVkLgorICAgICAgICAoV0kuRE9NQnJl
YWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01CcmVha3Bv
aW50LnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5kZXNlcmlh
bGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5nZXQg
ZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9F
dmVudEJyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRXZlbnRCcmVha3BvaW50LmZyb21KU09OKTogQWRkZWQuCisgICAgICAgIChXSS5FdmVu
dEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBnbG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2
ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChX
SS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0ku
RXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAg
IChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5FdmVu
dEJyZWFrcG9pbnQuZGVzZXJpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVh
a3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZl
bnRCcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzOiBDb3BpZWQgZnJv
bSBVc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzLgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpT
T04pOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6
CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNvdXJjZUNv
ZGVMb2NhdGlvbik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUu
Z2V0IGNvbnRlbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRpZmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHRhcmdldCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZW1vdmFibGUpOiBBZGRlZC4KKyAgICAg
ICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZWRpdGFibGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWRlbnRp
Zmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGlk
ZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdl
dCByZXNvbHZlZCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IHJlc29sdmVkKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3Rv
dHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5wcm90b3R5cGUuX2lzU3BlY2lhbCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5wcm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlv
bkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1VSTEJyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50KToKKyAgICAgICAg
KFdJLlVSTEJyZWFrcG9pbnQuZnJvbUpTT04pOiBBZGRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnQucHJvdG90eXBlLmdldCBnbG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2lu
dC5wcm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQuZGVzZXJpYWxp
emUpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGRp
c2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQucHJvdG90eXBlLnNl
dCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSBgV0kuQnJlYWtwb2ludGAgdG8g
YFdJLkphdmFTY3JpcHRCcmVha3BvaW50YCBhbmQgdXNlIGBXSS5CcmVha3BvaW50YCBhcyBhIG5l
dyBjb21tb24KKyAgICAgICAgYmFzZSBjbGFzcyBmb3IgYWxsIGJyZWFrcG9pbnQgdHlwZXMsIGFs
bG93aW5nIG1vcmUgbG9naWMgdG8gYmUgc2hhcmVkIChlLmcuIGRpc2FibGVkIHN0YXRlKS4KKyAg
ICAgICAgQWRkaXRpb25hbGx5LCBicmVha3BvaW50cyBhcmUgbm93IGFibGUgdG8KKyAgICAgICAg
IC0gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZXkncmUKKyAgICAgICAgICAgIC0gZ2xvYmFs
IChpLmUuIHNwZWNpYWwpCisgICAgICAgICAgICAtIHJlbW92YWJsZQorICAgICAgICAgICAgLSBl
ZGl0YWJsZSAoaS5lLiBjb25maWd1cmFibGUpCisgICAgICAgICAtIHJlbW92ZSB0aGVtc2VsdmVz
CisgICAgICAgIHdpdGhvdXQgdGhlIGNhbGxlciBuZWVkaW5nIHRvIGtub3cgd2hhdCBtYW5hZ2Vy
IHRvIGNvbnN1bHQgd2l0aC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIpOgorICAgICAgICAoV0kuRE9N
TWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50Q29uZmlndXJhdGlvbik6IEFk
ZGVkLgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuc2V0QnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5
cGUuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3Rv
dHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9p
bnRBY3Rpb25zQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICBLZWVwIHRyYWNrIG9mIGNvbmZpZ3Vy
YXRpb24gY2hhbmdlcyBmb3Igc3BlY2lmaWMgbGlzdGVuZXIgYnJlYWtwb2ludHMuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qczoKKyAg
ICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlcik6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZEV2ZW50QnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50QnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFVSTEJyZWFr
cG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVV
UkxCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
X3VwZGF0ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
cHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6IEFk
ZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZl
bnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlv
bnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90
eXBlLmlzQnJlYWtwb2ludFNwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICBLZWVwIHRyYWNrIG9m
IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgZ2xvYmFsIGV2ZW50IGJyZWFrcG9pbnRzLgorICAg
ICAgICBTdG9yZSBzcGVjaWFsIGdsb2JhbCBldmVudCBicmVha3BvaW50cyBpbnNpZGUgYFdJLm9i
amVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzYC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5h
Z2VyKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkQnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9p
bnQpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRQcm9iZXNGb3JC
cmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludCk6IEFkZGVkLgorICAg
ICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fc2V0QnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9icmVha3BvaW50RWRpdGFibGVQcm9w
ZXJ0eURpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVCcmVha3BvaW50QWN0aW9uc0RpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFJlbW92YWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFNwZWNpYWwpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pc0JyZWFrcG9pbnRF
ZGl0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Ll9kZWJ1Z2dlckJyZWFrcG9pbnRBY3Rpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2RlYnVnZ2VyQnJlYWtwb2ludE9wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fYWRkUHJvYmVzRm9y
QnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90
eXBlLl9yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBEZWxl
dGVkLgorICAgICAgICBSZXBsYWNlIGBXSS5CcmVha3BvaW50YCB3aXRoIGBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludGAuCisgICAgICAgIFByb2JlcyBub3cgc3VwcG9ydCBgV0kuRXZlbnRCcmVha3Bv
aW50YCBpbiBhZGRpdGlvbiB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIu
anM6CisgICAgICAgIChXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFw
cGVuZENvbnRleHRNZW51SXRlbXMpOgorICAgICAgICAoV0kuQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyLnByb3RvdHlwZS5fY3JlYXRlUG9wb3ZlckNvbnRlbnQpOgorICAgICAgICBBbGxvdyBh
bnkgYnJlYWtwb2ludCBpbnN0ZWFkIG9mIG9ubHkgYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4K
KyAgICAgICAgRHJpdmUtYnk6IHRoZSBleGlzdGluZyBgaWdub3JlQ291bnRgIHZhbHVlIHdhc24n
dCBiZWluZyB1c2VkIHRvIHBvcHVsYXRlIHRoZSBgPGlucHV0PmAuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZWxldGUpOgorICAgICAgICAoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgbGlzdGVuZXJTZXQpOiBBZGRlZC4KKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlU3RhdHVzKTog
QWRkZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0
ZVRpdGxlcyk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5nZXQgYnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLmdldCBmaWx0ZXJhYmxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVUaXRsZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRl
U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAo
Lml0ZW0uYnJlYWtwb2ludCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZSk6CisgICAgICAgICguaXRl
bS5icmVha3BvaW50LnBhdXNlZCAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVm
ZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5wYXVzZWQgLmljb24pOiBB
ZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2Uu
cmVzb2x2ZWQpOiBEZWxldGVkLgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwg
LndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmU6Zm9jdXMtd2l0aGluIC5pdGVt
LmJyZWFrcG9pbnQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludCAuc3VidGl0bGUuZm9ybWF0dGVkLWxv
Y2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVu
dC1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWV4Y2VwdGlvbi1p
Y29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWFzc2VydGlvbi1pY29u
IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5p
Y29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LXBhdXNlZC1pY29uIC5pY29uKTog
RGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uKTog
RGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uID4g
c3Bhbik6IERlbGV0ZWQuCisgICAgICAgICguZGF0YS11cGRhdGVkLmJyZWFrcG9pbnQtZ2VuZXJp
Yy1saW5lLWljb24gLmljb24gPiBzcGFuKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1p
Y29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIC5icmVha3BvaW50LWV4Y2VwdGlvbi1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LWFz
c2VydGlvbi1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVh
a3BvaW50LXBhdXNlZC1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5p
Y29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9p
bnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNo
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUub25kZXRhY2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0ku
RE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250
ZXh0TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVu
dEZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fdXBkYXRlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAg
ICAgICAoLml0ZW0uYnJlYWtwb2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2Vk
KSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1yZW1v
dmVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5kb20uc3VidHJlZS1tb2RpZmll
ZDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZG9tLmF0dHJpYnV0ZS1tb2RpZmll
ZDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3Qo
LnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmRvbS5icmVha3Bv
aW50LWZvci1zdWJ0cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmlj
b24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0
dHJpYnV0ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJlbW92
ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAg
IChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5kb20uYnJl
YWtwb2ludC1mb3Itc3VidHJlZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24p
IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUtbW9kaWZpZWQ6
bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5kb20uYnJlYWtw
b2ludC1mb3Itbm9kZS1yZW1vdmVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24p
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRh
Y2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJv
dG90eXBlLm9uZGV0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRy
ZWVFbGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25zcGFjZSk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUu
cG9wdWxhdGVDb250ZXh0TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9z
dGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3du
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fdG9nZ2xlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6IERlbGV0ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6
CisgICAgICAgICguaXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBh
dXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuaW50
ZXJ2YWw6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAo
Lml0ZW0uYnJlYWtwb2ludC5ldmVudC50aW1lb3V0Om5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVk
LgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVh
a3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4K
KyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtw
b2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAg
KEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5ldmVu
dC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYShw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5ldmVudC50aW1lb3V0
Om5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZXZlbnQu
YnJlYWtwb2ludC1mb3ItYW5pbWF0aW9uLWZyYW1lOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNv
bikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2lu
dC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0
ZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1saXN0ZW5lcjpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5i
cmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3BvaW50LXBh
dXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWFuaW1hdGlv
bi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZXZl
bnQuYnJlYWtwb2ludC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJlYWtw
b2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZl
cnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci10
aW1lb3V0Om5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5nZXQgZmlsdGVyYWJsZURhdGEpOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlU3RhdHVzKTogQWRkZWQu
CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51
cGRhdGVUaXRsZXMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3M6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MuCisgICAgICAgICguaXRlbS5icmVha3BvaW50Lmph
dmFzY3JpcHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKC5pdGVt
LmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6
IEFkZGVkLgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmU6Zm9jdXMtd2l0aGluIC5pdGVtLmJyZWFrcG9pbnQu
amF2YXNjcmlwdC5zZWxlY3RlZCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6IEFk
ZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0IC5zdWJ0aXRsZS5mb3Jt
YXR0ZWQtbG9jYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5saW5lIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFz
Y3JpcHQubGluZSAuaWNvbiA+IHNwYW4pOiBBZGRlZC4KKyAgICAgICAgKC5kYXRhLXVwZGF0ZWQu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbiA+IHNwYW4pOiBBZGRlZC4KKyAg
ICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmlj
b24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRp
b24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5h
c3NlcnRpb24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5taWNyb3Rhc2sgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29u
KTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uKTogQWRk
ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5i
cmVha3BvaW50LmphdmFzY3JpcHQuZXhjZXB0aW9uIC5pY29uKTogQWRkZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmphdmFz
Y3JpcHQuYXNzZXJ0aW9uIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubWljcm90YXNr
IC5pY29uKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3Bv
aW50VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQp
OgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFj
aCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uZGV0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxl
bWVudC5wcm90b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtw
b2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25zcGFjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29u
dGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1l
bnRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl90b2dnbGVCcmVha3Bv
aW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUuX3VwZGF0ZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAoLml0ZW0uYnJlYWtw
b2ludC51cmwgLnN1YnRpdGxlKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LnVy
bDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQudXJsOm5vdCgucGF1c2VkKSAuaWNv
bik6IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQudXJsIC5zdWJ0aXRsZSk6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSAuYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSBgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50YCB0byBg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudGAgYW5kIHVzZQorICAgICAgICBgV0ku
QnJlYWtwb2ludFRyZWVFbGVtZW50YCBhcyBhIG5ldyBjb21tb24gYmFzZSBjbGFzcyBmb3IgYWxs
IGJyZWFrcG9pbnQgdHJlZSBlbGVtZW50cywKKyAgICAgICAgYWxsb3dpbmcgbW9yZSBsb2dpYyBh
bmQgc3R5bGVzIHRvIGJlIHNoYXJlZCAoZS5nLiBkaXNhYmxlZCBzdGF0ZSkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0ku
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLmNsb3NlZCk6CisgICAgICAg
IChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2luc2VydERlYnVn
Z2VyVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9jb21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudHMpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fYWRkQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX3JlbW92ZUFsbEJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fYnJlYWtwb2ludHNCZW5lYXRoVHJl
ZUVsZW1lbnQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9hZGRJc3N1ZSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlvbik6CisgICAgICAgIChXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRsZVRyZWVTZWxlY3Rp
b25EaWRDaGFuZ2UpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
cHJvdG90eXBlLl9oYW5kbGVCcmVha3BvaW50RWxlbWVudEFkZGVkT3JSZW1vdmVkKToKKyAgICAg
ICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVD
cmVhdGVCcmVha3BvaW50Q29udGV4dE1lbnUuYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtw
b2ludCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX3BvcHVsYXRlQ3JlYXRlQnJlYWtwb2ludENvbnRleHRNZW51KToKKyAgICAgICAgKFdJLlNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlRGVidWdnZXJPYmpl
Y3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50cyk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qczoK
KyAgICAgICAgKFdJLlByb2JlU2V0KToKKyAgICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlwZS5j
cmVhdGVQcm9iZSk6CisgICAgICAgIChXSS5Qcm9iZVNldC5wcm90b3R5cGUud2lsbFJlbW92ZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanM6
CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9wcm9jZXNzUmVjb3JkKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanM6
CisgICAgICAgIChXSS5Qcm9iZVNldERldGFpbHNTZWN0aW9uKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLlBy
b2JlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuaW5zcGVjdCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdJLlNv
dXJjZUNvZGVUZXh0RWRpdG9yKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5jbG9zZSk6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5
cGUudGV4dEVkaXRvckJyZWFrcG9pbnRBZGRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlRleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3Rz
KToKKyAgICAgICAgKFdJLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcHJvYmVT
ZXRzQ2hhbmdlZCk6CisgICAgICAgIFByb2JlcyBub3cgc3VwcG9ydCBgV0kuRXZlbnRCcmVha3Bv
aW50YCBpbiBhZGRpdGlvbiB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkNvbnRl
bnRWaWV3LmNyZWF0ZUZyb21SZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXSS5Db250ZW50
Vmlldy5yZXNvbHZlZFJlcHJlc2VudGVkT2JqZWN0Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAg
ICAgICAoV0kuQ29udGVudFZpZXcuaXNWaWV3YWJsZSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qczoKKyAgICAgICAgKFdJLmFwcGVuZENvbnRl
eHRNZW51SXRlbXNGb3JTb3VyY2VDb2RlKToKKyAgICAgICAgUmVwbGFjZSBgV0kuQnJlYWtwb2lu
dGAgd2l0aCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVlQ29u
dGVudFZpZXcpOgorICAgICAgICBSZXBsYWNlIGBXSS5ET01CcmVha3BvaW50YCB3aXRoIGBXSS5C
cmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cC5qczoKKyAgICAgICAgKFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91
cC5jc3M6CisgICAgICAgICguZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0
W3R5cGU9ImNoZWNrYm94Il0gKyAuZ28tdG8tYXJyb3cpOiBBZGRlZC4KKyAgICAgICAgKC5ldmVu
dC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3Qo
OmNoZWNrZWQpICsgLmdvLXRvLWFycm93KTogQWRkZWQuCisgICAgICAgIEFkZCBhIGdvLXRvIGFy
cm93IG5leHQgdG8gdGhlIEJyZWFrcG9pbnQgY2hlY2tib3ggdGhhdCByZXZlYWxzIHRoZSBgV0ku
RXZlbnRCcmVha3BvaW50YCBpbgorICAgICAgICB0aGUgU291cmNlcyBUYWIuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzOgorICAgICAgICAo
V0kuQnJlYWtwb2ludEFjdGlvblZpZXcucHJvdG90eXBlLl9hcHBlbmRBY3Rpb25CdXR0b25DbGlj
a2VkKToKKyAgICAgICAgRHJpdmUtYnk6IG1pbm9yIGNvZGUgY2xlYW51cC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChX
SS5DYWxsRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0TWVudSk6Cisg
ICAgICAgIERyaXZlLWJ5OiBpbmNsdWRlIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGNvbnRleHQgbWVu
dSBpdGVtcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sOgorCiAyMDIwLTA4LTA2ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1lZGlhICYgQW5pbWF0aW9ucyB0aW1l
bGluZSBzaG91bGRuJ3Qgc2hpZnQgd2hlbiBzb3J0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYTg2Mjg4YjJlNzc3MGU4ODE3YTBlOGRiMmI0OGQ3MjYzNzc4ZGMxNS4u
ZTAwZDgwNDllYjVmODczODBmMGRkZmQ3OTZiNDZhMWU1NTM2NTJhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjg1LDEyICs2ODUsOSBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJn
ZXQuaAogICAgIGluc3BlY3Rvci9QZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaAogICAgIGlu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAotICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50
LmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKICAgICBpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrLmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCi0gICAg
aW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAotICAgIGluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5oCiAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKICAgICBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4MTk3ZjZiNjBjOGUzZmE1YmIwZTc4N2I0NmFmZTRjZWZmNGJmZTQxLi5l
NDY1YmYxNzc1MjQzNjZkZjQ0MWM4ODQyZmRlODIxMDI4ODllZjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTM5Myw5ICsxMzkzLDYgQEAKIAkJQTNGRjlCQzcyMjM0NzQ5MTAw
QjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MDNGQTFBMTg4
RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07Ci0JCUE1MDNGQTIxMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJl
YWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyMDE4OEVG
RjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MDNGQTI2MTg4RUZGRkQwMDExMEYxNCAv
KiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUw
M0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTI4
MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggKi87
IH07CiAJCUE1MDk4QjA0MUMxNkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTA5OEIwMzFD
MTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQlBNTBFNEI2MjE4
ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RTE4ODA5REQ1MDA2OEE0NkQg
LyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMzUsNiArNDIzMiw3IEBACiAJCTkxOEUxNUJEMjQ0N0Iy
MjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENF
RCAvKiBCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFyc2VyQXJlbmEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyQXJlbmEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0cnVjdG9ycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3MywxMCArNDM3MSw2IEBACiAJCUE1MDNG
QTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyMDE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0
RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MDNGQTIzMTg4
RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1Nl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEyNzE4OEYxMDU5MDAxMTBG
MTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjgxODhGMTA1OTAwMTEwRjE0
IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMzFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJp
dHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGgg
PSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL01hY09TWDEwLjExLnNk
ay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IERFVkVMT1BFUl9ESVI7IH07CkBAIC02NTE3LDYgKzY1MTEsNyBAQAogCQkxNDgwREI5QTBE
REMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBCcmVha3BvaW50
LmNwcCAqLywKIAkJCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICov
LAogCQkJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5jcHAgKi8sCiAJCQkJ
RjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi8sCkBAIC04NjYyLDE2ICs4
NjU3LDEyIEBACiAJCQkJQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBlckdsb2JhbE9iamVj
dFdyYXBwZXJXb3JsZC5oICovLAogCQkJCUE1RkQwMDY1MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3Jp
cHRBcmd1bWVudHMuY3BwICovLAogCQkJCUE1RkQwMDY2MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3Jp
cHRBcmd1bWVudHMuaCAqLywKLQkJCQlBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0
QnJlYWtwb2ludC5oICovLAogCQkJCUE1RkQwMDY5MTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRD
YWxsRnJhbWUuY3BwICovLAogCQkJCUE1RkQwMDZBMTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRD
YWxsRnJhbWUuaCAqLywKIAkJCQlBNUZEMDA2QjE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bFN0YWNrLmNwcCAqLywKIAkJCQlBNUZEMDA2QzE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bFN0YWNrLmggKi8sCiAJCQkJQTVGRDAwN0IxODlCMEI0QzAwNjMzMjMxIC8qIFNjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwICovLAogCQkJCUE1RkQwMDdDMTg5QjBCNEMwMDYzMzIzMSAvKiBTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCi0JCQkJQTUwM0ZBMjAxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKLQkJCQlBNTAzRkEyMzE4OEVGRkZEMDAxMTBGMTQg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAotCQkJCUE1MDNGQTI0MTg4RUZGRkQwMDExMEYx
NCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnNwZWN0b3I7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTAyNjMsMTIgKzEwMjU0LDkgQEAKIAkJ
CQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRB
cmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAv
KiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA3
MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUZEMDA3RTE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjIxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVn
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTI2MTg4RUZGRkQwMDExMEYxNCAv
KiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxQ0UxREMwMkQ3
OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQUU3
RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMzEwYjlhNGNkZmQ2
MWQ0NzgyZWY2NjlkM2E5YjJkNWNlMzEwMmY2Li42ODcxNDk4YjBmZWMxOTlkODhmOTI5MjA0MDM1
ZWNmMDcwM2NiYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0zMDAsNiArMzAw
LDcgQEAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKIGJ5dGVjb21waWxlci9Qcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5jcHAK
IAorZGVidWdnZXIvQnJlYWtwb2ludC5jcHAKIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcAogZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCiBkZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0aW9uLmNwcApA
QCAtNTkzLDcgKzU5NCw2IEBAIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCiBpbnNwZWN0
b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAotaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmNwcAogCiAvLyBEZXJpdmVkIFNvdXJjZXMKIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvQnJlYWtwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJl
YWtwb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNGY3MDNmOTFmNDJhOTdjYTlhZWNmZGIwYTNkZjc4
NjhlNjkwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9CcmVha3BvaW50LmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogIENvcHlyaWdodCAoQykg
MjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJyZWFrcG9pbnQuaCIKKworI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitCcmVha3BvaW50OjpBY3Rpb246OkFjdGlvbihCcmVha3BvaW50OjpBY3Rpb246OlR5
cGUgdHlwZSkKKyAgICA6IHR5cGUodHlwZSkKK3sKK30KKworUmVmPEJyZWFrcG9pbnQ+IEJyZWFr
cG9pbnQ6OmNyZWF0ZShCcmVha3BvaW50SUQgaWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBB
Y3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVD
b3VudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCcmVha3BvaW50KGlkLCBjb25kaXRp
b24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpKTsKK30KKwor
QnJlYWtwb2ludDo6QnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQsIFN0cmluZyBjb25kaXRpb24s
IEFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6ZV90IGlnbm9y
ZUNvdW50KQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKKyAg
ICAsIG1fYWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRvQ29udGludWUoYXV0
b0NvbnRpbnVlKQorICAgICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkKK3sKK30KKworYm9v
bCBCcmVha3BvaW50OjpsaW5rKFNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpCit7CisgICAgQVNTRVJUKCFpc0xpbmtlZCgpKTsKKyAg
ICBBU1NFUlQoIWlzUmVzb2x2ZWQoKSk7CisKKyAgICBtX3NvdXJjZUlEID0gc291cmNlSUQ7Cisg
ICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVt
bk51bWJlcjsKKyAgICByZXR1cm4gaXNMaW5rZWQoKTsKK30KKworYm9vbCBCcmVha3BvaW50Ojpy
ZXNvbHZlKHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlcikKK3sKKyAg
ICBBU1NFUlQoaXNMaW5rZWQoKSk7CisgICAgQVNTRVJUKCFpc1Jlc29sdmVkKCkpOworCisgICAg
bV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVtbk51
bWJlcjsKKyAgICBtX3Jlc29sdmVkID0gdHJ1ZTsKKyAgICByZXR1cm4gaXNSZXNvbHZlZCgpOwor
fQorCitib29sIEJyZWFrcG9pbnQ6OnNob3VsZFBhdXNlKERlYnVnZ2VyJiBkZWJ1Z2dlciwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoKyttX2hpdENvdW50IDw9IG1f
aWdub3JlQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBkZWJ1Z2dl
ci5ldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24oKnRoaXMsIGdsb2JhbE9iamVjdCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0JyZWFrcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9CcmVh
a3BvaW50LmgKaW5kZXggMTQxOGUxNTk4YjMwYTFiMDU4MTRhYjhmZmFkMTVhMjMzNGNiZDJhZS4u
ZTYwNWVjYTcyODhjNTAzZjI3NzAyYjNhYmRiNjAyMmE3M2ZmZjYxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5oCkBAIC0yNiw1NCArMjYsODAgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCi0jaW5jbHVkZSA8
d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBCcmVha3Bv
aW50IDogcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPEJyZWFrcG9pbnQ+IHsKLSAgICBCcmVh
a3BvaW50KCkKLSAgICB7Ci0gICAgfQorY2xhc3MgRGVidWdnZXI7CitjbGFzcyBKU0dsb2JhbE9i
amVjdDsKIAotICAgIEJyZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmUs
IHVuc2lnbmVkIGNvbHVtbiwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgYXV0b0NvbnRp
bnVlLCB1bnNpZ25lZCBpZ25vcmVDb3VudCkKLSAgICAgICAgOiBzb3VyY2VJRChzb3VyY2VJRCkK
LSAgICAgICAgLCBsaW5lKGxpbmUpCi0gICAgICAgICwgY29sdW1uKGNvbHVtbikKLSAgICAgICAg
LCBjb25kaXRpb24oY29uZGl0aW9uKQotICAgICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGlu
dWUpCi0gICAgICAgICwgaWdub3JlQ291bnQoaWdub3JlQ291bnQpCi0gICAgewotICAgIH0KK2Ns
YXNzIEJyZWFrcG9pbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxCcmVha3BvaW50PiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQnJlYWtwb2ludCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RydWN0IEFjdGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgeworICAgICAgICAgICAgTG9nLAorICAgICAgICAgICAgRXZhbHVhdGUsCisg
ICAgICAgICAgICBTb3VuZCwKKyAgICAgICAgICAgIFByb2JlLAorICAgICAgICB9OwogCi0gICAg
QnJlYWtwb2ludElEIGlkIHsgbm9CcmVha3BvaW50SUQgfTsKLSAgICBTb3VyY2VJRCBzb3VyY2VJ
RCB7IG5vU291cmNlSUQgfTsKLSAgICB1bnNpZ25lZCBsaW5lIHsgMCB9OwotICAgIHVuc2lnbmVk
IGNvbHVtbiB7IDAgfTsKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIGJvb2wgYXV0b0NvbnRp
bnVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3VudCB7IDAgfTsKLSAgICB1bnNp
Z25lZCBoaXRDb3VudCB7IDAgfTsKLSAgICBib29sIHJlc29sdmVkIHsgZmFsc2UgfTsKKyAgICAg
ICAgQWN0aW9uKFR5cGUpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgU3RyaW5nIGRh
dGE7CisgICAgICAgIEJyZWFrcG9pbnRBY3Rpb25JRCBpZCB7IG5vQnJlYWtwb2ludEFjdGlvbklE
IH07CisgICAgfTsKKworICAgIHVzaW5nIEFjdGlvbnNWZWN0b3IgPSBWZWN0b3I8QWN0aW9uPjsK
KworICAgIHN0YXRpYyBSZWY8QnJlYWtwb2ludD4gY3JlYXRlKEJyZWFrcG9pbnRJRCwgY29uc3Qg
U3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3ImJiA9IHsgfSwg
Ym9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CisKKyAg
ICBCcmVha3BvaW50SUQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisKKyAgICBTb3VyY2VJ
RCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0KKyAgICB1bnNpZ25lZCBs
aW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgdW5zaWduZWQg
Y29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25kaXRpb247IH0KKyAg
ICBjb25zdCBBY3Rpb25zVmVjdG9yJiBhY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25z
OyB9CisgICAgYm9vbCBpc0F1dG9Db250aW51ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0NvbnRp
bnVlOyB9CisKKyAgICB2b2lkIHJlc2V0SGl0Q291bnQoKSB7IG1faGl0Q291bnQgPSAwOyB9CisK
KyAgICBib29sIGxpbmsoU291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlcik7CisgICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
SUQgIT0gbm9Tb3VyY2VJRDsgfQorICAgIGJvb2wgcmVzb2x2ZSh1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpOworICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWQ7IH0KKworICAgIGJvb2wgc2hvdWxkUGF1c2UoRGVidWdnZXImLCBK
U0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgotICAgIEJyZWFrcG9pbnQqIG1fcHJldjsKLSAg
ICBCcmVha3BvaW50KiBtX25leHQ7CisgICAgQnJlYWtwb2ludChCcmVha3BvaW50SUQsIFN0cmlu
ZyBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3ImJiA9IHsgfSwgYm9vbCBh
dXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CiAKLSAgICBmcmll
bmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxCcmVha3BvaW50PjsKKyAgICBCcmVh
a3BvaW50SUQgbV9pZCB7IG5vQnJlYWtwb2ludElEIH07CisKKyAgICBTb3VyY2VJRCBtX3NvdXJj
ZUlEIHsgbm9Tb3VyY2VJRCB9OworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3Ig
dG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2VkSW50IGFtYmlndWl0eQorICAgIHVuc2lnbmVk
IG1fbGluZU51bWJlciB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2NvbHVtbk51bWJlciB7IDAgfTsK
KworICAgIGJvb2wgbV9yZXNvbHZlZCB7IGZhbHNlIH07CisKKyAgICBTdHJpbmcgbV9jb25kaXRp
b247CisgICAgQWN0aW9uc1ZlY3RvciBtX2FjdGlvbnM7CisgICAgYm9vbCBtX2F1dG9Db250aW51
ZSB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1faWdub3JlQ291bnQgeyAwIH07CisgICAgc2l6ZV90
IG1faGl0Q291bnQgeyAwIH07CiB9OwogCi1jbGFzcyBCcmVha3BvaW50c0xpc3QgOiBwdWJsaWMg
RG91Ymx5TGlua2VkTGlzdDxCcmVha3BvaW50PiwKLSAgICBwdWJsaWMgUmVmQ291bnRlZDxCcmVh
a3BvaW50c0xpc3Q+IHsKLXB1YmxpYzoKLSAgICB+QnJlYWtwb2ludHNMaXN0KCkKLSAgICB7Ci0g
ICAgICAgIEJyZWFrcG9pbnQqIGJyZWFrcG9pbnQ7Ci0gICAgICAgIHdoaWxlICgoYnJlYWtwb2lu
dCA9IHJlbW92ZUhlYWQoKSkpCi0gICAgICAgICAgICBkZWxldGUgYnJlYWtwb2ludDsKLSAgICAg
ICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci0gICAgfQotfTsKK3VzaW5nIEJyZWFrcG9pbnRzVmVjdG9y
ID0gVmVjdG9yPFJlZjxKU0M6OkJyZWFrcG9pbnQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBmNGFjMzU2
N2E1NjhlYzc2ZGMzNmRkNzhhYmFiYzBhMTg4YWMwYjUzLi5jNGJmYTFhNzcxMzQ2NDdhZDBjMzFl
NzUxNjg3MzlhMzkwN2E3OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKQEAgLTI0LDEwICsyNCwxNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRGVidWdnZXJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlclNjb3Bl
LmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNRW50cnlT
Y29wZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
ODksNyArOTUsNiBAQCBEZWJ1Z2dlcjo6RGVidWdnZXIoVk0mIHZtKQogICAgICwgbV9yZWFzb25G
b3JQYXVzZShOb3RQYXVzZWQpCiAgICAgLCBtX2xhc3RFeGVjdXRlZExpbmUoVUlOVF9NQVgpCiAg
ICAgLCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEKG5vU291cmNlSUQpCi0gICAgLCBtX3RvcEJyZWFr
cG9pbnRJRChub0JyZWFrcG9pbnRJRCkKICAgICAsIG1fcGF1c2luZ0JyZWFrcG9pbnRJRChub0Jy
ZWFrcG9pbnRJRCkKIHsKIH0KQEAgLTIwNSwxMiArMjEwLDk2IEBAIHZvaWQgRGVidWdnZXI6OnJl
Z2lzdGVyQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBjb2RlQmxvY2st
PnNldFN0ZXBwaW5nTW9kZShDb2RlQmxvY2s6OlN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogfQogCit2
b2lkIERlYnVnZ2VyOjphZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgYm9v
bCB3YXNFbXB0eSA9IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKKworICAgIG1fb2JzZXJ2ZXJzLmFk
ZCgmb2JzZXJ2ZXIpOworCisgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICBhdHRhY2hEZWJ1Z2dl
cigpOworfQorCit2b2lkIERlYnVnZ2VyOjpyZW1vdmVPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2
ZXIsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBtX29ic2VydmVycy5yZW1vdmUoJm9i
c2VydmVyKTsKKworICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIGRldGFj
aERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOworfQorCitib29sIERlYnVnZ2VyOjpjYW5EaXNw
YXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kaXNwYXRj
aGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKK30KKwor
dm9pZCBEZWJ1Z2dlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9uPHZvaWQo
T2JzZXJ2ZXImKT4gZnVuYykKK3sKKyAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25Ub09ic2Vy
dmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2Uo
bV9kaXNwYXRjaGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMsIHRydWUpOworCisgICAgZm9yIChhdXRv
KiBvYnNlcnZlciA6IGNvcHlUb1ZlY3RvcihtX29ic2VydmVycykpCisgICAgICAgIGZ1bmMoKm9i
c2VydmVyKTsKK30KKwogdm9pZCBEZWJ1Z2dlcjo6c2V0UHJvZmlsaW5nQ2xpZW50KFByb2ZpbGlu
Z0NsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVCghIW1fcHJvZmlsaW5nQ2xpZW50ICE9ICEh
Y2xpZW50KTsKICAgICBtX3Byb2ZpbGluZ0NsaWVudCA9IGNsaWVudDsKIH0KIAordm9pZCBEZWJ1
Z2dlcjo6c291cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNvdXJjZVBy
b3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCit7CisgICAgLy8gUHJlZW1wdGl2ZWx5IGNoZWNrIHdoZXRoZXIgd2UgY2FuIGRp
c3BhdGNoIHNvIHRoYXQgd2UgZG9uJ3QgZG8gYW55IHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLgor
ICAgIGlmICghY2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChlcnJvckxpbmUgIT0gLTEpIHsKKyAgICAgICAgYXV0byBzb3VyY2VVUkwg
PSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7CisgICAgICAgIGF1dG8gZGF0YSA9IHNvdXJj
ZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOworICAgICAgICBhdXRvIGZpcnN0TGluZSA9
IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50KCk7Cisg
ICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZl
cikgeworICAgICAgICAgICAgb2JzZXJ2ZXIuZmFpbGVkVG9QYXJzZVNvdXJjZShzb3VyY2VVUkws
IGRhdGEsIGZpcnN0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBz
b3VyY2VQcm92aWRlci0+YXNJRCgpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNjI3NzM+IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IERlYnVnZ2VyOjpTY3JpcHQgdG8g
dXNlIFNvdXJjZVByb3ZpZGVyCisgICAgRGVidWdnZXI6OlNjcmlwdCBzY3JpcHQ7CisgICAgc2Ny
aXB0LnNvdXJjZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7CisgICAgc2NyaXB0LnVybCA9IHNv
dXJjZVByb3ZpZGVyLT5zb3VyY2VVUkwoKTsKKyAgICBzY3JpcHQuc291cmNlID0gc291cmNlUHJv
dmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgc2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJj
ZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOworICAgIHNj
cmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1
bW4uemVyb0Jhc2VkSW50KCk7CisgICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVu
dFNjcmlwdChnbG9iYWxPYmplY3QpOworICAgIHNjcmlwdC5zb3VyY2VVUkwgPSBzb3VyY2VQcm92
aWRlci0+c291cmNlVVJMRGlyZWN0aXZlKCk7CisgICAgc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwg
PSBzb3VyY2VQcm92aWRlci0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpOworCisgICAgaW50
IHNvdXJjZUxlbmd0aCA9IHNjcmlwdC5zb3VyY2UubGVuZ3RoKCk7CisgICAgaW50IGxpbmVDb3Vu
dCA9IDE7CisgICAgaW50IGxhc3RMaW5lU3RhcnQgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc291cmNlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VbaV0gPT0g
J1xuJykgeworICAgICAgICAgICAgbGluZUNvdW50ICs9IDE7CisgICAgICAgICAgICBsYXN0TGlu
ZVN0YXJ0ID0gaSArIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzY3JpcHQuZW5kTGluZSA9
IHNjcmlwdC5zdGFydExpbmUgKyBsaW5lQ291bnQgLSAxOworICAgIGlmIChsaW5lQ291bnQgPT0g
MSkKKyAgICAgICAgc2NyaXB0LmVuZENvbHVtbiA9IHNjcmlwdC5zdGFydENvbHVtbiArIHNvdXJj
ZUxlbmd0aDsKKyAgICBlbHNlCisgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5n
dGggLSBsYXN0TGluZVN0YXJ0OworCisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsm
XSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRpZFBhcnNlU291cmNl
KHNvdXJjZUlELCBzY3JpcHQpOworICAgIH0pOworfQorCiBTZWNvbmRzIERlYnVnZ2VyOjp3aWxs
RXZhbHVhdGVTY3JpcHQoKQogewogICAgIHJldHVybiBtX3Byb2ZpbGluZ0NsaWVudC0+d2lsbEV2
YWx1YXRlU2NyaXB0KCk7CkBAIC0yMjMsMTIgKzMxMiwxMiBAQCB2b2lkIERlYnVnZ2VyOjpkaWRF
dmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0YXJ0VGltZSwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbikK
IAogdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
QnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnJlYWtwb2ludFN0YXRlIGVuYWJsZWRPck5vdCkKIHsK
LSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQu
aXNSZXNvbHZlZCgpKTsKIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogCiAgICAgU291cmNlSUQgc291cmNlSUQgPSBzdGF0
aWNfY2FzdDxTb3VyY2VJRD4oZXhlY3V0YWJsZS0+c291cmNlSUQoKSk7Ci0gICAgaWYgKGJyZWFr
cG9pbnQuc291cmNlSUQgIT0gc291cmNlSUQpCisgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlSUQo
KSAhPSBzb3VyY2VJRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgc3RhcnRMaW5l
ID0gZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCk7CkBAIC0yMzgsMTAgKzMyNywxMCBAQCB2b2lkIERl
YnVnZ2VyOjp0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBCcmVha3BvaW50
JiBicmVha3BvaW50LCBCcgogCiAgICAgLy8gSW5zcGVjdG9yIGJyZWFrcG9pbnQgbGluZSBhbmQg
Y29sdW1uIHZhbHVlcyBhcmUgemVyby1iYXNlZCBidXQgdGhlIGV4ZWN1dGFibGUKICAgICAvLyBh
bmQgQ29kZUJsb2NrIGxpbmUgYW5kIGNvbHVtbiB2YWx1ZXMgYXJlIG9uZS1iYXNlZC4KLSAgICB1
bnNpZ25lZCBsaW5lID0gYnJlYWtwb2ludC5saW5lICsgMTsKKyAgICB1bnNpZ25lZCBsaW5lID0g
YnJlYWtwb2ludC5saW5lTnVtYmVyKCkgKyAxOwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBjb2x1
bW47Ci0gICAgaWYgKGJyZWFrcG9pbnQuY29sdW1uKQotICAgICAgICBjb2x1bW4gPSBicmVha3Bv
aW50LmNvbHVtbiArIDE7CisgICAgaWYgKGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpCisgICAg
ICAgIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkgKyAxOwogCiAgICAgaWYgKGxp
bmUgPCBzdGFydExpbmUgfHwgbGluZSA+IGVuZExpbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTI2
Myw5ICszNTIsOCBAQCB2b2lkIERlYnVnZ2VyOjp0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCcmVha3BvaW50JiBicmVha3BvaW50LCBCcgogCiB2b2lkIERlYnVnZ2VyOjph
cHBseUJyZWFrcG9pbnRzKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEJyZWFrcG9pbnRJ
RFRvQnJlYWtwb2ludE1hcCYgYnJlYWtwb2ludHMgPSBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2lu
dDsKLSAgICBmb3IgKGF1dG8qIGJyZWFrcG9pbnQgOiBicmVha3BvaW50cy52YWx1ZXMoKSkKLSAg
ICAgICAgdG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssICpicmVha3BvaW50LCBCcmVha3BvaW50
RW5hYmxlZCk7CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogbV9icmVha3BvaW50cykKKyAg
ICAgICAgdG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssIGJyZWFrcG9pbnQsIEJyZWFrcG9pbnRF
bmFibGVkKTsKIH0KIAogY2xhc3MgRGVidWdnZXI6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9yIHsK
QEAgLTMxNCwxODggKzQwMiwxNDMgQEAgRGVidWdnZXJQYXJzZURhdGEmIERlYnVnZ2VyOjpkZWJ1
Z2dlclBhcnNlRGF0YShTb3VyY2VJRCBzb3VyY2VJRCwgU291cmNlUHJvdmlkZXIKICAgICByZXR1
cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6cmVzb2x2ZUJy
ZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVBy
b3ZpZGVyKQorYm9vbCBEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJl
YWtwb2ludCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyKQogewotICAgIFJFTEVBU0Vf
QVNTRVJUKCFicmVha3BvaW50LnJlc29sdmVkKTsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5zb3Vy
Y2VJRCAhPSBub1NvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghYnJlYWtwb2ludC5pc1Jl
c29sdmVkKCkpOworICAgIEFTU0VSVChicmVha3BvaW50LmlzTGlua2VkKCkpOwogCiAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0
IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3IgdG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2Vk
SW50IGFtYmlndWl0eQogICAgIC8vIEluc3BlY3RvciBicmVha3BvaW50IGxpbmUgYW5kIGNvbHVt
biB2YWx1ZXMgYXJlIHplcm8tYmFzZWQgYnV0IHRoZSBleGVjdXRhYmxlCiAgICAgLy8gYW5kIENv
ZGVCbG9jayBsaW5lIHZhbHVlcyBhcmUgb25lLWJhc2VkIHdoaWxlIGNvbHVtbiBpcyB6ZXJvLWJh
c2VkLgotICAgIGludCBsaW5lID0gYnJlYWtwb2ludC5saW5lICsgMTsKLSAgICBpbnQgY29sdW1u
ID0gYnJlYWtwb2ludC5jb2x1bW47CisgICAgaW50IGxpbmUgPSBicmVha3BvaW50LmxpbmVOdW1i
ZXIoKSArIDE7CisgICAgaW50IGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCk7CiAK
ICAgICAvLyBBY2NvdW50IGZvciBhIDxzY3JpcHQ+J3Mgc3RhcnQgcG9zaXRpb24gb24gdGhlIGZp
cnN0IGxpbmUgb25seS4KICAgICBpbnQgcHJvdmlkZXJTdGFydExpbmUgPSBzb3VyY2VQcm92aWRl
ci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOyAvLyBPbmUgYmFzZWQgdG8g
bWF0Y2ggdGhlIGFscmVhZHkgYWRqdXN0ZWQgbGluZS4KICAgICBpbnQgcHJvdmlkZXJTdGFydENv
bHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jhc2Vk
SW50KCk7IC8vIFplcm8gYmFzZWQgc28gY29sdW1uIHplcm8gaXMgemVyby4KLSAgICBpZiAobGlu
ZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVha3BvaW50LmNvbHVtbikgeworICAgIGlmIChs
aW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsK
ICAgICAgICAgQVNTRVJUKHByb3ZpZGVyU3RhcnRDb2x1bW4gPD0gY29sdW1uKTsKICAgICAgICAg
aWYgKHByb3ZpZGVyU3RhcnRDb2x1bW4pCiAgICAgICAgICAgICBjb2x1bW4gLT0gcHJvdmlkZXJT
dGFydENvbHVtbjsKICAgICB9CiAKLSAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgcGFyc2VEYXRhID0g
ZGVidWdnZXJQYXJzZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCwgc291cmNlUHJvdmlkZXIpOwor
ICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShicmVh
a3BvaW50LnNvdXJjZUlEKCksIHNvdXJjZVByb3ZpZGVyKTsKICAgICBPcHRpb25hbDxKU1RleHRQ
b3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVzZVBvc2l0aW9ucy5icmVh
a3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKCFyZXNv
bHZlZFBvc2l0aW9uKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGludCByZXNvbHZlZExpbmUgPSByZXNvbHZlZFBvc2l0aW9uLT5saW5lOwogICAgIGludCBy
ZXNvbHZlZENvbHVtbiA9IHJlc29sdmVkUG9zaXRpb24tPmNvbHVtbigpOwogCiAgICAgLy8gUmUt
YWNjb3VudCBmb3IgYSA8c2NyaXB0PidzIHN0YXJ0IHBvc2l0aW9uIG9uIHRoZSBmaXJzdCBsaW5l
IG9ubHkuCi0gICAgaWYgKHJlc29sdmVkTGluZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVh
a3BvaW50LmNvbHVtbikgeworICAgIGlmIChyZXNvbHZlZExpbmUgPT0gcHJvdmlkZXJTdGFydExp
bmUgJiYgYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkgewogICAgICAgICBpZiAocHJvdmlkZXJT
dGFydENvbHVtbikKICAgICAgICAgICAgIHJlc29sdmVkQ29sdW1uICs9IHByb3ZpZGVyU3RhcnRD
b2x1bW47CiAgICAgfQogCi0gICAgYnJlYWtwb2ludC5saW5lID0gcmVzb2x2ZWRMaW5lIC0gMTsK
LSAgICBicmVha3BvaW50LmNvbHVtbiA9IHJlc29sdmVkQ29sdW1uOwotICAgIGJyZWFrcG9pbnQu
cmVzb2x2ZWQgPSB0cnVlOworICAgIHJldHVybiBicmVha3BvaW50LnJlc29sdmUocmVzb2x2ZWRM
aW5lIC0gMSwgcmVzb2x2ZWRDb2x1bW4pOwogfQogCi1CcmVha3BvaW50SUQgRGVidWdnZXI6OnNl
dEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgYm9vbCYgZXhpc3RpbmcpCitib29s
IERlYnVnZ2VyOjpzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAg
QVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2ZWQpOwotICAgIEFTU0VSVChicmVha3BvaW50LnNvdXJj
ZUlEICE9IG5vU291cmNlSUQpOworICAgIEFTU0VSVChicmVha3BvaW50LmlzUmVzb2x2ZWQoKSk7
CiAKLSAgICBTb3VyY2VJRCBzb3VyY2VJRCA9IGJyZWFrcG9pbnQuc291cmNlSUQ7Ci0gICAgdW5z
aWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGluZTsKLSAgICB1bnNpZ25lZCBjb2x1bW4gPSBicmVh
a3BvaW50LmNvbHVtbjsKKyAgICBhdXRvJiBicmVha3BvaW50c0ZvckxpbmUgPSBtX2JyZWFrcG9p
bnRzRm9yU291cmNlSUQuZW5zdXJlKGJyZWFrcG9pbnQuc291cmNlSUQoKSwgW10geworICAgICAg
ICByZXR1cm4gTGluZVRvQnJlYWtwb2ludHNNYXAoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKLSAgICBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJ
RFRvQnJlYWtwb2ludHMuZmluZChicmVha3BvaW50LnNvdXJjZUlEKTsKLSAgICBpZiAoaXQgPT0g
bV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9zb3VyY2VJRFRv
QnJlYWtwb2ludHMuc2V0KHNvdXJjZUlELCBMaW5lVG9CcmVha3BvaW50c01hcCgpKS5pdGVyYXRv
cjsKKyAgICBhdXRvJiBicmVha3BvaW50cyA9IGJyZWFrcG9pbnRzRm9yTGluZS5lbnN1cmUoYnJl
YWtwb2ludC5saW5lTnVtYmVyKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIEJyZWFrcG9pbnRzVmVj
dG9yKCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgTGluZVRvQnJlYWtwb2ludHNN
YXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQobGluZSk7Ci0gICAgaWYgKGJy
ZWFrc0l0ID09IGl0LT52YWx1ZS5lbmQoKSkKLSAgICAgICAgYnJlYWtzSXQgPSBpdC0+dmFsdWUu
c2V0KGxpbmUsIGFkb3B0UmVmKG5ldyBCcmVha3BvaW50c0xpc3QpKS5pdGVyYXRvcjsKLQotICAg
IEJyZWFrcG9pbnRzTGlzdCYgYnJlYWtwb2ludHMgPSAqYnJlYWtzSXQtPnZhbHVlOwotICAgIGZv
ciAoQnJlYWtwb2ludCogY3VycmVudCA9IGJyZWFrcG9pbnRzLmhlYWQoKTsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPm5leHQoKSkgewotICAgICAgICBpZiAoY3VycmVudC0+Y29sdW1uID09
IGNvbHVtbikgeworICAgIGZvciAoYXV0byYgZXhpc3RpbmdCcmVha3BvaW50IDogYnJlYWtwb2lu
dHMpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nQnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCkgPT0g
YnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkgeworICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5n
QnJlYWtwb2ludC0+aWQoKSAhPSBicmVha3BvaW50LmlkKCkpOwogICAgICAgICAgICAgLy8gRm91
bmQgZXhpc3RpbmcgYnJlYWtwb2ludC4gRG8gbm90IGNyZWF0ZSBhIGR1cGxpY2F0ZSBhdCB0aGlz
IGxvY2F0aW9uLgotICAgICAgICAgICAgZXhpc3RpbmcgPSB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnQtPmlkOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgZXhpc3RpbmcgPSBmYWxzZTsKLSAgICBCcmVha3BvaW50SUQgaWQgPSArK21f
dG9wQnJlYWtwb2ludElEOwotICAgIFJFTEVBU0VfQVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElE
KTsKKyAgICBicmVha3BvaW50cy5hcHBlbmQobWFrZVJlZihicmVha3BvaW50KSk7CiAKLSAgICBi
cmVha3BvaW50LmlkID0gaWQ7CisgICAgbV9icmVha3BvaW50cy5hZGQobWFrZVJlZihicmVha3Bv
aW50KSk7CiAKLSAgICBCcmVha3BvaW50KiBuZXdCcmVha3BvaW50ID0gbmV3IEJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7Ci0gICAgYnJlYWtwb2ludHMuYXBwZW5kKG5ld0JyZWFrcG9pbnQpOwotICAg
IG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50LnNldChpZCwgbmV3QnJlYWtwb2ludCk7CisgICAg
dG9nZ2xlQnJlYWtwb2ludChicmVha3BvaW50LCBCcmVha3BvaW50RW5hYmxlZCk7CiAKLSAgICB0
b2dnbGVCcmVha3BvaW50KCpuZXdCcmVha3BvaW50LCBCcmVha3BvaW50RW5hYmxlZCk7Ci0KLSAg
ICByZXR1cm4gaWQ7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGVidWdnZXI6OnJlbW92
ZUJyZWFrcG9pbnQoQnJlYWtwb2ludElEIGlkKQorYm9vbCBEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtw
b2ludChCcmVha3BvaW50JiBicmVha3BvaW50KQogewotICAgIEFTU0VSVChpZCAhPSBub0JyZWFr
cG9pbnRJRCk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQuaXNSZXNvbHZlZCgpKTsKIAotICAgIEJy
ZWFrcG9pbnRJRFRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgaWRJdCA9IG1fYnJlYWtwb2ludElE
VG9CcmVha3BvaW50LmZpbmQoaWQpOwotICAgIEFTU0VSVChpZEl0ICE9IG1fYnJlYWtwb2ludElE
VG9CcmVha3BvaW50LmVuZCgpKTsKLSAgICBCcmVha3BvaW50KiBicmVha3BvaW50ID0gaWRJdC0+
dmFsdWU7CisgICAgYXV0byBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9IG1fYnJlYWtwb2lu
dHNGb3JTb3VyY2VJRC5maW5kKGJyZWFrcG9pbnQuc291cmNlSUQoKSk7CisgICAgaWYgKGJyZWFr
cG9pbnRzRm9yTGluZUl0ZXJhdG9yID09IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU291cmNlSUQgc291cmNlSUQgPSBicmVha3Bv
aW50LT5zb3VyY2VJRDsKLSAgICBBU1NFUlQoc291cmNlSUQpOwotICAgIFNvdXJjZUlEVG9CcmVh
a3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5maW5kKHNv
dXJjZUlEKTsKLSAgICBBU1NFUlQoaXQgIT0gbV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkp
OwotICAgIExpbmVUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT52YWx1
ZS5maW5kKGJyZWFrcG9pbnQtPmxpbmUpOwotICAgIEFTU0VSVChicmVha3NJdCAhPSBpdC0+dmFs
dWUuZW5kKCkpOworICAgIGF1dG8gYnJlYWtwb2ludHNJdGVyYXRvciA9IGJyZWFrcG9pbnRzRm9y
TGluZUl0ZXJhdG9yLT52YWx1ZS5maW5kKGJyZWFrcG9pbnQubGluZU51bWJlcigpKTsKKyAgICBp
ZiAoYnJlYWtwb2ludHNJdGVyYXRvciA9PSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFs
dWUuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRvZ2dsZUJyZWFrcG9pbnQo
KmJyZWFrcG9pbnQsIEJyZWFrcG9pbnREaXNhYmxlZCk7CisgICAgdG9nZ2xlQnJlYWtwb2ludChi
cmVha3BvaW50LCBCcmVha3BvaW50RGlzYWJsZWQpOworCisgICAgYXV0byYgYnJlYWtwb2ludHMg
PSBicmVha3BvaW50c0l0ZXJhdG9yLT52YWx1ZTsKIAotICAgIEJyZWFrcG9pbnRzTGlzdCYgYnJl
YWtwb2ludHMgPSAqYnJlYWtzSXQtPnZhbHVlOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAoQnJlYWtwb2ludCogY3VycmVudCA9IGJyZWFrcG9p
bnRzLmhlYWQoKTsgY3VycmVudCAmJiAhZm91bmQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkp
IHsKLSAgICAgICAgaWYgKGN1cnJlbnQtPmlkID09IGJyZWFrcG9pbnQtPmlkKQorICAgIGZvciAo
YXV0byYgZXhpc3RpbmdCcmVha3BvaW50IDogYnJlYWtwb2ludHMpIHsKKyAgICAgICAgaWYgKGV4
aXN0aW5nQnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCkgPT0gYnJlYWtwb2ludC5jb2x1bW5OdW1i
ZXIoKSkgeworICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5nQnJlYWtwb2ludC0+aWQoKSA9PSBi
cmVha3BvaW50LmlkKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmb3VuZCk7CiAgICAgICAgICAg
ICBmb3VuZCA9IHRydWU7CisgICAgICAgIH0KICAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKICNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi0gICAgbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQu
cmVtb3ZlKGlkSXQpOwotICAgIGJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50KTsKLSAgICBk
ZWxldGUgYnJlYWtwb2ludDsKKyAgICBhdXRvIHJlbW92ZWQgPSBtX2JyZWFrcG9pbnRzLnJlbW92
ZShicmVha3BvaW50KTsKKyAgICByZW1vdmVkIHw9ICFicmVha3BvaW50cy5yZW1vdmVBbGxNYXRj
aGluZyhbJl0gKGNvbnN0IFJlZjxCcmVha3BvaW50PiYgZXhpc3RpbmdCcmVha3BvaW50KSB7Cisg
ICAgICAgIHJldHVybiAmYnJlYWtwb2ludCA9PSBleGlzdGluZ0JyZWFrcG9pbnQucHRyKCk7Cisg
ICAgfSk7CiAKICAgICBpZiAoYnJlYWtwb2ludHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0LT52
YWx1ZS5yZW1vdmUoYnJlYWtzSXQpOwotICAgICAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIG1fc291cmNlSURUb0JyZWFrcG9pbnRzLnJlbW92ZShpdCk7CisgICAgICAg
IGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUoYnJlYWtwb2ludHNJdGVy
YXRvcik7CisgICAgICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgbV9icmVha3BvaW50c0ZvclNvdXJjZUlELnJlbW92ZShicmVh
a3BvaW50c0ZvckxpbmVJdGVyYXRvcik7CiAgICAgfQorCisgICAgcmV0dXJuIHJlbW92ZWQ7CiB9
CiAKLWJvb2wgRGVidWdnZXI6Omhhc0JyZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEJyZWFrcG9pbnQgKmhpdEJyZWFrcG9pbnQpCitSZWZQ
dHI8QnJlYWtwb2ludD4gRGVidWdnZXI6OmRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU291cmNlSUQgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9z
aXRpb24pCiB7CiAgICAgaWYgKCFtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU291cmNlSURUb0JyZWFr
cG9pbnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmZp
bmQoc291cmNlSUQpOwotICAgIGlmIChpdCA9PSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gYnJlYWtwb2ludHNGb3JMaW5lSXRl
cmF0b3IgPSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZmluZChzb3VyY2VJRCk7CisgICAgaWYg
KGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yID09IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB1bnNpZ25lZCBsaW5lID0gcG9z
aXRpb24ubV9saW5lLnplcm9CYXNlZEludCgpOwogICAgIHVuc2lnbmVkIGNvbHVtbiA9IHBvc2l0
aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwogICAgIAotICAgIExpbmVUb0JyZWFrcG9pbnRz
TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT52YWx1ZS5maW5kKGxpbmUpOwotICAg
IGlmIChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBhdXRvIGJyZWFrcG9pbnRzSXRlcmF0b3IgPSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRv
ci0+dmFsdWUuZmluZChsaW5lKTsKKyAgICBpZiAoYnJlYWtwb2ludHNJdGVyYXRvciA9PSBicmVh
a3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogYnJlYWtwb2ludHNJdGVyYXRvci0+
dmFsdWUpIHsKKyAgICAgICAgdW5zaWduZWQgYnJlYWtMaW5lID0gYnJlYWtwb2ludC0+bGluZU51
bWJlcigpOworICAgICAgICB1bnNpZ25lZCBicmVha0NvbHVtbiA9IGJyZWFrcG9pbnQtPmNvbHVt
bk51bWJlcigpOwogCi0gICAgYm9vbCBoaXQgPSBmYWxzZTsKLSAgICBjb25zdCBCcmVha3BvaW50
c0xpc3QmIGJyZWFrcG9pbnRzID0gKmJyZWFrc0l0LT52YWx1ZTsKLSAgICBCcmVha3BvaW50KiBi
cmVha3BvaW50OwotICAgIGZvciAoYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzLmhlYWQoKTsgYnJl
YWtwb2ludDsgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQtPm5leHQoKSkgewotICAgICAgICB1bnNp
Z25lZCBicmVha0xpbmUgPSBicmVha3BvaW50LT5saW5lOwotICAgICAgICB1bnNpZ25lZCBicmVh
a0NvbHVtbiA9IGJyZWFrcG9pbnQtPmNvbHVtbjsKICAgICAgICAgLy8gU2luY2UgZnJvbnRlbmQg
dHJ1bmNhdGVzIHRoZSBpbmRlbnQsIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gYSBsaW5lIG11c3Qg
bWF0Y2ggdGhlIGJyZWFrcG9pbnQgKGxpbmUsMCkuCiAgICAgICAgIEFTU0VSVCh0aGlzID09IG1f
Y3VycmVudENhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigp
KTsKLSAgICAgICAgaWYgKChsaW5lICE9IG1fbGFzdEV4ZWN1dGVkTGluZSAmJiBsaW5lID09IGJy
ZWFrTGluZSAmJiAhYnJlYWtDb2x1bW4pCi0gICAgICAgICAgICB8fCAobGluZSA9PSBicmVha0xp
bmUgJiYgY29sdW1uID09IGJyZWFrQ29sdW1uKSkgewotICAgICAgICAgICAgaGl0ID0gdHJ1ZTsK
KyAgICAgICAgaWYgKChsaW5lICE9IG1fbGFzdEV4ZWN1dGVkTGluZSAmJiBsaW5lID09IGJyZWFr
TGluZSAmJiAhYnJlYWtDb2x1bW4pIHx8IChsaW5lID09IGJyZWFrTGluZSAmJiBjb2x1bW4gPT0g
YnJlYWtDb2x1bW4pKSB7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC0+c2hvdWxkUGF1c2Uo
KnRoaXMsIGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQu
Y29weVJlZigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYg
KCFoaXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChoaXRCcmVha3BvaW50KQot
ICAgICAgICAqaGl0QnJlYWtwb2ludCA9ICpicmVha3BvaW50OwotCi0gICAgYnJlYWtwb2ludC0+
aGl0Q291bnQrKzsKLSAgICBpZiAoYnJlYWtwb2ludC0+aWdub3JlQ291bnQgPj0gYnJlYWtwb2lu
dC0+aGl0Q291bnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChicmVha3BvaW50
LT5jb25kaXRpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdl
IGNhbm5vdCBzdG9wIGluIHRoZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgY29uZGl0aW9uIGNv
ZGUsCi0gICAgLy8gc28gbWFrZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBpcyBhbHJlYWR5
IHBhdXNlZC4KLSAgICBUZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7Ci0K
LSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICBK
U09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYnJlYWtw
b2ludC0+Y29uZGl0aW9uLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKLQotICAg
IC8vIFdlIGNhbiBsb3NlIHRoZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgSmF2YVNjcmlwdC4K
LSAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxGcmFtZS0+bGV4
aWNhbEdsb2JhbE9iamVjdChtX3ZtKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIC8v
IEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCi0gICAgICAgIGhhbmRs
ZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnRvQm9v
bGVhbihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjbGFzcyBEZWJ1
Z2dlcjo6Q2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvciB7CkBAIC01MTksMTQg
KzU2Miw5MyBAQCB2b2lkIERlYnVnZ2VyOjpjbGVhckJyZWFrcG9pbnRzKCkKIHsKICAgICBtX3Zt
LmhlYXAuY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgbV90b3BCcmVha3BvaW50SUQgPSBu
b0JyZWFrcG9pbnRJRDsKLSAgICBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5jbGVhcigpOwot
ICAgIG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50c0Zv
clNvdXJjZUlELmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50cy5jbGVhcigpOworICAgIG1fc3Bl
Y2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOwogCiAgICAgQ2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJl
cXVlc3RzRnVuY3RvciBmdW5jdG9yKHRoaXMpOwogICAgIG1fdm0uaGVhcC5mb3JFYWNoQ29kZUJs
b2NrKGZ1bmN0b3IpOwogfQogCitib29sIERlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRDb25k
aXRpb24oQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IGJyZWFrcG9pbnQuY29uZGl0aW9u
KCk7CisgICAgaWYgKGNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gV2UgY2Fubm90IHN0b3AgaW4gdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBj
b25kaXRpb24gY29kZSwKKyAgICAvLyBzbyBtYWtlIGl0IGxvb2tzIGxpa2UgdGhlIGRlYnVnZ2Vy
IGlzIGFscmVhZHkgcGF1c2VkLgorICAgIFRlbXBvcmFyeVBhdXNlZFN0YXRlIHBhdXNlZFN0YXRl
KCp0aGlzKTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIERlYnVn
Z2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFt
ZSgpOworICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihjb25kaXRpb24sIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOworCisgICAg
Ly8gV2UgY2FuIGxvc2UgdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBKYXZhU2NyaXB0Lgor
ICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworfQorCit2b2lkIERlYnVnZ2VyOjpldmFs
dWF0ZUJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUKG1faXNQYXVzZWQpOworICAgIEFTU0VS
VChpc0F0dGFjaGVkKGdsb2JhbE9iamVjdCkpOworCisgICAgbV9jdXJyZW50UHJvYmVCYXRjaElk
Kys7CisKKyAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9pbnQuYWN0aW9ucygpKSB7Cisg
ICAgICAgIGF1dG8mIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
KCk7CisKKyAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkgeworICAgICAgICBjYXNlIEJyZWFr
cG9pbnQ6OkFjdGlvbjo6VHlwZTo6TG9nOgorICAgICAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRv
T2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgICAgICAgICAgb2Jz
ZXJ2ZXIuYnJlYWtwb2ludEFjdGlvbkxvZyhkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3Qo
KSwgYWN0aW9uLmRhdGEpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6RXZhbHVhdGU6IHsKKyAgICAg
ICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgICAgICAgICAgSlNPYmpl
Y3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGRlYnVnZ2Vy
Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGFjdGlvbi5kYXRhLCBzY29wZUV4
dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisg
ICAgICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLmdsb2JhbE9i
amVjdCgpLCBleGNlcHRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6U291bmQ6CisgICAgICAgICAgICBk
aXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAg
ICAgICAgICAgICAgICBvYnNlcnZlci5icmVha3BvaW50QWN0aW9uU291bmQoYWN0aW9uLmlkKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCcmVh
a3BvaW50OjpBY3Rpb246OlR5cGU6OlByb2JlOiB7CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9i
amVjdCA9IG51bGxwdHI7CisgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2Fs
bEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGFjdGlvbi5kYXRhLCBzY29wZUV4dGVu
c2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGRlYnVnZ2VyR2xvYmFsT2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCk7
CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbihkZWJ1Z2dlckdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKKworICAgICAgICAgICAgZGlz
cGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAg
ICAgICAgICAgICAgb2JzZXJ2ZXIuYnJlYWtwb2ludEFjdGlvblByb2JlKGRlYnVnZ2VyR2xvYmFs
T2JqZWN0LCBhY3Rpb24uaWQsIG1fY3VycmVudFByb2JlQmF0Y2hJZCwgbV9uZXh0UHJvYmVTYW1w
bGVJZCsrLCBleGNlcHRpb24gPyBleGNlcHRpb24tPnZhbHVlKCkgOiByZXN1bHQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFpc0F0dGFjaGVkKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorfQorCiBjbGFzcyBEZWJ1Z2dlcjo6Q2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3Rv
ciB7CiBwdWJsaWM6CiAgICAgQ2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNTcxLDExICs2OTMsMzUgQEAgdm9pZCBEZWJ1Z2dlcjo6
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlKQog
ICAgIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHBhdXNlOwogfQogCi12b2lkIERlYnVnZ2Vy
OjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQordm9pZCBEZWJ1Z2dlcjo6c2No
ZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCkKIHsKLSAgICBtX3BhdXNlQXROZXh0T3Bwb3J0
dW5pdHkgPSBwYXVzZTsKLSAgICBpZiAocGF1c2UpCi0gICAgICAgIHNldFN0ZXBwaW5nTW9kZShT
dGVwcGluZ01vZGVFbmFibGVkKTsKKyAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVl
OworCisgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOworfQorCit2b2lk
IERlYnVnZ2VyOjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCkKK3sKKyAgICBtX3BhdXNl
QXROZXh0T3Bwb3J0dW5pdHkgPSBmYWxzZTsKK30KKworYm9vbCBEZWJ1Z2dlcjo6c2NoZWR1bGVQ
YXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAg
aWYgKG1fc3BlY2lhbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
c3BlY2lhbEJyZWFrcG9pbnQgPSBtYWtlUmVmKGJyZWFrcG9pbnQpOworICAgIHNldFN0ZXBwaW5n
TW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBE
ZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVh
a3BvaW50KQoreworICAgIGlmICgmYnJlYWtwb2ludCAhPSBtX3NwZWNpYWxCcmVha3BvaW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbnVsbHB0
cjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKCkK
QEAgLTU5OSw3ICs3NDUsNyBAQCB2b2lkIERlYnVnZ2VyOjpjb250aW51ZVByb2dyYW0oKQogICAg
IGlmICghbV9pc1BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm90aWZ5RG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50
cyA9IHRydWU7CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBOZXh0RXhwcmVzc2lvbigpCkBAIC02
MTAsNyArNzU2LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcE5leHRFeHByZXNzaW9uKCkKICAgICBt
X3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWU7CiAgICAgbV9wYXVzZU9uU3Rl
cE5leHQgPSB0cnVlOwogICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsK
LSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6c3RlcElu
dG9TdGF0ZW1lbnQoKQpAQCAtNjIwLDcgKzc2Niw3IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBJbnRv
U3RhdGVtZW50KCkKIAogICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHRydWU7CiAgICAg
c2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVu
dHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCgpCkBAIC02
MzAsNyArNzc2LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQogCiAgICAg
bV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIHNldFN0ZXBwaW5n
TW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVn
Z2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsK
IH0KIAogdm9pZCBEZWJ1Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24oKQpAQCAtNjQyLDcgKzc4OCw3
IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAgICBtX3BhdXNlT25DYWxs
RnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZy
YW1lKHRvcEVudHJ5RnJhbWUpIDogbnVsbHB0cjsKICAgICBtX3BhdXNlT25TdGVwT3V0ID0gdHJ1
ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0gICAgbm90aWZ5
RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1
Z2dlckV2ZW50cyA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJhbWUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKQEAgLTcwMSwxMCArODQ3LDE3IEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGJvb2wgZGlkUGF1c2VGb3JTdGVwID0g
cGF1c2VOb3c7CiAKLSAgICBCcmVha3BvaW50IGJyZWFrcG9pbnQ7CiAgICAgVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gRGVidWdnZXJDYWxsRnJhbWU6OnBvc2l0aW9uRm9yQ2FsbEZyYW1lKHZtLCBt
X2N1cnJlbnRDYWxsRnJhbWUpOwotICAgIGJvb2wgZGlkSGl0QnJlYWtwb2ludCA9IGhhc0JyZWFr
cG9pbnQoc291cmNlSUQsIHBvc2l0aW9uLCAmYnJlYWtwb2ludCk7Ci0gICAgcGF1c2VOb3cgfD0g
ZGlkSGl0QnJlYWtwb2ludDsKKworICAgIGF1dG8gYnJlYWtwb2ludCA9IGRpZEhpdEJyZWFrcG9p
bnQoZ2xvYmFsT2JqZWN0LCBzb3VyY2VJRCwgcG9zaXRpb24pOworICAgIGlmIChicmVha3BvaW50
KQorICAgICAgICBwYXVzZU5vdyA9IHRydWU7CisKKyAgICAvLyBTcGVjaWFsIGJyZWFrcG9pbnRz
IGFyZSBvbmx5IGdpdmVuIG9uZSBvcHBvcnR1bml0eSB0byBwYXVzZS4KKyAgICBhdXRvIHNwZWNp
YWxCcmVha3BvaW50ID0gV1RGTW92ZShtX3NwZWNpYWxCcmVha3BvaW50KTsKKyAgICBpZiAoc3Bl
Y2lhbEJyZWFrcG9pbnQgJiYgc3BlY2lhbEJyZWFrcG9pbnQtPnNob3VsZFBhdXNlKCp0aGlzLCBn
bG9iYWxPYmplY3QpKQorICAgICAgICBwYXVzZU5vdyA9IHRydWU7CisKICAgICBtX2xhc3RFeGVj
dXRlZExpbmUgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CiAgICAgaWYgKCFwYXVz
ZU5vdykKICAgICAgICAgcmV0dXJuOwpAQCAtNzE2LDI0ICs4NjksNDUgQEAgdm9pZCBEZWJ1Z2dl
cjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIC8vIHJl
c2V0aW5nIHRoZSBwYXVzZSBzdGF0ZSBiZWZvcmUgZXhlY3V0aW5nIGFueSBicmVha3BvaW50IGFj
dGlvbnMuCiAgICAgVGVtcG9yYXJ5UGF1c2VkU3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOwogCi0g
ICAgaWYgKGRpZEhpdEJyZWFrcG9pbnQpIHsKLSAgICAgICAgaGFuZGxlQnJlYWtwb2ludEhpdChn
bG9iYWxPYmplY3QsIGJyZWFrcG9pbnQpOworICAgIGlmIChicmVha3BvaW50IHx8IHNwZWNpYWxC
cmVha3BvaW50KSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgYWN0aW9ucyBjYW4gcG90ZW50
aWFsbHkgc3RvcCB0aGUgZGVidWdnZXIsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdAogICAgICAg
ICAvLyB3ZSBzdGlsbCBoYXZlIGEgY3VycmVudCBjYWxsIGZyYW1lIHdoZW4gd2UgZ2V0IGJhY2su
Ci0gICAgICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmIChicmVha3BvaW50LmF1dG9Db250aW51ZSkgeworICAgICAgICBib29sIGF1
dG9Db250aW51ZSA9IGZhbHNlOworCisgICAgICAgIGlmIChicmVha3BvaW50KSB7CisgICAgICAg
ICAgICBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKCpicmVha3BvaW50LCBnbG9iYWxPYmplY3Qp
OworCisgICAgICAgICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LT5pc0F1dG9Db250aW51ZSgp
KQorICAgICAgICAgICAgICAgIGF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoc3BlY2lhbEJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGV2YWx1YXRlQnJlYWtw
b2ludEFjdGlvbnMoKnNwZWNpYWxCcmVha3BvaW50LCBnbG9iYWxPYmplY3QpOworCisgICAgICAg
ICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmIChzcGVjaWFsQnJlYWtwb2ludC0+aXNBdXRvQ29udGludWUoKSkKKyAg
ICAgICAgICAgICAgICBhdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGF1dG9Db250aW51ZSkgewogICAgICAgICAgICAgaWYgKCFkaWRQYXVzZUZvclN0ZXApCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZGlkSGl0QnJlYWtwb2ludCA9IGZh
bHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fcGF1c2luZ0JyZWFrcG9pbnRJRCA9
IGJyZWFrcG9pbnQuaWQ7CisKKyAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBudWxscHRyOworICAg
ICAgICAgICAgc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOworICAgICAgICB9IGVsc2UgaWYg
KGJyZWFrcG9pbnQpCisgICAgICAgICAgICBtX3BhdXNpbmdCcmVha3BvaW50SUQgPSBicmVha3Bv
aW50LT5pZCgpOwogICAgIH0KIAogICAgIGlmIChibGFja2JveFR5cGVJdGVyYXRvciAhPSBtX2Js
YWNrYm94ZWRTY3JpcHRzLmVuZCgpICYmIGJsYWNrYm94VHlwZUl0ZXJhdG9yLT52YWx1ZSA9PSBC
bGFja2JveFR5cGU6OkRlZmVycmVkKSB7CiAgICAgICAgIG1fYWZ0ZXJCbGFja2JveGVkU2NyaXB0
ID0gdHJ1ZTsKLSAgICAgICAgc2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQodHJ1ZSk7CisgICAgICAg
IHNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC03NDEsNyArOTE1LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBhdXRvIHJlYXNvbiA9IG1fcmVhc29u
Rm9yUGF1c2U7CiAgICAgICAgIGlmIChhZnRlckJsYWNrYm94ZWRTY3JpcHQpCiAgICAgICAgICAg
ICByZWFzb24gPSBQYXVzZWRBZnRlckJsYWNrYm94ZWRTY3JpcHQ7Ci0gICAgICAgIGVsc2UgaWYg
KGRpZEhpdEJyZWFrcG9pbnQpCisgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICByZWFzb24gPSBQYXVzZWRGb3JCcmVha3BvaW50OwogICAgICAgICBQYXVzZVJlYXNvbkRl
Y2xhcmF0aW9uIHJhdXNlUmVhc29uRGVjbGFyYXRpb24oKnRoaXMsIHJlYXNvbik7CiAKQEAgLTc1
MSwxMiArOTI1LDQ1IEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIG1fcGF1c2luZ0JyZWFrcG9pbnRJRCA9IG5vQnJlYWtw
b2ludElEOwogCi0gICAgaWYgKCFtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgJiYgIW1fcGF1c2VP
bkNhbGxGcmFtZSkgeworICAgIGlmICghbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ICYmICFtX3Bh
dXNlT25DYWxsRnJhbWUgJiYgIW1fc3BlY2lhbEJyZWFrcG9pbnQpIHsKICAgICAgICAgc2V0U3Rl
cHBpbmdNb2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKTsKICAgICAgICAgbV9jdXJyZW50Q2FsbEZy
YW1lID0gbnVsbHB0cjsKICAgICB9CiB9CiAKK3ZvaWQgRGVidWdnZXI6OmhhbmRsZVBhdXNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlYXNvbkZvclBhdXNlKQoreworICAgIGRpc3Bh
dGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAg
ICBBU1NFUlQoaXNQYXVzZWQoKSk7CisgICAgICAgIG9ic2VydmVyLmRpZFBhdXNlKGdsb2JhbE9i
amVjdCwgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCksIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUo
Z2xvYmFsT2JqZWN0KSk7CisgICAgfSk7CisKKyAgICBkaWRQYXVzZShnbG9iYWxPYmplY3QpOwor
CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gZmFsc2U7CisgICAgcnVuRXZl
bnRMb29wV2hpbGVQYXVzZWQoKTsKKworICAgIGRpZENvbnRpbnVlKGdsb2JhbE9iamVjdCk7CisK
KyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIp
IHsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkQ29udGludWUoKTsKKyAgICB9KTsKK30KKworSlNDOjpK
U1ZhbHVlIERlYnVnZ2VyOjpleGNlcHRpb25PckNhdWdodFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAocmVhc29uRm9yUGF1c2UoKSA9PSBQYXVzZWRG
b3JFeGNlcHRpb24pCisgICAgICAgIHJldHVybiBjdXJyZW50RXhjZXB0aW9uKCk7CisKKyAgICBm
b3IgKFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gZnJhbWUgPSAmY3VycmVudERlYnVnZ2VyQ2Fs
bEZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpKSB7CisgICAgICAg
IERlYnVnZ2VyU2NvcGUmIHNjb3BlID0gKmZyYW1lLT5zY29wZSgpOworICAgICAgICBpZiAoc2Nv
cGUuaXNDYXRjaFNjb3BlKCkpCisgICAgICAgICAgICByZXR1cm4gc2NvcGUuY2F1Z2h0VmFsdWUo
Z2xvYmFsT2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIERlYnVn
Z2VyOjpleGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uLCBib29sIGhhc0NhdGNoSGFuZGxlcikKIHsKICAg
ICBpZiAobV9pc1BhdXNlZCkKQEAgLTgwNyw4ICsxMDE0LDggQEAgdm9pZCBEZWJ1Z2dlcjo6YXRF
eHByZXNzaW9uKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gT25seSBwYXVzZSBhdCB0aGUgbmV4dCBleHByZXNzaW9uIHdpdGggc3RlcC1pbiwg
c3RlcC1uZXh0LCBhbmQgc3RlcC1vdXQuCi0gICAgYm9vbCBzaG91bGRBdHRlbXB0UGF1c2UgPSBt
X3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgfHwgbV9wYXVzZU9uU3RlcE5leHQgfHwgbV9wYXVzZU9u
U3RlcE91dDsKKyAgICAvLyBPbmx5IHBhdXNlIGF0IHRoZSBuZXh0IGV4cHJlc3Npb24gZm9yIHN0
ZXAtaW4sIHN0ZXAtbmV4dCwgc3RlcC1vdXQsIG9yIHNwZWNpYWwgYnJlYWtwb2ludHMuCisgICAg
Ym9vbCBzaG91bGRBdHRlbXB0UGF1c2UgPSBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgfHwgbV9w
YXVzZU9uU3RlcE5leHQgfHwgbV9wYXVzZU9uU3RlcE91dCB8fCBtX3NwZWNpYWxCcmVha3BvaW50
OwogCiAgICAgUGF1c2VSZWFzb25EZWNsYXJhdGlvbiByZWFzb24oKnRoaXMsIFBhdXNlZEF0RXhw
cmVzc2lvbik7CiAgICAgdXBkYXRlQ2FsbEZyYW1lKGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxs
RnJhbWUobV92bSwgY2FsbEZyYW1lKSwgY2FsbEZyYW1lLCBzaG91bGRBdHRlbXB0UGF1c2UgPyBB
dHRlbXB0UGF1c2UgOiBOb1BhdXNlKTsKQEAgLTkxNyw2ICsxMTI0LDcgQEAgdm9pZCBEZWJ1Z2dl
cjo6Y2xlYXJOZXh0UGF1c2VTdGF0ZSgpCiAgICAgbV9wYXVzZU9uU3RlcE5leHQgPSBmYWxzZTsK
ICAgICBtX3BhdXNlT25TdGVwT3V0ID0gZmFsc2U7CiAgICAgbV9hZnRlckJsYWNrYm94ZWRTY3Jp
cHQgPSBmYWxzZTsKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBEZWJ1Z2dlcjo6ZGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKQEAgLTkzMyw2ICsxMTQxLDIwIEBAIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoRGVidWdnZXJT
dGF0ZW1lbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgdXBkYXRlQ2FsbEZyYW1lKGxleGlj
YWxHbG9iYWxPYmplY3RGb3JDYWxsRnJhbWUobV92bSwgY2FsbEZyYW1lKSwgY2FsbEZyYW1lLCBB
dHRlbXB0UGF1c2UpOwogfQogCit2b2lkIERlYnVnZ2VyOjp3aWxsUnVuTWljcm90YXNrKCkKK3sK
KyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIp
IHsKKyAgICAgICAgb2JzZXJ2ZXIud2lsbFJ1bk1pY3JvdGFzaygpOworICAgIH0pOworfQorCit2
b2lkIERlYnVnZ2VyOjpkaWRSdW5NaWNyb3Rhc2soKQoreworICAgIGRpc3BhdGNoRnVuY3Rpb25U
b09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICBvYnNlcnZlci5k
aWRSdW5NaWNyb3Rhc2soKTsKKyAgICB9KTsKK30KKwogRGVidWdnZXJDYWxsRnJhbWUmIERlYnVn
Z2VyOjpjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKQogewogICAgIGlmICghbV9jdXJyZW50RGVi
dWdnZXJDYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
CmluZGV4IGZiYTQ0YzYwY2M2YTNhM2E0ODQ3YTFiZGFlYzY2ODkxMzJhNDg2ODcuLjg4NTQwNzc1
NTAxNDhhM2NhMTA2NzcwNTVmMmEwNDU3OTdkMWZkYTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0yNywxMCArMjcsNyBAQAogI2luY2x1ZGUgIkRlYnVn
Z2VyUGFyc2VEYXRhLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFBvc2l0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTQxLDI2ICszOCwxNCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFNv
dXJjZVByb3ZpZGVyOwogY2xhc3MgVk07CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVn
Z2VyIHsKK2NsYXNzIERlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBEZWJ1Z2dlcihWTSYpOwotICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIoVk0mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIH5EZWJ1Z2dlcigpOwogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCi0g
ICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7Ci0g
ICAgYm9vbCBoYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2soKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAg
ICAgICAgcmV0dXJuIG1faGFzSGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrOwotICAgIH0KLSAg
ICBKU1ZhbHVlIGN1cnJlbnRFeGNlcHRpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVh
c29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fY3Vy
cmVudEV4Y2VwdGlvbjsKLSAgICB9Ci0KICAgICBib29sIG5lZWRzRXhjZXB0aW9uQ2FsbGJhY2tz
KCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZCAmJiBtX3BhdXNlT25FeGNl
cHRpb25zU3RhdGUgIT0gRG9udFBhdXNlT25FeGNlcHRpb25zOyB9CiAgICAgYm9vbCBpc0ludGVy
YWN0aXZlbHlEZWJ1Z2dpbmcoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVk
OyB9CiAKQEAgLTY4LDI2ICs1MywzMCBAQCBwdWJsaWM6CiAgICAgICAgIFRlcm1pbmF0aW5nRGVi
dWdnaW5nU2Vzc2lvbiwKICAgICAgICAgR2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZwogICAgIH07
Ci0gICAgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGRldGFjaChKU0ds
b2JhbE9iamVjdCosIFJlYXNvbkZvckRldGFjaCk7Ci0gICAgYm9vbCBpc0F0dGFjaGVkKEpTR2xv
YmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhdHRhY2goSlNHbG9iYWxP
YmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVj
dCosIFJlYXNvbkZvckRldGFjaCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0F0dGFj
aGVkKEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICB2b2lkIHJlc29sdmVCcmVha3BvaW50KEJyZWFr
cG9pbnQmLCBTb3VyY2VQcm92aWRlciopOwotICAgIEJyZWFrcG9pbnRJRCBzZXRCcmVha3BvaW50
KEJyZWFrcG9pbnQmLCBib29sJiBleGlzdGluZyk7Ci0gICAgdm9pZCByZW1vdmVCcmVha3BvaW50
KEJyZWFrcG9pbnRJRCk7CisgICAgYm9vbCByZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50Jiwg
U291cmNlUHJvdmlkZXIqKTsKKyAgICBib29sIHNldEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOwor
ICAgIGJvb2wgcmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50Jik7CiAgICAgdm9pZCBjbGVhckJy
ZWFrcG9pbnRzKCk7CiAKICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJyZWFr
cG9pbnRzQWN0aXZhdGVkKHRydWUpOyB9CiAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMo
KSB7IHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKGZhbHNlKTsgfQogICAgIGJvb2wgYnJlYWtwb2lu
dHNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOyB9CiAKKyAg
ICAvLyBCcmVha3BvaW50ICJkZWxlZ2F0ZSIgZnVuY3Rpb25hbGl0eS4KKyAgICBib29sIGV2YWx1
YXRlQnJlYWtwb2ludENvbmRpdGlvbihCcmVha3BvaW50JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB2b2lkIGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludCYsIEpTR2xvYmFsT2Jq
ZWN0Kik7CisKICAgICBlbnVtIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgewogICAgICAgICBEb250
UGF1c2VPbkV4Y2VwdGlvbnMsCiAgICAgICAgIFBhdXNlT25BbGxFeGNlcHRpb25zLAogICAgICAg
ICBQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zCiAgICAgfTsKICAgICBQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlT25F
eGNlcHRpb25zU3RhdGU7IH0KLSAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogCiAgICAgdm9pZCBz
ZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKGJvb2wgZW5hYmxlZCkgeyBtX3BhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudHMgPSBlbmFibGVkOyB9CiAKQEAgLTEwNSw3ICs5NCwxMCBAQCBwdWJsaWM6
CiAgICAgUmVhc29uRm9yUGF1c2UgcmVhc29uRm9yUGF1c2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
YXNvbkZvclBhdXNlOyB9CiAgICAgQnJlYWtwb2ludElEIHBhdXNpbmdCcmVha3BvaW50SUQoKSBj
b25zdCB7IHJldHVybiBtX3BhdXNpbmdCcmVha3BvaW50SUQ7IH0KIAotICAgIHZvaWQgc2V0UGF1
c2VPbk5leHRTdGF0ZW1lbnQoYm9vbCk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlQXROZXh0T3Bw
b3J0dW5pdHkoKTsKKyAgICB2b2lkIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKKyAg
ICBib29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50Jik7Cisg
ICAgYm9vbCBjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKICAg
ICB2b2lkIGJyZWFrUHJvZ3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAg
dm9pZCBzdGVwTmV4dEV4cHJlc3Npb24oKTsKQEAgLTEyMyw5ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzdXBwcmVzc0FsbFBhdXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NBbGxQ
YXVzZXM7IH0KICAgICB2b2lkIHNldFN1cHByZXNzQWxsUGF1c2VzKGJvb2wgc3VwcHJlc3MpIHsg
bV9zdXBwcmVzc0FsbFBhdXNlcyA9IHN1cHByZXNzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291
cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiwgU291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5l
TnVtYmVyLCBjb25zdCBXVEY6OlN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxSdW5NaWNyb3Rhc2soKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuTWlj
cm90YXNrKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHNvdXJjZVBh
cnNlZChKU0dsb2JhbE9iamVjdCosIFNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJl
ciwgY29uc3QgV1RGOjpTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICB2b2lkIGV4Y2VwdGlv
bihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIGJv
b2wgaGFzQ2F0Y2hIYW5kbGVyKTsKICAgICB2b2lkIGF0U3RhdGVtZW50KENhbGxGcmFtZSopOwpA
QCAtMTM3LDEwICsxMjcsNDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0o
Q2FsbEZyYW1lKik7CiAgICAgdm9pZCBkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFt
ZSopOwogCi0gICAgdmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CisgICAg
dm9pZCB3aWxsUnVuTWljcm90YXNrKCk7CisgICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKTsKIAog
ICAgIHZvaWQgcmVnaXN0ZXJDb2RlQmxvY2soQ29kZUJsb2NrKik7CiAKKyAgICAvLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4gV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgRGVi
dWdnZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJvdmlkZXIKKyAgICBzdHJ1Y3QgU2NyaXB0IHsK
KyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgU3Ry
aW5nIHNvdXJjZVVSTDsKKyAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CisgICAgICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXI7CisgICAgICAgIGludCBzdGFy
dExpbmUgeyAwIH07CisgICAgICAgIGludCBzdGFydENvbHVtbiB7IDAgfTsKKyAgICAgICAgaW50
IGVuZExpbmUgeyAwIH07CisgICAgICAgIGludCBlbmRDb2x1bW4geyAwIH07CisgICAgICAgIGJv
b2wgaXNDb250ZW50U2NyaXB0IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgY2xhc3MgT2JzZXJ2
ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IERlYnVnZ2Vy
OjpTY3JpcHQmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2Uo
Y29uc3QgU3RyaW5nJiAvKiB1cmwgKi8sIGNvbnN0IFN0cmluZyYgLyogZGF0YSAqLywgaW50IC8q
IGZpcnN0TGluZSAqLywgaW50IC8qIGVycm9yTGluZSAqLywgY29uc3QgU3RyaW5nJiAvKiBlcnJv
ck1lc3NhZ2UgKi8pIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNr
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSB7IH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqLCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIEpTVmFsdWUgLyogZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSAqLykgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBi
cmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiAvKiBkYXRh
ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChCcmVh
a3BvaW50QWN0aW9uSUQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlv
blByb2JlKEpTR2xvYmFsT2JqZWN0KiwgQnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCAvKiBi
YXRjaElkICovLCB1bnNpZ25lZCAvKiBzYW1wbGVJZCAqLywgSlNWYWx1ZSAvKiByZXN1bHQgKi8p
IHsgfQorICAgIH07CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgSlNfRVhQ
T1JUX1BSSVZBVEUgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYsIGJvb2wgaXNCZWluZ0Rl
c3Ryb3llZCk7CisKICAgICBjbGFzcyBQcm9maWxpbmdDbGllbnQgewogICAgIHB1YmxpYzoKICAg
ICAgICAgdmlydHVhbCB+UHJvZmlsaW5nQ2xpZW50KCk7CkBAIC0xNTYsMTYgKzE4MiwzNyBAQCBw
dWJsaWM6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0YXJ0VGltZSwgUHJv
ZmlsaW5nUmVhc29uKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVCcmVh
a3BvaW50SGl0KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQnJlYWtwb2ludCYpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRpb24oSlNHbG9iYWxP
YmplY3QqLCBFeGNlcHRpb24qKSBjb25zdCB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlUGF1
c2UoSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JQYXVzZSkgeyB9Ci0gICAgdmlydHVhbCB2b2lk
IG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSB7IH0KKyAgICBKU19FWFBPUlRf
UFJJVkFURSBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUo
KTsKKworICAgIGJvb2wgaGFzSGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNlID09IFBhdXNlZEZvckV4Y2VwdGlv
bik7CisgICAgICAgIHJldHVybiBtX2hhc0hhbmRsZXJGb3JFeGNlcHRpb25DYWxsYmFjazsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlIGN1cnJlbnRFeGNlcHRpb24oKQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1fY3VycmVudEV4Y2VwdGlvbjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXR0YWNo
RGVidWdnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCAvKiBp
c0JlaW5nRGVzdHJveWVkICovKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZv
aWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKKworICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVz
ZShKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9p
ZCBoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZvclBhdXNlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSB7IH0KKworICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRlbnRTY3JpcHQoSlNHbG9iYWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisg
ICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlv
biopIGNvbnN0IHsgfQorCisgICAgYm9vbCBkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkg
Y29uc3QgeyByZXR1cm4gbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzOyB9CiAKIHByaXZh
dGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEJyZWFrcG9pbnRJRCwgQnJlYWtwb2ludCo+IEJyZWFr
cG9pbnRJRFRvQnJlYWtwb2ludE1hcDsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwg
UmVmUHRyPEJyZWFrcG9pbnRzTGlzdD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVk
V2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IExpbmVUb0JyZWFrcG9pbnRzTWFwOwotICAgIHR5
cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtwb2ludHNNYXAsIFdURjo6SW50SGFz
aDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8U291cmNlSUQ+
PiBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA7CisgICAgSlNWYWx1ZSBleGNlcHRpb25PckNhdWdo
dFZhbHVlKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBjbGFzcyBDbGVhckNvZGVCbG9ja0RlYnVn
Z2VyUmVxdWVzdHNGdW5jdG9yOwogICAgIGNsYXNzIENsZWFyRGVidWdnZXJSZXF1ZXN0c0Z1bmN0
b3I7CkBAIC0xODgsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGVidWdnZXImIG1fZGVi
dWdnZXI7CiAgICAgfTsKIAotICAgIGJvb2wgaGFzQnJlYWtwb2ludChTb3VyY2VJRCwgY29uc3Qg
VGV4dFBvc2l0aW9uJiwgQnJlYWtwb2ludCogaGl0QnJlYWtwb2ludCk7CisgICAgUmVmUHRyPEJy
ZWFrcG9pbnQ+IGRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxPYmplY3QqLCBTb3VyY2VJRCwgY29u
c3QgVGV4dFBvc2l0aW9uJik7CiAKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgZGVidWdnZXJQYXJz
ZURhdGEoU291cmNlSUQsIFNvdXJjZVByb3ZpZGVyKik7CiAKQEAgLTIxNSw3ICsyNjIsNyBAQCBw
cml2YXRlOgogICAgICAgICBCcmVha3BvaW50RGlzYWJsZWQsCiAgICAgICAgIEJyZWFrcG9pbnRF
bmFibGVkCiAgICAgfTsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKGJvb2wpOwor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCk7
CiAgICAgdm9pZCB0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayosIEJyZWFrcG9pbnQmLCBCcmVh
a3BvaW50U3RhdGUpOwogICAgIHZvaWQgYXBwbHlCcmVha3BvaW50cyhDb2RlQmxvY2sqKTsKICAg
ICB2b2lkIHRvZ2dsZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIEJyZWFrcG9pbnRTdGF0ZSk7CkBA
IC0yMjMsNiArMjcwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRGVidWdnZXJSZXF1ZXN0
cyhKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgY2xlYXJQYXJzZWREYXRhKCk7CiAKKyAgICBi
b29sIGNhbkRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycygpIGNvbnN0OworICAgIHZvaWQgZGlz
cGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4pOworCiAg
ICAgVk0mIG1fdm07CiAgICAgSGFzaFNldDxKU0dsb2JhbE9iamVjdCo+IG1fZ2xvYmFsT2JqZWN0
czsKICAgICBIYXNoTWFwPFNvdXJjZUlELCBEZWJ1Z2dlclBhcnNlRGF0YSwgV1RGOjpJbnRIYXNo
PFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJRD4+
IG1fcGFyc2VEYXRhTWFwOwpAQCAtMjQ4LDE1ICsyOTgsMjQgQEAgcHJpdmF0ZToKICAgICBTb3Vy
Y2VJRCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEOwogICAgIGJvb2wgbV9hZnRlckJsYWNrYm94ZWRT
Y3JpcHQgeyBmYWxzZSB9OwogCi0gICAgQnJlYWtwb2ludElEIG1fdG9wQnJlYWtwb2ludElEOwor
ICAgIHVzaW5nIExpbmVUb0JyZWFrcG9pbnRzTWFwID0gSGFzaE1hcDx1bnNpZ25lZCwgQnJlYWtw
b2ludHNWZWN0b3IsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPGludD4+OworICAgIEhhc2hNYXA8U291cmNlSUQsIExpbmVUb0JyZWFrcG9pbnRz
TWFwLCBXVEY6OkludEhhc2g8U291cmNlSUQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNo
VHJhaXRzPFNvdXJjZUlEPj4gbV9icmVha3BvaW50c0ZvclNvdXJjZUlEOworICAgIEhhc2hTZXQ8
UmVmPEJyZWFrcG9pbnQ+PiBtX2JyZWFrcG9pbnRzOworICAgIFJlZlB0cjxCcmVha3BvaW50PiBt
X3NwZWNpYWxCcmVha3BvaW50OwogICAgIEJyZWFrcG9pbnRJRCBtX3BhdXNpbmdCcmVha3BvaW50
SUQ7Ci0gICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50TWFwIG1fYnJlYWtwb2ludElEVG9CcmVh
a3BvaW50OwotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlEVG9CcmVha3Bv
aW50czsKKworICAgIHVuc2lnbmVkIG1fbmV4dFByb2JlU2FtcGxlSWQgeyAxIH07CisgICAgdW5z
aWduZWQgbV9jdXJyZW50UHJvYmVCYXRjaElkIHsgMCB9OwogCiAgICAgUmVmUHRyPEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWU+IG1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lOwogCisgICAgSGFzaFNl
dDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworICAgIGJvb2wgbV9kaXNwYXRjaGluZ0Z1bmN0aW9u
VG9PYnNlcnZlcnMgeyBmYWxzZSB9OworCiAgICAgUHJvZmlsaW5nQ2xpZW50KiBtX3Byb2ZpbGlu
Z0NsaWVudCB7IG51bGxwdHIgfTsKIAorICAgIGJvb2wgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzIHsgdHJ1ZSB9OworCiAgICAgZnJpZW5kIGNsYXNzIERlYnVnZ2VyUGF1c2VkU2NvcGU7
CiAgICAgZnJpZW5kIGNsYXNzIFRlbXBvcmFyeVBhdXNlZFN0YXRlOwogICAgIGZyaWVuZCBjbGFz
cyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKaW5kZXggNWZiNmU4YTYzOTYzYTJmZjFmMjZj
Yzc0NGMwMmE5MjgwNDYxZGIwNC4uNDI1NjNhY2YzZTJmYmY5ZTMzYzBmNTQwYmFkNTdjMzQzMDU2
NjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2Vy
UHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
clByaW1pdGl2ZXMuaApAQCAtMjksMTAgKzI5LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10
eXBlZGVmIHNpemVfdCBTb3VyY2VJRDsKLXN0YXRpYyBjb25zdGV4cHIgU291cmNlSUQgbm9Tb3Vy
Y2VJRCA9IDA7Cit1c2luZyBTb3VyY2VJRCA9IHNpemVfdDsKK2NvbnN0ZXhwciBTb3VyY2VJRCBu
b1NvdXJjZUlEID0gMDsKIAotdHlwZWRlZiBzaXplX3QgQnJlYWtwb2ludElEOwotc3RhdGljIGNv
bnN0ZXhwciBCcmVha3BvaW50SUQgbm9CcmVha3BvaW50SUQgPSAwOwordXNpbmcgQnJlYWtwb2lu
dElEID0gc2l6ZV90OworY29uc3RleHByIEJyZWFrcG9pbnRJRCBub0JyZWFrcG9pbnRJRCA9IDA7
CisKK3VzaW5nIEJyZWFrcG9pbnRBY3Rpb25JRCA9IGludDsKK2NvbnN0ZXhwciBCcmVha3BvaW50
QWN0aW9uSUQgbm9CcmVha3BvaW50QWN0aW9uSUQgPSAwOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52
aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52
aXJvbm1lbnQuaAppbmRleCAyMTAxOWVkYTFkMGM0Zjc3ODNkZmFjNmRkZTU3NTg2ZTRkNzFmZTZl
Li5jNWIxMjZlODA1NjFmNzA2ZDVmM2M3OGE4MjFkNmVjMWU1YzljNDk4IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5o
CkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFN0b3B3YXRjaDsKIH0KIAogbmFtZXNwYWNlIEpTQyB7
CitjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBj
bGFzcyBWTTsKQEAgLTM5LDcgKzQwLDYgQEAgY2xhc3MgVk07CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewogCi1jbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgq
SW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEm
IGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFy
Z3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogdHlwZWRl
ZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIpKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBO
YWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIApAQCAtNTIsNyAr
NTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZh
bHVhdGVIYW5kbGVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZEluaXRp
YWxpemVkKCkgPSAwOwogICAgIHZpcnR1YWwgV1RGOjpTdG9wd2F0Y2gmIGV4ZWN1dGlvblN0b3B3
YXRjaCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHRE
ZWJ1Z1NlcnZlcigpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6RGVidWdnZXImIHNjcmlwdERlYnVn
U2VydmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpWTSYgdm0oKSA9IDA7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2Ny
aXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0ds
b2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA0ZmVhNDgxODViNDNiNDJjYzZk
YmRhNzQxOGY1NGVmYmQyNDljZmY0Li5jMmY3MGM3ZDBjYzgyOTlmODZlNTIyYmY3OGE5NTk2YTJm
ODBkYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xv
YmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM1LDE4
ICszNSwyMiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLSAgICA6IFNjcmlwdERlYnVn
U2VydmVyKGdsb2JhbE9iamVjdC52bSgpKQorICAgIDogRGVidWdnZXIoZ2xvYmFsT2JqZWN0LnZt
KCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7CiB9CiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIoKQogeworICAgIEpT
Qzo6RGVidWdnZXI6OmF0dGFjaERlYnVnZ2VyKCk7CisKICAgICBhdHRhY2goJm1fZ2xvYmFsT2Jq
ZWN0KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hE
ZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0
YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBkZXRhY2goJm1fZ2xvYmFsT2Jq
ZWN0LCBpc0JlaW5nRGVzdHJveWVkID8gRGVidWdnZXI6Okdsb2JhbE9iamVjdElzRGVzdHJ1Y3Rp
bmcgOiBEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKICAgICBpZiAoIWlz
QmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC01
NCwxMCArNTgsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpkZXRh
Y2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RT
Y3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQogeworICAgIEpTQzo6
RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKICAgICAvLyBEcm9wIGFsbCBs
b2NrcyBzbyBhbm90aGVyIHRocmVhZCBjYW4gd29yayBpbiB0aGUgVk0gd2hpbGUgd2UgYXJlIG5l
c3RlZC4KICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcygmbV9nbG9i
YWxPYmplY3Qudm0oKSk7CiAKLSAgICB3aGlsZSAoIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2
ZW50cykgeworICAgIHdoaWxlICghZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKSB7CiAg
ICAgICAgIGlmIChSdW5Mb29wOjpjeWNsZShKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
OjpydW5Mb29wTW9kZSgpKSA9PSBSdW5Mb29wOjpDeWNsZVJlc3VsdDo6U3RvcCkKICAgICAgICAg
ICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXgg
ZGFhYmNmNzY0ZTE3ZDFlZDZkY2Y3NmNjNTlmYzM5ZTdlYjllNzg1ZS4uODAxZTc2MmY5YzAxOWM4
NjE0MWJiNWUyYjUyMjMxMGMyYThiYjNjNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmgKQEAgLTI1LDEyICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNj
cmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlIDx3dGYv
UnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBTY3JpcHREZWJ1Z1NlcnZlciB7Citj
bGFzcyBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEpTQzo6
RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAt
NDIsMTggKzQyLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUnVuTG9vcE1vZGUgcnVuTG9vcE1v
ZGUoKTsKIAogcHJpdmF0ZToKKyAgICAvLyBKU0M6OkRlYnVnZ2VyCiAgICAgdm9pZCBhdHRhY2hE
ZWJ1Z2dlcigpIGZpbmFsOwogICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVz
dHJveWVkKSBmaW5hbDsKLQotICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCop
IGZpbmFsIHsgfQotICAgIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopIGZp
bmFsIHsgfQogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKLSAgICBi
b29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgZmluYWwgeyBy
ZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIE5PVEU6IEN1cnJlbnRseSBhbGwgZXhjZXB0aW9ucyBh
cmUgcmVwb3J0ZWQgYXQgdGhlIEFQSSBib3VuZGFyeSB0aHJvdWdoIHJlcG9ydEFQSUV4Y2VwdGlv
bi4KICAgICAvLyBVbnRpbCBhIHRpbWUgY29tZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNhbiBiZSBj
YXVzZWQgb3V0c2lkZSBvZiB0aGUgQVBJIChlLmcuIHNldFRpbWVvdXQKICAgICAvLyBvciBzb21l
IG90aGVyIGFzeW5jIG9wZXJhdGlvbiBpbiBhIHB1cmUgSlNDb250ZXh0KSB3ZSBjYW4gaWdub3Jl
IGV4Y2VwdGlvbnMgcmVwb3J0ZWQgaGVyZS4KLSAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbCB7IH0KIAogICAg
IEpTQzo6SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDU4NjA0MTc5NmE0ZWI3ZGJjYzhjYmI5Nzg0ZGM3MWEyMWEwNDFi
MjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgKKysrIC9kZXYvbnVs
bApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBh
cmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0
cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi10eXBl
ZGVmIGVudW0gewotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlTG9nLAotICAgIFNjcmlw
dEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGUsCi0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlv
blR5cGVTb3VuZCwKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2JlCi19IFNjcmlw
dEJyZWFrcG9pbnRBY3Rpb25UeXBlOwotCi1zdHJ1Y3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiB7
Ci0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvbihTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0
eXBlLCBpbnQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgICAgICA6IHR5cGUo
dHlwZSkKLSAgICAgICAgLCBpZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgICAgICwgZGF0YShk
YXRhKQotICAgIHsKLSAgICB9Ci0KLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0eXBl
OwotICAgIGludCBpZGVudGlmaWVyOwotICAgIFN0cmluZyBkYXRhOwotfTsKLQotdHlwZWRlZiBW
ZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4gQnJlYWtwb2ludEFjdGlvbnM7Ci0KLXN0cnVj
dCBTY3JpcHRCcmVha3BvaW50IHsKLSAgICBTY3JpcHRCcmVha3BvaW50KCkKLSAgICB7Ci0gICAg
fQotCi0gICAgU2NyaXB0QnJlYWtwb2ludChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
ciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgYXV0b0NvbnRpbnVlLCB1bnNpZ25lZCBp
Z25vcmVDb3VudCkKLSAgICAgICAgOiBsaW5lTnVtYmVyKGxpbmVOdW1iZXIpCi0gICAgICAgICwg
Y29sdW1uTnVtYmVyKGNvbHVtbk51bWJlcikKLSAgICAgICAgLCBjb25kaXRpb24oY29uZGl0aW9u
KQotICAgICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGludWUpCi0gICAgICAgICwgaWdub3Jl
Q291bnQoaWdub3JlQ291bnQpCi0gICAgewotICAgIH0KLQotICAgIFNjcmlwdEJyZWFrcG9pbnQo
aW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
LCBCcmVha3BvaW50QWN0aW9ucyYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVk
IGlnbm9yZUNvdW50KQotICAgICAgICA6IGxpbmVOdW1iZXIobGluZU51bWJlcikKLSAgICAgICAg
LCBjb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAgICAsIGNvbmRpdGlvbihjb25kaXRp
b24pCi0gICAgICAgICwgYWN0aW9ucyhhY3Rpb25zKQotICAgICAgICAsIGF1dG9Db250aW51ZShh
dXRvQ29udGludWUpCi0gICAgICAgICwgaWdub3JlQ291bnQoaWdub3JlQ291bnQpCi0gICAgewot
ICAgIH0KLQotICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwotICAgIGludCBjb2x1bW5OdW1iZXIg
eyAwIH07Ci0gICAgU3RyaW5nIGNvbmRpdGlvbjsKLSAgICBCcmVha3BvaW50QWN0aW9ucyBhY3Rp
b25zOwotICAgIGJvb2wgYXV0b0NvbnRpbnVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBpZ25v
cmVDb3VudCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaApk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q4YmVmNDBlZmJjMmIwN2FhNmU3ZDU2ZGYw
OGVlMTU4ZmQ4YjAxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIu
aAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhl
IG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
LSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRl
YnVnZ2VyLmgiCi0jaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXN0cnVjdCBTY3JpcHRC
cmVha3BvaW50QWN0aW9uOwotCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKLXB1YmxpYzoK
LSAgICBzdHJ1Y3QgU2NyaXB0IHsKLSAgICAgICAgU3RyaW5nIHVybDsKLSAgICAgICAgU3RyaW5n
IHNvdXJjZTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICAgICAgU3RyaW5nIHNvdXJj
ZU1hcHBpbmdVUkw7Ci0gICAgICAgIFJlZlB0cjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQ
cm92aWRlcjsKLSAgICAgICAgaW50IHN0YXJ0TGluZSB7MH07Ci0gICAgICAgIGludCBzdGFydENv
bHVtbiB7MH07Ci0gICAgICAgIGludCBlbmRMaW5lIHswfTsKLSAgICAgICAgaW50IGVuZENvbHVt
biB7MH07Ci0gICAgICAgIGJvb2wgaXNDb250ZW50U2NyaXB0IHtmYWxzZX07Ci0gICAgfTsKLQot
ICAgIHZpcnR1YWwgflNjcmlwdERlYnVnTGlzdGVuZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9p
ZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSA9IDA7Ci0gICAg
dmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5n
JiBlcnJvck1lc3NhZ2UpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNr
KCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSA9IDA7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBj
YWxsRnJhbWVzLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25M
b2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBiYXRj
aElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHJlc3VsdCkgPSAwOwotfTsKLQot
fSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA4ZGVkMTI5NWY5NDM2ODc4YzczZTljZWRiNjYxMzEyM2U0MjIxZGRlLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEs
MzA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTMsIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIw
MTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAx
MyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLQotI2luY2x1ZGUgIkRlYnVnZ2VyQ2Fs
bEZyYW1lLmgiCi0jaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlv
bi5oIgotI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkphdmFT
Y3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUg
PHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotCi1u
YW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotU2NyaXB0RGVi
dWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKFZNJiB2bSkKLSAgICA6IERlYnVnZ2VyKHZtKQot
ewotfQotCi1TY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERlYnVnU2VydmVyKCkKLXsKLX0KLQot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludElE
IGlkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50KQotewotICAgIEFT
U0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0gICAgQVNTRVJUKCFtX2JyZWFrcG9pbnRJRFRv
QWN0aW9ucy5jb250YWlucyhpZCkpOwotCi0gICAgbV9icmVha3BvaW50SURUb0FjdGlvbnMuc2V0
KGlkLCBzY3JpcHRCcmVha3BvaW50LmFjdGlvbnMpOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2Vy
dmVyOjpyZW1vdmVCcmVha3BvaW50QWN0aW9ucyhCcmVha3BvaW50SUQgaWQpCi17Ci0gICAgQVNT
RVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKLQotICAgIG1fYnJlYWtwb2ludElEVG9BY3Rpb25z
LnJlbW92ZShpZCk7Ci19Ci0KLWNvbnN0IEJyZWFrcG9pbnRBY3Rpb25zJiBTY3JpcHREZWJ1Z1Nl
cnZlcjo6Z2V0QWN0aW9uc0ZvckJyZWFrcG9pbnQoQnJlYWtwb2ludElEIGlkKQotewotICAgIEFT
U0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0KLSAgICBhdXRvIGVudHJ5ID0gbV9icmVha3Bv
aW50SURUb0FjdGlvbnMuZmluZChpZCk7Ci0gICAgaWYgKGVudHJ5ICE9IG1fYnJlYWtwb2ludElE
VG9BY3Rpb25zLmVuZCgpKQotICAgICAgICByZXR1cm4gZW50cnktPnZhbHVlOwotCi0gICAgc3Rh
dGljIE5ldmVyRGVzdHJveWVkPEJyZWFrcG9pbnRBY3Rpb25zPiBlbXB0eUFjdGlvblZlY3RvciA9
IEJyZWFrcG9pbnRBY3Rpb25zKCk7Ci0gICAgcmV0dXJuIGVtcHR5QWN0aW9uVmVjdG9yOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckJyZWFrcG9pbnRBY3Rpb25zKCkKLXsKLSAg
ICBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5jbGVhcigpOwotfQotCi1ib29sIFNjcmlwdERlYnVn
U2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFj
dGlvbiYgYnJlYWtwb2ludEFjdGlvbikKLXsKLSAgICBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdn
ZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLQotICAgIHN3aXRjaCAo
YnJlYWtwb2ludEFjdGlvbi50eXBlKSB7Ci0gICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9u
VHlwZUxvZzoKLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0
RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmJyZWFrcG9p
bnRBY3Rpb25Mb2coZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGJyZWFrcG9pbnRB
Y3Rpb24uZGF0YSk7Ci0gICAgICAgIH0pOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTogewotICAgICAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
ID0gbnVsbHB0cjsKLSAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oYnJlYWtwb2ludEFjdGlvbi5kYXRhLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhj
ZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbihkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKSwgZXhjZXB0aW9uKTsKLSAgICAg
ICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVNv
dW5kOgotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1
Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAgbGlzdGVuZXIuYnJlYWtwb2ludEFj
dGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb24uaWRlbnRpZmllcik7Ci0gICAgICAgIH0pOwotICAg
ICAgICBicmVhazsKLQotICAgIGNhc2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZTog
ewotICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgSlNPYmpl
Y3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKLSAgICAgICAgSlNWYWx1ZSByZXN1
bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihicmVha3Bv
aW50QWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOwotICAgICAg
ICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkZWJ1Z2dlckNhbGxGcmFtZS5n
bG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJlcG9y
dEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Ci0KLSAgICAgICAgZGlzcGF0Y2hG
dW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsK
LSAgICAgICAgICAgIGxpc3RlbmVyLmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShnbG9iYWxPYmplY3Qs
IGJyZWFrcG9pbnRBY3Rpb24sIG1fY3VycmVudFByb2JlQmF0Y2hJZCwgbV9uZXh0UHJvYmVTYW1w
bGVJZCsrLCBleGNlcHRpb24gPyBleGNlcHRpb24tPnZhbHVlKCkgOiByZXN1bHQpOwotICAgICAg
ICB9KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0
IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIC8vIFByZWVtcHRpdmVseSBjaGVjayB3aGV0
aGVyIHdlIGNhbiBkaXNwYXRjaCBzbyB0aGF0IHdlIGRvbid0IGRvIGFueSB1bm5lY2Vzc2FyeSBh
bGxvY2F0aW9ucy4KLSAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpKQot
ICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZXJyb3JMaW5lICE9IC0xKSB7Ci0gICAgICAgIGF1
dG8gc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgpOwotICAgICAgICBhdXRv
IGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICAgICAgYXV0
byBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVC
YXNlZEludCgpOwotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3Jp
cHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAgbGlzdGVuZXIuZmFpbGVk
VG9QYXJzZVNvdXJjZShzb3VyY2VVUkwsIGRhdGEsIGZpcnN0TGluZSwgZXJyb3JMaW5lLCBlcnJv
ck1lc3NhZ2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpT
Qzo6U291cmNlSUQgc291cmNlSUQgPSBzb3VyY2VQcm92aWRlci0+YXNJRCgpOwotCi0gICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzM+IFdlYiBJbnNwZWN0b3I6IFNpbXBs
aWZ5IFNjcmlwdERlYnVnTGlzdGVuZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJvdmlkZXIKLSAg
ICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2NyaXB0OwotICAgIHNjcmlwdC5zb3VyY2VQ
cm92aWRlciA9IHNvdXJjZVByb3ZpZGVyOwotICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRl
ci0+c291cmNlVVJMKCk7Ci0gICAgc2NyaXB0LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3Vy
Y2UoKS50b1N0cmluZygpOwotICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+
c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKLSAgICBzY3JpcHQuc3RhcnRD
b2x1bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNl
ZEludCgpOwotICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQoZ2xv
YmFsT2JqZWN0KTsKLSAgICBzY3JpcHQuc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJj
ZVVSTERpcmVjdGl2ZSgpOwotICAgIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlUHJv
dmlkZXItPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKTsKLQotICAgIGludCBzb3VyY2VMZW5n
dGggPSBzY3JpcHQuc291cmNlLmxlbmd0aCgpOwotICAgIGludCBsaW5lQ291bnQgPSAxOwotICAg
IGludCBsYXN0TGluZVN0YXJ0ID0gMDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZUxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChzY3JpcHQuc291cmNlW2ldID09ICdcbicpIHsKLSAg
ICAgICAgICAgIGxpbmVDb3VudCArPSAxOwotICAgICAgICAgICAgbGFzdExpbmVTdGFydCA9IGkg
KyAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2NyaXB0LmVuZExpbmUgPSBzY3JpcHQuc3Rh
cnRMaW5lICsgbGluZUNvdW50IC0gMTsKLSAgICBpZiAobGluZUNvdW50ID09IDEpCi0gICAgICAg
IHNjcmlwdC5lbmRDb2x1bW4gPSBzY3JpcHQuc3RhcnRDb2x1bW4gKyBzb3VyY2VMZW5ndGg7Ci0g
ICAgZWxzZQotICAgICAgICBzY3JpcHQuZW5kQ29sdW1uID0gc291cmNlTGVuZ3RoIC0gbGFzdExp
bmVTdGFydDsKLQotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERl
YnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVyLmRpZFBhcnNlU291cmNl
KHNvdXJjZUlELCBzY3JpcHQpOwotICAgIH0pOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVy
Ojp3aWxsUnVuTWljcm90YXNrKCkKLXsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMo
WyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBsaXN0ZW5lci53
aWxsUnVuTWljcm90YXNrKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6
OmRpZFJ1bk1pY3JvdGFzaygpCi17Ci0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsm
XSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIuZGlk
UnVuTWljcm90YXNrKCk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmNh
bkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2FsbGlu
Z0xpc3RlbmVycykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2xpc3RlbmVycy5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEZ1bmN0
aW9uPHZvaWQoU2NyaXB0RGVidWdMaXN0ZW5lciYpPiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIWNh
bkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBT
ZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKLQotICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQotICAgICAg
ICBjYWxsYmFjaygqbGlzdGVuZXIpOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpub3Rp
ZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkKLXsKLSAgICBtX2RvbmVQcm9jZXNzaW5n
RGVidWdnZXJFdmVudHMgPSB0cnVlOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5k
bGVCcmVha3BvaW50SGl0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3Qg
SlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50KQotewotICAgIEFTU0VSVChpc0F0dGFjaGVkKGds
b2JhbE9iamVjdCkpOwotCi0gICAgbV9jdXJyZW50UHJvYmVCYXRjaElkKys7Ci0KLSAgICBhdXRv
IGVudHJ5ID0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZmluZChicmVha3BvaW50LmlkKTsKLSAg
ICBpZiAoZW50cnkgIT0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZW5kKCkpIHsKLSAgICAgICAg
QnJlYWtwb2ludEFjdGlvbnMgYWN0aW9ucyA9IGVudHJ5LT52YWx1ZTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBhY3Rpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAo
IWV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbihhY3Rpb25zW2ldKSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICBpZiAoIWlzQXR0YWNoZWQoZ2xvYmFsT2JqZWN0KSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pIGNvbnN0
Ci17Ci0gICAgcmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKLX0KLQot
dm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlKQotewotICAgIGRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAg
ICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKLSAgICAgICAgYXV0byYgZGVidWdnZXJDYWxsRnJhbWUg
PSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0
ID0gZGVidWdnZXJDYWxsRnJhbWUuc2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGF1
dG8ganNDYWxsRnJhbWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJhbWUpLnB0cigpKTsKLSAgICAgICAg
bGlzdGVuZXIuZGlkUGF1c2UoZ2xvYmFsT2JqZWN0LCBqc0NhbGxGcmFtZSwgZXhjZXB0aW9uT3JD
YXVnaHRWYWx1ZShnbG9iYWxPYmplY3QpKTsKLSAgICB9KTsKLQotICAgIGRpZFBhdXNlKGdsb2Jh
bE9iamVjdCk7Ci0KLSAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSBmYWxzZTsK
LSAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwotCi0gICAgZGlkQ29udGludWUoZ2xvYmFs
T2JqZWN0KTsKLQotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERl
YnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVyLmRpZENvbnRpbnVlKCk7
Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlw
dERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAgIEFTU0VSVChsaXN0ZW5lcik7Ci0KLSAg
ICBib29sIHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0eSgpOwotICAgIG1fbGlzdGVuZXJz
LmFkZChsaXN0ZW5lcik7Ci0KLSAgICAvLyBGaXJzdCBsaXN0ZW5lci4gQXR0YWNoIHRoZSBkZWJ1
Z2dlci4KLSAgICBpZiAod2FzRW1wdHkpCi0gICAgICAgIGF0dGFjaERlYnVnZ2VyKCk7Ci19Ci0K
LXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVu
ZXIqIGxpc3RlbmVyLCBib29sIGlzQmVpbmdEZXN0cm95ZWQpCi17Ci0gICAgQVNTRVJUKGxpc3Rl
bmVyKTsKLQotICAgIG1fbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0KLSAgICAvLyBMYXN0
IGxpc3RlbmVyLiBEZXRhY2ggdGhlIGRlYnVnZ2VyLgotICAgIGlmIChtX2xpc3RlbmVycy5pc0Vt
cHR5KCkpCi0gICAgICAgIGRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOwotfQotCi1K
U0M6OkpTVmFsdWUgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIGlmIChyZWFzb25Gb3JQYXVz
ZSgpID09IFBhdXNlZEZvckV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRFeGNlcHRp
b24oKTsKLQotICAgIGZvciAoUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBmcmFtZSA9ICZjdXJy
ZW50RGVidWdnZXJDYWxsRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPmNhbGxlckZyYW1l
KCkpIHsKLSAgICAgICAgRGVidWdnZXJTY29wZSYgc2NvcGUgPSAqZnJhbWUtPnNjb3BlKCk7Ci0g
ICAgICAgIGlmIChzY29wZS5pc0NhdGNoU2NvcGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzY29w
ZS5jYXVnaHRWYWx1ZShnbG9iYWxPYmplY3QpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAxN2MxMTBkNzRjMTEzM2FiNGZjZjMxZmZjNGIyNTI4MGZlZDkyYmM3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEw
MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0g
KiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQot
ICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICog
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0j
aW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVu
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5o
PgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQ2FsbEZyYW1lOwotY2xhc3MgSlNHbG9iYWxP
YmplY3Q7Ci1jbGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLWNsYXNzIEpT
X0VYUE9SVF9QUklWQVRFIFNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIEpTQzo6RGVidWdnZXIg
ewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsKLSAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLQotICAgIC8vIEZJWE1FOiBNb3ZlIEJyZWFr
cG9pbnRBY3Rpb24gaGFuZGxpbmcgaW50byBKU0M6OkRlYnVnZ2VyIG9yIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQuCi0gICAgdm9pZCBzZXRCcmVha3BvaW50QWN0aW9ucyhKU0M6OkJyZWFrcG9pbnRJ
RCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOwotICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludEFj
dGlvbnMoSlNDOjpCcmVha3BvaW50SUQpOwotICAgIHZvaWQgY2xlYXJCcmVha3BvaW50QWN0aW9u
cygpOwotCi0gICAgY29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIGdldEFjdGlvbnNGb3JCcmVha3Bv
aW50KEpTQzo6QnJlYWtwb2ludElEKTsKLQotICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVi
dWdMaXN0ZW5lciopOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5l
ciosIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCk7Ci0KLXByb3RlY3RlZDoKLSAgICBTY3JpcHREZWJ1
Z1NlcnZlcihKU0M6OlZNJik7Ci0gICAgflNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7Ci0K
LSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgPSAwOwotCi0gICAgdmlydHVh
bCB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0Nv
bnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlv
biopIGNvbnN0ID0gMDsKLQotICAgIGJvb2wgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGNvbnN0
IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mKTsKLQotICAgIGJvb2wgY2FuRGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5l
cnMoRnVuY3Rpb248dm9pZChTY3JpcHREZWJ1Z0xpc3RlbmVyJik+IGNhbGxiYWNrKTsKLQotICAg
IGJvb2wgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzIHsgdHJ1ZSB9OwotCi1wcml2YXRl
OgotICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgQnJlYWtwb2ludEFjdGlv
bnM+IEJyZWFrcG9pbnRJRFRvQWN0aW9uc01hcDsKLQotICAgIHZvaWQgc291cmNlUGFyc2VkKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwg
Y29uc3QgU3RyaW5nJiBlcnJvck1zZykgZmluYWw7Ci0gICAgdm9pZCB3aWxsUnVuTWljcm90YXNr
KCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSBmaW5hbDsKLSAgICB2b2lkIGhh
bmRsZUJyZWFrcG9pbnRIaXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6QnJlYWtw
b2ludCYpIGZpbmFsOwotICAgIHZvaWQgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0
aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwot
ICAgIHZvaWQgaGFuZGxlUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RGVidWdnZXI6
OlJlYXNvbkZvclBhdXNlKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVi
dWdnZXJFdmVudHMoKSBmaW5hbDsKLQotICAgIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdo
dFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLQotICAgIEJyZWFrcG9pbnRJRFRvQWN0aW9u
c01hcCBtX2JyZWFrcG9pbnRJRFRvQWN0aW9uczsKLSAgICBIYXNoU2V0PFNjcmlwdERlYnVnTGlz
dGVuZXIqPiBtX2xpc3RlbmVyczsKLSAgICBib29sIG1fY2FsbGluZ0xpc3RlbmVycyB7IGZhbHNl
IH07Ci0gICAgdW5zaWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJZCB7IDEgfTsKLSAgICB1bnNpZ25l
ZCBtX2N1cnJlbnRQcm9iZUJhdGNoSWQgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBJbnNw
ZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKaW5kZXggYmZkNzc3NGNmM2Q3MzVjZGVh
ZTdlYjE5ZDFhZTQ1MjQxNjVlMzVjNi4uOTdjZWE5NGJkNWFmYWE2NWFlNDAzYTNkMDk1MDUyZWQ3
OTkyOTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTI2LDEwICsyNiwxMCBA
QAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWdlbnQuaCIK
IAorI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNp
bmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1
ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBA
IC0xMDUsOSArMTA1LDkgQEAgdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4oRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRlc3QsIGNvbnMKIAogICAgIE9wdGlvbmFs
PGludD4gc2F2ZWRSZXN1bHRJbmRleDsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IG1fc2NyaXB0
RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOworICAgIGF1dG8gcHJldmlvdXNQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25FeGNlcHRp
b25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAg
bV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERlYnVnZ2VyOjpE
b250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3Rl
ZFNjcmlwdC5leGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlvblN0cmluZy50b1N0cmluZygpLCBX
VEZNb3ZlKG9wdGlvbnMpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JBdWRpdEFnZW50LmgKaW5kZXggODNiY2NhNjI5NzU0OGRlM2Y2ODAxOWRlNWZmNTMx
M2VmNzRhMjY4Yy4uMDZiMWE4M2ZkODIzNTM2MDgwMjY1ZjliOWIyMmYwNjU2OTBjZWM0MSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckF1ZGl0QWdlbnQuaApAQCAtMzIsMTEgKzMyLDE0IEBACiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorbmFtZXNwYWNlIEpT
QyB7CitjbGFzcyBEZWJ1Z2dlcjsKK30KKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNz
IEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2Ny
aXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQXVkaXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBBdWRpdEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CkBAIC03MSw3ICs3
NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVmUHRyPEF1ZGl0QmFja2VuZERpc3Bh
dGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgbV9zY3JpcHRE
ZWJ1Z1NlcnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOwogCiAg
ICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0
VmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAyOWMxMzBi
OTY1Y2EyNjU2NDFjNDBmNzUwOTljZjZlYmQyNjQwMDcyLi4wZmM1MmVkMDVlNDM2Zjk4MjlhNTA0
NjIzMjFjODE4N2NlOGI3YzllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApA
QCAtMzIsMTIgKzMyLDE2IEBACiAKICNpbmNsdWRlICJBc3luY1N0YWNrVHJhY2UuaCIKICNpbmNs
dWRlICJDb250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNp
bmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNp
bmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJKU0phdmFTY3JpcHRD
YWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAi
UmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNs
dWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2
ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVl
cy5oPgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KQEAgLTUwLDkgKzU0LDkgQEAgY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGFjY29y
ZGluZyB0byB0aGUgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllciBhc3NpZ25lZCBieSB0aGUg
ZnJvbnRlbmQuIEEgYnJlYWtwb2ludCBtYXkKIC8vIGhhdmUgc2V2ZXJhbCBvYmplY3QgZ3JvdXBz
LCBhbmQgb2JqZWN0cyBmcm9tIHNldmVyYWwgYmFja2VuZCBicmVha3BvaW50IGFjdGlvbiBpbnN0
YW5jZXMgbWF5CiAvLyBjcmVhdGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBncm91cC4KLXN0YXRpYyBT
dHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb24mIGFjdGlvbikKK3N0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50
QWN0aW9uKEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGlkKQogewotICAgIHJldHVybiBtYWtlU3Ry
aW5nKCJicmVha3BvaW50LWFjdGlvbi0iLCBhY3Rpb24uaWRlbnRpZmllcik7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoImJyZWFrcG9pbnQtYWN0aW9uLSIsIGlkKTsKIH0KIAogc3RhdGljIGJvb2wg
aXNXZWJLaXRJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKQEAgLTYwLDYg
KzY0LDE1NiBAQCBzdGF0aWMgYm9vbCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQogICAgIHJldHVybiBzb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3Rl
ZFNjcmlwdF8iKSAmJiBzb3VyY2VVUkwuZW5kc1dpdGgoIi5qcyIpOwogfQogCitzdGF0aWMgT3B0
aW9uYWw8SlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU+IGJyZWFrcG9pbnRBY3Rpb25UeXBl
Rm9yU3RyaW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlU3Ry
aW5nKQoreworICAgIGF1dG8gdHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3Rvckhl
bHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZT4odHlwZVN0cmluZyk7CisgICAgaWYgKCF0eXBl
KSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBicmVha3BvaW50
IGFjdGlvbiB0eXBlOiAiX3MsIHR5cGVTdHJpbmcpOworICAgICAgICByZXR1cm4gV1RGOjpudWxs
b3B0OworICAgIH0KKworICAgIHN3aXRjaCAoKnR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2c6CisgICAgICAg
IHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6TG9nOworCisgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6RXZh
bHVhdGU6CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6RXZh
bHVhdGU7CisKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50QWN0aW9uOjpUeXBlOjpTb3VuZDoKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6
QWN0aW9uOjpUeXBlOjpTb3VuZDsKKworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2JlOgorICAgICAgICByZXR1cm4gSlND
OjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OlByb2JlOworICAgIH0KKworICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBsYXRlIDx0
eXBlbmFtZSBUPgorc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQsIEZ1bmN0aW9u
PFQoY29uc3QgU3RyaW5nJiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYsIGJvb2ws
IHNpemVfdCk+IGNhbGxiYWNrKQoreworICAgIFN0cmluZyBjb25kaXRpb247CisgICAgSlNDOjpC
cmVha3BvaW50OjpBY3Rpb25zVmVjdG9yIGFjdGlvbnM7CisgICAgYm9vbCBhdXRvQ29udGludWUg
PSBmYWxzZTsKKyAgICBzaXplX3QgaWdub3JlQ291bnQgPSAwOworCisgICAgaWYgKG9wdGlvbnNQ
YXlsb2FkKSB7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5nZXRTdHJpbmcoImNvbmRpdGlvbiJf
cywgY29uZGl0aW9uKTsKKworICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFjdGlvbnNQYXls
b2FkOworICAgICAgICBvcHRpb25zUGF5bG9hZC0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlv
bnNQYXlsb2FkKTsKKyAgICAgICAgaWYgKGF1dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFj
dGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDApIHsKKyAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2
ZUNhcGFjaXR5KGNvdW50KTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBhY3Rp
b25PYmplY3Q7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25zUGF5bG9hZC0+Z2V0KGkpLT5h
c09iamVjdChhY3Rpb25PYmplY3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgU3RyaW5nIGFjdGlvblR5cGVTdHJpbmc7CisgICAgICAgICAgICAgICAgaWYgKCFh
Y3Rpb25PYmplY3QtPmdldFN0cmluZygidHlwZSJfcywgYWN0aW9uVHlwZVN0cmluZykpIHsKKyAg
ICAgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyB0eXBlIGZvciBpdGVtIGlu
IGdpdmVuIGFjdGlvbnMiX3M7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byBhY3Rpb25UeXBlID0gYnJlYWtw
b2ludEFjdGlvblR5cGVGb3JTdHJpbmcoZXJyb3JTdHJpbmcsIGFjdGlvblR5cGVTdHJpbmcpOwor
ICAgICAgICAgICAgICAgIGlmICghYWN0aW9uVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgICAgICAgICAgICAgIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uIGFjdGlv
bigqYWN0aW9uVHlwZSk7CisKKyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3QtPmdldFN0cmlu
ZygiZGF0YSJfcywgYWN0aW9uLmRhdGEpOworCisgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWlu
ZyBhbiBpZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBw
cm9iZSBzYW1wbGVzCisgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBt
dWx0aXBsZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBz
LgorICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcigiaWQiX3MsIGFjdGlv
bi5pZCk7CisKKyAgICAgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGFjdGlvbikp
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3B0aW9uc1BheWxvYWQtPmdl
dEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKKyAgICAgICAgb3B0aW9u
c1BheWxvYWQtPmdldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3VudCk7CisgICAg
fQorCisgICAgcmV0dXJuIGNhbGxiYWNrKGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0
b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9j
b2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6
U291cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKK3sKKyAgICByZXR1cm4g
cGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+PihlcnJv
clN0cmluZywgb3B0aW9uc1BheWxvYWQsIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpT
Qzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVl
LCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4gewor
ICAgICAgICByZXR1cm4gUHJvdG9jb2xCcmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBp
Z25vcmVDb3VudCk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xC
cmVha3BvaW50Ojpmcm9tUGF5bG9hZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0
cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKK3sKKyAgICBy
ZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+
PihlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQsIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRp
b24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0Nv
bnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2lu
dD4geworICAgICAgICByZXR1cm4gUHJvdG9jb2xCcmVha3BvaW50KHVybCwgaXNSZWdleCwgbGlu
ZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9D
b250aW51ZSwgaWdub3JlQ291bnQpOworICAgIH0pOworfQorCitJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJlYWtwb2ludCgpID0gZGVmYXVsdDsK
KworSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50OjpQcm90b2NvbEJy
ZWFrcG9pbnQoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5z
aWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3Bv
aW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBp
Z25vcmVDb3VudCkKKyAgICA6IG1faWQobWFrZVN0cmluZyhzb3VyY2VJRCwgJzonLCBsaW5lTnVt
YmVyLCAnOicsIGNvbHVtbk51bWJlcikpCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAsIG1fc291
cmNlSUQoc291cmNlSUQpCisjZW5kaWYKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQor
ICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQorICAgICwgbV9jb25kaXRpb24oY29u
ZGl0aW9uKQorICAgICwgbV9hY3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgLCBtX2F1dG9D
b250aW51ZShhdXRvQ29udGludWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGlnbm9yZUNvdW50KQor
eworfQorCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3Rv
Y29sQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
LCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250
aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChtYWtlU3RyaW5nKGlzUmVnZXgg
PyAiLyIgOiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi8iIDogIiIsICc6JywgbGluZU51bWJlciwgJzon
LCBjb2x1bW5OdW1iZXIpKQorICAgICwgbV91cmwodXJsKQorICAgICwgbV9pc1JlZ2V4KGlzUmVn
ZXgpCisgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICAsIG1fY29sdW1uTnVtYmVy
KGNvbHVtbk51bWJlcikKKyAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKKyAgICAsIG1fYWN0
aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRvQ29udGludWUoYXV0b0NvbnRpbnVl
KQorICAgICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkKK3sKK30KKworUmVmPEpTQzo6QnJl
YWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50OjpjcmVh
dGVEZWJ1Z2dlckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQgZGVidWdnZXJCcmVha3BvaW50
SUQsIEpTQzo6U291cmNlSUQgc291cmNlSUQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRlYnVnZ2Vy
QnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpOworICAgIEFTU0VSVChzb3VyY2VJ
RCAhPSBKU0M6Om5vU291cmNlSUQpOworICAgIEFTU0VSVChzb3VyY2VJRCA9PSBtX3NvdXJjZUlE
IHx8IG1fc291cmNlSUQgPT0gSlNDOjpub1NvdXJjZUlEKTsKKworICAgIGF1dG8gZGVidWdnZXJC
cmVha3BvaW50ID0gSlNDOjpCcmVha3BvaW50OjpjcmVhdGUoZGVidWdnZXJCcmVha3BvaW50SUQs
IG1fY29uZGl0aW9uLCBjb3B5VG9WZWN0b3IobV9hY3Rpb25zKSwgbV9hdXRvQ29udGludWUsIG1f
aWdub3JlQ291bnQpOworICAgIGRlYnVnZ2VyQnJlYWtwb2ludC0+bGluayhzb3VyY2VJRCwgbV9s
aW5lTnVtYmVyLCBtX2NvbHVtbk51bWJlcik7CisgICAgcmV0dXJuIGRlYnVnZ2VyQnJlYWtwb2lu
dDsKK30KKworYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6
Om1hdGNoZXMoY29uc3QgU3RyaW5nJiBzY3JpcHRVUkwpIGNvbnN0Cit7CisgICAgQVNTRVJUKG1f
c291cmNlSUQgPT0gSlNDOjpub1NvdXJjZUlEKTsKKworICAgIGlmIChtX2lzUmVnZXgpIHsKKyAg
ICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleChtX3VybCk7CisgICAgICAg
IHJldHVybiByZWdleC5tYXRjaChzY3JpcHRVUkwpICE9IC0xOworICAgIH0KKyAgICByZXR1cm4g
bV91cmwgPT0gc2NyaXB0VVJMOworfQorCitSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCit7Cisg
ICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8UmVmUHRyPEpTQzo6QnJlYWtwb2ludD4+
KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgW10gKGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
LCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250
aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KSB7CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9p
bnQ6OmNyZWF0ZShKU0M6Om5vQnJlYWtwb2ludElELCBjb25kaXRpb24sIFdURk1vdmUoYWN0aW9u
cyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOworICAgIH0pOworfQorCiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50Q29udGV4dCYgY29udGV4
dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3MpCiAgICAgLCBtX2Zyb250
ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihjb250
ZXh0LmZyb250ZW5kUm91dGVyKSkKQEAgLTg3LDcgKzI0MSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogCi0gICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5hZGRMaXN0ZW5lcih0aGlzKTsKKyAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5
VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+ZGVidWdnZXJXYXNFbmFi
bGVkKCk7CkBAIC0xMDgsMTUgKzI2MiwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogICAgIGZvciAoYXV0byogbGlzdGVuZXIg
OiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+ZGVidWdnZXJX
YXNEaXNhYmxlZCgpOwogCi0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVMaXN0ZW5lcih0
aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKKyAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZU9i
c2VydmVyKCp0aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKIAogICAgIGNsZWFySW5zcGVjdG9yQnJl
YWtwb2ludFN0YXRlKCk7CiAKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIG1f
c2NyaXB0RGVidWdTZXJ2ZXIuZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAKLSAgICBBU1NFUlQo
bV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuaXNFbXB0eSgpKTsKLQogICAgIGNsZWFyQXN5bmNTdGFj
a1RyYWNlRGF0YSgpOwogCiAgICAgbV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMgPSBmYWxzZTsK
QEAgLTIwNiwxNyArMzU4LDIyIEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZENT
UFZpb2xhdGlvblBhdXNlUmVhc29uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlCiAgICAgcmV0dXJu
IHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOwogfQogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihKU0M6OkJyZWFr
cG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyKQorUmVmUHRyPEpTT046Ok9iamVj
dD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24oSlND
OjpCcmVha3BvaW50SUQgZGVidWdnZXJCcmVha3BvaW50SUQpCiB7Ci0gICAgQVNTRVJUKGRlYnVn
Z2VyQnJlYWtwb2ludElkZW50aWZpZXIgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7Ci0gICAgYXV0
byBpdCA9IG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2lu
dElkZW50aWZpZXIuZmluZChkZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAgICBpZiAo
aXQgPT0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3BvaW50
SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJUKGRl
YnVnZ2VyQnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpOwogCi0gICAgYXV0byBy
ZWFzb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRl
KCkKLSAgICAgICAgLnNldEJyZWFrcG9pbnRJZChpdC0+dmFsdWUpCi0gICAgICAgIC5yZWxlYXNl
KCk7Ci0gICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOworICAgIGZvciAoYXV0byYg
W3Byb3RvY29sQnJlYWtwb2ludElELCBkZWJ1Z2dlckJyZWFrcG9pbnRzXSA6IG1fZGVidWdnZXJC
cmVha3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElEKSB7CisgICAgICAgIGZvciAoYXV0byYg
ZGVidWdnZXJCcmVha3BvaW50IDogZGVidWdnZXJCcmVha3BvaW50cykgeworICAgICAgICAgICAg
aWYgKGRlYnVnZ2VyQnJlYWtwb2ludC0+aWQoKSA9PSBkZWJ1Z2dlckJyZWFrcG9pbnRJRCkgewor
ICAgICAgICAgICAgICAgIGF1dG8gcmVhc29uID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50UGF1c2VSZWFzb246OmNyZWF0ZSgpCisgICAgICAgICAgICAgICAgICAgIC5zZXRCcmVha3Bv
aW50SWQocHJvdG9jb2xCcmVha3BvaW50SUQpCisgICAgICAgICAgICAgICAgICAgIC5yZWxlYXNl
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAK
IFJlZlB0cjxKU09OOjpPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhjZXB0
aW9uUGF1c2VSZWFzb24oSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgSW5qZWN0ZWRTY3Jp
cHQmIGluamVjdGVkU2NyaXB0KQpAQCAtMjM0LDcgKzM5MSw3IEBAIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24oSlND
OjpKU1ZhCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFzc2Vy
dChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMpCkBAIC0y
NTEsNyArNDA4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTY2hlZHVsZUFz
eW5jQ2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAoIW1fYXN5bmNT
dGFja1RyYWNlRGVwdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9zY3JpcHREZWJ1
Z1NlcnZlci5icmVha3BvaW50c0FjdGl2ZSgpKQorICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUo
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNr
ID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGdsb2JhbE9iamVjdCwgbV9hc3luY1N0YWNrVHJhY2VE
ZXB0aCk7CkBAIC0zMzMsMTA3ICs0OTAsMTUgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaWREaXNwYXRjaEFzeW5jQ2FsbCgpCiAgICAgICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMucmVt
b3ZlKGlkZW50aWZpZXIpOwogfQogCi1zdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbGRPYmpl
Y3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwg
aW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIFJlZlB0cjxKU09OOjpB
cnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdleCwgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVk
IGlnbm9yZUNvdW50KQorc3RhdGljIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiBidWlsZERlYnVnZ2VyTG9jYXRpb24oY29uc3QgSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJy
ZWFrcG9pbnQpCiB7Ci0gICAgUmVmPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9IEpT
T046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0U3RyaW5nKCJ1
cmwiX3MsIHVybCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcigibGluZU51bWJl
ciJfcywgbGluZU51bWJlcik7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcigiY29s
dW1uTnVtYmVyIl9zLCBjb2x1bW5OdW1iZXIpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldFN0
cmluZygiY29uZGl0aW9uIl9zLCBjb25kaXRpb24pOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNl
dEJvb2xlYW4oImlzUmVnZXgiX3MsIGlzUmVnZXgpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNl
dEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICBicmVha3BvaW50
T2JqZWN0LT5zZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotCi0gICAg
aWYgKGFjdGlvbnMpCi0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEFycmF5KCJhY3Rpb25z
Il9zLCBhY3Rpb25zKTsKLQotICAgIHJldHVybiBicmVha3BvaW50T2JqZWN0OwotfQotCi1zdGF0
aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRlcm4s
IGJvb2wgaXNSZWdleCkKLXsKLSAgICBpZiAoaXNSZWdleCkgewotICAgICAgICBKU0M6OllhcnI6
OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4pOwotICAgICAgICByZXR1cm4gcmVnZXgu
bWF0Y2godXJsKSAhPSAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwotfQot
Ci1zdGF0aWMgYm9vbCBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhjb25zdCBTdHJpbmcm
IHR5cGVTdHJpbmcsIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlKiBvdXRwdXQpCi17Ci0gICAg
aWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25z
dGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6TG9n
KSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2Nv
bDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVn
Z2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZSkpIHsKLSAgICAgICAgKm91dHB1
dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGU7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKLSAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb25UeXBlU291bmQ7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAo
dHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpQcm9iZSkp
IHsKLSAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotYm9v
bCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpBcnJheT4mIGFjdGlvbnMsIEJy
ZWFrcG9pbnRBY3Rpb25zKiByZXN1bHQpCi17Ci0gICAgaWYgKCFhY3Rpb25zKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLQotICAgIHVuc2lnbmVkIGFjdGlvbnNMZW5ndGggPSBhY3Rpb25zLT5sZW5n
dGgoKTsKLSAgICBpZiAoIWFjdGlvbnNMZW5ndGgpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgcmVzdWx0LT5yZXNlcnZlQ2FwYWNpdHkoYWN0aW9uc0xlbmd0aCk7Ci0gICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGFjdGlvbnNMZW5ndGg7ICsraSkgewotICAgICAgICBSZWZQdHI8SlNP
Tjo6VmFsdWU+IHZhbHVlID0gYWN0aW9ucy0+Z2V0KGkpOwotICAgICAgICBSZWZQdHI8SlNPTjo6
T2JqZWN0PiBvYmplY3Q7Ci0gICAgICAgIGlmICghdmFsdWUtPmFzT2JqZWN0KG9iamVjdCkpIHsK
LSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVtIGlu
IGdpdmVuIGFjdGlvbnMiX3M7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
LQotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZzsKLSAgICAgICAgaWYgKCFvYmplY3QtPmdldFN0
cmluZygidHlwZSJfcywgdHlwZVN0cmluZykpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0g
Ik1pc3NpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOwotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludEFjdGlv
blR5cGUgdHlwZTsKLSAgICAgICAgaWYgKCFicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyh0
eXBlU3RyaW5nLCAmdHlwZSkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vbi1zdHJp
bmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOwotICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBpZGVudGlmaWVy
IGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBzYW1wbGVzCi0g
ICAgICAgIC8vIGluIHRoZSBmcm9udGVuZCBhY3Jvc3MgbXVsdGlwbGUgYmFja2VuZCBwcm9iZSBh
Y3Rpb25zIGFuZCBzZWdyZWdhdGUgb2JqZWN0IGdyb3Vwcy4KLSAgICAgICAgaW50IGlkZW50aWZp
ZXIgPSAwOwotICAgICAgICBvYmplY3QtPmdldEludGVnZXIoImlkIl9zLCBpZGVudGlmaWVyKTsK
LQotICAgICAgICBTdHJpbmcgZGF0YTsKLSAgICAgICAgb2JqZWN0LT5nZXRTdHJpbmcoImRhdGEi
X3MsIGRhdGEpOwotCi0gICAgICAgIHJlc3VsdC0+YXBwZW5kKFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24odHlwZSwgaWRlbnRpZmllciwgZGF0YSkpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCi1zdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCi17Ci0gICAg
QVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2ZWQpOworICAgIEFTU0VSVChkZWJ1Z2dlckJyZWFrcG9p
bnQuaXNSZXNvbHZlZCgpKTsKIAogICAgIGF1dG8gbG9jYXRpb24gPSBQcm90b2NvbDo6RGVidWdn
ZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQotICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpudW1i
ZXIoYnJlYWtwb2ludC5zb3VyY2VJRCkpCi0gICAgICAgIC5zZXRMaW5lTnVtYmVyKGJyZWFrcG9p
bnQubGluZSkKKyAgICAgICAgLnNldFNjcmlwdElkKFN0cmluZzo6bnVtYmVyKGRlYnVnZ2VyQnJl
YWtwb2ludC5zb3VyY2VJRCgpKSkKKyAgICAgICAgLnNldExpbmVOdW1iZXIoZGVidWdnZXJCcmVh
a3BvaW50LmxpbmVOdW1iZXIoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICBsb2NhdGlvbi0+
c2V0Q29sdW1uTnVtYmVyKGJyZWFrcG9pbnQuY29sdW1uKTsKKyAgICBsb2NhdGlvbi0+c2V0Q29s
dW1uTnVtYmVyKGRlYnVnZ2VyQnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSk7CiAKICAgICByZXR1
cm4gbG9jYXRpb247CiB9CkBAIC00NTksNjggKzUyNCw0OCBAQCBzdGF0aWMgYm9vbCBwYXJzZUxv
Y2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2Nh
dGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9p
bnRJZGVudGlmaWVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJl
YWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNv
bnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwg
Y29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9p
bnRJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+
JiBvdXRMb2NhdGlvbnMpCiB7Ci0gICAgbG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2Nv
bDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9
PSAhb3B0aW9uYWxVUkxSZWdleCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJFaXRoZXIgdXJs
IG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkIl9zOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU3RyaW5nIHVybCA9IG9wdGlvbmFsVVJMID8gKm9wdGlvbmFsVVJMIDogKm9wdGlv
bmFsVVJMUmVnZXg7Ci0gICAgaW50IGNvbHVtbk51bWJlciA9IG9wdGlvbmFsQ29sdW1uTnVtYmVy
ID8gKm9wdGlvbmFsQ29sdW1uTnVtYmVyIDogMDsKLSAgICBib29sIGlzUmVnZXggPSBvcHRpb25h
bFVSTFJlZ2V4OworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3Bv
aW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uYWxVUkwgPyAqb3B0aW9uYWxVUkwg
OiAqb3B0aW9uYWxVUkxSZWdleCwgISFvcHRpb25hbFVSTFJlZ2V4LCBsaW5lTnVtYmVyLCBvcHRp
b25hbENvbHVtbk51bWJlciA/ICpvcHRpb25hbENvbHVtbk51bWJlciA6IDAsIG9wdGlvbnNQYXls
b2FkKTsKKyAgICBpZiAoIXByb3RvY29sQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOwogCi0g
ICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVyID0gbWFrZVN0cmluZyhpc1JlZ2V4ID8gIi8i
IDogIiIsIHVybCwgaXNSZWdleCA/ICIvOiIgOiAiOiIsIGxpbmVOdW1iZXIsICc6JywgY29sdW1u
TnVtYmVyKTsKLSAgICBpZiAobV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY29udGFpbnMoYnJlYWtw
b2ludElkZW50aWZpZXIpKSB7CisgICAgaWYgKG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9j
b2xCcmVha3BvaW50SUQuY29udGFpbnMocHJvdG9jb2xCcmVha3BvaW50LT5pZCgpKSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5
IGV4aXN0cy4iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29uZGl0
aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlOwotICAg
IHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsKLSAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFjdGlv
bnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgb3B0aW9ucy0+Z2V0U3RyaW5nKCJjb25k
aXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgICAgIG9wdGlvbnMtPmdldEJvb2xlYW4oImF1dG9D
b250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0QXJyYXkoImFj
dGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBvcHRpb25zLT5nZXRJbnRlZ2VyKCJpZ25vcmVD
b3VudCJfcywgaWdub3JlQ291bnQpOwotICAgIH0KKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZv
clByb3RvY29sQnJlYWtwb2ludElELnNldChwcm90b2NvbEJyZWFrcG9pbnQtPmlkKCksICpwcm90
b2NvbEJyZWFrcG9pbnQpOwogCi0gICAgQnJlYWtwb2ludEFjdGlvbnMgYnJlYWtwb2ludEFjdGlv
bnM7Ci0gICAgaWYgKCFicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChlcnJvclN0cmluZywg
YWN0aW9ucywgJmJyZWFrcG9pbnRBY3Rpb25zKSkKLSAgICAgICAgcmV0dXJuOworICAgIG91dExv
Y2F0aW9ucyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46OmNy
ZWF0ZSgpOwogCi0gICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuc2V0KGJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUodXJsLCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYWN0aW9ucywgaXNSZWdleCwgYXV0b0NvbnRpbnVlLCBp
Z25vcmVDb3VudCkpOwotCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fc2NyaXB0cykgewotICAg
ICAgICBTY3JpcHQmIHNjcmlwdCA9IGVudHJ5LnZhbHVlOworICAgIGZvciAoYXV0byYgW3NvdXJj
ZUlELCBzY3JpcHRdIDogbV9zY3JpcHRzKSB7CiAgICAgICAgIFN0cmluZyBzY3JpcHRVUkxGb3JC
cmVha3BvaW50cyA9ICFzY3JpcHQuc291cmNlVVJMLmlzRW1wdHkoKSA/IHNjcmlwdC5zb3VyY2VV
UkwgOiBzY3JpcHQudXJsOwotICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtw
b2ludHMsIHVybCwgaXNSZWdleCkpCisgICAgICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50LT5t
YXRjaGVzKHNjcmlwdFVSTEZvckJyZWFrcG9pbnRzKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBlbnRyeS5rZXk7Ci0gICAgICAgIEpT
Qzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgICAgIHJlc29s
dmVCcmVha3BvaW50KHNjcmlwdCwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICghYnJlYWtwb2lu
dC5yZXNvbHZlZCkKKyAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnQgPSBwcm90b2NvbEJy
ZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFrcG9p
bnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICAgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3Jp
cHQsIGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBib29sIGV4aXN0aW5nOwotICAgICAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0
aW5nKTsKLSAgICAgICAgaWYgKGV4aXN0aW5nKQorICAgICAgICBpZiAoIXNldEJyZWFrcG9pbnQo
ZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFNj
cmlwdEJyZWFrcG9pbnQgc2NyaXB0QnJlYWtwb2ludChicmVha3BvaW50LmxpbmUsIGJyZWFrcG9p
bnQuY29sdW1uLCBjb25kaXRpb24sIGJyZWFrcG9pbnRBY3Rpb25zLCBhdXRvQ29udGludWUsIGln
bm9yZUNvdW50KTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2ludChicmVha3BvaW50LCBicmVha3Bv
aW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGRpZFNldEJyZWFrcG9p
bnQoKnByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsKIAotICAgICAgICBs
b2NhdGlvbnMtPmFkZEl0ZW0oYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGJyZWFrcG9pbnQpKTsKKyAg
ICAgICAgb3V0TG9jYXRpb25zLT5hZGRJdGVtKGJ1aWxkRGVidWdnZXJMb2NhdGlvbihkZWJ1Z2dl
ckJyZWFrcG9pbnQpKTsKICAgICB9CiAKLSAgICAqb3V0QnJlYWtwb2ludElkZW50aWZpZXIgPSBi
cmVha3BvaW50SWRlbnRpZmllcjsKKyAgICAqb3V0QnJlYWtwb2ludElkID0gcHJvdG9jb2xCcmVh
a3BvaW50LT5pZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpPYmplY3QmIGxvY2F0
aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPFByb3RvY29sOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046
Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQsIFBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWQsIFJlZlB0cjxQ
cm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgb3V0QWN0dWFsTG9jYXRpb24pCiB7CiAgICAg
SlNDOjpTb3VyY2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwpAQCAtNTI4
LDkxICs1NzMsNzMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjoKICAgICBpZiAoIXBhcnNlTG9j
YXRpb24oZXJyb3JTdHJpbmcsIGxvY2F0aW9uLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1u
TnVtYmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGNvbmRpdGlvbiA9IGVtcHR5
U3RyaW5nKCk7Ci0gICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBp
Z25vcmVDb3VudCA9IDA7Ci0gICAgUmVmUHRyPEpTT046OkFycmF5PiBhY3Rpb25zOwotICAgIGlm
IChvcHRpb25zKSB7Ci0gICAgICAgIG9wdGlvbnMtPmdldFN0cmluZygiY29uZGl0aW9uIl9zLCBj
b25kaXRpb24pOwotICAgICAgICBvcHRpb25zLT5nZXRCb29sZWFuKCJhdXRvQ29udGludWUiX3Ms
IGF1dG9Db250aW51ZSk7Ci0gICAgICAgIG9wdGlvbnMtPmdldEFycmF5KCJhY3Rpb25zIl9zLCBh
Y3Rpb25zKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0SW50ZWdlcigiaWdub3JlQ291bnQiX3MsIGln
bm9yZUNvdW50KTsKLSAgICB9Ci0KLSAgICBCcmVha3BvaW50QWN0aW9ucyBicmVha3BvaW50QWN0
aW9uczsKLSAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVycm9yU3RyaW5n
LCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQotICAgICAgICByZXR1cm47Ci0KICAgICBh
dXRvIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQpOwogICAgIGlmIChz
Y3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTWlzc2luZyBzY3JpcHQgZm9yIHNjcmlwdElkIGluIGdpdmVuIGxvY2F0aW9uIl9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0JiBzY3JpcHQgPSBzY3JpcHRJdGVyYXRv
ci0+dmFsdWU7Ci0gICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50
KTsKLSAgICByZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGJyZWFrcG9pbnQpOwotICAgIGlmICgh
YnJlYWtwb2ludC5yZXNvbHZlZCkgeworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJv
dG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgc291cmNlSUQsIGxpbmVO
dW1iZXIsIGNvbHVtbk51bWJlciwgb3B0aW9uc1BheWxvYWQpOworICAgIGlmICghcHJvdG9jb2xC
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBzYXZlIGBwcm90b2Nv
bEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2lu
dElEYCBiZWNhdXNlIGl0CisgICAgLy8gd2FzIHNldCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBnaXZl
biBgc291cmNlSURgLCB3aGljaCBpcyB1bmlxdWUsIG1lYW5pbmcgdGhhdCBpdCB3aWxsIG5ldmVy
CisgICAgLy8gYmUgdXNlZCBpbnNpZGUgYEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNl
U291cmNlYC4KKworICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xCcmVha3Bv
aW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQr
Kywgc291cmNlSUQpOworCisgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHRJdGVyYXRv
ci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAi
Q291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlz
dGluZyk7Ci0gICAgaWYgKGV4aXN0aW5nKSB7CisgICAgaWYgKCFzZXRCcmVha3BvaW50KGRlYnVn
Z2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3Ig
Z2l2ZW4gbG9jYXRpb24gYWxyZWFkeSBleGlzdHMiX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBtYWtlU3RyaW5nKHNvdXJjZUlE
LCAnOicsIGJyZWFrcG9pbnQubGluZSwgJzonLCBicmVha3BvaW50LmNvbHVtbik7Ci0gICAgU2Ny
aXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50KGJyZWFrcG9pbnQubGluZSwgYnJlYWtwb2lu
dC5jb2x1bW4sIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlvbnMsIGF1dG9Db250aW51ZSwgaWdu
b3JlQ291bnQpOwotICAgIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgYnJlYWtwb2ludElk
ZW50aWZpZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIGRpZFNldEJyZWFrcG9pbnQoKnByb3Rv
Y29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsKIAotICAgIGFjdHVhbExvY2F0aW9u
ID0gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGJyZWFrcG9pbnQpOwotICAgICpvdXRCcmVha3BvaW50
SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOworICAgIG91dEFjdHVhbExvY2F0aW9u
ID0gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGRlYnVnZ2VyQnJlYWtwb2ludCk7CisgICAgKm91dEJy
ZWFrcG9pbnRJZCA9IHByb3RvY29sQnJlYWtwb2ludC0+aWQoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KGNvbnN0IEpTQzo6QnJlYWtwb2ludCYg
YnJlYWtwb2ludCwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllciwgY29uc3QgU2Ny
aXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6ZGlkU2V0QnJlYWtwb2ludChQcm90b2NvbEJyZWFrcG9pbnQmIHByb3RvY29sQnJlYWtw
b2ludCwgSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7Ci0gICAgSlNDOjpC
cmVha3BvaW50SUQgaWQgPSBicmVha3BvaW50LmlkOwotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIu
c2V0QnJlYWtwb2ludEFjdGlvbnMoaWQsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIEFTU0VSVChw
cm90b2NvbEJyZWFrcG9pbnQuaWQoKSAhPSBKU0M6Om5vU291cmNlSUQpOwogCi0gICAgYXV0byBk
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkZW50aWZpZXJU
b0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5maW5kKGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAg
ICBpZiAoZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3IgPT0gbV9icmVha3BvaW50SWRl
bnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmVuZCgpKQotICAgICAgICBkZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvciA9IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVn
U2VydmVyQnJlYWtwb2ludElEcy5zZXQoYnJlYWtwb2ludElkZW50aWZpZXIsIFZlY3RvcjxKU0M6
OkJyZWFrcG9pbnRJRD4oKSkuaXRlcmF0b3I7Ci0gICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURz
SXRlcmF0b3ItPnZhbHVlLmFwcGVuZChpZCk7CisgICAgYXV0byYgZGVidWdnZXJCcmVha3BvaW50
cyA9IG1fZGVidWdnZXJCcmVha3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELmVuc3VyZShw
cm90b2NvbEJyZWFrcG9pbnQuaWQoKSwgW10geworICAgICAgICByZXR1cm4gSlNDOjpCcmVha3Bv
aW50c1ZlY3RvcigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIG1fZGVidWdnZXJC
cmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZpZXIuc2V0KGlk
LCBicmVha3BvaW50SWRlbnRpZmllcik7CisgICAgZGVidWdnZXJCcmVha3BvaW50cy5hcHBlbmQo
ZGVidWdnZXJCcmVha3BvaW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpy
ZXNvbHZlQnJlYWtwb2ludChjb25zdCBTY3JpcHQmIHNjcmlwdCwgSlNDOjpCcmVha3BvaW50JiBi
cmVha3BvaW50KQorYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2lu
dChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmIHNjcmlwdCwgSlNDOjpCcmVha3BvaW50JiBk
ZWJ1Z2dlckJyZWFrcG9pbnQpCiB7Ci0gICAgaWYgKGJyZWFrcG9pbnQubGluZSA8IHN0YXRpY19j
YXN0PHVuc2lnbmVkPihzY3JpcHQuc3RhcnRMaW5lKSB8fCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
c2NyaXB0LmVuZExpbmUpIDwgYnJlYWtwb2ludC5saW5lKQotICAgICAgICByZXR1cm47CisgICAg
aWYgKGRlYnVnZ2VyQnJlYWtwb2ludC5saW5lTnVtYmVyKCkgPCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2NyaXB0LnN0YXJ0TGluZSkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5lbmRM
aW5lKSA8IGRlYnVnZ2VyQnJlYWtwb2ludC5saW5lTnVtYmVyKCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVzb2x2ZUJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICByZXR1cm4gbV9zY3JpcHRE
ZWJ1Z1NlcnZlci5yZXNvbHZlQnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQsIHNjcmlwdC5z
b3VyY2VQcm92aWRlci5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIGJvb2wmIGV4aXN0aW5n
KQorYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtw
b2ludCYgZGVidWdnZXJCcmVha3BvaW50KQogewogICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tl
cihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOwotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0
QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7CisgICAgcmV0dXJuIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIuc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpOwogfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCYgcHJvdG9jb2xCcmVha3BvaW50SUQpCiB7Ci0g
ICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnRJZGVudGlmaWVyKTsK
KyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElELnJlbW92ZShw
cm90b2NvbEJyZWFrcG9pbnRJRCk7CiAKLSAgICBmb3IgKEpTQzo6QnJlYWtwb2ludElEIGJyZWFr
cG9pbnRJRCA6IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElE
cy50YWtlKGJyZWFrcG9pbnRJZGVudGlmaWVyKSkgewotICAgICAgICBtX2RlYnVnZ2VyQnJlYWtw
b2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLnJlbW92ZShicmVh
a3BvaW50SUQpOwotCi0gICAgICAgIGNvbnN0IEJyZWFrcG9pbnRBY3Rpb25zJiBicmVha3BvaW50
QWN0aW9ucyA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIuZ2V0QWN0aW9uc0ZvckJyZWFrcG9pbnQoYnJl
YWtwb2ludElEKTsKLSAgICAgICAgZm9yIChhdXRvJiBhY3Rpb24gOiBicmVha3BvaW50QWN0aW9u
cykKLSAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVhc2VPYmplY3RHcm91
cChvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7CisgICAgZm9yIChhdXRv
JiBkZWJ1Z2dlckJyZWFrcG9pbnQgOiBtX2RlYnVnZ2VyQnJlYWtwb2ludHNGb3JQcm90b2NvbEJy
ZWFrcG9pbnRJRC50YWtlKHByb3RvY29sQnJlYWtwb2ludElEKSkgeworICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGFjdGlvbiA6IGRlYnVnZ2VyQnJlYWtwb2ludC0+YWN0aW9ucygpKQorICAgICAg
ICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVsZWFzZU9iamVjdEdyb3VwKG9iamVjdEdy
b3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24uaWQpKTsKIAogICAgICAgICBKU0M6OkpTTG9j
a0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKLSAgICAgICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50QWN0aW9ucyhicmVha3BvaW50SUQpOwotICAg
ICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludElEKTsK
KyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50KGRlYnVnZ2VyQnJl
YWtwb2ludCk7CiAgICAgfQogfQogCkBAIC02MzMsOSArNjYwLDkgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdAogICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9yU3RyaW5nKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEICE9IEpTQzo6
bm9CcmVha3BvaW50SUQpIHsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVh
a3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKLSAgICAgICAgbV9jb250
aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIGlm
IChtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgeworICAgICAgICBtX3Nj
cmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVi
dWdnZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJy
ZWFrcG9pbnQgPSBudWxscHRyOwogICAgIH0KIAogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7
CkBAIC02NTIsMjIgKzY3OSwyMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRp
bnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIGJvb2wgYXV0b0NvbnRp
bnVlID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgPSAwOwotICAgIEpTQzo6QnJl
YWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNv
bmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgU2NyaXB0JiBzY3JpcHQg
PSBzY3JpcHRJdGVyYXRvci0+dmFsdWU7Ci0gICAgcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBi
cmVha3BvaW50KTsKLSAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2ZWQpIHsKKyAgICBhdXRvIHBy
b3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBheWxvYWQoZXJyb3JT
dHJpbmcsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOworICAgIGlmICghcHJv
dG9jb2xCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBzYXZlIGBw
cm90b2NvbEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJl
YWtwb2ludElEYCBiZWNhdXNlIGl0CisgICAgLy8gaXMgYSB0ZW1wb3JhcnkgYnJlYWtwb2ludCB0
aGF0IHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGBsb2NhdGlvbmAgaXMgcmVhY2hlZC4KKwor
ICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xCcmVha3BvaW50LT5jcmVhdGVE
ZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQrKywgc291cmNlSUQp
OworCisgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHRJdGVyYXRvci0+dmFsdWUsIGRl
YnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51
ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgc2V0QnJlYWtw
b2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgaWYgKGV4aXN0aW5nKSB7CisgICAgaWYg
KCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgLy8gVGhlcmUg
aXMgYW4gZXhpc3RpbmcgYnJlYWtwb2ludCBhdCB0aGlzIGxvY2F0aW9uLiBJbnN0ZWFkIG9mCiAg
ICAgICAgIC8vIGFjdGluZyBsaWtlIGEgc2VyaWVzIG9mIHN0ZXBzLCBqdXN0IHJlc3VtZSBhbmQg
d2Ugd2lsbCBlaXRoZXIKICAgICAgICAgLy8gaGl0IHRoaXMgbmV3IGJyZWFrcG9pbnQgb3Igbm90
LgpAQCAtNjc2LDcgKzcwNCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGlu
dWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEID0gYnJl
YWtwb2ludC5pZDsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9
IFdURk1vdmUoZGVidWdnZXJCcmVha3BvaW50KTsKIAogICAgIC8vIFRyZWF0IHRoaXMgYXMgYSBz
ZXJpZXMgb2Ygc3RlcHMgdW50aWwgcmVhY2hpbmcgdGhlIG5ldyBicmVha3BvaW50LgogICAgIC8v
IFNvIGRvbid0IGlzc3VlIGEgcmVzdW1lZCBldmVudCB1bmxlc3Mgd2UgZXhpdCB0aGUgVk0gd2l0
aG91dCBwYXVzaW5nLgpAQCAtNzE5LDcgKzc0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QK
ICAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkRldGFpbHMoZXJyb3JTdHJpbmcsIGZ1bmN0
aW9uSWQsIGRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVk
dWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
biByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3ZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb24gcmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEp
CiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkKQogICAgICAgICByZXR1cm47
CkBAIC03MjksMTAgKzc1NywxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVk
dWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3BhdAogICAgIHVwZGF0
ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24sIFdURk1vdmUoZGF0YSkpOwogCiAgICAgSlNDOjpK
U0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudCh0cnVlKTsKKyAgICBtX3Njcmlw
dERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogfQogCi12b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCkKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgp
CiB7CiAgICAgaWYgKCFtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJu
OwpAQCAtNzQwLDEzICs3NjgsMzMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5j
ZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQg
PSBmYWxzZTsKIAogICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7Ci0gICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudChmYWxzZSk7CisgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5jYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgbV9lbmFibGVQYXVzZVdo
ZW5JZGxlID0gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1
bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2ludCwg
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpP
YmplY3Q+JiYgZGF0YSkKK3sKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHRE
ZWJ1Z1NlcnZlci52bSgpKTsKKworICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5zY2hlZHVs
ZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24sIFdURk1vdmUoZGF0
YSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiBicmVha3Bv
aW50KQoreworICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5jYW5jZWxQYXVzZUZvclNwZWNp
YWxCcmVha3BvaW50KGJyZWFrcG9pbnQpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBj
bGVhclBhdXNlRGV0YWlscygpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nJikKIHsKLSAgICBzY2hlZHVsZVBhdXNl
T25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OlBhdXNl
T25OZXh0U3RhdGVtZW50LCBudWxscHRyKTsKKyAgICBzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0
dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6UGF1c2VPbk5leHRTdGF0
ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcpCkBAIC03NTYsNyArODA0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICBjYW5j
ZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250
aW51ZVByb2dyYW0oKTsKICAgICBtX2NvbmRpdGlvblRvRGlzcGF0Y2hSZXN1bWVkID0gU2hvdWxk
RGlzcGF0Y2hSZXN1bWVkOjpXaGVuQ29udGludWVkOwogfQpAQCAtODIyLDcgKzg3MCw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRsZSgpCiAgICAgbV9yZWdpc3Rl
cmVkSWRsZUNhbGxiYWNrID0gZmFsc2U7CiAKICAgICBpZiAobV9jb25kaXRpb25Ub0Rpc3BhdGNo
UmVzdW1lZCA9PSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5JZGxlKSB7Ci0gICAgICAgIGNh
bmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bw
b3J0dW5pdHkoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0o
KTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsKICAgICB9CkBAIC05
NTgsNyArMTAwNiw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6Q2Fs
bEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVuCiAgICAgcmV0dXJuIGluamVj
dGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjay5nZXQoKSk7CiB9CiAK
LVN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29u
c3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c291cmNl
TWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYgc2NyaXB0KQogewog
ICAgIHJldHVybiBzY3JpcHQuc291cmNlTWFwcGluZ1VSTDsKIH0KQEAgLTk3OCw3ICsxMDI2LDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZUZvckludGVybmFsU2NyaXB0
cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdWwKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3Qg
U2NyaXB0JiBzY3JpcHQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291
cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYg
c2NyaXB0KQogewogICAgIFN0cmluZyBzY3JpcHRJRFN0ciA9IFN0cmluZzo6bnVtYmVyKHNvdXJj
ZUlEKTsKICAgICBib29sIGhhc1NvdXJjZVVSTCA9ICFzY3JpcHQuc291cmNlVVJMLmlzRW1wdHko
KTsKQEAgLTEwMDQsNDQgKzEwNTIsMjEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQKICAgICBp
ZiAoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMpIHsKLSAgICAg
ICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9IGVudHJ5LnZhbHVlOwot
Ci0gICAgICAgIGJvb2wgaXNSZWdleDsKLSAgICAgICAgU3RyaW5nIHVybDsKLSAgICAgICAgYnJl
YWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbigiaXNSZWdleCJfcywgaXNSZWdleCk7Ci0gICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygidXJsIl9zLCB1cmwpOwotICAgICAgICBpZiAo
IW1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMsIHVybCwgaXNSZWdleCkpCisgICAgZm9y
IChhdXRvJiBwcm90b2NvbEJyZWFrcG9pbnQgOiBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3Rv
Y29sQnJlYWtwb2ludElELnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcHJvdG9jb2xCcmVha3Bv
aW50Lm1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50OwotICAgICAg
ICBicmVha3BvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKCJsaW5lTnVtYmVyIl9zLCBzY3JpcHRCcmVh
a3BvaW50LmxpbmVOdW1iZXIpOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRJbnRlZ2Vy
KCJjb2x1bW5OdW1iZXIiX3MsIHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKTsKLSAgICAg
ICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIHNjcmlwdEJyZWFr
cG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbigi
YXV0b0NvbnRpbnVlIl9zLCBzY3JpcHRCcmVha3BvaW50LmF1dG9Db250aW51ZSk7Ci0gICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBzY3JpcHRCcmVh
a3BvaW50Lmlnbm9yZUNvdW50KTsKLSAgICAgICAgRXJyb3JTdHJpbmcgZXJyb3JTdHJpbmc7Ci0g
ICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYWN0aW9uczsKLSAgICAgICAgYnJlYWtwb2ludE9i
amVjdC0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBpZiAoIWJyZWFr
cG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVycm9yU3RyaW5nLCBhY3Rpb25zLCAmc2NyaXB0QnJl
YWtwb2ludC5hY3Rpb25zKSkgewotICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0g
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICBhdXRvIGRlYnVnZ2VyQnJl
YWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9u
ZXh0RGVidWdnZXJCcmVha3BvaW50SUQrKywgc291cmNlSUQpOwogCi0gICAgICAgIEpTQzo6QnJl
YWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIs
IHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyLCBzY3JpcHRCcmVha3BvaW50LmNvbmRpdGlv
biwgc2NyaXB0QnJlYWtwb2ludC5hdXRvQ29udGludWUsIHNjcmlwdEJyZWFrcG9pbnQuaWdub3Jl
Q291bnQpOwotICAgICAgICByZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGJyZWFrcG9pbnQpOwot
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2ZWQpCisgICAgICAgIGlmICghcmVzb2x2ZUJy
ZWFrcG9pbnQoc2NyaXB0LCBkZWJ1Z2dlckJyZWFrcG9pbnQpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgYm9vbCBleGlzdGluZzsKLSAgICAgICAgc2V0QnJlYWtwb2ludChicmVh
a3BvaW50LCBleGlzdGluZyk7Ci0gICAgICAgIGlmIChleGlzdGluZykKKyAgICAgICAgaWYgKCFz
ZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
IAotICAgICAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBlbnRyeS5rZXk7Ci0gICAg
ICAgIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgYnJlYWtwb2ludElkZW50aWZpZXIsIHNj
cmlwdEJyZWFrcG9pbnQpOworICAgICAgICBkaWRTZXRCcmVha3BvaW50KHByb3RvY29sQnJlYWtw
b2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsKIAotICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hl
ci0+YnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJZGVudGlmaWVyLCBidWlsZERlYnVnZ2Vy
TG9jYXRpb24oYnJlYWtwb2ludCkpOworICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YnJl
YWtwb2ludFJlc29sdmVkKHByb3RvY29sQnJlYWtwb2ludC5pZCgpLCBidWlsZERlYnVnZ2VyTG9j
YXRpb24oZGVidWdnZXJCcmVha3BvaW50KSk7CiAgICAgfQogfQogCkBAIC0xMDUyLDM2ICsxMDc3
LDM4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZmFpbGVkVG9QYXJzZVNvdXJjZShj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6d2lsbFJ1bk1pY3JvdGFzaygpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAgc2No
ZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpNaWNyb3Rhc2ssIG51bGxwdHIpOworICAgICAgICBzY2hlZHVsZVBhdXNlQXROZXh0T3Bw
b3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6TWljcm90YXNrKTsK
IH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRSdW5NaWNyb3Rhc2soKQogewot
ICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5icmVha3BvaW50c0FjdGl2ZSgpKQorICAgIGlm
ICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fcGF1
c2VPbk1pY3JvdGFza3MpCi0gICAgICAgIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7Cisg
ICAgICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKIH0KIAotdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVn
aHRWYWx1ZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dl
ckNhbGxGcmFtZSwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUpCiB7CiAgICAg
QVNTRVJUKCFtX3BhdXNlZEdsb2JhbE9iamVjdCk7CiAgICAgbV9wYXVzZWRHbG9iYWxPYmplY3Qg
PSBnbG9iYWxPYmplY3Q7Ci0gICAgbV9jdXJyZW50Q2FsbFN0YWNrID0geyBnbG9iYWxPYmplY3Qt
PnZtKCksIGNhbGxGcmFtZXMgfTsKIAotICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0
ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3IoZ2xvYmFsT2JqZWN0
KTsKKyAgICBhdXRvKiBkZWJ1Z2dlckdsb2JhbE9iamVjdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLnNj
b3BlKCktPmdsb2JhbE9iamVjdCgpOworICAgIG1fY3VycmVudENhbGxTdGFjayA9IHsgbV9wYXVz
ZWRHbG9iYWxPYmplY3QtPnZtKCksIHRvSlMoZGVidWdnZXJHbG9iYWxPYmplY3QsIGRlYnVnZ2Vy
R2xvYmFsT2JqZWN0LCBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJh
bWUpLnB0cigpKSB9OworCisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZEdsb2JhbE9iamVj
dCk7CiAKICAgICAvLyBJZiBhIGhpZ2ggbGV2ZWwgcGF1c2UgcGF1c2UgcmVhc29uIGlzIG5vdCBh
bHJlYWR5IHNldCwgdHJ5IHRvIGluZmVyIGEgcmVhc29uIGZyb20gdGhlIGRlYnVnZ2VyLgogICAg
IGlmIChtX3BhdXNlUmVhc29uID09IERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
Ok90aGVyKSB7CiAgICAgICAgIHN3aXRjaCAobV9zY3JpcHREZWJ1Z1NlcnZlci5yZWFzb25Gb3JQ
YXVzZSgpKSB7CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dlcjo6UGF1c2VkRm9yQnJlYWtwb2lu
dDogewogICAgICAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnRJZCA9IG1fc2NyaXB0RGVi
dWdTZXJ2ZXIucGF1c2luZ0JyZWFrcG9pbnRJRCgpOwotICAgICAgICAgICAgaWYgKGRlYnVnZ2Vy
QnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKQorICAgICAg
ICAgICAgaWYgKCFtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCB8fCBkZWJ1
Z2dlckJyZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2lu
dC0+aWQoKSkKICAgICAgICAgICAgICAgICB1cGRhdGVQYXVzZVJlYXNvbkFuZERhdGEoRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtwb2ludCwgYnVpbGRCcmVha3BvaW50
UGF1c2VSZWFzb24oZGVidWdnZXJCcmVha3BvaW50SWQpKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CkBAIC0xMTE5LDcgKzExNDYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKUwog
CiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGRhdGE7CiAgICAgICAgIGlmIChhdXRvIGRl
YnVnZ2VyQnJlYWtwb2ludElkID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzaW5nQnJlYWtwb2lu
dElEKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChkZWJ1Z2dlckJyZWFrcG9pbnRJZCAhPSBtX2Nv
bnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7CisgICAgICAgICAgICBBU1NFUlQoIW1fY29u
dGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50IHx8IGRlYnVnZ2VyQnJlYWtwb2ludElk
ICE9IG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50LT5pZCgpKTsKICAgICAg
ICAgICAgIGRhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwogICAgICAgICAgICAgZGF0YS0+
c2V0U3RyaW5nKCJvcmlnaW5hbFJlYXNvbiJfcywgUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6
OmdldEVudW1Db25zdGFudFZhbHVlKERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgIGRhdGEtPnNldFZhbHVlKCJvcmlnaW5hbERhdGEi
X3MsIGJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKGRlYnVnZ2VyQnJlYWtwb2ludElkKSk7CkBA
IC0xMTUxLDkgKzExNzgsOSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKUwogCiAgICAgbV9qYXZh
U2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAotICAgIGlmIChtX2NvbnRpbnVlVG9Mb2Nh
dGlvbkJyZWFrcG9pbnRJRCAhPSBKU0M6Om5vQnJlYWtwb2ludElEKSB7Ci0gICAgICAgIG1fc2Ny
aXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFr
cG9pbnRJRCk7Ci0gICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEID0gSlND
Ojpub0JyZWFrcG9pbnRJRDsKKyAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJy
ZWFrcG9pbnQpIHsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50
KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCk7CisgICAgICAgIG1fY29u
dGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICB9CiAKICAg
ICBhdXRvJiBzdG9wd2F0Y2ggPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZp
cm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpOwpAQCAtMTE2MywxNyArMTE5MCwxNyBAQCB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNDOjpKUwogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uU291bmQo
SlNDOjpCcmVha3BvaW50QWN0aW9uSUQgaWQpCiB7Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIt
PnBsYXlCcmVha3BvaW50QWN0aW9uU291bmQoYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpOwor
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wbGF5QnJlYWtwb2ludEFjdGlvblNvdW5kKGlkKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25zdCBTY3JpcHRCcmVha3BvaW50
QWN0aW9uJiBhY3Rpb24sIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6
OkpTVmFsdWUgc2FtcGxlKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkJyZWFr
cG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxl
SWQsIEpTQzo6SlNWYWx1ZSBzYW1wbGUpCiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihnbG9iYWxP
YmplY3QpOwotICAgIGF1dG8gcGF5bG9hZCA9IGluamVjdGVkU2NyaXB0LndyYXBPYmplY3Qoc2Ft
cGxlLCBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSwgdHJ1ZSk7CisgICAg
YXV0byBwYXlsb2FkID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChzYW1wbGUsIG9iamVjdEdy
b3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb25JRCksIHRydWUpOwogICAgIGF1dG8gcmVzdWx0
ID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpQcm9iZVNhbXBsZTo6Y3JlYXRlKCkKLSAgICAgICAgLnNl
dFByb2JlSWQoYWN0aW9uLmlkZW50aWZpZXIpCisgICAgICAgIC5zZXRQcm9iZUlkKGFjdGlvbklE
KQogICAgICAgICAuc2V0QmF0Y2hJZChiYXRjaElkKQogICAgICAgICAuc2V0U2FtcGxlSWQoc2Ft
cGxlSWQpCiAgICAgICAgIC5zZXRUaW1lc3RhbXAobV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5z
cGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0Y2goKS5lbGFwc2VkVGltZSgpLnNl
Y29uZHMoKSkKQEAgLTEyMDksMTAgKzEyMzYsMTUgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWEK
IHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3Rh
dGUoKQogewogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7Ci0gICAgZm9yIChjb25zdCBTdHJpbmcm
IGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdT
ZXJ2ZXJCcmVha3BvaW50SURzLmtleXMoKSkpCi0gICAgICAgIHJlbW92ZUJyZWFrcG9pbnQoaWdu
b3JlZCwgaWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvJiBwcm90b2NvbEJyZWFrcG9pbnRJRCA6
IGNvcHlUb1ZlY3RvcihtX2RlYnVnZ2VyQnJlYWtwb2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJ
RC5rZXlzKCkpKQorICAgICAgICByZW1vdmVCcmVha3BvaW50KGlnbm9yZWQsIHByb3RvY29sQnJl
YWtwb2ludElEKTsKIAotICAgIG1famF2YVNjcmlwdEJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAg
bV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jbGVhcigpOworCisg
ICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50KSB7CisgICAgICAg
IG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludCgqbV9jb250aW51ZVRvTG9jYXRp
b25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVn
Z2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgfQogCiAgICAgY2xlYXJEZWJ1Z2dlckJyZWFr
cG9pbnRTdGF0ZSgpOwogfQpAQCAtMTIyMSw3ICsxMjUzLDYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCkKIHsKICAgICB7CiAgICAg
ICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOwot
ICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNsZWFyQnJlYWtwb2ludEFjdGlvbnMoKTsKICAg
ICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJyZWFrcG9pbnRzKCk7CiAgICAgICAgIG1f
c2NyaXB0RGVidWdTZXJ2ZXIuY2xlYXJCbGFja2JveCgpOwogICAgIH0KQEAgLTEyMjksOSArMTI2
MCwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRGVidWdnZXJCcmVha3Bv
aW50U3RhdGUoKQogICAgIG1fcGF1c2VkR2xvYmFsT2JqZWN0ID0gbnVsbHB0cjsKICAgICBtX2N1
cnJlbnRDYWxsU3RhY2sgPSB7IH07CiAgICAgbV9zY3JpcHRzLmNsZWFyKCk7Ci0gICAgbV9icmVh
a3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmNsZWFyKCk7Ci0gICAg
bV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3BvaW50SWRlbnRp
Zmllci5jbGVhcigpOwotICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEID0gSlND
Ojpub0JyZWFrcG9pbnRJRDsKKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJl
YWtwb2ludElELmNsZWFyKCk7CisgICAgbV9kZWJ1Z2dlckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xC
cmVha3BvaW50SUQuY2xlYXIoKTsKKyAgICBtX25leHREZWJ1Z2dlckJyZWFrcG9pbnRJRCA9IEpT
Qzo6bm9CcmVha3BvaW50SUQgKyAxOworICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJC
cmVha3BvaW50ID0gbnVsbHB0cjsKICAgICBjbGVhclBhdXNlRGV0YWlscygpOwogICAgIG1famF2
YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7CiAgICAgbV9oYXNFeGNlcHRpb25WYWx1ZSA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDM1YWYxNmQyN2Q2ZmY5
ZTRkZDZiZTVlMzI3ZmQ4ZDY4MjI4YTdjMTcuLmQ0MDZhZGU3ZTBkYWI5ZjVkNmVjZThkZDYwZmMy
N2Y3ZWViMWI2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTI5LDE2ICsy
OSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkJyZWFrcG9pbnQuaCIKICNpbmNs
dWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyUHJpbWl0aXZlcy5oIgogI2luY2x1
ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaCIKLSNp
bmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0ZW5l
ci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNDYsMTUgKzQ4
LDE2IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3MgQXN5bmNTdGFja1RyYWNlOwogY2xh
c3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBT
Y3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3Rv
ckFnZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyLCBwdWJs
aWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIERlYnVn
Z2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMgSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOwog
ICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgogICAgIH5JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50KCkgb3ZlcnJpZGU7CiAKKyAgICBzdGF0aWMgUmVmUHRyPEpTQzo6QnJlYWtwb2lu
dD4gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09O
OjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKTsKKwogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25z
dCBiYWNrdHJhY2VPYmplY3RHcm91cDsKIAogICAgIC8vIEluc3BlY3RvckFnZW50QmFzZQpAQCAt
NjgsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBc3luY1N0YWNrVHJhY2VEZXB0aChF
cnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAgICAgdm9pZCBzZXRCcmVha3BvaW50c0Fj
dGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBmaW5hbDsKICAgICB2b2lkIHNldEJyZWFr
cG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9w
dGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0
aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6
OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmluYWw7Ci0gICAgdm9pZCBzZXRCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCos
IFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIGZp
bmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9i
amVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1YWxMb2NhdGlvbikgZmluYWw7CiAgICAgdm9pZCBy
ZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRl
bnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVVudGlsTmV4dFJ1bkxvb3AoRXJyb3JT
dHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYs
IGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24pIGZpbmFsOwpAQCAtODksMTUgKzkyLDE1IEBA
IHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29u
c3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29s
KiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wq
IHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVtdWxhdGVVc2VyR2VzdHVyZSwgUmVmUHRyPFByb3Rv
Y29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNU
aHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5kZXgpIG92ZXJyaWRlOwogICAgIHZv
aWQgc2V0U2hvdWxkQmxhY2tib3hVUkwoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwg
Ym9vbCBzaG91bGRCbGFja2JveCwgY29uc3QgYm9vbCogY2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9v
bCogaXNSZWdleCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9p
ZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBmaW5hbDsKKyAg
ICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlND
OjpTb3VyY2VJRCwgY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0JikgZmluYWw7CiAgICAgdm9p
ZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRh
dGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNz
YWdlKSBmaW5hbDsKICAgICB2b2lkIHdpbGxSdW5NaWNyb3Rhc2soKSBmaW5hbDsKICAgICB2b2lk
IGRpZFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9u
T3JDYXVnaHRWYWx1ZSkgZmluYWw7CisgICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNh
dWdodFZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbnRpbnVlKCkgZmluYWw7Ci0gICAgdm9p
ZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKSBm
aW5hbDsKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2ln
bmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKSBmaW5hbDsKKyAgICB2b2lkIGJyZWFr
cG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCkgZmluYWw7CisgICAgdm9p
ZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QnJlYWtw
b2ludEFjdGlvbklELCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpK
U1ZhbHVlIHNhbXBsZSkgZmluYWw7CiAKICAgICBib29sIGlzUGF1c2VkKCkgY29uc3Q7CiAgICAg
Ym9vbCBicmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0OwpAQCAtMTE4LDEwICsxMjEsMTMgQEAgcHVi
bGljOgogICAgIHZvaWQgd2lsbERpc3BhdGNoQXN5bmNDYWxsKEFzeW5jQ2FsbFR5cGUsIGludCBj
YWxsYmFja0lkKTsKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKLSAgICB2b2lk
IHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhKTsKLSAgICB2b2lkIGNhbmNlbFBh
dXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0
dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9i
amVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgdm9pZCBjYW5jZWxQYXVzZUF0TmV4dE9wcG9y
dHVuaXR5KCk7CiAgICAgYm9vbCBwYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSBjb25zdCB7
IHJldHVybiBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsgfQogCisgICAgYm9vbCBzY2hlZHVs
ZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiwgRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhID0gbnVs
bHB0cik7CisgICAgYm9vbCBjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEpTQzo6QnJl
YWtwb2ludCYpOworCiAgICAgdm9pZCBicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhKTsKICAgICB2b2lkIHNj
cmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwog
CkBAIC0xNDIsMTIgKzE0OCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlcjsgfQogICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRG
b3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpID0gMDsK
IAotICAgIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIHsgcmV0dXJuIG1f
c2NyaXB0RGVidWdTZXJ2ZXI7IH0KKyAgICBKU0M6OkRlYnVnZ2VyJiBzY3JpcHREZWJ1Z1NlcnZl
cigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBt
dXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0gMDsK
IAotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQm
KTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgSlNDOjpE
ZWJ1Z2dlcjo6U2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZENsZWFyR2xvYmFsT2JqZWN0KCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENsZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpIHsgfQpAQCAtMTU3
LDkgKzE2Myw0NCBAQCBwcml2YXRlOgogCiAgICAgUmVmPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZyYW1lcyhjb25zdCBJbmplY3RlZFNj
cmlwdCYpOwogCi0gICAgdm9pZCByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTY3JpcHQmLCBKU0M6
OkJyZWFrcG9pbnQmKTsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50Jiwg
Ym9vbCYgZXhpc3RpbmcpOwotICAgIHZvaWQgZGlkU2V0QnJlYWtwb2ludChjb25zdCBKU0M6OkJy
ZWFrcG9pbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CisgICAg
Y2xhc3MgUHJvdG9jb2xCcmVha3BvaW50IHsKKyAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2xCcmVha3Bv
aW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYsIEpTQzo6U291cmNlSUQsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zUGF5bG9hZCA9IG51bGxwdHIpOworICAgICAgICBzdGF0aWMgT3B0aW9uYWw8UHJvdG9jb2xC
cmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBi
b29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9IG51bGxwdHIpOworCisgICAgICAg
IFByb3RvY29sQnJlYWtwb2ludCgpOworICAgICAgICBQcm90b2NvbEJyZWFrcG9pbnQoSlNDOjpT
b3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25z
dCBTdHJpbmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwgSlNDOjpCcmVha3BvaW50OjpBY3Rp
b25zVmVjdG9yJiYgYWN0aW9ucyA9IHsgfSwgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwgc2l6
ZV90IGlnbm9yZUNvdW50ID0gMCk7CisgICAgICAgIFByb3RvY29sQnJlYWtwb2ludChjb25zdCBT
dHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBj
b2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uID0gbnVsbFN0cmluZygpLCBKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zID0geyB9LCBib29sIGF1dG9Db250
aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKworICAgICAgICBSZWY8SlND
OjpCcmVha3BvaW50PiBjcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQs
IEpTQzo6U291cmNlSUQpIGNvbnN0OworCisgICAgICAgIGNvbnN0IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQmIGlkKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQor
CisgICAgICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcmIHNjcmlwdFVSTCkgY29uc3Q7CisK
KyAgICBwcml2YXRlOgorICAgICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludElkIG1faWQ7CisKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICAgICBKU0M6OlNvdXJj
ZUlEIG1fc291cmNlSUQgeyBKU0M6Om5vU291cmNlSUQgfTsKKyNlbmRpZgorICAgICAgICBTdHJp
bmcgbV91cmw7CisgICAgICAgIGJvb2wgbV9pc1JlZ2V4IHsgZmFsc2UgfTsKKworICAgICAgICAv
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3MT4gV2ViIEluc3BlY3RvcjogQWRv
cHQgVGV4dFBvc2l0aW9uIGluIEluc3BlY3RvciB0byBhdm9pZCBvbmVCYXNlZEludC96ZXJvQmFz
ZWRJbnQgYW1iaWd1aXR5CisgICAgICAgIHVuc2lnbmVkIG1fbGluZU51bWJlciB7IDAgfTsKKyAg
ICAgICAgdW5zaWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07CisKKyAgICAgICAgU3RyaW5nIG1f
Y29uZGl0aW9uOworICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3IgbV9hY3Rp
b25zOworICAgICAgICBib29sIG1fYXV0b0NvbnRpbnVlIHsgZmFsc2UgfTsKKyAgICAgICAgc2l6
ZV90IG1faWdub3JlQ291bnQgeyAwIH07CisgICAgfTsKKworICAgIGJvb2wgcmVzb2x2ZUJyZWFr
cG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0JiwgSlNDOjpCcmVha3BvaW50Jik7Cisg
ICAgYm9vbCBzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYpOworICAgIHZvaWQgZGlkU2V0
QnJlYWtwb2ludChQcm90b2NvbEJyZWFrcG9pbnQmLCBKU0M6OkJyZWFrcG9pbnQmKTsKIAogICAg
IGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nJik7CiAgICAgdm9pZCBjbGVhckRlYnVnZ2Vy
QnJlYWtwb2ludFN0YXRlKCk7CkBAIC0xNzgsMTcgKzIxOSwxNSBAQCBwcml2YXRlOgogICAgIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IGJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKEpTQzo6QnJlYWtw
b2ludElEKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEV4Y2VwdGlvblBhdXNlUmVh
c29uKEpTQzo6SlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IEluamVjdGVkU2NyaXB0Jik7CiAKLSAg
ICBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nJiwgUmVmUHRy
PEpTT046OkFycmF5PiYgYWN0aW9ucywgQnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCk7Ci0KICAg
ICB0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50PiBBc3luY0NhbGxJZGVudGlmaWVyOwog
ICAgIHN0YXRpYyBBc3luY0NhbGxJZGVudGlmaWVyIGFzeW5jQ2FsbElkZW50aWZpZXIoQXN5bmND
YWxsVHlwZSwgaW50IGNhbGxiYWNrSWQpOwogCiAgICAgc3RkOjp1bmlxdWVfcHRyPERlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKICAgICBSZWZQdHI8RGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKIAotICAgIFNjcmlw
dERlYnVnU2VydmVyJiBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIEpTQzo6RGVidWdnZXImIG1f
c2NyaXB0RGVidWdTZXJ2ZXI7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVk
U2NyaXB0TWFuYWdlcjsKLSAgICBIYXNoTWFwPEpTQzo6U291cmNlSUQsIFNjcmlwdD4gbV9zY3Jp
cHRzOworICAgIEhhc2hNYXA8SlNDOjpTb3VyY2VJRCwgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0PiBt
X3NjcmlwdHM7CiAKICAgICBzdHJ1Y3QgQmxhY2tib3hDb25maWcgewogICAgICAgICBTdHJpbmcg
dXJsOwpAQCAtMjA5LDEwICsyNDgsMTIgQEAgcHJpdmF0ZToKICAgICBKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBtX3BhdXNlZEdsb2JhbE9iamVjdCB7IG51bGxwdHIgfTsKICAgICBKU0M6OlN0cm9uZzxK
U0M6OlVua25vd24+IG1fY3VycmVudENhbGxTdGFjazsKIAotICAgIEhhc2hNYXA8U3RyaW5nLCBW
ZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+PiBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1Nl
cnZlckJyZWFrcG9pbnRJRHM7Ci0gICAgSGFzaE1hcDxTdHJpbmcsIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+PiBtX2phdmFTY3JpcHRCcmVha3BvaW50czsKLSAgICBIYXNoTWFwPEpTQzo6QnJlYWtwb2lu
dElELCBTdHJpbmc+IG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJl
YWtwb2ludElkZW50aWZpZXI7Ci0gICAgSlNDOjpCcmVha3BvaW50SUQgbV9jb250aW51ZVRvTG9j
YXRpb25CcmVha3BvaW50SUQgeyBKU0M6Om5vQnJlYWtwb2ludElEIH07CisgICAgSGFzaE1hcDxJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkLCBQcm90b2NvbEJyZWFr
cG9pbnQ+IG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQ7CisgICAg
SGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkLCBKU0M6
OkJyZWFrcG9pbnRzVmVjdG9yPiBtX2RlYnVnZ2VyQnJlYWtwb2ludHNGb3JQcm90b2NvbEJyZWFr
cG9pbnRJRDsKKyAgICBKU0M6OkJyZWFrcG9pbnRJRCBtX25leHREZWJ1Z2dlckJyZWFrcG9pbnRJ
RCB7IEpTQzo6bm9CcmVha3BvaW50SUQgKyAxIH07CisKKyAgICBSZWZQdHI8SlNDOjpCcmVha3Bv
aW50PiBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludDsKKwogICAgIFNob3Vs
ZERpc3BhdGNoUmVzdW1lZCBtX2NvbmRpdGlvblRvRGlzcGF0Y2hSZXN1bWVkIHsgU2hvdWxkRGlz
cGF0Y2hSZXN1bWVkOjpObyB9OwogCiAgICAgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbiBtX3BhdXNlUmVhc29uOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXgg
MmZjYjJlN2I4NzVmZDQ3OWM0ZGY2MGM0ZTNjY2FjNDU0M2NmZDJiOS4uM2VhMGRhMzNkODBkNTFj
NzkxNmM2NTA2ODc4YWFlMmIwMWIwMDY3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogI2luY2x1ZGUgIkNvbXBsZXRpb24uaCIKICNpbmNs
dWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgiCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0SG9zdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgogI2luY2x1ZGUgIkpTTG9jay5oIgog
I2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
ICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyLmgiCiAjaW5j
bHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC03Myw3ICs3Myw3IEBAIEluc3BlY3RvclJ1bnRp
bWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCiB7CiB9CiAKLXN0YXRpYyBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2
ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUpCitzdGF0aWMgSlNDOjpEZWJ1Z2dl
cjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKEpTQzo6
RGVidWdnZXImIHNjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlIG5ld1N0YXRlKQogewogICAgIGF1dG8gcHJlc2VudFN0YXRlID0gc2NyaXB0RGVi
dWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwogICAgIGlmIChwcmVzZW50U3RhdGUg
IT0gbmV3U3RhdGUpCkBAIC0xMjMsOSArMTIzLDkgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBleHAK
ICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQogICAgICAgICByZXR1cm47CiAK
LSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zOworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gSlNDOjpE
ZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVz
ZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKLSAgICAgICAgcHJldmlvdXNQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2Vy
dmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICAgICAg
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlv
bnMpOwogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
KSkKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKIApAQCAtMTY1LDkgKzE2NSw5IEBAIHZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluCiAgICAgaWYgKG9wdGlvbmFsQXJndW1lbnRzKQogICAgICAgICBhcmd1
bWVudHMgPSBvcHRpb25hbEFyZ3VtZW50cy0+dG9KU09OU3RyaW5nKCk7CiAKLSAgICBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25FeGNlcHRp
b25zU3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOworICAg
IGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9u
dFBhdXNlT25FeGNlcHRpb25zOwogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlKSkKLSAgICAgICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
ID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICAgICAgcHJldmlvdXNQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERl
YnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIGlm
IChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKICAgICAgICAg
bXV0ZUNvbnNvbGUoKTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2Vy
dmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2Vy
dmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25z
b2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5nZXRQcmV2aWV3KGVycm9yU3RyaW5nLCBvYmpl
Y3RJZCwgcHJldmlldyk7CkBAIC0yMTYsNyArMjE2LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJp
bmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2
ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNl
cHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2
ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNv
bGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldFByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9i
amVjdElkLCBhc0Jvb2wob3duUHJvcGVydGllcyksIHN0YXJ0LCBjb3VudCwgYXNCb29sKGdlbmVy
YXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjQ5LDcgKzI0OSw3IEBAIHZvaWQgSW5zcGVj
dG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHREZWJ1Z1Nl
cnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3Rh
dGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIFNjcmlw
dERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIGF1dG8gcHJldmlvdXNQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3Njcmlw
dERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAg
IG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5nZXREaXNwbGF5YWJsZVByb3Bl
cnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBzdGFydCwgY291bnQsIGFzQm9vbChnZW5lcmF0
ZVByZXZpZXcpLCBwcm9wZXJ0aWVzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKaW5kZXgg
ZTNjYjYyNDU2YzJjZmNmN2YzOGM1ODc1ZTBkNmU4M2M5ZTQ0MzBmZi4uOWQ3NjVkOTYwN2FhOWY2
ODYyYjA3NmFiMzljNmNiZDI4NTRkNmQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmgK
QEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAogbmFtZXNw
YWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIFZNOwogfQogCkBAIC00NCw3ICs0NSw2
IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNz
IEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRl
ZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3Rv
clJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBSdW50aW1l
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKQEAgLTk0LDcgKzk0LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldENvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVkU3RhdGUoYm9vbCk7CiAKICAgICBJ
bmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIFNjcmlw
dERlYnVnU2VydmVyJiBtX3NjcmlwdERlYnVnU2VydmVyOworICAgIEpTQzo6RGVidWdnZXImIG1f
c2NyaXB0RGVidWdTZXJ2ZXI7CiAgICAgSlNDOjpWTSYgbV92bTsKICAgICBib29sIG1fZW5hYmxl
ZCB7ZmFsc2V9OwogICAgIGJvb2wgbV9pc1R5cGVQcm9maWxpbmdFbmFibGVkIHtmYWxzZX07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCmluZGV4IDk3Y2M5MWZm
NWUyMmM5OTgxMzkzYjRkZmM1NDg5YzIxODM4ODBmYTkuLmMxMmVjNjlhMDE1ZjVhZGI2MTdmODdh
ZDEyOWY3ZDk1ZmVlZWIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmgiCiAKKyNpbmNsdWRlICJEZWJ1Z2dl
ci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRlICJIZWFwSW5saW5lcy5oIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCiAjaW5jbHVkZSAiU2FtcGxpbmdQcm9maWxl
ci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL1N0b3B3
YXRjaC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmgKaW5kZXggM2I4OGRlYWI3NzUzZWE1ZGExYWE3M2ZjMDJiMmEzZTI3MWMz
ZTAzNC4uNmY3OTI3OGQ1MzMxNzFlMWZkZDBhZWZlOWRkMjliMzNiZmQxZmU5NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKQEAgLTM4LDggKzM4LDggQEAgcHVibGlj
OgogICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudChKU0FnZW50Q29udGV4dCYsIEluc3Bl
Y3RvckNvbnNvbGVBZ2VudCopOwogICAgIH5KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoKSBm
aW5hbDsKIAotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lkIGJyZWFrcG9pbnRB
Y3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAg
IC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9n
KEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwogCiBwcml2
YXRlOgogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmlu
ZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCmluZGV4IGYzYTc3NTM3
MDI5OTVlYmM1NDMxMmVhZDBiMGMwMjhhNThiYjE5YjkuLjk5OGJjNGFmZTY4ZWM3MDUwMmEwMDli
N2JmNWVkMWRlOTc1OGFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMzE2LDcgKzMxNiw4IEBACiAgICAgICAgICAgICAi
ZGVzY3JpcHRpb24iOiAiU2V0IGEgYnJlYWtwb2ludCBvbiB0aGUgZ2l2ZW4gZXZlbnQgbGlzdGVu
ZXIuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsicGFnZSJdLAogICAgICAgICAgICAg
InBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAibmFtZSI6ICJldmVudExpc3RlbmVy
SWQiLCAiJHJlZiI6ICJFdmVudExpc3RlbmVySWQiIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImV2ZW50TGlzdGVuZXJJZCIsICIkcmVmIjogIkV2ZW50TGlzdGVuZXJJZCIgfSwKKyAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm9wdGlvbnMiLCAiJHJlZiI6ICJEZWJ1Z2dlci5CcmVha3Bv
aW50T3B0aW9ucyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPcHRpb25zIHRv
IGFwcGx5IHRvIHRoaXMgYnJlYWtwb2ludCB0byBtb2RpZnkgaXRzIGJlaGF2aW9yLiIgfQogICAg
ICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24gYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb24KaW5kZXgg
NWExODk3NjI4MjQ0N2Y3ZGVlYjA2ZmRmZGUzMjg4ZTNiYTM2OWU4MS4uZWVmYTkzM2Y5ZjVkMmMx
ZjRmYzRkZTc1NjU3NTc0OTRiYmViOTNlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29uCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVidWdnZXIuanNvbgpAQCAtMzksNyAr
MzksOCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldHMgYnJlYWtwb2ludCBvbiBw
YXJ0aWN1bGFyIGV2ZW50IG9mIGdpdmVuIHR5cGUuIiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJz
IjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJlYWtwb2ludFR5cGUiLCAiJHJlZiI6
ICJFdmVudEJyZWFrcG9pbnRUeXBlIiB9LAotICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXZl
bnROYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9u
IjogIlRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBldmVudCB0byBzdG9wIG9uLiIgfQorICAgICAg
ICAgICAgICAgIHsgIm5hbWUiOiAiZXZlbnROYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlv
bmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBldmVu
dCB0byBzdG9wIG9uLiIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9wdGlvbnMiLCAi
JHJlZiI6ICJEZWJ1Z2dlci5CcmVha3BvaW50T3B0aW9ucyIsICJvcHRpb25hbCI6IHRydWUsICJk
ZXNjcmlwdGlvbiI6ICJPcHRpb25zIHRvIGFwcGx5IHRvIHRoaXMgYnJlYWtwb2ludCB0byBtb2Rp
ZnkgaXRzIGJlaGF2aW9yLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01pY3JvdGFzay5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKaW5kZXgg
MDNlZTYwYjM2NTk2YWI4Mjg1ZGZhOGI0MzcxZDk5ZmQ0NGU5OTYxNC4uNDRiODk0NTY3MzBiZWUz
NjNlZGMxNWUxODIyYzM5ODBlMWJiYWI1OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWljcm90YXNrLmNwcApAQCAtOTEsNiArOTEsOSBAQCB2b2lkIEpTTWljcm90YXNr
OjpydW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIHByb2ZpbGVkQ2FsbChn
bG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbjo6TWljcm90YXNrLCBtX2pvYi5nZXQoKSwgaGFu
ZGxlckNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBoYW5kbGVyQXJndW1lbnRzKTsKICAgICBzY29w
ZS5jbGVhckV4Y2VwdGlvbigpOworCisgICAgaWYgKFVOTElLRUxZKGdsb2JhbE9iamVjdC0+aGFz
RGVidWdnZXIoKSkpCisgICAgICAgIGdsb2JhbE9iamVjdC0+ZGVidWdnZXIoKS0+ZGlkUnVuTWlj
cm90YXNrKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdl
dC5jcHAKaW5kZXggMGNjZmNjMWUzNjBhODIyMDIwZjk4ZDE1ZGJlNzFiNzY3MDJmZjkxOC4uNmEw
NzY0YWVkODE0MWQ3YTIxOTk3MTVhZjAyZmRmMWRlZTQzMTdjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9pZCBFdmVudFRhcmdldDo6aW5uZXJJ
bnZva2VFdmVudExpc3RlbmVycyhFdmVudCYgZXZlbnQsIEV2ZW50TGlzdGVuZXJWZWN0b3IgbGkK
IAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVFdmVudChjb250
ZXh0LCBldmVudCwgKnJlZ2lzdGVyZWRMaXN0ZW5lcik7CiAgICAgICAgIHJlZ2lzdGVyZWRMaXN0
ZW5lci0+Y2FsbGJhY2soKS5oYW5kbGVFdmVudChjb250ZXh0LCBldmVudCk7Ci0gICAgICAgIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnQoY29udGV4dCk7CisgICAgICAg
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnQoY29udGV4dCwgZXZlbnQs
ICpyZWdpc3RlcmVkTGlzdGVuZXIpOwogCiAgICAgICAgIGlmIChyZWdpc3RlcmVkTGlzdGVuZXIt
PmlzUGFzc2l2ZSgpKQogICAgICAgICAgICAgZXZlbnQuc2V0SW5QYXNzaXZlTGlzdGVuZXIoZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uLmNwcAppbmRleCAxOTFjZjhkMGUyNTYyYzQxZDAzYzU4MzBjOGVlMDZiMjM5YThm
ZTg5Li4wYTA4MTgwNzk4ZmM5ZGRjYzVkYTc1Y2ZlMDM1ZjU2ZDc2ZTEwODQzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNw
cApAQCAtNDE4LDEzICs0MTgsMTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246Ondp
bGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWUKICAgICAgICAg
ZG9tRGVidWdnZXJBZ2VudC0+d2lsbEhhbmRsZUV2ZW50KGV2ZW50LCBsaXN0ZW5lcik7CiB9CiAK
LXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1
bWVudGluZ0FnZW50cywgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ciYgbGlzdGVuZXIpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVn
Z2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKICAgICBpZiAoYXV0byogZG9tRGVi
dWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURlYnVnZ2VyQWdlbnQo
KSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFuZGxlRXZlbnQoKTsKKyAgICAgICAg
ZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFuZGxlRXZlbnQoZXZlbnQsIGxpc3RlbmVyKTsKIH0KIAog
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50JiBldmVudCkK
QEAgLTQ3MywxMCArNDczLDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxs
RmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAgICAgIHRp
bWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3JpcHRFeGVjdXRp
b25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50
cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCAvKiB0aW1lcklkICovLCBi
b29sIG9uZVNob3QpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgIHdlYkRlYnVn
Z2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CisgICAgaWYgKGF1dG8qIGRvbURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dlckFnZW50KCkp
CisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEZpcmVUaW1lcihvbmVTaG90KTsKICAgICBp
ZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1l
bGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVUaW1lcigpOwogfQpA
QCAtNzE2LDYgKzcxOCw5IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21t
aXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAgICAgIGlmIChh
dXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFBhZ2VE
ZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+bWFpbkZyYW1l
TmF2aWdhdGVkKCk7CiAKKyAgICAgICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgICAgICBk
b21EZWJ1Z2dlckFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKKwogICAgICAgICBpZiAoYXV0
byogZW5hYmxlZFBhZ2VIZWFwQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdl
SGVhcEFnZW50KCkpCiAgICAgICAgICAgICBlbmFibGVkUGFnZUhlYXBBZ2VudC0+bWFpbkZyYW1l
TmF2aWdhdGVkKCk7CiAgICAgfQpAQCAtMTI2Miw2ICsxMjY3LDggQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW4KIHsKICAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2ViRGVidWdnZXJB
Z2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKKyAgICBpZiAoYXV0byogcGFnZURPTURlYnVn
Z2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVidWdnZXJBZ2Vu
dCgpKQorICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+ZGlkRmlyZUFuaW1hdGlvbkZyYW1l
KCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLnRy
YWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRGaXJlQW5p
bWF0aW9uRnJhbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3MzBmMzMyNTFkZDAyNzQ0MDRhZGVmOGY2ZjNm
YjZlMDljZDZmZTI5Li41YWQ3OWUwZDE2YTk1MzJiODFjOGI1YWY4MGFhY2FjZTU5ODY5ZDFlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oCkBAIC0xNzEsMTQgKzE3MSwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgd2ls
bERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmLCBjb25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2b2lk
IGRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmLCBjb25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXZlbnQmLCBjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwotICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2
ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVF
dmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3co
RnJhbWUqLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyYpOwogICAgIHN0YXRpYyB2b2lkIGRpZERp
c3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZv
aWQgZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goY29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMg
dm9pZCB3aWxsRXZhbHVhdGVTY3JpcHQoRnJhbWUmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRl
U2NyaXB0KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEZpcmVUaW1lcihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCk7Ci0gICAgc3RhdGljIHZv
aWQgZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBzdGF0aWMgdm9p
ZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGludCB0aW1lcklkLCBib29s
IG9uZVNob3QpOwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVMYXlvdXQoRnJhbWUmKTsK
ICAgICBzdGF0aWMgdm9pZCB3aWxsTGF5b3V0KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgZGlk
TGF5b3V0KEZyYW1lJiwgUmVuZGVyT2JqZWN0Jik7CkBAIC0zOTQsNyArMzk0LDcgQEAgcHJpdmF0
ZToKICAgICBzdGF0aWMgYm9vbCBpc0V2ZW50TGlzdGVuZXJEaXNhYmxlZEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0
Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERvY3VtZW50JiwgY29uc3QgRXZlbnQm
KTsKICAgICBzdGF0aWMgdm9pZCB3aWxsSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7Ci0gICAgc3RhdGlj
IHZvaWQgZGlkSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0
aWMgdm9pZCBkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEV2ZW50Jiwg
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNw
YXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdl
bnRzJiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNw
YXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBFdmVudCYp
OwpAQCAtNDAyLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1
YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmLCBjb25zdCBTdHJpbmcm
IHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgaW50
IHRpbWVySWQsIGJvb2wgb25lU2hvdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOwotICAgIHN0
YXRpYyB2b2lkIGRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYpOworICAgIHN0
YXRpYyB2b2lkIGRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1l
cklkLCBib29sIG9uZVNob3QpOwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFsaWRhdGVMYXlvdXRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxM
YXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lk
IGRpZExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIFJlbmRlck9iamVjdCYpOwpAQCAt
ODkyLDExICs4OTIsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3
aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY28KICAgICAgICAgcmV0dXJu
IHdpbGxIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50LCBsaXN0ZW5l
cik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxl
RXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK2lubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCwgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYg
bGlzdGVuZXIpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAg
ICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAgICAgICAgcmV0dXJuIGRpZEhhbmRs
ZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7CisgICAgICAgIHJldHVybiBkaWRIYW5k
bGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV2ZW50LCBsaXN0ZW5lcik7CiB9CiAK
IGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEV2ZW50JiBldmVudCwgRE9NV2luZG93JiB3aW5k
b3cpCkBAIC05NDYsMTEgKzk0NiwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udAogICAgICAg
ICB3aWxsRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgb25lU2hv
dCwgY29udGV4dCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0LCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KQogewogICAgIEZBU1Rf
UkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChhdXRvKiBpbnN0cnVtZW50
aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAg
ICAgIGRpZEZpcmVUaW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICBkaWRG
aXJlVGltZXJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCB0aW1lcklkLCBvbmVTaG90KTsKIH0K
IAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlkYXRlTGF5
b3V0KEZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMTdhNjZmMTBjMWEyMjYxYWYxZDhkMWU3ZWFiYTJl
NThhMTllMjRkYS4uMDVmZWZiY2JlYzZkNTYyNDZlNzI4ZjYxOTA1N2Y4NzY2OTE2NjcyMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKQEAgLTU0LDE4ICs1NCwyMiBAQCB1c2luZyBuYW1lc3BhY2UgSlNDOwogdXNpbmcgbmFtZXNw
YWNlIEluc3BlY3RvcjsKIAogUGFnZVNjcmlwdERlYnVnU2VydmVyOjpQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIoUGFnZSYgcGFnZSkKLSAgICA6IFNjcmlwdERlYnVnU2VydmVyKFdlYkNvcmU6OmNvbW1v
blZNKCkpCisgICAgOiBEZWJ1Z2dlcihXZWJDb3JlOjpjb21tb25WTSgpKQogICAgICwgbV9wYWdl
KHBhZ2UpCiB7CiB9CiAKIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dl
cigpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKKwogICAgIG1fcGFn
ZS5zZXREZWJ1Z2dlcih0aGlzKTsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKKyAgICBKU0M6OkRlYnVnZ2Vy
OjpkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKKwogICAgIG1fcGFnZS5zZXREZWJ1
Z2dlcihudWxscHRyKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIHJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC03NywxOCArODEsMjQgQEAgdm9pZCBQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkKICAgICBEZWJ1Z2dlcjo6cmVj
b21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6
OmRpZFBhdXNlKEpTR2xvYmFsT2JqZWN0KikKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpk
aWRQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIEpTQzo6RGVidWdn
ZXI6OmRpZFBhdXNlKGdsb2JhbE9iamVjdCk7CisKICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKG1f
cGFnZS5ncm91cCgpLCB0cnVlKTsKIH0KIAotdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRp
ZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KikKK3ZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpk
aWRDb250aW51ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogeworICAgIEpTQzo6RGVi
dWdnZXI6OmRpZENvbnRpbnVlKGdsb2JhbE9iamVjdCk7CisKICAgICBzZXRKYXZhU2NyaXB0UGF1
c2VkKG1fcGFnZS5ncm91cCgpLCBmYWxzZSk7CiB9CiAKIHZvaWQgUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cnVu
RXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKKwogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAg
Ly8gT24gaU9TLCBydW5uaW5nIGFuIEV2ZW50TG9vcCBjYXVzZXMgdXMgdG8gcnVuIGEgbmVzdGVk
IFdlYlJ1bkxvb3AuCiAgICAgLy8gU2luY2UgdGhlIFdlYlRocmVhZCBpcyBhdXRvcmVsZWFzZWQg
YXQgdGhlIGVuZCBvZiBydW4gbG9vcCBpdGVyYXRpb25zCkBAIC0xMTUsNyArMTI1LDcgQEAgdm9p
ZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwo
KQogCiAgICAgbV9wYWdlLmluY3JlbWVudE5lc3RlZFJ1bkxvb3BDb3VudCgpOwogCi0gICAgd2hp
bGUgKCFtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMpIHsKKyAgICB3aGlsZSAoIWRvbmVQ
cm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSkgewogICAgICAgICBpZiAoIXBsYXRmb3JtU2hvdWxk
Q29udGludWVSdW5uaW5nRXZlbnRMb29wV2hpbGVQYXVzZWQoKSkKICAgICAgICAgICAgIGJyZWFr
OwogICAgIH0KQEAgLTEyNSwxMSArMTM1LDEzIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpydW5FdmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKCkKIAogYm9vbCBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6OmlzQ29udGVudFNjcmlwdChKU0dsb2JhbE9iamVjdCogc3RhdGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICZjdXJyZW50V29ybGQoKnN0YXRlKSAhPSAmbWFpblRocmVhZE5vcm1hbFdv
cmxkKCk7CisgICAgcmV0dXJuICZjdXJyZW50V29ybGQoKnN0YXRlKSAhPSAmbWFpblRocmVhZE5v
cm1hbFdvcmxkKCkgfHwgSlNDOjpEZWJ1Z2dlcjo6aXNDb250ZW50U2NyaXB0KHN0YXRlKTsKIH0K
IAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlvbihKU0dsb2JhbE9i
amVjdCogc3RhdGUsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pIGNvbnN0CiB7CisgICAgSlND
OjpEZWJ1Z2dlcjo6cmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOworCiAgICAgV2Vi
Q29yZTo6cmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRpb24pOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggMjJkOGNm
Nzg5ZDk1YjhkNzhmZWFlM2E0OWEwYTBlNWRhYzM5ZmUwNi4uZmYzODE5ZGI0ODVkNDMwNzQ2ZGM2
ZmM5ZGFhNTVjZGE2YWE3MmNkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UK
IAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdERlYnVnU2VydmVyLmg+CisjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC0zNCw3ICszNCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VHcm91
cDsKIAotY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rv
cjo6U2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVyIGZpbmFs
IDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
CkBAIC00NCwxNCArNDQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5j
dGlvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKCkg
b3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQp
IG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3Zl
cnJpZGU7Ci0gICAgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJp
ZGU7Ci0gICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIG92ZXJyaWRlOwotICAgIGJv
b2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsK
LSAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNl
cHRpb24qKSBjb25zdCBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyCisgICAgdm9pZCBh
dHRhY2hEZWJ1Z2dlcigpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0Jl
aW5nRGVzdHJveWVkKSBmaW5hbDsKKyAgICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBm
aW5hbDsKKyAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgZmluYWw7CisgICAgYm9v
bCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IGZpbmFsOworICAg
IHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlv
biopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZEludGVy
bmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAKaW5kZXggY2M0NWIxZjRjMmIxMTI2ZGFhMWUyMGRlMTZiODdhMmM2NmI3OTJj
Yy4uZWVkZWQ4ZjQ4MjljZTg0MzA2NDMzMjA3N2Q4MzAyYzMxZGRhOWIzZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKQEAgLTM2
LDcgKzM2LDYgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIKICNpbmNsdWRlICJKU0V4ZWNTdGF0
ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclByb3RvY29sT2JqZWN0cy5o
PgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEJyZWFrcG9pbnQuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAKQEAgLTczLDEwICs3MiwxMCBAQCBSZWY8
SlNPTjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZUNvbnNvbGVQcm9maWxl
RGF0YShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIGRhdGE7CiB9CiAKLVJlZjxKU09OOjpPYmpl
Y3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGNvbnN0IFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgc2FtcGxlSWQpCitSZWY8SlNP
Tjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShK
U0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgc2FtcGxlSWQpCiB7CiAg
ICAgUmVmPEpTT046Ok9iamVjdD4gZGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAg
ZGF0YS0+c2V0SW50ZWdlcigicHJvYmVJZCJfcywgYWN0aW9uLmlkZW50aWZpZXIpOworICAgIGRh
dGEtPnNldEludGVnZXIoInByb2JlSWQiX3MsIGFjdGlvbklEKTsKICAgICBkYXRhLT5zZXRJbnRl
Z2VyKCJzYW1wbGVJZCJfcywgc2FtcGxlSWQpOwogICAgIHJldHVybiBkYXRhOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCmluZGV4IDUz
MDc1NTg3NTlhMzgzODViYjhiODVlOWI5Y2RkMTcwYjEzZDgyODEuLjQxYjZkZDY0NTA5ZDA0Zjc2
MWZhYzM5NjRmNzg3ZDMyODk0ZTExNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMxLDE1ICszMSwxMiBAQAogIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlclByaW1pdGl2ZXMuaD4K
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAj
aW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1zdHJ1Y3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbjsK
LX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVudDsKQEAgLTUxLDcgKzQ4LDcg
QEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZUZ1bmN0aW9u
Q2FsbERhdGEoY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBpbnQgc2NyaXB0TGluZSwgaW50IHNj
cmlwdENvbHVtbik7CiAgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZUNvbnNvbGVQ
cm9maWxlRGF0YShjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAgICBzdGF0aWMgUmVmPEpTT046Ok9i
amVjdD4gY3JlYXRlUHJvYmVTYW1wbGVEYXRhKGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtw
b2ludEFjdGlvbiYsIHVuc2lnbmVkIHNhbXBsZUlkKTsKKyAgICBzdGF0aWMgUmVmPEpTT046Ok9i
amVjdD4gY3JlYXRlUHJvYmVTYW1wbGVEYXRhKEpTQzo6QnJlYWtwb2ludEFjdGlvbklELCB1bnNp
Z25lZCBzYW1wbGVJZCk7CiAgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZUV2ZW50
RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+
IGNyZWF0ZUdlbmVyaWNUaW1lckRhdGEoaW50IHRpbWVySWQpOwogICAgIHN0YXRpYyBSZWY8SlNP
Tjo6T2JqZWN0PiBjcmVhdGVUaW1lckluc3RhbGxEYXRhKGludCB0aW1lcklkLCBTZWNvbmRzIHRp
bWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA0YTY5MTk2OTdjYmMyZmU4ZDkz
OTEyYzUxN2RlZWY1YTI0ODg5ZGU2Li4zNjFkYjE2YzRkNGE0ZTE5Mzk0NDk3ODA5ZTRiZjFjM2Jj
OWI0ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlci5jcHAKQEAgLTQ0LDE4ICs0NCwyMiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFsU2NvcGUmIGNvbnRleHQpCi0gICAg
OiBTY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQorICAgIDogRGVidWdn
ZXIoY29udGV4dC5zY3JpcHQoKS0+dm0oKSkKICAgICAsIG1fd29ya2VyR2xvYmFsU2NvcGUoY29u
dGV4dCkKIHsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdn
ZXIoKQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0dGFjaERlYnVnZ2VyKCk7CisKICAgICBtX3dv
cmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5hdHRhY2hEZWJ1Z2dlcih0aGlzKTsKIH0KIAogdm9p
ZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVz
dHJveWVkKQogeworICAgIEpTQzo6RGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0
cm95ZWQpOworCiAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCkpCiAgICAgICAg
IG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmRldGFjaERlYnVnZ2VyKHRoaXMpOwogICAg
IGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKQEAgLTcwLDE2ICs3NCwyMCBAQCB2b2lkIFdvcmtlclNj
cmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpCiAKIHZvaWQgV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIHsKKyAgICBKU0M6
OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOworCiAgICAgVGltZXJCYXNlOjpm
aXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAogICAgIE1lc3NhZ2VRdWV1ZVdhaXRSZXN1
bHQgcmVzdWx0OwogICAgIGRvIHsKICAgICAgICAgcmVzdWx0ID0gbV93b3JrZXJHbG9iYWxTY29w
ZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUobV93b3JrZXJHbG9iYWxTY29w
ZSk7Ci0gICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgIW1f
ZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyk7CisgICAgfSB3aGlsZSAocmVzdWx0ICE9IE1l
c3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgIWRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSk7
CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlvbihKU0M6
OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhjZXB0aW9uKSBjb25zdAog
eworICAgIEpTQzo6RGVidWdnZXI6OnJlcG9ydEV4Y2VwdGlvbihleGVjLCBleGNlcHRpb24pOwor
CiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2VwdGlvbik7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgK
aW5kZXggZWE3MWYxZGU4OGQyNjAzZTU2NmIwZDA5NDJiMzJlYWZhNjRiYmE5MC4uYzhiYTMyZTQz
N2NkOGZmM2NlYTMyYmY3Yzg0MDY3Yzk5ZDU4Y2I3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTMxLDMwICszMSwyNyBA
QAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdERlYnVn
U2VydmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJHbG9iYWxTY29wZTsKIAotY2xhc3MgV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1Nl
cnZlciB7CitjbGFzcyBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBKU0M6
OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKICAgICB+V29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAKLSAgICB2b2lkIHJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBhdHRhY2hEZWJ1
Z2dlcigpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVz
dHJveWVkKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVj
dCopIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVj
dCopIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBvdmVy
cmlkZTsKLSAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBvdmVycmlkZTsKKyAg
ICAvLyBKU0M6OkRlYnVnZ2VyCisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIGZpbmFsOworICAg
IHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBmaW5hbDsKKyAgICB2
b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgZmluYWw7CisgICAgdm9pZCBydW5FdmVudExv
b3BXaGlsZVBhdXNlZCgpIGZpbmFsOworICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCiAgICAgV29ya2Vy
R2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAppbmRleCAzNGRh
OTU4MGFlNGE4NmY0OWJjODliNTY3OGVhNjNjMTk5OGNmM2Q2Li4xNWY2NmQxYmUzNWI4MzNlYzZh
M2Y2MmU0YzAwYTk2ZjcwN2MzOWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApAQCAtMTEyLDYgKzExMiw3IEBACiAj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNGYWN0b3J5Lmg+CiAjaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5l
cy5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGlnZXN0Lmg+CiAjaW5jbHVkZSA8d3Rm
L0Z1bmN0aW9uLmg+CkBAIC05MzEsMTMgKzkzMiwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bgogICAgIGF1dG8gYWRkTGlzdGVuZXIgPSBbJl0gKFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgY29uc3QgRXZlbnRMaXN0ZW5lckluZm8mIGluZm8pIHsKICAgICAgICAgaW50IGlk
ZW50aWZpZXIgPSAwOwogICAgICAgICBib29sIGRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgIGJv
b2wgaGFzQnJlYWtwb2ludCA9IGZhbHNlOworICAgICAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50
PiBicmVha3BvaW50OwogCiAgICAgICAgIGZvciAoYXV0byYgaW5zcGVjdG9yRXZlbnRMaXN0ZW5l
ciA6IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMudmFsdWVzKCkpIHsKICAgICAgICAgICAgIGlmIChp
bnNwZWN0b3JFdmVudExpc3RlbmVyLm1hdGNoZXMoKmluZm8uZXZlbnRUYXJnZXQsIGluZm8uZXZl
bnRUeXBlLCBsaXN0ZW5lci5jYWxsYmFjaygpLCBsaXN0ZW5lci51c2VDYXB0dXJlKCkpKSB7CiAg
ICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaWRlbnRp
ZmllcjsKICAgICAgICAgICAgICAgICBkaXNhYmxlZCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIu
ZGlzYWJsZWQ7Ci0gICAgICAgICAgICAgICAgaGFzQnJlYWtwb2ludCA9IGluc3BlY3RvckV2ZW50
TGlzdGVuZXIuaGFzQnJlYWtwb2ludDsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50ID0gaW5z
cGVjdG9yRXZlbnRMaXN0ZW5lci5icmVha3BvaW50OwogICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05NDcsMTIgKzk0OCwxMiBAQCB2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBpbnQgbgogCiAgICAgICAgICAgICBpZGVudGlmaWVyID0gaW5zcGVjdG9yRXZlbnRM
aXN0ZW5lci5pZGVudGlmaWVyOwogICAgICAgICAgICAgZGlzYWJsZWQgPSBpbnNwZWN0b3JFdmVu
dExpc3RlbmVyLmRpc2FibGVkOwotICAgICAgICAgICAgaGFzQnJlYWtwb2ludCA9IGluc3BlY3Rv
ckV2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludDsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBp
bnNwZWN0b3JFdmVudExpc3RlbmVyLmJyZWFrcG9pbnQ7CiAKICAgICAgICAgICAgIG1fZXZlbnRM
aXN0ZW5lckVudHJpZXMuYWRkKGlkZW50aWZpZXIsIGluc3BlY3RvckV2ZW50TGlzdGVuZXIpOwog
ICAgICAgICB9CiAKLSAgICAgICAgbGlzdGVuZXJzQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RG
b3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpZGVudGlmaWVyLCAqaW5mby5ldmVudFRhcmdldCwg
aW5mby5ldmVudFR5cGUsIGRpc2FibGVkLCBoYXNCcmVha3BvaW50KSk7CisgICAgICAgIGxpc3Rl
bmVyc0FycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwg
aWRlbnRpZmllciwgKmluZm8uZXZlbnRUYXJnZXQsIGluZm8uZXZlbnRUeXBlLCBkaXNhYmxlZCwg
YnJlYWtwb2ludCkpOwogICAgIH07CiAKICAgICAvLyBHZXQgQ2FwdHVyaW5nIExpc3RlbmVycyAo
aW4gdGhpcyBvcmRlcikKQEAgLTk4OCw3ICs5ODksNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50
OjpzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
ZQogICAgIGl0LT52YWx1ZS5kaXNhYmxlZCA9IGRpc2FibGVkOwogfQogCi12b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBldmVudExpc3RlbmVySWQpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpz
ZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGlu
dCBldmVudExpc3RlbmVySWQsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCiB7
CiAgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuZmluZChldmVudExpc3RlbmVy
SWQpOwogICAgIGlmIChpdCA9PSBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLmVuZCgpKSB7CkBAIC05
OTYsNyArOTk3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaXQtPnZhbHVlLmhhc0JyZWFrcG9pbnQgPSB0cnVlOworICAgIGl0LT52YWx1
ZS5icmVha3BvaW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJCcmVha3BvaW50
RnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6cmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklkKQpAQCAtMTAwNyw3ICsxMDA4LDcg
QEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IGl0LT52YWx1ZS5oYXNCcmVha3BvaW50ID0gZmFsc2U7CisgICAgaXQtPnZhbHVlLmJyZWFrcG9p
bnQgPSBudWxscHRyOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmls
aXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGll
cz4mIGF4UHJvcGVydGllcykKQEAgLTE3NTEsNyArMTc1Miw3IEBAIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZEFyCiAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmpl
Y3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdl
dCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0Jy
ZWFrcG9pbnQpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJ
bnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgaW50IGlkZW50aWZp
ZXIsIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBib29sIGRpc2FibGVkLCBjb25zdCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYgYnJlYWtwb2lu
dCkKIHsKICAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciA9IHJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyLmNhbGxiYWNrKCk7CiAKQEAgLTE4MzksOCArMTg0MCw4IEBAIFJlZjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50Ojpi
dWlsZE9iamVjdEZvckV2CiAgICAgICAgIHZhbHVlLT5zZXRPbmNlKHRydWUpOwogICAgIGlmIChk
aXNhYmxlZCkKICAgICAgICAgdmFsdWUtPnNldERpc2FibGVkKGRpc2FibGVkKTsKLSAgICBpZiAo
aGFzQnJlYWtwb2ludCkKLSAgICAgICAgdmFsdWUtPnNldEhhc0JyZWFrcG9pbnQoaGFzQnJlYWtw
b2ludCk7CisgICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgIHZhbHVlLT5zZXRIYXNCcmVha3Bv
aW50KGJyZWFrcG9pbnQpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjU0OCwxMyArMjU0
OSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRj
aChjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgbV9kaXNwYXRjaGVkRXZlbnRzLnJlbW92ZSgmZXZl
bnQpOwogfQogCi1ib29sIEluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUs
IEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCitSZWZQdHI8SlNDOjpCcmVh
a3BvaW50PiBJbnNwZWN0b3JET01BZ2VudDo6YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZl
bnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3Rl
bmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAgIGZvciAoYXV0byYgaW5zcGVjdG9y
RXZlbnRMaXN0ZW5lciA6IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMudmFsdWVzKCkpIHsKICAgICAg
ICAgaWYgKGluc3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcyh0YXJnZXQsIGV2ZW50VHlwZSwg
bGlzdGVuZXIsIGNhcHR1cmUpKQotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckV2ZW50TGlz
dGVuZXIuaGFzQnJlYWtwb2ludDsKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JFdmVudExp
c3RlbmVyLmJyZWFrcG9pbnQ7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
bnVsbHB0cjsKIH0KIAogaW50IEluc3BlY3RvckRPTUFnZW50OjppZEZvckV2ZW50TGlzdGVuZXIo
RXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExp
c3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDdlNmQzZjY4ZDNkNjBj
YWYzZDNhMDFhY2MzODBhMjYwNWY0MmQ2ZTMuLjNlMzc3MDdhZmVjZjc4ZjQyMThhYTgzMDFlMWVh
MmQ0MWM3MjUxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudFRh
cmdldC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlRp
bWVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRl
IDx3dGYvSGFzaE1hcC5oPgpAQCAtMTI1LDcgKzEyNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAg
IHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3Rl
bmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEV2ZW50TGlzdGVu
ZXJEaXNhYmxlZChFcnJvclN0cmluZyYsIGludCBldmVudExpc3RlbmVySWQsIGJvb2wgZGlzYWJs
ZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJy
b3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJ
ZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJ
ZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykgb3ZlcnJpZGU7CiAgICAg
dm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29u
c3QgSlNPTjo6QXJyYXkqIG5vZGVJZHMsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIFN0cmlu
Zyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwpAQCAtMjA1LDcgKzIwNiw3
IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCk7CiAgICAgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCk7CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEV2ZW50
VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9v
bCBjYXB0dXJlKTsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBicmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZl
bnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgaW50IGlkRm9yRXZlbnRMaXN0ZW5lcihF
dmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYs
IGJvb2wgY2FwdHVyZSk7CiAKIHByaXZhdGU6CkBAIC0yMzEsNyArMjMyLDcgQEAgcHJpdmF0ZToK
ICAgICBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJp
YnV0ZXMoRWxlbWVudCopOwogICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250
YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9y
UHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0g
ICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmpl
Y3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgaW50IGlk
ZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29s
IGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQpOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYs
IGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgY29uc3QgUmVmUHRy
PEpTQzo6QnJlYWtwb2ludD4mKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
OjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJv
cGVydGllcyhOb2RlKik7CiAgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFY
Q29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAgIApAQCAtMjkwLDcgKzI5MSw3
IEBAIHByaXZhdGU6CiAgICAgICAgIEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBib29s
IHVzZUNhcHR1cmUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGRpc2FibGVkIHsgZmFsc2UgfTsK
LSAgICAgICAgYm9vbCBoYXNCcmVha3BvaW50IHsgZmFsc2UgfTsKKyAgICAgICAgUmVmUHRyPEpT
Qzo6QnJlYWtwb2ludD4gYnJlYWtwb2ludDsKIAogICAgICAgICBJbnNwZWN0b3JFdmVudExpc3Rl
bmVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDM1MmMxMzMzNzY0Njlh
YmViYWRkMTk2MTIzNjM4ODk2ZDMwZmM0MzEuLmZiMTM4YTJlMmZmZjJlMjE1MzFhYzE4NGYxZTFj
Y2EyZTVlNTdhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNzYsMTAgKzc2LDEx
IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgbV9pbnN0
cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAg
ICAgbV9saXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9wYXVzZU9uQWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtw
b2ludCA9IG51bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVs
bHB0cjsKKwogICAgIG1fdXJsQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX3BhdXNlT25BbGxJ
bnRlcnZhbHNFbmFibGVkID0gZmFsc2U7Ci0gICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxl
ZCA9IGZhbHNlOwotICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IGZhbHNlOwogICAg
IG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkID0gZmFsc2U7CiB9CiAKQEAgLTExMSw3ICsxMTIsMjIg
QEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNjYXJkQWdlbnQoKQogICAgIG1f
ZGVidWdnZXJBZ2VudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6c2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBicmVha3BvaW50VHlwZVN0cmluZywgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpCit2
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCit7Cisg
ICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogbV9saXN0ZW5lckJyZWFrcG9pbnRzLnZhbHVlcygp
KQorICAgICAgICBicmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7CisKKyAgICBpZiAobV9wYXVz
ZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxz
QnJlYWtwb2ludC0+cmVzZXRIaXRDb3VudCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbExpc3Rl
bmVyc0JyZWFrcG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQt
PnJlc2V0SGl0Q291bnQoKTsKKworICAgIGlmIChtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9p
bnQpCisgICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludC0+cmVzZXRIaXRDb3Vu
dCgpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtw
b2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5
cGVTdHJpbmcsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lLCBjb25zdCBKU09OOjpPYmplY3QqIG9w
dGlvbnNQYXlsb2FkKQogewogICAgIGlmIChicmVha3BvaW50VHlwZVN0cmluZy5pc0VtcHR5KCkp
IHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiYnJlYWtwb2ludFR5cGUgaXMgZW1wdHkiX3M7CkBA
IC0xMjQsMTAgKzE0MCwxMyBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2
ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogICAgICAgICByZXR1
cm47CiAgICAgfQogCisgICAgYXV0byBicmVha3BvaW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXls
b2FkKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChl
dmVudE5hbWUgJiYgIWV2ZW50TmFtZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChicmVha3Bv
aW50VHlwZS52YWx1ZSgpID09IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVu
dEJyZWFrcG9pbnRUeXBlOjpMaXN0ZW5lcikgewotICAgICAgICAgICAgaWYgKCFtX2xpc3RlbmVy
QnJlYWtwb2ludHMuYWRkKCpldmVudE5hbWUpKQotICAgICAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIkJyZWFrcG9pbnQgd2l0aCBldmVudE5hbWUgYWxyZWFkeSBleGlzdHMiX3M7CisgICAgICAg
ICAgICBtX2xpc3RlbmVyQnJlYWtwb2ludHMuc2V0KCpldmVudE5hbWUsIGJyZWFrcG9pbnQucmVs
ZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTM3
LDI1ICsxNTYsMTkgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudEJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb24KIAogICAgIHN3aXRjaCAoYnJl
YWtwb2ludFR5cGUudmFsdWUoKSkgewogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
RGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkFuaW1hdGlvbkZyYW1lOgotICAgICAgICBz
ZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoZXJyb3JTdHJpbmcsIHRydWUpOworICAgICAgICBz
ZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoZXJyb3JTdHJpbmcsIFdURk1vdmUoYnJlYWtwb2lu
dCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9N
RGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkludGVydmFsOgotICAgICAgICBpZiAobV9w
YXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCkKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJy
ZWFrcG9pbnQgZm9yIEludGVydmFsIGFscmVhZHkgZXhpc3RzIl9zOwotICAgICAgICBtX3BhdXNl
T25BbGxJbnRlcnZhbHNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7CiAgICAgICAgIGJyZWFrOwogCiAg
ICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50
VHlwZTo6TGlzdGVuZXI6Ci0gICAgICAgIGlmIChtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVk
KQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgTGlzdGVuZXIgYWxy
ZWFkeSBleGlzdHMiX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQgPSB0
cnVlOworICAgICAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gV1RGTW92ZShi
cmVha3BvaW50KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpUaW1lb3V0OgotICAgICAgICBp
ZiAobV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiQnJlYWtwb2ludCBmb3IgVGltZW91dCBhbHJlYWR5IGV4aXN0cyJfczsKLSAgICAgICAgbV9w
YXVzZU9uQWxsVGltZW91dHNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsVGlt
ZW91dHNCcmVha3BvaW50ID0gV1RGTW92ZShicmVha3BvaW50KTsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQpAQCAtMTg2LDM0ICsxOTksMzEgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpyZW1vdmVFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLAogCiAg
ICAgc3dpdGNoIChicmVha3BvaW50VHlwZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6
OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6QW5pbWF0aW9uRnJh
bWU6Ci0gICAgICAgIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgZmFs
c2UpOworICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoZXJyb3JTdHJpbmcsIG51
bGxwdHIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkludGVydmFsOgotICAgICAgICBpZiAo
IW1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQpCisgICAgICAgIGlmICghbV9wYXVzZU9uQWxs
SW50ZXJ2YWxzQnJlYWtwb2ludCkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9p
bnQgZm9yIEludGVydmFscyBtaXNzaW5nIl9zOwotICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZh
bHNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9p
bnQgPSBudWxscHRyOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6Okxpc3RlbmVyOgotICAgICAg
ICBpZiAoIW1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQpCisgICAgICAgIGlmICghbV9wYXVz
ZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJy
ZWFrcG9pbnQgZm9yIExpc3RlbmVycyBtaXNzaW5nIl9zOwotICAgICAgICBtX3BhdXNlT25BbGxM
aXN0ZW5lcnNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0Jy
ZWFrcG9pbnQgPSBudWxscHRyOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OlRpbWVvdXQ6Ci0g
ICAgICAgIGlmICghbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkKQorICAgICAgICBpZiAoIW1f
cGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCkKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0g
IkJyZWFrcG9pbnQgZm9yIFRpbWVvdXRzIG1pc3NpbmciX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFs
bFRpbWVvdXRzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQgPSBudWxscHRyOwogICAgICAgICBicmVhazsKICAgICB9CiB9CiAKIHZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCwgY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKQogewot
ICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKQotICAgICAgICBy
ZXR1cm47Ci0KICAgICBhdXRvIHN0YXRlID0gZXZlbnQudGFyZ2V0KCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CiAgICAgYXV0byBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9yKHN0YXRlKTsKICAgICBpZiAoaW5q
ZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtMjI1LDEyICsyMzUsMjAgQEAgdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25z
dCBSZWdpc3RlcmVkRXYKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0RXZlbnRWYWx1ZSh0b0pT
KHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgZXZlbnQp
KTsKICAgICB9CiAKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUo
KSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRp
bmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAKLSAgICBib29sIHNob3VsZFBhdXNlID0g
bV9kZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCBtX3BhdXNl
T25BbGxMaXN0ZW5lcnNFbmFibGVkIHx8IG1fbGlzdGVuZXJCcmVha3BvaW50cy5jb250YWlucyhl
dmVudC50eXBlKCkpOwotICAgIGlmICghc2hvdWxkUGF1c2UgJiYgZG9tQWdlbnQpCi0gICAgICAg
IHNob3VsZFBhdXNlID0gZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKCpl
dmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKLSAg
ICBpZiAoIXNob3VsZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFsbExp
c3RlbmVyc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KSB7CisgICAgICAgIGF1dG8g
aXQgPSBtX2xpc3RlbmVyQnJlYWtwb2ludHMuZmluZChldmVudC50eXBlKCkpOworICAgICAgICBp
ZiAoaXQgIT0gbV9saXN0ZW5lckJyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICAgICAgYnJlYWtw
b2ludCA9IGl0LT52YWx1ZS5jb3B5UmVmKCk7CisgICAgfQorICAgIGlmICghYnJlYWtwb2ludCAm
JiBkb21BZ2VudCkKKyAgICAgICAgYnJlYWtwb2ludCA9IGRvbUFnZW50LT5icmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVz
ZUNhcHR1cmUoKSk7CisgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICByZXR1cm47CiAKICAg
ICBSZWY8SlNPTjo6T2JqZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwpA
QCAtMjQxLDEyICsyNTksMzYgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxs
SGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXYKICAgICAgICAgICAg
IGV2ZW50RGF0YS0+c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5lcklkIl9zLCBldmVudExpc3RlbmVy
SWQpOwogICAgIH0KIAotICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Okxp
c3RlbmVyLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOworICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1
bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50LCBJbnNwZWN0b3I6OkRlYnVn
Z2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Okxpc3RlbmVyLCBXVEZNb3ZlKGV2ZW50RGF0
YSkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50
KCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSGFuZGxlRXZlbnQoRXZlbnQm
IGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXIpCiB7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuY2xlYXJFdmVudFZhbHVlKCk7
CisgICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmV4ZWNTdGF0ZSgpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CisgICAgaWYgKGluamVjdGVkU2Ny
aXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgeworICAgICAgICBKU0M6
OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKworICAgICAgICBpbmplY3RlZFNjcmlwdC5jbGVh
ckV2ZW50VmFsdWUoKTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtw
b2ludHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogZG9tQWdlbnQgPSBt
X2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CisKKyAgICBhdXRvIGJy
ZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50OworICAgIGlmICghYnJl
YWtwb2ludCkKKyAgICAgICAgYnJlYWtwb2ludCA9IG1fbGlzdGVuZXJCcmVha3BvaW50cy5nZXQo
ZXZlbnQudHlwZSgpKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQgJiYgZG9tQWdlbnQpCisgICAgICAg
IGJyZWFrcG9pbnQgPSBkb21BZ2VudC0+YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50
LmN1cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5j
YWxsYmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOworICAgIGlm
ICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWJ1Z2dlckFnZW50LT5j
YW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50KTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZVRpbWVyKGJvb2wgb25lU2hvdCkKQEAg
LTI1NCwxMiArMjk2LDI0IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZp
cmVUaW1lcihib29sIG9uZVNob3QpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9p
bnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkUGF1c2UgPSBt
X2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50RW5hYmxlZCgpIHx8IChvbmVTaG90
ID8gbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkIDogbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5h
YmxlZCk7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSkKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBvbmVT
aG90ID8gbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50IDogbV9wYXVzZU9uQWxsSW50ZXJ2
YWxzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIGF1dG8gYnJlYWtSZWFzb24gPSBvbmVTaG90ID8gSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpUaW1lb3V0IDogSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpJbnRlcnZhbDsKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNj
aGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoYnJlYWtSZWFzb24sIG51bGxwdHIpOworICAgIG1f
ZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3Bv
aW50LCBicmVha1JlYXNvbik7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlkRmlyZVRpbWVyKGJvb2wgb25lU2hvdCkKK3sKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+
YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBicmVha3Bv
aW50ID0gb25lU2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCA6IG1fcGF1c2VP
bkFsbEludGVydmFsc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFr
cG9pbnQoKmJyZWFrcG9pbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OnNldFVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmggYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApp
bmRleCAwMWUzYmRjZjAwNGFlNjQwZGZhOTYzZmY5YTU0YzM1ZDJhZWNkMDUyLi45ZjZlNjM4ZTMz
ZWUwMzA5NDk5ZTY3MjYwMjFiZDBjMDgxOTRlODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaApA
QCAtMzIsMTAgKzMyLDEzIEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3Rvcldl
YkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKQEAgLTY0LDcgKzY3LDcg
QEAgcHVibGljOgogICAgIC8vIERPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAg
ICAgdm9pZCBzZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmws
IGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkgZmluYWw7CiAgICAgdm9pZCByZW1vdmVVUkxC
cmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwpIGZpbmFsOwotICAgIHZv
aWQgc2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3Bv
aW50VHlwZSwgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpIGZpbmFsOworICAgIHZvaWQgc2V0RXZl
bnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50VHlwZSwg
Y29uc3QgU3RyaW5nKiBldmVudE5hbWUsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucykgZmlu
YWw7CiAgICAgdm9pZCByZW1vdmVFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSkgZmluYWw7CiAK
ICAgICAvLyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lcgpAQCAtNzIsMTggKzc1LDIw
IEBAIHB1YmxpYzoKICAgICB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBvdmVycmlkZTsKIAog
ICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgorICAgIHZpcnR1YWwgdm9pZCBtYWluRnJh
bWVOYXZpZ2F0ZWQoKTsKICAgICB2b2lkIHdpbGxTZW5kWE1MSHR0cFJlcXVlc3QoY29uc3QgU3Ry
aW5nJiB1cmwpOwogICAgIHZvaWQgd2lsbEZldGNoKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB2
b2lkIHdpbGxIYW5kbGVFdmVudChFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
Jik7Ci0gICAgdm9pZCBkaWRIYW5kbGVFdmVudCgpOworICAgIHZvaWQgZGlkSGFuZGxlRXZlbnQo
RXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwogICAgIHZvaWQgd2lsbEZp
cmVUaW1lcihib29sIG9uZVNob3QpOworICAgIHZvaWQgZGlkRmlyZVRpbWVyKGJvb2wgb25lU2hv
dCk7CiAKIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KFdlYkFnZW50
Q29udGV4dCYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCopOwogICAgIHZpcnR1
YWwgdm9pZCBlbmFibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZSgpOwogCi0gICAgdmly
dHVhbCB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGJvb2wg
ZW5hYmxlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmKSA9IDA7CiAKICAgICBJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudCB7IG51bGxw
dHIgfTsKIApAQCAtOTQsMTQgKzk5LDEzIEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAg
ICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXI7CiAKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9saXN0ZW5lckJyZWFrcG9pbnRzOworICAgIEhh
c2hNYXA8U3RyaW5nLCBSZWY8SlNDOjpCcmVha3BvaW50Pj4gbV9saXN0ZW5lckJyZWFrcG9pbnRz
OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFr
cG9pbnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQWxsTGlzdGVuZXJz
QnJlYWtwb2ludDsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX3BhdXNlT25BbGxUaW1l
b3V0c0JyZWFrcG9pbnQ7CiAKICAgICBlbnVtIGNsYXNzIFVSTEJyZWFrcG9pbnRUeXBlIHsgUmVn
dWxhckV4cHJlc3Npb24sIFRleHQgfTsKICAgICBIYXNoTWFwPFN0cmluZywgVVJMQnJlYWtwb2lu
dFR5cGU+IG1fdXJsQnJlYWtwb2ludHM7Ci0KLSAgICBib29sIG1fcGF1c2VPbkFsbEludGVydmFs
c0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxl
ZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgeyBmYWxz
ZSB9OwogICAgIGJvb2wgbV9wYXVzZU9uQWxsVVJMc0VuYWJsZWQgeyBmYWxzZSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMTQwZTE1NzhjNWYwOTZlNDQ0ZWQxNDkyMDc3MThlZTdm
ODY0NTUyNi4uMzAxZWY5NTI1NjQ5YmEwMGRiMjI5MzM0ODUyNjE3M2NkMTE5MjdhYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRp
bWVsaW5lQWdlbnQuY3BwCkBAIC01MSw5ICs1MSw5IEBACiAjaW5jbHVkZSAiVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFnZW50LmgiCiAjaW5jbHVkZSAiV2Vi
RGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaD4KLSNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9TY3JpcHRCcmVha3BvaW50Lmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRj
aC5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAgLTE4Nyw3ICsxODcsNyBAQCB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQoY29uc3QgaW50KiBtYXhDYWxs
U3RhY2tEZXB0aCkKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ1RpbWVs
aW5lQWdlbnQodGhpcyk7CiAKLSAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCku
YWRkTGlzdGVuZXIodGhpcyk7CisgICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigp
LmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIG1fdHJhY2tpbmcgPSB0cnVlOwogCkBAIC0yNDEs
NyArMjQxLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3AoKQog
CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFRyYWNraW5nVGltZWxpbmVBZ2VudChudWxs
cHRyKTsKIAotICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVMaXN0
ZW5lcih0aGlzLCB0cnVlKTsKKyAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCku
cmVtb3ZlT2JzZXJ2ZXIoKnRoaXMsIHRydWUpOwogCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
bV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAtNjY5LDExICs2NjksOSBAQCB2b2lk
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVPYnNlcnZlckNhbGxiYWNrKCkKICAgICBk
aWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNvcmRUeXBlOjpPYnNlcnZlckNhbGxi
YWNrKTsKIH0KIAotLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgotCi12b2lkIEluc3BlY3RvclRpbWVs
aW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhp
Y2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24m
IGFjdGlvbiwgdW5zaWduZWQgLypiYXRjaElkKi8sIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpT
VmFsdWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9i
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OkJyZWFrcG9p
bnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypiYXRjaElkKi8sIHVuc2lnbmVkIHNhbXBs
ZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFj
dG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbiwgc2FtcGxlSWQpLCBUaW1lbGluZVJl
Y29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGxleGljYWxH
bG9iYWxPYmplY3QpKTsKKyAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5Ojpj
cmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uSUQsIHNhbXBsZUlkKSwgVGltZWxpbmVSZWNvcmRU
eXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4ZWNTdGF0ZShsZXhpY2FsR2xvYmFs
T2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBJbnNwZWN0b3I6OlByb3RvY29sOjpUaW1lbGluZTo6RXZl
bnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBlIHR5cGUpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5o
CmluZGV4IDMwZmM5Nzk1MjRhOTRiZTBkMzQxNTUxZTFmZThlZGNmOWE0ZjdiM2IuLjk1YThlM2Vk
NzJkMmZiNDQ1MTRhMzEzYTE0MWMxYTlhNzk4OTM4NWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oCkBAIC0z
NCw5ICszNCwxMCBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCiAjaW5j
bHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+
CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXJQcmltaXRpdmVzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmREaXNwYXRjaGVycy5oPgotI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdERlYnVnTGlzdGVuZXIuaD4KICNpbmNsdWRlIDx3dGYv
SlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIApAQCAtODEsNyArODIsNyBA
QCBlbnVtIGNsYXNzIFRpbWVsaW5lUmVjb3JkVHlwZSB7CiAgICAgT2JzZXJ2ZXJDYWxsYmFjaywK
IH07CiAKLWNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlICwgcHVibGljIEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hl
ckhhbmRsZXIgLCBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKK2NsYXNz
IEluc3BlY3RvclRpbWVsaW5lQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNl
ICwgcHVibGljIEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgLCBw
dWJsaWMgSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgpAQCAtMTAwLDE2ICsxMDEsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRBdXRvQ2Fw
dHVyZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sKSBvdmVycmlkZTsKICAgICB2b2lkIHNldElu
c3RydW1lbnRzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6QXJyYXkmKSBvdmVycmlkZTsKIAot
ICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6
U291cmNlSUQsIGNvbnN0IFNjcmlwdCYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZmFpbGVkVG9Q
YXJzZVNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBpbnQsIGludCwgY29uc3Qg
U3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgb3ZlcnJp
ZGUgeyB9Ci0gICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSBvdmVycmlkZSB7IH0KLSAgICB2b2lk
IGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkpTVmFsdWUsIEpTQzo6SlNWYWx1
ZSkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaWRDb250aW51ZSgpIG92ZXJyaWRlIHsgfQotICAg
IHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50KSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50QWN0aW9uJiwgdW5zaWdu
ZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSByZXN1bHQpIG92ZXJy
aWRlOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAgdm9pZCBicmVha3BvaW50
QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6QnJlYWtwb2ludEFjdGlvbklE
LCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAgICB2b2lkIGRp
ZEluc3RhbGxUaW1lcihpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNo
b3QsIEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCAxMzliYmM1ZTMwMjEw
NjY1MjQ3NDU1NzM5MzU1ZjhjZGU3NGMyMTkwLi43NTU0NThjMGIxZDE2M2MxYzE2NmZjY2E1OGY1
ZDc4ZDBhYmY5OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTk0LDcgKzk0LDgg
QEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgbV9pbnN0cnVtZW50
aW5nQWdlbnRzLnNldEVuYWJsZWRQYWdlRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKIAogICAg
IG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFt
ZXNFbmFibGVkID0gZmFsc2U7CisKKyAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50ID0gbnVsbHB0cjsKIAogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2Fi
bGUoKTsKIH0KQEAgLTE1Miw2ICsxNTMsMTQgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6
cmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2QKICAg
ICB9CiB9CiAKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgp
Cit7CisgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKCk7
CisKKyAgICBpZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAg
ICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC0+cmVzZXRIaXRDb3VudCgp
OworfQorCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpmcmFtZURvY3VtZW50VXBkYXRlZChG
cmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZS5pc01haW5GcmFtZSgpKQpAQCAtMjUyLDEx
ICsyNjEsMjMgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVBbmltYXRpb25G
cmFtZSgpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkUGF1c2UgPSBtX2RlYnVnZ2VyQWdlbnQt
PnBhdXNlT25OZXh0U3RhdGVtZW50RW5hYmxlZCgpIHx8IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZy
YW1lc0VuYWJsZWQ7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSkKKyAgICBhdXRvIGJyZWFrcG9pbnQg
PSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtw
b2ludCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBh
dXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6QW5pbWF0aW9uRnJhbWUsIG51bGxwdHIpOworICAgIG1fZGVidWdnZXJBZ2VudC0+
c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50LCBJbnNwZWN0b3I6
OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFuaW1hdGlvbkZyYW1lKTsKK30K
Kwordm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCkKK3sK
KyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgYXV0byBicmVha3BvaW50ID0gbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJl
YWtwb2ludCk7CiB9CiAKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnZhbGlkYXRl
U3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0yNzEsMTIgKzI5Miw5IEBAIHZvaWQgUGFn
ZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1l
bnQpCiAgICAgfQogfQogCi12b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25G
cmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQpCit2
b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmIGJyZWFrcG9pbnQpCiB7Ci0gICAg
aWYgKG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQgPT0gZW5hYmxlZCkKLSAgICAg
ICAgZXJyb3JTdHJpbmcgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkID8gIkJy
ZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIGFscmVhZHkgZXhpc3RzIl9zIDogIkJyZWFrcG9p
bnQgZm9yIEFuaW1hdGlvbkZyYW1lIG1pc3NpbmciX3M7Ci0KLSAgICBtX3BhdXNlT25BbGxBbmlt
YXRpb25GcmFtZXNFbmFibGVkID0gZW5hYmxlZDsKKyAgICBtX3BhdXNlT25BbGxBbmltYXRpb25G
cmFtZXNCcmVha3BvaW50ID0gV1RGTW92ZShicmVha3BvaW50KTsKIH0KIAogdm9pZCBQYWdlRE9N
RGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBi
cmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpTT046Ok9iamVjdCYgZGVzY3JpcHRpb24p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURP
TURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IDdkZGY0NTNiOTQxOWQyMGZhOTE0NmMxMTdmYWFi
ZmE1MWZmMzQ2MDQuLmJhNGVmNjAyM2RhYjMwOGIxYWQ1MWJkODYyNDkwYmFiNTcwYTFhMmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVi
dWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9Q
YWdlRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9CcmVha3BvaW50Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3Zl
RE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlw
ZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICB2b2lk
IG1haW5GcmFtZU5hdmlnYXRlZCgpIGZpbmFsOwogICAgIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0
ZWQoRnJhbWUmKTsKICAgICB2b2lkIHdpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCk7CiAg
ICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUmKTsKQEAgLTU1LDEyICs1OCwxMyBAQCBwdWJs
aWM6CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxs
SW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlv
bkZyYW1lKCk7CisgICAgdm9pZCBkaWRGaXJlQW5pbWF0aW9uRnJhbWUoKTsKIAogcHJpdmF0ZToK
ICAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZSgpIG92ZXJyaWRl
OwogCi0gICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBi
b29sIGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikgb3ZlcnJpZGU7CiAK
ICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9kZSYsIGludCBicmVha3BvaW50VHlw
ZSwgYm9vbCBpbnNlcnRpb24sIEpTT046Ok9iamVjdCYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQg
dXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBz
ZXQpOwpAQCAtNjgsNyArNzIsOCBAQCBwcml2YXRlOgogICAgIGJvb2wgaGFzQnJlYWtwb2ludChO
b2RlKiwgaW50IHR5cGUpOwogCiAgICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJl
YWtwb2ludHM7Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkIHsg
ZmFsc2UgfTsKKworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcAppbmRleCA1MGNjOThiM2ZhMzBlM2RhMWY2ZTVlZGQyOTFjOWNjNjYzMTY2
ZTcxLi4yMTdjYjU1ZTZjMGVkNzZjOWU2NzQxOGE4YzMzNGEwNDE4ZmNlMmQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdn
ZXJBZ2VudC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlz
YWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAgICAgV2ViRGVidWdnZXJBZ2VudDo6ZGlzYWJs
ZShpc0JlaW5nRGVzdHJveWVkKTsKIH0KIAotU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3Vy
Y2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgUGFnZURlYnVn
Z2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3Jp
cHQmIHNjcmlwdCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VN
YXBIVFRQSGVhZGVyKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJTb3VyY2VNYXAiKSk7CiAgICAg
c3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0
ZWQoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlgtU291cmNlTWFwIikpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQu
aAppbmRleCBkMTM5MTA4YmZiOTg4MzQ5MzlhZDAyOWM2N2M5NmE4ZmUxOWM3NjNhLi40YzI3ZGQx
Yzc0YjEyZTg1N2I2Y2Y2NTEwZjg5OTc2MDdhMTY2MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAt
NTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmlu
Zyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3Qg
Ym9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBy
ZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNh
dmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVtdWxhdGVVc2VyR2VzdHVyZSwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9v
bD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGU7
CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9u
TG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICAv
LyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogICAgIC8v
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJ
bldvcmxkKEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoYm9vbCBp
c0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKIAotICAgIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JT
Y3JpcHQoY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGU7CisgICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZv
clNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmKSBvdmVycmlkZTsKIAogICAgIHZv
aWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2Vy
L1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYWQ4M2Y2ZDM3YmQ2
NGJjZTIyMWUzZGFjZDdhMjI5OTMxMTJhOGY2Mi4uMTQ3NmZiYzgxOTYzNTdkOTEyYmM4MmEzYzM1
NGU4M2E5NGE0NjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgdm9pZCBXb3JrZXJET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IC8KICAgICBlcnJvclN0cmluZyA9ICJO
b3Qgc3VwcG9ydGVkIl9zOwogfQogCi12b2lkIFdvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFu
aW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgLyog
ZW5hYmxlZCAqLykKK3ZvaWQgV29ya2VyRE9NRGVidWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJh
bWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTQzo6QnJlYWtw
b2ludD4mJikKIHsKICAgICBlcnJvclN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9N
RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIv
V29ya2VyRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGIxMTI4NWUwNDYyZGEyMTEwZjg5NTY2ODY3
ZDVmMDI5NjE3MzJlYjAuLmRhZDE4ZjVjMGVjOGFhM2JjOGI0Zjc4YWRmZjRlOTA4ZmRkODNkZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmgKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFn
bWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgorI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3Qg
U3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldEFuaW1hdGlv
bkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7Cisg
ICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8
SlNDOjpCcmVha3BvaW50PiYmKSBvdmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dv
cmtlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29y
a2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAppbmRleCAzMTkxNjc2NjNjN2Q2NzhjNDBhMmRmZmU0
MTQ2NWQ1NWIzZWUzNWEzLi40YWMwN2Q2Y2MzN2MyMjgwMzMzOGViODBkMzQyMTk1MjFiOTZmM2Rl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3Jr
ZXJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93
b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAg
ICBXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29udGV4dCYpOwogICAgIH5Xb3JrZXJE
ZWJ1Z2dlckFnZW50KCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0g
ICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZv
aWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5n
JiBkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIG11dGUg
Y29uc29sZSBmb3Igd29ya2Vycy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
VGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggNWI5MzFl
ZmExZjAzYWJhOWY2NzlmNzk1MmRkOWFkZjczYzgxNjFjOC4uODY1NDA4ZGJmYTUwMzYyMWZhYzQx
ZjIwZjZjZmZiZjQ0MzU4YTYwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTI4NCw2
ICsyODQsOCBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAgLy8gd2FpdCB1bml0IHRoZSBl
bmQgb2YgdGhpcyBmdW5jdGlvbiB0byBkZWxldGUgRE9NVGltZXIuCiAgICAgUmVmPERPTVRpbWVy
PiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAorICAgIGJvb2wgb25lU2hvdCA9ICFyZXBlYXRJbnRl
cnZhbCgpOworCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7
CiAKQEAgLTI5MSw3ICsyOTMsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAgaWYgKGlz
PERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0
PERvY3VtZW50Pihjb250ZXh0KTsKICAgICAgICAgaWYgKGF1dG8qIGhvbGRpbmdUYW5rID0gZG9j
dW1lbnQuZG9tVGltZXJIb2xkaW5nVGFua0lmRXhpc3RzKCk7IGhvbGRpbmdUYW5rICYmIGhvbGRp
bmdUYW5rLT5jb250YWlucygqdGhpcykpIHsKLSAgICAgICAgICAgIGlmICghcmVwZWF0SW50ZXJ2
YWwoKSkKKyAgICAgICAgICAgIGlmIChvbmVTaG90KQogICAgICAgICAgICAgICAgIHN0YXJ0T25l
U2hvdCgwX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMDksNyArMzEx
LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGV4ZWN1
dGlvbiBvZiBhIG11bHRpLXNob3QgdGltZXIgc2hvdWxkIGdldCBhbiBhZmZpcm1hdGl2ZSB1c2Vy
IGdlc3R1cmUgaW5kaWNhdG9yLgogICAgIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51
bGxwdHI7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29u
dGV4dCwgbV90aW1lb3V0SWQsICFyZXBlYXRJbnRlcnZhbCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsIG9uZVNob3Qp
OwogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYg
KGlzQWN0aXZlKCkpIHsKQEAgLTMyMCw3ICszMjIsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgp
CiAKICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICAgICAgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29udGV4dCk7CisgICAgICAgIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCBv
bmVTaG90KTsKIAogICAgICAgICB1cGRhdGVUaHJvdHRsaW5nU3RhdGVJZk5lY2Vzc2FyeShmaXJl
U3RhdGUpOwogICAgICAgICByZXR1cm47CkBAIC0zMzgsNyArMzQwLDcgQEAgdm9pZCBET01UaW1l
cjo6ZmlyZWQoKQogI2VuZGlmCiAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAg
ICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0KTsKKyAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0LCBtX3RpbWVvdXRJ
ZCwgb25lU2hvdCk7CiAKICAgICAvLyBDaGVjayBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgbmVzdGVk
IHNpbmdsZS1zaG90IHRpbWVycy4KICAgICBpZiAobmVzdGVkVGltZXJzKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKaW5kZXgg
M2IxOTlmYTY4OGZiNTY5NjMyODE1NzQzZjMwNGFmOGM0NTdhZjZmZC4uZWQ1YWIwMDk2YjJkMTA2
Njc4ZmE5OTgyODUyZWM5OGI2ZjMyMTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpAQCAtMTk3LDEyICsxOTcsOCBAQCBX
SS5zZXR0aW5ncyA9IHsKICAgICBzZWFyY2hSZWd1bGFyRXhwcmVzc2lvbjogbmV3IFdJLlNldHRp
bmcoInNlYXJjaC1yZWd1bGFyLWV4cHJlc3Npb24iLCBmYWxzZSksCiAgICAgc2VsZWN0ZWROZXR3
b3JrRGV0YWlsQ29udGVudFZpZXdJZGVudGlmaWVyOiBuZXcgV0kuU2V0dGluZygibmV0d29yay1k
ZXRhaWwtY29udGVudC12aWV3LWlkZW50aWZpZXIiLCAicHJldmlldyIpLAogICAgIHNvdXJjZU1h
cHNFbmFibGVkOiBuZXcgV0kuU2V0dGluZygic291cmNlLW1hcHMtZW5hYmxlZCIsIHRydWUpLAot
ICAgIHNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hv
dy1hbGwtYW5pbWF0aW9uLWZyYW1lcy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxJ
bnRlcnZhbHNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtaW50ZXZlcmFscy1i
cmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50OiBuZXcg
V0kuU2V0dGluZygic2hvdy1hbGwtbGlzdGVuZXJzLWJyZWFrcG9pbnQiLCBmYWxzZSksCiAgICAg
c2hvd0FsbE1pY3JvdGFza3NCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtbWlj
cm90YXNrcy1icmVha3BvaW50IiwgZmFsc2UpLAogICAgIHNob3dBbGxSZXF1ZXN0c0JyZWFrcG9p
bnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFsbC1yZXF1ZXN0cy1icmVha3BvaW50IiwgZmFsc2Up
LAotICAgIHNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFs
bC10aW1lb3V0cy1icmVha3BvaW50IiwgZmFsc2UpLAogICAgIHNob3dBc3NlcnRpb25GYWlsdXJl
c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFzc2VydGlvbi1mYWlsdXJlcy1icmVh
a3BvaW50IiwgdHJ1ZSksCiAgICAgc2hvd0NhbnZhc1BhdGg6IG5ldyBXSS5TZXR0aW5nKCJzaG93
LWNhbnZhcy1wYXRoIiwgZmFsc2UpLAogICAgIHNob3dJbWFnZUdyaWQ6IG5ldyBXSS5TZXR0aW5n
KCJzaG93LWltYWdlLWdyaWQiLCB0cnVlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxl
ci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Jy
ZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcwppbmRleCBhZTRjYzQ3YzUxY2NkNzgzMDg5NmFl
YThjMzNjMjQxYjg4OTQxYzM1Li4wOThjYTJkZmNjYmJhNmIxZDdhY2NiOTY0ZDEzODViN2JhNGJj
ODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyLmpzCkBAIC00MCw2MCArNDAsNTkgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9s
bGVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvY3VtZW50LmJvZHkuY29udGFpbnMoYnJlYWtw
b2ludERpc3BsYXlFbGVtZW50KSwgIkJyZWFrcG9pbnQgcG9wb3ZlciBkaXNwbGF5IGVsZW1lbnQg
bXVzdCBiZSBpbiB0aGUgRE9NLiIpOwogCi0gICAgICAgIGNvbnN0IGVkaXRCcmVha3BvaW50ID0g
KCkgPT4gewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVh
a3BvaW50IHBvcG92ZXIgYWxyZWFkeSBleGlzdHMuIik7Ci0gICAgICAgICAgICBpZiAodGhpcy5f
cG9wb3ZlcikKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChicmVha3BvaW50
LmVkaXRhYmxlKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3Ry
aW5nKCJFZGl0IEJyZWFrcG9pbnRcdTIwMjYiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9wb3BvdmVyLCAiQnJlYWtwb2ludCBwb3BvdmVyIGFscmVhZHkg
ZXhpc3RzLiIpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVyKQorICAgICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92ZXJDb250
ZW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBXSS5Qb3Bv
dmVyKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9w
b3ZlckNvbnRlbnRFbGVtZW50OworICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92ZXJD
b250ZW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBuZXcg
V0kuUG9wb3Zlcih0aGlzKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQg
PSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQ7CiAKLSAgICAgICAgICAgIGxldCBib3VuZHMg
PSBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0
Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICAgICAgYm91bmRzLm9yaWdpbi54IC09IDE7
IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNlbnRl
cmVkLgotICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtX
SS5SZWN0RWRnZS5NQVhfWV0pOwotICAgICAgICB9OworICAgICAgICAgICAgICAgIGxldCBib3Vu
ZHMgPSBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQu
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICAgICAgICAgIGJvdW5kcy5vcmlnaW4u
eCAtPSAxOyAvLyBNb3ZlIHRoZSBhbmNob3IgbGVmdCBvbmUgcGl4ZWwgc28gaXQgbG9va3MgbW9y
ZSBjZW50ZXJlZC4KKyAgICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLnByZXNlbnQoYm91bmRz
LnBhZCgyKSwgW1dJLlJlY3RFZGdlLk1BWF9ZXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQogCi0gICAgICAgIGNvbnN0IHJlbW92ZUJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAg
ICAgfTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwg
KCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtwb2lu
dC5kaXNhYmxlZDsKKyAgICAgICAgICAgIH0pOwogCi0gICAgICAgIGNvbnN0IHRvZ2dsZUJyZWFr
cG9pbnQgPSAoKSA9PiB7Ci0gICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFr
cG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgIH07CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5l
ZGl0YWJsZSAmJiBicmVha3BvaW50LmF1dG9Db250aW51ZSkgeworICAgICAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGlu
dWUiKSwgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51
ZSA9ICFicmVha3BvaW50LmF1dG9Db250aW51ZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAg
ICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHRvZ2dsZUF1dG9Db250aW51
ZSA9ICgpID0+IHsKLSAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFr
cG9pbnQuYXV0b0NvbnRpbnVlOwotICAgICAgICB9OworICAgICAgICBpZiAoYnJlYWtwb2ludC5l
ZGl0YWJsZSAmJiAhYnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlzYWJs
ZWQgJiYgYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCkgeworICAgICAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiU2V0IHRvIEF1dG9tYXRpY2FsbHkgQ29udGludWUi
KSwgKCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJy
ZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAg
ICAgICBjb25zdCByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVMb2NhdGlvbiA9ICgpID0+IHsKLSAg
ICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAgICAgICAgICAgaWdub3JlTmV0d29y
a1RhYjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCi0gICAg
ICAgICAgICB9OwotICAgICAgICAgICAgV0kuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VD
b2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24sIG9wdGlvbnMpOwotICAg
ICAgICB9OworICAgICAgICBpZiAoYnJlYWtwb2ludC5yZW1vdmFibGUpIHsKKyAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50Iiks
ICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOworICAgICAgICAg
ICAgfSk7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJl
YWtwb2ludEVkaXRhYmxlKGJyZWFrcG9pbnQpKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXSS5VSVN0cmluZygiRWRpdCBCcmVha3BvaW50XHUyMDI2IiksIGVkaXRCcmVha3Bv
aW50KTsKLQotICAgICAgICBpZiAoYnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9p
bnQuZGlzYWJsZWQpIHsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlT
dHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLSAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMg
Q29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghYnJl
YWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0ku
VUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLSAgICAg
ICAgZWxzZQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygi
RW5hYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKCFi
cmVha3BvaW50LmF1dG9Db250aW51ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCAmJiBicmVha3Bv
aW50LmFjdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
SS5VSVN0cmluZygiU2V0IHRvIEF1dG9tYXRpY2FsbHkgQ29udGludWUiKSwgdG9nZ2xlQXV0b0Nv
bnRpbnVlKTsKLQotICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJl
bW92YWJsZShicmVha3BvaW50KSkKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIHJlbW92ZUJyZWFrcG9pbnQpOwotCi0g
ICAgICAgIGlmIChicmVha3BvaW50Ll9zb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRp
b24oKSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50ICYmIGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0
aW9uKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIE9y
aWdpbmFsIFJlc291cmNlIiksIHJldmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uKTsKKyAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBP
cmlnaW5hbCBSZXNvdXJjZSIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9u
cyA9IHsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICAgaWdub3JlU2VhcmNoVGFiOiB0cnVlLAorICAgICAgICAgICAgICAgIH07
CisgICAgICAgICAgICAgICAgV0kuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9j
YXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24sIG9wdGlvbnMpOworICAgICAgICAg
ICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyNCw3ICsxMjMsMjIgQEAgV0kuQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVy
IGV4dGVuZHMgV0kuT2IKICAgICAgICAgbGV0IGNoZWNrYm94TGFiZWwgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJsYWJlbCIpOwogICAgICAgICBjaGVja2JveExhYmVsLmNsYXNzTmFtZSA9ICJ0
b2dnbGUiOwogICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENoaWxkKGNoZWNrYm94RWxlbWVu
dCk7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgaWYgKHRoaXMu
X2JyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkKKyAgICAgICAg
ICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0
aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkV2ZW50QnJlYWtwb2ludCkgeworICAgICAgICAgICAgbGV0
IGRpc3BsYXlOYW1lOworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAg
IGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBBbmltYXRpb24gRnJhbWVzIik7CisgICAg
ICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJ
U3RyaW5nKCJBbGwgSW50ZXJ2YWxzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50
ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJBbGwgRXZlbnRzIik7CisgICAg
ICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
VGltZW91dHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlT
dHJpbmcoIkFsbCBUaW1lb3V0cyIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IGRpc3BsYXlOYW1lID0gYnJlYWtwb2ludC5ldmVudE5hbWU7CisgICAgICAgICAgICBjaGVja2Jv
eExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKGRpc3BsYXlOYW1lKSk7
CisgICAgICAgIH0KIAogICAgICAgICBsZXQgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJ0YWJsZSIpOwogCkBAIC0xNzYsNyArMTkwLDcgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IK
ICAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC5pZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9w
b3Zlci1pZ25vcmUiOwogICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0LnR5cGUgPSAibnVt
YmVyIjsKICAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC5taW4gPSAwOwotICAgICAgICB0
aGlzLl9pZ25vcmVDb3VudElucHV0LnZhbHVlID0gMDsKKyAgICAgICAgdGhpcy5faWdub3JlQ291
bnRJbnB1dC52YWx1ZSA9IGJyZWFrcG9pbnQuaWdub3JlQ291bnQ7CiAgICAgICAgIHRoaXMuX2ln
bm9yZUNvdW50SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3Zlckln
bm9yZUlucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTsKIAogICAgICAgICBpZ25vcmVDb3VudExhYmVs
LnNldEF0dHJpYnV0ZSgiZm9yIiwgdGhpcy5faWdub3JlQ291bnRJbnB1dC5pZCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01E
ZWJ1Z2dlck1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKaW5kZXggZDI5Y2RiODQ5YmYxYzZmOWM1
ZjkyOTAyZGZlMjA0MDkwN2FhYTUxOC4uNzk3YWM5ZWQxNGE5MDMwYzFkODU3NzZiMWE5MDMxNjg1
MDNkNDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpAQCAt
MzMsMzYgKzMzLDI3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJh
bWVJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFr
cG9pbnRzID0gW107CisgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQg
PSBudWxsOworICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbDsKKyAg
ICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgIHRoaXMu
X2FsbFRpbWVvdXRzQnJlYWtwb2ludCA9IG51bGw7CisKICAgICAgICAgdGhpcy5fdXJsQnJlYWtw
b2ludHMgPSBbXTsKIAotICAgICAgICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50
RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLWFuaW1hdGlvbi1m
cmFtZXMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1h
dGlvbkZyYW1lLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAg
ICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNl
dHRpbmcoImJyZWFrLW9uLWFsbC1pbnRlcnZhbHMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2Fs
bEludGVydmFsc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkludGVydmFsLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2Fs
bEludGVydmFsc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0K
LSAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3
IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1saXN0ZW5lcnMiLCBmYWxzZSk7Ci0gICAgICAgIHRo
aXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRo
aXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAg
fSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcg
PSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLXRpbWVvdXRzIiwgZmFsc2UpOwotICAgICAg
ICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAh
dGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAg
IH0pOwotCiAgICAgICAgIHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1yZXF1ZXN0cyIsIGZhbHNlKTsKICAgICAg
ICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50ID0gbmV3IFdJLlVSTEJyZWFrcG9pbnQoV0ku
VVJMQnJlYWtwb2ludC5UeXBlLlRleHQsICIiLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRo
aXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAogICAgICAgICB9
KTsKIAotICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJl
YWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRE9NQnJlYWtw
b2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgV0kuRXZlbnRCcmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3Rh
dGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdl
ZCwgdGhpcyk7Ci0gICAgICAgIFdJLlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5V
UkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVVUkxC
cmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRl
RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQs
IHRoaXMpOworCisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZl
bnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVu
dEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlv
bkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNo
YW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50Lklnbm9yZUNvdW50RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVF
dmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJ
LkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0
b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVBy
b3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFu
ZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJLlVS
TEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVk
U3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVVSTEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hh
bmdlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsK
ICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZl
bnQuTm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwpAQCAtNzgsNyArNjks
NyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXpl
ZEJyZWFrcG9pbnRzID0gV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoa2V5KTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4
aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGF3YWl0IG9iamVjdFN0b3JlLnB1dE9iamVjdChjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShleGlz
dGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXdhaXQgb2JqZWN0U3RvcmUucHV0T2JqZWN0KGNvbnN0cnVjdG9yLmZyb21KU09OKGV4aXN0aW5n
U2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgIH0KIApAQCAtODYsNyArNzcsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAgICAgICAg
IHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBmb3Ig
KGxldCBzZXJpYWxpemVkQnJlYWtwb2ludCBvZiBzZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKLSAg
ICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6
ZShzZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gY29uc3RydWN0b3IuZnJvbUpTT04oc2VyaWFsaXplZEJyZWFrcG9pbnQpOwogCiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIG9i
amVjdFN0b3JlLmFzc29jaWF0ZU9iamVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVh
a3BvaW50KTsKQEAgLTEwNSw0MiArOTYsMjEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgaWYgKERP
TURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2ludHMoKSB8fCBET01EZWJ1Z2dl
ck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludHMoKSkgewogICAgICAgICAg
ICAgbG9hZEJyZWFrcG9pbnRzKFdJLkV2ZW50QnJlYWtwb2ludCwgV0kub2JqZWN0U3RvcmVzLmV2
ZW50QnJlYWtwb2ludHMsIFsiZXZlbnQtYnJlYWtwb2ludHMiXSwgKGJyZWFrcG9pbnQpID0+IHsK
LSAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgc2V0
VGltZW91dGAsIGFuZCBgc2V0SW50ZXJ2YWxgIGdsb2JhbCBicmVha3BvaW50cy4KLSAgICAgICAg
ICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQudHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2Ug
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgICAgICAgICAg
ICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3Bv
aW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICBpZiAoIVdJLnNldHRpbmdzLnNob3dB
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52YWx1ZSA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0
aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAg
fQotICAgICAgICAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50cy5k
ZWxldGVPYmplY3QoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZXI6Ci0gICAg
ICAgICAgICAgICAgICAgIHN3aXRjaCAoYnJlYWtwb2ludC5ldmVudE5hbWUpIHsKLSAgICAgICAg
ICAgICAgICAgICAgY2FzZSAic2V0VGltZW91dCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVk
OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91
dHNCcmVha3BvaW50LnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV0kuc2V0
dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGltZW91
dHNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAgICAgIGNhc2UgInNldEludGVydmFs
IjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQu
ZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICAgICAg
aWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSkgewotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVh
a3BvaW50LnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFk
ZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2
ZW50QnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgdGhpcy5h
ZGRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgbGV0IGxvYWRMZWdhY3lHbG9iYWxFdmVudEJyZWFrcG9pbnQgPSAodHlwZSwgc2hvd25T
ZXR0aW5nc0tleSwgZW5hYmxlZFNldHRpbmdzS2V5KSA9PiB7CisgICAgICAgICAgICAgICAgaWYg
KCFXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShzaG93blNldHRpbmdzS2V5KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5FdmVudEJy
ZWFrcG9pbnQodHlwZSwgeworICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIVdJLlNldHRp
bmcubWlncmF0ZVZhbHVlKGVuYWJsZWRTZXR0aW5nc0tleSksCisgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICB9OworICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSwgInNob3ctYWxsLWFuaW1hdGlvbi1mcmFtZXMtYnJl
YWtwb2ludCIsICJicmVhay1vbi1hbGwtYW5pbWF0aW9uLWZyYW1lcyIpOworICAgICAgICAgICAg
dGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJl
YWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCwgInNob3ctYWxsLWludGV2
ZXJhbHMtYnJlYWtwb2ludCIsICJicmVhay1vbi1hbGwtaW50ZXJ2YWxzIik7CisgICAgICAgICAg
ICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRC
cmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAic2hvdy1hbGwtbGlz
dGVuZXJzLWJyZWFrcG9pbnQiLCAiYnJlYWstb24tYWxsLWxpc3RlbmVycyIpOworICAgICAgICAg
ICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRC
cmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQsICJzaG93LWFsbC10aW1l
b3V0cy1icmVha3BvaW50IiwgImJyZWFrLW9uLWFsbC10aW1lb3V0cyIpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkg
fHwgRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzWEhSQnJlYWtwb2ludHMoKSkgewpAQCAtMTYw
LDE2ICsxMzAsMTYgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBXSS5h
c3N1bWluZ01haW5UYXJnZXQoKSAmJiB0YXJnZXQubWFpblJlc291cmNlKQogICAgICAgICAgICAg
ICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JVUkwodGFyZ2V0
Lm1haW5SZXNvdXJjZS51cmwpOwogCi0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbEFuaW1hdGlv
bkZyYW1lc0JyZWFrcG9pbnQuZGlzYWJsZWQpCisgICAgICAgICAgICBpZiAodGhpcy5fYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVu
dEJyZWFrcG9pbnQodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgdGFyZ2V0KTsK
IAotICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LmRpc2FibGVk
KQorICAgICAgICAgICAgaWYgKHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQpCiAgICAgICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbEludGVydmFsc0Jy
ZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWxsTGlzdGVuZXJz
QnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxMaXN0ZW5lcnNC
cmVha3BvaW50KQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCh0
aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0YXJnZXQpOwogCi0gICAgICAgICAgICBpZiAo
IXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIGlmICh0
aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRl
RXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwgdGFyZ2V0KTsKIAog
ICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQuZGlzYWJsZWQpCkBA
IC0yNzAsMTUgKzI0MCw2IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVn
Z2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCBsaXN0ZW5lckJyZWFrcG9pbnRz
KCkgeyByZXR1cm4gdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50czsgfQogICAgIGdldCB1cmxCcmVh
a3BvaW50cygpIHsgcmV0dXJuIHRoaXMuX3VybEJyZWFrcG9pbnRzOyB9CiAKLSAgICBpc0JyZWFr
cG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICByZXR1cm4gYnJlYWtwb2lu
dCA9PT0gdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludAotICAgICAgICAgICAgfHwg
YnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludAotICAgICAgICAgICAg
fHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludAotICAgICAgICAg
ICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50Ci0gICAgICAg
ICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQ7Ci0gICAg
fQotCiAgICAgZG9tQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9kZSk7CkBAIC0zMTksNyArMjgwLDcg
QEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJlYWtwb2ludCB8fCAhYnJlYWtwb2ludC51cmwp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3Bl
Y2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludC5nbG9iYWwpIHsKICAg
ICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MSw3ICszMDIsNyBAQCBXSS5ET01EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0
aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFr
cG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsK
ICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTM4MywxOCArMzQ0LDM4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBp
ZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYg
KHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgewotICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2
ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwotICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50Lmdsb2JhbCwgYnJlYWtwb2lu
dCk7CisKKyAgICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCF0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCB0aGlzLl9hbGxB
bmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBicmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMu
X2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbDoK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50
LCB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBicmVha3BvaW50KTsKKyAgICAgICAgICAg
IHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcjoK
KyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TmFtZSkgeworICAgICAgICAgICAgICAg
IGlmICh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmZpbmQoKGV4aXN0aW5nKSA9PiBleGlzdGlu
Zy5ldmVudE5hbWUgPT09IGJyZWFrcG9pbnQuZXZlbnROYW1lKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJCcmVha3Bv
aW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgdGhpcy5f
YWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgdGhp
cy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LlRpbWVvdXQ6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYWxsVGltZW91dHNC
cmVha3BvaW50LCB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIGJyZWFrcG9pbnQpOworICAg
ICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgYnJlYWtwb2lu
dCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZXZlbnROYW1lLCBicmVha3Bv
aW50KTsKLQotICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5maW5kKChleGlz
dGluZykgPT4gZXhpc3RpbmcuZXZlbnROYW1lID09PSBicmVha3BvaW50LmV2ZW50TmFtZSkpCi0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fbGlzdGVuZXJCcmVha3Bv
aW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50
QWRkZWQsIHticmVha3BvaW50fSk7CiAKQEAgLTQxNSwzOCArMzk2LDQ2IEBAIFdJLkRPTURlYnVn
Z2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgewotICAgICAgICAgICAg
YnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50
UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8g
RGlzYWJsZSB0aGUgYnJlYWtwb2ludCBmaXJzdCwgc28gcmVtb3ZpbmcgYWN0aW9ucyBkb2Vzbid0
IHJlLWFkZCB0aGUgYnJlYWtwb2ludC4KKyAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgIGJyZWFrcG9pbnQuY2xlYXJBY3Rpb25zKCk7CisKKyAgICAgICAgc3dpdGNo
IChicmVha3BvaW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlw
ZS5BbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQpOworICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9IG51
bGw7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2lu
dC5UeXBlLkludGVydmFsOgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWxsSW50
ZXJ2YWxzQnJlYWtwb2ludCwgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCk7CisgICAgICAg
ICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgICAgIGJy
ZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXI6Cisg
ICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudE5hbWUpIHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9p
bnQpLCBicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2xpc3RlbmVyQnJl
YWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMucmVtb3ZlKGJy
ZWFrcG9pbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0aGlzLl9hbGxMaXN0ZW5lcnNC
cmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50
ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dDoKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwgdGhpcy5fYWxsVGltZW91dHNCcmVh
a3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCA9IG51bGw7
CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGJy
ZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LmV2ZW50TmFtZSwg
YnJlYWtwb2ludCk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fbGlzdGVuZXJCcmVh
a3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICgh
dGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLnJlbW92ZShi
cmVha3BvaW50KTsKLQogICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQog
ICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0
KGJyZWFrcG9pbnQpOwogCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVQcm9iZXNG
b3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRSZW1v
dmVkLCB7YnJlYWtwb2ludH0pOwotCi0gICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJn
ZXRzKSB7Ci0gICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTIpOiBET01EZWJ1Z2dl
ci5yZW1vdmVFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KLSAgICAgICAgICAgIGlmICh0
YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50IikpCi0g
ICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3Bv
aW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5ldmVudE5hbWUpOwotICAgICAgICAgICAg
ZWxzZSBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXJCcmVha3BvaW50IikpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKLSAgICAgICAg
ICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudExpc3RlbmVyQnJlYWtw
b2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KICAg
ICB9CiAKICAgICB1cmxCcmVha3BvaW50Rm9yVVJMKHVybCkKQEAgLTQ2MCw3ICs0NDksNyBAQCBX
SS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkp
IHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuVVJMQnJl
YWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgICAgIH0KQEAgLTQ5Myw3ICs0ODIsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVh
a3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtw
b2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFs
KSB7CiAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVu
dC5VUkxCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVy
bjsKQEAgLTcwNCw2ICs2OTMsOCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICghdGhpcy5f
cmVzdG9yaW5nQnJlYWtwb2ludHMgJiYgIVdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0Rp
c2FibGVkVGVtcG9yYXJpbHkpCiAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmJy
ZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7CiAKKyAgICAgICAgICAgIGNvbW1hbmRBcmd1bWVudHMu
b3B0aW9ucyA9IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9jb2woKTsKKwogICAgICAgICAgICAg
dGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQuc2V0RXZlbnRCcmVha3BvaW50Lmludm9rZShjb21tYW5k
QXJndW1lbnRzLCBjYWxsYmFjayk7CiAgICAgICAgIH0KICAgICB9CkBAIC03NjAsMjYgKzc1MSw0
MCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCiAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0
KTsKIAotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsKLSAgICAgICAgY2FzZSB0aGlzLl9h
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlz
YWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5n
QnJlYWtwb2ludHMpCisgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50
cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7CisgICAgfQogCi0gICAgICAgIGNhc2UgdGhpcy5fYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFr
cG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAg
ICAgICAgcmV0dXJuOworICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5
Q2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFy
Z2V0OwogCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludDoKLSAgICAg
ICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9
ICFicmVha3BvaW50LmRpc2FibGVkOworICAgICAgICAvLyBTcGVjaWZpYyBldmVudCBsaXN0ZW5l
ciBicmVha3BvaW50cyBhcmUgaGFuZGxlZCBieSBgRE9NTWFuYWdlcmAuCisgICAgICAgIGlmIChi
cmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
Y2FzZSB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICB0aGlzLl9hbGxU
aW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2Fi
bGVkOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKCF0aGlz
Ll9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVu
dEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsKKworICAgICAgICBpZiAoYnJlYWtw
b2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtw
b2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgIH0KKworCisgICAgX2hhbmRsZUV2ZW50QnJl
YWtwb2ludEFjdGlvbnNDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gU3BlY2lmaWMgZXZlbnQgbGlzdGVuZXIg
YnJlYWtwb2ludHMgYXJlIGhhbmRsZWQgYnkgYERPTU1hbmFnZXJgLgorICAgICAgICBpZiAoYnJl
YWtwb2ludC5ldmVudExpc3RlbmVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRo
aXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKGV2ZW50KTsK
KworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChi
cmVha3BvaW50KTsKICAgICB9CiAKICAgICBfaGFuZGxlVVJMQnJlYWtwb2ludERpc2FibGVkU3Rh
dGVDaGFuZ2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKaW5kZXggNmYyOTc4ZDk0
NGY2M2Y0ZDlkM2UxZjNhYjQxMjIxYzEzZDk2M2IxMy4uYjNkMjZjMDZkOTQxYTJkYmU5M2RmZTEz
MzBlNjhkN2ZkMDNlOGE1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCkBAIC01MCw3ICs1
MCwxMSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICB0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgICAgICB0
aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gbnVsbDsKIAotICAgICAgICBX
SS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5FdmVudEJyZWFrcG9pbnQuRXZl
bnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2Fi
bGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0
aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7Cisg
ICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQu
RXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0
YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2Us
IHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlz
KTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtw
b2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hh
bmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZCwgdGhpcyk7CiAK
ICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVz
b3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAgICAg
fQpAQCAtMTI2LDYgKzEzMCwxMiBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgJiYgSW5zcGVjdG9yQmFja2VuZC5oYXNDb21t
YW5kKCJET00ucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIiKTsKICAgICB9CiAKKyAg
ICBzdGF0aWMgc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludENvbmZpZ3VyYXRpb24oKQor
ICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0KTogRE9NLnNldEJyZWFrcG9p
bnRGb3JFdmVudExpc3RlbmVyIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFyYW1ldGVyIHll
dC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9NLnNldEJy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIiwgIm9wdGlvbnMiKTsKKyAgICB9CisKICAgICBzdGF0
aWMgc3VwcG9ydHNFZGl0aW5nVXNlckFnZW50U2hhZG93VHJlZXMoe2Zyb250ZW5kT25seSwgdGFy
Z2V0fSA9IHt9KQogICAgIHsKICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0IHx8IEluc3BlY3RvckJh
Y2tlbmQ7CkBAIC02NjcsNiArNjc3LDggQEAgV0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAgICAgICAgfQogCisgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAg
ICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0p
OwogICAgIH0KIApAQCAtNjgwLDYgKzY5MiwxMiBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9N
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHRhcmdldC5ET01BZ2Vu
dC5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVyLmV2ZW50TGlz
dGVuZXJJZCk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50
IGZpcnN0LCBzbyByZW1vdmluZyBhY3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50
LgorICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWtwb2lu
dC5jbGVhckFjdGlvbnMoKTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVu
dC5FdmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KIApAQCAtNzEw
LDcgKzcyOCwxMCBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgaWYgKCFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNE
aXNhYmxlZFRlbXBvcmFyaWx5KQogICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCi0gICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQu
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVy
SWQpOworICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNldEJyZWFrcG9pbnRGb3JFdmVudExp
c3RlbmVyLmludm9rZSh7CisgICAgICAgICAgICAgICAgZXZlbnRMaXN0ZW5lcklkOiBldmVudExp
c3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwKKyAgICAgICAgICAgICAgICBvcHRpb25zOiBicmVha3Bv
aW50Lm9wdGlvbnNUb1Byb3RvY29sKCksCisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAg
IH0KIApAQCAtNzI4LDYgKzc0OSwzNCBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQogCisgICAgX2hhbmRsZUV2ZW50
QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAg
bGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gTm9uLXNwZWNpZmlj
IGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBET01EZWJ1Z2dlck1h
bmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAg
ICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQp
OworICAgIH0KKworICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZChldmVu
dCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAg
ICAgIC8vIE5vbi1zcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUgaGFuZGxl
ZCBieSBgRE9NRGVidWdnZXJNYW5hZ2VyYC4KKyAgICAgICAgaWYgKCFicmVha3BvaW50LmV2ZW50
TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faGFuZGxlRXZl
bnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpOworCisgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwor
ICAgIH0KKwogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewogICAgICAg
ICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdn
ZXJNYW5hZ2VyLmpzCmluZGV4IGI0OWJlNTBhYmEzM2M1ZTliMjhhYzY1YTdkODEyOThhOGNlOGZm
NTcuLjk5OTAyOGMyZWNjYTNhNGY2OTc2NmQxZDkwNmM3OWM3NjljOTY4MDUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2Vy
TWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTI5LDEyICsyOSwxMiBAQCBXSS5EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7
CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9i
cmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0
ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMp
OwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5F
dmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5
RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9p
bnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hh
bmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhpcyk7Ci0g
ICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LkFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUJyZWFrcG9pbnRBY3Rpb25zRGlkQ2hhbmdl
LCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFr
cG9pbnREaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlv
bkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRF
ZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51
ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlQnJlYWtwb2lu
dEFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRpc3BsYXlM
b2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcyk7CiAKICAgICAgICAgV0kudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhpcy5faGFu
ZGxlVGltZWxpbmVDYXB0dXJpbmdTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCkBAIC01NiwzMSArNTYs
MzEgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIGNvbnN0IHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24gPSBuZXcg
V0kuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0eSk7CiAKICAgICAg
ICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3
IFdJLlNldHRpbmcoImJyZWFrLW9uLWRlYnVnZ2VyLXN0YXRlbWVudHMiLCB0cnVlKTsKLSAgICAg
ICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50
KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0
ZW1lbnRzQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJl
YWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2RlYnVnZ2Vy
U3RhdGVtZW50c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAg
ICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVl
OwogCiAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcg
PSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7Ci0gICAg
ICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc3Bl
Y2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hbGxFeGNlcHRpb25zQnJl
YWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExv
Y2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLl9h
bGxFeGNlcHRpb25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5f
dW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcoImJyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMu
X3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChzcGVjaWFs
QnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0Jy
ZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRM
b2NhdGlvbiwgewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl91bmNhdWdodEV4Y2VwdGlv
bnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAgICAgICB0
aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKIAogICAg
ICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5l
dyBXSS5TZXR0aW5nKCJicmVhay1vbi1hc3NlcnRpb24tZmFpbHVyZXMiLCBmYWxzZSk7Ci0gICAg
ICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50
KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFp
bHVyZXNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVh
a3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYXNzZXJ0aW9u
RmFpbHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAg
ICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVlOwog
CiAgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBu
ZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLW1pY3JvdGFza3MiLCBmYWxzZSk7Ci0gICAgICAg
IHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc3BlY2lh
bEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtw
b2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0
aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3Bv
aW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLl9hbGxN
aWNyb3Rhc2tzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CkBAIC0xMjYsMTQgKzEyNiwxNCBA
QCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIGxldCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50cyA9IFdJ
LlNldHRpbmcubWlncmF0ZVZhbHVlKCJicmVha3BvaW50cyIpOwogICAgICAgICAgICAgaWYgKGV4
aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQg
ZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludCBvZiBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3Bv
aW50cykKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9p
bnRzLnB1dE9iamVjdChXSS5CcmVha3BvaW50LmZyb21KU09OKGV4aXN0aW5nU2VyaWFsaXplZEJy
ZWFrcG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgV0kub2JqZWN0U3RvcmVzLmJy
ZWFrcG9pbnRzLnB1dE9iamVjdChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9tSlNPTihleGlz
dGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAg
IGxldCBzZXJpYWxpemVkQnJlYWtwb2ludHMgPSBhd2FpdCBXSS5vYmplY3RTdG9yZXMuYnJlYWtw
b2ludHMuZ2V0QWxsKCk7CiAKICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRz
ID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAobGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50IG9mIHNl
cmlhbGl6ZWRCcmVha3BvaW50cykgewotICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0g
V0kuQnJlYWtwb2ludC5mcm9tSlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAgICAg
ICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9tSlNPTihz
ZXJpYWxpemVkQnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBudWxs
OwogICAgICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5hc3NvY2lhdGVP
YmplY3QoYnJlYWtwb2ludCwga2V5LCBzZXJpYWxpemVkQnJlYWtwb2ludCk7CkBAIC0zNDIsMjUg
KzM0Miw2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKLSAgICBpc0JyZWFr
cG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBicmVha3Bv
aW50ICE9PSB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50Ci0gICAgICAgICAgICAm
JiBicmVha3BvaW50ICE9PSB0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludAotICAgICAgICAg
ICAgJiYgYnJlYWtwb2ludCAhPT0gdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDsK
LSAgICB9Ci0KLSAgICBpc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gIXRoaXMuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpCi0gICAg
ICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbE1pY3JvdGFza3NCcmVh
a3BvaW50OwotICAgIH0KLQotICAgIGlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9pbnQpCi0g
ICAgewotICAgICAgICByZXR1cm4gIXRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50
KTsKLSAgICB9Ci0KICAgICBnZXQgYnJlYWtwb2ludHNFbmFibGVkKCkKICAgICB7CiAgICAgICAg
IHJldHVybiB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlOwpAQCAtNjU5LDEx
ICs2NDAsMTEgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAKICAgICBhZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewot
ICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2lu
dCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludCk7CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9p
bnQpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50Lmdsb2JhbCkgewogICAgICAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFr
cG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
fQpAQCAtNjgyLDIyICs2NjMsMjIgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdn
ZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5n
QnJlYWtwb2ludHMpCiAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMucHV0
T2JqZWN0KGJyZWFrcG9pbnQpOwogCi0gICAgICAgIHRoaXMuX2FkZFByb2Jlc0ZvckJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVh
a3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0K
IAogICAgIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9p
bnQpKTsKLSAgICAgICAgaWYgKCF0aGlzLmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50
KSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5yZW1vdmFibGUpOworICAgICAg
ICBpZiAoIWJyZWFrcG9pbnQucmVtb3ZhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAg
aWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRl
YnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTcyMSw3ICs3MDIsNyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIg
PSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0
aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5i
cmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7CiAKLSAgICAgICAgdGhpcy5fcmVt
b3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5yZW1vdmVQ
cm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVtb3Zl
ZCwge2JyZWFrcG9pbnR9KTsKICAgICB9CkBAIC03MzEsNiArNzEyLDc3IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICByZXR1cm4gdGhpcy5fbmV4dEJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKys7CiAgICAgfQog
CisgICAgYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuaGFzKGJyZWFrcG9p
bnQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVu
dGlmaWVyc0ZvckJyZWFrcG9pbnQuc2V0KGJyZWFrcG9pbnQsIG5ldyBTZXQpOworCisgICAgICAg
IHRoaXMudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICB9CisKKyAg
ICByZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50Lmhh
cyhicmVha3BvaW50KSk7CisKKyAgICAgICAgdGhpcy51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworICAgICAgICB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVh
a3BvaW50LmRlbGV0ZShicmVha3BvaW50KTsKKyAgICB9CisKKyAgICB1cGRhdGVQcm9iZXNGb3JC
cmVha3BvaW50KGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICBsZXQga25vd25Qcm9iZUlkZW50
aWZpZXJzID0gdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5nZXQoYnJl
YWtwb2ludCk7CisgICAgICAgIGlmICgha25vd25Qcm9iZUlkZW50aWZpZXJzKSB7CisgICAgICAg
ICAgICAvLyBTb21ldGltZXMgYWN0aW9ucyBjaGFuZ2UgYmVmb3JlIHRoZSBhZGRlZCBicmVha3Bv
aW50IGlzIGZ1bGx5IGRpc3BhdGNoZWQuCisgICAgICAgICAgICB0aGlzLmFkZFByb2Jlc0ZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwor
ICAgICAgICBsZXQgc2VlblByb2JlSWRlbnRpZmllcnMgPSBuZXcgU2V0OworCisgICAgICAgIGZv
ciAobGV0IHByb2JlQWN0aW9uIG9mIGJyZWFrcG9pbnQucHJvYmVBY3Rpb25zKSB7CisgICAgICAg
ICAgICBsZXQgcHJvYmVJZGVudGlmaWVyID0gcHJvYmVBY3Rpb24uaWQ7CisgICAgICAgICAgICBj
b25zb2xlLmFzc2VydChwcm9iZUlkZW50aWZpZXIsICJQcm9iZSBhZGRlZCB3aXRob3V0IGJyZWFr
cG9pbnQgYWN0aW9uIGlkZW50aWZpZXI6ICIsIGJyZWFrcG9pbnQpOworCisgICAgICAgICAgICBz
ZWVuUHJvYmVJZGVudGlmaWVycy5hZGQocHJvYmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGlm
ICgha25vd25Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlkZW50aWZpZXIpKSB7CisgICAgICAg
ICAgICAgICAgLy8gTmV3IHByb2JlOyBmaW5kIG9yIGNyZWF0ZSByZWxldmFudCBwcm9iZSBzZXQu
CisgICAgICAgICAgICAgICAga25vd25Qcm9iZUlkZW50aWZpZXJzLmFkZChwcm9iZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgICAgIGxldCBwcm9iZVNldCA9IHRoaXMuX3Byb2JlU2V0Rm9yQnJl
YWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBsZXQgbmV3UHJvYmUgPSBuZXcg
V0kuUHJvYmUocHJvYmVJZGVudGlmaWVyLCBicmVha3BvaW50LCBwcm9iZUFjdGlvbi5kYXRhKTsK
KyAgICAgICAgICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuc2V0KHByb2JlSWRlbnRp
ZmllciwgbmV3UHJvYmUpOworICAgICAgICAgICAgICAgIHByb2JlU2V0LmFkZFByb2JlKG5ld1By
b2JlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmdldChwcm9iZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUsICJQcm9iZSBrbm93biBidXQg
Y291bGRuJ3QgYmUgZm91bmQgYnkgaWRlbnRpZmllcjogIiwgcHJvYmVJZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIC8vIFVwZGF0ZSBwcm9iZSBleHByZXNzaW9uOyBpZiBpdCBkaWZmZXJlZCwgY2hh
bmdlIGV2ZW50cyB3aWxsIGZpcmUuCisgICAgICAgICAgICBwcm9iZS5leHByZXNzaW9uID0gcHJv
YmVBY3Rpb24uZGF0YTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvb2sgZm9yIG1pc3Npbmcg
cHJvYmVzIGJhc2VkIG9uIHdoYXQgd2Ugc2F3IGxhc3QuCisgICAgICAgIGZvciAobGV0IHByb2Jl
SWRlbnRpZmllciBvZiBrbm93blByb2JlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIGlmIChz
ZWVuUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAg
ICBicmVhazsKKworICAgICAgICAgICAgLy8gVGhlIHByb2JlIGhhcyBnb25lIG1pc3NpbmcsIHJl
bW92ZSBpdC4KKyAgICAgICAgICAgIGxldCBwcm9iZVNldCA9IHRoaXMuX3Byb2JlU2V0Rm9yQnJl
YWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIGxldCBwcm9iZSA9IHRoaXMuX3Byb2Jl
c0J5SWRlbnRpZmllci5nZXQocHJvYmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIHRoaXMuX3By
b2Jlc0J5SWRlbnRpZmllci5kZWxldGUocHJvYmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGtu
b3duUHJvYmVJZGVudGlmaWVycy5kZWxldGUocHJvYmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAg
IHByb2JlU2V0LnJlbW92ZVByb2JlKHByb2JlKTsKKworICAgICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBwcm9iZSBzZXQgaWYgaXQgaGFzIGJlY29tZSBlbXB0eS4KKyAgICAgICAgICAgIGlmICghcHJv
YmVTZXQucHJvYmVzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIHRoaXMuX3Byb2JlU2V0c0J5
QnJlYWtwb2ludC5kZWxldGUocHJvYmVTZXQuYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAg
cHJvYmVTZXQud2lsbFJlbW92ZSgpOworICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Qcm9iZVNldFJlbW92ZWQsIHtw
cm9iZVNldH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCiAgICAgLy8gRGVi
dWdnZXJPYnNlcnZlcgogCiAgICAgYnJlYWtwb2ludFJlc29sdmVkKHRhcmdldCwgYnJlYWtwb2lu
dElkZW50aWZpZXIsIGxvY2F0aW9uKQpAQCAtOTk3LDYwICsxMDQ5LDYgQEAgV0kuRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHJldHVybiBuZXcgV0kuU2NvcGVDaGFpbk5vZGUodHlwZSwgW29iamVjdF0sIHBheWxvYWQubmFt
ZSwgcGF5bG9hZC5sb2NhdGlvbiwgcGF5bG9hZC5lbXB0eSk7CiAgICAgfQogCi0gICAgX2RlYnVn
Z2VyQnJlYWtwb2ludEFjdGlvblR5cGUodHlwZSkKLSAgICB7Ci0gICAgICAgIHN3aXRjaCAodHlw
ZSkgewotICAgICAgICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2c6Ci0gICAgICAg
ICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rp
b25UeXBlLkxvZzsKLSAgICAgICAgY2FzZSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVh
dGU6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJy
ZWFrcG9pbnRBY3Rpb25UeXBlLkV2YWx1YXRlOwotICAgICAgICBjYXNlIFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5Tb3VuZDoKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuU291bmQ7Ci0gICAgICAgIGNhc2UgV0ku
QnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5Qcm9iZTsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlKTsKLSAgICAgICAg
ICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlv
blR5cGUuTG9nOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX2RlYnVnZ2VyQnJlYWtwb2ludE9w
dGlvbnMoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGxldCBhY3Rpb25zID0gYnJlYWtwb2lu
dC5hY3Rpb25zOwotICAgICAgICBhY3Rpb25zID0gYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYWN0
aW9uLnRvUHJvdG9jb2woKSk7Ci0gICAgICAgIGFjdGlvbnMgPSBhY3Rpb25zLmZpbHRlcigoYWN0
aW9uKSA9PiB7Ci0gICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgIT09IFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5Mb2cpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAg
ICAgIGlmICghL1wkXHsuKj9cfS8udGVzdChhY3Rpb24uZGF0YSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGxldCBsZXhlciA9IG5ldyBXSS5CcmVha3BvaW50
TG9nTWVzc2FnZUxleGVyOwotICAgICAgICAgICAgbGV0IHRva2VucyA9IGxleGVyLnRva2VuaXpl
KGFjdGlvbi5kYXRhKTsKLSAgICAgICAgICAgIGlmICghdG9rZW5zKQotICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgbGV0IHRlbXBsYXRlTGl0ZXJhbCA9IHRva2Vu
cy5yZWR1Y2UoKHRleHQsIHRva2VuKSA9PiB7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5
cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBlLlBsYWluVGV4dCkK
LSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQgKyB0b2tlbi5kYXRhLmVzY2FwZUNoYXJh
Y3RlcnMoImBcXCIpOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBXSS5CcmVh
a3BvaW50TG9nTWVzc2FnZUxleGVyLlRva2VuVHlwZS5FeHByZXNzaW9uKQotICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gdGV4dCArICIkeyIgKyB0b2tlbi5kYXRhICsgIn0iOwotICAgICAgICAg
ICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICAgICAgfSwgIiIpOwotCi0gICAgICAgICAgICBh
Y3Rpb24uZGF0YSA9ICJjb25zb2xlLmxvZyhgIiArIHRlbXBsYXRlTGl0ZXJhbCArICJgKSI7Ci0g
ICAgICAgICAgICBhY3Rpb24udHlwZSA9IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0
ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9KTsKLQotICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgY29uZGl0aW9uOiBicmVha3BvaW50LmNvbmRpdGlvbiwKLSAgICAg
ICAgICAgIGlnbm9yZUNvdW50OiBicmVha3BvaW50Lmlnbm9yZUNvdW50LAotICAgICAgICAgICAg
YXV0b0NvbnRpbnVlOiBicmVha3BvaW50LmF1dG9Db250aW51ZSwKLSAgICAgICAgICAgIGFjdGlv
bnMsCi0gICAgICAgIH07Ci0gICAgfQotCiAgICAgX3NldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
c3BlY2lmaWNUYXJnZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghYnJlYWtwb2lu
dC5kaXNhYmxlZCk7CkBAIC0xMDg4LDEyICsxMDg2LDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0g
Y2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghc3Bl
Y2lmaWNUYXJnZXQpCiAgICAgICAgICAgICBicmVha3BvaW50LnJlc29sdmVkID0gZmFsc2U7CiAK
LSAgICAgICAgLy8gQ29udmVydCBCcmVha3BvaW50QWN0aW9uIHR5cGVzIHRvIERlYnVnZ2VyQWdl
bnQgcHJvdG9jb2wgdHlwZXMuCi0gICAgICAgIC8vIE5PVEU6IEJyZWFrcG9pbnQub3B0aW9ucyBy
ZXR1cm5zIG5ldyBvYmplY3RzIGVhY2ggdGltZSwgc28gaXQgaXMgc2FmZSB0byBtb2RpZnkuCi0g
ICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5fZGVidWdnZXJCcmVha3BvaW50T3B0aW9ucyhicmVh
a3BvaW50KTsKLSAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9mIG9wdGlvbnMuYWN0aW9ucykKLSAg
ICAgICAgICAgIGFjdGlvbi50eXBlID0gdGhpcy5fZGVidWdnZXJCcmVha3BvaW50QWN0aW9uVHlw
ZShhY3Rpb24udHlwZSk7Ci0KICAgICAgICAgaWYgKGJyZWFrcG9pbnQuY29udGVudElkZW50aWZp
ZXIpIHsKICAgICAgICAgICAgIGxldCB0YXJnZXRzID0gc3BlY2lmaWNUYXJnZXQgPyBbc3BlY2lm
aWNUYXJnZXRdIDogV0kudGFyZ2V0czsKICAgICAgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiB0
YXJnZXRzKSB7CkBAIC0xMTAyLDE0ICsxMDk0LDE0IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNs
YXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgICAg
ICB1cmw6IGJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXIsCiAgICAgICAgICAgICAgICAgICAg
IHVybFJlZ2V4OiB1bmRlZmluZWQsCiAgICAgICAgICAgICAgICAgICAgIGNvbHVtbk51bWJlcjog
YnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyLAotICAgICAgICAgICAg
ICAgICAgICBvcHRpb25zCisgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJyZWFrcG9pbnQu
b3B0aW9uc1RvUHJvdG9jb2woKSwKICAgICAgICAgICAgICAgICB9LCBkaWRTZXRCcmVha3BvaW50
LmJpbmQodGhpcywgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAo
YnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBsZXQgdGFyZ2V0ID0g
YnJlYWtwb2ludC50YXJnZXQ7CiAgICAgICAgICAgICB0YXJnZXQuRGVidWdnZXJBZ2VudC5zZXRC
cmVha3BvaW50Lmludm9rZSh7CiAgICAgICAgICAgICAgICAgbG9jYXRpb246IHtzY3JpcHRJZDog
YnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyLCBsaW5lTnVtYmVyOiBicmVha3BvaW50LnNvdXJj
ZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyLCBjb2x1bW5OdW1iZXI6IGJyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcn0sCi0gICAgICAgICAgICAgICAgb3B0aW9ucworICAg
ICAgICAgICAgICAgIG9wdGlvbnM6IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9jb2woKSwKICAg
ICAgICAgICAgIH0sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzLCB0YXJnZXQpKTsKICAgICAg
ICAgfSBlbHNlCiAgICAgICAgICAgICBXSS5yZXBvcnRJbnRlcm5hbEVycm9yKCJVbmtub3duIHNv
dXJjZSBmb3IgYnJlYWtwb2ludC4iKTsKQEAgLTEyMzMsOCArMTIyNSw4IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9pbnQpKTsK
LSAgICAgICAgaWYgKCF0aGlzLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9pbnQpKQorICAg
ICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LmVkaXRhYmxlKTsKKyAgICAgICAgaWYgKCFi
cmVha3BvaW50LmVkaXRhYmxlKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIC8vIFJl
bW92ZSB0aGUgYnJlYWtwb2ludCB3aXRoIGl0cyBvbGQgaWQuCkBAIC0xMjUwLDcgKzEyNDIsNyBA
QCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlk
Q2hhbmdlKGV2ZW50KTsKIAotICAgICAgICB0aGlzLl91cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50
KGV2ZW50LnRhcmdldCk7CisgICAgICAgIHRoaXMudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChl
dmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIF9zdGFydERpc2FibGluZ0JyZWFrcG9pbnRzVGVt
cG9yYXJpbHkoKQpAQCAtMTQxMyw3NyArMTQwNSw2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNs
YXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9pZ25v
cmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlRXZlbnQgPSBmYWxzZTsKICAgICB9
CiAKLSAgICBfYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAg
ICAgaWYgKHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuaGFzKGJyZWFr
cG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2tub3duUHJvYmVJ
ZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuc2V0KGJyZWFrcG9pbnQsIG5ldyBTZXQpOwotCi0gICAg
ICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgfQot
Ci0gICAgX3JlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9p
bnQuaGFzKGJyZWFrcG9pbnQpKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVQcm9iZXNGb3JCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNG
b3JCcmVha3BvaW50LmRlbGV0ZShicmVha3BvaW50KTsKLSAgICB9Ci0KLSAgICBfdXBkYXRlUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgbGV0IGtub3duUHJv
YmVJZGVudGlmaWVycyA9IHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQu
Z2V0KGJyZWFrcG9pbnQpOwotICAgICAgICBpZiAoIWtub3duUHJvYmVJZGVudGlmaWVycykgewot
ICAgICAgICAgICAgLy8gU29tZXRpbWVzIGFjdGlvbnMgY2hhbmdlIGJlZm9yZSB0aGUgYWRkZWQg
YnJlYWtwb2ludCBpcyBmdWxseSBkaXNwYXRjaGVkLgotICAgICAgICAgICAgdGhpcy5fYWRkUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgfQotCi0gICAgICAgIGxldCBzZWVuUHJvYmVJZGVudGlmaWVycyA9IG5ldyBTZXQ7Ci0KLSAg
ICAgICAgZm9yIChsZXQgcHJvYmVBY3Rpb24gb2YgYnJlYWtwb2ludC5wcm9iZUFjdGlvbnMpIHsK
LSAgICAgICAgICAgIGxldCBwcm9iZUlkZW50aWZpZXIgPSBwcm9iZUFjdGlvbi5pZDsKLSAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlSWRlbnRpZmllciwgIlByb2JlIGFkZGVkIHdpdGhv
dXQgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllcjogIiwgYnJlYWtwb2ludCk7Ci0KLSAgICAg
ICAgICAgIHNlZW5Qcm9iZUlkZW50aWZpZXJzLmFkZChwcm9iZUlkZW50aWZpZXIpOwotICAgICAg
ICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpIHsK
LSAgICAgICAgICAgICAgICAvLyBOZXcgcHJvYmU7IGZpbmQgb3IgY3JlYXRlIHJlbGV2YW50IHBy
b2JlIHNldC4KLSAgICAgICAgICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuYWRkKHByb2Jl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVT
ZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgIGxldCBuZXdQcm9i
ZSA9IG5ldyBXSS5Qcm9iZShwcm9iZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQsIHByb2JlQWN0aW9u
LmRhdGEpOwotICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5zZXQocHJv
YmVJZGVudGlmaWVyLCBuZXdQcm9iZSk7Ci0gICAgICAgICAgICAgICAgcHJvYmVTZXQuYWRkUHJv
YmUobmV3UHJvYmUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotCi0g
ICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2Jl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZSwgIlByb2JlIGtu
b3duIGJ1dCBjb3VsZG4ndCBiZSBmb3VuZCBieSBpZGVudGlmaWVyOiAiLCBwcm9iZUlkZW50aWZp
ZXIpOwotICAgICAgICAgICAgLy8gVXBkYXRlIHByb2JlIGV4cHJlc3Npb247IGlmIGl0IGRpZmZl
cmVkLCBjaGFuZ2UgZXZlbnRzIHdpbGwgZmlyZS4KLSAgICAgICAgICAgIHByb2JlLmV4cHJlc3Np
b24gPSBwcm9iZUFjdGlvbi5kYXRhOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTG9vayBmb3Ig
bWlzc2luZyBwcm9iZXMgYmFzZWQgb24gd2hhdCB3ZSBzYXcgbGFzdC4KLSAgICAgICAgZm9yIChs
ZXQgcHJvYmVJZGVudGlmaWVyIG9mIGtub3duUHJvYmVJZGVudGlmaWVycykgewotICAgICAgICAg
ICAgaWYgKHNlZW5Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlkZW50aWZpZXIpKQotICAgICAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyBUaGUgcHJvYmUgaGFzIGdvbmUgbWlz
c2luZywgcmVtb3ZlIGl0LgotICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVT
ZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgbGV0IHByb2JlID0gdGhp
cy5fcHJvYmVzQnlJZGVudGlmaWVyLmdldChwcm9iZUlkZW50aWZpZXIpOwotICAgICAgICAgICAg
dGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOwotICAgICAg
ICAgICAga25vd25Qcm9iZUlkZW50aWZpZXJzLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOwotICAg
ICAgICAgICAgcHJvYmVTZXQucmVtb3ZlUHJvYmUocHJvYmUpOwotCi0gICAgICAgICAgICAvLyBS
ZW1vdmUgdGhlIHByb2JlIHNldCBpZiBpdCBoYXMgYmVjb21lIGVtcHR5LgotICAgICAgICAgICAg
aWYgKCFwcm9iZVNldC5wcm9iZXMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcHJv
YmVTZXRzQnlCcmVha3BvaW50LmRlbGV0ZShwcm9iZVNldC5icmVha3BvaW50KTsKLSAgICAgICAg
ICAgICAgICBwcm9iZVNldC53aWxsUmVtb3ZlKCk7Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVt
b3ZlZCwge3Byb2JlU2V0fSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAg
ICBfcHJvYmVTZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewogICAgICAgICBsZXQg
cHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNldHNCeUJyZWFrcG9pbnQuZ2V0KGJyZWFrcG9pbnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvVGltZWxpbmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmluZGV4IDVmNWMxODQ5MTZkY2U1ZjUy
ZmY1YjE1OWIxZDZlZmFmMGNhMWI3N2YuLjVmOTBhYWRiYzQ5NGRhZjQ2NjhkYjNmNWQ5MTcwZGVi
NTI5OTFlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKQEAgLTk1Miwx
MCArOTUyLDE0IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQogICAgICAgICAgICAgYnJlYWs7CiAKLSAg
ICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGltZWxpbmUuRXZlbnRUeXBlLlByb2Jl
U2FtcGxlOgorICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UaW1lbGluZS5FdmVu
dFR5cGUuUHJvYmVTYW1wbGU6IHsKKyAgICAgICAgICAgIGxldCBwcm9iZSA9IFdJLmRlYnVnZ2Vy
TWFuYWdlci5wcm9iZUZvcklkZW50aWZpZXIocmVjb3JkUGF5bG9hZC5kYXRhLnByb2JlSWQpOwor
ICAgICAgICAgICAgaWYgKHByb2JlLmJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBwcm9iZS5i
cmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKKwogICAgICAgICAgICAgLy8gUGFzcyB0aGUg
c3RhcnRUaW1lIGFzIHRoZSBlbmRUaW1lIHNpbmNlIHRoaXMgcmVjb3JkIHR5cGUgaGFzIG5vIGR1
cmF0aW9uLgotICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9uID0gV0kuZGVidWdnZXJNYW5h
Z2VyLnByb2JlRm9ySWRlbnRpZmllcihyZWNvcmRQYXlsb2FkLmRhdGEucHJvYmVJZCkuYnJlYWtw
b2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlNjcmlw
dFRpbWVsaW5lUmVjb3JkKFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkLkV2ZW50VHlwZS5Qcm9iZVNh
bXBsZVJlY29yZGVkLCBzdGFydFRpbWUsIHN0YXJ0VGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29k
ZUxvY2F0aW9uLCByZWNvcmRQYXlsb2FkLmRhdGEucHJvYmVJZCk7CisgICAgICAgIH0KIAogICAg
ICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UaW1lbGluZS5FdmVudFR5cGUuVGltZXJJ
bnN0YWxsOgogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoaXNOYU4oZW5kVGltZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4IDVkYjI3
MTVlYmMyMjg0Yzk2YjFjYjZmOWY2MzRlNWI0Mjg3ZjZjNzQuLjlhMTE1OGZlNjU0NmY5OWZhYmJk
YjA0ZmUyOWZkYzlmYTEzODIzMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9NYWluLmh0bWwKQEAgLTEyNyw2ICsxMjcsNyBAQAogICAgIDxsaW5rIHJlbD0ic3R5
bGVzaGVldCIgaHJlZj0iVmlld3MvSW5saW5lU3dhdGNoLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9JbnB1dFBvcG92ZXIuY3NzIj4KICAgICA8bGluayByZWw9
InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lzc3VlVHJlZUVsZW1lbnQuY3NzIj4KKyAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVs
ZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xheWVy
RGV0YWlsc1NpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJl
Zj0iVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5rIHJl
bD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5jc3MiPgpAQCAt
MzQ5LDYgKzM1MCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1RpbWVsaW5lT2JzZXJ2
ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJPYnNlcnZl
ci5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db2xsZWN0aW9uLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbnNvbGVNZXNzYWdlLmpzIj48L3NjcmlwdD4K
QEAgLTM2OSw3ICszNzEsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQXBwbGljYXRpb25D
YWNoZU1hbmlmZXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JhY2tG
b3J3YXJkRW50cnkuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQm94U2hh
ZG93LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVSW5zdHJ1bWVudC5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVUaW1lbGluZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+
CkBAIC00MTYsNiArNDE3LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRh
YmFzZU9iamVjdFN0b3JlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0lu
ZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvSXNzdWVNZXNzYWdlLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvTGF5ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5
b3V0SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CkBAIC03MTYsNiArNzE4LDcgQEAKICAgICA8c2Ny
aXB0IHNyYz0iVmlld3MvSW5saW5lU3dhdGNoLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvSW5wdXRQb3BvdmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvSXNzdWVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9MYXllclRyZWVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIj48
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKaW5kZXggOWEyMDllODI4NmJiZTViNjg5NWZlYzQ5OWUw
MGFmZGJiYmRkY2M4Yy4uZjQwNjg3YmNmM2NjMzMzODE2ODdjZDg4YWRiODg5NzVkNTQ5YjJiNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Jy
ZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0JyZWFrcG9pbnQuanMKQEAgLTI1LDEwOCArMjUsNjMgQEAKIAogV0kuQnJlYWtwb2ludCA9
IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIHsKLSAgICBjb25zdHJ1Y3Rvcihz
b3VyY2VDb2RlTG9jYXRpb24sIHtjb250ZW50SWRlbnRpZmllciwgZGlzYWJsZWQsIGNvbmRpdGlv
biwgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3Rvcih7ZGlz
YWJsZWQsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0gPSB7fSkKICAgICB7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbiBpbnN0YW5jZW9mIFdJ
LlNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50SWRl
bnRpZmllciB8fCB0eXBlb2YgY29udGVudElkZW50aWZpZXIgPT09ICJzdHJpbmciKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWRpc2FibGVkIHx8IHR5cGVvZiBkaXNhYmxlZCA9PT0gImJvb2xl
YW4iKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbmRpdGlvbiB8fCB0eXBlb2YgY29uZGl0
aW9uID09PSAic3RyaW5nIik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFpZ25vcmVDb3VudCB8
fCAhaXNOYU4oaWdub3JlQ291bnQpKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWF1dG9Db250
aW51ZSB8fCB0eXBlb2YgYXV0b0NvbnRpbnVlID09PSAiYm9vbGVhbiIpOworICAgICAgICBjb25z
b2xlLmFzc2VydCghZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkID09PSAiYm9vbGVhbiIsIGRp
c2FibGVkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbmRpdGlvbiB8fCB0eXBlb2YgY29u
ZGl0aW9uID09PSAic3RyaW5nIiwgY29uZGl0aW9uKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IWlnbm9yZUNvdW50IHx8ICFpc05hTihpZ25vcmVDb3VudCksIGlnbm9yZUNvdW50KTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWF1dG9Db250aW51ZSB8fCB0eXBlb2YgYXV0b0NvbnRpbnVlID09
PSAiYm9vbGVhbiIsIGF1dG9Db250aW51ZSk7CiAKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAg
ICB0aGlzLl9pZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNv
dXJjZUNvZGVMb2NhdGlvbjsKKyAgICAgICAgLy8gVGhpcyBjbGFzcyBzaG91bGQgbm90IGJlIGlu
c3RhbnRpYXRlZCBkaXJlY3RseS4gQ3JlYXRlIGEgY29uY3JldGUgc3ViY2xhc3MgaW5zdGVhZC4K
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1Y3RvciAhPT0gV0kuQnJlYWtwb2lu
dCAmJiB0aGlzIGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7CiAKLSAgICAgICAgbGV0IHNvdXJj
ZUNvZGUgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZTsKLSAgICAgICAgaWYg
KHNvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyID0gc291
cmNlQ29kZS5jb250ZW50SWRlbnRpZmllcjsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFj
b250ZW50SWRlbnRpZmllciB8fCBjb250ZW50SWRlbnRpZmllciA9PT0gdGhpcy5fY29udGVudElk
ZW50aWZpZXIsICJUaGUgY29udGVudCBpZGVudGlmaWVyIGZyb20gdGhlIHNvdXJjZSBjb2RlIHNo
b3VsZCBtYXRjaCB0aGUgZ2l2ZW4gdmFsdWUuIik7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBjb250ZW50SWRlbnRpZmllciB8fCBudWxsOwot
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50SWRlbnRpZmllciB8fCB0aGlzLl9p
c1NwZWNpYWwoKSwgIlRoZXJlIHNob3VsZCBhbHdheXMgYmUgYSBjb250ZW50IGlkZW50aWZpZXIg
Zm9yIGEgYnJlYWtwb2ludC4iKTsKLQotICAgICAgICB0aGlzLl9zY3JpcHRJZGVudGlmaWVyID0g
c291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/IHNvdXJjZUNvZGUuaWQgOiBudWxsOwot
ICAgICAgICB0aGlzLl90YXJnZXQgPSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8g
c291cmNlQ29kZS50YXJnZXQgOiBudWxsOwogICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2Fi
bGVkIHx8IGZhbHNlOwogICAgICAgICB0aGlzLl9jb25kaXRpb24gPSBjb25kaXRpb24gfHwgIiI7
CiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50ID0gaWdub3JlQ291bnQgfHwgMDsKICAgICAgICAg
dGhpcy5fYXV0b0NvbnRpbnVlID0gYXV0b0NvbnRpbnVlIHx8IGZhbHNlOwogICAgICAgICB0aGlz
Ll9hY3Rpb25zID0gW107Ci0gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gZmFsc2U7Ci0KLSAgICAg
ICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29k
ZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9u
TG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9u
LmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkRpc3BsYXlMb2Nh
dGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5n
ZWQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIEltcG9ydCAvIEV4cG9ydAogCi0gICAgc3RhdGlj
IGZyb21KU09OKGpzb24pCi0gICAgewotICAgICAgICBjb25zdCBzb3VyY2VDb2RlID0gbnVsbDsK
LSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgQnJlYWtwb2ludChuZXcgV0kuU291cmNlQ29k
ZUxvY2F0aW9uKHNvdXJjZUNvZGUsIGpzb24ubGluZU51bWJlciB8fCAwLCBqc29uLmNvbHVtbk51
bWJlciB8fCAwKSwgewotICAgICAgICAgICAgLy8gVGhlICd1cmwnIGZhbGxiYWNrIGlzIGZvciB0
cmFuc2l0aW9uaW5nIGZyb20gb2xkZXIgZnJvbnRlbmRzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4K
LSAgICAgICAgICAgIGNvbnRlbnRJZGVudGlmaWVyOiBqc29uLmNvbnRlbnRJZGVudGlmaWVyIHx8
IGpzb24udXJsLAotICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCi0gICAgICAg
ICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAotICAgICAgICAgICAgaWdub3JlQ291bnQ6
IGpzb24uaWdub3JlQ291bnQsCi0gICAgICAgICAgICBhdXRvQ29udGludWU6IGpzb24uYXV0b0Nv
bnRpbnVlLAotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWtwb2ludC5fYWN0aW9ucyA9IGpzb24u
YWN0aW9ucy5tYXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpTT04o
YWN0aW9uSlNPTiwgYnJlYWtwb2ludCkpOwotICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKLSAg
ICB9Ci0KICAgICB0b0pTT04oa2V5KQogICAgIHsKLSAgICAgICAgLy8gVGhlIGlkLCBzY3JpcHRJ
ZGVudGlmaWVyLCB0YXJnZXQsIGFuZCByZXNvbHZlZCBzdGF0ZSBhcmUgdGllZCB0byB0aGUgY3Vy
cmVudCBzZXNzaW9uLCBzbyBkb24ndCBpbmNsdWRlIHRoZW0gZm9yIHNlcmlhbGl6YXRpb24uCi0g
ICAgICAgIGxldCBqc29uID0gewotICAgICAgICAgICAgY29udGVudElkZW50aWZpZXI6IHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyLAotICAgICAgICAgICAgbGluZU51bWJlcjogdGhpcy5fc291cmNl
Q29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsCi0gICAgICAgICAgICBjb2x1bW5OdW1iZXI6IHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXIsCi0gICAgICAgICAgICBkaXNhYmxlZDog
dGhpcy5fZGlzYWJsZWQsCi0gICAgICAgICAgICBjb25kaXRpb246IHRoaXMuX2NvbmRpdGlvbiwK
LSAgICAgICAgICAgIGlnbm9yZUNvdW50OiB0aGlzLl9pZ25vcmVDb3VudCwKLSAgICAgICAgICAg
IGFjdGlvbnM6IHRoaXMuX2FjdGlvbnMubWFwKChhY3Rpb24pID0+IGFjdGlvbi50b0pTT04oKSks
Ci0gICAgICAgICAgICBhdXRvQ29udGludWU6IHRoaXMuX2F1dG9Db250aW51ZSwKLSAgICAgICAg
fTsKLSAgICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQotICAg
ICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlz
Ll9jb250ZW50SWRlbnRpZmllciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5l
TnVtYmVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAg
ICAgICAgbGV0IGpzb24gPSB7fTsKKyAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQorICAgICAg
ICAgICAganNvbi5kaXNhYmxlZCA9IHRoaXMuX2Rpc2FibGVkOworICAgICAgICBpZiAodGhpcy5l
ZGl0YWJsZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbikKKyAgICAgICAgICAg
ICAgICBqc29uLmNvbmRpdGlvbiA9IHRoaXMuX2NvbmRpdGlvbjsKKyAgICAgICAgICAgIGlmICh0
aGlzLl9pZ25vcmVDb3VudCkKKyAgICAgICAgICAgICAgICBqc29uLmlnbm9yZUNvdW50ID0gdGhp
cy5faWdub3JlQ291bnQ7CisgICAgICAgICAgICBpZiAodGhpcy5fYWN0aW9ucy5sZW5ndGgpCisg
ICAgICAgICAgICAgICAganNvbi5hY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5tYXAoKGFjdGlvbikg
PT4gYWN0aW9uLnRvSlNPTigpKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hdXRvQ29udGludWUp
CisgICAgICAgICAgICAgICAganNvbi5hdXRvQ29udGludWUgPSB0aGlzLl9hdXRvQ29udGludWU7
CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGpzb247CiAgICAgfQogCiAgICAgLy8gUHVibGlj
CiAKLSAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uOyB9Ci0gICAgZ2V0IGNvbnRlbnRJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5f
Y29udGVudElkZW50aWZpZXI7IH0KLSAgICBnZXQgc2NyaXB0SWRlbnRpZmllcigpIHsgcmV0dXJu
IHRoaXMuX3NjcmlwdElkZW50aWZpZXI7IH0KLSAgICBnZXQgdGFyZ2V0KCkgeyByZXR1cm4gdGhp
cy5fdGFyZ2V0OyB9Ci0KLSAgICBnZXQgaWRlbnRpZmllcigpCisgICAgZ2V0IGdsb2JhbCgpCiAg
ICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWQ7CisgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkg
c3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAg
ICBzZXQgaWRlbnRpZmllcihpZCkKKyAgICBnZXQgcmVtb3ZhYmxlKCkKICAgICB7Ci0gICAgICAg
IHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFz
c2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgZ2V0IHJl
c29sdmVkKCkKKyAgICBnZXQgZWRpdGFibGUoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc29sdmVkOwotICAgIH0KLQotICAgIHNldCByZXNvbHZlZChyZXNvbHZlZCkKLSAgICB7Ci0g
ICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCA9PT0gcmVzb2x2ZWQpCi0gICAgICAgICAgICByZXR1
cm47Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlc29sdmVkIHx8IHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbi5zb3VyY2VDb2RlIHx8IHRoaXMuX2lzU3BlY2lhbCgpLCAiQnJlYWtwb2ludHMg
bXVzdCBoYXZlIGEgU291cmNlQ29kZSB0byBiZSByZXNvbHZlZC4iLCB0aGlzKTsKLQotICAgICAg
ICB0aGlzLl9yZXNvbHZlZCA9IHJlc29sdmVkIHx8IGZhbHNlOwotCi0gICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURp
ZENoYW5nZSk7CisgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQu
CisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBnZXQgZGlzYWJsZWQoKQpAQCAt
MTUxLDYgKzEwNiw5IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICBzZXQgY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0eXBlb2YgY29uZGl0aW9uID09PSAic3RyaW5nIik7CisKICAgICAgICAgaWYgKHRoaXMu
X2NvbmRpdGlvbiA9PT0gY29uZGl0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xNjEs
MTEgKzExOSwxNSBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgZ2V0IGlnbm9yZUNvdW50KCkKICAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHJldHVybiB0aGlzLl9pZ25v
cmVDb3VudDsKICAgICB9CiAKICAgICBzZXQgaWdub3JlQ291bnQoaWdub3JlQ291bnQpCiAgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAg
ICBjb25zb2xlLmFzc2VydChpZ25vcmVDb3VudCA+PSAwLCAiSWdub3JlIGNvdW50IGNhbm5vdCBi
ZSBuZWdhdGl2ZS4iKTsKICAgICAgICAgaWYgKGlnbm9yZUNvdW50IDwgMCkKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTE4MCwxMSArMTQyLDE1IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVh
a3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgYXV0b0NvbnRpbnVlKCkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAg
IHJldHVybiB0aGlzLl9hdXRvQ29udGludWU7CiAgICAgfQogCiAgICAgc2V0IGF1dG9Db250aW51
ZShjb250KQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhp
cyk7CisKICAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSA9PT0gY29udCkKICAgICAgICAg
ICAgIHJldHVybjsKIApAQCAtMTk1LDExICsxNjEsMTUgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNz
IEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBhY3Rpb25zKCkKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAg
IHJldHVybiB0aGlzLl9hY3Rpb25zOwogICAgIH0KIAogICAgIGdldCBwcm9iZUFjdGlvbnMoKQog
ICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAg
ICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGFjdGlvbikgewogICAg
ICAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlID09PSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUu
UHJvYmU7CiAgICAgICAgIH0pOwpAQCAtMjA4LDI3ICsxNzgsMzQgQEAgV0kuQnJlYWtwb2ludCA9
IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBjeWNsZVRvTmV4dE1vZGUo
KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsKLSAgICAgICAgICAgIC8vIFdo
ZW4gY3ljbGluZywgY2xlYXIgYXV0by1jb250aW51ZSB3aGVuIGdvaW5nIGZyb20gZGlzYWJsZWQg
dG8gZW5hYmxlZC4KLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbnRpbnVlID0gZmFsc2U7CisgICAg
ICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkgeworICAgICAgICAgICAgICAgIC8vIFdoZW4gY3lj
bGluZywgY2xlYXIgYXV0by1jb250aW51ZSB3aGVuIGdvaW5nIGZyb20gZGlzYWJsZWQgdG8gZW5h
YmxlZC4KKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IGZhbHNlOworICAgICAg
ICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5hdXRvQ29udGludWUpIHsK
LSAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5hdXRvQ29udGludWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAgICAgICAgaWYg
KHRoaXMuYWN0aW9ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbnRpbnVlID0g
dHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh0aGlzLmFjdGlvbnMu
bGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSB0cnVlOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuZGlzYWJsZWQgPSB0cnVlOwogICAgIH0KIAotICAgIGNyZWF0ZUFjdGlvbih0eXBlLCBw
cmVjZWRpbmdBY3Rpb24sIGRhdGEpCisgICAgY3JlYXRlQWN0aW9uKHR5cGUsIHtkYXRhLCBwcmVj
ZWRpbmdBY3Rpb259ID0ge30pCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVk
aXRhYmxlLCB0aGlzKTsKKwogICAgICAgICB2YXIgbmV3QWN0aW9uID0gbmV3IFdJLkJyZWFrcG9p
bnRBY3Rpb24odGhpcywgdHlwZSwgZGF0YSB8fCBudWxsKTsKIAogICAgICAgICBpZiAoIXByZWNl
ZGluZ0FjdGlvbikKQEAgLTI0OSw2ICsyMjYsOCBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJl
YWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgcmVjcmVhdGVBY3Rpb24odHlwZSwgYWN0
aW9uVG9SZXBsYWNlKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJs
ZSwgdGhpcyk7CisKICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5fYWN0aW9ucy5pbmRleE9mKGFj
dGlvblRvUmVwbGFjZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9PSAtMSk7CiAg
ICAgICAgIGlmIChpbmRleCA9PT0gLTEpCkBAIC0yNjUsNiArMjQ0LDggQEAgV0kuQnJlYWtwb2lu
dCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHJlbW92ZUFjdGlv
bihhY3Rpb24pCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0
aGlzKTsKKwogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0aW9u
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAgaWYgKGlu
ZGV4ID09PSAtMSkKQEAgLTI4MCw2ICsyNjEsOCBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJl
YWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgY2xlYXJBY3Rpb25zKHR5cGUpCiAgICAg
eworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAg
ICBpZiAoIXR5cGUpCiAgICAgICAgICAgICB0aGlzLl9hY3Rpb25zID0gW107CiAgICAgICAgIGVs
c2UKQEAgLTI4OCwxNyArMjcxLDY0IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSk7CiAgICAgfQogCi0gICAgc2F2
ZUlkZW50aXR5VG9Db29raWUoY29va2llKQorICAgIHJlbW92ZSgpCiAgICAgewotICAgICAgICBj
b29raWVbImJyZWFrcG9pbnQtY29udGVudC1pZGVudGlmaWVyIl0gPSB0aGlzLl9jb250ZW50SWRl
bnRpZmllcjsKLSAgICAgICAgY29va2llWyJicmVha3BvaW50LWxpbmUtbnVtYmVyIl0gPSB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlcjsKLSAgICAgICAgY29va2llWyJicmVha3Bv
aW50LWNvbHVtbi1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1i
ZXI7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVtb3ZhYmxlLCB0aGlzKTsKKworICAg
ICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgorICAgIH0KKworICAg
IG9wdGlvbnNUb1Byb3RvY29sKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
ZWRpdGFibGUsIHRoaXMpOworCisgICAgICAgIGxldCBwYXlsb2FkID0ge307CisKKyAgICAgICAg
aWYgKHRoaXMuX2NvbmRpdGlvbikKKyAgICAgICAgICAgIHBheWxvYWQuY29uZGl0aW9uID0gdGhp
cy5fY29uZGl0aW9uOworCisgICAgICAgIGlmICh0aGlzLl9hY3Rpb25zLmxlbmd0aCkgeworICAg
ICAgICAgICAgcGF5bG9hZC5hY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4g
YWN0aW9uLnRvUHJvdG9jb2woKSkuZmlsdGVyKChhY3Rpb24pID0+IHsKKyAgICAgICAgICAgICAg
ICBpZiAoYWN0aW9uLnR5cGUgIT09IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2cpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAgaWYgKCEvXCRc
ey4qP1x9Ly50ZXN0KGFjdGlvbi5kYXRhKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisKKyAgICAgICAgICAgICAgICBsZXQgbGV4ZXIgPSBuZXcgV0kuQnJlYWtwb2ludExvZ01l
c3NhZ2VMZXhlcjsKKyAgICAgICAgICAgICAgICBsZXQgdG9rZW5zID0gbGV4ZXIudG9rZW5pemUo
YWN0aW9uLmRhdGEpOworICAgICAgICAgICAgICAgIGlmICghdG9rZW5zKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBsZXQgdGVtcGxhdGVMaXRl
cmFsID0gdG9rZW5zLnJlZHVjZSgodGV4dCwgdG9rZW4pID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9rZW5U
eXBlLlBsYWluVGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgdG9r
ZW4uZGF0YS5lc2NhcGVDaGFyYWN0ZXJzKCJgXFwiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBlLkV4
cHJlc3Npb24pCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCArICIkeyIgKyB0
b2tlbi5kYXRhICsgIn0iOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKKyAgICAg
ICAgICAgICAgICB9LCAiIik7CisKKyAgICAgICAgICAgICAgICBhY3Rpb24uZGF0YSA9ICJjb25z
b2xlLmxvZyhgIiArIHRlbXBsYXRlTGl0ZXJhbCArICJgKSI7CisgICAgICAgICAgICAgICAgYWN0
aW9uLnR5cGUgPSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGU7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorCisgICAgICAg
IGlmICh0aGlzLl9hdXRvQ29udGludWUpCisgICAgICAgICAgICBwYXlsb2FkLmF1dG9Db250aW51
ZSA9IHRoaXMuX2F1dG9Db250aW51ZTsKKworICAgICAgICBpZiAodGhpcy5faWdub3JlQ291bnQp
CisgICAgICAgICAgICBwYXlsb2FkLmlnbm9yZUNvdW50ID0gdGhpcy5faWdub3JlQ291bnQ7CisK
KyAgICAgICAgcmV0dXJuICFpc0VtcHR5T2JqZWN0KHBheWxvYWQpID8gcGF5bG9hZCA6IHVuZGVm
aW5lZDsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKENhbGxlZCBieSBCcmVha3BvaW50QWN0
aW9uKQogCiAgICAgYnJlYWtwb2ludEFjdGlvbkRpZENoYW5nZShhY3Rpb24pCiAgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICB2YXIg
aW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0aW9uKTsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKQEAgLTMwNiwz
NCArMzM2LDE0IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtw
b2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0K
LSAgICBfaXNTcGVjaWFsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb24uaXNFcXVhbChuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5
LCBJbmZpbml0eSkpOwotICAgIH0KLQotICAgIF9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNo
YW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKLSAg
ICB9Ci0KLSAgICBfc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZChldmVu
dCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJyZWFr
cG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKLSAgICB9
CiB9OwogCiBXSS5CcmVha3BvaW50LlR5cGVJZGVudGlmaWVyID0gImJyZWFrcG9pbnQiOwogCiBX
SS5CcmVha3BvaW50LkV2ZW50ID0gewogICAgIERpc2FibGVkU3RhdGVEaWRDaGFuZ2U6ICJicmVh
a3BvaW50LWRpc2FibGVkLXN0YXRlLWRpZC1jaGFuZ2UiLAotICAgIFJlc29sdmVkU3RhdGVEaWRD
aGFuZ2U6ICJicmVha3BvaW50LXJlc29sdmVkLXN0YXRlLWRpZC1jaGFuZ2UiLAogICAgIENvbmRp
dGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtY29uZGl0aW9uLWRpZC1jaGFuZ2UiLAogICAgIEln
bm9yZUNvdW50RGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1pZ25vcmUtY291bnQtZGlkLWNoYW5nZSIs
CiAgICAgQWN0aW9uc0RpZENoYW5nZTogImJyZWFrcG9pbnQtYWN0aW9ucy1kaWQtY2hhbmdlIiwK
ICAgICBBdXRvQ29udGludWVEaWRDaGFuZ2U6ICJicmVha3BvaW50LWF1dG8tY29udGludWUtZGlk
LWNoYW5nZSIsCi0gICAgTG9jYXRpb25EaWRDaGFuZ2U6ICJicmVha3BvaW50LWxvY2F0aW9uLWRp
ZC1jaGFuZ2UiLAotICAgIERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtZGlz
cGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpz
CmluZGV4IGQ4YmU3ZjVkMmU4YmQ4NmI1M2JiYzU5YjI4ZmExZjdiZjAzMjA2ZGYuLjM0ZmIwYTNk
OGFhZWZlNDRlNTEzMjY3OTBmZDY2MjRhMTIyNjVmMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0
aW9uLmpzCkBAIC0yNyw4ICsyNyw5IEBAIFdJLkJyZWFrcG9pbnRBY3Rpb24gPSBjbGFzcyBCcmVh
a3BvaW50QWN0aW9uCiB7CiAgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwgdHlwZSwgZGF0YSkK
ICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5C
cmVha3BvaW50KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5CcmVh
a3BvaW50QWN0aW9uLlR5cGUpLmluY2x1ZGVzKHR5cGUpKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsIGJyZWFrcG9pbnQpOworICAg
ICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlw
ZSkuaW5jbHVkZXModHlwZSksIHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZGF0YSB8
fCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIsIGRhdGEpOwogCiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnQgPSBicmVha3BvaW50OwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3Bv
aW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJy
ZWFrcG9pbnQuanMKaW5kZXggNzk5NDU5YjdiNjQxZmM2ZmRiYTA3NWZiMjg3OTNmOTdkODA3N2Y2
ZS4uMDUzN2QzNmJiYjdkMGVlZTFhZmZhMGIzNmRhNGEyZjE1Y2NjNDU3OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJy
ZWFrcG9pbnQuanMKQEAgLTIzLDE0ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgogICovCiAKLVdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CitXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2lu
dCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKICAgICBjb25zdHJ1Y3Rvcihkb21Ob2RlT3JJbmZv
LCB0eXBlLCB7ZGlzYWJsZWR9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChk
b21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSB8fCB0eXBlb2YgZG9tTm9kZU9ySW5m
byA9PT0gIm9iamVjdCIsIGRvbU5vZGVPckluZm8pOwogICAgICAgICBjb25zb2xlLmFzc2VydChP
YmplY3QudmFsdWVzKFdJLkRPTUJyZWFrcG9pbnQuVHlwZSkuaW5jbHVkZXModHlwZSksIHR5cGUp
OwogCi0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKHtkaXNhYmxlZH0pOwogCiAgICAg
ICAgIGlmIChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSkgewogICAgICAgICAg
ICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBkb21Ob2RlT3JJbmZvLmlkOwpAQCAtNDQsMTUg
KzQ0LDE0IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKLSAgICAg
ICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBT
dGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0
aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuRE9NQnJlYWtw
b2ludChzZXJpYWxpemVkSW5mbywgc2VyaWFsaXplZEluZm8udHlwZSwgewotICAgICAgICAgICAg
ZGlzYWJsZWQ6ICEhc2VyaWFsaXplZEluZm8uZGlzYWJsZWQsCisgICAgICAgIHJldHVybiBuZXcg
V0kuRE9NQnJlYWtwb2ludChqc29uLCBqc29uLnR5cGUsIHsKKyAgICAgICAgICAgIGRpc2FibGVk
OiBqc29uLmRpc2FibGVkLAogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTYyLDIxICs2MSw2IEBA
IFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQogICAgIGdldCBwYXRoKCkgeyBy
ZXR1cm4gdGhpcy5fcGF0aDsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB0aGlzLl9kaXNhYmxlZDsKLSAgICB9Ci0KLSAgICBzZXQgZGlzYWJsZWQoZGlzYWJs
ZWQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7Ci0K
LSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NQnJlYWtwb2ludC5F
dmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCk7Ci0gICAgfQotCiAgICAgZ2V0IGRvbU5vZGVJZGVu
dGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21Ob2RlSWRlbnRpZmllcjsK
QEAgLTk2LDYgKzgwLDEzIEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNoYW5nZWQsIGRhdGEpOwogICAgIH0KIAor
ICAgIHJlbW92ZSgpCisgICAgeworICAgICAgICBzdXBlci5yZW1vdmUoKTsKKworICAgICAgICBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzKTsKKyAgICB9CisK
ICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWVb
ImRvbS1icmVha3BvaW50LXVybCJdID0gdGhpcy5fdXJsOwpAQCAtMTA1LDEzICs5NiwxMCBAQCBX
SS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBqc29uID0gewotICAgICAgICAg
ICAgdXJsOiB0aGlzLl91cmwsCi0gICAgICAgICAgICBwYXRoOiB0aGlzLl9wYXRoLAotICAgICAg
ICAgICAgdHlwZTogdGhpcy5fdHlwZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKHRoaXMuX2Rp
c2FibGVkKQotICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGxldCBq
c29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpzb24udXJsID0gdGhpcy5fdXJsOwor
ICAgICAgICBqc29uLnBhdGggPSB0aGlzLl9wYXRoOworICAgICAgICBqc29uLnR5cGUgPSB0aGlz
Ll90eXBlOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wp
CiAgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5kb21CcmVha3BvaW50cy5rZXlQYXRo
XSA9IHRoaXMuX3VybCArICI6IiArIHRoaXMuX3BhdGggKyAiOiIgKyB0aGlzLl90eXBlOwogICAg
ICAgICByZXR1cm4ganNvbjsKQEAgLTEyNiw1ICsxMTQsNCBAQCBXSS5ET01CcmVha3BvaW50LlR5
cGUgPSB7CiAKIFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAgRE9NTm9kZUNoYW5nZWQ6
ICJkb20tYnJlYWtwb2ludC1kb20tbm9kZS1jaGFuZ2VkIiwKLSAgICBEaXNhYmxlZFN0YXRlQ2hh
bmdlZDogImRvbS1icmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWNoYW5nZWQiLAogfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9FdmVudEJy
ZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
RXZlbnRCcmVha3BvaW50LmpzCmluZGV4IGZmMWU3OWNmZTRkYmE1ZDZjNDQyOGFiNDdmY2FiNDkz
NWZlYjAyYWUuLmNiNWYxYmVkODZjODYxYjgyNjI1ZmE2YmRhYzQ3ODZmODVkOWFkOGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9FdmVudEJy
ZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0V2ZW50QnJlYWtwb2ludC5qcwpAQCAtMjMsMjggKzIzLDQ3IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuRXZlbnRCcmVha3BvaW50ID0gY2xhc3Mg
RXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CitXSS5FdmVudEJyZWFrcG9pbnQgPSBj
bGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiB7Ci0gICAgY29uc3Ry
dWN0b3IodHlwZSwge2V2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwgZGlzYWJsZWR9ID0ge30pCisg
ICAgY29uc3RydWN0b3IodHlwZSwge2V2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwgZGlzYWJsZWQs
IGFjdGlvbnMsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0gPSB7fSkKICAg
ICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6
IERPTURlYnVnZ2VyLkV2ZW50QnJlYWtwb2ludFR5cGVzLlRpbWVyIHdhcyByZW1vdmVkLgorICAg
ICAgICBpZiAodHlwZSA9PT0gInRpbWVyIikgeworICAgICAgICAgICAgc3dpdGNoIChldmVudE5h
bWUpIHsKKyAgICAgICAgICAgIGNhc2UgInNldEludGVydmFsIjoKKyAgICAgICAgICAgICAgICB0
eXBlID0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWw7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgInNldFRpbWVvdXQiOgorICAgICAgICAgICAgICAg
IHR5cGUgPSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0OworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoT2JqZWN0LnZhbHVlcyhXSS5FdmVudEJyZWFrcG9pbnQuVHlwZSkuaW5jbHVkZXModHlwZSks
IHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZXZlbnROYW1lIHx8IHR5cGUgPT09IFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLCBldmVudE5hbWUpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghZXZlbnRMaXN0ZW5lciB8fCB0eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZSwgZXZl
bnRMaXN0ZW5lcik7CisKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkLCBjb25kaXRpb24sIGFjdGlv
bnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9KTsKIAogICAgICAgICB0aGlzLl90eXBlID0g
dHlwZTsKICAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gZXZlbnROYW1lIHx8IG51bGw7CiAgICAg
ICAgIHRoaXMuX2V2ZW50TGlzdGVuZXIgPSBldmVudExpc3RlbmVyIHx8IG51bGw7Ci0gICAgICAg
IHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7CiAgICAgfQogCiAgICAgLy8gU3Rh
dGljCiAKLSAgICBzdGF0aWMgZGVzZXJpYWxpemUoc2VyaWFsaXplZEluZm8pCisgICAgc3RhdGlj
IGZyb21KU09OKGpzb24pCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdJLkV2ZW50QnJlYWtw
b2ludChzZXJpYWxpemVkSW5mby50eXBlLCB7Ci0gICAgICAgICAgICBldmVudE5hbWU6IHNlcmlh
bGl6ZWRJbmZvLmV2ZW50TmFtZSwKLSAgICAgICAgICAgIGRpc2FibGVkOiAhIXNlcmlhbGl6ZWRJ
bmZvLmRpc2FibGVkLAorICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5FdmVudEJyZWFr
cG9pbnQoanNvbi50eXBlLCB7CisgICAgICAgICAgICBldmVudE5hbWU6IGpzb24uZXZlbnROYW1l
LAorICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCisgICAgICAgICAgICBjb25k
aXRpb246IGpzb24uY29uZGl0aW9uLAorICAgICAgICAgICAgaWdub3JlQ291bnQ6IGpzb24uaWdu
b3JlQ291bnQsCisgICAgICAgICAgICBhdXRvQ29udGludWU6IGpzb24uYXV0b0NvbnRpbnVlLAog
ICAgICAgICB9KTsKKyAgICAgICAgYnJlYWtwb2ludC5fYWN0aW9ucyA9IGpzb24uYWN0aW9ucz8u
bWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3BvaW50QWN0aW9uLmZyb21KU09OKGFjdGlvbkpT
T04sIGJyZWFrcG9pbnQpKSB8fCBbXTsKKyAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQ7CiAgICAg
fQogCiAgICAgLy8gUHVibGljCkBAIC01MywxOSArNzIsMzQgQEAgV0kuRXZlbnRCcmVha3BvaW50
ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGV2ZW50
TmFtZSgpIHsgcmV0dXJuIHRoaXMuX2V2ZW50TmFtZTsgfQogICAgIGdldCBldmVudExpc3RlbmVy
KCkgeyByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lcjsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkK
KyAgICBnZXQgZ2xvYmFsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsK
KyAgICAgICAgc3dpdGNoICh0aGlzKSB7CisgICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAot
ICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKKyAgICBnZXQgZWRpdGFibGUoKQogICAgIHsKLSAg
ICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkID09PSBkaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0KTogRE9NLnNldEJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFyYW1ldGVyIHlldC4K
KyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0KTogRE9NRGVidWdnZXIuc2V0RXZlbnRC
cmVha3BvaW50IGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFyYW1ldGVyIHlldC4KKyAgICAg
ICAgcmV0dXJuIHRoaXMuX2V2ZW50TGlzdGVuZXIgPyBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1h
bmQoIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciIsICJvcHRpb25zIikgOiBJbnNw
ZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCIs
ICJvcHRpb25zIik7CisgICAgfQogCi0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQ7
CisgICAgcmVtb3ZlKCkKKyAgICB7CisgICAgICAgIHN1cGVyLnJlbW92ZSgpOwogCi0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkV2ZW50QnJlYWtwb2ludC5FdmVudC5E
aXNhYmxlZFN0YXRlQ2hhbmdlZCk7CisgICAgICAgIGlmICh0aGlzLl9ldmVudExpc3RlbmVyKQor
ICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
cih0aGlzLl9ldmVudExpc3RlbmVyKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCh0aGlzKTsKICAgICB9CiAKICAg
ICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCkBAIC03NSwxOSArMTA5LDE0IEBAIFdJLkV2
ZW50QnJlYWtwb2ludCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICAgICAgY29va2llWyJldmVudC1icmVha3BvaW50LWV2ZW50LW5hbWUiXSA9IHRoaXMu
X2V2ZW50TmFtZTsKICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TGlzdGVuZXIpCiAgICAgICAgICAg
ICBjb29raWVbImV2ZW50LWJyZWFrcG9pbnQtZXZlbnQtbGlzdGVuZXIiXSA9IHRoaXMuX2V2ZW50
TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkOwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0g
ICAgICAgICAgICBjb29raWVbImV2ZW50LWJyZWFrcG9pbnQtZGlzYWJsZWQiXSA9IHRoaXMuX2Rp
c2FibGVkOwogICAgIH0KIAogICAgIHRvSlNPTihrZXkpCiAgICAgewotICAgICAgICBsZXQganNv
biA9IHsKLSAgICAgICAgICAgIHR5cGU6IHRoaXMuX3R5cGUsCi0gICAgICAgIH07CisgICAgICAg
IGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpzb24udHlwZSA9IHRoaXMu
X3R5cGU7CiAgICAgICAgIGlmICh0aGlzLl9ldmVudE5hbWUpCiAgICAgICAgICAgICBqc29uLmV2
ZW50TmFtZSA9IHRoaXMuX2V2ZW50TmFtZTsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQot
ICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgIGlmIChrZXkgPT09IFdJ
Lk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKICAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3Rv
cmVzLmV2ZW50QnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl90eXBlICsgKHRoaXMuX2V2ZW50
TmFtZSA/ICI6IiArIHRoaXMuX2V2ZW50TmFtZSA6ICIiKTsKICAgICAgICAgcmV0dXJuIGpzb247
CkBAIC05OSwxMSArMTI4LDQgQEAgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUgPSB7CiAgICAgSW50
ZXJ2YWw6ICJpbnRlcnZhbCIsCiAgICAgTGlzdGVuZXI6ICJsaXN0ZW5lciIsCiAgICAgVGltZW91
dDogInRpbWVvdXQiLAotCi0gICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogRE9NRGVidWdn
ZXIuRXZlbnRCcmVha3BvaW50VHlwZXMuVGltZXIgd2FzIHJlbW92ZWQuCi0gICAgVGltZXI6ICJ0
aW1lciIsCi19OwotCi1XSS5FdmVudEJyZWFrcG9pbnQuRXZlbnQgPSB7Ci0gICAgRGlzYWJsZWRT
dGF0ZUNoYW5nZWQ6ICJldmVudC1icmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWNoYW5nZWQiLAog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMWYxMTk3
ODk1NmY1M2Y5ZDM2YTY3ZWIzNjYyYjEzNGE1YzRlMDU5Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFTY3JpcHRCcmVha3Bv
aW50LmpzCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBB
UyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJV
VE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFr
cG9pbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlTG9jYXRpb24sIHtjb250ZW50SWRl
bnRpZmllciwgZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQsIGF1dG9D
b250aW51ZX0gPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVM
b2NhdGlvbiBpbnN0YW5jZW9mIFdJLlNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFjb250ZW50SWRlbnRpZmllciB8fCB0eXBlb2YgY29udGVudElkZW50aWZpZXIg
PT09ICJzdHJpbmciKTsKKworICAgICAgICBzdXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0
aW9ucywgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0pOworCisgICAgICAgIHRoaXMuX2lkID0g
bnVsbDsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0
aW9uOworCisgICAgICAgIGxldCBzb3VyY2VDb2RlID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGU7CisgICAgICAgIGlmIChzb3VyY2VDb2RlKSB7CisgICAgICAgICAgICB0aGlz
Ll9jb250ZW50SWRlbnRpZmllciA9IHNvdXJjZUNvZGUuY29udGVudElkZW50aWZpZXI7CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydCghY29udGVudElkZW50aWZpZXIgfHwgY29udGVudElkZW50
aWZpZXIgPT09IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyLCAiVGhlIGNvbnRlbnQgaWRlbnRpZmll
ciBmcm9tIHRoZSBzb3VyY2UgY29kZSBzaG91bGQgbWF0Y2ggdGhlIGdpdmVuIHZhbHVlLiIpOwor
ICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyID0gY29u
dGVudElkZW50aWZpZXIgfHwgbnVsbDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29u
dGVudElkZW50aWZpZXIgfHwgdGhpcy5faXNTcGVjaWFsKCksICJUaGVyZSBzaG91bGQgYWx3YXlz
IGJlIGEgY29udGVudCBpZGVudGlmaWVyIGZvciBhIGJyZWFrcG9pbnQuIik7CisKKyAgICAgICAg
dGhpcy5fc2NyaXB0SWRlbnRpZmllciA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQg
PyBzb3VyY2VDb2RlLmlkIDogbnVsbDsKKyAgICAgICAgdGhpcy5fdGFyZ2V0ID0gc291cmNlQ29k
ZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/IHNvdXJjZUNvZGUudGFyZ2V0IDogbnVsbDsKKyAgICAg
ICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTsKKworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRp
b25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRoaXMp
OworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5T
b3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7CisgICAgfQorCisg
ICAgLy8gSW1wb3J0IC8gRXhwb3J0CisKKyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKKyAgICB7
CisgICAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBudWxsOworICAgICAgICBsZXQgYnJlYWtwb2lu
dCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9u
KHNvdXJjZUNvZGUsIGpzb24ubGluZU51bWJlciB8fCAwLCBqc29uLmNvbHVtbk51bWJlciB8fCAw
KSwgeworICAgICAgICAgICAgLy8gVGhlICd1cmwnIGZhbGxiYWNrIGlzIGZvciB0cmFuc2l0aW9u
aW5nIGZyb20gb2xkZXIgZnJvbnRlbmRzIGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICAgICAg
ICAgIGNvbnRlbnRJZGVudGlmaWVyOiBqc29uLmNvbnRlbnRJZGVudGlmaWVyIHx8IGpzb24udXJs
LAorICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCisgICAgICAgICAgICBjb25k
aXRpb246IGpzb24uY29uZGl0aW9uLAorICAgICAgICAgICAgaWdub3JlQ291bnQ6IGpzb24uaWdu
b3JlQ291bnQsCisgICAgICAgICAgICBhdXRvQ29udGludWU6IGpzb24uYXV0b0NvbnRpbnVlLAor
ICAgICAgICB9KTsKKyAgICAgICAgYnJlYWtwb2ludC5fYWN0aW9ucyA9IGpzb24uYWN0aW9ucz8u
bWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3BvaW50QWN0aW9uLmZyb21KU09OKGFjdGlvbkpT
T04sIGJyZWFrcG9pbnQpKSB8fCBbXTsKKyAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQ7CisgICAg
fQorCisgICAgdG9KU09OKGtleSkKKyAgICB7CisgICAgICAgIC8vIFRoZSBpZCwgc2NyaXB0SWRl
bnRpZmllciwgdGFyZ2V0LCBhbmQgcmVzb2x2ZWQgc3RhdGUgYXJlIHRpZWQgdG8gdGhlIGN1cnJl
bnQgc2Vzc2lvbiwgc28gZG9uJ3QgaW5jbHVkZSB0aGVtIGZvciBzZXJpYWxpemF0aW9uLgorICAg
ICAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihrZXkpOworICAgICAgICBqc29uLmNvbnRlbnRJ
ZGVudGlmaWVyID0gdGhpcy5fY29udGVudElkZW50aWZpZXI7CisgICAgICAgIGpzb24ubGluZU51
bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICBqc29u
LmNvbHVtbk51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7Cisg
ICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKKyAgICAgICAg
ICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhpcy5fY29u
dGVudElkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJl
ciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAg
IHJldHVybiBqc29uOworICAgIH0KKworICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHNvdXJjZUNv
ZGVMb2NhdGlvbigpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbjsgfQorICAgIGdl
dCBjb250ZW50SWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOyB9
CisgICAgZ2V0IHNjcmlwdElkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9zY3JpcHRJZGVudGlm
aWVyOyB9CisgICAgZ2V0IHRhcmdldCgpIHsgcmV0dXJuIHRoaXMuX3RhcmdldDsgfQorCisgICAg
Z2V0IGdsb2JhbCgpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2Fz
ZSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludDoKKyAgICAg
ICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAg
ICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ6
CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtw
b2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFr
cG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBnZXQgcmVtb3ZhYmxlKCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dl
clN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5h
bGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIu
dW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGdldCBlZGl0
YWJsZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5k
ZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludDoKKyAgICAgICAgY2Fz
ZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNh
c2UgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAg
ICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoK
KyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICB9CisKKyAgICBnZXQgaWRlbnRpZmllcigpCisgICAgeworICAgICAgICByZXR1
cm4gdGhpcy5faWQ7CisgICAgfQorCisgICAgc2V0IGlkZW50aWZpZXIoaWQpCisgICAgeworICAg
ICAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7CisgICAgfQorCisgICAgZ2V0IHJlc29sdmVkKCkK
KyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZlZDsKKyAgICB9CisKKyAgICBzZXQg
cmVzb2x2ZWQocmVzb2x2ZWQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fcmVzb2x2ZWQgPT09
IHJlc29sdmVkKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFyZXNvbHZlZCB8fCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSB8fCB0aGlz
Ll9pc1NwZWNpYWwoKSwgIkJyZWFrcG9pbnRzIG11c3QgaGF2ZSBhIFNvdXJjZUNvZGUgdG8gYmUg
cmVzb2x2ZWQuIiwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSByZXNvbHZlZCB8
fCBmYWxzZTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlKTsKKyAgICB9CisK
KyAgICByZW1vdmUoKQorICAgIHsKKyAgICAgICAgc3VwZXIucmVtb3ZlKCk7CisKKyAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQodGhpcyk7CisgICAgfQorCisgICAg
c2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQorICAgIHsKKyAgICAgICAgY29va2llWyJqYXZh
c2NyaXB0LWJyZWFrcG9pbnQtY29udGVudC1pZGVudGlmaWVyIl0gPSB0aGlzLl9jb250ZW50SWRl
bnRpZmllcjsKKyAgICAgICAgY29va2llWyJqYXZhc2NyaXB0LWJyZWFrcG9pbnQtbGluZS1udW1i
ZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICBjb29r
aWVbImphdmFzY3JpcHQtYnJlYWtwb2ludC1jb2x1bW4tbnVtYmVyIl0gPSB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAg
IF9pc1NwZWNpYWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbi5pc0VxdWFsKG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIElu
ZmluaXR5KSk7CisgICAgfQorCisgICAgX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdl
ZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRh
KTsKKyAgICB9CisKKyAgICBfc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdl
ZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgZXZl
bnQuZGF0YSk7CisgICAgfQorfTsKKworV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuVHlwZUlkZW50
aWZpZXIgPSAiamF2YXNjcmlwdC1icmVha3BvaW50IjsKKworV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuRXZlbnQgPSB7CisgICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogImphdmFzY3JpcHQtYnJl
YWtwb2ludC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdlIiwKKyAgICBMb2NhdGlvbkRpZENoYW5n
ZTogImphdmFzY3JpcHQtYnJlYWtwb2ludC1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKKyAgICBEaXNw
bGF5TG9jYXRpb25EaWRDaGFuZ2U6ICJqYXZhc2NyaXB0LWJyZWFrcG9pbnQtZGlzcGxheS1sb2Nh
dGlvbi1kaWQtY2hhbmdlIiwKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKaW5kZXggYTUxM2NlMzE4YTZmYjM5MmI1
NDIyNzllZjVlZTQ5OTg5MWZlN2YzOC4uOWI2MjdlNTk4ODk5OGIyY2MzMDBhZmU2ZjI2NGY5NGYw
ZmJlNTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1Byb2JlU2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9Qcm9iZVNldC5qcwpAQCAtNDIsNyArNDIsNyBAQCBXSS5Qcm9iZVNldCA9IGNs
YXNzIFByb2JlU2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgV0kuRnJhbWUuYWRkRXZl
bnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21h
aW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICBXSS5Qcm9iZS5hZGRFdmVudExpc3Rl
bmVyKFdJLlByb2JlLkV2ZW50LlNhbXBsZUFkZGVkLCB0aGlzLl9zYW1wbGVDb2xsZWN0ZWQsIHRo
aXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRT
dGF0ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0
ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMp
OwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNjgsNyArNjgsNyBAQCBXSS5Qcm9iZVNldCA9
IGNsYXNzIFByb2JlU2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBjcmVhdGVQcm9iZShleHBy
ZXNzaW9uKQogICAgIHsKLSAgICAgICAgdGhpcy5icmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5C
cmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGwsIGV4cHJlc3Npb24pOworICAgICAgICB0
aGlzLmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9i
ZSwge2RhdGE6IGV4cHJlc3Npb259KTsKICAgICB9CiAKICAgICBhZGRQcm9iZShwcm9iZSkKQEAg
LTEwMSw3ICsxMDEsNyBAQCBXSS5Qcm9iZVNldCA9IGNsYXNzIFByb2JlU2V0IGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5F
dmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZUNoYW5nZWQsIHRo
aXMpOwogICAgICAgICBXSS5Qcm9iZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLlByb2JlLkV2ZW50
LlNhbXBsZUFkZGVkLCB0aGlzLl9zYW1wbGVDb2xsZWN0ZWQsIHRoaXMpOwotICAgICAgICBXSS5C
cmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZl
ZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwg
dGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwg
dGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KIAog
ICAgIC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMKaW5kZXggNDdlZWY2NGUzZGNkZjE2
NzQyOTg5NjEyY2E1ZjhkN2ZiZDg1NjliMy4uZjViYzk1ZWQyYTgwZDI3NGJiZWIyMmY1NGI4OGUz
NDgyYzY4ZTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMKQEAgLTIzLDI2ICsyMywyNSBAQAog
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLlVSTEJyZWFrcG9p
bnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CitXSS5VUkxCcmVha3Bv
aW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKICAgICBj
b25zdHJ1Y3Rvcih0eXBlLCB1cmwsIHtkaXNhYmxlZH0gPSB7fSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuVVJMQnJlYWtwb2ludC5UeXBlKS5pbmNsdWRl
cyh0eXBlKSwgdHlwZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiB1cmwgPT09ICJz
dHJpbmciLCB1cmwpOwogCi0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKHtkaXNhYmxl
ZH0pOwogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgICAgICB0aGlzLl91cmwgPSB1
cmw7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7CiAgICAgfQog
CiAgICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgZGVzZXJpYWxpemUoc2VyaWFsaXplZEluZm8p
CisgICAgc3RhdGljIGZyb21KU09OKGpzb24pCiAgICAgewotICAgICAgICByZXR1cm4gbmV3IFdJ
LlVSTEJyZWFrcG9pbnQoc2VyaWFsaXplZEluZm8udHlwZSwgc2VyaWFsaXplZEluZm8udXJsLCB7
Ci0gICAgICAgICAgICBkaXNhYmxlZDogISFzZXJpYWxpemVkSW5mby5kaXNhYmxlZCwKKyAgICAg
ICAgcmV0dXJuIG5ldyBXSS5VUkxCcmVha3BvaW50KGpzb24udHlwZSwganNvbi51cmwsIHsKKyAg
ICAgICAgICAgIGRpc2FibGVkOiBqc29uLmRpc2FibGVkLAogICAgICAgICB9KTsKICAgICB9CiAK
QEAgLTUxLDE5ICs1MCwxNiBAQCBXSS5VUkxCcmVha3BvaW50ID0gY2xhc3MgVVJMQnJlYWtwb2lu
dCBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCB0eXBlKCkgeyByZXR1cm4gdGhpcy5fdHlwZTsg
fQogICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7IH0KIAotICAgIGdldCBkaXNhYmxl
ZCgpCisgICAgZ2V0IGdsb2JhbCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJs
ZWQ7CisgICAgICAgIHJldHVybiB0aGlzID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVx
dWVzdHNCcmVha3BvaW50OwogICAgIH0KIAotICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKKyAg
ICByZW1vdmUoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkID09PSBkaXNhYmxl
ZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3VwZXIucmVtb3ZlKCk7CiAKLSAgICAg
ICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2Vk
KTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQodGhp
cyk7CiAgICAgfQogCiAgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQpAQCAtNzQsMjIg
KzcwLDE1IEBAIFdJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICB0b0pTT04oa2V5KQogICAgIHsKLSAgICAgICAgbGV0IGpzb24gPSB7
Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLl90eXBlLAotICAgICAgICAgICAgdXJsOiB0aGlzLl91
cmwsCi0gICAgICAgIH07Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKLSAgICAgICAgICAg
IGpzb24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihr
ZXkpOworICAgICAgICBqc29uLnR5cGUgPSB0aGlzLl90eXBlOworICAgICAgICBqc29uLnVybCA9
IHRoaXMuX3VybDsKICAgICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3lt
Ym9sKQogICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMudXJsQnJlYWtwb2ludHMua2V5
UGF0aF0gPSB0aGlzLl90eXBlICsgIjoiICsgdGhpcy5fdXJsOwogICAgICAgICByZXR1cm4ganNv
bjsKICAgICB9CiB9OwogCi1XSS5VUkxCcmVha3BvaW50LkV2ZW50ID0gewotICAgIERpc2FibGVk
U3RhdGVDaGFuZ2VkOiAidXJsLWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCi19
OwotCiBXSS5VUkxCcmVha3BvaW50LlR5cGUgPSB7CiAgICAgVGV4dDogInRleHQiLAogICAgIFJl
Z3VsYXJFeHByZXNzaW9uOiAicmVnZXgiLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDFmYTljOWU0Yjg1ZGEwZjE5OTcwNmQ2MDVkMDk2MDIz
MjVmMGJiNGQuLmVlZGE4ZWIxMzUyYjc3MjBmNzEyMWM2NTA1OGQzODZmYmUyN2RkY2MgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTEwOCw2
ICsxMDgsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvV29ya2VyT2JzZXJ2ZXIuanMi
Pjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db25zb2xlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CkBAIC0x
MjYsNyArMTI3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0FuaW1hdGlvbi5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BbmltYXRpb25Db2xsZWN0aW9uLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JveFNoYWRvdy5qcyI+PC9zY3JpcHQ+
Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0NQVUluc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvQ1BVVGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgpAQCAtMTY5LDYgKzE2OSw3
IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmpl
Y3RTdG9yZUluZGV4LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0lzc3Vl
TWVzc2FnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9KYXZhU2NyaXB0
QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXllci5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlvdXRJbnN0cnVtZW50Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3Jk
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKaW5kZXggMDNm
NmM2OTcxYWEyNjg0OWZhYzMwODczOTQ4Y2ZmMzIzODU5ZGM2OS4uNjFjYjAwYTMyYTA0M2UwNTY2
NTAzNjViN2U1MmQwYWI2ZWRkNjcyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcu
anMKQEAgLTExNSw3ICsxMTUsNyBAQCBXSS5CcmVha3BvaW50QWN0aW9uVmlldyA9IGNsYXNzIEJy
ZWFrcG9pbnRBY3Rpb25WaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBfYXBwZW5kQWN0aW9u
QnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7Ci0gICAgICAgIHZhciBuZXdBY3Rpb24gPSB0aGlz
Ll9hY3Rpb24uYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24odGhpcy5fYWN0aW9uLnR5cGUsIHRoaXMu
X2FjdGlvbik7CisgICAgICAgIHZhciBuZXdBY3Rpb24gPSB0aGlzLl9hY3Rpb24uYnJlYWtwb2lu
dC5jcmVhdGVBY3Rpb24odGhpcy5fYWN0aW9uLnR5cGUsIHtwcmVjZWVkaW5nQWN0aW9uOiB0aGlz
Ll9hY3Rpb259KTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlvblZpZXdB
cHBlbmRBY3Rpb25WaWV3KHRoaXMsIG5ld0FjdGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVs
ZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmNzcwppbmRleCAwNWFjNWZkZmVmYTg4MmE4YjRkNWI4NjhjNmM1
ZGQ0MTNiNzY0ZTg5Li5jMzRlMjUzMTM0NWYwMTZlNTUyMzk0MTE4N2YwZTY4NTNjYThkZWVhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVh
a3BvaW50VHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTM0LDE1ICszNCw2IEBA
CiAKICAgICBmaWxsOiB2YXIoLS1icmVha3BvaW50LWNvbG9yKTsKICAgICBzdHJva2U6IGhzbGEo
MCwgMCUsIDEwJSwgMC4zKTsKLSAgICBmaWx0ZXI6IGdyYXlzY2FsZSgpOwotfQotCi0uaXRlbS5i
cmVha3BvaW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkIHsKLSAgICBmaWx0ZXI6
IG5vbmU7Ci19Ci0KLWJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWlu
YWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3BvaW50LnNlbGVj
dGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkIHsKLSAgICBzdHJva2U6IHZhcigt
LXNlbGVjdGVkLWZvcmVncm91bmQtY29sb3IpOwogfQogCiAuaXRlbS5icmVha3BvaW50IC5zdGF0
dXMgPiAuc3RhdHVzLWltYWdlLmF1dG8tY29udGludWU6OmFmdGVyIHsKQEAgLTU5LDgwICs1MCwx
MiBAQCBib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLgogICAgIGZpbGw6IHZhcigtLWJyZWFrcG9pbnQt
Y29sb3ItZGlzYWJsZWQpOwogfQogCi0uaXRlbS5icmVha3BvaW50IC5zdWJ0aXRsZS5mb3JtYXR0
ZWQtbG9jYXRpb24gewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLmJyZWFrcG9pbnQt
ZGVidWdnZXItc3RhdGVtZW50LWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1saWdodCk7Ci19Ci0KLS5icmVha3Bv
aW50LWV4Y2VwdGlvbi1pY29uIC5pY29uIHsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5
cGVJY29ucy5zdmcjRXhjZXB0aW9uLWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9pbnQtYXNzZXJ0aW9u
LWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNB
c3NlcnRpb24tbGlnaHQpOwotfQotCi0uYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbiB7
Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1saWdo
dCk7Ci19Ci0KLS5icmVha3BvaW50LXBhdXNlZC1pY29uIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9p
bnQucGF1c2VkIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjUGF1c2VkQnJlYWtwb2ludC1saWdodCk7CiB9CiAKLS8qIFdoZW4gYW5pbWF0aW5nIGEgbGF5
ZXIgb24gdG9wIG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwgbW92ZSB0aGUgbWFpbgotaWNvbiB0
byB0aGUgaWNvbiBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBhbmltYXRpb25zIGFyZSBsYXllcmVk
IG9uIHRvcC4gKi8KLS5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uIHsKLSAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1s
aWdodCk7Ci0gICAgY29udGVudDogJyc7Ci19Ci0KLS5icmVha3BvaW50LWdlbmVyaWMtbGluZS1p
Y29uIC5pY29uID4gc3BhbiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsK
LSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKLQotICAgIGJvcmRl
ci1yYWRpdXM6IDUwJTsKLSAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwotICAgIHRyYW5zaXRpb246
IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxNiwgMzAlLCA0MiUpOwotfQotCi0u
ZGF0YS11cGRhdGVkLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gPiBzcGFuIHsK
LSAgICBib3JkZXItcmFkaXVzOiAwOwotICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NSk7Ci0gICAg
dHJhbnNpdGlvbjogYWxsIC40cyBlYXNlLW91dDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xh
KDIxNiwgMzAlLCA0MiUsIDAuMSk7Ci19Ci0KIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIHsKLSAgICAuYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAuaWNvbiB7
Ci0gICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0
YXRlbWVudC1kYXJrKTsKLSAgICB9Ci0gICAgCi0gICAgLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWlj
b24gLmljb24gewotICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcj
RXhjZXB0aW9uLWRhcmspOwotICAgIH0KLQotICAgIC5icmVha3BvaW50LWFzc2VydGlvbi1pY29u
IC5pY29uIHsKLSAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fz
c2VydGlvbi1kYXJrKTsKLSAgICB9Ci0KLSAgICAuYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAu
aWNvbiB7Ci0gICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNy
b3Rhc2stZGFyayk7Ci0gICAgfQotCi0gICAgLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24g
eworICAgIC5pdGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29uIHsKICAgICAgICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1BhdXNlZEJyZWFrcG9pbnQtZGFyayk7CiAgICAg
fQotCi0gICAgLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gewotICAgICAgICBi
YWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1k
YXJrKTsKLSAgICB9Ci0gICAgCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCmluZGV4IDI2M2YwN2MyOGU3ZjlkYmVjMDg3
Y2FiM2FlNzU5NjQxMGI1ZWZmZDUuLmNmMmUwNmVlOGY1NmQwNjdhYTZkYzA1OTJhNmE2MTkyZDA4
ODlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTI1LDI2ICsy
NSwyNiBAQAogCiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3Rv
cihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3Rvcihi
cmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlfSA9IHt9KQogICAgIHsKICAg
ICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQp
OwogCi0gICAgICAgIGlmICghY2xhc3NOYW1lKQotICAgICAgICAgICAgY2xhc3NOYW1lID0gV0ku
QnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOworICAg
ICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05h
bWVzID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiYnJlYWtwb2ludCIpOwogCi0gICAg
ICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAgc3VwZXIoWyJicmVha3BvaW50Iiwg
Y2xhc3NOYW1lXSwgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKKyAgICAgICAgc3VwZXIo
Y2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKKworICAgICAgICAvLyBU
aGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBDcmVhdGUgYSBj
b25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNv
bnN0cnVjdG9yICE9PSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgdGhpcyBpbnN0YW5jZW9m
IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9
IGJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0ID0gbnVsbDsKIAogICAgICAgICB0
aGlzLl9saXN0ZW5lclNldCA9IG5ldyBXSS5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJCcmVha3Bv
aW50VHJlZUVsZW1lbnQgbGlzdGVuZXJzIik7Ci0gICAgICAgIGlmICghdGl0bGUpCi0gICAgICAg
ICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50
LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFu
Z2UpOwotICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5C
cmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1
cyk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJy
ZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMp
OwotICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVh
a3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7
Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwg
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhp
cy5fdXBkYXRlU3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJl
YWtwb2ludCwgV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
LnVwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFr
cG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLnVw
ZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVn
Z2VyTWFuYWdlciwgV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERp
ZENoYW5nZSwgdGhpcy51cGRhdGVTdGF0dXMpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5y
ZWdpc3RlcihXSS5kZWJ1Z2dlck1hbmFnZXIsIFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Qcm9i
ZVNldEFkZGVkLCB0aGlzLl9wcm9iZVNldEFkZGVkKTsKICAgICAgICAgdGhpcy5fbGlzdGVuZXJT
ZXQucmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UHJvYmVTZXRSZW1vdmVkLCB0aGlzLl9wcm9iZVNldFJlbW92ZWQpOwogCkBAIC01NSw4ICs1NSw4
IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJl
Z2lzdGVyKHRoaXMuc3RhdHVzLCAiY2xpY2siLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlj
a2VkKTsKIAogICAgICAgICBpZiAoIXRpdGxlKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGl0
bGVzKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOworICAgICAgICAgICAgdGhpcy51
cGRhdGVUaXRsZXMoKTsKKyAgICAgICAgdGhpcy51cGRhdGVTdGF0dXMoKTsKIAogICAgICAgICB0
aGlzLl9pY29uQW5pbWF0aW9uTGF5ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
c3BhbiIpOwogICAgICAgICB0aGlzLmljb25FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb25B
bmltYXRpb25MYXllckVsZW1lbnQpOwpAQCAtNzAsMTEgKzcwLDYgQEAgV0kuQnJlYWtwb2ludFRy
ZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJh
bFRyZWVFbGUKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7CiAgICAgfQogCi0gICAg
Z2V0IGZpbHRlcmFibGVEYXRhKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMu
YnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllcl19OwotICAgIH0KLQogICAgIG9uZGVsZXRlKCkK
ICAgICB7CiAgICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMg
dGhhdCB3aWxsIHJlbW92ZSB0aGlzCkBAIC04Miw4ICs3Nyw4IEBAIFdJLkJyZWFrcG9pbnRUcmVl
RWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxU
cmVlRWxlCiAgICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRl
IGl0IChlLmcuIFRleHRFZGl0b3IpLgogICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtl
eWJvYXJkU2hvcnRjdXQgPSB0cnVlOwogCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIu
aXNCcmVha3BvaW50UmVtb3ZhYmxlKHRoaXMuX2JyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzLl9icmVha3BvaW50KTsKKyAg
ICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQucmVtb3ZhYmxlKSB7CisgICAgICAgICAgICB0aGlz
Ll9icmVha3BvaW50LnJlbW92ZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
IH0KIApAQCAtMTM0LDQxICsxMjksMjcgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xh
c3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAg
ICAgc3VwZXIucG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpOwogICAgIH0K
IAotICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF91cGRhdGVUaXRsZXMo
KQotICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2JyZWFrcG9p
bnQuc291cmNlQ29kZUxvY2F0aW9uOworICAgIGdldCBsaXN0ZW5lclNldCgpIHsgcmV0dXJuIHRo
aXMuX2xpc3RlbmVyU2V0OyB9CiAKLSAgICAgICAgdmFyIGRpc3BsYXlMaW5lTnVtYmVyID0gc291
cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMaW5lTnVtYmVyOwotICAgICAgICB2YXIgZGlzcGxheUNv
bHVtbk51bWJlciA9IHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOwotICAg
ICAgICBpZiAoZGlzcGxheUNvbHVtbk51bWJlciA+IDApCi0gICAgICAgICAgICB0aGlzLm1haW5U
aXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkOiVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVy
ICsgMSwgZGlzcGxheUNvbHVtbk51bWJlciArIDEpOyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUg
YW5kIGNvbHVtbiBudW1iZXJzIGFyZSAxLWJhc2VkLgotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlM
aW5lTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNl
ZC4KLQotICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkp
IHsKLSAgICAgICAgICAgIHRoaXMuc3VidGl0bGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0
dGVkTG9jYXRpb25TdHJpbmcoKTsKLQotICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlv
bi5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpKQotICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVF
bGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExv
Y2F0aW9uU3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05hbWUpOwotCi0gICAgICAgICAgICB0
aGlzLnRvb2x0aXAgPSB0aGlzLm1haW5UaXRsZSArICIgXHUyMDE0ICIgKyBXSS5VSVN0cmluZygi
b3JpZ2luYWxseSAlcyIpLmZvcm1hdChzb3VyY2VDb2RlTG9jYXRpb24ub3JpZ2luYWxMb2NhdGlv
blN0cmluZygpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQorICAg
IHVwZGF0ZVN0YXR1cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0ku
QnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwg
dGhpcy5fYnJlYWtwb2ludC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlz
dC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVl
U3R5bGVDbGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKLSAgICAgICAg
dGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3Rh
dHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9icmVha3BvaW50LnJlc29sdmVk
ICYmIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBpZiAo
dGhpcy5fYnJlYWtwb2ludC5lZGl0YWJsZSkKKyAgICAgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNz
TGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRp
bnVlU3R5bGVDbGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKICAgICB9
CiAKKyAgICB1cGRhdGVUaXRsZXMoKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBz
dWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKICAgICBfYWRk
UHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNl
dCBpbnN0YW5jZW9mIFdJLlByb2JlU2V0KTsKQEAgLTIzMCwxNyArMjExLDYgQEAgV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
R2VuZXJhbFRyZWVFbGUKICAgICAgICAgfSwgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2Jl
RGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbik7CiAgICAgfQogCi0gICAgX2JyZWFrcG9pbnRM
b2NhdGlvbkRpZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2
ZW50LnRhcmdldCA9PT0gdGhpcy5fYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgLy8gVGhlIEJyZWFr
cG9pbnQgaGFzIGEgbmV3IGRpc3BsYXkgU291cmNlQ29kZS4gVGhlIHNpZGViYXIgd2lsbCByZW1v
dmUgdXMsIGFuZCBvbmRldGFjaCgpIHdpbGwgY2xlYXIgbGlzdGVuZXJzLgotICAgICAgICBpZiAo
ZXZlbnQuZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0gdGhpcy5fYnJlYWtwb2ludC5kaXNw
bGF5U291cmNlQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl91cGRh
dGVUaXRsZXMoKTsKLSAgICB9Ci0KICAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2
ZW50KQogICAgIHsKICAgICAgICAgLy8gVG8gcHJldmVudCB0aGUgdHJlZSBlbGVtZW50IGZyb20g
c2VsZWN0aW5nLgpAQCAtMjUzLDEyICsyMjMsOSBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQg
PSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQog
ICAgIH0KIH07CiAKLVdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHls
ZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKIFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMt
aW1hZ2UiOwotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHls
ZUNsYXNzTmFtZSA9ICJyZXNvbHZlZCI7CiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVz
SW1hZ2VBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRpbnVlIjsKIFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAi
ZGlzYWJsZWQiOwotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5
bGVDbGFzc05hbWUgPSAiZm9ybWF0dGVkLWxvY2F0aW9uIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11cGRhdGVkIjsKIAog
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlv
biA9IDQwMDsgLy8gbWlsbGlzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50Lmpz
CmluZGV4IDc1Y2M3ZDQ2YTZhODZiOGU2YTQ0MmJkYTAxYjk5YzUyZGQ5NGIyZDUuLjU3YzNjNDFi
ZjU0MDgyMzBkNzY1ODVhZTBmM2Y2OGZlYjgyODRiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRy
ZWVFbGVtZW50LmpzCkBAIC0xMDcsNiArMTA3LDE0IEBAIFdJLkNhbGxGcmFtZVRyZWVFbGVtZW50
ID0gY2xhc3MgQ2FsbEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1l
CiAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwogICAgIH0KIAorICAgIHBvcHVsYXRlQ29u
dGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2Nh
bGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24pCisgICAgICAgICAgICBXSS5hcHBlbmRDb250ZXh0
TWVudUl0ZW1zRm9yU291cmNlQ29kZShjb250ZXh0TWVudSwgdGhpcy5fY2FsbEZyYW1lLnNvdXJj
ZUNvZGVMb2NhdGlvbik7CisKKyAgICAgICAgc3VwZXIucG9wdWxhdGVDb250ZXh0TWVudShjb250
ZXh0TWVudSwgZXZlbnQpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF91cGRhdGVT
dGF0dXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Vmlldy5qcwppbmRleCAyOTZjMmE1NDIzYTBmNjkxZWFjN2QyZDBlOTM2
MDBmNTE1NGYwZGU4Li4xOWY2NGJkMzk4ZmUxNWQyOTAxZWMyZDgyNzEzOGEyMTYyNGIxN2M5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250
ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Vmlldy5qcwpAQCAtOTMsNyArOTMsNyBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNz
IENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuTWVkaWFUaW1lbGluZVZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJ
LkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3Nh
Z2UpIHsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1l
c3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9j
YXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdJLkNvbnRlbnRWaWV3LmNyZWF0ZUZyb21S
ZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24uZGlz
cGxheVNvdXJjZUNvZGUsIGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAgfQpAQCAtMjM0LDcgKzIz
NCw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkZyYW1lKQogICAg
ICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0Lm1haW5SZXNvdXJjZTsKIAotICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50IHx8IHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVNZXNzYWdlKSB7CisgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50IHx8IHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVNZXNzYWdlKSB7CiAgICAgICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAg
ICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNv
dXJjZUNvZGU7CiAgICAgICAgIH0KQEAgLTI3OSw3ICsyNzksNyBAQCBXSS5Db250ZW50VmlldyA9
IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlRpbWVsaW5l
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVj
dCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXSS5Jc3N1ZU1lc3NhZ2UpCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuSXNzdWVNZXNzYWdlKQogICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0
LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV0kuTG9jYWxSZXNvdXJjZU92ZXJyaWRlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZXh0TWVudVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCmluZGV4IGQwYjQwNTJkMzBkZWRjYWE5
MjU2YmNmODVmNDEyYzEzMWVkZjY3MjUuLmVjMmNjNjQ1ZWY5MzBiOWE3ODE4MGE3NDk1Y2ZhNjhi
ZTVkNjQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCkBAIC0xMTgsNyAr
MTE4LDcgQEAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvclNvdXJjZUNvZGUgPSBmdW5jdGlv
bihjb250ZXh0TWVudSwgc291cmNlQ29kZU9yTG9jYXQKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmlu
ZygiQWRkIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRCcmVha3BvaW50KG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKSk7CisgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQobmV3IFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4IDZi
MzNiMmNlM2MxZjJlZTRlYWExM2M4M2FmYTM0YWRkYmYwYTQ0NzYuLjE3NGQyMmEzNzAwZDkxOGJm
OWJiZDYxZjQ1YWI5ZDMwNTVjMDg3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcwpAQCAtMjMsMjggKzIzLDI4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRy
ZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5i
cmVha3BvaW50LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAg
Y29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRTdWJ0cmVl
TW9kaWZpZWQtbGlnaHQpOwogfQogCi0uYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0
cmlidXRlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0
ZW0uYnJlYWtwb2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbiB7
CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRB
dHRyaWJ1dGVNb2RpZmllZC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmRvbS5icmVha3BvaW50
LWZvci1ub2RlLXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7Cisu
aXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAg
ICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludE5vZGVS
ZW1vdmVkLWxpZ2h0KTsKIH0KIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykg
ewotICAgIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1zdWJ0cmVlLW1vZGlmaWVkOm5v
dCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQu
ZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRTdWJ0cmVlTW9kaWZp
ZWQtZGFyayk7CiAgICAgfQogCi0gICAgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0
dHJpYnV0ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKyAg
ICAuaXRlbS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5p
Y29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJy
ZWFrcG9pbnRBdHRyaWJ1dGVNb2RpZmllZC1kYXJrKTsKICAgICB9CiAKLSAgICAuYnJlYWtwb2lu
dC5kb20uYnJlYWtwb2ludC1mb3Itbm9kZS1yZW1vdmVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQt
aWNvbikgLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3Qo
LnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29u
cy5zdmcjRE9NQnJlYWtwb2ludE5vZGVSZW1vdmVkLWRhcmspOwogICAgIH0KLX0KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQuanMKaW5kZXggYWQ2YmIxYTE0OTIyMmNjM2Q2NzFiNmZkYmUyYzQ0ODJjMGQ1MGI2Ny4uNjNl
NjE2YTkxN2EyMDYwMzc3YjNmNWFlMDRhZmMwNmIwM2I5N2MwNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVt
ZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjYgKzIzLDIwIEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVt
ZW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRy
ZWVFbGVtZW50CitXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBET01CcmVha3Bv
aW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQKIHsKLSAgICBj
b25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBjb25z
dHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30pCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2lu
dCk7CiAKLSAgICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJyZWFrcG9pbnQiLCAiZG9tIiwgYGJy
ZWFrcG9pbnQtZm9yLSR7YnJlYWtwb2ludC50eXBlfWBdOwotICAgICAgICBpZiAoY2xhc3NOYW1l
KQotICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKGNsYXNzTmFtZSk7CisgICAgICAgIGlmICgh
QXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbXTsK
KyAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJkb20iLCBicmVha3BvaW50LnR5cGUpOwogCiAgICAg
ICAgIGlmICghdGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9IFdJLkRPTUJyZWFrcG9pbnRUcmVl
RWxlbWVudC5kaXNwbGF5TmFtZUZvclR5cGUoYnJlYWtwb2ludC50eXBlKTsKIAotICAgICAgICBj
b25zdCBzdWJ0aXRsZSA9IG51bGw7Ci0gICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBz
dWJ0aXRsZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0
aWxpdGllcy51c2VTVkdTeW1ib2woIkltYWdlcy9CcmVha3BvaW50LnN2ZyIpOwotICAgICAgICB0
aGlzLnN0YXR1cy5jbGFzc05hbWUgPSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1h
Z2VFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0KLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNl
cGFyYXRlbHkgPSB0cnVlOworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywg
dGl0bGV9KTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAgLTYxLDEwOCArNTUsNCBAQCBXSS5E
T01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBET01CcmVha3BvaW50VHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5HZW5lcmFsVAogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0K
ICAgICB9Ci0KLSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIG9uYXR0YWNoKCkKLSAgICB7Ci0gICAg
ICAgIHN1cGVyLm9uYXR0YWNoKCk7Ci0KLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5h
ZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5n
ZWQsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0Vu
YWJsZWREaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhp
cy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVt
ZW50Q2xpY2tlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxl
bWVudEZvY3VzZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7
Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5f
c3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5z
dGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxl
bWVudENsaWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1
cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMu
c3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1h
Z2VFbGVtZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAg
ICB9Ci0KLSAgICBvbmRldGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwot
Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQp
OwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMu
X2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJl
bW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVt
ZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3Vz
ZWQgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93
biA9IG51bGw7Ci0gICAgfQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ug
c2V0IHRoaXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMK
LSAgICAgICAgLy8gQnJlYWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdh
cyBkZWxldGVkIGZyb20KLSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9t
IG91dHNpZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlh
RGVsZXRlS2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAg
ICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LQotICAgIG9uc3BhY2UoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgp
OwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51
KGNvbnRleHRNZW51LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgbGV0IGxhYmVsID0gYnJlYWtwb2ludC5kaXNh
YmxlZCA/IFdJLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpIDogV0kuVUlTdHJpbmcoIkRp
c2FibGUgQnJlYWtwb2ludCIpOwotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxhYmVs
LCB0aGlzLl90b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIGZ1bmN0aW9u
KCkgewotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQot
ICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhp
cy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRG
b2N1c2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIG91dGxpbmUgZm9j
dXMuCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF9zdGF0
dXNJbWFnZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50
IHRyZWUgZWxlbWVudCBzZWxlY3Rpb24uCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwotICAgIH0KLQotICAgIF90b2dnbGVCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQgPSAhdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNh
YmxlZDsKLSAgICB9Ci0KLSAgICBfdXBkYXRlU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIGlmICgh
dGhpcy5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMu
Y2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNh
YmxlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkKTsKLSAg
ICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1l
bnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lLCBXSS5kZWJ1Z2dlck1hbmFnZXIu
YnJlYWtwb2ludHNFbmFibGVkKTsKLSAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3
LmpzCmluZGV4IDc5OWY2OGNjYjYyZGEwYmE1M2JkYTA0OTliYWIyMWZmMTExNmRkZTEuLmY1M2Ix
ZjQ1NDVmYTg2ZDhiMWMyMmU0NWJmNmQxM2UzZGVkNjQ4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29u
dGVudFZpZXcuanMKQEAgLTk1LDcgKzk1LDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xh
c3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHRoaXMuX2RvbUJyZWFrcG9pbnRBZGRlZE9y
UmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92
ZWQsIHRoaXMuX2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CiAKLSAgICAgICAg
ICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2
ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RGlzYWJs
ZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwg
dGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKICAg
ICAgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3Bv
aW50LkV2ZW50LkRPTU5vZGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9k
ZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRE
aWRDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNz
cwppbmRleCA0ZmMzYzRhNmZkY2Y2ZjkxNjQzZGJhZTg2ZDIyMjYyZjUxZjEzMjUzLi4xNjFjZWRj
ZjEyN2U4ZjJiYjM1ZTUxZjY2ZmYzNDE5MWQzNGU2M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZl
bnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCkBAIC0yMywzNiArMjMsMzYgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0uYnJlYWtwb2ludC5ldmVudC5icmVh
a3BvaW50LWZvci1hbmltYXRpb24tZnJhbWU6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbiB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBhdXNl
ZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVu
dEJyZWFrcG9pbnRBbmltYXRpb25GcmFtZS1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmV2ZW50
LmJyZWFrcG9pbnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmlj
b24geworLml0ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNlZCkgLmljb24g
ewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9p
bnRJbnRlcnZhbC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9y
LWxpc3RlbmVyOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJl
YWtwb2ludC5ldmVudC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRMaXN0ZW5lci1saWdo
dCk7CiB9CiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5i
cmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50LnRp
bWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5
cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50VGltZW91dC1saWdodCk7CiB9CiAKIEBtZWRpYShw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFr
cG9pbnQtZm9yLWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5p
Y29uIHsKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBh
dXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRXZlbnRCcmVha3BvaW50QW5pbWF0aW9uRnJhbWUtZGFyayk7CiAgICAgfQotICAgIAotICAg
IC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtwb2lu
dC1wYXVzZWQtaWNvbikgLmljb24geworCisgICAgLml0ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRl
cnZhbDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50SW50ZXJ2YWwtZGFyayk7CiAgICAgfQotICAg
IAotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJl
YWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworCisgICAgLml0ZW0uYnJlYWtwb2ludC5ldmVu
dC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4v
SW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50TGlzdGVuZXItZGFyayk7CiAgICAg
fQotICAgIAotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90
KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisKKyAgICAuaXRlbS5icmVha3BvaW50
LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJs
KC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludFRpbWVvdXQtZGFyayk7Ci0g
ICAgfSAgIAorICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1l
bnQuanMKaW5kZXggZTBiZmViZjExZDkxNjAyZDQ5OTBmMjdiMzg3YWFlOWJiMGFjMWQ4OS4uOWNm
NGE3ZDViOWI0YjM5NzgzYzlmY2RhZjlkZDU4YzQ2ODVmZWY5MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTIzLDEzNiArMjMsMTkgQEAKICAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5FdmVudEJyZWFrcG9pbnRU
cmVlRWxlbWVudCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
R2VuZXJhbFRyZWVFbGVtZW50CitXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNz
IEV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50CiB7Ci0gICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZSwgdGl0bGV9ID0g
e30pCisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxlfSA9IHt9
KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJ
LkV2ZW50QnJlYWtwb2ludCk7CiAKLSAgICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJyZWFrcG9p
bnQiLCAiZXZlbnQiLCBgYnJlYWtwb2ludC1mb3ItJHticmVha3BvaW50LnR5cGV9YF07Ci0gICAg
ICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xhc3NOYW1l
KTsKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAg
Y2xhc3NOYW1lcyA9IFtdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goImV2ZW50IiwgYnJlYWtw
b2ludC50eXBlKTsKIAogICAgICAgICBpZiAoIXRpdGxlKQogICAgICAgICAgICAgdGl0bGUgPSBi
cmVha3BvaW50LmV2ZW50TmFtZTsKIAotICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IG51bGw7Ci0g
ICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7Ci0K
LSAgICAgICAgdGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2woIklt
YWdlcy9CcmVha3BvaW50LnN2ZyIpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc05hbWUgPSBX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWU7
Ci0KLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotICAgIH0K
LQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAgc3Vw
ZXIub25hdHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0
aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVk
RGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRG
b2N1c2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOwotICAg
ICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IHRoaXMuX3N0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bi5iaW5kKHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVz
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRD
bGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0
aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1
cy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxl
bWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7Ci0gICAgfQot
Ci0gICAgb25kZXRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25kZXRhY2goKTsKLQotICAg
ICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAg
ICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVF
dmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1v
dXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2Vk
ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0g
bnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSBu
dWxsOwotICAgIH0KLQotICAgIG9uZGVsZXRlKCkKLSAgICB7Ci0gICAgICAgIC8vIFdlIHNldCB0
aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxsIHJlbW92ZSB0aGlzCi0gICAg
ICAgIC8vIEJyZWFrcG9pbnRUcmVlRWxlbWVudCB3aWxsIGtub3cgd2hldGhlciBpdCB3YXMgZGVs
ZXRlZCBmcm9tCi0gICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRz
aWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgotICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0
ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwotCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmV2ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUJy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZXZlbnRMaXN0
ZW5lcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudEJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAgICB0aGlz
Ll90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IG9uc3BhY2UoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRl
eHRNZW51LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdDsKLQotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVk
ID8gV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJs
ZSBCcmVha3BvaW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRo
aXMuX3RvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAg
ICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKLSAgICAgICAgICAgICAgICBX
SS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGJyZWFrcG9pbnQu
ZXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAg
ICAgfSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVu
dENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7
Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQoZXZlbnQpCi0gICAgewot
ICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAgICAgICAgZXZlbnQuc3Rv
cFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93
bihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBlbGVtZW50IHNlbGVjdGlv
bi4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3RvZ2ds
ZUJyZWFrcG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNh
YmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwotICAgIH0KLQotICAgIF91
cGRhdGVTdGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykKLSAgICAgICAg
ICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUsIHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFz
c0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVk
U3R5bGVDbGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOwor
ICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsKICAgICB9CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcwppbmRleCA0NzY1
NzUyZTJmMDAzY2NlNDNjNDlhMmI2ZTdjYWRmZGFjMjk4ZjI5Li5jZDVkZmZiNGU3ZmEzYjY0Yjlm
MThmNmRiZDhkMDZkYmE5ODdmYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2Vj
dGlvbkdyb3VwLmNzcwpAQCAtMzQsMyArMzQsMTEgQEAKICAgICBoZWlnaHQ6IDEycHg7CiAgICAg
bWFyZ2luOiAwOwogfQorCisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0
W3R5cGU9ImNoZWNrYm94Il0gKyAuZ28tdG8tYXJyb3cgeworICAgIHZlcnRpY2FsLWFsaWduOiAt
MnB4OworfQorCisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9
ImNoZWNrYm94Il06bm90KDpjaGVja2VkKSArIC5nby10by1hcnJvdyB7CisgICAgZGlzcGxheTog
bm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCmluZGV4
IDY4NmY5Zjc5NWZhZjE4OTBjNmIwOWNlODAzNTgwYWNiNjdjOWI1YjUuLmVmMWJhMzViYzNiN2I5
YWU5Y2EzMDc2OGMwODQ4NzUzODlkYTZmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cC5qcwpAQCAtNzIsNyArNzIsOSBAQCBXSS5FdmVudExpc3RlbmVyU2VjdGlv
bkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCBleHRlbmRzIFdJLkRldGFp
bAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoV0kuRE9NTWFuYWdlci5zdXBwb3J0
c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50cygpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiaW5wdXQiKTsKKyAgICAgICAgICAgICAgICBsZXQgdG9nZ2xlQ29udGFpbmVyID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworCisgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50ID0gdG9nZ2xlQ29udGFpbmVyLmFwcGVuZENo
aWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOwogICAgICAgICAgICAgICAgIHRo
aXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudC50eXBlID0gImNoZWNrYm94
IjsKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVCcmVha3BvaW50VG9nZ2xlKCk7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50LmFk
ZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4gewpAQCAtODAsMTMgKzgyLDI2IEBA
IFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAgPSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlv
bkdyb3VwIGV4dGVuZHMgV0kuRGV0YWlsCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnQgPSAhIXRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9n
Z2xlRWxlbWVudC5jaGVja2VkOwogICAgICAgICAgICAgICAgIH0pOwogCisgICAgICAgICAgICAg
ICAgaWYgKFdJLkRPTU1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludENvbmZp
Z3VyYXRpb24oKSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgcmV2ZWFsQnJlYWtwb2ludEdv
VG9BcnJvdyA9IHRvZ2dsZUNvbnRhaW5lci5hcHBlbmRDaGlsZChXSS5jcmVhdGVHb1RvQXJyb3dC
dXR0b24oKSk7CisgICAgICAgICAgICAgICAgICAgIHJldmVhbEJyZWFrcG9pbnRHb1RvQXJyb3cu
dGl0bGUgPSBXSS5VSVN0cmluZygiUmV2ZWFsIGluIFNvdXJjZXMgVGFiIik7CisgICAgICAgICAg
ICAgICAgICAgIHJldmVhbEJyZWFrcG9pbnRHb1RvQXJyb3cuYWRkRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuaGFzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQpOworCisgICAgICAgICAgICAgICAgICAg
ICAgICBsZXQgYnJlYWtwb2ludFRvU2VsZWN0ID0gV0kuZG9tTWFuYWdlci5icmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lcklkKHRoaXMuX2V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnRUb1NlbGVjdCk7
CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFdJLnNob3dTb3VyY2VzVGFiKHticmVha3BvaW50
VG9TZWxlY3R9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQor
CiAgICAgICAgICAgICAgICAgbGV0IHRvZ2dsZUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgic3BhbiIpOwogICAgICAgICAgICAgICAgIHRvZ2dsZUxhYmVsLnRleHRDb250ZW50ID0gV0ku
VUlTdHJpbmcoIkJyZWFrcG9pbnQiKTsKICAgICAgICAgICAgICAgICB0b2dnbGVMYWJlbC5hZGRF
dmVudExpc3RlbmVyKCJjbGljayIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICB0
aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQuY2xpY2soKTsKICAgICAg
ICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXcgV0kuRGV0YWls
c1NlY3Rpb25TaW1wbGVSb3codG9nZ2xlTGFiZWwsIHRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3Bv
aW50VG9nZ2xlRWxlbWVudCkpOworICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXcgV0kuRGV0
YWlsc1NlY3Rpb25TaW1wbGVSb3codG9nZ2xlTGFiZWwsIHRvZ2dsZUNvbnRhaW5lcikpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFlOWExMTllMDVhZGM3MTE1MWM1
MmNkOGFjNDIyZDQ5MzM2ZGFlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQu
Y3NzCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuaXRlbS5icmVha3BvaW50
LmphdmFzY3JpcHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UgeworICAgIGZpbHRlcjogZ3JheXNj
YWxlKCk7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1
cy1pbWFnZS5yZXNvbHZlZCB7CisgICAgZmlsdGVyOiBub25lOworfQorCitib2R5Om5vdCgud2lu
ZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1
cy13aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LnNlbGVjdGVkIC5zdGF0dXMgPiAu
c3RhdHVzLWltYWdlLnJlc29sdmVkIHsKKyAgICBzdHJva2U6IHZhcigtLXNlbGVjdGVkLWZvcmVn
cm91bmQtY29sb3IpOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQgLnN1YnRpdGxl
LmZvcm1hdHRlZC1sb2NhdGlvbiB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisvKiBX
aGVuIGFuaW1hdGluZyBhIGxheWVyIG9uIHRvcCBvZiBhIHRyZWUgZWxlbWVudCdzIGljb24sIG1v
dmUgdGhlIG1haW4KK2ljb24gdG8gdGhlIGljb24gZWxlbWVudCdzIGJhY2tncm91bmQgc28gYW5p
bWF0aW9ucyBhcmUgbGF5ZXJlZCBvbiB0b3AuICovCisuaXRlbS5icmVha3BvaW50LmphdmFzY3Jp
cHQubGluZSAuaWNvbiB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL0ltYWdlcy9UeXBl
SWNvbnMuc3ZnI1Jlc3VsdExpbmUtbGlnaHQpOworICAgIGNvbnRlbnQ6ICcnOworfQorCisuaXRl
bS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbiA+IHNwYW4geworICAgIHBvc2l0aW9u
OiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOwor
ICAgIGxlZnQ6IDA7CisKKyAgICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgdHJhbnNmb3JtOiBz
Y2FsZSgwKTsKKyAgICB0cmFuc2l0aW9uOiBub25lOworICAgIGJhY2tncm91bmQtY29sb3I6IGhz
bCgyMTYsIDMwJSwgNDIlKTsKK30KKworLmRhdGEtdXBkYXRlZC5pdGVtLmJyZWFrcG9pbnQuamF2
YXNjcmlwdC5saW5lIC5pY29uID4gc3BhbiB7CisgICAgYm9yZGVyLXJhZGl1czogMDsKKyAgICB0
cmFuc2Zvcm06IHNjYWxlKDAuODUpOworICAgIHRyYW5zaXRpb246IGFsbCAuNHMgZWFzZS1vdXQ7
CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgyMTYsIDMwJSwgNDIlLCAwLjEpOworfQorCisu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uIHsKKyAg
ICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRGVidWdnZXJTdGF0ZW1lbnQt
bGlnaHQpOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZXhjZXB0aW9uIC5pY29u
IHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXhjZXB0aW9uLWxp
Z2h0KTsKK30KKworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFzc2VydGlvbiAuaWNvbiB7
CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlvbi1saWdo
dCk7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmljb24gewor
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stbGlnaHQp
OworfQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAgLml0ZW0u
YnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24geworICAgICAgICBiYWNrZ3JvdW5kLWlt
YWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1kYXJrKTsKKyAgICB9
CisKKyAgICAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5p
Y29uIHsKKyAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVn
Z2VyU3RhdGVtZW50LWRhcmspOworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5leGNlcHRpb24gLmljb24geworICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5
cGVJY29ucy5zdmcjRXhjZXB0aW9uLWRhcmspOworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9p
bnQuamF2YXNjcmlwdC5hc3NlcnRpb24gLmljb24geworICAgICAgICBjb250ZW50OiB1cmwoLi4v
SW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWRhcmspOworICAgIH0KKworICAgIC5pdGVt
LmJyZWFrcG9pbnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmljb24geworICAgICAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjTWljcm90YXNrLWRhcmspOworICAgIH0KK30K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlw
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTY0NmMyNWM5ZDYxZjc2Mzlj
ZjZhM2U1MWQ3NGUxYzBjNjBiODE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qcwpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKGJy
ZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7
CisKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAg
Y2xhc3NOYW1lcyA9IFsibGluZSJdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goImphdmFzY3Jp
cHQiKTsKKworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsK
KworICAgICAgICBpZiAoIXRpdGxlKQorICAgICAgICAgICAgdGhpcy5saXN0ZW5lclNldC5yZWdp
c3RlcihicmVha3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRp
ZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKTsKKyAgICAgICAgdGhp
cy5saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CisgICAg
fQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyXX07
CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICB1cGRhdGVTdGF0dXMoKQorICAgIHsK
KyAgICAgICAgc3VwZXIudXBkYXRlU3RhdHVzKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLnN0YXR1
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3Qu
dG9nZ2xlKCJyZXNvbHZlZCIsIHRoaXMuYnJlYWtwb2ludC5yZXNvbHZlZCAmJiBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkKTsKKyAgICB9CisKKyAgICB1cGRhdGVUaXRsZXMo
KQorICAgIHsKKyAgICAgICAgc3VwZXIudXBkYXRlVGl0bGVzKCk7CisKKyAgICAgICAgbGV0IHNv
dXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CisK
KyAgICAgICAgbGV0IGRpc3BsYXlMaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3Bs
YXlMaW5lTnVtYmVyOworICAgICAgICBsZXQgZGlzcGxheUNvbHVtbk51bWJlciA9IHNvdXJjZUNv
ZGVMb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOworICAgICAgICBpZiAoZGlzcGxheUNvbHVt
bk51bWJlciA+IDApCisgICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJM
aW5lICVkOiVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSwgZGlzcGxheUNvbHVtbk51
bWJlciArIDEpOyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFy
ZSAxLWJhc2VkLgorICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJ
LlVJU3RyaW5nKCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSk7IC8vIFRo
ZSB1c2VyIHZpc2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC4KKworICAgICAgICBpZiAoc291
cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKKyAgICAgICAgICAgIHRoaXMu
c3VidGl0bGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkTG9jYXRpb25TdHJpbmcoKTsK
KworICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5oYXNGb3JtYXR0ZWRMb2NhdGlv
bigpKQorICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5hZGQo
ImZvcm1hdHRlZC1sb2NhdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImZvcm1hdHRlZC1sb2NhdGlv
biIpOworCisgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLm1haW5UaXRsZSArICIgXHUy
MDE0ICIgKyBXSS5VSVN0cmluZygib3JpZ2luYWxseSAlcyIpLmZvcm1hdChzb3VyY2VDb2RlTG9j
YXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IC8vIFByaXZhdGUKKworICAgIF9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCisg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgPT09IHRoaXMuYnJlYWtw
b2ludCk7CisKKyAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQgaGFzIGEgbmV3IGRpc3BsYXkgU291
cmNlQ29kZS4gVGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMsIGFuZCBvbmRldGFjaCgpIHdpbGwg
Y2xlYXIgbGlzdGVuZXJzLgorICAgICAgICBpZiAoZXZlbnQuZGF0YS5vbGREaXNwbGF5U291cmNl
Q29kZSA9PT0gdGhpcy5icmVha3BvaW50LmRpc3BsYXlTb3VyY2VDb2RlKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlVGl0bGVzKCk7CisgICAgfQorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0
YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCAxMzQ1M2MyNWNhY2YyOTIy
MGZkZWU0NDgwZTE5ZGIwZTYzODE5OWU3Li44ODMwZjNjMWQ3MGQ3ODFkMjdmNWU2YTEwN2U1NDBi
Y2VmM2IzMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBA
IC02OCw2ICs2OCwxMSBAQCBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBQcm9i
ZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWxzUwogICAgICAgICB9KTsKIAog
ICAgICAgICBpbnNwZWN0ZWRQcm9iZVNldHMuc29ydChmdW5jdGlvbiBzb3J0QnlTb3VyY2VMb2Nh
dGlvbihhUHJvYmVTZXQsIGJQcm9iZVNldCkgeworICAgICAgICAgICAgaWYgKCEoYVByb2JlU2V0
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAxOworICAgICAgICAgICAgaWYgKCEoYlByb2JlU2V0IGluc3RhbmNlb2YgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKwogICAgICAgICAg
ICAgdmFyIGFMb2NhdGlvbiA9IGFQcm9iZVNldC5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlv
bjsKICAgICAgICAgICAgIHZhciBiTG9jYXRpb24gPSBiUHJvYmVTZXQuYnJlYWtwb2ludC5zb3Vy
Y2VDb2RlTG9jYXRpb247CiAgICAgICAgICAgICB2YXIgY29tcGFyaXNvblJlc3VsdCA9IGFMb2Nh
dGlvbi5zb3VyY2VDb2RlLmRpc3BsYXlOYW1lLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiTG9jYXRp
b24uc291cmNlQ29kZS5kaXNwbGF5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2Vj
dGlvbi5qcwppbmRleCA4Mzc3MzdjMGQzYWQyOGY4ZjY1MDZkNzZmZjE1OTA2ZTgzNTcxNTllLi5j
NTRkZDc3MjJmZjcxZDM5Y2Y1ZDcwYjAyNjg2ODBmNzY2ZWI4YzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0
aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1By
b2JlU2V0RGV0YWlsc1NlY3Rpb24uanMKQEAgLTMwLDYgKzMwLDIwIEBAIFdJLlByb2JlU2V0RGV0
YWlsc1NlY3Rpb24gPSBjbGFzcyBQcm9iZVNldERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV0kuRGV0
YWlsc1NlY3RpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5j
ZW9mIFdJLlByb2JlU2V0LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1bWVudDoiLCBwcm9iZVNldCk7
CiAKKyAgICAgICAgbGV0IHRpdGxlID0gIiI7CisgICAgICAgIGlmIChwcm9iZVNldC5icmVha3Bv
aW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KSB7CisgICAgICAgICAgICBpZiAocHJv
YmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxs
IEFuaW1hdGlvbiBGcmFtZXMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb2JlU2V0LmJyZWFr
cG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQor
ICAgICAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKTsKKyAg
ICAgICAgICAgIGVsc2UgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRpdGxlID0g
V0kuVUlTdHJpbmcoIkFsbCBFdmVudHMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb2JlU2V0
LmJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9p
bnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIFRpbWVvdXRzIik7
CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGl0bGUgPSBwcm9iZVNldC5icmVh
a3BvaW50LmV2ZW50TmFtZTsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBvcHRpb25zRWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB2YXIgZGF0YUdyaWQg
PSBuZXcgV0kuUHJvYmVTZXREYXRhR3JpZChwcm9iZVNldCk7CiAKQEAgLTM4LDcgKzUyLDcgQEAg
V0kuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiA9IGNsYXNzIFByb2JlU2V0RGV0YWlsc1NlY3Rpb24g
ZXh0ZW5kcyBXSS5EZXRhaWxzU2VjdGkKIAogICAgICAgICB2YXIgcHJvYmVTZWN0aW9uR3JvdXAg
PSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Hcm91cChbc2luZ2xldG9uUm93XSk7CiAKLSAgICAgICAg
c3VwZXIoInByb2JlIiwgIiIsIFtwcm9iZVNlY3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50KTsK
KyAgICAgICAgc3VwZXIoInByb2JlIiwgdGl0bGUsIFtwcm9iZVNlY3Rpb25Hcm91cF0sIG9wdGlv
bnNFbGVtZW50KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHJvYmUt
c2V0Iik7CiAKQEAgLTY1LDEwICs3OSwxMiBAQCBXSS5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0g
Y2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdJLkRldGFpbHNTZWN0aQogICAg
ICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldCwgV0kuUHJvYmVT
ZXQuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3Byb2JlU2V0U2FtcGxlc0NoYW5nZWQpOwogICAg
ICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldCwgV0kuUHJvYmVT
ZXQuRXZlbnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3Byb2JlU2V0U2FtcGxlc0NoYW5nZWQpOwog
Ci0gICAgICAgIC8vIFVwZGF0ZSB0aGUgc291cmNlIGxpbmsgd2hlbiB0aGUgYnJlYWtwb2ludCdz
IHJlc29sdmVkIHN0YXRlIGNoYW5nZXMsCi0gICAgICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlY29t
ZSBhIGxpdmUgbG9jYXRpb24gbGluayB3aGVuIHBvc3NpYmxlLgotICAgICAgICB0aGlzLl91cGRh
dGVMaW5rRWxlbWVudCgpOwotICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlz
Ll9wcm9iZVNldC5icmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVE
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX3By
b2JlU2V0LmJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgewor
ICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50
J3MgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgaXQgY2Fu
IGJlY29tZSBhIGxpdmUgbG9jYXRpb24gbGluayB3aGVuIHBvc3NpYmxlLgorICAgICAgICAgICAg
dGhpcy5fdXBkYXRlTGlua0VsZW1lbnQoKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0
LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50
KTsKKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0Lmluc3RhbGwoKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IDZhMzBiZGQyZjE3MGQ3
ZWZmZTIxNGFlZDYyYTUxNzAwYTJkYjZiMjAuLjQ2NjE5YmY2YTMxY2YyMjUxN2E1OWNjNWE4MDU5
NzhiZjExMmY1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC02Niwx
MCArNjYsMTEgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4
dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNz
TGlzdC5hZGQoInNvdXJjZS1jb2RlIik7CiAKICAgICAgICAgaWYgKHRoaXMuX3N1cHBvcnRzRGVi
dWdnaW5nKSB7Ci0gICAgICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50
U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhp
cy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgICAgICBXSS5CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAg
ICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMp
OworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9p
bnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURp
ZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisKKyAgICAg
ICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50Lkxv
Y2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMpOwog
CiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0
TWFuYWdlci5FdmVudC5UYXJnZXRBZGRlZCwgdGhpcy5fdGFyZ2V0QWRkZWQsIHRoaXMpOwogICAg
ICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFn
ZXIuRXZlbnQuVGFyZ2V0UmVtb3ZlZCwgdGhpcy5fdGFyZ2V0UmVtb3ZlZCwgdGhpcyk7CkBAIC0x
NjcsNyArMTY4LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2Rl
VGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICBjbG9zZSgpCiAgICAgewogICAg
ICAgICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpIHsKLSAgICAgICAgICAgIFdJLkJyZWFr
cG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAgICAg
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwg
dGhpcyk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIApAQCAtMTMwNSw3ICsxMzA2LDcgQEAg
V0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRl
bmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgdmFyIGVkaXRvckxpbmVJbmZvID0ge2xpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcn07CiAgICAgICAgIHZhciB1bmZvcm1hdHRlZExpbmVJbmZvID0gdGhp
cy5fdW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxpbmVJbmZvKGVkaXRvckxpbmVJbmZvKTsK
ICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUNvZGUuY3JlYXRl
U291cmNlQ29kZUxvY2F0aW9uKHVuZm9ybWF0dGVkTGluZUluZm8ubGluZU51bWJlciwgdW5mb3Jt
YXR0ZWRMaW5lSW5mby5jb2x1bW5OdW1iZXIpOwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5l
dyBXSS5CcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIHZhciBicmVha3Bv
aW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CiAK
ICAgICAgICAgdmFyIGxpbmVJbmZvID0gdGhpcy5fZWRpdG9yTGluZUluZm9Gb3JTb3VyY2VDb2Rl
TG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl9h
ZGRCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIGxpbmVJbmZvKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggZmFi
ZjNlYzFlZjljYjEzNmNiMjg3MGE1NDg2NzRkMWJhODQzMzU1MS4uZWY0YmQyNGI3MDk3YjcxMzg1
MDNjNmUxMDY1NWQ1YjNiZjE3ZTEyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTE2OSw3ICsxNjksNyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLm9uZGVsZXRlID0g
KHNlbGVjdGVkVHJlZUVsZW1lbnQpID0+IHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNl
bGVjdGVkVHJlZUVsZW1lbnQuc2VsZWN0ZWQpOwogCi0gICAgICAgICAgICBpZiAoIVdJLmRlYnVn
Z2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXBy
ZXNlbnRlZE9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudC5y
ZXByZXNlbnRlZE9iamVjdC5yZW1vdmFibGUpIHsKICAgICAgICAgICAgICAgICBsZXQgdHJlZUVs
ZW1lbnRUb1NlbGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQubmV4dFNlbGVjdGFibGVTaWJsaW5n
OwogICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudFRvU2VsZWN0KSB7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IG9taXRGb2N1cyA9IHRydWU7CkBAIC0zMjYsNyArMzI2LDcgQEAgV0ku
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFtZURpZENoYW5n
ZSwgdGhpcy5faGFuZGxlRGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwog
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuV2FpdGluZ1RvUGF1c2UsIHRoaXMuX2hhbmRsZURlYnVnZ2VyV2FpdGluZ1Rv
UGF1c2UsIHRoaXMpOwogCi0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxl
RGVidWdnZXJPYmplY3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRGVidWdn
ZXJPYmplY3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS5Jc3N1
ZU1lc3NhZ2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5Jc3N1ZU1lc3NhZ2UuRXZlbnQuRGlzcGxheUxv
Y2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlv
bkRpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNoYW5nZWQsIHRoaXMuX2hhbmRs
ZURPTUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdlZCwgdGhpcyk7CkBAIC0zODcsMTcgKzM4NywxNyBA
QCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5n
cy5zaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgICAg
ICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmIChX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxB
bmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsKIAotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdz
LnNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWxsVGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmIChXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJy
ZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCk7CiAK
LSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52
YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVh
a3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKKyAg
ICAgICAgICAgIGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dCkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKIAotICAgICAgICAgICAgaWYgKFdJLnNldHRp
bmdzLnNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMu
X2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9p
bnQpOwogCiAgICAgICAgICAgICBmb3IgKGxldCBldmVudEJyZWFrcG9pbnQgb2YgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmxpc3RlbmVyQnJlYWtwb2ludHMpCiAgICAgICAgICAgICAgICAgdGhpcy5f
YWRkQnJlYWtwb2ludChldmVudEJyZWFrcG9pbnQpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIFdJLlNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAg
ICAgV0kuQnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwor
ICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwogICAgICAgICBXSS5Jc3N1ZU1lc3NhZ2UucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwpAQCAtMTIwMSw3ICsxMjAxLDcg
QEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQp
ID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQsCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9
PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLnVu
Y2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQsCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50
KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCwKLSAgICAgICAgICAgICAgICAodHJlZUVsZW1l
bnQpID0+IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50IHx8
IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxl
bWVudCBpbnN0YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50LAorICAgICAgICAgICAgICAgICh0
cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludFRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VUcmVl
RWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50LAog
ICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCwKICAg
ICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2lu
dCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50
LApAQCAtMTIyNCw4ICsxMjI0LDggQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChh
IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ICYmIGIgaW5zdGFuY2VvZiBXSS5C
cmVha3BvaW50VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBh
cmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpOworICAgICAgICAgICAgaWYgKGEgaW5zdGFu
Y2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50ICYmIGIgaW5zdGFuY2VvZiBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVy
biB0aGlzLl9jb21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYik7CiAK
ICAgICAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi5t
YWluVGl0bGUpIHx8IGEuc3VidGl0bGUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGIuc3VidGl0bGUp
OwogICAgICAgICB9OwpAQCAtMTIzMyw3ICsxMjMzLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRz
IFcKICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGlu
c2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbih0cmVlRWxlbWVudCwg
cGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIGNvbXBhcmF0b3IpKTsKICAgICB9CiAKLSAgICBf
Y29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYikKKyAgICBfY29tcGFyZUphdmFTY3Jp
cHRCcmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICBpZiAoIWEucmVw
cmVzZW50ZWRPYmplY3QgfHwgIWIucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICByZXR1
cm4gMDsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAg
ICAgIGlmICh0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChicmVh
a3BvaW50KSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIGxldCBjb25zdHJ1
Y3RvciA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudDsKKyAgICAgICAgbGV0IGNvbnN0cnVjdG9y
ID0gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudDsKICAgICAgICAgbGV0IG9wdGlv
bnMgPSB7fTsKICAgICAgICAgbGV0IHBhcmVudFRyZWVFbGVtZW50ID0gdGhpcy5fYnJlYWtwb2lu
dHNUcmVlT3V0bGluZTsKIApAQCAtMTI2OSwxOSArMTI2OSwxOSBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICB9OwogCiAgICAgICAgIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1
Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCkgewotICAgICAgICAgICAg
b3B0aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiI7
CisgICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImRlYnVnZ2VyLXN0YXRlbWVudCJd
OwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLlVJU3RyaW5nKCJEZWJ1Z2dlciBTdGF0
ZW1lbnRzIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25zLmNs
YXNzTmFtZSA9ICJicmVha3BvaW50LWV4Y2VwdGlvbi1pY29uIjsKKyAgICAgICAgICAgIG9wdGlv
bnMuY2xhc3NOYW1lcyA9IFsiZXhjZXB0aW9uIl07CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxl
ID0gV0kucmVwZWF0ZWRVSVN0cmluZy5hbGxFeGNlcHRpb25zKCk7CiAgICAgICAgIH0gZWxzZSBp
ZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0Jy
ZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQt
ZXhjZXB0aW9uLWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJleGNl
cHRpb24iXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5yZXBlYXRlZFVJU3RyaW5n
LnVuY2F1Z2h0RXhjZXB0aW9ucygpOwogICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09
IFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQpIHsKLSAgICAg
ICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24iOwor
ICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJhc3NlcnRpb24iXTsKICAgICAgICAg
ICAgIG9wdGlvbnMudGl0bGUgPSBXSS5yZXBlYXRlZFVJU3RyaW5nLmFzc2VydGlvbkZhaWx1cmVz
KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmFsbE1pY3JvdGFza3NCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFt
ZSA9ICJicmVha3BvaW50LW1pY3JvdGFzay1pY29uIjsKKyAgICAgICAgICAgIG9wdGlvbnMuY2xh
c3NOYW1lcyA9IFsibWljcm90YXNrIl07CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxlID0gV0ku
VUlTdHJpbmcoIkFsbCBNaWNyb3Rhc2tzIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkRPTUJyZWFrcG9pbnQpIHsKICAgICAgICAgICAgIGlmICghYnJlYWtw
b2ludC5kb21Ob2RlSWRlbnRpZmllcikKQEAgLTEzNjQsNyArMTM2NCw3IEBAIFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXCiAgICAgX3JlbW92ZUFsbEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKQogICAg
IHsKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykgewotICAgICAg
ICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtw
b2ludCkpCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC0xMzgzLDcgKzEzODMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVu
ZHMgVwogCiAgICAgICAgIGxldCBicmVha3BvaW50cyA9IFtdOwogICAgICAgICBmb3IgKGxldCBj
aGlsZCBvZiB0cmVlRWxlbWVudC5jaGlsZHJlbikgewotICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoY2hpbGQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQpOworICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoY2hpbGQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dFRyZWVFbGVtZW50KTsKICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gY2hpbGQuYnJlYWtw
b2ludDsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQpOwogICAgICAgICAg
ICAgaWYgKGJyZWFrcG9pbnQpCkBAIC0xNDAzLDcgKzE0MDMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogCiAgICAgICAgICAgICBpc3N1ZVRyZWVFbGVtZW50ID0gbmV3IFdJLklzc3VlVHJl
ZUVsZW1lbnQoaXNzdWVNZXNzYWdlKTsKIAotICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQu
aW5zZXJ0Q2hpbGQoaXNzdWVUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxp
c3RTb3J0ZWRCeUZ1bmN0aW9uKGlzc3VlVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNo
aWxkcmVuLCB0aGlzLl9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50cykpOworICAgICAgICAg
ICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoaXNzdWVUcmVlRWxlbWVudCwgaW5zZXJ0
aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGlzc3VlVHJlZUVsZW1lbnQs
IHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlSmF2YVNjcmlwdEJyZWFr
cG9pbnRUcmVlRWxlbWVudHMpKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRUcmVlRWxlbWVudC5j
aGlsZHJlbi5sZW5ndGggPT09IDEpCiAgICAgICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQu
ZXhwYW5kKCk7CiAgICAgICAgIH0KQEAgLTE1NTAsNyArMTU1MCw3IEBAIFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhp
cy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAK
ICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9u
RnJhbWVzQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9p
bnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0s
CiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJyZXF1ZXN0QW5pbWF0aW9uRnJh
bWUgRmlyZWQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFz
b25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBA
IC0xNTk1LDggKzE1OTUsOCBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNs
YXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAg
dGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdJLlRyZWVPdXRs
aW5lLkV2ZW50LlNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlVHJlZVNlbGVjdGlvbkRp
ZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gV0kuZGVidWdn
ZXJNYW5hZ2VyLmJyZWFrcG9pbnRGb3JJZGVudGlmaWVyKHBhdXNlRGF0YS5icmVha3BvaW50SWQp
OwotICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog
ImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRUcmVl
RWxlbWVudCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KGJyZWFrcG9p
bnQsIHsKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAg
ICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiVHJpZ2dlcmVkIEJyZWFrcG9pbnQiKSwKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnREZXRhaWxzU2VjdGlvbiA9IG5l
dyBXSS5EZXRhaWxzU2VjdGlvblJvdzsKQEAgLTE2NDUsNyArMTY0NSw3IEBAIFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXCiAKICAgICAgICAgICAgIGxldCB0eXBlID0gV0kuRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmRpc3BsYXlOYW1lRm9yVHlwZShkb21CcmVha3BvaW50LnR5cGUpOwogICAgICAg
ICAgICAgbGV0IGRvbUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5ET01CcmVha3BvaW50
VHJlZUVsZW1lbnQoZG9tQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTog
ImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsi
cGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IHR5cGUsCiAgICAgICAgICAgICB9KTsK
ICAgICAgICAgICAgIGxldCBkb21CcmVha3BvaW50Um93ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9u
Um93OwpAQCAtMTcxNSw3ICsxNzE1LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAg
ICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRU
cmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgbGV0
IGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVF
bGVtZW50KGV2ZW50QnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJy
ZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1
c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJcdTIwMUMlc1x1MjAx
RCBFdmVudCBGaXJlZCIpLmZvcm1hdChwYXVzZURhdGEuZXZlbnROYW1lKSwKICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBlbmRDaGls
ZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xNzU4LDcgKzE3NTgsNyBAQCBXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0
bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzog
dHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBu
ZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bEludGVydmFsc0JyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVh
a3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNl
ZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygic2V0SW50ZXJ2YWwgRmly
ZWQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xODAy
LDcgKzE4MDIsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5f
cGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtz
dXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQoZXZlbnRC
cmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVz
ZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAg
ICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIiVzIEZpcmVkIikuZm9ybWF0KHBhdXNlRGF0
YS5ldmVudE5hbWUpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJl
YXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsK
QEAgLTE4MTgsNyArMTgxOCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0g
Y2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAg
ICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91
dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBldmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVu
dChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50LCB7Ci0gICAgICAg
ICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAg
ICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICB0aXRsZTogV0ku
VUlTdHJpbmcoInNldFRpbWVvdXQgRmlyZWQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAg
ICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudCk7CkBAIC0xODQ0LDcgKzE4NDQsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVu
ZHMgVwogICAgICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlz
LmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAog
ICAgICAgICAgICAgICAgIGxldCB1cmxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50KHVybEJyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICAg
ICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAg
ICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBX
SS5VSVN0cmluZygiVHJpZ2dlcmVkIFVSTCBCcmVha3BvaW50IiksCiAgICAgICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRSb3cgPSBuZXcgV0kuRGV0YWls
c1NlY3Rpb25Sb3c7CkBAIC0xOTUwLDkgKzE5NTAsOSBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMg
VwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50KSB7CisgICAgICAgIGlmICh0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQp
IHsKICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gdHJlZUVsZW1lbnQuYnJlYWtwb2ludDsK
LSAgICAgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50U3BlY2lhbChi
cmVha3BvaW50KSkKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50Lmdsb2JhbCkKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGxldCBzb3VyY2VDb2RlID0gYnJlYWtwb2lu
dC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGU7CkBAIC0xOTgxLDI1ICsxOTgx
LDkgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHNldHRpbmcgPSBXSS5z
ZXR0aW5ncy5zaG93QWxsTWljcm90YXNrc0JyZWFrcG9pbnQ7CiAgICAgICAgICAgICBicmVhazsK
IAotICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50OgotICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxBbmlt
YXRpb25GcmFtZXNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludDoKLSAgICAgICAg
ICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludDsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bExpc3RlbmVyc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Mu
c2hvd0FsbExpc3RlbmVyc0JyZWFrcG9pbnQ7Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAg
ICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQ6CiAgICAg
ICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbFJlcXVlc3RzQnJlYWtwb2ludDsK
ICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbFRpbWVvdXRzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5n
cy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KIAogICAgICAgICBpZiAoc2V0dGluZykKQEAgLTIwMDgsNyArMTk5Miw3IEBAIFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGlmIChldmVudC50eXBlID09PSBXSS5UcmVlT3V0bGlu
ZS5FdmVudC5FbGVtZW50UmVtb3ZlZCkgewogICAgICAgICAgICAgbGV0IHNlbGVjdGVkVHJlZUVs
ZW1lbnQgPSB0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7
CiAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVudCkgewotICAgICAgICAgICAgICAg
IGlmIChzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50IHx8ICFXSS5kZWJ1Z2dlck1hbmFn
ZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFr
cG9pbnQgfHwgIXNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZhYmxl
KSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNraXBVbnJldmVhbGVkID0gdHJ1ZTsKICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgZG9udFBvcHVsYXRlID0gdHJ1ZTsKICAgICAgICAgICAg
ICAgICAgICAgbGV0IHRyZWVFbGVtZW50VG9TZWxlY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnRy
YXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVhbGVkLCBkb250UG9wdWxhdGUpOwpAQCAt
MjA1MiwyNSArMjAzNiwyMyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNs
YXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2lu
dHMoKSB8fCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtw
b2ludHMoKSkgewotICAgICAgICAgICAgZnVuY3Rpb24gYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50
QnJlYWtwb2ludChicmVha3BvaW50LCBsYWJlbCwgY2hlY2tlZCkgeworICAgICAgICAgICAgZnVu
Y3Rpb24gYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChsYWJlbCwgYnJlYWtwb2lu
dCwgdHlwZSkgewogICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRl
bShsYWJlbCwgKCkgPT4gewotICAgICAgICAgICAgICAgICAgICBpZiAoY2hlY2tlZCkKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwot
ICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LCBjaGVja2VkKTsKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50QnJlYWtwb2ludChuZXcgV0kuRXZlbnRCcmVha3BvaW50KHR5cGUpKTsKKyAgICAg
ICAgICAgICAgICB9LCAhIWJyZWFrcG9pbnQpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlv
biBGcmFtZXMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQu
dmFsdWUpOwotICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50LCBXSS5VSVN0cmluZygi
QWxsIFRpbWVvdXRzIiksIFdJLnNldHRpbmdzLnNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQudmFs
dWUpOwotICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFs
bCBJbnRlcnZhbHMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbEludGVydmFsc0JyZWFrcG9pbnQudmFs
dWUpOworICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5V
SVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFtZXMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1h
dGlvbkZyYW1lKTsKKyAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9p
bnQoV0kuVUlTdHJpbmcoIkFsbCBUaW1lb3V0cyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
VGltZW91dHNCcmVha3BvaW50LCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KTsKKyAg
ICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmco
IkFsbCBJbnRlcnZhbHMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFr
cG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKTsKIAogICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAKICAgICAgICAgICAgIGlmIChXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNBbGxMaXN0ZW5lcnNCcmVha3BvaW50KCkpCi0gICAgICAg
ICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFsbCBFdmVudHMi
KSwgV0kuc2V0dGluZ3Muc2hvd0FsbExpc3RlbmVyc0JyZWFrcG9pbnQudmFsdWUpOworICAgICAg
ICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmco
IkFsbCBFdmVudHMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9p
bnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKTsKIAogICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRXZlbnQgQnJlYWtwb2ludFx1MjAyNiIp
LCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IHBvcG92ZXIgPSBuZXcgV0kuRXZlbnRCcmVh
a3BvaW50UG9wb3Zlcih0aGlzKTsKQEAgLTI0MjEsNyArMjQwMyw3IEBAIFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXCiAgICAgICAgIGxldCB3YXNTZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICBsZXQg
b2xkRGVidWdnZXJUcmVlRWxlbWVudCA9IG51bGw7CiAgICAgICAgIGxldCBuZXdEZWJ1Z2dlclRy
ZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGRlYnVnZ2VyT2JqZWN0IGluc3RhbmNlb2Yg
V0kuQnJlYWtwb2ludCkgeworICAgICAgICBpZiAoZGVidWdnZXJPYmplY3QgaW5zdGFuY2VvZiBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgewogICAgICAgICAgICAgb2xkRGVidWdnZXJUcmVlRWxl
bWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGRlYnVn
Z2VyT2JqZWN0KTsKICAgICAgICAgICAgIGlmIChvbGREZWJ1Z2dlclRyZWVFbGVtZW50KQogICAg
ICAgICAgICAgICAgIHdhc1NlbGVjdGVkID0gb2xkRGVidWdnZXJUcmVlRWxlbWVudC5zZWxlY3Rl
ZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKaW5kZXggZjkyZGQyYjMx
MGU0M2FjZDNkMWE1MzUwZGUyMDQzYmI5YmE3NTE4ZS4uZjdkMmRlZmY0MTRmODlmMTAzMTgxMWY0
OGFlZTU1MTkzMGNiYzI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcu
anMKQEAgLTk4LDcgKzk4LDcgQEAgV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBU
ZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLlJlc291cmNlQ28KICAgICBnZXQgc3Vw
cGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7CiAgICAgICAgIGxldCBvYmplY3Rz
ID0gV0kuZGVidWdnZXJNYW5hZ2VyLnByb2JlU2V0cy5maWx0ZXIoZnVuY3Rpb24ocHJvYmVTZXQp
IHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJjZS5jb250ZW50SWRlbnRpZmllciA9
PT0gcHJvYmVTZXQuYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAgICAgIHJl
dHVybiAhKHByb2JlU2V0LmJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludCkgfHwgdGhpcy5fcmVzb3VyY2UuY29udGVudElkZW50aWZpZXIgPT09IHByb2JlU2V0LmJy
ZWFrcG9pbnQuY29udGVudElkZW50aWZpZXI7CiAgICAgICAgIH0sIHRoaXMpOwogCiAgICAgICAg
IC8vIElmIHRoZSBTb3VyY2VDb2RlVGV4dEVkaXRvciBoYXMgYW4gZXhlY3V0aW9uTGluZU51bWJl
ciwgd2UgY2FuIGFzc3VtZQpAQCAtMzE5LDcgKzMxOSw3IEBAIFdJLlRleHRSZXNvdXJjZUNvbnRl
bnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJj
ZUNvCiAgICAgX3Byb2JlU2V0c0NoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IGV2ZW50LmRhdGEucHJvYmVTZXQuYnJlYWtwb2ludDsKLSAgICAgICAgaWYgKGJy
ZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHRoaXMucmVzb3VyY2Up
CisgICAgICAgIGlmICghKGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludCkgfHwgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhp
cy5yZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5n
ZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpp
bmRleCAwZjI0ODk0ZjM4OWM2ODcyMjFlYWFjOWMzNWQ1ZjE3NTlmZjEzYTVmLi4wMjFkYmVlMDVl
MzA4N2JmOTZkYmI0YmMzNjVmNGY0NzllZWM1ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3Nz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTIzLDE2ICsyMywxNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS5icmVha3BvaW50LnVybCAuc3VidGl0bGUgewor
Lml0ZW0uYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlIHsKICAgICBmb250LWZhbWlseTogTWVubG8s
IG1vbm9zcGFjZTsKIH0KIAotLmJyZWFrcG9pbnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQt
aWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uIHsK
ICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjVVJMQnJlYWtwb2ludC1s
aWdodCk7CiB9CiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAu
YnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAg
Lml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1VSTEJyZWFrcG9pbnQtZGFyayk7CiAgICAg
fQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCAwMjhhNTA2ZjcxMjViMmU4NDdkYWNmZDUwNThhYjky
NzYwY2QwMjdhLi44ZDI3NmQ0M2M4NjdkODgwNDBjMjE4NDJhYjY4ZWVmODMwY2JhNTAxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVh
a3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0yMywxNSArMjMsMTUg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5VUkxCcmVh
a3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5k
cyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKK1dJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNs
YXNzIFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxl
bWVudAogewotICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9
IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7
fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBX
SS5VUkxCcmVha3BvaW50KTsKIAotICAgICAgICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2lu
dCIsICJ1cmwiXTsKLSAgICAgICAgaWYgKGNsYXNzTmFtZSkKLSAgICAgICAgICAgIGNsYXNzTmFt
ZXMucHVzaChjbGFzc05hbWUpOworICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1l
cykpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVz
aCgidXJsIik7CiAKICAgICAgICAgbGV0IHN1YnRpdGxlOwogICAgICAgICBpZiAoIXRpdGxlKSB7
CkBAIC00MiwxMTUgKzQyLDYgQEAgV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3Mg
VVJMQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFQKICAgICAgICAgICAg
ICAgICBzdWJ0aXRsZSA9ICIvIiArIGJyZWFrcG9pbnQudXJsICsgIi8iOwogICAgICAgICB9CiAK
LSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsK
LQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgi
SW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9
IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFt
ZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAg
fQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBvbmF0dGFjaCgpCi0gICAgewotICAgICAgICBz
dXBlci5vbmF0dGFjaCgpOwotCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZl
bnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0
aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVk
RGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRG
b2N1c2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOwotICAg
ICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IHRoaXMuX3N0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bi5iaW5kKHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVz
LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRD
bGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0
aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1
cy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxl
bWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7Ci0gICAgfQot
Ci0gICAgb25kZXRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25kZXRhY2goKTsKLQotICAg
ICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAg
ICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVF
dmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1v
dXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2Vk
ID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0g
bnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSBu
dWxsOwotICAgIH0KLQotICAgIG9uZGVsZXRlKCkKLSAgICB7Ci0gICAgICAgIC8vIFdlIHNldCB0
aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxsIHJlbW92ZSB0aGlzCi0gICAg
ICAgIC8vIEJyZWFrcG9pbnRUcmVlRWxlbWVudCB3aWxsIGtub3cgd2hldGhlciBpdCB3YXMgZGVs
ZXRlZCBmcm9tCi0gICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRz
aWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgotICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0
ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwotCi0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVVUkxCcmVha3BvaW50KHRoaXMucmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9uZW50ZXIoKQotICAgIHsKLSAgICAgICAgdGhp
cy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBvbnNwYWNlKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcG9wdWxhdGVDb250ZXh0TWVudShjb250
ZXh0TWVudSwgZXZlbnQpCi0gICAgewotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IHRoaXMucmVw
cmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIGxldCBsYWJlbCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQg
PyBXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxl
IEJyZWFrcG9pbnQiKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShsYWJlbCwgdGhp
cy5fdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAg
ICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3Bv
aW50KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0YXR1
c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVC
cmVha3BvaW50KCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQoZXZl
bnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxl
bWVudE1vdXNlRG93bihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBlbGVt
ZW50IHNlbGVjdGlvbi4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQot
Ci0gICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRl
ZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwotICAg
IH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1
cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3Qu
dG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVD
bGFzc05hbWUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0aGlz
LnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJ
bWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50
c0VuYWJsZWQpOworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGUs
IHN1YnRpdGxlfSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYjdmNTJiM2JhYmFjODA2ODJmNDEwYzg3
ZTllZjFkN2NjYzAwMmJlLi5hMjc1YTdjY2JmZDJiZjgyNzNhZThjZDQ3MGI4MDhlMjdkYzUxZTRh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDgtMTEgIERldmluIFJvdXNzbyAgPGRyb3Vz
c29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGV2ZW50IGJyZWFr
cG9pbnRzIHRvIGJlIGNvbmZpZ3VyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTIxNTM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9yZXNvdXJjZXMvZXZlbnQt
YnJlYWtwb2ludC11dGlsaXRpZXMuanM6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRp
YWxpemVyLkluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25z
VGVzdENhc2VzKTogQWRkZWQuCisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVy
Lkluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFzeW5jIHRlYXJkb3duKToKKyAgICAgICAg
KFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludCk6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxp
emVyLkluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1h
dGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVi
dWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRz
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1i
cmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVh
a3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFkZCB0ZXN0cyBmb3IgbmV3IGV2ZW50IGJy
ZWFrcG9pbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLgorCisgICAgICAgICogaHR0cC90ZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJl
Z2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5zdGFydFRyYWNpbmdCcmVha3BvaW50cyk6
CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanM6
CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLlByb3RvY29sVGVzdC5Qcm9i
ZS5pbnN0YWxsVHJhY2luZ0xpc3RlbmVycyk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50LXNjb3BlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2Rl
YnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2Vy
L3BhdXNlLXJlYXNvbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1t
YW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhp
cy12YWx1ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci90YWlsLXJlY3Vyc2lv
bi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0
bWw6CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBicmVha3BvaW50IHRlc3RzIHRvIHVzZSBuZXcg
bW9kZWwgb2JqZWN0cy4KKwogMjAyMC0wOC0xMCAgTXlsZXMgQy4gTWF4ZmllbGQgIDxtbWF4Zmll
bGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtCaWdTdXJdIDUgZmFzdC90ZXh0L2ludGVybmF0aW9u
YWwvc3lzdGVtLWxhbmd1YWdlL25hdmlnYXRvci1sYW5ndWFnZS9uYXZpZ2F0b3ItbGFuZ3VhZ2Ug
dGVzdHMgYXJlIGNvbnN0YW50IGZhaWx1cmVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcwppbmRleCA0NmFh
N2MzNDljYWU1MDAwMWU5NTc5MTljYjAwMDZlMzJkOGY5M2YzLi4yZTI3MjMzYzE1OWQ2NGZjOTg1
ZTUyOGU5OGU5ZjRkMDJhY2NiYmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKQEAgLTEzLDM3ICsx
MywzNyBAQCBJbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzID0gZnVuY3Rpb24o
KQogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCB3YXMgcmVtb3ZlZC4iKTsK
ICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2
ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZh
ciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUh
Iik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgZGlzYWJsZWQgc3RhdGUgY2hhbmdlZDogIiAr
IGJyZWFrcG9pbnQuZGlzYWJsZWQpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwg
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFy
Z2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJl
YWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhw
ZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFr
cG9pbnQgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQucmVzb2x2ZWQpOwog
ICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVu
dC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBi
cmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgYXV0b2NvbnRpbnVlIHN0YXRlIGNoYW5nZWQ6ICIg
KyBicmVha3BvaW50LmF1dG9Db250aW51ZSk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2Us
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5l
eHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3Qg
dHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBjb25kaXRp
b24gY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICB9KTsKIAotICAgIFdJ
LkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNE
aWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQu
YWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1
bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0Owot
ICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2lu
dCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQg
b2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQg
YWN0aW9ucyBjaGFuZ2VkLiBOZXcgY291bnQ6ICIgKyBicmVha3BvaW50LmFjdGlvbnMubGVuZ3Ro
KTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKaW5kZXggNzY5YWU0YWYwNDQwYzRmMTNmMzY1YjE3
Y2EwYmI1MDI2ZDBmYzM5Ni4uMTFlZWQyZTU4MWI2YTcwMGFkN2ZhYzYwYmVhNTcxYzU0MjRlODli
MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2Vz
L3Byb2JlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3Byb2JlLXRlc3QuanMKQEAgLTYwLDM3ICs2MCwzNyBAQCBQcm90b2NvbFRlc3QuUHJv
YmUuaW5zdGFsbFRyYWNpbmdMaXN0ZW5lcnMgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJCcmVha3BvaW50IHdhcyByZW1vdmVkLiIpOwogICAgIH0pOwogCi0gICAgV0ku
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURp
ZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVu
dC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBX
SS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAi
VW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
QnJlYWtwb2ludCBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5kaXNhYmxl
ZCk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJl
YWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewor
ICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQp
IHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3Rl
ZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEi
KTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCByZXNvbHZlZCBzdGF0
ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5yZXNvbHZlZCk7CiAgICAgfSk7CiAKLSAgICBXSS5C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGlu
dWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENo
YW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50
YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5C
cmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5l
eHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJl
YWtwb2ludCBhdXRvY29udGludWUgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuYXV0b0Nv
bnRpbnVlKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBl
ISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGNvbmRpdGlvbiBjaGFuZ2VkOiAiICsgYnJl
YWtwb2ludC5jb25kaXRpb24pOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAg
ICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmpl
Y3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAog
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBhY3Rpb25zIGNoYW5nZWQuIE5l
dyBjb3VudDogIiArIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpOwogICAgIH0pOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2
YWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlv
bi1ldmFsLmh0bWwKaW5kZXggNTU2MmUyYjMzZjZlNjNmNmY3MTYyMTNhMTVhMzE1OGEzODdiMDkw
NC4uZDU1NDdiY2M2NzBhNzE5OTI2MTE1MmJlNzUxNDcwZGMyOTM4MDQwZiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24t
ZXZhbC5odG1sCkBAIC0yOCw5ICsyOCw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIHZh
ciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7
CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYnJlYWtwb2ludCBhbmQgaXRzIGFjdGlvbnMgYmVmb3Jl
IHNlbmRpbmcgYW55dGhpbmcgdG8gdGhlIGJhY2tlbmQuCi0gICAgICAgIHZhciBicmVha3BvaW50
ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIGJyZWFrcG9p
bnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24o
V0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCBudWxsLCAiYWN0aW9uKGEsIGIpIik7
CisgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlw
ZS5FdmFsdWF0ZSwge2RhdGE6ICJhY3Rpb24oYSwgYikifSk7CiAKICAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbApp
bmRleCBiN2NjMjNkYzM4NTVmNmZmNzc4MGJmZjZlNzg5NmY5NmRlNDQ4N2VlLi5lZTA5NTVhNWI2
M2I1YTY0NDA3MWYyZDU3MmE1M2RmYTQ3MWViMWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sCkBAIC0y
NCwxMSArMjQsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQg
PSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIGFkZExvZ0FjdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIGJyZWFrcG9p
bnQuYWN0aW9ucy5sYXN0VmFsdWUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICBicmVha3Bv
aW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCB7ZGF0YX0pOwog
ICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGFkZExvZ0FjdGlvbigiYCR7YX1g
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2lu
dC1jb2x1bW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2lu
dC1jb2x1bW5zLmh0bWwKaW5kZXggZDAyZThlM2I5ZmMxNGU3MDgzZGU5ZWE3MTk4ZGVjYmY4NzFj
YWVjOS4uMTQxNzQ4NTg0M2Y3OGZmMWI4YWY3MTNkN2ZmZDJiYTY1MmI0ZjYyNyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWNvbHVtbnMu
aHRtbApAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIHRlc3RJ
bmZvID0gdGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhdOwogICAgICAgICAKICAgICAgICAg
dmFyIGxvY2F0aW9uID0gY3VycmVudFNjcmlwdHNbdGVzdEluZm8uc2NyaXB0SW5kZXhdLmNyZWF0
ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0ZXN0SW5mby5jb2x1bW4pOwotICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAg
ICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24p
OwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2lu
dC1zY29wZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQt
c2NvcGUuaHRtbAppbmRleCAyNDExNDQ2MDhkODg1OTE1Yjk2NWJjOTExMGQyNGM0NDRmZjI0MTQ1
Li5mMGFjYzFhNDI0NGFhZjMxY2NkZDAwOTYxNmJiY2UzMWMzY2Y2N2UyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWwKQEAg
LTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgdmFyIHRlc3RJbmZvID0g
dGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhdOwogICAgICAgICB2YXIgbG9jYXRpb24gPSBz
Y3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJ
bmZvLmNvbHVtbik7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQo
bG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludChsb2NhdGlvbik7CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
dGVzdEluZm8uc3RhcnRGdW5jKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKaW5kZXggNGQ5NTdjODA5
MjczN2ExZmYyNGIxZDNhNzViMjRjYzExOWRhYjFjZi4uMmM3ZjdkYTY0NGQ1YzUxMmEwZTQ1NzMw
M2Q1MWEwZmM2NWZkMzExYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKQEAgLTE1LDcgKzE1LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIDAgYmFzZWQgaW5kaWNlcy4KICAgICAgICAg
bGV0IHRlc3RJbmZvID0ge2xpbmU6IDgsIGNvbHVtbjogOH07CiAgICAgICAgIGxldCBsb2NhdGlv
biA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8ubGluZSwg
dGVzdEluZm8uY29sdW1uKTsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtw
b2ludChsb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoInN0YXJ0KCkiKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtcmVhc29uLmh0bWwKaW5kZXggYWNjMTk1M2I2MzIzMzNiZWYzMWI5NWNmZTA4YmRk
MzBjZDVhOWZiYy4uYTZhZmQ0NDRlOGZhMWUzZDQ0NmRlN2VkMDE1MWI5OWU3OWI2NGQyMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1yZWFzb24uaHRtbApA
QCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgaWYgKCEvcGF1c2UtcmVh
c29uc1wuanMkLy50ZXN0KHNjcmlwdC51cmwpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGxldCBzb3VyY2VDb2RlTG9jYXRpb24gPSBzY3JpcHQuY3JlYXRlU291cmNlQ29kZUxvY2F0
aW9uKDMsIDApOwotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KHNv
dXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICBicmVhazsKICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcHJvYmUtbWFuYWdl
ci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCmluZGV4IGJmNGFhZjIxYzIy
NjllNmMzMTFiNGUzMWYzMTdlN2E5YTE4ZWVjYmIuLmY1NmEzNmIzNjNiMjg4NDA2Yjc3ZTk0NDQy
ZjJiNTM4MjM5Mjc0ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1s
CkBAIC0zMywxNCArMzMsMTQgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIHZhciBs
b2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7CiAg
ICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGJyZWFrcG9pbnQgYW5kIGl0cyBhY3Rpb25zIGJlZm9y
ZSBzZW5kaW5nIGFueXRoaW5nIHRvIHRoZSBiYWNrZW5kLgotICAgICAgICAgICAgdmFyIGJyZWFr
cG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAg
ICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKHZh
ciBpIG9mIFswLCAxXSkKLSAgICAgICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihX
SS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGwsICJhIik7CisgICAgICAgICAgICAg
ICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2Jl
LCB7ZGF0YTogImEifSk7CiAKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYnJlYWtwb2ludC5yZXNv
bHZlZCwgIkJyZWFrcG9pbnQgc2hvdWxkIGJlIHJlc29sdmVkLiIpOwogICAgICAgICAgICAgfSk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9z
dGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGlu
dWUtYnJlYWtwb2ludC5odG1sCmluZGV4IGExNzI1Y2ZiZjlhNTAyNjgyZDBmZjZkZGQwNjFjMDZi
Mzg5MDFkYzkuLmZmZmFlMGUyOTk4MTg3MTYyYzRhNDg5ZDcyMDkyNjQ2YzJhOWJhYTIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10
aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVlLWJy
ZWFrcG9pbnQuaHRtbApAQCAtMjQsOSArMjQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIC8vIFNldCBhdXRvQ29udGludWUgYnJlYWtwb2ludC4KICAgICAgICAgICAgIGxldCBzY3Jp
cHQgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNjcmlwdHNbMF07
CiAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBzY3JpcHQuY3JlYXRlU291cmNlQ29kZUxvY2F0
aW9uKDgsIDApOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2lu
dChsb2NhdGlvbik7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250
aW51ZSA9IHRydWU7Ci0gICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVh
a3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIG51bGwsICJhbGVydCgxLjUpOyIpOworICAgICAg
ICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2
YWx1YXRlLCB7ZGF0YTogImFsZXJ0KDEuNSk7In0pOwogICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgIC8vIFN0ZXAg
dGhyb3VnaCB0aGUgYnJlYWtwb2ludC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRt
bAppbmRleCAzOTc1OWRjYjY1NGFjYjAwMmYxZGE5MTAzMTQ2OWY4OTMxYTRiOWM4Li5jNzJiYmNl
MmI2MWMyOTgyZTk3MjVmZTkzNDYyMzQzNzYyZTc3ODBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMt
dGhpcy12YWx1ZS5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAvLyAwIGJhc2VkIGluZGljZXMuCiAgICAgICAgIGxldCB0ZXN0SW5mbyA9IHtsaW5lOiAzLCBj
b2x1bW46IDR9OwogICAgICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291
cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAg
IGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzdGFydEFCQygpIik7CiAgICAgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRt
bAppbmRleCA4Y2JhYmExYWQyZWMzZDczY2IyNjMwODk4YTFlZWFiMTE3NTNhMmQwLi42NWIwY2M2
MWFlMzgxMThiNmE3MDZkYTM4MTMxMDZhNzAyYjQ0MDU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbApAQCAtMjQsNyArMjQsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIHRlc3RJbmZvcyA9IFt7bGluZSA6IDMsIGNv
bHVtbiA6IDh9LCB7bGluZSA6IDQsIGNvbHVtbiA6IDh9XTsKICAgICAgICAgZm9yIChsZXQgdGVz
dEluZm8gb2YgdGVzdEluZm9zKSB7CiAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRP
YmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNv
bHVtbik7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxv
Y2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRC
cmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoInN0YXJ0UmVjdXJzZSgpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50
cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50
LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggOTBiMjZhNzdi
ZDU1NjY5NWYxYjAxZmYxNzI5ZDY1YTVkZjI4YzcxYy4uZjllZjA0Zjc5ZDZjYjgzZDg5YWExNWQy
OGI0NWE4NWFhM2VkMWQ4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZy
YW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDEzIEBACitDT05TT0xFIE1F
U1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9J
TlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAz
CitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRXZl
bnQgQW5pbWF0aW9uRnJhbWUgYnJlYWtwb2ludHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRl
OiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZQogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLkFkZEJyZWFrcG9pbnQKK0NyZWF0aW5n
ICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5pbWF0aW9u
LWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRpb25GcmFt
ZSIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhhbmRsZXIg
aXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQu
QW5pbWF0aW9uRnJhbWUuQWRkRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAiYW5pbWF0aW9u
LWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZl
bnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIEZpcmluZyAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBvbiB3aW5kb3cuLi4KQEAg
LTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtw
b2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLlJlbW92ZUJyZWFrcG9pbnQKK0NyZWF0
aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5pbWF0
aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAiYW5pbWF0aW9uLWZyYW1l
IiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRpb25GcmFtZSIgb24g
d2luZG93Li4uCkBAIC0yOSw2ICszNiw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJl
bW92ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLlJlbW92ZURpc2Fi
bGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2lu
dC4uLgogQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2Fi
bGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAiYW5p
bWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCkBAIC0zNiwzICs0NCwxMDMgQEAgRmly
aW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIG5v
dCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0
IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5p
bWF0aW9uRnJhbWUuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVh
a3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9u
IHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCist
LSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1
Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5PcHRpb25zLklnbm9yZUNvdW50CitDcmVhdGluZyAi
YW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1m
cmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJk
b3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9u
RnJhbWUuT3B0aW9ucy5BY3Rpb24uTG9nCitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVu
dCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2lu
dC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rp
b24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5B
bmltYXRpb25GcmFtZS5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJhbmltYXRp
b24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBF
dmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlv
bi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24u
Li4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1m
cmFtZS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbAppbmRleCBmMGJhNDdiNDYy
NTI1ZTI5ZWVlMDZkN2YxMmZhNTI3OTNjYTM0MDcxLi5mZmFlZjhiNGU0NzM0Zjg3MzhhOWJkOGJh
OTA4MGIwNzM1ZjkzNTFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFr
cG9pbnRzLmh0bWwKQEAgLTQ1LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAg
LmNhdGNoKHJlamVjdCk7CiAgICAgICAgIH0sCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJ
LkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5BbmltYXRpb25GcmFtZSwgZXZlbnROYW1lLCAi
U2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVu
KEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50
TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTcyLDcgKzcyLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJl
amVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkFuaW1hdGlvbkZyYW1lLCBldmVu
dE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRoZW4oSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAg
IC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIs
IGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg2LDcgKzg2LDcg
QEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29s
dmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkFuaW1hdGlvbkZyYW1l
LCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFr
cG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFk
ZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVC
cmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQogICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9p
bnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1v
dmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKQEAgLTk1LDYgKzk1LDggQEAg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUpOworCiAgICAgc3VpdGUucnVu
VGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRl
cnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggNWVjNDgwYTc4YjVkODNiY2Q3MGVh
YjczYTk3YTIwZGZkZWI4MzY4ZC4uYWNiNzA5ZmYwZjgyYWQ4MGY1Zjc1YTQ1NDcwNDI4MzdkZTdl
M2EwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVu
dC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50
eHQKQEAgLTEsOCArMSwxMyBAQAotVGVzdHMgZm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRzLgor
Q09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdF
OiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFD
VElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAorVGVz
dHMgZm9yIEV2ZW50IEludGVydmFsIGJyZWFrcG9pbnRzLgogCiAKLT09IFJ1bm5pbmcgdGVzdCBz
dWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9N
RGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5JbnRlcnZhbC5BZGRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZp
cmluZyAic2V0SW50ZXJ2YWwiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9y
ZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAgLTE1LDYgKzIwLDcgQEAgQVNZTkMgQ0FMTCBTVEFD
SzoKIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TURlYnVnZ2VyLkV2ZW50LkludGVydmFsLkFkZERpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcg
ImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBC
cmVha3BvaW50Li4uCiBEaXNhYmxpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBG
aXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzog
U2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lklu
dGVydmFsLlJlbW92ZUJyZWFrcG9pbnQKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtw
b2ludC4uLgogQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3Zpbmcg
ImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3
aW5kb3cuLi4KQEAgLTI5LDYgKzM2LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVt
b3ZlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuUmVtb3ZlRGlzYWJsZWRCcmVh
a3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAi
aW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAiaW50ZXJ2YWwiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgpA
QCAtMzcsNiArNDUsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2Fi
bGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5SZXBlYXRGaXJlQnJlYWtwb2lu
dAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImludGVy
dmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cu
Li4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC01
NSwzICs2NCwxMDMgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIDM6IFtQXSBHbG9iYWwgQ29kZQogLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJpbnRlcnZhbCIg
RXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4u
LgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuSW50ZXJ2YWwuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVu
dCBCcmVha3BvaW50Li4uCitBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCisK
K1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
cGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5n
ICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQg
QnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNv
bnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5n
IGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5JbnRlcnZhbC5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJpbnRl
cnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtw
b2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGlu
ZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
CitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1i
cmVha3BvaW50cy5odG1sCmluZGV4IGIzYjJhZmZlODY0ZmMwMjc5YWE4ODllMjY0ZTgzYjdjMWM4
OGM0NjQuLjAyODRiZGEyOWFlYmI4Yzc4MmE0NTE1ZDVmNzU5ZWFkMDNiODI5YmMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJl
YWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2
ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTksMjAgKzksMjAgQEAKIGxldCBpbnRl
cnZhbElEID0gTmFOOwogCiBmdW5jdGlvbiBoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2YWwoKSB7Ci0g
ICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLXNldEludGVydmFs
Iik7Ci0KICAgICByZXBlYXRDbGVhckludGVydmFsKCk7CisKKyAgICBUZXN0UGFnZS5kaXNwYXRj
aEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2Utc2V0SW50ZXJ2YWwiKTsKIH0KIAogZnVuY3Rpb24g
aGFuZGxlUmVwZWF0KCkgewogfQogCiBmdW5jdGlvbiB0cmlnZ2VyX3NldEludGVydmFsKCkgewot
ICAgIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2YWwsIDEw
MCk7CisgICAgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGhhbmRsZVdpbmRvd19zZXRJbnRlcnZh
bCwgMTApOwogfQogCiBmdW5jdGlvbiByZXBlYXRTZXRJbnRlcnZhbCgpIHsKLSAgICBpbnRlcnZh
bElEID0gc2V0SW50ZXJ2YWwoaGFuZGxlUmVwZWF0LCAxMDApOworICAgIGludGVydmFsSUQgPSBz
ZXRJbnRlcnZhbChoYW5kbGVSZXBlYXQsIDEwKTsKIH0KIAogZnVuY3Rpb24gcmVwZWF0Q2xlYXJJ
bnRlcnZhbCgpIHsKQEAgLTMzLDcgKzMzLDcgQEAgZnVuY3Rpb24gcmVwZWF0Q2xlYXJJbnRlcnZh
bCgpIHsKIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgY29uc3QgZXZlbnROYW1lID0gInNldEludGVy
dmFsIjsKIAotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgi
RE9NRGVidWdnZXIuRXZlbnQuVGltZXIiKTsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0
LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsIik7CiAKICAgICBz
dWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6IGBET01EZWJ1Z2dlci5FdmVudC5JbnRl
cnZhbC5BZGRCcmVha3BvaW50YCwKQEAgLTYxLDcgKzYxLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNh
dGNoKHJlamVjdCk7CiAgICAgICAgIH0sCkBAIC03NCw3ICs3NCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRl
YnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5JbnRlcnZhbCwgZXZlbnROYW1lLCAiU2hvdWxkIG5v
dCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50
ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5k
aXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAu
Y2F0Y2gocmVqZWN0KTsKQEAgLTg4LDcgKzg4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5h
Z2VyLlBhdXNlUmVhc29uLkludGVydmFsLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZv
ciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVy
dmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAg
ICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtw
b2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3
YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0
KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VS
ZWFzb24uSW50ZXJ2YWwsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQg
ZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAg
ICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtw
b2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJl
bW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtMTM0LDcgKzEzNCw3
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7
CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9p
bnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oKCkgPT4gewog
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGaXJpbmcgXCJzZXRJbnRlcnZhbFwi
IG9uIHdpbmRvdy4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGByZXBlYXRTZXRJbnRlcnZhbCgpYCk7CkBAIC0xNDQsMTEgKzE0NCwxMyBA
QCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZlbnRC
cmVha3BvaW50LlR5cGUuSW50ZXJ2YWwsIGV2ZW50TmFtZSk7CisKICAgICBzdWl0ZS5ydW5UZXN0
Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJy
dW5UZXN0KCkiPgotICAgIDxwPlRlc3RzIGZvciBFdmVudCBUaW1lciBicmVha3BvaW50cy48L3A+
CisgICAgPHA+VGVzdHMgZm9yIEV2ZW50IEludGVydmFsIGJyZWFrcG9pbnRzLjwvcD4KIDwvYm9k
eT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3Rl
ZC50eHQKaW5kZXggNzgxYjdjZDJkZDBhNTgwZWU5OTQ1Mzc5ZTQzYWI2OGFjM2E1MGEyYS4uYTll
ZjhmZjhhZGZjZmFiNDA1MjM4YjVlNDFhNGUwMDA0OTUzZTVjNiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVu
dC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw3IEBACitDT05T
T0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJS
RUFLUE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9O
IExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBm
b3IgRXZlbnQgTGlzdGVuZXIgYnJlYWtwb2ludHMuCiAKIApAQCAtNzUsNiArNzksNyBAQCBQQVNT
OiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5MaXN0ZW5lci5BbGxFdmVudHNCcmVha3BvaW50CitDcmVhdGluZyAibGlzdGVuZXIi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAibGlzdGVuZXIiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIEZpcmluZyAiY2xpY2siIG9uIGJvZHkuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUg
ZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC0xMjEsMyArMTI2LDEwMyBAQCBEaXNhYmxpbmcgYnJl
YWtwb2ludHMuLi4KIFBBU1M6IFNob3VsZCBoYXZlIHBhdXNlZCBvbmNlLgogLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQu
TGlzdGVuZXIuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitT
ZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0
IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuTGlz
dGVuZXIuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVha3Bv
aW50Li4uCitBZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1Nl
dHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1
c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJj
bGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQg
QnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNv
bnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5n
IGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJjbGlj
ayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQgQnJl
YWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFi
bGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50
cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5l
ci1icmVha3BvaW50cy5odG1sCmluZGV4IGZiYjQ5ODA4ZWZlOTc4Y2I1NWQ0NjE0MzllZTBlYmI4
ZGE3YmI1NzEuLjY3NDYxNmE4NTg4ZDNlNDkyMzZiNDM5NTNhMGJhYWQ0OGIzZDhjZjkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXIt
YnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAg
ICAgIH0pOwogCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgZXZlbnRO
YW1lKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0
ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWV9
KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3
YWl0RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQogICAgICAgICAgICAgICAgIC5jYXRjaChyZWpl
Y3QpOwogICAgICAgICAgICAgfSwKQEAgLTcxLDcgKzcxLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBX
SS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwgIlNob3Vs
ZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAgLnRoZW4o
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgi
Ym9keSIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04
NSw3ICs4NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVh
c29uLkxpc3RlbmVyLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJy
ZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBl
dmVudE5hbWUpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50
TmFtZX0pCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJib2R5IiwgZXZlbnROYW1lKSkKICAgICAgICAg
ICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTk5LDcgKzk5LDcgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0
LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwgIlNo
b3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSkKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7ZXZlbnROYW1lfSkKICAgICAgICAgICAg
ICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2lu
dCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5y
ZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQpAQCAtMTI4LDcgKzEy
OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7
CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJl
YWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0
ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpCiAgICAgICAgICAg
ICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmlu
ZyBcImNsaWNrXCIgb24gYm9keS4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyX2NsaWNrKClgKTsKQEAgLTE3Myw3ICsxNzMs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAg
ICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5j
cmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAiY2xpY2si
KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtw
b2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZTogImNsaWNr
In0pCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gZGl2I3guLi4iKTsKICAgICAgICAgICAgICAg
ICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tYKClgKTsKQEAgLTIx
MSw3ICsyMTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIC50aGVuKHJl
c29sdmUsIHJlamVjdCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lciwgImNsaWNrIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVu
ZXIsIHtldmVudE5hbWU6ICJjbGljayJ9KQogICAgICAgICAgICAgLnRoZW4oKCkgPT4gewogICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGaXJpbmcgXCJjbGlja1wiIG9uIGRpdiN4
Li4uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoYGNsaWNrWCgpYCk7CkBAIC0yMjEsNiArMjIxLDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAog
ICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2lu
dE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVy
LCAiY2xpY2siKTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2
ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApp
bmRleCBjYTVkMDEwZGVlYzlhYTQ5Y2JiYjQxYjRlNGVhM2ZjYjQ4ZDNhN2RiLi45YTZiZjhhZDFi
MmFhNzk2MjliODYzZGU3ZTNkNGRmYjUxODgzMzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91
dC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAorQ09OU09MRSBNRVNT
QUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5U
IEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMwor
Q09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMgZm9yIEV2ZW50
IFRpbWVyIGJyZWFrcG9pbnRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdn
ZXIuRXZlbnQuVGltZXIKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5U
aW1lb3V0LkFkZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50
Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0VGlt
ZW91dCIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhhbmRs
ZXIgaXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuVGltZW91dC5BZGREaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVu
dCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERp
c2FibGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRUaW1lb3V0
IiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBm
b3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuUmVtb3ZlQnJlYWtw
b2ludAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAidGlt
ZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIEZpcmluZyAic2V0VGltZW91dCIgb24gd2luZG93Li4uCkBAIC0yOSw2ICszNiw3
IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4KIC0tIFJ1
bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2Vy
LkV2ZW50LlRpbWVvdXQuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAidGltZW91
dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50
Li4uCiBEaXNhYmxpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJ0
aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCkBAIC0zNiwzICs0NCwxMDMgQEAgRmlyaW5nICJz
ZXRUaW1lb3V0IiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92
ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyLk9wdGlvbnMuQ29uZGl0
aW9uCitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1l
b3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScu
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Nl
dHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25zLklnbm9yZUNvdW50CitDcmVh
dGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVu
dCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25zLkFjdGlv
bi5Mb2cKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgInRp
bWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5h
YmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitDcmVh
dGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVu
dCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4K
K0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBT
aG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtw
b2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGlt
ZW91dC1icmVha3BvaW50cy5odG1sCmluZGV4IGE0MWVjZDY5ZWNiN2QxMzg0ZDA3N2I5NTBjYzEw
MDU3YWU0MTAwOTEuLjZhMzQ5YTRiNzcyMzVlOWJiMTg4YzRjMWExY2I4YjNhNzNhNDIxYWMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91
dC1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCkBAIC0xMSw3ICsxMSw3IEBAIGZ1bmN0
aW9uIGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0KCkgewogfQogCiBmdW5jdGlvbiB0cmlnZ2VyX3Nl
dFRpbWVvdXQoKSB7Ci0gICAgc2V0VGltZW91dChoYW5kbGVXaW5kb3dfc2V0VGltZW91dCwgMTAw
KTsKKyAgICBzZXRUaW1lb3V0KGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0LCAxMCk7CiB9CiAKIGZ1
bmN0aW9uIHRlc3QoKSB7CkBAIC00NSw3ICs0NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
VGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVq
ZWN0KTsKICAgICAgICAgfSwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJN
YW5hZ2VyLlBhdXNlUmVhc29uLlRpbWVvdXQsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2Ug
Zm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRp
bWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCkKICAg
ICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVh
a3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
YXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWpl
Y3QpOwpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VS
ZWFzb24uVGltZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBi
cmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9p
bnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVh
a3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpCiAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2lu
ZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtODYsNyAr
ODYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
ewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2Uo
cmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uVGltZW91dCwg
ZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3Bv
aW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRC
cmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50
KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpCiAgICAgICAgICAgICAudGhlbihJbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAg
IC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50
KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtOTUsNiArOTUsOCBAQCBmdW5jdGlvbiB0ZXN0KCkg
ewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRv
d24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVh
a3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGlt
ZW91dCwgZXZlbnROYW1lKTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwog
fQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL3Jlc291cmNlcy9ldmVudC1icmVha3BvaW50LXV0aWxpdGllcy5qcyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0
aWVzLmpzCmluZGV4IDE5YjI1ZDFhZGQyMGIyZjVlMGExYjJmN2Q4MzMyOGZmYmJlMTZkYzYuLmU0
MDEzYTgxYmNlNGQzZDRlYTUzMmFlZjMxZDM2MTdhYjUyNzRhNDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQt
dXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVz
b3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCkBAIC0xLDE0ICsxLDE5OSBAQAog
VGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQgPSB7fTsKIAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmFkZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHR5cGUsIGV2
ZW50TmFtZSkgeworICAgICAgICBhc3luYyBmdW5jdGlvbiB0cmlnZ2VyQnJlYWtwb2ludCgpIHsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4i
KTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS0iICsgZXZlbnROYW1lKSwKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyXyR7ZXZlbnROYW1l
fSgpYCksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfQorCisgICAgICAgIHN1aXRlLmFkZFRl
c3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQ29uZGl0
aW9uIiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdnZXIg
d2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50IGhhcyBhIHRydXRoeSBicmVha3Bv
aW50IGNvbmRpdGlvbi4iLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
ICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIg
PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNv
dW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7Cisg
ICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3
YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlwZSwg
e2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7
CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBjb25kaXRpb24g
dG8gJ2ZhbHNlJy4uLiIpOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0g
ImZhbHNlIjsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkg
eworICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4iKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0gInRydWUiOworICAg
ICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5u
ZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQo
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5v
dCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3Vs
ZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246
IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKwor
ICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1l
ICsgIi5PcHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hl
Y2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50
IGlzIGhpdCBhdCBsZWFzdCBhcyBtYW55IHRpbWVzIGFzIGl0J3MgYGlnbm9yZUNvdW50YC4iLAor
ICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3Vu
dCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4iKTsKKyAg
ICAgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKKworICAgICAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdn
ZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwg
MCwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwg
aSAtIDIsICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwKKyAg
ICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFt
ZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb24uTG9nIiwKKyAgICAgICAgICAgIGRlc2Ny
aXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0
aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAg
ICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxp
c3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsr
cGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3Vt
ZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50
KHR5cGUsIHtldmVudE5hbWV9KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3
bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBsb2cg
YWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3Jl
YXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhOiAiQlJFQUtQT0lO
VCBBQ1RJT04gTE9HIDEifSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8
PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJT04gTE9H
ICR7aX1gOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNv
bnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRv
Q29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7
CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IFttZXNzYWdlQWRkZWRFdmVudF0gPSBhd2FpdCBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5h
d2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisgICAgICAg
ICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCgpLAorICAgICAgICAgICAgICAgICAg
ICBdKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG1l
c3NhZ2VBZGRlZEV2ZW50LmRhdGEubWVzc2FnZS5tZXNzYWdlVGV4dCwgYWN0aW9uLmRhdGEsICJT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAgICAg
ICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHBhdXNlQ291bnQsIDIsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQudGVhcmRvd24sCisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0
ZSIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZXZhbHVhdGUgYnJlYWtw
b2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAg
ICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAw
OworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9
PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisg
ICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAg
ICAgICBsZXQgYWN0aW9uID0gYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFj
dGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFM
VUFURSA9IDE7In0pOworCisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFLUE9JTlRfQUNU
SU9OX0VWQUxVQVRFID0gJHtpfTtgOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9
PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJF
bmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFr
cG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlvbkV2YWx1
YXRlUmVzdWx0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93LkJS
RUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFYCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0LCBpLCAiU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICAgICAg
aWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LnRlYXJkb3duLAorICAgICAgICB9KTsKKyAgICB9OworCiAgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQudGVhcmRvd24gPSBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAg
ICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCk7Ci0gICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpOwotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5l
cnNCcmVha3BvaW50KTsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsK
KyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQ/LnJlbW92ZSgpOworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludD8ucmVtb3ZlKCk7CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxM
aXN0ZW5lcnNCcmVha3BvaW50Py5yZW1vdmUoKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludD8ucmVtb3ZlKCk7CiAKICAgICAgICAgZm9yIChsZXQg
YnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1Z2dlck1hbmFnZXIubGlzdGVuZXJCcmVha3BvaW50cykK
LSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7CisgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwogCiAgICAgICAg
IHJlc29sdmUoKTsKICAgICB9OwpAQCAtNDIsOCArMjI3LDExIEBAIFRlc3RQYWdlLnJlZ2lzdGVy
SW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludCA9IGZ1bmN0aW9uKHR5cGUsIGV2
ZW50TmFtZSkgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQ3JlYXRpbmcgIiR7ZXZlbnRO
YW1lfSIgRXZlbnQgQnJlYWtwb2ludC4uLmApOworICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQgPSBmdW5jdGlvbih0eXBlLCB7ZXZlbnROYW1lfSA9IHt9
KSB7CisgICAgICAgIGlmICh0eXBlICE9PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5l
cikKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9IG51bGw7CisKKyAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coYENyZWF0aW5nICIke2V2ZW50TmFtZSB8fCB0eXBlfSIgRXZlbnQgQnJlYWtwb2ludC4u
LmApOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJl
YWtwb2ludChuZXcgV0kuRXZlbnRCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KSk7CiAgICAg
fTsKIApAQCAtNzQsNyArMjYyLDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9
PiB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZShicmVha3BvaW50KTsKICAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3Bv
aW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKICAgICAg
ICAgfSk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9i
cmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApp
bmRleCA3NmE4NjQ0OGJjOWUxNzNmMzZkNmQ3Y2YzMDRmMGNlNzcwNmFhNTBmLi41OGY5NTYyMmNl
Y2RjZTA0MjAzYjY4N2NkYzg0OTM1MmIxYzA2NWMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3Rl
bmVyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9H
IDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVT
U0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RpbmcgRE9NQWdlbnQuc2V0QnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIgYW5kIERPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyLgogCiAgIApAQCAtMTksNiArMjMsOTQgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZSBiZWZvcmUgYnV0dG9uMiBldmVudCBoYW5kbGVyIGlzIHJ1bi4KIENsaWNraW5nIGJ1dHRvbjEu
Li4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgYmVmb3JlIGJ1dHRvbjEgZXZlbnQgaGFuZGxlciBp
cyBydW4uCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50
TGlzdGVuZXIuT3B0aW9ucy5Db25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNl
Jy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
U2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50
Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291
bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5B
Y3Rpb24uTG9nCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGlu
dWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9n
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVu
bmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25z
LkFjdGlvbnMuRXZhbHVhdGUKKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4u
LgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJy
b3IuCiBFcnJvcjogTWlzc2luZyBldmVudCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRMaXN0ZW5l
cklkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9y
LWV2ZW50LWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9p
bnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKaW5kZXggMGQyZmVhNWFhNTJkNDU0NGExMWYyNDY4
MTA1Y2U0ODM3ZmI0MzZhYS4uZjMwYzkyYTZkMDcxYWI4YWRkYzg5OTJmZmM3OTAwNzNkZjU1NjUz
ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1l
dmVudC1saXN0ZW5lci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtw
b2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbApAQCAtMjMsOSArMjMsMjIgQEAgZnVuY3Rpb24g
dGVzdCgpIHsKICAgICBsZXQgYnV0dG9uMU5vZGUgPSBudWxsOwogICAgIGxldCBidXR0b24yTm9k
ZSA9IG51bGw7CiAKLSAgICBmdW5jdGlvbiBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihub2Rl
SWQpIHsKLSAgICAgICAgcmV0dXJuIERPTUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShu
b2RlSWQpCi0gICAgICAgIC50aGVuKCh7bGlzdGVuZXJzfSkgPT4gbGlzdGVuZXJzLmZpbmQoKGV2
ZW50TGlzdGVuZXIpID0+IGV2ZW50TGlzdGVuZXIudHlwZSA9PT0gImNsaWNrIikpOworICAgIGFz
eW5jIGZ1bmN0aW9uIGdldENsaWNrRXZlbnRMaXN0ZW5lcihub2RlSWQpIHsKKyAgICAgICAgbGV0
IHtsaXN0ZW5lcnN9ID0gYXdhaXQgRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKG5v
ZGVJZCk7CisgICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZmluZCgoZXZlbnRMaXN0ZW5lcikgPT4g
ZXZlbnRMaXN0ZW5lci50eXBlID09PSAiY2xpY2siKTsKKyAgICB9CisKKyAgICBhc3luYyBmdW5j
dGlvbiBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKG5vZGUpIHsKKyAgICAgICAg
bGV0IGNsaWNrRXZlbnRMaXN0ZW5lciA9IGF3YWl0IGdldENsaWNrRXZlbnRMaXN0ZW5lcihub2Rl
LmlkKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWNsaWNrRXZlbnRMaXN0ZW5lci5o
YXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIG5v
dCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJl
c29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnNp
bmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJy
ZWFrcG9pbnRBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShldmVu
dC5kYXRhLmJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLmRv
bU1hbmFnZXIuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoY2xpY2tFdmVudExpc3RlbmVy
KTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVBc3luY1N1aXRlKCJET00uQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIiKTsKQEAgLTQ5
LDcgKzYyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdl
ci5QYXVzZVJlYXNvbi5MaXN0ZW5lciwgYFBhdXNlIHJlYXNvbiBzaG91bGQgYmUgTGlzdGVuZXIu
YCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRh
LnBhdXNlRGF0YS5ldmVudE5hbWUsICJjbGljayIsIGBQYXVzZSBkYXRhIGV2ZW50TmFtZSBzaG91
bGQgYmUgImNsaWNrIi5gKTsKIAotICAgICAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tFdmVudExp
c3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0
ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgICAgICAudGhlbigoY2xpY2tFdmVudExp
c3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHRh
cmdldERhdGEucGF1c2VEYXRhLmV2ZW50TGlzdGVuZXJJZCA9PT0gY2xpY2tFdmVudExpc3RlbmVy
LmV2ZW50TGlzdGVuZXJJZCwgYFBhdXNlIGRhdGEgZXZlbnRMaXN0ZW5lcklkIHNob3VsZCBiZSAi
JHtjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkfSIuYCk7CiAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3Bv
aW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIGhhdmUgYSBicmVh
a3BvaW50LiIpOwpAQCAtNzcsNyArOTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCk7CiAg
ICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgYXdhaXRHZXRDbGlja0V2ZW50TGlzdGVuZXIo
YnV0dG9uMU5vZGUuaWQpCisgICAgICAgICAgICBnZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9u
MU5vZGUuaWQpCiAgICAgICAgICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWNsaWNrRXZlbnRMaXN0ZW5lci5o
YXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIG5v
dCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKIApAQCAtMTExLDcgKzEyNCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQodGFyZ2V0RGF0YS5w
YXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBgUGF1
c2UgcmVhc29uIHNob3VsZCBiZSBMaXN0ZW5lci5gKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmFzc2VydCh0YXJnZXREYXRhLnBhdXNlRGF0YS5ldmVudE5hbWUsICJjbGljayIsIGBQ
YXVzZSBkYXRhIGV2ZW50TmFtZSBzaG91bGQgYmUgImNsaWNrIi5gKTsKIAotICAgICAgICAgICAg
ICAgIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAg
ICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAg
ICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TGlzdGVuZXJJ
ZCA9PT0gY2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwgYFBhdXNlIGRhdGEgZXZl
bnRMaXN0ZW5lcklkIHNob3VsZCBiZSAiJHtjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5l
cklkfSIuYCk7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNr
RXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1
dHRvbjEgc2hvdWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwpAQCAtMTM5LDcgKzE1Miw3IEBAIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUlu
UGFnZShgY2xpY2tCdXR0b24xKClgKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBh
d2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKKyAgICAgICAgICAgIGdl
dENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgIC50aGVuKChj
bGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFz
c2VydChjbGlja0V2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludCwgIkNsaWNrIGV2ZW50IGxpc3Rl
bmVyIGZvciBidXR0b24xIHNob3VsZCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKIApAQCAtMTU0LDYg
KzE2NywxOTUgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgfQogICAgIH0pOwogCisgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLnNldEJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyLk9wdGlvbnMuQ29uZGl0aW9uIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJD
aGVjayB0aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9p
bnQgaGFzIGEgdHJ1dGh5IGJyZWFrcG9pbnQgY29uZGl0aW9uLiIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGxl
dCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICsr
cGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBz
ZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uIik7CisgICAgICAgICAgICBi
cmVha3BvaW50LmNvbmRpdGlvbiA9ICJmYWxzZSI7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkg
PSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1ZSI7Cisg
ICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5l
KCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNs
aWNrIiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YGNsaWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxp
c3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25z
Lklnbm9yZUNvdW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1
Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMgaGl0IGF0IGxlYXN0
IGFzIG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRgLiIsCisgICAgICAgIGFzeW5jIHRl
c3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGxl
dCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICsr
cGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBz
ZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLiIpOworICAgICAgICAgICAgYnJl
YWtwb2ludC5pZ25vcmVDb3VudCA9IDI7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBp
IDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiks
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNr
QnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBpZiAo
aSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBh
dXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50
LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
YnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVy
KTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLkFjdGlv
bi5Mb2ciLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgbG9nIGJyZWFrcG9pbnQg
YWN0aW9ucyBleGVjdXRlIHdoZW4gdGhlIGJyZWFrcG9pbnQgaXMgaGl0LiIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAg
ICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVz
dW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBh
d2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJBZGRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgbGV0IGFj
dGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5M
b2csIHtkYXRhOiAiQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEifSk7CisKKyAgICAgICAgICAgIGZv
ciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID4gMSkg
eworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRWRpdGluZyBsb2cgYWN0aW9uLi4uIik7
CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAke2l9YDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGF1dG8tY29udGludWUu
Li4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0g
dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAg
ICAgIGxldCBbbWVzc2FnZUFkZGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAg
ICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5h
Z2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwKKyAgICAg
ICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwobWVzc2FnZUFkZGVkRXZlbnQuZGF0YS5tZXNzYWdlLm1lc3NhZ2VUZXh0LCBhY3Rpb24uZGF0
YSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAg
ICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNv
dW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3Rl
bmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAg
ICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLkFj
dGlvbnMuRXZhbHVhdGUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZXZhbHVh
dGUgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQu
IiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0g
MDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQg
YnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRGb3JDbGlja0V2ZW50TGlzdGVuZXIoYnV0
dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsK
KyAgICAgICAgICAgIGxldCBhY3Rpb24gPSBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVh
a3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIHtkYXRhOiAid2luZG93LkJSRUFLUE9JTlRfQUNU
SU9OX0VWQUxVQVRFID0gMTsifSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9
IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRF
ID0gJHtpfTtgOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYXV0by1jb250aW51
ZS4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUg
PSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAg
ICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAg
ICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlvbkV2
YWx1YXRlUmVzdWx0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93
LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQsIGksICJTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAgIGlmIChp
IDw9IDIpCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1
c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMiwg
IlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJyZWFr
cG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7Cisg
ICAgICAgIH0sCisgICAgfSk7CisKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5h
bWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZCIsCiAgICAgICAg
IGRlc2NyaXB0aW9uOiAiSW52YWxpZCBldmVudCBsaXN0ZW5lciBpZGVudGlmaWVycyBzaG91bGQg
Y2F1c2UgYW4gZXJyb3IuIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3Jr
ZXIvZGVidWdnZXItcGF1c2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVi
dWdnZXItcGF1c2UuaHRtbAppbmRleCBlZTNhMTI1YTcxZDE4YTMyNTg1MTIyOGMzYjFkYWE2OTQx
NjU2NzFiLi41YWNiZDE5MmZlMGUyZDgxYjQzZDczYTJlMzVmZjlmMzcyZDQwODNhIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXBhdXNlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sCkBAIC02
Myw3ICs2Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIldvcmtl
ciBzaG91bGQgcGF1c2Ugb24gYnJlYWtwb2ludC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gd29ya2VyVGFyZ2V0Lm1haW5SZXNv
dXJjZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oOCwgMCk7Ci0gICAgICAgICAgICBsZXQgYnJl
YWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBi
cmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd29ya2VyLnBvc3RNZXNzYWdl
KCJ0cmlnZ2VyQnJlYWtwb2ludCIpYCk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
c2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
KGV2ZW50KSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2Rl
YnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29y
a2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwKaW5kZXggYTNiMzM0YzRkNjYzM2Jl
MzY5NzBiNzg5ZWI2ZWM4OWM4YjYxY2QzMi4uYTNmMjZmZGQwMmQ3NDcwMTYyYTZkYmNiNzM4ZDE1
ZGE3MzZiM2RmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1
Z2dlci1zaGFyZWQtYnJlYWtwb2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93
b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRtbApAQCAtOTQsNyArOTQsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHdvcmtlclRhcmdldDEubWFpblJlc291cmNlIGluc3Rh
bmNlb2YgV0kuU2NyaXB0KTsKICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHdvcmtlclRhcmdl
dDEubWFpblJlc291cmNlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig4LCAwKTsKLSAgICAgICAg
ICAgIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAg
ICBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwog
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyV29ya2Vy
QnJlYWtwb2ludFBhdXNlcygpYCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406444</attachid>
            <date>2020-08-11 19:36:55 -0700</date>
            <delta_ts>2020-08-14 18:26:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215362-20200811193654.patch</filename>
            <type>text/plain</type>
            <size>494347</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGVmZjdmMjY2NDFiOThmNmQ5NjM5Y2JhODY1ZDM0
NTg0NTY2OTc0MmQuLjY2YzJhMTdjMjY0YmYzOTljNmEwY2U3N2E5Y2VkOTk1YmI3YWVmMzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MSBAQAorMjAyMC0wOC0xMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0
byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZl
bnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3Qg
TiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVu
dCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNgIHBhcmFtYXRl
ciB0byBgRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyYCB0byBhbGxvdyBjb25maWd1
cmF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb246
CisgICAgICAgIEFkZCBhbiBgb3B0aW9uc2AgcGFyYW1hdGVyIHRvIGBET01EZWJ1Z2dlci5zZXRF
dmVudEJyZWFrcG9pbnRgIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBkZWJ1
Z2dlci9CcmVha3BvaW50Lmg6CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlkIGNvbnN0KTog
QWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnNvdXJjZUlEIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmxpbmVOdW1iZXIgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y29sdW1uTnVtYmVyIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNvbmRpdGlvbiBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpCcmVha3BvaW50OjphY3Rpb25zIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OmlzQXV0b0NvbnRpbnVlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OnJlc2V0SGl0Q291bnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2lu
dDo6aXNMaW5rZWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6aXNS
ZXNvbHZlZCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50c0xpc3Q6On5C
cmVha3BvaW50c0xpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRlYnVnZ2VyL0JyZWFrcG9pbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpBY3Rpb24pOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAg
IChKU0M6OkJyZWFrcG9pbnQ6OkJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJl
YWtwb2ludDo6bGluayk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpyZXNvbHZl
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnNob3VsZFBhdXNlKTogQWRkZWQu
CisgICAgICAgIFVuaWZ5IGBKU0M6OkJyZWFrcG9pbnRgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHRC
cmVha3BvaW50YC4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0aXZlcy5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6RGVidWdnZXIpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6YWRkT2JzZXJ2ZXIpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
OnJlbW92ZU9ic2VydmVyKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5EaXNw
YXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyk6IEFkZGVkLgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6c291cmNlUGFyc2VkKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Ojp0b2dnbGVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmFwcGx5QnJlYWtw
b2ludHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmRpZEhpdEJy
ZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNsZWFyQnJlYWtwb2lu
dHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9u
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rp
b25zKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0
T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNhbmNlbFBhdXNl
QXROZXh0T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNjaGVk
dWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6Y29udGludWVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
OnN0ZXBOZXh0RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwSW50b1N0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmhhbmRs
ZVBhdXNlKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpleGNlcHRpb25PckNhdWdo
dFZhbHVlKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjphdEV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2xlYXJOZXh0UGF1c2VTdGF0ZSk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjp3aWxsUnVuTWljcm90YXNrKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
YnVnZ2VyOjpkaWRSdW5NaWNyb3Rhc2spOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
Omhhc0JyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0UGF1
c2VPbk5leHRTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBVbmlmeSBgSlNDOjpEZWJ1Z2dl
cmAgYW5kIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB0byBzaW1wbGlmeSBicmVha3Bv
aW50IGxvZ2ljLgorICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYSAic3BlY2lhbCBi
cmVha3BvaW50Iiwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBgSlNDOjpCcmVha3BvaW50YAorICAg
ICAgICB0aGF0IGlzIGV4cGVjdGVkIHRvIHBhdXNlIGF0IHRoZSBuZXh0IG9wcG9ydHVuaXR5IGJ1
dCBpc24ndCB0aWVkIHRvIGEgcGFydGljdWxhciBsb2NhdGlvbi4KKyAgICAgICAgQXMgYW4gZXhh
bXBsZSwgd2hlbmV2ZXIgYW4gZXZlbnQgYnJlYWtwb2ludCBpcyBoaXQsIGluc3RlYWQgb2YganVz
dCBwYXVzaW5nIGF0IHRoZSBuZXh0CisgICAgICAgIG9wcG9ydHVuaXR5LCB0aGUgbmV3bHkgbWFu
YWdlZCBgSlNDOjpCcmVha3BvaW50YCBpcyB1c2VkIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIs
IGFsbG93aW5nCisgICAgICAgIGZvciBpdCdzIGNvbmZpZ3VyYXRpb24gKGllLmcuIGNvbmRpdGlv
biwgaWdub3JlIGNvdW50LCBhY3Rpb25zLCBhdXRvLWNvbnRpbnVlKSB0byBiZSB1c2VkLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6b2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcpOiBBZGRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6cGFyc2VCcmVha3BvaW50T3B0aW9ucyk6IEFkZGVkLgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZy
b21QYXlsb2FkKTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVha3BvaW50KTogQWRkZWQuCisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtw
b2ludDo6Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6bWF0
Y2hlcyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZCk6IEFkZGVkLgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24p
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVDb25z
b2xlQXNzZXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkU2NoZWR1bGVBc3luY0NhbGwpOgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZERlYnVnZ2Vy
TG9jYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkU2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbik6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VB
dE5leHRPcHBvcnR1bml0eSk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VGb3JT
cGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KTogQWRkZWQuCisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdW1lKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRsZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNj
cmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBh
cnNlU291cmNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
d2lsbFJ1bk1pY3JvdGFzayk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFJ1bk1pY3JvdGFzayk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0b3JCcmVha3Bv
aW50U3RhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpj
bGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6bWF0Y2hl
cyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6OmJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2lu
dENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKTogRGVsZXRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgQ3Jl
YXRlIGEgcHJpdmF0ZSBgUHJvdG9jb2xCcmVha3BvaW50YCBjbGFzcyB0aGF0IGhvbGRzIHRoZSBk
YXRhIHNlbnQgYnkgdGhlIGZyb250ZW5kLiBUaGlzCisgICAgICAgIGlzIG5lY2Vzc2FyeSBiZWNh
dXNlIGJyZWFrcG9pbnRzIGluIHRoZSBmcm9udGVuZCBoYXZlIGEgcG90ZW50aWFsbHkgb25lLXRv
LW1hbnkgcmVsYXRpb25zaGlwCisgICAgICAgIHdpdGggYnJlYWtwb2ludHMgaW4gdGhlIGJhY2tl
bmQsIGFzIHRoZSBzYW1lIHNjcmlwdCBjYW4gYmUgbG9hZGVkIG1hbnkgdGltZXMgb24gYSBwYWdl
LiBFYWNoCisgICAgICAgIG9mIHRob3NlIHNjcmlwdHMgaXMgaW5kZXBlbmRlbnQsIGhvd2V2ZXIs
IGFuZCBjYW4gZXhlY3V0ZSBkaWZmZXJlbnRseSwgbWVhbmluZyB0aGF0IHRoZSBzYW1lCisgICAg
ICAgIGJyZWFrcG9pbnQgZm9yIGVhY2ggc2NyaXB0IGFsc28gbmVlZHMgYSBkaWZmZXJlbnQgc3Rh
dGUgKGUuZy4gaWdub3JlIGNvdW50KS4gQXMgc3VjaCwgdGhlCisgICAgICAgIGBQcm90b2NvbEJy
ZWFrcG9pbnRgIGlzIGEgc29ydCBvZiAiYmx1ZXByaW50IiB0aGF0IGlzIGFjdHVhbGl6ZWQgd2hl
bmV2ZXIgYSBuZXcgc2NyaXB0IGlzCisgICAgICAgIHBhcnNlZCB0aGF0IG1hdGNoZXMgdGhlIFVS
TCBvZiB0aGUgYFByb3RvY29sQnJlYWtwb2ludGAgdG8gY3JlYXRlIGEgYEpTQzo6QnJlYWtwb2lu
dGAgdGhhdAorICAgICAgICBpcyB1c2VkIGJ5IHRoZSBgSlNDOjpEZWJ1Z2dlcmAuIGBQcm90b2Nv
bEJyZWFrcG9pbnRgIGFsc28gcGFyc2VzIGJyZWFrcG9pbnQgY29uZmlndXJhdGlvbnMuCisKKyAg
ICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6SlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGls
ZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50
Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcDoK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXVkaXRBZ2VudDo6cnVuKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcDoKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2aWV3KToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3BlcnRpZXMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHA6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQu
aDoKKyAgICAgICAgUmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcmAgd2l0aCBg
SlNDOjpEZWJ1Z2dlcmAuCisKKyAgICAgICAgKiBydW50aW1lL0pTTWljcm90YXNrLmNwcDoKKyAg
ICAgICAgKEpTQzo6SlNNaWNyb3Rhc2s6OnJ1bik6CisgICAgICAgIERyaXZlLWJ5OiByMjQ4ODk0
IG1pc3Rha2VubHkgb21pdHRlZCB0aGUgY2FsbCB0byBub3RpZnkgdGhlIGRlYnVnZ2VyIHRoYXQg
dGhlIG1pY3JvdGFzayByYW4uCisKKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2lu
dC5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg6
IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmg6IFJlbW92
ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorCiAyMDIwLTA4
LTExICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JpcHRFeGVj
dXRhYmxlOjpuZXdDb2RlQmxvY2tGb3IoKSBuZWdsZWN0ZWQgdG8gc2V0IHRoZSBleGNlcHRpb24g
cG9pbnRlciByZXN1bHQgaW4gb25lIGNhc2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDk1NzMwNGI0YTAwMjk2
ODJjNTFkOGI1ODlmMGM3YTBlZGViNmFmOC4uODM1NWU2YTY3MmJjODZhMWMzZTFiMjExYmFkNDYz
NzMxZTRhNDlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0wOC0xMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0
byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZl
bnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3Qg
TiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVu
dCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisgICAgICAgIFRlc3RzOiBp
bnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKKyAgICAgICAg
ICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFr
cG9pbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
aW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sCisgICAgICAgICAgICAgICBp
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbAorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9p
bnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NQWdlbnQ6OmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6IERl
bGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6bWFp
bkZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlVGltZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmlyZVRp
bWVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdl
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmln
YXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVB
bmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6
ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dl
ckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtw
b2ludCk6CisgICAgICAgIEtlZXAgYSBgSlNDOjpCcmVha3BvaW50YCBmb3IgZWFjaCBldmVudCBi
cmVha3BvaW50IGluc3RlYWQgb2YgYSBzaW1wbGUgYGJvb2xgLCBhbGxvd2luZyBmb3IKKyAgICAg
ICAgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBicmVha3BvaW50IGlzIGZpcnN0IHNldC4gV2hlbiBh
bnkgb2YgdGhlc2UgYnJlYWtwb2ludHMgYXJlIGhpdCwgcGFzcworICAgICAgICBpdCB0byB0aGUg
YEpTQzo6RGVidWdnZXJgIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIsIHdoaWNoIGJlaGF2ZXMg
dGhlIHNhbWUgYXMgInBhdXNlIEFTQVAiCisgICAgICAgIGJ1dCBhbHNvIHN1cHBvcnRzIGEgY29u
ZGl0aW9uLCBhbiBpZ25vcmUgY291bnQsIGFjdGlvbnMsIGFuZCBhdXRvLWNvbnRpbnVlLiBSZXNl
dCB0aGUgaGl0CisgICAgICAgIGNvdW50IGZvciBhbnkgb2YgdGhlc2UgInNwZWNpYWwgYnJlYWtw
b2ludHMiIHRoYXQgcGVyc2lzdCBhY3Jvc3MgV2ViIEluc3BlY3RvciBzZXNzaW9ucworICAgICAg
ICB3aGVuIHRoZSBtYWluIGZyYW1lIG5hdmlnYXRlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
UGFnZVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERl
YnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpZFBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlkQ29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVn
U2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjppc0NvbnRlbnRTY3JpcHQgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZXBvcnRFeGNl
cHRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmF0
dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVy
OjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICBSZXBs
YWNlIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB3aXRoIGBKU0M6OkRlYnVnZ2VyYC4K
KworICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToK
KyAgICAgICAgUmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50YCB3aXRoIGBKU0M6
OkJyZWFrcG9pbnRgLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRI
YW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpcmVUaW1lcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRh
dGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEhhbmRsZUV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwpOgorCisgICAg
ICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0
Ojppbm5lckludm9rZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgIFdoZW4gbm90
aWZ5aW5nIFdlYiBJbnNwZWN0b3IgdGhhdCBhY3Rpdml0eSBkaWQgb2NjdXIsIGluY2x1ZGUgYWxs
IGluZm9ybWF0aW9uIHByZXZpb3VzbHkKKyAgICAgICAgaW5jbHVkZWQgd2hlbiBub3RpZnlpbmcg
V2ViIEluc3BlY3RvciB0aGF0IHRoYXQgYWN0aXZpdHkgd2FzIGFib3V0IHRvIG9jY3VyIHNvIHRo
YXQgV2ViCisgICAgICAgIEluc3BlY3RvciBjYW4ga25vdyB3aGV0aGVyIGEgcGF1c2UgZm9yIHRo
ZSAic3BlY2lhbCBicmVha3BvaW50IiBmb3IgdGhhdCBhY3Rpdml0eSBpcyBzdGlsbAorICAgICAg
ICBzY2hlZHVsZWQgYW5kIGlmIHNvIGNhbmNlbCBpdC4KKwogMjAyMC0wOC0xMSAgUGhpbGlwcGUg
Tm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dTdHJlYW1lcl0gZ3N0
LWZ1bGwgc3RhbmRhbG9uZSBsaWJyYXJ5IHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmlu
ZGV4IDE2NzdiMTVmOTg0NTVlOWNkZDI4ODRhMzFiZmY2MDY1Yzg4ZDA5NzAuLmZkYTBhZjUxNzhh
NTVjNDEyODYyMTNjZjkwYmQ4ODVjYjRiYzJjY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDM2MyBAQAorMjAyMC0wOC0xMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMg
dG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0byBkbyB0aGluZ3MgbGlrZToKKyAgICAg
ICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZlbnQudHlwZWAgaXMgYSBjZXJ0YWluIHZh
bHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3QgTiBwYXVzZXMKKyAgICAgICAgIC0gZXZh
bHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVudCBsaXN0ZW5lciBpcyBpbnZva2VkIHdp
dGhvdXQgcGF1c2luZworCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2lu
dC5qczoKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5w
cm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBn
bG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZW1v
dmFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlZGl0
YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGNvbmRp
dGlvbik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWdub3JlQ291bnQp
OgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGlnbm9yZUNvdW50KToKKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBhdXRvQ29udGludWUpOgorICAgICAg
ICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGF1dG9Db250aW51ZSk6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgYWN0aW9ucyk6CisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5nZXQgcHJvYmVBY3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQu
cHJvdG90eXBlLmN5Y2xlVG9OZXh0TW9kZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3Rv
dHlwZS5jcmVhdGVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUucmVj
cmVhdGVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlQWN0
aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmNsZWFyQWN0aW9ucyk6Cisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLm9wdGlvbnNUb1Byb3RvY29sKTogQWRkZWQuCisgICAg
ICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5icmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKToK
KyAgICAgICAgKFdJLkJyZWFrcG9pbnQuZnJvbUpTT04pOiBEZWxldGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbik6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgY29udGVudElkZW50aWZpZXIpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNjcmlwdElkZW50
aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHRh
cmdldCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWRl
bnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQg
aWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5n
ZXQgcmVzb2x2ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IHJlc29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBl
LnNhdmVJZGVudGl0eVRvQ29va2llKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQu
cHJvdG90eXBlLl9pc1NwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5w
cm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxh
eUxvY2F0aW9uQ2hhbmdlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NQnJlYWtwb2ludC5qczoKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NQnJlYWtwb2ludC5mcm9tSlNPTik6IEFkZGVkLgorICAgICAgICAoV0kuRE9NQnJl
YWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAgIChXSS5ET01CcmVha3Bv
aW50LnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5kZXNlcmlh
bGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5nZXQg
ZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9F
dmVudEJyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRXZlbnRCcmVha3BvaW50LmZyb21KU09OKTogQWRkZWQuCisgICAgICAgIChXSS5FdmVu
dEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBnbG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2
ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChX
SS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0ku
RXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAg
IChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5FdmVu
dEJyZWFrcG9pbnQuZGVzZXJpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVh
a3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZl
bnRCcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzOiBDb3BpZWQgZnJv
bSBVc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzLgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpT
T04pOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6
CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNvdXJjZUNv
ZGVMb2NhdGlvbik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUu
Z2V0IGNvbnRlbnRJZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRpZmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHRhcmdldCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZW1vdmFibGUpOiBBZGRlZC4KKyAgICAg
ICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZWRpdGFibGUpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgaWRlbnRp
Zmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGlk
ZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdl
dCByZXNvbHZlZCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IHJlc29sdmVkKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3Rv
dHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5wcm90b3R5cGUuX2lzU3BlY2lhbCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5wcm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCk6CisgICAg
ICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlv
bkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxz
L1VSTEJyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50KToKKyAgICAgICAg
KFdJLlVSTEJyZWFrcG9pbnQuZnJvbUpTT04pOiBBZGRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnQucHJvdG90eXBlLmdldCBnbG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2lu
dC5wcm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQuZGVzZXJpYWxp
emUpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGRp
c2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQucHJvdG90eXBlLnNl
dCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSBgV0kuQnJlYWtwb2ludGAgdG8g
YFdJLkphdmFTY3JpcHRCcmVha3BvaW50YCBhbmQgdXNlIGBXSS5CcmVha3BvaW50YCBhcyBhIG5l
dyBjb21tb24KKyAgICAgICAgYmFzZSBjbGFzcyBmb3IgYWxsIGJyZWFrcG9pbnQgdHlwZXMsIGFs
bG93aW5nIG1vcmUgbG9naWMgdG8gYmUgc2hhcmVkIChlLmcuIGRpc2FibGVkIHN0YXRlKS4KKyAg
ICAgICAgQWRkaXRpb25hbGx5LCBicmVha3BvaW50cyBhcmUgbm93IGFibGUgdG8KKyAgICAgICAg
IC0gZGV0ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRoZXkncmUKKyAgICAgICAgICAgIC0gZ2xvYmFs
IChpLmUuIHNwZWNpYWwpCisgICAgICAgICAgICAtIHJlbW92YWJsZQorICAgICAgICAgICAgLSBl
ZGl0YWJsZSAoaS5lLiBjb25maWd1cmFibGUpCisgICAgICAgICAtIHJlbW92ZSB0aGVtc2VsdmVz
CisgICAgICAgIHdpdGhvdXQgdGhlIGNhbGxlciBuZWVkaW5nIHRvIGtub3cgd2hhdCBtYW5hZ2Vy
IHRvIGNvbnN1bHQgd2l0aC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIpOgorICAgICAgICAoV0kuRE9N
TWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50Q29uZmlndXJhdGlvbik6IEFk
ZGVkLgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuc2V0QnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5
cGUuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3Rv
dHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9p
bnRBY3Rpb25zQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICBLZWVwIHRyYWNrIG9mIGNvbmZpZ3Vy
YXRpb24gY2hhbmdlcyBmb3Igc3BlY2lmaWMgbGlzdGVuZXIgYnJlYWtwb2ludHMuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qczoKKyAg
ICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlcik6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZEV2ZW50QnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50QnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFVSTEJyZWFr
cG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVV
UkxCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
X3VwZGF0ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
cHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6IEFk
ZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZl
bnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlv
bnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90
eXBlLmlzQnJlYWtwb2ludFNwZWNpYWwpOiBEZWxldGVkLgorICAgICAgICBLZWVwIHRyYWNrIG9m
IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgZ2xvYmFsIGV2ZW50IGJyZWFrcG9pbnRzLgorICAg
ICAgICBTdG9yZSBzcGVjaWFsIGdsb2JhbCBldmVudCBicmVha3BvaW50cyBpbnNpZGUgYFdJLm9i
amVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzYC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5h
Z2VyKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkQnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUJyZWFrcG9p
bnQpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRQcm9iZXNGb3JC
cmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludCk6IEFkZGVkLgorICAg
ICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fc2V0QnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9icmVha3BvaW50RWRpdGFibGVQcm9w
ZXJ0eURpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9o
YW5kbGVCcmVha3BvaW50QWN0aW9uc0RpZENoYW5nZSk6CisgICAgICAgIChXSS5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFJlbW92YWJsZSk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFNwZWNpYWwpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pc0JyZWFrcG9pbnRF
ZGl0YWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Ll9kZWJ1Z2dlckJyZWFrcG9pbnRBY3Rpb25UeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2RlYnVnZ2VyQnJlYWtwb2ludE9wdGlvbnMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fYWRkUHJvYmVzRm9y
QnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90
eXBlLl9yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBEZWxl
dGVkLgorICAgICAgICBSZXBsYWNlIGBXSS5CcmVha3BvaW50YCB3aXRoIGBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludGAuCisgICAgICAgIFByb2JlcyBub3cgc3VwcG9ydCBgV0kuRXZlbnRCcmVha3Bv
aW50YCBpbiBhZGRpdGlvbiB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIu
anM6CisgICAgICAgIChXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBlLmFw
cGVuZENvbnRleHRNZW51SXRlbXMpOgorICAgICAgICAoV0kuQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyLnByb3RvdHlwZS5fY3JlYXRlUG9wb3ZlckNvbnRlbnQpOgorICAgICAgICBBbGxvdyBh
bnkgYnJlYWtwb2ludCBpbnN0ZWFkIG9mIG9ubHkgYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4K
KyAgICAgICAgRHJpdmUtYnk6IHRoZSBleGlzdGluZyBgaWdub3JlQ291bnRgIHZhbHVlIHdhc24n
dCBiZWluZyB1c2VkIHRvIHBvcHVsYXRlIHRoZSBgPGlucHV0PmAuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZWxldGUpOgorICAgICAgICAoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5nZXQgbGlzdGVuZXJTZXQpOiBBZGRlZC4KKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlU3RhdHVzKTog
QWRkZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0
ZVRpdGxlcyk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5nZXQgYnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLmdldCBmaWx0ZXJhYmxlRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVUaXRsZXMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRl
U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk6IERlbGV0ZWQuCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAo
Lml0ZW0uYnJlYWtwb2ludCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZSk6CisgICAgICAgICguaXRl
bS5icmVha3BvaW50LnBhdXNlZCAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVm
ZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5wYXVzZWQgLmljb24pOiBB
ZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2Uu
cmVzb2x2ZWQpOiBEZWxldGVkLgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwg
LndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmU6Zm9jdXMtd2l0aGluIC5pdGVt
LmJyZWFrcG9pbnQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQpOiBE
ZWxldGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludCAuc3VidGl0bGUuZm9ybWF0dGVkLWxv
Y2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVu
dC1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWV4Y2VwdGlvbi1p
Y29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWFzc2VydGlvbi1pY29u
IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5p
Y29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LXBhdXNlZC1pY29uIC5pY29uKTog
RGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uKTog
RGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uID4g
c3Bhbik6IERlbGV0ZWQuCisgICAgICAgICguZGF0YS11cGRhdGVkLmJyZWFrcG9pbnQtZ2VuZXJp
Yy1saW5lLWljb24gLmljb24gPiBzcGFuKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1p
Y29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIC5icmVha3BvaW50LWV4Y2VwdGlvbi1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LWFz
c2VydGlvbi1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVh
a3BvaW50LXBhdXNlZC1pY29uIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5p
Y29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9p
bnRUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNo
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUub25kZXRhY2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0ku
RE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250
ZXh0TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQu
cHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVu
dEZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fdXBkYXRlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAg
ICAgICAoLml0ZW0uYnJlYWtwb2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2Vk
KSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1yZW1v
dmVkOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5kb20uc3VidHJlZS1tb2RpZmll
ZDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZG9tLmF0dHJpYnV0ZS1tb2RpZmll
ZDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3Qo
LnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmRvbS5icmVha3Bv
aW50LWZvci1zdWJ0cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmlj
b24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0
dHJpYnV0ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJlbW92
ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAg
IChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5kb20uYnJl
YWtwb2ludC1mb3Itc3VidHJlZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24p
IC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUtbW9kaWZpZWQ6
bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5kb20uYnJlYWtw
b2ludC1mb3Itbm9kZS1yZW1vdmVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24p
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50
VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRh
Y2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJv
dG90eXBlLm9uZGV0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRy
ZWVFbGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25zcGFjZSk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUu
cG9wdWxhdGVDb250ZXh0TWVudSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9z
dGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3du
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3Rv
dHlwZS5fdG9nZ2xlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6IERlbGV0ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6
CisgICAgICAgICguaXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBh
dXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuaW50
ZXJ2YWw6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAo
Lml0ZW0uYnJlYWtwb2ludC5ldmVudC50aW1lb3V0Om5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVk
LgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVh
a3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4K
KyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtw
b2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAg
KEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5ldmVu
dC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYShw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5ldmVudC50aW1lb3V0
Om5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZXZlbnQu
YnJlYWtwb2ludC1mb3ItYW5pbWF0aW9uLWZyYW1lOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNv
bikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2lu
dC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0
ZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1saXN0ZW5lcjpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5i
cmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3BvaW50LXBh
dXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWFuaW1hdGlv
bi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAg
ICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZXZl
bnQuYnJlYWtwb2ludC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJlYWtw
b2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZl
cnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci10
aW1lb3V0Om5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qczogQ29waWVkIGZyb20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5nZXQgZmlsdGVyYWJsZURhdGEpOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlU3RhdHVzKTogQWRkZWQu
CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51
cGRhdGVUaXRsZXMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3M6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MuCisgICAgICAgICguaXRlbS5icmVha3BvaW50Lmph
dmFzY3JpcHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UpOiBBZGRlZC4KKyAgICAgICAgKC5pdGVt
LmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6
IEFkZGVkLgorICAgICAgICAoYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2Nr
ZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmU6Zm9jdXMtd2l0aGluIC5pdGVtLmJyZWFrcG9pbnQu
amF2YXNjcmlwdC5zZWxlY3RlZCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6IEFk
ZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0IC5zdWJ0aXRsZS5mb3Jt
YXR0ZWQtbG9jYXRpb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5saW5lIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFz
Y3JpcHQubGluZSAuaWNvbiA+IHNwYW4pOiBBZGRlZC4KKyAgICAgICAgKC5kYXRhLXVwZGF0ZWQu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbiA+IHNwYW4pOiBBZGRlZC4KKyAg
ICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmlj
b24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRp
b24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5h
c3NlcnRpb24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5taWNyb3Rhc2sgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29u
KTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uKTogQWRk
ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5i
cmVha3BvaW50LmphdmFzY3JpcHQuZXhjZXB0aW9uIC5pY29uKTogQWRkZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmphdmFz
Y3JpcHQuYXNzZXJ0aW9uIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubWljcm90YXNr
IC5pY29uKTogQWRkZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3Bv
aW50VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQp
OgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFj
aCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uZGV0YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxl
bWVudC5wcm90b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtw
b2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25zcGFjZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29u
dGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1l
bnRGb2N1c2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl90b2dnbGVCcmVha3Bv
aW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUuX3VwZGF0ZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAoLml0ZW0uYnJlYWtw
b2ludC51cmwgLnN1YnRpdGxlKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LnVy
bDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQudXJsOm5vdCgucGF1c2VkKSAuaWNv
bik6IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQudXJsIC5zdWJ0aXRsZSk6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSAuYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgIFJlbmFtZSBgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50YCB0byBg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudGAgYW5kIHVzZQorICAgICAgICBgV0ku
QnJlYWtwb2ludFRyZWVFbGVtZW50YCBhcyBhIG5ldyBjb21tb24gYmFzZSBjbGFzcyBmb3IgYWxs
IGJyZWFrcG9pbnQgdHJlZSBlbGVtZW50cywKKyAgICAgICAgYWxsb3dpbmcgbW9yZSBsb2dpYyBh
bmQgc3R5bGVzIHRvIGJlIHNoYXJlZCAoZS5nLiBkaXNhYmxlZCBzdGF0ZSkuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzOgor
ICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwpOgorICAgICAgICAoV0ku
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLmNsb3NlZCk6CisgICAgICAg
IChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2luc2VydERlYnVn
Z2VyVHJlZUVsZW1lbnQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl9jb21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudHMpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fYWRkQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX3JlbW92ZUFsbEJyZWFrcG9pbnRzKToKKyAgICAgICAgKFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fYnJlYWtwb2ludHNCZW5lYXRoVHJl
ZUVsZW1lbnQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9hZGRJc3N1ZSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX3VwZGF0ZVBhdXNlUmVhc29uU2VjdGlvbik6CisgICAgICAgIChXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRsZVRyZWVTZWxlY3Rp
b25EaWRDaGFuZ2UpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwu
cHJvdG90eXBlLl9oYW5kbGVCcmVha3BvaW50RWxlbWVudEFkZGVkT3JSZW1vdmVkKToKKyAgICAg
ICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVD
cmVhdGVCcmVha3BvaW50Q29udGV4dE1lbnUuYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtw
b2ludCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5
cGUuX3BvcHVsYXRlQ3JlYXRlQnJlYWtwb2ludENvbnRleHRNZW51KToKKyAgICAgICAgKFdJLlNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlRGVidWdnZXJPYmpl
Y3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50cyk6
IERlbGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qczoK
KyAgICAgICAgKFdJLlByb2JlU2V0KToKKyAgICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlwZS5j
cmVhdGVQcm9iZSk6CisgICAgICAgIChXSS5Qcm9iZVNldC5wcm90b3R5cGUud2lsbFJlbW92ZSk6
CisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanM6
CisgICAgICAgIChXSS5UaW1lbGluZU1hbmFnZXIucHJvdG90eXBlLl9wcm9jZXNzUmVjb3JkKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanM6
CisgICAgICAgIChXSS5Qcm9iZVNldERldGFpbHNTZWN0aW9uKToKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qczoKKyAgICAgICAgKFdJLlBy
b2JlRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuaW5zcGVjdCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qczoKKyAgICAgICAgKFdJLlNv
dXJjZUNvZGVUZXh0RWRpdG9yKToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnBy
b3RvdHlwZS5jbG9zZSk6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5
cGUudGV4dEVkaXRvckJyZWFrcG9pbnRBZGRlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLlRleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3Rz
KToKKyAgICAgICAgKFdJLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcHJvYmVT
ZXRzQ2hhbmdlZCk6CisgICAgICAgIFByb2JlcyBub3cgc3VwcG9ydCBgV0kuRXZlbnRCcmVha3Bv
aW50YCBpbiBhZGRpdGlvbiB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkNvbnRl
bnRWaWV3LmNyZWF0ZUZyb21SZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXSS5Db250ZW50
Vmlldy5yZXNvbHZlZFJlcHJlc2VudGVkT2JqZWN0Rm9yUmVwcmVzZW50ZWRPYmplY3QpOgorICAg
ICAgICAoV0kuQ29udGVudFZpZXcuaXNWaWV3YWJsZSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qczoKKyAgICAgICAgKFdJLmFwcGVuZENvbnRl
eHRNZW51SXRlbXNGb3JTb3VyY2VDb2RlKToKKyAgICAgICAgUmVwbGFjZSBgV0kuQnJlYWtwb2lu
dGAgd2l0aCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5ET01UcmVlQ29u
dGVudFZpZXcpOgorICAgICAgICBSZXBsYWNlIGBXSS5ET01CcmVha3BvaW50YCB3aXRoIGBXSS5C
cmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5l
clNlY3Rpb25Hcm91cC5qczoKKyAgICAgICAgKFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAp
OgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91
cC5jc3M6CisgICAgICAgICguZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0
W3R5cGU9ImNoZWNrYm94Il0gKyAuZ28tdG8tYXJyb3cpOiBBZGRlZC4KKyAgICAgICAgKC5ldmVu
dC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3Qo
OmNoZWNrZWQpICsgLmdvLXRvLWFycm93KTogQWRkZWQuCisgICAgICAgIEFkZCBhIGdvLXRvIGFy
cm93IG5leHQgdG8gdGhlIEJyZWFrcG9pbnQgY2hlY2tib3ggdGhhdCByZXZlYWxzIHRoZSBgV0ku
RXZlbnRCcmVha3BvaW50YCBpbgorICAgICAgICB0aGUgU291cmNlcyBUYWIuCisKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzOgorICAgICAgICAo
V0kuQnJlYWtwb2ludEFjdGlvblZpZXcucHJvdG90eXBlLl9hcHBlbmRBY3Rpb25CdXR0b25DbGlj
a2VkKToKKyAgICAgICAgRHJpdmUtYnk6IG1pbm9yIGNvZGUgY2xlYW51cC4KKworICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanM6CisgICAgICAgIChX
SS5DYWxsRnJhbWVUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0TWVudSk6Cisg
ICAgICAgIERyaXZlLWJ5OiBpbmNsdWRlIHNvdXJjZSBjb2RlIGxvY2F0aW9uIGNvbnRleHQgbWVu
dSBpdGVtcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzOgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
VGVzdC5odG1sOgorCiAyMDIwLTA4LTA2ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBw
bGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1lZGlhICYgQW5pbWF0aW9ucyB0aW1l
bGluZSBzaG91bGRuJ3Qgc2hpZnQgd2hlbiBzb3J0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VM
aXN0cy50eHQKaW5kZXggYTg2Mjg4YjJlNzc3MGU4ODE3YTBlOGRiMmI0OGQ3MjYzNzc4ZGMxNS4u
ZTAwZDgwNDllYjVmODczODBmMGRkZmQ3OTZiNDZhMWU1NTM2NTJhMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjg1LDEyICs2ODUsOSBAQCBzZXQoSmF2YVNjcmlwdENv
cmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JUYXJn
ZXQuaAogICAgIGluc3BlY3Rvci9QZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQuaAogICAgIGlu
c3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAotICAgIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50
LmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKICAgICBpbnNwZWN0b3IvU2NyaXB0
Q2FsbFN0YWNrLmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oCi0gICAg
aW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAotICAgIGluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5oCiAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmgKICAgICBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2og
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagppbmRleCA4MTk3ZjZiNjBjOGUzZmE1YmIwZTc4N2I0NmFmZTRjZWZmNGJmZTQxLi5l
NDY1YmYxNzc1MjQzNjZkZjQ0MWM4ODQyZmRlODIxMDI4ODllZjZhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagpAQCAtMTM5Myw5ICsxMzkzLDYgQEAKIAkJQTNGRjlCQzcyMjM0NzQ5MTAw
QjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFncy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MDNGQTFBMTg4
RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAxMTBGMTQgLyog
SmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIwMDAxMTBGMTQg
LyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBGMTQgLyogSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07Ci0JCUE1MDNGQTIxMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0QnJl
YWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
Ci0JCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyMDE4OEVG
RjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MDNGQTI2MTg4RUZGRkQwMDExMEYxNCAv
KiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTUw
M0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MDNGQTI4
MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggKi87
IH07CiAJCUE1MDk4QjA0MUMxNkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFtZXdvcmsgaW4g
RnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTA5OEIwMzFD
MTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQlBNTBFNEI2MjE4
ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RTE4ODA5REQ1MDA2OEE0NkQg
LyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMzUsNiArNDIzMiw3IEBACiAJCTkxOEUxNUJEMjQ0N0Iy
MjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJy
b3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rvci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNvbnN0cnVjdG9y
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENF
RCAvKiBCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1MkMzMjBG
Qjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gUGFyc2VyQXJlbmEuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyQXJlbmEuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25zdHJ1Y3RvcnMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0cnVjdG9ycy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3MywxMCArNDM3MSw2IEBACiAJCUE1MDNG
QTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFT
Y3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBK
U0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKLQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9pbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyMDE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0
RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MDNGQTIzMTg4
RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUE1MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1Nl
cnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEyNzE4OEYxMDU5MDAxMTBG
MTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjgxODhGMTA1OTAwMTEwRjE0
IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMzFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJp
dHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdvcms7IHBhdGgg
PSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL01hY09TWDEwLjExLnNk
ay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsgc291cmNlVHJl
ZSA9IERFVkVMT1BFUl9ESVI7IH07CkBAIC02NTE3LDYgKzY1MTEsNyBAQAogCQkxNDgwREI5QTBE
REMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJ
CWNoaWxkcmVuID0gKAorCQkJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBCcmVha3BvaW50
LmNwcCAqLywKIAkJCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtwb2ludC5oICov
LAogCQkJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5jcHAgKi8sCiAJCQkJ
RjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi8sCkBAIC04NjYyLDE2ICs4
NjU3LDEyIEBACiAJCQkJQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBlckdsb2JhbE9iamVj
dFdyYXBwZXJXb3JsZC5oICovLAogCQkJCUE1RkQwMDY1MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3Jp
cHRBcmd1bWVudHMuY3BwICovLAogCQkJCUE1RkQwMDY2MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3Jp
cHRBcmd1bWVudHMuaCAqLywKLQkJCQlBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0
QnJlYWtwb2ludC5oICovLAogCQkJCUE1RkQwMDY5MTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRD
YWxsRnJhbWUuY3BwICovLAogCQkJCUE1RkQwMDZBMTg5QjAwQTkwMDYzMzIzMSAvKiBTY3JpcHRD
YWxsRnJhbWUuaCAqLywKIAkJCQlBNUZEMDA2QjE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bFN0YWNrLmNwcCAqLywKIAkJCQlBNUZEMDA2QzE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2Fs
bFN0YWNrLmggKi8sCiAJCQkJQTVGRDAwN0IxODlCMEI0QzAwNjMzMjMxIC8qIFNjcmlwdENhbGxT
dGFja0ZhY3RvcnkuY3BwICovLAogCQkJCUE1RkQwMDdDMTg5QjBCNEMwMDYzMzIzMSAvKiBTY3Jp
cHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCi0JCQkJQTUwM0ZBMjAxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKLQkJCQlBNTAzRkEyMzE4OEVGRkZEMDAxMTBGMTQg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAotCQkJCUE1MDNGQTI0MTg4RUZGRkQwMDExMEYx
NCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBpbnNwZWN0b3I7
CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTAyNjMsMTIgKzEwMjU0LDkgQEAKIAkJ
CQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxsb2NhdG9yLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyogU2NyaWJibGUu
aCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRB
cmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAv
KiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2RTE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA3
MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUZEMDA3RTE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjIxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVn
TGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTI2MTg4RUZGRkQwMDExMEYxNCAv
KiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQxQ0UxREMwMkQ3
OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQUU3
RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0ZXJzLmggaW4g
SGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMzEwYjlhNGNkZmQ2
MWQ0NzgyZWY2NjlkM2E5YjJkNWNlMzEwMmY2Li42ODcxNDk4YjBmZWMxOTlkODhmOTI5MjA0MDM1
ZWNmMDcwM2NiYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0zMDAsNiArMzAw
LDcgQEAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogYnl0ZWNvbXBpbGVyL05v
ZGVzQ29kZWdlbi5jcHAKIGJ5dGVjb21waWxlci9Qcm9maWxlVHlwZUJ5dGVjb2RlRmxhZy5jcHAK
IAorZGVidWdnZXIvQnJlYWtwb2ludC5jcHAKIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcAogZGVidWdn
ZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCiBkZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0aW9uLmNwcApA
QCAtNTkzLDcgKzU5NCw2IEBAIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3BwCiBpbnNwZWN0
b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFjay5jcHAKIGlu
c3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAotaW5zcGVjdG9yL1NjcmlwdERlYnVn
U2VydmVyLmNwcAogCiAvLyBEZXJpdmVkIFNvdXJjZXMKIGluc3BlY3Rvci9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvQnJlYWtwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJl
YWtwb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcxNGY3MDNmOTFmNDJhOTdjYTlhZWNmZGIwYTNkZjc4
NjhlNjkwMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9CcmVha3BvaW50LmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogIENvcHlyaWdodCAoQykg
MjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
ICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1
ZGUgIkJyZWFrcG9pbnQuaCIKKworI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitCcmVha3BvaW50OjpBY3Rpb246OkFjdGlvbihCcmVha3BvaW50OjpBY3Rpb246OlR5
cGUgdHlwZSkKKyAgICA6IHR5cGUodHlwZSkKK3sKK30KKworUmVmPEJyZWFrcG9pbnQ+IEJyZWFr
cG9pbnQ6OmNyZWF0ZShCcmVha3BvaW50SUQgaWQsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBB
Y3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVD
b3VudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCcmVha3BvaW50KGlkLCBjb25kaXRp
b24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpKTsKK30KKwor
QnJlYWtwb2ludDo6QnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQsIFN0cmluZyBjb25kaXRpb24s
IEFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6ZV90IGlnbm9y
ZUNvdW50KQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKKyAg
ICAsIG1fYWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRvQ29udGludWUoYXV0
b0NvbnRpbnVlKQorICAgICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkKK3sKK30KKworYm9v
bCBCcmVha3BvaW50OjpsaW5rKFNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpCit7CisgICAgQVNTRVJUKCFpc0xpbmtlZCgpKTsKKyAg
ICBBU1NFUlQoIWlzUmVzb2x2ZWQoKSk7CisKKyAgICBtX3NvdXJjZUlEID0gc291cmNlSUQ7Cisg
ICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVt
bk51bWJlcjsKKyAgICByZXR1cm4gaXNMaW5rZWQoKTsKK30KKworYm9vbCBCcmVha3BvaW50Ojpy
ZXNvbHZlKHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlcikKK3sKKyAg
ICBBU1NFUlQoaXNMaW5rZWQoKSk7CisgICAgQVNTRVJUKCFpc1Jlc29sdmVkKCkpOworCisgICAg
bV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVtbk51
bWJlcjsKKyAgICBtX3Jlc29sdmVkID0gdHJ1ZTsKKyAgICByZXR1cm4gaXNSZXNvbHZlZCgpOwor
fQorCitib29sIEJyZWFrcG9pbnQ6OnNob3VsZFBhdXNlKERlYnVnZ2VyJiBkZWJ1Z2dlciwgSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAoKyttX2hpdENvdW50IDw9IG1f
aWdub3JlQ291bnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBkZWJ1Z2dl
ci5ldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24oKnRoaXMsIGdsb2JhbE9iamVjdCk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0JyZWFrcG9pbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9CcmVh
a3BvaW50LmgKaW5kZXggMTQxOGUxNTk4YjMwYTFiMDU4MTRhYjhmZmFkMTVhMjMzNGNiZDJhZS4u
ZTYwNWVjYTcyODhjNTAzZjI3NzAyYjNhYmRiNjAyMmE3M2ZmZjYxMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5oCkBAIC0yNiw1NCArMjYsODAgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCi0jaW5jbHVkZSA8
d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KKyNpbmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2lu
Y2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBCcmVha3Bv
aW50IDogcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPEJyZWFrcG9pbnQ+IHsKLSAgICBCcmVh
a3BvaW50KCkKLSAgICB7Ci0gICAgfQorY2xhc3MgRGVidWdnZXI7CitjbGFzcyBKU0dsb2JhbE9i
amVjdDsKIAotICAgIEJyZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmUs
IHVuc2lnbmVkIGNvbHVtbiwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgYXV0b0NvbnRp
bnVlLCB1bnNpZ25lZCBpZ25vcmVDb3VudCkKLSAgICAgICAgOiBzb3VyY2VJRChzb3VyY2VJRCkK
LSAgICAgICAgLCBsaW5lKGxpbmUpCi0gICAgICAgICwgY29sdW1uKGNvbHVtbikKLSAgICAgICAg
LCBjb25kaXRpb24oY29uZGl0aW9uKQotICAgICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGlu
dWUpCi0gICAgICAgICwgaWdub3JlQ291bnQoaWdub3JlQ291bnQpCi0gICAgewotICAgIH0KK2Ns
YXNzIEJyZWFrcG9pbnQgOiBwdWJsaWMgUmVmQ291bnRlZDxCcmVha3BvaW50PiB7CisgICAgV1RG
X01BS0VfTk9OQ09QWUFCTEUoQnJlYWtwb2ludCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CitwdWJsaWM6CisgICAgc3RydWN0IEFjdGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlw
ZSA6IHVpbnQ4X3QgeworICAgICAgICAgICAgTG9nLAorICAgICAgICAgICAgRXZhbHVhdGUsCisg
ICAgICAgICAgICBTb3VuZCwKKyAgICAgICAgICAgIFByb2JlLAorICAgICAgICB9OwogCi0gICAg
QnJlYWtwb2ludElEIGlkIHsgbm9CcmVha3BvaW50SUQgfTsKLSAgICBTb3VyY2VJRCBzb3VyY2VJ
RCB7IG5vU291cmNlSUQgfTsKLSAgICB1bnNpZ25lZCBsaW5lIHsgMCB9OwotICAgIHVuc2lnbmVk
IGNvbHVtbiB7IDAgfTsKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIGJvb2wgYXV0b0NvbnRp
bnVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3VudCB7IDAgfTsKLSAgICB1bnNp
Z25lZCBoaXRDb3VudCB7IDAgfTsKLSAgICBib29sIHJlc29sdmVkIHsgZmFsc2UgfTsKKyAgICAg
ICAgQWN0aW9uKFR5cGUpOworCisgICAgICAgIFR5cGUgdHlwZTsKKyAgICAgICAgU3RyaW5nIGRh
dGE7CisgICAgICAgIEJyZWFrcG9pbnRBY3Rpb25JRCBpZCB7IG5vQnJlYWtwb2ludEFjdGlvbklE
IH07CisgICAgfTsKKworICAgIHVzaW5nIEFjdGlvbnNWZWN0b3IgPSBWZWN0b3I8QWN0aW9uPjsK
KworICAgIHN0YXRpYyBSZWY8QnJlYWtwb2ludD4gY3JlYXRlKEJyZWFrcG9pbnRJRCwgY29uc3Qg
U3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3ImJiA9IHsgfSwg
Ym9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CisKKyAg
ICBCcmVha3BvaW50SUQgaWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisKKyAgICBTb3VyY2VJ
RCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQ7IH0KKyAgICB1bnNpZ25lZCBs
aW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9saW5lTnVtYmVyOyB9CisgICAgdW5zaWduZWQg
Y29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1cm4gbV9jb2x1bW5OdW1iZXI7IH0KKworICAgIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9jb25kaXRpb247IH0KKyAg
ICBjb25zdCBBY3Rpb25zVmVjdG9yJiBhY3Rpb25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25z
OyB9CisgICAgYm9vbCBpc0F1dG9Db250aW51ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0NvbnRp
bnVlOyB9CisKKyAgICB2b2lkIHJlc2V0SGl0Q291bnQoKSB7IG1faGl0Q291bnQgPSAwOyB9CisK
KyAgICBib29sIGxpbmsoU291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNv
bHVtbk51bWJlcik7CisgICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNl
SUQgIT0gbm9Tb3VyY2VJRDsgfQorICAgIGJvb2wgcmVzb2x2ZSh1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpOworICAgIGJvb2wgaXNSZXNvbHZlZCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVzb2x2ZWQ7IH0KKworICAgIGJvb2wgc2hvdWxkUGF1c2UoRGVidWdnZXImLCBK
U0dsb2JhbE9iamVjdCopOwogCiBwcml2YXRlOgotICAgIEJyZWFrcG9pbnQqIG1fcHJldjsKLSAg
ICBCcmVha3BvaW50KiBtX25leHQ7CisgICAgQnJlYWtwb2ludChCcmVha3BvaW50SUQsIFN0cmlu
ZyBjb25kaXRpb24gPSBudWxsU3RyaW5nKCksIEFjdGlvbnNWZWN0b3ImJiA9IHsgfSwgYm9vbCBh
dXRvQ29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CiAKLSAgICBmcmll
bmQgY2xhc3MgV1RGOjpEb3VibHlMaW5rZWRMaXN0Tm9kZTxCcmVha3BvaW50PjsKKyAgICBCcmVh
a3BvaW50SUQgbV9pZCB7IG5vQnJlYWtwb2ludElEIH07CisKKyAgICBTb3VyY2VJRCBtX3NvdXJj
ZUlEIHsgbm9Tb3VyY2VJRCB9OworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3Ig
dG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2VkSW50IGFtYmlndWl0eQorICAgIHVuc2lnbmVk
IG1fbGluZU51bWJlciB7IDAgfTsKKyAgICB1bnNpZ25lZCBtX2NvbHVtbk51bWJlciB7IDAgfTsK
KworICAgIGJvb2wgbV9yZXNvbHZlZCB7IGZhbHNlIH07CisKKyAgICBTdHJpbmcgbV9jb25kaXRp
b247CisgICAgQWN0aW9uc1ZlY3RvciBtX2FjdGlvbnM7CisgICAgYm9vbCBtX2F1dG9Db250aW51
ZSB7IGZhbHNlIH07CisgICAgc2l6ZV90IG1faWdub3JlQ291bnQgeyAwIH07CisgICAgc2l6ZV90
IG1faGl0Q291bnQgeyAwIH07CiB9OwogCi1jbGFzcyBCcmVha3BvaW50c0xpc3QgOiBwdWJsaWMg
RG91Ymx5TGlua2VkTGlzdDxCcmVha3BvaW50PiwKLSAgICBwdWJsaWMgUmVmQ291bnRlZDxCcmVh
a3BvaW50c0xpc3Q+IHsKLXB1YmxpYzoKLSAgICB+QnJlYWtwb2ludHNMaXN0KCkKLSAgICB7Ci0g
ICAgICAgIEJyZWFrcG9pbnQqIGJyZWFrcG9pbnQ7Ci0gICAgICAgIHdoaWxlICgoYnJlYWtwb2lu
dCA9IHJlbW92ZUhlYWQoKSkpCi0gICAgICAgICAgICBkZWxldGUgYnJlYWtwb2ludDsKLSAgICAg
ICAgQVNTRVJUKGlzRW1wdHkoKSk7Ci0gICAgfQotfTsKK3VzaW5nIEJyZWFrcG9pbnRzVmVjdG9y
ID0gVmVjdG9yPFJlZjxKU0M6OkJyZWFrcG9pbnQ+PjsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAppbmRleCBmNGFjMzU2
N2E1NjhlYzc2ZGMzNmRkNzhhYmFiYzBhMTg4YWMwYjUzLi5jNGJmYTFhNzcxMzQ2NDdhZDBjMzFl
NzUxNjg3MzlhMzkwN2E3OWY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5jcHAKQEAgLTI0LDEwICsyNCwxNiBAQAogCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgi
CiAjaW5jbHVkZSAiRGVidWdnZXJDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlclNjb3Bl
LmgiCiAjaW5jbHVkZSAiSGVhcEl0ZXJhdGlvblNjb3BlLmgiCiAjaW5jbHVkZSAiSlNDSW5saW5l
cy5oIgogI2luY2x1ZGUgIk1hcmtlZFNwYWNlSW5saW5lcy5oIgogI2luY2x1ZGUgIlZNRW50cnlT
Y29wZS5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
ODksNyArOTUsNiBAQCBEZWJ1Z2dlcjo6RGVidWdnZXIoVk0mIHZtKQogICAgICwgbV9yZWFzb25G
b3JQYXVzZShOb3RQYXVzZWQpCiAgICAgLCBtX2xhc3RFeGVjdXRlZExpbmUoVUlOVF9NQVgpCiAg
ICAgLCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEKG5vU291cmNlSUQpCi0gICAgLCBtX3RvcEJyZWFr
cG9pbnRJRChub0JyZWFrcG9pbnRJRCkKICAgICAsIG1fcGF1c2luZ0JyZWFrcG9pbnRJRChub0Jy
ZWFrcG9pbnRJRCkKIHsKIH0KQEAgLTIwNSwxMiArMjEwLDk2IEBAIHZvaWQgRGVidWdnZXI6OnJl
Z2lzdGVyQ29kZUJsb2NrKENvZGVCbG9jayogY29kZUJsb2NrKQogICAgICAgICBjb2RlQmxvY2st
PnNldFN0ZXBwaW5nTW9kZShDb2RlQmxvY2s6OlN0ZXBwaW5nTW9kZUVuYWJsZWQpOwogfQogCit2
b2lkIERlYnVnZ2VyOjphZGRPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2ZXIpCit7CisgICAgYm9v
bCB3YXNFbXB0eSA9IG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKKworICAgIG1fb2JzZXJ2ZXJzLmFk
ZCgmb2JzZXJ2ZXIpOworCisgICAgaWYgKHdhc0VtcHR5KQorICAgICAgICBhdHRhY2hEZWJ1Z2dl
cigpOworfQorCit2b2lkIERlYnVnZ2VyOjpyZW1vdmVPYnNlcnZlcihPYnNlcnZlciYgb2JzZXJ2
ZXIsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBtX29ic2VydmVycy5yZW1vdmUoJm9i
c2VydmVyKTsKKworICAgIGlmIChtX29ic2VydmVycy5pc0VtcHR5KCkpCisgICAgICAgIGRldGFj
aERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOworfQorCitib29sIERlYnVnZ2VyOjpjYW5EaXNw
YXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoKSBjb25zdAoreworICAgIHJldHVybiAhbV9kaXNwYXRj
aGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMgJiYgIW1fb2JzZXJ2ZXJzLmlzRW1wdHkoKTsKK30KKwor
dm9pZCBEZWJ1Z2dlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9uPHZvaWQo
T2JzZXJ2ZXImKT4gZnVuYykKK3sKKyAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25Ub09ic2Vy
dmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2Uo
bV9kaXNwYXRjaGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMsIHRydWUpOworCisgICAgZm9yIChhdXRv
KiBvYnNlcnZlciA6IGNvcHlUb1ZlY3RvcihtX29ic2VydmVycykpCisgICAgICAgIGZ1bmMoKm9i
c2VydmVyKTsKK30KKwogdm9pZCBEZWJ1Z2dlcjo6c2V0UHJvZmlsaW5nQ2xpZW50KFByb2ZpbGlu
Z0NsaWVudCogY2xpZW50KQogewogICAgIEFTU0VSVCghIW1fcHJvZmlsaW5nQ2xpZW50ICE9ICEh
Y2xpZW50KTsKICAgICBtX3Byb2ZpbGluZ0NsaWVudCA9IGNsaWVudDsKIH0KIAordm9pZCBEZWJ1
Z2dlcjo6c291cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNvdXJjZVBy
b3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpCit7CisgICAgLy8gUHJlZW1wdGl2ZWx5IGNoZWNrIHdoZXRoZXIgd2UgY2FuIGRp
c3BhdGNoIHNvIHRoYXQgd2UgZG9uJ3QgZG8gYW55IHVubmVjZXNzYXJ5IGFsbG9jYXRpb25zLgor
ICAgIGlmICghY2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIGlmIChlcnJvckxpbmUgIT0gLTEpIHsKKyAgICAgICAgYXV0byBzb3VyY2VVUkwg
PSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7CisgICAgICAgIGF1dG8gZGF0YSA9IHNvdXJj
ZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOworICAgICAgICBhdXRvIGZpcnN0TGluZSA9
IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50KCk7Cisg
ICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZl
cikgeworICAgICAgICAgICAgb2JzZXJ2ZXIuZmFpbGVkVG9QYXJzZVNvdXJjZShzb3VyY2VVUkws
IGRhdGEsIGZpcnN0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOworICAgICAgICB9KTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBz
b3VyY2VQcm92aWRlci0+YXNJRCgpOworCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNjI3NzM+IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IERlYnVnZ2VyOjpTY3JpcHQgdG8g
dXNlIFNvdXJjZVByb3ZpZGVyCisgICAgRGVidWdnZXI6OlNjcmlwdCBzY3JpcHQ7CisgICAgc2Ny
aXB0LnNvdXJjZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7CisgICAgc2NyaXB0LnVybCA9IHNv
dXJjZVByb3ZpZGVyLT5zb3VyY2VVUkwoKTsKKyAgICBzY3JpcHQuc291cmNlID0gc291cmNlUHJv
dmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAgc2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJj
ZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOworICAgIHNj
cmlwdC5zdGFydENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1
bW4uemVyb0Jhc2VkSW50KCk7CisgICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVu
dFNjcmlwdChnbG9iYWxPYmplY3QpOworICAgIHNjcmlwdC5zb3VyY2VVUkwgPSBzb3VyY2VQcm92
aWRlci0+c291cmNlVVJMRGlyZWN0aXZlKCk7CisgICAgc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwg
PSBzb3VyY2VQcm92aWRlci0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpOworCisgICAgaW50
IHNvdXJjZUxlbmd0aCA9IHNjcmlwdC5zb3VyY2UubGVuZ3RoKCk7CisgICAgaW50IGxpbmVDb3Vu
dCA9IDE7CisgICAgaW50IGxhc3RMaW5lU3RhcnQgPSAwOworICAgIGZvciAoaW50IGkgPSAwOyBp
IDwgc291cmNlTGVuZ3RoOyArK2kpIHsKKyAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VbaV0gPT0g
J1xuJykgeworICAgICAgICAgICAgbGluZUNvdW50ICs9IDE7CisgICAgICAgICAgICBsYXN0TGlu
ZVN0YXJ0ID0gaSArIDE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzY3JpcHQuZW5kTGluZSA9
IHNjcmlwdC5zdGFydExpbmUgKyBsaW5lQ291bnQgLSAxOworICAgIGlmIChsaW5lQ291bnQgPT0g
MSkKKyAgICAgICAgc2NyaXB0LmVuZENvbHVtbiA9IHNjcmlwdC5zdGFydENvbHVtbiArIHNvdXJj
ZUxlbmd0aDsKKyAgICBlbHNlCisgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5n
dGggLSBsYXN0TGluZVN0YXJ0OworCisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsm
XSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRpZFBhcnNlU291cmNl
KHNvdXJjZUlELCBzY3JpcHQpOworICAgIH0pOworfQorCiBTZWNvbmRzIERlYnVnZ2VyOjp3aWxs
RXZhbHVhdGVTY3JpcHQoKQogewogICAgIHJldHVybiBtX3Byb2ZpbGluZ0NsaWVudC0+d2lsbEV2
YWx1YXRlU2NyaXB0KCk7CkBAIC0yMjMsMTIgKzMxMiwxMiBAQCB2b2lkIERlYnVnZ2VyOjpkaWRF
dmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0YXJ0VGltZSwgUHJvZmlsaW5nUmVhc29uIHJlYXNvbikK
IAogdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywg
QnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnJlYWtwb2ludFN0YXRlIGVuYWJsZWRPck5vdCkKIHsK
LSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQu
aXNSZXNvbHZlZCgpKTsKIAogICAgIFNjcmlwdEV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBjb2Rl
QmxvY2stPm93bmVyRXhlY3V0YWJsZSgpOwogCiAgICAgU291cmNlSUQgc291cmNlSUQgPSBzdGF0
aWNfY2FzdDxTb3VyY2VJRD4oZXhlY3V0YWJsZS0+c291cmNlSUQoKSk7Ci0gICAgaWYgKGJyZWFr
cG9pbnQuc291cmNlSUQgIT0gc291cmNlSUQpCisgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlSUQo
KSAhPSBzb3VyY2VJRCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgdW5zaWduZWQgc3RhcnRMaW5l
ID0gZXhlY3V0YWJsZS0+Zmlyc3RMaW5lKCk7CkBAIC0yMzgsMTAgKzMyNywxMCBAQCB2b2lkIERl
YnVnZ2VyOjp0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBCcmVha3BvaW50
JiBicmVha3BvaW50LCBCcgogCiAgICAgLy8gSW5zcGVjdG9yIGJyZWFrcG9pbnQgbGluZSBhbmQg
Y29sdW1uIHZhbHVlcyBhcmUgemVyby1iYXNlZCBidXQgdGhlIGV4ZWN1dGFibGUKICAgICAvLyBh
bmQgQ29kZUJsb2NrIGxpbmUgYW5kIGNvbHVtbiB2YWx1ZXMgYXJlIG9uZS1iYXNlZC4KLSAgICB1
bnNpZ25lZCBsaW5lID0gYnJlYWtwb2ludC5saW5lICsgMTsKKyAgICB1bnNpZ25lZCBsaW5lID0g
YnJlYWtwb2ludC5saW5lTnVtYmVyKCkgKyAxOwogICAgIE9wdGlvbmFsPHVuc2lnbmVkPiBjb2x1
bW47Ci0gICAgaWYgKGJyZWFrcG9pbnQuY29sdW1uKQotICAgICAgICBjb2x1bW4gPSBicmVha3Bv
aW50LmNvbHVtbiArIDE7CisgICAgaWYgKGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpCisgICAg
ICAgIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkgKyAxOwogCiAgICAgaWYgKGxp
bmUgPCBzdGFydExpbmUgfHwgbGluZSA+IGVuZExpbmUpCiAgICAgICAgIHJldHVybjsKQEAgLTI2
Myw5ICszNTIsOCBAQCB2b2lkIERlYnVnZ2VyOjp0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayog
Y29kZUJsb2NrLCBCcmVha3BvaW50JiBicmVha3BvaW50LCBCcgogCiB2b2lkIERlYnVnZ2VyOjph
cHBseUJyZWFrcG9pbnRzKENvZGVCbG9jayogY29kZUJsb2NrKQogewotICAgIEJyZWFrcG9pbnRJ
RFRvQnJlYWtwb2ludE1hcCYgYnJlYWtwb2ludHMgPSBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2lu
dDsKLSAgICBmb3IgKGF1dG8qIGJyZWFrcG9pbnQgOiBicmVha3BvaW50cy52YWx1ZXMoKSkKLSAg
ICAgICAgdG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssICpicmVha3BvaW50LCBCcmVha3BvaW50
RW5hYmxlZCk7CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogbV9icmVha3BvaW50cykKKyAg
ICAgICAgdG9nZ2xlQnJlYWtwb2ludChjb2RlQmxvY2ssIGJyZWFrcG9pbnQsIEJyZWFrcG9pbnRF
bmFibGVkKTsKIH0KIAogY2xhc3MgRGVidWdnZXI6OlRvZ2dsZUJyZWFrcG9pbnRGdW5jdG9yIHsK
QEAgLTMxNCwxODggKzQwMiwxNDMgQEAgRGVidWdnZXJQYXJzZURhdGEmIERlYnVnZ2VyOjpkZWJ1
Z2dlclBhcnNlRGF0YShTb3VyY2VJRCBzb3VyY2VJRCwgU291cmNlUHJvdmlkZXIKICAgICByZXR1
cm4gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6cmVzb2x2ZUJy
ZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVBy
b3ZpZGVyKQorYm9vbCBEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJl
YWtwb2ludCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyKQogewotICAgIFJFTEVBU0Vf
QVNTRVJUKCFicmVha3BvaW50LnJlc29sdmVkKTsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5zb3Vy
Y2VJRCAhPSBub1NvdXJjZUlEKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghYnJlYWtwb2ludC5pc1Jl
c29sdmVkKCkpOworICAgIEFTU0VSVChicmVha3BvaW50LmlzTGlua2VkKCkpOwogCiAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0
IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3IgdG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2Vk
SW50IGFtYmlndWl0eQogICAgIC8vIEluc3BlY3RvciBicmVha3BvaW50IGxpbmUgYW5kIGNvbHVt
biB2YWx1ZXMgYXJlIHplcm8tYmFzZWQgYnV0IHRoZSBleGVjdXRhYmxlCiAgICAgLy8gYW5kIENv
ZGVCbG9jayBsaW5lIHZhbHVlcyBhcmUgb25lLWJhc2VkIHdoaWxlIGNvbHVtbiBpcyB6ZXJvLWJh
c2VkLgotICAgIGludCBsaW5lID0gYnJlYWtwb2ludC5saW5lICsgMTsKLSAgICBpbnQgY29sdW1u
ID0gYnJlYWtwb2ludC5jb2x1bW47CisgICAgaW50IGxpbmUgPSBicmVha3BvaW50LmxpbmVOdW1i
ZXIoKSArIDE7CisgICAgaW50IGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCk7CiAK
ICAgICAvLyBBY2NvdW50IGZvciBhIDxzY3JpcHQ+J3Mgc3RhcnQgcG9zaXRpb24gb24gdGhlIGZp
cnN0IGxpbmUgb25seS4KICAgICBpbnQgcHJvdmlkZXJTdGFydExpbmUgPSBzb3VyY2VQcm92aWRl
ci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOyAvLyBPbmUgYmFzZWQgdG8g
bWF0Y2ggdGhlIGFscmVhZHkgYWRqdXN0ZWQgbGluZS4KICAgICBpbnQgcHJvdmlkZXJTdGFydENv
bHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jhc2Vk
SW50KCk7IC8vIFplcm8gYmFzZWQgc28gY29sdW1uIHplcm8gaXMgemVyby4KLSAgICBpZiAobGlu
ZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVha3BvaW50LmNvbHVtbikgeworICAgIGlmIChs
aW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsK
ICAgICAgICAgQVNTRVJUKHByb3ZpZGVyU3RhcnRDb2x1bW4gPD0gY29sdW1uKTsKICAgICAgICAg
aWYgKHByb3ZpZGVyU3RhcnRDb2x1bW4pCiAgICAgICAgICAgICBjb2x1bW4gLT0gcHJvdmlkZXJT
dGFydENvbHVtbjsKICAgICB9CiAKLSAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgcGFyc2VEYXRhID0g
ZGVidWdnZXJQYXJzZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCwgc291cmNlUHJvdmlkZXIpOwor
ICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShicmVh
a3BvaW50LnNvdXJjZUlEKCksIHNvdXJjZVByb3ZpZGVyKTsKICAgICBPcHRpb25hbDxKU1RleHRQ
b3NpdGlvbj4gcmVzb2x2ZWRQb3NpdGlvbiA9IHBhcnNlRGF0YS5wYXVzZVBvc2l0aW9ucy5icmVh
a3BvaW50TG9jYXRpb25Gb3JMaW5lQ29sdW1uKGxpbmUsIGNvbHVtbik7CiAgICAgaWYgKCFyZXNv
bHZlZFBvc2l0aW9uKQotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIGludCByZXNvbHZlZExpbmUgPSByZXNvbHZlZFBvc2l0aW9uLT5saW5lOwogICAgIGludCBy
ZXNvbHZlZENvbHVtbiA9IHJlc29sdmVkUG9zaXRpb24tPmNvbHVtbigpOwogCiAgICAgLy8gUmUt
YWNjb3VudCBmb3IgYSA8c2NyaXB0PidzIHN0YXJ0IHBvc2l0aW9uIG9uIHRoZSBmaXJzdCBsaW5l
IG9ubHkuCi0gICAgaWYgKHJlc29sdmVkTGluZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVh
a3BvaW50LmNvbHVtbikgeworICAgIGlmIChyZXNvbHZlZExpbmUgPT0gcHJvdmlkZXJTdGFydExp
bmUgJiYgYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkgewogICAgICAgICBpZiAocHJvdmlkZXJT
dGFydENvbHVtbikKICAgICAgICAgICAgIHJlc29sdmVkQ29sdW1uICs9IHByb3ZpZGVyU3RhcnRD
b2x1bW47CiAgICAgfQogCi0gICAgYnJlYWtwb2ludC5saW5lID0gcmVzb2x2ZWRMaW5lIC0gMTsK
LSAgICBicmVha3BvaW50LmNvbHVtbiA9IHJlc29sdmVkQ29sdW1uOwotICAgIGJyZWFrcG9pbnQu
cmVzb2x2ZWQgPSB0cnVlOworICAgIHJldHVybiBicmVha3BvaW50LnJlc29sdmUocmVzb2x2ZWRM
aW5lIC0gMSwgcmVzb2x2ZWRDb2x1bW4pOwogfQogCi1CcmVha3BvaW50SUQgRGVidWdnZXI6OnNl
dEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgYm9vbCYgZXhpc3RpbmcpCitib29s
IERlYnVnZ2VyOjpzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAg
QVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2ZWQpOwotICAgIEFTU0VSVChicmVha3BvaW50LnNvdXJj
ZUlEICE9IG5vU291cmNlSUQpOworICAgIEFTU0VSVChicmVha3BvaW50LmlzUmVzb2x2ZWQoKSk7
CiAKLSAgICBTb3VyY2VJRCBzb3VyY2VJRCA9IGJyZWFrcG9pbnQuc291cmNlSUQ7Ci0gICAgdW5z
aWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGluZTsKLSAgICB1bnNpZ25lZCBjb2x1bW4gPSBicmVh
a3BvaW50LmNvbHVtbjsKKyAgICBhdXRvJiBicmVha3BvaW50c0ZvckxpbmUgPSBtX2JyZWFrcG9p
bnRzRm9yU291cmNlSUQuZW5zdXJlKGJyZWFrcG9pbnQuc291cmNlSUQoKSwgW10geworICAgICAg
ICByZXR1cm4gTGluZVRvQnJlYWtwb2ludHNNYXAoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7
CiAKLSAgICBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJ
RFRvQnJlYWtwb2ludHMuZmluZChicmVha3BvaW50LnNvdXJjZUlEKTsKLSAgICBpZiAoaXQgPT0g
bV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIGl0ID0gbV9zb3VyY2VJRFRv
QnJlYWtwb2ludHMuc2V0KHNvdXJjZUlELCBMaW5lVG9CcmVha3BvaW50c01hcCgpKS5pdGVyYXRv
cjsKKyAgICBhdXRvJiBicmVha3BvaW50cyA9IGJyZWFrcG9pbnRzRm9yTGluZS5lbnN1cmUoYnJl
YWtwb2ludC5saW5lTnVtYmVyKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIEJyZWFrcG9pbnRzVmVj
dG9yKCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgTGluZVRvQnJlYWtwb2ludHNN
YXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQobGluZSk7Ci0gICAgaWYgKGJy
ZWFrc0l0ID09IGl0LT52YWx1ZS5lbmQoKSkKLSAgICAgICAgYnJlYWtzSXQgPSBpdC0+dmFsdWUu
c2V0KGxpbmUsIGFkb3B0UmVmKG5ldyBCcmVha3BvaW50c0xpc3QpKS5pdGVyYXRvcjsKLQotICAg
IEJyZWFrcG9pbnRzTGlzdCYgYnJlYWtwb2ludHMgPSAqYnJlYWtzSXQtPnZhbHVlOwotICAgIGZv
ciAoQnJlYWtwb2ludCogY3VycmVudCA9IGJyZWFrcG9pbnRzLmhlYWQoKTsgY3VycmVudDsgY3Vy
cmVudCA9IGN1cnJlbnQtPm5leHQoKSkgewotICAgICAgICBpZiAoY3VycmVudC0+Y29sdW1uID09
IGNvbHVtbikgeworICAgIGZvciAoYXV0byYgZXhpc3RpbmdCcmVha3BvaW50IDogYnJlYWtwb2lu
dHMpIHsKKyAgICAgICAgaWYgKGV4aXN0aW5nQnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCkgPT0g
YnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkgeworICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5n
QnJlYWtwb2ludC0+aWQoKSAhPSBicmVha3BvaW50LmlkKCkpOwogICAgICAgICAgICAgLy8gRm91
bmQgZXhpc3RpbmcgYnJlYWtwb2ludC4gRG8gbm90IGNyZWF0ZSBhIGR1cGxpY2F0ZSBhdCB0aGlz
IGxvY2F0aW9uLgotICAgICAgICAgICAgZXhpc3RpbmcgPSB0cnVlOwotICAgICAgICAgICAgcmV0
dXJuIGN1cnJlbnQtPmlkOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgZXhpc3RpbmcgPSBmYWxzZTsKLSAgICBCcmVha3BvaW50SUQgaWQgPSArK21f
dG9wQnJlYWtwb2ludElEOwotICAgIFJFTEVBU0VfQVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElE
KTsKKyAgICBicmVha3BvaW50cy5hcHBlbmQobWFrZVJlZihicmVha3BvaW50KSk7CiAKLSAgICBi
cmVha3BvaW50LmlkID0gaWQ7CisgICAgbV9icmVha3BvaW50cy5hZGQobWFrZVJlZihicmVha3Bv
aW50KSk7CiAKLSAgICBCcmVha3BvaW50KiBuZXdCcmVha3BvaW50ID0gbmV3IEJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7Ci0gICAgYnJlYWtwb2ludHMuYXBwZW5kKG5ld0JyZWFrcG9pbnQpOwotICAg
IG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50LnNldChpZCwgbmV3QnJlYWtwb2ludCk7CisgICAg
dG9nZ2xlQnJlYWtwb2ludChicmVha3BvaW50LCBCcmVha3BvaW50RW5hYmxlZCk7CiAKLSAgICB0
b2dnbGVCcmVha3BvaW50KCpuZXdCcmVha3BvaW50LCBCcmVha3BvaW50RW5hYmxlZCk7Ci0KLSAg
ICByZXR1cm4gaWQ7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRGVidWdnZXI6OnJlbW92
ZUJyZWFrcG9pbnQoQnJlYWtwb2ludElEIGlkKQorYm9vbCBEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtw
b2ludChCcmVha3BvaW50JiBicmVha3BvaW50KQogewotICAgIEFTU0VSVChpZCAhPSBub0JyZWFr
cG9pbnRJRCk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQuaXNSZXNvbHZlZCgpKTsKIAotICAgIEJy
ZWFrcG9pbnRJRFRvQnJlYWtwb2ludE1hcDo6aXRlcmF0b3IgaWRJdCA9IG1fYnJlYWtwb2ludElE
VG9CcmVha3BvaW50LmZpbmQoaWQpOwotICAgIEFTU0VSVChpZEl0ICE9IG1fYnJlYWtwb2ludElE
VG9CcmVha3BvaW50LmVuZCgpKTsKLSAgICBCcmVha3BvaW50KiBicmVha3BvaW50ID0gaWRJdC0+
dmFsdWU7CisgICAgYXV0byBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9IG1fYnJlYWtwb2lu
dHNGb3JTb3VyY2VJRC5maW5kKGJyZWFrcG9pbnQuc291cmNlSUQoKSk7CisgICAgaWYgKGJyZWFr
cG9pbnRzRm9yTGluZUl0ZXJhdG9yID09IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgU291cmNlSUQgc291cmNlSUQgPSBicmVha3Bv
aW50LT5zb3VyY2VJRDsKLSAgICBBU1NFUlQoc291cmNlSUQpOwotICAgIFNvdXJjZUlEVG9CcmVh
a3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5maW5kKHNv
dXJjZUlEKTsKLSAgICBBU1NFUlQoaXQgIT0gbV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkp
OwotICAgIExpbmVUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT52YWx1
ZS5maW5kKGJyZWFrcG9pbnQtPmxpbmUpOwotICAgIEFTU0VSVChicmVha3NJdCAhPSBpdC0+dmFs
dWUuZW5kKCkpOworICAgIGF1dG8gYnJlYWtwb2ludHNJdGVyYXRvciA9IGJyZWFrcG9pbnRzRm9y
TGluZUl0ZXJhdG9yLT52YWx1ZS5maW5kKGJyZWFrcG9pbnQubGluZU51bWJlcigpKTsKKyAgICBp
ZiAoYnJlYWtwb2ludHNJdGVyYXRvciA9PSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFs
dWUuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHRvZ2dsZUJyZWFrcG9pbnQo
KmJyZWFrcG9pbnQsIEJyZWFrcG9pbnREaXNhYmxlZCk7CisgICAgdG9nZ2xlQnJlYWtwb2ludChi
cmVha3BvaW50LCBCcmVha3BvaW50RGlzYWJsZWQpOworCisgICAgYXV0byYgYnJlYWtwb2ludHMg
PSBicmVha3BvaW50c0l0ZXJhdG9yLT52YWx1ZTsKIAotICAgIEJyZWFrcG9pbnRzTGlzdCYgYnJl
YWtwb2ludHMgPSAqYnJlYWtzSXQtPnZhbHVlOwogI2lmIEFTU0VSVF9FTkFCTEVECiAgICAgYm9v
bCBmb3VuZCA9IGZhbHNlOwotICAgIGZvciAoQnJlYWtwb2ludCogY3VycmVudCA9IGJyZWFrcG9p
bnRzLmhlYWQoKTsgY3VycmVudCAmJiAhZm91bmQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkp
IHsKLSAgICAgICAgaWYgKGN1cnJlbnQtPmlkID09IGJyZWFrcG9pbnQtPmlkKQorICAgIGZvciAo
YXV0byYgZXhpc3RpbmdCcmVha3BvaW50IDogYnJlYWtwb2ludHMpIHsKKyAgICAgICAgaWYgKGV4
aXN0aW5nQnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCkgPT0gYnJlYWtwb2ludC5jb2x1bW5OdW1i
ZXIoKSkgeworICAgICAgICAgICAgQVNTRVJUKGV4aXN0aW5nQnJlYWtwb2ludC0+aWQoKSA9PSBi
cmVha3BvaW50LmlkKCkpOworICAgICAgICAgICAgQVNTRVJUKCFmb3VuZCk7CiAgICAgICAgICAg
ICBmb3VuZCA9IHRydWU7CisgICAgICAgIH0KICAgICB9Ci0gICAgQVNTRVJUKGZvdW5kKTsKICNl
bmRpZiAvLyBBU1NFUlRfRU5BQkxFRAogCi0gICAgbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQu
cmVtb3ZlKGlkSXQpOwotICAgIGJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50KTsKLSAgICBk
ZWxldGUgYnJlYWtwb2ludDsKKyAgICBhdXRvIHJlbW92ZWQgPSBtX2JyZWFrcG9pbnRzLnJlbW92
ZShicmVha3BvaW50KTsKKyAgICByZW1vdmVkIHw9ICFicmVha3BvaW50cy5yZW1vdmVBbGxNYXRj
aGluZyhbJl0gKGNvbnN0IFJlZjxCcmVha3BvaW50PiYgZXhpc3RpbmdCcmVha3BvaW50KSB7Cisg
ICAgICAgIHJldHVybiAmYnJlYWtwb2ludCA9PSBleGlzdGluZ0JyZWFrcG9pbnQucHRyKCk7Cisg
ICAgfSk7CiAKICAgICBpZiAoYnJlYWtwb2ludHMuaXNFbXB0eSgpKSB7Ci0gICAgICAgIGl0LT52
YWx1ZS5yZW1vdmUoYnJlYWtzSXQpOwotICAgICAgICBpZiAoaXQtPnZhbHVlLmlzRW1wdHkoKSkK
LSAgICAgICAgICAgIG1fc291cmNlSURUb0JyZWFrcG9pbnRzLnJlbW92ZShpdCk7CisgICAgICAg
IGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5yZW1vdmUoYnJlYWtwb2ludHNJdGVy
YXRvcik7CisgICAgICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgbV9icmVha3BvaW50c0ZvclNvdXJjZUlELnJlbW92ZShicmVh
a3BvaW50c0ZvckxpbmVJdGVyYXRvcik7CiAgICAgfQorCisgICAgcmV0dXJuIHJlbW92ZWQ7CiB9
CiAKLWJvb2wgRGVidWdnZXI6Omhhc0JyZWFrcG9pbnQoU291cmNlSUQgc291cmNlSUQsIGNvbnN0
IFRleHRQb3NpdGlvbiYgcG9zaXRpb24sIEJyZWFrcG9pbnQgKmhpdEJyZWFrcG9pbnQpCitSZWZQ
dHI8QnJlYWtwb2ludD4gRGVidWdnZXI6OmRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU291cmNlSUQgc291cmNlSUQsIGNvbnN0IFRleHRQb3NpdGlvbiYgcG9z
aXRpb24pCiB7CiAgICAgaWYgKCFtX2JyZWFrcG9pbnRzQWN0aXZhdGVkKQotICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAgU291cmNlSURUb0JyZWFr
cG9pbnRzTWFwOjpjb25zdF9pdGVyYXRvciBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmZp
bmQoc291cmNlSUQpOwotICAgIGlmIChpdCA9PSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gYnJlYWtwb2ludHNGb3JMaW5lSXRl
cmF0b3IgPSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZmluZChzb3VyY2VJRCk7CisgICAgaWYg
KGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yID09IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5l
bmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICB1bnNpZ25lZCBsaW5lID0gcG9z
aXRpb24ubV9saW5lLnplcm9CYXNlZEludCgpOwogICAgIHVuc2lnbmVkIGNvbHVtbiA9IHBvc2l0
aW9uLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwogICAgIAotICAgIExpbmVUb0JyZWFrcG9pbnRz
TWFwOjpjb25zdF9pdGVyYXRvciBicmVha3NJdCA9IGl0LT52YWx1ZS5maW5kKGxpbmUpOwotICAg
IGlmIChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBhdXRvIGJyZWFrcG9pbnRzSXRlcmF0b3IgPSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRv
ci0+dmFsdWUuZmluZChsaW5lKTsKKyAgICBpZiAoYnJlYWtwb2ludHNJdGVyYXRvciA9PSBicmVh
a3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxs
cHRyOworCisgICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogYnJlYWtwb2ludHNJdGVyYXRvci0+
dmFsdWUpIHsKKyAgICAgICAgdW5zaWduZWQgYnJlYWtMaW5lID0gYnJlYWtwb2ludC0+bGluZU51
bWJlcigpOworICAgICAgICB1bnNpZ25lZCBicmVha0NvbHVtbiA9IGJyZWFrcG9pbnQtPmNvbHVt
bk51bWJlcigpOwogCi0gICAgYm9vbCBoaXQgPSBmYWxzZTsKLSAgICBjb25zdCBCcmVha3BvaW50
c0xpc3QmIGJyZWFrcG9pbnRzID0gKmJyZWFrc0l0LT52YWx1ZTsKLSAgICBCcmVha3BvaW50KiBi
cmVha3BvaW50OwotICAgIGZvciAoYnJlYWtwb2ludCA9IGJyZWFrcG9pbnRzLmhlYWQoKTsgYnJl
YWtwb2ludDsgYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQtPm5leHQoKSkgewotICAgICAgICB1bnNp
Z25lZCBicmVha0xpbmUgPSBicmVha3BvaW50LT5saW5lOwotICAgICAgICB1bnNpZ25lZCBicmVh
a0NvbHVtbiA9IGJyZWFrcG9pbnQtPmNvbHVtbjsKICAgICAgICAgLy8gU2luY2UgZnJvbnRlbmQg
dHJ1bmNhdGVzIHRoZSBpbmRlbnQsIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gYSBsaW5lIG11c3Qg
bWF0Y2ggdGhlIGJyZWFrcG9pbnQgKGxpbmUsMCkuCiAgICAgICAgIEFTU0VSVCh0aGlzID09IG1f
Y3VycmVudENhbGxGcmFtZS0+Y29kZUJsb2NrKCktPmdsb2JhbE9iamVjdCgpLT5kZWJ1Z2dlcigp
KTsKLSAgICAgICAgaWYgKChsaW5lICE9IG1fbGFzdEV4ZWN1dGVkTGluZSAmJiBsaW5lID09IGJy
ZWFrTGluZSAmJiAhYnJlYWtDb2x1bW4pCi0gICAgICAgICAgICB8fCAobGluZSA9PSBicmVha0xp
bmUgJiYgY29sdW1uID09IGJyZWFrQ29sdW1uKSkgewotICAgICAgICAgICAgaGl0ID0gdHJ1ZTsK
KyAgICAgICAgaWYgKChsaW5lICE9IG1fbGFzdEV4ZWN1dGVkTGluZSAmJiBsaW5lID09IGJyZWFr
TGluZSAmJiAhYnJlYWtDb2x1bW4pIHx8IChsaW5lID09IGJyZWFrTGluZSAmJiBjb2x1bW4gPT0g
YnJlYWtDb2x1bW4pKSB7CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC0+c2hvdWxkUGF1c2Uo
KnRoaXMsIGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQu
Y29weVJlZigpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYg
KCFoaXQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChoaXRCcmVha3BvaW50KQot
ICAgICAgICAqaGl0QnJlYWtwb2ludCA9ICpicmVha3BvaW50OwotCi0gICAgYnJlYWtwb2ludC0+
aGl0Q291bnQrKzsKLSAgICBpZiAoYnJlYWtwb2ludC0+aWdub3JlQ291bnQgPj0gYnJlYWtwb2lu
dC0+aGl0Q291bnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGlmIChicmVha3BvaW50
LT5jb25kaXRpb24uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIC8vIFdl
IGNhbm5vdCBzdG9wIGluIHRoZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgY29uZGl0aW9uIGNv
ZGUsCi0gICAgLy8gc28gbWFrZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBpcyBhbHJlYWR5
IHBhdXNlZC4KLSAgICBUZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7Ci0K
LSAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICBEZWJ1Z2dlckNhbGxGcmFt
ZSYgZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICBK
U09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwotICAgIEpTVmFsdWUgcmVz
dWx0ID0gZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYnJlYWtw
b2ludC0+Y29uZGl0aW9uLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKLQotICAg
IC8vIFdlIGNhbiBsb3NlIHRoZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgSmF2YVNjcmlwdC4K
LSAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IG1fY3VycmVudENhbGxGcmFtZS0+bGV4
aWNhbEdsb2JhbE9iamVjdChtX3ZtKTsKLSAgICBpZiAoZXhjZXB0aW9uKSB7Ci0gICAgICAgIC8v
IEFuIGVycm9uZW91cyBjb25kaXRpb24gY291bnRzIGFzICJmYWxzZSIuCi0gICAgICAgIGhhbmRs
ZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0LnRvQm9v
bGVhbihnbG9iYWxPYmplY3QpOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBjbGFzcyBEZWJ1
Z2dlcjo6Q2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvciB7CkBAIC01MTksMTQg
KzU2Miw5MyBAQCB2b2lkIERlYnVnZ2VyOjpjbGVhckJyZWFrcG9pbnRzKCkKIHsKICAgICBtX3Zt
LmhlYXAuY29tcGxldGVBbGxKSVRQbGFucygpOwogCi0gICAgbV90b3BCcmVha3BvaW50SUQgPSBu
b0JyZWFrcG9pbnRJRDsKLSAgICBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5jbGVhcigpOwot
ICAgIG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50c0Zv
clNvdXJjZUlELmNsZWFyKCk7CisgICAgbV9icmVha3BvaW50cy5jbGVhcigpOworICAgIG1fc3Bl
Y2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOwogCiAgICAgQ2xlYXJDb2RlQmxvY2tEZWJ1Z2dlclJl
cXVlc3RzRnVuY3RvciBmdW5jdG9yKHRoaXMpOwogICAgIG1fdm0uaGVhcC5mb3JFYWNoQ29kZUJs
b2NrKGZ1bmN0b3IpOwogfQogCitib29sIERlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRDb25k
aXRpb24oQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCkKK3sKKyAgICBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IGJyZWFrcG9pbnQuY29uZGl0aW9u
KCk7CisgICAgaWYgKGNvbmRpdGlvbi5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiB0cnVlOwor
CisgICAgLy8gV2UgY2Fubm90IHN0b3AgaW4gdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBj
b25kaXRpb24gY29kZSwKKyAgICAvLyBzbyBtYWtlIGl0IGxvb2tzIGxpa2UgdGhlIGRlYnVnZ2Vy
IGlzIGFscmVhZHkgcGF1c2VkLgorICAgIFRlbXBvcmFyeVBhdXNlZFN0YXRlIHBhdXNlZFN0YXRl
KCp0aGlzKTsKKworICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgIERlYnVn
Z2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFt
ZSgpOworICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7CisgICAg
SlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihjb25kaXRpb24sIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOworCisgICAg
Ly8gV2UgY2FuIGxvc2UgdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBKYXZhU2NyaXB0Lgor
ICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAg
ICBpZiAoZXhjZXB0aW9uKSB7CisgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3Qs
IGV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4g
cmVzdWx0LnRvQm9vbGVhbihnbG9iYWxPYmplY3QpOworfQorCit2b2lkIERlYnVnZ2VyOjpldmFs
dWF0ZUJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgQVNTRVJUKG1faXNQYXVzZWQpOworICAgIEFTU0VS
VChpc0F0dGFjaGVkKGdsb2JhbE9iamVjdCkpOworCisgICAgbV9jdXJyZW50UHJvYmVCYXRjaElk
Kys7CisKKyAgICBmb3IgKGF1dG8mIGFjdGlvbiA6IGJyZWFrcG9pbnQuYWN0aW9ucygpKSB7Cisg
ICAgICAgIGF1dG8mIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
KCk7CisKKyAgICAgICAgc3dpdGNoIChhY3Rpb24udHlwZSkgeworICAgICAgICBjYXNlIEJyZWFr
cG9pbnQ6OkFjdGlvbjo6VHlwZTo6TG9nOgorICAgICAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRv
T2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgICAgICAgICAgb2Jz
ZXJ2ZXIuYnJlYWtwb2ludEFjdGlvbkxvZyhkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3Qo
KSwgYWN0aW9uLmRhdGEpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6RXZhbHVhdGU6IHsKKyAgICAg
ICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgICAgICAgICAgSlNPYmpl
Y3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGRlYnVnZ2Vy
Q2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGFjdGlvbi5kYXRhLCBzY29wZUV4
dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisg
ICAgICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLmdsb2JhbE9i
amVjdCgpLCBleGNlcHRpb24pOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAg
ICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6U291bmQ6CisgICAgICAgICAgICBk
aXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAg
ICAgICAgICAgICAgICBvYnNlcnZlci5icmVha3BvaW50QWN0aW9uU291bmQoYWN0aW9uLmlkKTsK
KyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCcmVh
a3BvaW50OjpBY3Rpb246OlR5cGU6OlByb2JlOiB7CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9i
amVjdCA9IG51bGxwdHI7CisgICAgICAgICAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2Fs
bEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGFjdGlvbi5kYXRhLCBzY29wZUV4dGVu
c2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGRlYnVnZ2VyR2xvYmFsT2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCk7
CisgICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbihkZWJ1Z2dlckdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKKworICAgICAgICAgICAgZGlz
cGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAg
ICAgICAgICAgICAgb2JzZXJ2ZXIuYnJlYWtwb2ludEFjdGlvblByb2JlKGRlYnVnZ2VyR2xvYmFs
T2JqZWN0LCBhY3Rpb24uaWQsIG1fY3VycmVudFByb2JlQmF0Y2hJZCwgbV9uZXh0UHJvYmVTYW1w
bGVJZCsrLCBleGNlcHRpb24gPyBleGNlcHRpb24tPnZhbHVlKCkgOiByZXN1bHQpOworICAgICAg
ICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICB9CisKKyAg
ICAgICAgaWYgKCFpc0F0dGFjaGVkKGdsb2JhbE9iamVjdCkpCisgICAgICAgICAgICByZXR1cm47
CisgICAgfQorfQorCiBjbGFzcyBEZWJ1Z2dlcjo6Q2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3Rv
ciB7CiBwdWJsaWM6CiAgICAgQ2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVuY3RvcihKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQpAQCAtNTcxLDExICs2OTMsMzUgQEAgdm9pZCBEZWJ1Z2dlcjo6
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNlKQog
ICAgIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHBhdXNlOwogfQogCi12b2lkIERlYnVnZ2Vy
OjpzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sIHBhdXNlKQordm9pZCBEZWJ1Z2dlcjo6c2No
ZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCkKIHsKLSAgICBtX3BhdXNlQXROZXh0T3Bwb3J0
dW5pdHkgPSBwYXVzZTsKLSAgICBpZiAocGF1c2UpCi0gICAgICAgIHNldFN0ZXBwaW5nTW9kZShT
dGVwcGluZ01vZGVFbmFibGVkKTsKKyAgICBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgPSB0cnVl
OworCisgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOworfQorCit2b2lk
IERlYnVnZ2VyOjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCkKK3sKKyAgICBtX3BhdXNl
QXROZXh0T3Bwb3J0dW5pdHkgPSBmYWxzZTsKK30KKworYm9vbCBEZWJ1Z2dlcjo6c2NoZWR1bGVQ
YXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAg
aWYgKG1fc3BlY2lhbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1f
c3BlY2lhbEJyZWFrcG9pbnQgPSBtYWtlUmVmKGJyZWFrcG9pbnQpOworICAgIHNldFN0ZXBwaW5n
TW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBE
ZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVh
a3BvaW50KQoreworICAgIGlmICgmYnJlYWtwb2ludCAhPSBtX3NwZWNpYWxCcmVha3BvaW50KQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbnVsbHB0
cjsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6YnJlYWtQcm9ncmFtKCkK
QEAgLTU5OSw3ICs3NDUsNyBAQCB2b2lkIERlYnVnZ2VyOjpjb250aW51ZVByb2dyYW0oKQogICAg
IGlmICghbV9pc1BhdXNlZCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbm90aWZ5RG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50
cyA9IHRydWU7CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBOZXh0RXhwcmVzc2lvbigpCkBAIC02
MTAsNyArNzU2LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcE5leHRFeHByZXNzaW9uKCkKICAgICBt
X3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWU7CiAgICAgbV9wYXVzZU9uU3Rl
cE5leHQgPSB0cnVlOwogICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsK
LSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6c3RlcElu
dG9TdGF0ZW1lbnQoKQpAQCAtNjIwLDcgKzc2Niw3IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBJbnRv
U3RhdGVtZW50KCkKIAogICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHRydWU7CiAgICAg
c2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9j
ZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVu
dHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCgpCkBAIC02
MzAsNyArNzc2LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQogCiAgICAg
bV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lOwogICAgIHNldFN0ZXBwaW5n
TW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVn
Z2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsK
IH0KIAogdm9pZCBEZWJ1Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24oKQpAQCAtNjQyLDcgKzc4OCw3
IEBAIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRPZkZ1bmN0aW9uKCkKICAgICBtX3BhdXNlT25DYWxs
RnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWUgPyBtX2N1cnJlbnRDYWxsRnJhbWUtPmNhbGxlckZy
YW1lKHRvcEVudHJ5RnJhbWUpIDogbnVsbHB0cjsKICAgICBtX3BhdXNlT25TdGVwT3V0ID0gdHJ1
ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0gICAgbm90aWZ5
RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1
Z2dlckV2ZW50cyA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSlNHbG9iYWxPYmplY3QqIGxl
eGljYWxHbG9iYWxPYmplY3RGb3JDYWxsRnJhbWUoVk0mIHZtLCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKQEAgLTcwMSwxMCArODQ3LDE3IEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogICAgIGJvb2wgZGlkUGF1c2VGb3JTdGVwID0g
cGF1c2VOb3c7CiAKLSAgICBCcmVha3BvaW50IGJyZWFrcG9pbnQ7CiAgICAgVGV4dFBvc2l0aW9u
IHBvc2l0aW9uID0gRGVidWdnZXJDYWxsRnJhbWU6OnBvc2l0aW9uRm9yQ2FsbEZyYW1lKHZtLCBt
X2N1cnJlbnRDYWxsRnJhbWUpOwotICAgIGJvb2wgZGlkSGl0QnJlYWtwb2ludCA9IGhhc0JyZWFr
cG9pbnQoc291cmNlSUQsIHBvc2l0aW9uLCAmYnJlYWtwb2ludCk7Ci0gICAgcGF1c2VOb3cgfD0g
ZGlkSGl0QnJlYWtwb2ludDsKKworICAgIGF1dG8gYnJlYWtwb2ludCA9IGRpZEhpdEJyZWFrcG9p
bnQoZ2xvYmFsT2JqZWN0LCBzb3VyY2VJRCwgcG9zaXRpb24pOworICAgIGlmIChicmVha3BvaW50
KQorICAgICAgICBwYXVzZU5vdyA9IHRydWU7CisKKyAgICAvLyBTcGVjaWFsIGJyZWFrcG9pbnRz
IGFyZSBvbmx5IGdpdmVuIG9uZSBvcHBvcnR1bml0eSB0byBwYXVzZS4KKyAgICBhdXRvIHNwZWNp
YWxCcmVha3BvaW50ID0gV1RGTW92ZShtX3NwZWNpYWxCcmVha3BvaW50KTsKKyAgICBpZiAoc3Bl
Y2lhbEJyZWFrcG9pbnQgJiYgc3BlY2lhbEJyZWFrcG9pbnQtPnNob3VsZFBhdXNlKCp0aGlzLCBn
bG9iYWxPYmplY3QpKQorICAgICAgICBwYXVzZU5vdyA9IHRydWU7CisKICAgICBtX2xhc3RFeGVj
dXRlZExpbmUgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CiAgICAgaWYgKCFwYXVz
ZU5vdykKICAgICAgICAgcmV0dXJuOwpAQCAtNzE2LDI0ICs4NjksNDUgQEAgdm9pZCBEZWJ1Z2dl
cjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIC8vIHJl
c2V0aW5nIHRoZSBwYXVzZSBzdGF0ZSBiZWZvcmUgZXhlY3V0aW5nIGFueSBicmVha3BvaW50IGFj
dGlvbnMuCiAgICAgVGVtcG9yYXJ5UGF1c2VkU3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOwogCi0g
ICAgaWYgKGRpZEhpdEJyZWFrcG9pbnQpIHsKLSAgICAgICAgaGFuZGxlQnJlYWtwb2ludEhpdChn
bG9iYWxPYmplY3QsIGJyZWFrcG9pbnQpOworICAgIGlmIChicmVha3BvaW50IHx8IHNwZWNpYWxC
cmVha3BvaW50KSB7CiAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGUgYWN0aW9ucyBjYW4gcG90ZW50
aWFsbHkgc3RvcCB0aGUgZGVidWdnZXIsIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdAogICAgICAg
ICAvLyB3ZSBzdGlsbCBoYXZlIGEgY3VycmVudCBjYWxsIGZyYW1lIHdoZW4gd2UgZ2V0IGJhY2su
Ci0gICAgICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQotICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmIChicmVha3BvaW50LmF1dG9Db250aW51ZSkgeworICAgICAgICBib29sIGF1
dG9Db250aW51ZSA9IGZhbHNlOworCisgICAgICAgIGlmIChicmVha3BvaW50KSB7CisgICAgICAg
ICAgICBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKCpicmVha3BvaW50LCBnbG9iYWxPYmplY3Qp
OworCisgICAgICAgICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LT5pc0F1dG9Db250aW51ZSgp
KQorICAgICAgICAgICAgICAgIGF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgIH0KKworICAg
ICAgICBpZiAoc3BlY2lhbEJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGV2YWx1YXRlQnJlYWtw
b2ludEFjdGlvbnMoKnNwZWNpYWxCcmVha3BvaW50LCBnbG9iYWxPYmplY3QpOworCisgICAgICAg
ICAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgICAgIGlmIChzcGVjaWFsQnJlYWtwb2ludC0+aXNBdXRvQ29udGludWUoKSkKKyAg
ICAgICAgICAgICAgICBhdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
aWYgKGF1dG9Db250aW51ZSkgewogICAgICAgICAgICAgaWYgKCFkaWRQYXVzZUZvclN0ZXApCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgZGlkSGl0QnJlYWtwb2ludCA9IGZh
bHNlOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1fcGF1c2luZ0JyZWFrcG9pbnRJRCA9
IGJyZWFrcG9pbnQuaWQ7CisKKyAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBudWxscHRyOworICAg
ICAgICAgICAgc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOworICAgICAgICB9IGVsc2UgaWYg
KGJyZWFrcG9pbnQpCisgICAgICAgICAgICBtX3BhdXNpbmdCcmVha3BvaW50SUQgPSBicmVha3Bv
aW50LT5pZCgpOwogICAgIH0KIAogICAgIGlmIChibGFja2JveFR5cGVJdGVyYXRvciAhPSBtX2Js
YWNrYm94ZWRTY3JpcHRzLmVuZCgpICYmIGJsYWNrYm94VHlwZUl0ZXJhdG9yLT52YWx1ZSA9PSBC
bGFja2JveFR5cGU6OkRlZmVycmVkKSB7CiAgICAgICAgIG1fYWZ0ZXJCbGFja2JveGVkU2NyaXB0
ID0gdHJ1ZTsKLSAgICAgICAgc2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQodHJ1ZSk7CisgICAgICAg
IHNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC03NDEsNyArOTE1LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgICAgICBhdXRvIHJlYXNvbiA9IG1fcmVhc29u
Rm9yUGF1c2U7CiAgICAgICAgIGlmIChhZnRlckJsYWNrYm94ZWRTY3JpcHQpCiAgICAgICAgICAg
ICByZWFzb24gPSBQYXVzZWRBZnRlckJsYWNrYm94ZWRTY3JpcHQ7Ci0gICAgICAgIGVsc2UgaWYg
KGRpZEhpdEJyZWFrcG9pbnQpCisgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICByZWFzb24gPSBQYXVzZWRGb3JCcmVha3BvaW50OwogICAgICAgICBQYXVzZVJlYXNvbkRl
Y2xhcmF0aW9uIHJhdXNlUmVhc29uRGVjbGFyYXRpb24oKnRoaXMsIHJlYXNvbik7CiAKQEAgLTc1
MSwxMiArOTI1LDQ1IEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogICAgIG1fcGF1c2luZ0JyZWFrcG9pbnRJRCA9IG5vQnJlYWtw
b2ludElEOwogCi0gICAgaWYgKCFtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgJiYgIW1fcGF1c2VP
bkNhbGxGcmFtZSkgeworICAgIGlmICghbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ICYmICFtX3Bh
dXNlT25DYWxsRnJhbWUgJiYgIW1fc3BlY2lhbEJyZWFrcG9pbnQpIHsKICAgICAgICAgc2V0U3Rl
cHBpbmdNb2RlKFN0ZXBwaW5nTW9kZURpc2FibGVkKTsKICAgICAgICAgbV9jdXJyZW50Q2FsbEZy
YW1lID0gbnVsbHB0cjsKICAgICB9CiB9CiAKK3ZvaWQgRGVidWdnZXI6OmhhbmRsZVBhdXNlKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFJlYXNvbkZvclBhdXNlKQoreworICAgIGRpc3Bh
dGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAg
ICBBU1NFUlQoaXNQYXVzZWQoKSk7CisgICAgICAgIG9ic2VydmVyLmRpZFBhdXNlKGdsb2JhbE9i
amVjdCwgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCksIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUo
Z2xvYmFsT2JqZWN0KSk7CisgICAgfSk7CisKKyAgICBkaWRQYXVzZShnbG9iYWxPYmplY3QpOwor
CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gZmFsc2U7CisgICAgcnVuRXZl
bnRMb29wV2hpbGVQYXVzZWQoKTsKKworICAgIGRpZENvbnRpbnVlKGdsb2JhbE9iamVjdCk7CisK
KyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIp
IHsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkQ29udGludWUoKTsKKyAgICB9KTsKK30KKworSlNDOjpK
U1ZhbHVlIERlYnVnZ2VyOjpleGNlcHRpb25PckNhdWdodFZhbHVlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBpZiAocmVhc29uRm9yUGF1c2UoKSA9PSBQYXVzZWRG
b3JFeGNlcHRpb24pCisgICAgICAgIHJldHVybiBjdXJyZW50RXhjZXB0aW9uKCk7CisKKyAgICBm
b3IgKFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFtZT4gZnJhbWUgPSAmY3VycmVudERlYnVnZ2VyQ2Fs
bEZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT5jYWxsZXJGcmFtZSgpKSB7CisgICAgICAg
IERlYnVnZ2VyU2NvcGUmIHNjb3BlID0gKmZyYW1lLT5zY29wZSgpOworICAgICAgICBpZiAoc2Nv
cGUuaXNDYXRjaFNjb3BlKCkpCisgICAgICAgICAgICByZXR1cm4gc2NvcGUuY2F1Z2h0VmFsdWUo
Z2xvYmFsT2JqZWN0KTsKKyAgICB9CisKKyAgICByZXR1cm4geyB9OworfQorCiB2b2lkIERlYnVn
Z2VyOjpleGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUsIEpTVmFsdWUgZXhjZXB0aW9uLCBib29sIGhhc0NhdGNoSGFuZGxlcikKIHsKICAg
ICBpZiAobV9pc1BhdXNlZCkKQEAgLTgwNyw4ICsxMDE0LDggQEAgdm9pZCBEZWJ1Z2dlcjo6YXRF
eHByZXNzaW9uKENhbGxGcmFtZSogY2FsbEZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gT25seSBwYXVzZSBhdCB0aGUgbmV4dCBleHByZXNzaW9uIHdpdGggc3RlcC1pbiwg
c3RlcC1uZXh0LCBhbmQgc3RlcC1vdXQuCi0gICAgYm9vbCBzaG91bGRBdHRlbXB0UGF1c2UgPSBt
X3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgfHwgbV9wYXVzZU9uU3RlcE5leHQgfHwgbV9wYXVzZU9u
U3RlcE91dDsKKyAgICAvLyBPbmx5IHBhdXNlIGF0IHRoZSBuZXh0IGV4cHJlc3Npb24gZm9yIHN0
ZXAtaW4sIHN0ZXAtbmV4dCwgc3RlcC1vdXQsIG9yIHNwZWNpYWwgYnJlYWtwb2ludHMuCisgICAg
Ym9vbCBzaG91bGRBdHRlbXB0UGF1c2UgPSBtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgfHwgbV9w
YXVzZU9uU3RlcE5leHQgfHwgbV9wYXVzZU9uU3RlcE91dCB8fCBtX3NwZWNpYWxCcmVha3BvaW50
OwogCiAgICAgUGF1c2VSZWFzb25EZWNsYXJhdGlvbiByZWFzb24oKnRoaXMsIFBhdXNlZEF0RXhw
cmVzc2lvbik7CiAgICAgdXBkYXRlQ2FsbEZyYW1lKGxleGljYWxHbG9iYWxPYmplY3RGb3JDYWxs
RnJhbWUobV92bSwgY2FsbEZyYW1lKSwgY2FsbEZyYW1lLCBzaG91bGRBdHRlbXB0UGF1c2UgPyBB
dHRlbXB0UGF1c2UgOiBOb1BhdXNlKTsKQEAgLTkxNyw2ICsxMTI0LDcgQEAgdm9pZCBEZWJ1Z2dl
cjo6Y2xlYXJOZXh0UGF1c2VTdGF0ZSgpCiAgICAgbV9wYXVzZU9uU3RlcE5leHQgPSBmYWxzZTsK
ICAgICBtX3BhdXNlT25TdGVwT3V0ID0gZmFsc2U7CiAgICAgbV9hZnRlckJsYWNrYm94ZWRTY3Jp
cHQgPSBmYWxzZTsKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbnVsbHB0cjsKIH0KIAogdm9p
ZCBEZWJ1Z2dlcjo6ZGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudChDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKQEAgLTkzMyw2ICsxMTQxLDIwIEBAIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoRGVidWdnZXJT
dGF0ZW1lbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgdXBkYXRlQ2FsbEZyYW1lKGxleGlj
YWxHbG9iYWxPYmplY3RGb3JDYWxsRnJhbWUobV92bSwgY2FsbEZyYW1lKSwgY2FsbEZyYW1lLCBB
dHRlbXB0UGF1c2UpOwogfQogCit2b2lkIERlYnVnZ2VyOjp3aWxsUnVuTWljcm90YXNrKCkKK3sK
KyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIp
IHsKKyAgICAgICAgb2JzZXJ2ZXIud2lsbFJ1bk1pY3JvdGFzaygpOworICAgIH0pOworfQorCit2
b2lkIERlYnVnZ2VyOjpkaWRSdW5NaWNyb3Rhc2soKQoreworICAgIGRpc3BhdGNoRnVuY3Rpb25U
b09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICBvYnNlcnZlci5k
aWRSdW5NaWNyb3Rhc2soKTsKKyAgICB9KTsKK30KKwogRGVidWdnZXJDYWxsRnJhbWUmIERlYnVn
Z2VyOjpjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKQogewogICAgIGlmICghbV9jdXJyZW50RGVi
dWdnZXJDYWxsRnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
CmluZGV4IGZiYTQ0YzYwY2M2YTNhM2E0ODQ3YTFiZGFlYzY2ODkxMzJhNDg2ODcuLmRlN2YwZDYy
MzhmYjcyZWExMWM3Y2VmN2NmMmJlODA1M2RhZDU5OGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oCkBAIC0yNywxMCArMjcsNyBAQAogI2luY2x1ZGUgIkRlYnVn
Z2VyUGFyc2VEYXRhLmgiCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVk
ZSAiSlNDSlNWYWx1ZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3Rm
L0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQv
VGV4dFBvc2l0aW9uLmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpT
QyB7CiAKQEAgLTQxLDI2ICszOCwxNCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFNv
dXJjZVByb3ZpZGVyOwogY2xhc3MgVk07CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVn
Z2VyIHsKK2NsYXNzIERlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKLSAgICBEZWJ1Z2dlcihWTSYpOwotICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CisgICAg
SlNfRVhQT1JUX1BSSVZBVEUgRGVidWdnZXIoVk0mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIH5EZWJ1Z2dlcigpOwogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCi0g
ICAgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7Ci0g
ICAgYm9vbCBoYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2soKSBjb25zdAotICAgIHsKLSAg
ICAgICAgQVNTRVJUKG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAg
ICAgICAgcmV0dXJuIG1faGFzSGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrOwotICAgIH0KLSAg
ICBKU1ZhbHVlIGN1cnJlbnRFeGNlcHRpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVh
c29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fY3Vy
cmVudEV4Y2VwdGlvbjsKLSAgICB9Ci0KICAgICBib29sIG5lZWRzRXhjZXB0aW9uQ2FsbGJhY2tz
KCkgY29uc3QgeyByZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZCAmJiBtX3BhdXNlT25FeGNl
cHRpb25zU3RhdGUgIT0gRG9udFBhdXNlT25FeGNlcHRpb25zOyB9CiAgICAgYm9vbCBpc0ludGVy
YWN0aXZlbHlEZWJ1Z2dpbmcoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVk
OyB9CiAKQEAgLTY4LDI2ICs1MywzMCBAQCBwdWJsaWM6CiAgICAgICAgIFRlcm1pbmF0aW5nRGVi
dWdnaW5nU2Vzc2lvbiwKICAgICAgICAgR2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZwogICAgIH07
Ci0gICAgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGRldGFjaChKU0ds
b2JhbE9iamVjdCosIFJlYXNvbkZvckRldGFjaCk7Ci0gICAgYm9vbCBpc0F0dGFjaGVkKEpTR2xv
YmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhdHRhY2goSlNHbG9iYWxP
YmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVj
dCosIFJlYXNvbkZvckRldGFjaCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0F0dGFj
aGVkKEpTR2xvYmFsT2JqZWN0Kik7CiAKLSAgICB2b2lkIHJlc29sdmVCcmVha3BvaW50KEJyZWFr
cG9pbnQmLCBTb3VyY2VQcm92aWRlciopOwotICAgIEJyZWFrcG9pbnRJRCBzZXRCcmVha3BvaW50
KEJyZWFrcG9pbnQmLCBib29sJiBleGlzdGluZyk7Ci0gICAgdm9pZCByZW1vdmVCcmVha3BvaW50
KEJyZWFrcG9pbnRJRCk7CisgICAgYm9vbCByZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50Jiwg
U291cmNlUHJvdmlkZXIqKTsKKyAgICBib29sIHNldEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOwor
ICAgIGJvb2wgcmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50Jik7CiAgICAgdm9pZCBjbGVhckJy
ZWFrcG9pbnRzKCk7CiAKICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJyZWFr
cG9pbnRzQWN0aXZhdGVkKHRydWUpOyB9CiAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMo
KSB7IHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKGZhbHNlKTsgfQogICAgIGJvb2wgYnJlYWtwb2lu
dHNBY3RpdmUoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOyB9CiAKKyAg
ICAvLyBCcmVha3BvaW50ICJkZWxlZ2F0ZSIgZnVuY3Rpb25hbGl0eS4KKyAgICBib29sIGV2YWx1
YXRlQnJlYWtwb2ludENvbmRpdGlvbihCcmVha3BvaW50JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAg
ICB2b2lkIGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludCYsIEpTR2xvYmFsT2Jq
ZWN0Kik7CisKICAgICBlbnVtIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgewogICAgICAgICBEb250
UGF1c2VPbkV4Y2VwdGlvbnMsCiAgICAgICAgIFBhdXNlT25BbGxFeGNlcHRpb25zLAogICAgICAg
ICBQYXVzZU9uVW5jYXVnaHRFeGNlcHRpb25zCiAgICAgfTsKICAgICBQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlIHBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlT25F
eGNlcHRpb25zU3RhdGU7IH0KLSAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXVz
ZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogCiAgICAgdm9pZCBz
ZXRQYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzKGJvb2wgZW5hYmxlZCkgeyBtX3BhdXNlT25EZWJ1
Z2dlclN0YXRlbWVudHMgPSBlbmFibGVkOyB9CiAKQEAgLTEwNSw3ICs5NCwxMCBAQCBwdWJsaWM6
CiAgICAgUmVhc29uRm9yUGF1c2UgcmVhc29uRm9yUGF1c2UoKSBjb25zdCB7IHJldHVybiBtX3Jl
YXNvbkZvclBhdXNlOyB9CiAgICAgQnJlYWtwb2ludElEIHBhdXNpbmdCcmVha3BvaW50SUQoKSBj
b25zdCB7IHJldHVybiBtX3BhdXNpbmdCcmVha3BvaW50SUQ7IH0KIAotICAgIHZvaWQgc2V0UGF1
c2VPbk5leHRTdGF0ZW1lbnQoYm9vbCk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlQXROZXh0T3Bw
b3J0dW5pdHkoKTsKKyAgICB2b2lkIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKKyAg
ICBib29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50Jik7Cisg
ICAgYm9vbCBjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKICAg
ICB2b2lkIGJyZWFrUHJvZ3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAg
dm9pZCBzdGVwTmV4dEV4cHJlc3Npb24oKTsKQEAgLTEyMyw5ICsxMTUsNyBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBzdXBwcmVzc0FsbFBhdXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NBbGxQ
YXVzZXM7IH0KICAgICB2b2lkIHNldFN1cHByZXNzQWxsUGF1c2VzKGJvb2wgc3VwcHJlc3MpIHsg
bV9zdXBwcmVzc0FsbFBhdXNlcyA9IHN1cHByZXNzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291
cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiwgU291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5l
TnVtYmVyLCBjb25zdCBXVEY6OlN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIHdpbGxSdW5NaWNyb3Rhc2soKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuTWlj
cm90YXNrKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHNvdXJjZVBh
cnNlZChKU0dsb2JhbE9iamVjdCosIFNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJl
ciwgY29uc3QgV1RGOjpTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICB2b2lkIGV4Y2VwdGlv
bihKU0dsb2JhbE9iamVjdCosIENhbGxGcmFtZSosIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIGJv
b2wgaGFzQ2F0Y2hIYW5kbGVyKTsKICAgICB2b2lkIGF0U3RhdGVtZW50KENhbGxGcmFtZSopOwpA
QCAtMTM3LDEwICsxMjcsNDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0o
Q2FsbEZyYW1lKik7CiAgICAgdm9pZCBkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFt
ZSopOwogCi0gICAgdmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CisgICAg
dm9pZCB3aWxsUnVuTWljcm90YXNrKCk7CisgICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKTsKIAog
ICAgIHZvaWQgcmVnaXN0ZXJDb2RlQmxvY2soQ29kZUJsb2NrKik7CiAKKyAgICAvLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4gV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgRGVi
dWdnZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJvdmlkZXIKKyAgICBzdHJ1Y3QgU2NyaXB0IHsK
KyAgICAgICAgU3RyaW5nIHVybDsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgU3Ry
aW5nIHNvdXJjZVVSTDsKKyAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CisgICAgICAg
IFJlZlB0cjxTb3VyY2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXI7CisgICAgICAgIGludCBzdGFy
dExpbmUgeyAwIH07CisgICAgICAgIGludCBzdGFydENvbHVtbiB7IDAgfTsKKyAgICAgICAgaW50
IGVuZExpbmUgeyAwIH07CisgICAgICAgIGludCBlbmRDb2x1bW4geyAwIH07CisgICAgICAgIGJv
b2wgaXNDb250ZW50U2NyaXB0IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgY2xhc3MgT2JzZXJ2
ZXIgeworICAgIHB1YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGFyc2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IERlYnVnZ2Vy
OjpTY3JpcHQmKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2Uo
Y29uc3QgU3RyaW5nJiAvKiB1cmwgKi8sIGNvbnN0IFN0cmluZyYgLyogZGF0YSAqLywgaW50IC8q
IGZpcnN0TGluZSAqLywgaW50IC8qIGVycm9yTGluZSAqLywgY29uc3QgU3RyaW5nJiAvKiBlcnJv
ck1lc3NhZ2UgKi8pIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNr
KCkgeyB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSB7IH0KKworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqLCBEZWJ1Z2dlckNhbGxG
cmFtZSYsIEpTVmFsdWUgLyogZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSAqLykgeyB9CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaWRDb250aW51ZSgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBi
cmVha3BvaW50QWN0aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiAvKiBkYXRh
ICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChCcmVh
a3BvaW50QWN0aW9uSUQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlv
blByb2JlKEpTR2xvYmFsT2JqZWN0KiwgQnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCAvKiBi
YXRjaElkICovLCB1bnNpZ25lZCAvKiBzYW1wbGVJZCAqLywgSlNWYWx1ZSAvKiByZXN1bHQgKi8p
IHsgfQorICAgIH07CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZE9ic2VydmVyKE9i
c2VydmVyJik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNl
cnZlciYsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBjbGFzcyBQcm9maWxpbmdDbGll
bnQgewogICAgIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+UHJvZmlsaW5nQ2xpZW50KCk7CkBA
IC0xNTYsMTYgKzE4MiwzNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChT
ZWNvbmRzIHN0YXJ0VGltZSwgUHJvZmlsaW5nUmVhc29uKTsKIAogcHJvdGVjdGVkOgotICAgIHZp
cnR1YWwgdm9pZCBoYW5kbGVCcmVha3BvaW50SGl0KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQnJl
YWtwb2ludCYpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9p
bnRDb25kaXRpb24oSlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKSBjb25zdCB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgaGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JQYXVzZSkg
eyB9Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMo
KSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBjdXJy
ZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKKworICAgIGJvb2wgaGFzSGFuZGxlckZvckV4Y2VwdGlv
bkNhbGxiYWNrKCkgY29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNl
ID09IFBhdXNlZEZvckV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBtX2hhc0hhbmRsZXJGb3JF
eGNlcHRpb25DYWxsYmFjazsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGN1cnJlbnRFeGNlcHRpb24o
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhj
ZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIG1fY3VycmVudEV4Y2VwdGlvbjsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0
YWNoRGVidWdnZXIoYm9vbCAvKiBpc0JlaW5nRGVzdHJveWVkICovKSB7IH0KKyAgICBKU19FWFBP
UlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKKworICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIEpTX0VYUE9S
VF9QUklWQVRFIHZpcnR1YWwgdm9pZCBoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCosIFJlYXNv
bkZvclBhdXNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3Qq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSB7IH0KKwor
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNHbG9iYWxPYmplY3QqKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0ds
b2JhbE9iamVjdCosIEV4Y2VwdGlvbiopIGNvbnN0IHsgfQorCisgICAgYm9vbCBkb25lUHJvY2Vz
c2luZ0RlYnVnZ2VyRXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9kb25lUHJvY2Vzc2luZ0RlYnVn
Z2VyRXZlbnRzOyB9CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEJyZWFrcG9pbnRJ
RCwgQnJlYWtwb2ludCo+IEJyZWFrcG9pbnRJRFRvQnJlYWtwb2ludE1hcDsKLQotICAgIHR5cGVk
ZWYgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRyPEJyZWFrcG9pbnRzTGlzdD4sIFdURjo6SW50SGFz
aDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IExpbmVUb0Jy
ZWFrcG9pbnRzTWFwOwotICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtw
b2ludHNNYXAsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8U291cmNlSUQ+PiBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA7CisgICAgSlNW
YWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBjbGFz
cyBDbGVhckNvZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yOwogICAgIGNsYXNzIENsZWFy
RGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3I7CkBAIC0xODgsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAg
ICAgICAgRGVidWdnZXImIG1fZGVidWdnZXI7CiAgICAgfTsKIAotICAgIGJvb2wgaGFzQnJlYWtw
b2ludChTb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiwgQnJlYWtwb2ludCogaGl0QnJlYWtw
b2ludCk7CisgICAgUmVmUHRyPEJyZWFrcG9pbnQ+IGRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxP
YmplY3QqLCBTb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJik7CiAKICAgICBEZWJ1Z2dlclBh
cnNlRGF0YSYgZGVidWdnZXJQYXJzZURhdGEoU291cmNlSUQsIFNvdXJjZVByb3ZpZGVyKik7CiAK
QEAgLTIxNSw3ICsyNjIsNyBAQCBwcml2YXRlOgogICAgICAgICBCcmVha3BvaW50RGlzYWJsZWQs
CiAgICAgICAgIEJyZWFrcG9pbnRFbmFibGVkCiAgICAgfTsKLSAgICB2b2lkIHNldEJyZWFrcG9p
bnRzQWN0aXZhdGVkKGJvb2wpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QnJlYWtw
b2ludHNBY3RpdmF0ZWQoYm9vbCk7CiAgICAgdm9pZCB0b2dnbGVCcmVha3BvaW50KENvZGVCbG9j
ayosIEJyZWFrcG9pbnQmLCBCcmVha3BvaW50U3RhdGUpOwogICAgIHZvaWQgYXBwbHlCcmVha3Bv
aW50cyhDb2RlQmxvY2sqKTsKICAgICB2b2lkIHRvZ2dsZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYs
IEJyZWFrcG9pbnRTdGF0ZSk7CkBAIC0yMjMsNiArMjcwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lk
IGNsZWFyRGVidWdnZXJSZXF1ZXN0cyhKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgY2xlYXJQ
YXJzZWREYXRhKCk7CiAKKyAgICBib29sIGNhbkRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycygp
IGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9uPHZv
aWQoT2JzZXJ2ZXImKT4pOworCiAgICAgVk0mIG1fdm07CiAgICAgSGFzaFNldDxKU0dsb2JhbE9i
amVjdCo+IG1fZ2xvYmFsT2JqZWN0czsKICAgICBIYXNoTWFwPFNvdXJjZUlELCBEZWJ1Z2dlclBh
cnNlRGF0YSwgV1RGOjpJbnRIYXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czxTb3VyY2VJRD4+IG1fcGFyc2VEYXRhTWFwOwpAQCAtMjQ4LDE1ICsyOTgsMjQg
QEAgcHJpdmF0ZToKICAgICBTb3VyY2VJRCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEOwogICAgIGJv
b2wgbV9hZnRlckJsYWNrYm94ZWRTY3JpcHQgeyBmYWxzZSB9OwogCi0gICAgQnJlYWtwb2ludElE
IG1fdG9wQnJlYWtwb2ludElEOworICAgIHVzaW5nIExpbmVUb0JyZWFrcG9pbnRzTWFwID0gSGFz
aE1hcDx1bnNpZ25lZCwgQnJlYWtwb2ludHNWZWN0b3IsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+OworICAgIEhhc2hNYXA8U291cmNl
SUQsIExpbmVUb0JyZWFrcG9pbnRzTWFwLCBXVEY6OkludEhhc2g8U291cmNlSUQ+LCBXVEY6OlVu
c2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPFNvdXJjZUlEPj4gbV9icmVha3BvaW50c0ZvclNv
dXJjZUlEOworICAgIEhhc2hTZXQ8UmVmPEJyZWFrcG9pbnQ+PiBtX2JyZWFrcG9pbnRzOworICAg
IFJlZlB0cjxCcmVha3BvaW50PiBtX3NwZWNpYWxCcmVha3BvaW50OwogICAgIEJyZWFrcG9pbnRJ
RCBtX3BhdXNpbmdCcmVha3BvaW50SUQ7Ci0gICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50TWFw
IG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50OwotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01h
cCBtX3NvdXJjZUlEVG9CcmVha3BvaW50czsKKworICAgIHVuc2lnbmVkIG1fbmV4dFByb2JlU2Ft
cGxlSWQgeyAxIH07CisgICAgdW5zaWduZWQgbV9jdXJyZW50UHJvYmVCYXRjaElkIHsgMCB9Owog
CiAgICAgUmVmUHRyPEpTQzo6RGVidWdnZXJDYWxsRnJhbWU+IG1fY3VycmVudERlYnVnZ2VyQ2Fs
bEZyYW1lOwogCisgICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworICAgIGJvb2wg
bV9kaXNwYXRjaGluZ0Z1bmN0aW9uVG9PYnNlcnZlcnMgeyBmYWxzZSB9OworCiAgICAgUHJvZmls
aW5nQ2xpZW50KiBtX3Byb2ZpbGluZ0NsaWVudCB7IG51bGxwdHIgfTsKIAorICAgIGJvb2wgbV9k
b25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzIHsgdHJ1ZSB9OworCiAgICAgZnJpZW5kIGNsYXNz
IERlYnVnZ2VyUGF1c2VkU2NvcGU7CiAgICAgZnJpZW5kIGNsYXNzIFRlbXBvcmFyeVBhdXNlZFN0
YXRlOwogICAgIGZyaWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKaW5kZXgg
NWZiNmU4YTYzOTYzYTJmZjFmMjZjYzc0NGMwMmE5MjgwNDYxZGIwNC4uNDI1NjNhY2YzZTJmYmY5
ZTMzYzBmNTQwYmFkNTdjMzQzMDU2NjhlZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0aXZlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaApAQCAtMjksMTAgKzI5LDEzIEBACiAK
IG5hbWVzcGFjZSBKU0MgewogCi10eXBlZGVmIHNpemVfdCBTb3VyY2VJRDsKLXN0YXRpYyBjb25z
dGV4cHIgU291cmNlSUQgbm9Tb3VyY2VJRCA9IDA7Cit1c2luZyBTb3VyY2VJRCA9IHNpemVfdDsK
K2NvbnN0ZXhwciBTb3VyY2VJRCBub1NvdXJjZUlEID0gMDsKIAotdHlwZWRlZiBzaXplX3QgQnJl
YWtwb2ludElEOwotc3RhdGljIGNvbnN0ZXhwciBCcmVha3BvaW50SUQgbm9CcmVha3BvaW50SUQg
PSAwOwordXNpbmcgQnJlYWtwb2ludElEID0gc2l6ZV90OworY29uc3RleHByIEJyZWFrcG9pbnRJ
RCBub0JyZWFrcG9pbnRJRCA9IDA7CisKK3VzaW5nIEJyZWFrcG9pbnRBY3Rpb25JRCA9IGludDsK
K2NvbnN0ZXhwciBCcmVha3BvaW50QWN0aW9uSUQgbm9CcmVha3BvaW50QWN0aW9uSUQgPSAwOwog
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAppbmRleCAyMTAxOWVkYTFkMGM0Zjc3ODNk
ZmFjNmRkZTU3NTg2ZTRkNzFmZTZlLi5jNWIxMjZlODA1NjFmNzA2ZDVmM2M3OGE4MjFkNmVjMWU1
YzljNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JFbnZpcm9ubWVudC5oCkBAIC0zMiw2ICszMiw3IEBAIGNsYXNzIFN0b3B3YXRjaDsK
IH0KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIEV4Y2VwdGlvbjsK
IGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBWTTsKQEAgLTM5LDcgKzQwLDYgQEAgY2xhc3MgVk07
CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5
cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVjdG9yRnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3Qs
IGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxEYXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBj
b25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJu
ZWRFeGNlcHRpb24pOwogdHlwZWRlZiBKU0M6OkpTVmFsdWUgKCpJbnNwZWN0b3JFdmFsdWF0ZUhh
bmRsZXIpKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6
OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhj
ZXB0aW9uKTsKIApAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnNwZWN0
b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVIYW5kbGVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBmcm9udGVuZEluaXRpYWxpemVkKCkgPSAwOwogICAgIHZpcnR1YWwgV1RGOjpTdG9w
d2F0Y2gmIGV4ZWN1dGlvblN0b3B3YXRjaCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFNjcmlw
dERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1NlcnZlcigpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6
RGVidWdnZXImIHNjcmlwdERlYnVnU2VydmVyKCkgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpWTSYg
dm0oKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRl
eCA0ZmVhNDgxODViNDNiNDJjYzZkYmRhNzQxOGY1NGVmYmQyNDljZmY0Li5jMmY3MGM3ZDBjYzgy
OTlmODZlNTIyYmY3OGE5NTk2YTJmODBkYTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1
Z1NlcnZlci5jcHAKQEAgLTM1LDE4ICszNSwyMiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHVz
aW5nIG5hbWVzcGFjZSBKU0M7CiAKIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpT
R2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVj
dCkKLSAgICA6IFNjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9iamVjdC52bSgpKQorICAgIDogRGVi
dWdnZXIoZ2xvYmFsT2JqZWN0LnZtKCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmpl
Y3QpCiB7CiB9CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNo
RGVidWdnZXIoKQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0dGFjaERlYnVnZ2VyKCk7CisKICAg
ICBhdHRhY2goJm1fZ2xvYmFsT2JqZWN0KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7Cisg
ICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CisKICAg
ICBkZXRhY2goJm1fZ2xvYmFsT2JqZWN0LCBpc0JlaW5nRGVzdHJveWVkID8gRGVidWdnZXI6Okds
b2JhbE9iamVjdElzRGVzdHJ1Y3RpbmcgOiBEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdT
ZXNzaW9uKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFs
bEpTRnVuY3Rpb25zKCk7CkBAIC01NCwxMCArNTgsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdFNj
cmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAK
IHZvaWQgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKQogeworICAgIEpTQzo6RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7
CisKICAgICAvLyBEcm9wIGFsbCBsb2NrcyBzbyBhbm90aGVyIHRocmVhZCBjYW4gd29yayBpbiB0
aGUgVk0gd2hpbGUgd2UgYXJlIG5lc3RlZC4KICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tz
IGRyb3BBbGxMb2NrcygmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICB3aGlsZSAoIW1fZG9u
ZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cykgeworICAgIHdoaWxlICghZG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cygpKSB7CiAgICAgICAgIGlmIChSdW5Mb29wOjpjeWNsZShKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSgpKSA9PSBSdW5Mb29wOjpDeWNsZVJl
c3VsdDo6U3RvcCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyLmgKaW5kZXggZGFhYmNmNzY0ZTE3ZDFlZDZkY2Y3NmNjNTlmYzM5ZTdlYjll
Nzg1ZS4uODAxZTc2MmY5YzAxOWM4NjE0MWJiNWUyYjUyMjMxMGMyYThiYjNjNiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTI1LDEyICsyNSwxMiBAQAogCiAjcHJhZ21h
IG9uY2UKIAotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiRGVidWdn
ZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAotY2xhc3MgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBT
Y3JpcHREZWJ1Z1NlcnZlciB7CitjbGFzcyBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
IGZpbmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgpAQCAtNDIsMTggKzQyLDE0IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
UnVuTG9vcE1vZGUgcnVuTG9vcE1vZGUoKTsKIAogcHJpdmF0ZToKKyAgICAvLyBKU0M6OkRlYnVn
Z2VyCiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIGZpbmFsOwogICAgIHZvaWQgZGV0YWNoRGVi
dWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBmaW5hbDsKLQotICAgIHZvaWQgZGlkUGF1c2Uo
SlNDOjpKU0dsb2JhbE9iamVjdCopIGZpbmFsIHsgfQotICAgIHZvaWQgZGlkQ29udGludWUoSlND
OjpKU0dsb2JhbE9iamVjdCopIGZpbmFsIHsgfQogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKSBmaW5hbDsKLSAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2Jq
ZWN0KikgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8vIE5PVEU6IEN1cnJl
bnRseSBhbGwgZXhjZXB0aW9ucyBhcmUgcmVwb3J0ZWQgYXQgdGhlIEFQSSBib3VuZGFyeSB0aHJv
dWdoIHJlcG9ydEFQSUV4Y2VwdGlvbi4KICAgICAvLyBVbnRpbCBhIHRpbWUgY29tZXMgd2hlcmUg
YW4gZXhjZXB0aW9uIGNhbiBiZSBjYXVzZWQgb3V0c2lkZSBvZiB0aGUgQVBJIChlLmcuIHNldFRp
bWVvdXQKICAgICAvLyBvciBzb21lIG90aGVyIGFzeW5jIG9wZXJhdGlvbiBpbiBhIHB1cmUgSlND
b250ZXh0KSB3ZSBjYW4gaWdub3JlIGV4Y2VwdGlvbnMgcmVwb3J0ZWQgaGVyZS4KLSAgICB2b2lk
IHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBj
b25zdCBmaW5hbCB7IH0KIAogICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0
OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0
QnJlYWtwb2ludC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVh
a3BvaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NjA0MTc5NmE0ZWI3ZGJj
YzhjYmI5Nzg0ZGM3MWEyMWEwNDFiMjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVh
a3BvaW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0
IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAo
QykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRo
ZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMi
IEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFj
ZSBJbnNwZWN0b3IgewotCi10eXBlZGVmIGVudW0gewotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b25UeXBlTG9nLAotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGUsCi0gICAg
U2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZCwKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0
aW9uVHlwZVByb2JlCi19IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlOwotCi1zdHJ1Y3QgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvbiB7Ci0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvbihTY3JpcHRC
cmVha3BvaW50QWN0aW9uVHlwZSB0eXBlLCBpbnQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBk
YXRhKQotICAgICAgICA6IHR5cGUodHlwZSkKLSAgICAgICAgLCBpZGVudGlmaWVyKGlkZW50aWZp
ZXIpCi0gICAgICAgICwgZGF0YShkYXRhKQotICAgIHsKLSAgICB9Ci0KLSAgICBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uVHlwZSB0eXBlOwotICAgIGludCBpZGVudGlmaWVyOwotICAgIFN0cmluZyBk
YXRhOwotfTsKLQotdHlwZWRlZiBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4gQnJlYWtw
b2ludEFjdGlvbnM7Ci0KLXN0cnVjdCBTY3JpcHRCcmVha3BvaW50IHsKLSAgICBTY3JpcHRCcmVh
a3BvaW50KCkKLSAgICB7Ci0gICAgfQotCi0gICAgU2NyaXB0QnJlYWtwb2ludChpbnQgbGluZU51
bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgYXV0
b0NvbnRpbnVlLCB1bnNpZ25lZCBpZ25vcmVDb3VudCkKLSAgICAgICAgOiBsaW5lTnVtYmVyKGxp
bmVOdW1iZXIpCi0gICAgICAgICwgY29sdW1uTnVtYmVyKGNvbHVtbk51bWJlcikKLSAgICAgICAg
LCBjb25kaXRpb24oY29uZGl0aW9uKQotICAgICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGlu
dWUpCi0gICAgICAgICwgaWdub3JlQ291bnQoaWdub3JlQ291bnQpCi0gICAgewotICAgIH0KLQot
ICAgIFNjcmlwdEJyZWFrcG9pbnQoaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uLCBCcmVha3BvaW50QWN0aW9ucyYgYWN0aW9ucywgYm9vbCBh
dXRvQ29udGludWUsIHVuc2lnbmVkIGlnbm9yZUNvdW50KQotICAgICAgICA6IGxpbmVOdW1iZXIo
bGluZU51bWJlcikKLSAgICAgICAgLCBjb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAg
ICAsIGNvbmRpdGlvbihjb25kaXRpb24pCi0gICAgICAgICwgYWN0aW9ucyhhY3Rpb25zKQotICAg
ICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGludWUpCi0gICAgICAgICwgaWdub3JlQ291bnQo
aWdub3JlQ291bnQpCi0gICAgewotICAgIH0KLQotICAgIGludCBsaW5lTnVtYmVyIHsgMCB9Owot
ICAgIGludCBjb2x1bW5OdW1iZXIgeyAwIH07Ci0gICAgU3RyaW5nIGNvbmRpdGlvbjsKLSAgICBC
cmVha3BvaW50QWN0aW9ucyBhY3Rpb25zOwotICAgIGJvb2wgYXV0b0NvbnRpbnVlIHsgZmFsc2Ug
fTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3VudCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9T
Y3JpcHREZWJ1Z0xpc3RlbmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Nj
cmlwdERlYnVnTGlzdGVuZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q4YmVm
NDBlZmJjMmIwN2FhNmU3ZDU2ZGYwOGVlMTU4ZmQ4YjAxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L1NjcmlwdERlYnVnTGlzdGVuZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJ
bmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAg
IGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMg
Q09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRT
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAq
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21h
IG9uY2UKLQotI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiU291cmNlUHJvdmlkZXIu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3BlY3Rv
ciB7Ci0KLXN0cnVjdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uOwotCi1jbGFzcyBTY3JpcHREZWJ1
Z0xpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgU2NyaXB0IHsKLSAgICAgICAgU3RyaW5n
IHVybDsKLSAgICAgICAgU3RyaW5nIHNvdXJjZTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsK
LSAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7Ci0gICAgICAgIFJlZlB0cjxKU0M6OlNv
dXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRlcjsKLSAgICAgICAgaW50IHN0YXJ0TGluZSB7MH07
Ci0gICAgICAgIGludCBzdGFydENvbHVtbiB7MH07Ci0gICAgICAgIGludCBlbmRMaW5lIHswfTsK
LSAgICAgICAgaW50IGVuZENvbHVtbiB7MH07Ci0gICAgICAgIGJvb2wgaXNDb250ZW50U2NyaXB0
IHtmYWxzZX07Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgflNjcmlwdERlYnVnTGlzdGVuZXIoKSB7
IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25z
dCBTY3JpcHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29u
c3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVy
cm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKLQotICAgIHZpcnR1YWwg
dm9pZCB3aWxsUnVuTWljcm90YXNrKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNy
b3Rhc2soKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgPSAwOwotCi0gICAgdmlydHVhbCB2
b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmlu
ZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVh
a3BvaW50QWN0aW9uSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50
QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVl
IHJlc3VsdCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGVkMTI5NWY5NDM2ODc4YzczZTljZWRiNjYx
MzEyM2U0MjIxZGRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDgsIDIwMDksIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICog
Q29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6
Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBv
ZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICog
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLQot
I2luY2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiRGVidWdnZXJTY29wZS5o
IgotI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKLSNpbmNsdWRlICJTb3VyY2VQ
cm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0
Zi9TZXRGb3JTY29wZS5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotdXNpbmcgbmFtZXNw
YWNlIEpTQzsKLQotU2NyaXB0RGVidWdTZXJ2ZXI6OlNjcmlwdERlYnVnU2VydmVyKFZNJiB2bSkK
LSAgICA6IERlYnVnZ2VyKHZtKQotewotfQotCi1TY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERl
YnVnU2VydmVyKCkKLXsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2lu
dEFjdGlvbnMoQnJlYWtwb2ludElEIGlkLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRC
cmVha3BvaW50KQotewotICAgIEFTU0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0gICAgQVNT
RVJUKCFtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5jb250YWlucyhpZCkpOwotCi0gICAgbV9icmVh
a3BvaW50SURUb0FjdGlvbnMuc2V0KGlkLCBzY3JpcHRCcmVha3BvaW50LmFjdGlvbnMpOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVCcmVha3BvaW50QWN0aW9ucyhCcmVha3Bv
aW50SUQgaWQpCi17Ci0gICAgQVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKLQotICAgIG1f
YnJlYWtwb2ludElEVG9BY3Rpb25zLnJlbW92ZShpZCk7Ci19Ci0KLWNvbnN0IEJyZWFrcG9pbnRB
Y3Rpb25zJiBTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0QWN0aW9uc0ZvckJyZWFrcG9pbnQoQnJlYWtw
b2ludElEIGlkKQotewotICAgIEFTU0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0KLSAgICBh
dXRvIGVudHJ5ID0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZmluZChpZCk7Ci0gICAgaWYgKGVu
dHJ5ICE9IG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmVuZCgpKQotICAgICAgICByZXR1cm4gZW50
cnktPnZhbHVlOwotCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPEJyZWFrcG9pbnRBY3Rpb25z
PiBlbXB0eUFjdGlvblZlY3RvciA9IEJyZWFrcG9pbnRBY3Rpb25zKCk7Ci0gICAgcmV0dXJuIGVt
cHR5QWN0aW9uVmVjdG9yOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckJyZWFr
cG9pbnRBY3Rpb25zKCkKLXsKLSAgICBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5jbGVhcigpOwot
fQotCi1ib29sIFNjcmlwdERlYnVnU2VydmVyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYnJlYWtwb2ludEFjdGlvbikKLXsKLSAgICBEZWJ1
Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJh
bWUoKTsKLQotICAgIHN3aXRjaCAoYnJlYWtwb2ludEFjdGlvbi50eXBlKSB7Ci0gICAgY2FzZSBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUxvZzoKLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRv
TGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAg
ICAgIGxpc3RlbmVyLmJyZWFrcG9pbnRBY3Rpb25Mb2coZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFs
T2JqZWN0KCksIGJyZWFrcG9pbnRBY3Rpb24uZGF0YSk7Ci0gICAgICAgIH0pOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTogewot
ICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgSlNPYmplY3Qq
IHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKLSAgICAgICAgZGVidWdnZXJDYWxsRnJh
bWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYnJlYWtwb2ludEFjdGlvbi5kYXRhLCBzY29w
ZUV4dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAg
ICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3Qo
KSwgZXhjZXB0aW9uKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgY2FzZSBTY3JpcHRC
cmVha3BvaW50QWN0aW9uVHlwZVNvdW5kOgotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0
ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAg
bGlzdGVuZXIuYnJlYWtwb2ludEFjdGlvblNvdW5kKGJyZWFrcG9pbnRBY3Rpb24uaWRlbnRpZmll
cik7Ci0gICAgICAgIH0pOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU2NyaXB0QnJlYWtw
b2ludEFjdGlvblR5cGVQcm9iZTogewotICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2Vw
dGlvbjsKLSAgICAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsK
LSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbihicmVha3BvaW50QWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
LCBleGNlcHRpb24pOwotICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qg
PSBkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7
Ci0KLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdM
aXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmJyZWFrcG9pbnRBY3Rp
b25Qcm9iZShnbG9iYWxPYmplY3QsIGJyZWFrcG9pbnRBY3Rpb24sIG1fY3VycmVudFByb2JlQmF0
Y2hJZCwgbV9uZXh0UHJvYmVTYW1wbGVJZCsrLCBleGNlcHRpb24gPyBleGNlcHRpb24tPnZhbHVl
KCkgOiByZXN1bHQpOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAg
ZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIs
IGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQotewotICAgIC8vIFBy
ZWVtcHRpdmVseSBjaGVjayB3aGV0aGVyIHdlIGNhbiBkaXNwYXRjaCBzbyB0aGF0IHdlIGRvbid0
IGRvIGFueSB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4KLSAgICBpZiAoIWNhbkRpc3BhdGNoRnVu
Y3Rpb25Ub0xpc3RlbmVycygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBpZiAoZXJyb3JMaW5l
ICE9IC0xKSB7Ci0gICAgICAgIGF1dG8gc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJj
ZVVSTCgpOwotICAgICAgICBhdXRvIGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9T
dHJpbmcoKTsKLSAgICAgICAgYXV0byBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQ
b3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZEludCgpOwotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9u
VG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAg
ICAgICAgbGlzdGVuZXIuZmFpbGVkVG9QYXJzZVNvdXJjZShzb3VyY2VVUkwsIGRhdGEsIGZpcnN0
TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3NhZ2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBzb3VyY2VQcm92aWRl
ci0+YXNJRCgpOwotCi0gICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzM+
IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IFNjcmlwdERlYnVnTGlzdGVuZXI6OlNjcmlwdCB0byB1
c2UgU291cmNlUHJvdmlkZXIKLSAgICBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2NyaXB0
OwotICAgIHNjcmlwdC5zb3VyY2VQcm92aWRlciA9IHNvdXJjZVByb3ZpZGVyOwotICAgIHNjcmlw
dC51cmwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7Ci0gICAgc2NyaXB0LnNvdXJjZSA9
IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwotICAgIHNjcmlwdC5zdGFydExp
bmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQo
KTsKLSAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlv
bigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOwotICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQg
PSBpc0NvbnRlbnRTY3JpcHQoZ2xvYmFsT2JqZWN0KTsKLSAgICBzY3JpcHQuc291cmNlVVJMID0g
c291cmNlUHJvdmlkZXItPnNvdXJjZVVSTERpcmVjdGl2ZSgpOwotICAgIHNjcmlwdC5zb3VyY2VN
YXBwaW5nVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKTsK
LQotICAgIGludCBzb3VyY2VMZW5ndGggPSBzY3JpcHQuc291cmNlLmxlbmd0aCgpOwotICAgIGlu
dCBsaW5lQ291bnQgPSAxOwotICAgIGludCBsYXN0TGluZVN0YXJ0ID0gMDsKLSAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGlmIChzY3JpcHQuc291
cmNlW2ldID09ICdcbicpIHsKLSAgICAgICAgICAgIGxpbmVDb3VudCArPSAxOwotICAgICAgICAg
ICAgbGFzdExpbmVTdGFydCA9IGkgKyAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgc2NyaXB0
LmVuZExpbmUgPSBzY3JpcHQuc3RhcnRMaW5lICsgbGluZUNvdW50IC0gMTsKLSAgICBpZiAobGlu
ZUNvdW50ID09IDEpCi0gICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzY3JpcHQuc3RhcnRDb2x1
bW4gKyBzb3VyY2VMZW5ndGg7Ci0gICAgZWxzZQotICAgICAgICBzY3JpcHQuZW5kQ29sdW1uID0g
c291cmNlTGVuZ3RoIC0gbGFzdExpbmVTdGFydDsKLQotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xp
c3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxp
c3RlbmVyLmRpZFBhcnNlU291cmNlKHNvdXJjZUlELCBzY3JpcHQpOwotICAgIH0pOwotfQotCi12
b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxsUnVuTWljcm90YXNrKCkKLXsKLSAgICBkaXNwYXRj
aEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikg
ewotICAgICAgICBsaXN0ZW5lci53aWxsUnVuTWljcm90YXNrKCk7Ci0gICAgfSk7Ci19Ci0KLXZv
aWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJ1bk1pY3JvdGFzaygpCi17Ci0gICAgZGlzcGF0Y2hG
dW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsK
LSAgICAgICAgbGlzdGVuZXIuZGlkUnVuTWljcm90YXNrKCk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wg
U2NyaXB0RGVidWdTZXJ2ZXI6OmNhbkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpIGNvbnN0
Ci17Ci0gICAgaWYgKG1fY2FsbGluZ0xpc3RlbmVycykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
ICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKEZ1bmN0aW9uPHZvaWQoU2NyaXB0RGVidWdMaXN0ZW5lciYpPiBjYWxs
YmFjaykKLXsKLSAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpKQotICAg
ICAgICByZXR1cm47Ci0KLSAgICBTZXRGb3JTY29wZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlz
dGVuZXJzLCB0cnVlKTsKLQotICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3Io
bV9saXN0ZW5lcnMpKQotICAgICAgICBjYWxsYmFjaygqbGlzdGVuZXIpOwotfQotCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkKLXsK
LSAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwotfQotCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpoYW5kbGVCcmVha3BvaW50SGl0KEpTQzo6SlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgY29uc3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50KQotewotICAg
IEFTU0VSVChpc0F0dGFjaGVkKGdsb2JhbE9iamVjdCkpOwotCi0gICAgbV9jdXJyZW50UHJvYmVC
YXRjaElkKys7Ci0KLSAgICBhdXRvIGVudHJ5ID0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZmlu
ZChicmVha3BvaW50LmlkKTsKLSAgICBpZiAoZW50cnkgIT0gbV9icmVha3BvaW50SURUb0FjdGlv
bnMuZW5kKCkpIHsKLSAgICAgICAgQnJlYWtwb2ludEFjdGlvbnMgYWN0aW9ucyA9IGVudHJ5LT52
YWx1ZTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhY3Rpb25zLnNpemUoKTsgKytp
KSB7Ci0gICAgICAgICAgICBpZiAoIWV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbihhY3Rpb25zW2ld
KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoIWlzQXR0YWNoZWQo
Z2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2lu
dENvbmRpdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0
aW9uKiBleGNlcHRpb24pIGNvbnN0Ci17Ci0gICAgcmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVj
dCwgZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2Uo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlKQot
ewotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVu
ZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKLSAgICAgICAgYXV0
byYgZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICAg
ICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuc2NvcGUoKS0+Z2xvYmFs
T2JqZWN0KCk7Ci0gICAgICAgIGF1dG8ganNDYWxsRnJhbWUgPSB0b0pTKGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LCBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJh
bWUpLnB0cigpKTsKLSAgICAgICAgbGlzdGVuZXIuZGlkUGF1c2UoZ2xvYmFsT2JqZWN0LCBqc0Nh
bGxGcmFtZSwgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZShnbG9iYWxPYmplY3QpKTsKLSAgICB9KTsK
LQotICAgIGRpZFBhdXNlKGdsb2JhbE9iamVjdCk7Ci0KLSAgICBtX2RvbmVQcm9jZXNzaW5nRGVi
dWdnZXJFdmVudHMgPSBmYWxzZTsKLSAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwotCi0g
ICAgZGlkQ29udGludWUoZ2xvYmFsT2JqZWN0KTsKLQotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xp
c3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxp
c3RlbmVyLmRpZENvbnRpbnVlKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAgIEFT
U0VSVChsaXN0ZW5lcik7Ci0KLSAgICBib29sIHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0
eSgpOwotICAgIG1fbGlzdGVuZXJzLmFkZChsaXN0ZW5lcik7Ci0KLSAgICAvLyBGaXJzdCBsaXN0
ZW5lci4gQXR0YWNoIHRoZSBkZWJ1Z2dlci4KLSAgICBpZiAod2FzRW1wdHkpCi0gICAgICAgIGF0
dGFjaERlYnVnZ2VyKCk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3Rl
bmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxpc3RlbmVyLCBib29sIGlzQmVpbmdEZXN0cm95ZWQp
Ci17Ci0gICAgQVNTRVJUKGxpc3RlbmVyKTsKLQotICAgIG1fbGlzdGVuZXJzLnJlbW92ZShsaXN0
ZW5lcik7Ci0KLSAgICAvLyBMYXN0IGxpc3RlbmVyLiBEZXRhY2ggdGhlIGRlYnVnZ2VyLgotICAg
IGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkpCi0gICAgICAgIGRldGFjaERlYnVnZ2VyKGlzQmVp
bmdEZXN0cm95ZWQpOwotfQotCi1KU0M6OkpTVmFsdWUgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2Vw
dGlvbk9yQ2F1Z2h0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewot
ICAgIGlmIChyZWFzb25Gb3JQYXVzZSgpID09IFBhdXNlZEZvckV4Y2VwdGlvbikKLSAgICAgICAg
cmV0dXJuIGN1cnJlbnRFeGNlcHRpb24oKTsKLQotICAgIGZvciAoUmVmUHRyPERlYnVnZ2VyQ2Fs
bEZyYW1lPiBmcmFtZSA9ICZjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPmNhbGxlckZyYW1lKCkpIHsKLSAgICAgICAgRGVidWdnZXJTY29wZSYgc2NvcGUg
PSAqZnJhbWUtPnNjb3BlKCk7Ci0gICAgICAgIGlmIChzY29wZS5pc0NhdGNoU2NvcGUoKSkKLSAg
ICAgICAgICAgIHJldHVybiBzY29wZS5jYXVnaHRWYWx1ZShnbG9iYWxPYmplY3QpOwotICAgIH0K
LQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2MxMTBkNzRjMTEzM2FiNGZjZjMxZmZjNGIy
NTI4MGZlZDkyYmM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAor
KysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4
LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdo
dCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQot
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiU2NyaXB0QnJlYWtwb2ludC5oIgotI2luY2x1
ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIKLSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNp
bmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVk
ZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQ2FsbEZy
YW1lOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7Ci1jbGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIElu
c3BlY3RvciB7Ci0KLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIFNjcmlwdERlYnVnU2VydmVyIDog
cHVibGljIEpTQzo6RGVidWdnZXIgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERl
YnVnU2VydmVyKTsKLSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLQotICAg
IC8vIEZJWE1FOiBNb3ZlIEJyZWFrcG9pbnRBY3Rpb24gaGFuZGxpbmcgaW50byBKU0M6OkRlYnVn
Z2VyIG9yIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuCi0gICAgdm9pZCBzZXRCcmVha3BvaW50QWN0
aW9ucyhKU0M6OkJyZWFrcG9pbnRJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYpOwotICAgIHZv
aWQgcmVtb3ZlQnJlYWtwb2ludEFjdGlvbnMoSlNDOjpCcmVha3BvaW50SUQpOwotICAgIHZvaWQg
Y2xlYXJCcmVha3BvaW50QWN0aW9ucygpOwotCi0gICAgY29uc3QgQnJlYWtwb2ludEFjdGlvbnMm
IGdldEFjdGlvbnNGb3JCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludElEKTsKLQotICAgIHZvaWQg
YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciopOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVu
ZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCk7Ci0KLXByb3Rl
Y3RlZDoKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcihKU0M6OlZNJik7Ci0gICAgflNjcmlwdERlYnVn
U2VydmVyKCkgb3ZlcnJpZGU7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3ll
ZCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3Qq
KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgPSAwOwot
ICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNv
bnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0ID0gMDsKLQotICAgIGJvb2wgZXZhbHVhdGVC
cmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mKTsKLQotICAgIGJv
b2wgY2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNw
YXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoRnVuY3Rpb248dm9pZChTY3JpcHREZWJ1Z0xpc3RlbmVy
Jik+IGNhbGxiYWNrKTsKLQotICAgIGJvb2wgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRz
IHsgdHJ1ZSB9OwotCi1wcml2YXRlOgotICAgIHR5cGVkZWYgSGFzaE1hcDxKU0M6OkJyZWFrcG9p
bnRJRCwgQnJlYWtwb2ludEFjdGlvbnM+IEJyZWFrcG9pbnRJRFRvQWN0aW9uc01hcDsKLQotICAg
IHZvaWQgc291cmNlUGFyc2VkKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OlNvdXJjZVByb3Zp
ZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1zZykgZmluYWw7Ci0gICAg
dm9pZCB3aWxsUnVuTWljcm90YXNrKCkgZmluYWw7Ci0gICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2so
KSBmaW5hbDsKLSAgICB2b2lkIGhhbmRsZUJyZWFrcG9pbnRIaXQoSlNDOjpKU0dsb2JhbE9iamVj
dCosIGNvbnN0IEpTQzo6QnJlYWtwb2ludCYpIGZpbmFsOwotICAgIHZvaWQgaGFuZGxlRXhjZXB0
aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2Vw
dGlvbiopIGNvbnN0IGZpbmFsOwotICAgIHZvaWQgaGFuZGxlUGF1c2UoSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RGVidWdnZXI6OlJlYXNvbkZvclBhdXNlKSBmaW5hbDsKLSAgICB2b2lkIG5v
dGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSBmaW5hbDsKLQotICAgIEpTQzo6SlNW
YWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLQotICAg
IEJyZWFrcG9pbnRJRFRvQWN0aW9uc01hcCBtX2JyZWFrcG9pbnRJRFRvQWN0aW9uczsKLSAgICBI
YXNoU2V0PFNjcmlwdERlYnVnTGlzdGVuZXIqPiBtX2xpc3RlbmVyczsKLSAgICBib29sIG1fY2Fs
bGluZ0xpc3RlbmVycyB7IGZhbHNlIH07Ci0gICAgdW5zaWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJ
ZCB7IDEgfTsKLSAgICB1bnNpZ25lZCBtX2N1cnJlbnRQcm9iZUJhdGNoSWQgeyAwIH07Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKaW5k
ZXggYmZkNzc3NGNmM2Q3MzVjZGVhZTdlYjE5ZDFhZTQ1MjQxNjVlMzVjNi4uOTdjZWE5NGJkNWFm
YWE2NWFlNDAzYTNkMDk1MDUyZWQ3OTkyOTI5OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5j
cHAKQEAgLTI2LDEwICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckF1ZGl0QWdlbnQuaCIKIAorI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJPYmplY3RD
b25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4
dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMDUsOSArMTA1LDkgQEAgdm9pZCBJbnNwZWN0b3JBdWRp
dEFnZW50OjpydW4oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRlc3Qs
IGNvbnMKIAogICAgIE9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKIAotICAgIFNjcmlw
dERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgp
OworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gbV9zY3JpcHREZWJ1
Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVz
ZU9uRXhjZXB0aW9ucyk7CisgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKERlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25z
b2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5leGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlv
blN0cmluZy50b1N0cmluZygpLCBXVEZNb3ZlKG9wdGlvbnMpLCByZXN1bHQsIHdhc1Rocm93biwg
c2F2ZWRSZXN1bHRJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKaW5kZXggODNiY2NhNjI5
NzU0OGRlM2Y2ODAxOWRlNWZmNTMxM2VmNzRhMjY4Yy4uMDZiMWE4M2ZkODIzNTM2MDgwMjY1Zjli
OWIyMmYwNjU2OTBjZWM0MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApAQCAtMzIsMTEgKzMy
LDE0IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFi
bGUuaD4KIAorbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKK30KKwogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiAKIGNsYXNzIEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwotY2xhc3MgU2NyaXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJv
clN0cmluZzsKIAogY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yQXVkaXRBZ2VudCA6
IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UsIHB1YmxpYyBBdWRpdEJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlciB7CkBAIC03MSw3ICs3NCw3IEBAIHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVm
UHRyPEF1ZGl0QmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBTY3JpcHRE
ZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3Nj
cmlwdERlYnVnU2VydmVyOwogCiAgICAgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9pbmpl
Y3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCAyOWMxMzBiOTY1Y2EyNjU2NDFjNDBmNzUwOTljZjZlYmQyNjQwMDcyLi42
ZjA2MTJiMjZjNmJhN2Q0OTQ3YTE4NWU4YmFjOWFhMTM4OTY0OTk2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzIsMTIgKzMyLDE2IEBACiAKICNpbmNsdWRlICJBc3lu
Y1N0YWNrVHJhY2UuaCIKICNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCisjaW5j
bHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAi
SW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNp
bmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q2Fs
bEZyYW1lLmgiCiAjaW5jbHVkZSAiUmVndWxhckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3Jp
cHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5j
bHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNp
bmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTUwLDkgKzU0LDkgQEAgY29uc3QgY2hh
ciogY29uc3QgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAi
YmFja3RyYWNlIjsKIC8vIGFjY29yZGluZyB0byB0aGUgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRp
ZmllciBhc3NpZ25lZCBieSB0aGUgZnJvbnRlbmQuIEEgYnJlYWtwb2ludCBtYXkKIC8vIGhhdmUg
c2V2ZXJhbCBvYmplY3QgZ3JvdXBzLCBhbmQgb2JqZWN0cyBmcm9tIHNldmVyYWwgYmFja2VuZCBi
cmVha3BvaW50IGFjdGlvbiBpbnN0YW5jZXMgbWF5CiAvLyBjcmVhdGUgb2JqZWN0cyBpbiB0aGUg
c2FtZSBncm91cC4KLXN0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9u
KGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbikKK3N0YXRpYyBTdHJpbmcgb2Jq
ZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGlkKQog
ewotICAgIHJldHVybiBtYWtlU3RyaW5nKCJicmVha3BvaW50LWFjdGlvbi0iLCBhY3Rpb24uaWRl
bnRpZmllcik7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcoImJyZWFrcG9pbnQtYWN0aW9uLSIsIGlk
KTsKIH0KIAogc3RhdGljIGJvb2wgaXNXZWJLaXRJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcm
IHNvdXJjZVVSTCkKQEAgLTYwLDYgKzY0LDE1NiBAQCBzdGF0aWMgYm9vbCBpc1dlYktpdEluamVj
dGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQogICAgIHJldHVybiBzb3VyY2VVUkwu
c3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlwdF8iKSAmJiBzb3VyY2VVUkwuZW5kc1dpdGgoIi5q
cyIpOwogfQogCitzdGF0aWMgT3B0aW9uYWw8SlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU+
IGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQoreworICAgIGF1dG8gdHlwZSA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZT4odHlwZVN0
cmluZyk7CisgICAgaWYgKCF0eXBlKSB7CisgICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmlu
ZygiVW5rbm93biBicmVha3BvaW50IGFjdGlvbiB0eXBlOiAiX3MsIHR5cGVTdHJpbmcpOworICAg
ICAgICByZXR1cm4gV1RGOjpudWxsb3B0OworICAgIH0KKworICAgIHN3aXRjaCAoKnR5cGUpIHsK
KyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9u
OjpUeXBlOjpMb2c6CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlw
ZTo6TG9nOworCisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludEFjdGlvbjo6VHlwZTo6RXZhbHVhdGU6CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9p
bnQ6OkFjdGlvbjo6VHlwZTo6RXZhbHVhdGU7CisKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZDoKKyAgICAgICAgcmV0
dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpTb3VuZDsKKworICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2Jl
OgorICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OlByb2JlOwor
ICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPgorc3RhdGljIFQgcGFyc2VCcmVha3BvaW50
T3B0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0
aW9uc1BheWxvYWQsIEZ1bmN0aW9uPFQoY29uc3QgU3RyaW5nJiwgSlNDOjpCcmVha3BvaW50OjpB
Y3Rpb25zVmVjdG9yJiYsIGJvb2wsIHNpemVfdCk+IGNhbGxiYWNrKQoreworICAgIFN0cmluZyBj
b25kaXRpb247CisgICAgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yIGFjdGlvbnM7Cisg
ICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKKyAgICBzaXplX3QgaWdub3JlQ291bnQgPSAw
OworCisgICAgaWYgKG9wdGlvbnNQYXlsb2FkKSB7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5n
ZXRTdHJpbmcoImNvbmRpdGlvbiJfcywgY29uZGl0aW9uKTsKKworICAgICAgICBSZWZQdHI8SlNP
Tjo6QXJyYXk+IGFjdGlvbnNQYXlsb2FkOworICAgICAgICBvcHRpb25zUGF5bG9hZC0+Z2V0QXJy
YXkoImFjdGlvbnMiX3MsIGFjdGlvbnNQYXlsb2FkKTsKKyAgICAgICAgaWYgKGF1dG8gY291bnQg
PSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQYXlsb2FkLT5sZW5ndGgoKSA6IDApIHsKKyAgICAg
ICAgICAgIGFjdGlvbnMucmVzZXJ2ZUNhcGFjaXR5KGNvdW50KTsKKworICAgICAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiBhY3Rpb25PYmplY3Q7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rp
b25zUGF5bG9hZC0+Z2V0KGkpLT5hc09iamVjdChhY3Rpb25PYmplY3QpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVtIGluIGdp
dmVuIGFjdGlvbnMiX3M7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgU3RyaW5nIGFjdGlvblR5cGVTdHJpbmc7Cisg
ICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25PYmplY3QtPmdldFN0cmluZygidHlwZSJfcywgYWN0
aW9uVHlwZVN0cmluZykpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlz
c2luZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0
byBhY3Rpb25UeXBlID0gYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoZXJyb3JTdHJpbmcs
IGFjdGlvblR5cGVTdHJpbmcpOworICAgICAgICAgICAgICAgIGlmICghYWN0aW9uVHlwZSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKworICAgICAgICAgICAgICAgIEpTQzo6QnJl
YWtwb2ludDo6QWN0aW9uIGFjdGlvbigqYWN0aW9uVHlwZSk7CisKKyAgICAgICAgICAgICAgICBh
Y3Rpb25PYmplY3QtPmdldFN0cmluZygiZGF0YSJfcywgYWN0aW9uLmRhdGEpOworCisgICAgICAg
ICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBpZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFy
ZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBzYW1wbGVzCisgICAgICAgICAgICAgICAgLy8gaW4g
dGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBsZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNl
Z3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgorICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdC0+Z2V0
SW50ZWdlcigiaWQiX3MsIGFjdGlvbi5pZCk7CisKKyAgICAgICAgICAgICAgICBhY3Rpb25zLmFw
cGVuZChXVEZNb3ZlKGFjdGlvbikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgb3B0aW9uc1BheWxvYWQtPmdldEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRp
bnVlKTsKKyAgICAgICAgb3B0aW9uc1BheWxvYWQtPmdldEludGVnZXIoImlnbm9yZUNvdW50Il9z
LCBpZ25vcmVDb3VudCk7CisgICAgfQorCisgICAgcmV0dXJuIGNhbGxiYWNrKGNvbmRpdGlvbiwg
V1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Cit9CisKK09wdGlv
bmFsPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIEpTQzo6U291cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5
bG9hZCkKK3sKKyAgICByZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90
b2NvbEJyZWFrcG9pbnQ+PihlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQsIFsmXSAoY29uc3Qg
U3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlv
bnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFBy
b3RvY29sQnJlYWtwb2ludD4geworICAgICAgICByZXR1cm4gUHJvdG9jb2xCcmVha3BvaW50KHNv
dXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rp
b25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAgfSk7Cit9CisKK09wdGlvbmFs
PEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxp
bmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zUGF5bG9hZCkKK3sKKyAgICByZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25h
bDxQcm90b2NvbEJyZWFrcG9pbnQ+PihlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQsIFsmXSAo
Y29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYm
IGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlv
bmFsPFByb3RvY29sQnJlYWtwb2ludD4geworICAgICAgICByZXR1cm4gUHJvdG9jb2xCcmVha3Bv
aW50KHVybCwgaXNSZWdleCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIFdU
Rk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOworICAgIH0pOworfQor
CitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJl
YWtwb2ludCgpID0gZGVmYXVsdDsKKworSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xC
cmVha3BvaW50OjpQcm90b2NvbEJyZWFrcG9pbnQoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5z
aWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNv
bmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBh
dXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkKKyAgICA6IG1faWQobWFrZVN0cmluZyhz
b3VyY2VJRCwgJzonLCBsaW5lTnVtYmVyLCAnOicsIGNvbHVtbk51bWJlcikpCisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAsIG1fc291cmNlSUQoc291cmNlSUQpCisjZW5kaWYKKyAgICAsIG1fbGlu
ZU51bWJlcihsaW5lTnVtYmVyKQorICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQor
ICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQorICAgICwgbV9hY3Rpb25zKFdURk1vdmUoYWN0
aW9ucykpCisgICAgLCBtX2F1dG9Db250aW51ZShhdXRvQ29udGludWUpCisgICAgLCBtX2lnbm9y
ZUNvdW50KGlnbm9yZUNvdW50KQoreworfQorCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90
b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgYm9v
bCBpc1JlZ2V4LCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBh
Y3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KQorICAgIDogbV9p
ZChtYWtlU3RyaW5nKGlzUmVnZXggPyAiLyIgOiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi8iIDogIiIs
ICc6JywgbGluZU51bWJlciwgJzonLCBjb2x1bW5OdW1iZXIpKQorICAgICwgbV91cmwodXJsKQor
ICAgICwgbV9pc1JlZ2V4KGlzUmVnZXgpCisgICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikK
KyAgICAsIG1fY29sdW1uTnVtYmVyKGNvbHVtbk51bWJlcikKKyAgICAsIG1fY29uZGl0aW9uKGNv
bmRpdGlvbikKKyAgICAsIG1fYWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRv
Q29udGludWUoYXV0b0NvbnRpbnVlKQorICAgICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkK
K3sKK30KKworUmVmPEpTQzo6QnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJv
dG9jb2xCcmVha3BvaW50OjpjcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50
SUQgZGVidWdnZXJCcmVha3BvaW50SUQsIEpTQzo6U291cmNlSUQgc291cmNlSUQpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGRlYnVnZ2VyQnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQp
OworICAgIEFTU0VSVChzb3VyY2VJRCAhPSBKU0M6Om5vU291cmNlSUQpOworICAgIEFTU0VSVChz
b3VyY2VJRCA9PSBtX3NvdXJjZUlEIHx8IG1fc291cmNlSUQgPT0gSlNDOjpub1NvdXJjZUlEKTsK
KworICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gSlNDOjpCcmVha3BvaW50OjpjcmVhdGUo
ZGVidWdnZXJCcmVha3BvaW50SUQsIG1fY29uZGl0aW9uLCBjb3B5VG9WZWN0b3IobV9hY3Rpb25z
KSwgbV9hdXRvQ29udGludWUsIG1faWdub3JlQ291bnQpOworICAgIGRlYnVnZ2VyQnJlYWtwb2lu
dC0+bGluayhzb3VyY2VJRCwgbV9saW5lTnVtYmVyLCBtX2NvbHVtbk51bWJlcik7CisgICAgcmV0
dXJuIGRlYnVnZ2VyQnJlYWtwb2ludDsKK30KKworYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpQcm90b2NvbEJyZWFrcG9pbnQ6Om1hdGNoZXMoY29uc3QgU3RyaW5nJiBzY3JpcHRVUkwpIGNv
bnN0Cit7CisgICAgQVNTRVJUKG1fc291cmNlSUQgPT0gSlNDOjpub1NvdXJjZUlEKTsKKworICAg
IGlmIChtX2lzUmVnZXgpIHsKKyAgICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiBy
ZWdleChtX3VybCk7CisgICAgICAgIHJldHVybiByZWdleC5tYXRjaChzY3JpcHRVUkwpICE9IC0x
OworICAgIH0KKyAgICByZXR1cm4gbV91cmwgPT0gc2NyaXB0VVJMOworfQorCitSZWZQdHI8SlND
OjpCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRG
cm9tUGF5bG9hZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCog
b3B0aW9uc1BheWxvYWQpCit7CisgICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8UmVm
UHRyPEpTQzo6QnJlYWtwb2ludD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgW10gKGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBh
Y3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KSB7CisgICAgICAg
IHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZShKU0M6Om5vQnJlYWtwb2ludElELCBjb25k
aXRpb24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOworICAg
IH0pOworfQorCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KEFnZW50Q29udGV4dCYgY29udGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdn
ZXIiX3MpCiAgICAgLCBtX2Zyb250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyPihjb250ZXh0LmZyb250ZW5kUm91dGVyKSkKQEAgLTg3LDcgKzI0MSw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBtX2VuYWJs
ZWQgPSB0cnVlOwogCi0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5hZGRMaXN0ZW5lcih0aGlzKTsK
KyAgICBtX3NjcmlwdERlYnVnU2VydmVyLmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIGZvciAo
YXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0
ZW5lci0+ZGVidWdnZXJXYXNFbmFibGVkKCk7CkBAIC0xMDgsMTUgKzI2MiwxMyBAQCB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogICAg
IGZvciAoYXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAg
ICBsaXN0ZW5lci0+ZGVidWdnZXJXYXNEaXNhYmxlZCgpOwogCi0gICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5yZW1vdmVMaXN0ZW5lcih0aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKKyAgICBtX3Njcmlw
dERlYnVnU2VydmVyLnJlbW92ZU9ic2VydmVyKCp0aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKIAog
ICAgIGNsZWFySW5zcGVjdG9yQnJlYWtwb2ludFN0YXRlKCk7CiAKICAgICBpZiAoIWlzQmVpbmdE
ZXN0cm95ZWQpCiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuZGVhY3RpdmF0ZUJyZWFrcG9p
bnRzKCk7CiAKLSAgICBBU1NFUlQobV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuaXNFbXB0eSgpKTsK
LQogICAgIGNsZWFyQXN5bmNTdGFja1RyYWNlRGF0YSgpOwogCiAgICAgbV9wYXVzZU9uQXNzZXJ0
aW9uRmFpbHVyZXMgPSBmYWxzZTsKQEAgLTIwNiwxNyArMzU4LDIyIEBAIHN0YXRpYyBSZWZQdHI8
SlNPTjo6T2JqZWN0PiBidWlsZENTUFZpb2xhdGlvblBhdXNlUmVhc29uKGNvbnN0IFN0cmluZyYg
ZGlyZWN0aXZlCiAgICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOwogfQogCi1SZWZQ
dHI8SlNPTjo6T2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQ
YXVzZVJlYXNvbihKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVy
KQorUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVh
a3BvaW50UGF1c2VSZWFzb24oSlNDOjpCcmVha3BvaW50SUQgZGVidWdnZXJCcmVha3BvaW50SUQp
CiB7Ci0gICAgQVNTRVJUKGRlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIgIT0gSlNDOjpub0Jy
ZWFrcG9pbnRJRCk7Ci0gICAgYXV0byBpdCA9IG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmll
clRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZpZXIuZmluZChkZWJ1Z2dlckJyZWFrcG9pbnRJ
ZGVudGlmaWVyKTsKLSAgICBpZiAoaXQgPT0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVy
VG9JbnNwZWN0b3JCcmVha3BvaW50SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51
bGxwdHI7CisgICAgQVNTRVJUKGRlYnVnZ2VyQnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3Bv
aW50SUQpOwogCi0gICAgYXV0byByZWFzb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9p
bnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKLSAgICAgICAgLnNldEJyZWFrcG9pbnRJZChpdC0+dmFs
dWUpCi0gICAgICAgIC5yZWxlYXNlKCk7Ci0gICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29y
cygpOworICAgIGZvciAoYXV0byYgW3Byb3RvY29sQnJlYWtwb2ludElELCBkZWJ1Z2dlckJyZWFr
cG9pbnRzXSA6IG1fZGVidWdnZXJCcmVha3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElEKSB7
CisgICAgICAgIGZvciAoYXV0byYgZGVidWdnZXJCcmVha3BvaW50IDogZGVidWdnZXJCcmVha3Bv
aW50cykgeworICAgICAgICAgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludC0+aWQoKSA9PSBkZWJ1
Z2dlckJyZWFrcG9pbnRJRCkgeworICAgICAgICAgICAgICAgIGF1dG8gcmVhc29uID0gUHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50UGF1c2VSZWFzb246OmNyZWF0ZSgpCisgICAgICAgICAg
ICAgICAgICAgIC5zZXRCcmVha3BvaW50SWQocHJvdG9jb2xCcmVha3BvaW50SUQpCisgICAgICAg
ICAgICAgICAgICAgIC5yZWxlYXNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYXNvbi0+
b3BlbkFjY2Vzc29ycygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIG51bGxwdHI7CiB9CiAKIFJlZlB0cjxKU09OOjpPYmplY3Q+IEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJ1aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24oSlNDOjpKU1ZhbHVlIGV4Y2VwdGlv
biwgY29uc3QgSW5qZWN0ZWRTY3JpcHQmIGluamVjdGVkU2NyaXB0KQpAQCAtMjM0LDcgKzM5MSw3
IEBAIFJlZlB0cjxKU09OOjpPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhj
ZXB0aW9uUGF1c2VSZWFzb24oSlNDOjpKU1ZhCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6aGFuZGxlQ29uc29sZUFzc2VydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYg
KCFtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVh
a3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uQXNz
ZXJ0aW9uRmFpbHVyZXMpCkBAIC0yNTEsNyArNDA4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRTY2hlZHVsZUFzeW5jQ2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmoKICAgICBpZiAoIW1fYXN5bmNTdGFja1RyYWNlRGVwdGgpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5icmVha3BvaW50c0FjdGl2ZSgpKQorICAgIGlm
ICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPFNjcmlw
dENhbGxTdGFjaz4gY2FsbFN0YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGdsb2JhbE9iamVj
dCwgbV9hc3luY1N0YWNrVHJhY2VEZXB0aCk7CkBAIC0zMzMsMTA3ICs0OTAsMTUgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWREaXNwYXRjaEFzeW5jQ2FsbCgpCiAgICAgICAgIG1f
cGVuZGluZ0FzeW5jQ2FsbHMucmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCi1zdGF0aWMgUmVmPEpT
T046Ok9iamVjdD4gYnVpbGRPYmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmluZyYg
dXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25k
aXRpb24sIFJlZlB0cjxKU09OOjpBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdleCwgYm9vbCBh
dXRvQ29udGludWUsIHVuc2lnbmVkIGlnbm9yZUNvdW50KQorc3RhdGljIFJlZlB0cjxQcm90b2Nv
bDo6RGVidWdnZXI6OkxvY2F0aW9uPiBidWlsZERlYnVnZ2VyTG9jYXRpb24oY29uc3QgSlNDOjpC
cmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7Ci0gICAgUmVmPEpTT046Ok9iamVjdD4g
YnJlYWtwb2ludE9iamVjdCA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0U3RyaW5nKCJ1cmwiX3MsIHVybCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+
c2V0SW50ZWdlcigibGluZU51bWJlciJfcywgbGluZU51bWJlcik7Ci0gICAgYnJlYWtwb2ludE9i
amVjdC0+c2V0SW50ZWdlcigiY29sdW1uTnVtYmVyIl9zLCBjb2x1bW5OdW1iZXIpOwotICAgIGJy
ZWFrcG9pbnRPYmplY3QtPnNldFN0cmluZygiY29uZGl0aW9uIl9zLCBjb25kaXRpb24pOwotICAg
IGJyZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oImlzUmVnZXgiX3MsIGlzUmVnZXgpOwotICAg
IGJyZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRp
bnVlKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywg
aWdub3JlQ291bnQpOwotCi0gICAgaWYgKGFjdGlvbnMpCi0gICAgICAgIGJyZWFrcG9pbnRPYmpl
Y3QtPnNldEFycmF5KCJhY3Rpb25zIl9zLCBhY3Rpb25zKTsKLQotICAgIHJldHVybiBicmVha3Bv
aW50T2JqZWN0OwotfQotCi1zdGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIHBhdHRlcm4sIGJvb2wgaXNSZWdleCkKLXsKLSAgICBpZiAoaXNSZWdleCkg
ewotICAgICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4pOwot
ICAgICAgICByZXR1cm4gcmVnZXgubWF0Y2godXJsKSAhPSAtMTsKLSAgICB9Ci0gICAgcmV0dXJu
IHVybCA9PSBwYXR0ZXJuOwotfQotCi1zdGF0aWMgYm9vbCBicmVha3BvaW50QWN0aW9uVHlwZUZv
clN0cmluZyhjb25zdCBTdHJpbmcmIHR5cGVTdHJpbmcsIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25U
eXBlKiBvdXRwdXQpCi17Ci0gICAgaWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3Rv
ckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludEFjdGlvbjo6VHlwZTo6TG9nKSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtw
b2ludEFjdGlvblR5cGVMb2c7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAo
dHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50
VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0
ZSkpIHsKLSAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVh
dGU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBQ
cm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6
OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKLSAgICAgICAgKm91
dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlU291bmQ7Ci0gICAgICAgIHJldHVybiB0
cnVlOwotICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVs
cGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
QWN0aW9uOjpUeXBlOjpQcm9iZSkpIHsKLSAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb25UeXBlUHJvYmU7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJl
dHVybiBmYWxzZTsKLX0KLQotYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09O
OjpBcnJheT4mIGFjdGlvbnMsIEJyZWFrcG9pbnRBY3Rpb25zKiByZXN1bHQpCi17Ci0gICAgaWYg
KCFhY3Rpb25zKQotICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgIHVuc2lnbmVkIGFjdGlvbnNM
ZW5ndGggPSBhY3Rpb25zLT5sZW5ndGgoKTsKLSAgICBpZiAoIWFjdGlvbnNMZW5ndGgpCi0gICAg
ICAgIHJldHVybiB0cnVlOwotCi0gICAgcmVzdWx0LT5yZXNlcnZlQ2FwYWNpdHkoYWN0aW9uc0xl
bmd0aCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGFjdGlvbnNMZW5ndGg7ICsraSkg
ewotICAgICAgICBSZWZQdHI8SlNPTjo6VmFsdWU+IHZhbHVlID0gYWN0aW9ucy0+Z2V0KGkpOwot
ICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBvYmplY3Q7Ci0gICAgICAgIGlmICghdmFsdWUt
PmFzT2JqZWN0KG9iamVjdCkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0
ZWQgbm9uLW9iamVjdCBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7Ci0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZzsKLSAgICAg
ICAgaWYgKCFvYmplY3QtPmdldFN0cmluZygidHlwZSJfcywgdHlwZVN0cmluZykpIHsKLSAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gIk1pc3NpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rp
b25zIl9zOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAg
U2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUgdHlwZTsKLSAgICAgICAgaWYgKCFicmVha3BvaW50
QWN0aW9uVHlwZUZvclN0cmluZyh0eXBlU3RyaW5nLCAmdHlwZSkpIHsKLSAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIk5vbi1zdHJpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9z
OwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3Bl
Y2lmeWluZyBhbiBpZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJl
bGF0ZSBwcm9iZSBzYW1wbGVzCi0gICAgICAgIC8vIGluIHRoZSBmcm9udGVuZCBhY3Jvc3MgbXVs
dGlwbGUgYmFja2VuZCBwcm9iZSBhY3Rpb25zIGFuZCBzZWdyZWdhdGUgb2JqZWN0IGdyb3Vwcy4K
LSAgICAgICAgaW50IGlkZW50aWZpZXIgPSAwOwotICAgICAgICBvYmplY3QtPmdldEludGVnZXIo
ImlkIl9zLCBpZGVudGlmaWVyKTsKLQotICAgICAgICBTdHJpbmcgZGF0YTsKLSAgICAgICAgb2Jq
ZWN0LT5nZXRTdHJpbmcoImRhdGEiX3MsIGRhdGEpOwotCi0gICAgICAgIHJlc3VsdC0+YXBwZW5k
KFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24odHlwZSwgaWRlbnRpZmllciwgZGF0YSkpOwotICAgIH0K
LQotICAgIHJldHVybiB0cnVlOwotfQotCi1zdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+IGJ1aWxkRGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcG9pbnQm
IGJyZWFrcG9pbnQpCi17Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2ZWQpOworICAgIEFT
U0VSVChkZWJ1Z2dlckJyZWFrcG9pbnQuaXNSZXNvbHZlZCgpKTsKIAogICAgIGF1dG8gbG9jYXRp
b24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQotICAgICAgICAuc2V0
U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIoYnJlYWtwb2ludC5zb3VyY2VJRCkpCi0gICAgICAgIC5z
ZXRMaW5lTnVtYmVyKGJyZWFrcG9pbnQubGluZSkKKyAgICAgICAgLnNldFNjcmlwdElkKFN0cmlu
Zzo6bnVtYmVyKGRlYnVnZ2VyQnJlYWtwb2ludC5zb3VyY2VJRCgpKSkKKyAgICAgICAgLnNldExp
bmVOdW1iZXIoZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIoKSkKICAgICAgICAgLnJlbGVh
c2UoKTsKLSAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGJyZWFrcG9pbnQuY29sdW1uKTsK
KyAgICBsb2NhdGlvbi0+c2V0Q29sdW1uTnVtYmVyKGRlYnVnZ2VyQnJlYWtwb2ludC5jb2x1bW5O
dW1iZXIoKSk7CiAKICAgICByZXR1cm4gbG9jYXRpb247CiB9CkBAIC00NTksNjggKzUyNCw0OCBA
QCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25z
dCBTdHJpbmcqIG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1i
ZXIsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQ
cm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
Zyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBvdXRMb2NhdGlvbnMpCiB7Ci0gICAgbG9jYXRpb25zID0g
SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAg
ICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewogICAgICAgICBlcnJv
clN0cmluZyA9ICJFaXRoZXIgdXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkIl9zOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU3RyaW5nIHVybCA9IG9wdGlvbmFsVVJMID8g
Km9wdGlvbmFsVVJMIDogKm9wdGlvbmFsVVJMUmVnZXg7Ci0gICAgaW50IGNvbHVtbk51bWJlciA9
IG9wdGlvbmFsQ29sdW1uTnVtYmVyID8gKm9wdGlvbmFsQ29sdW1uTnVtYmVyIDogMDsKLSAgICBi
b29sIGlzUmVnZXggPSBvcHRpb25hbFVSTFJlZ2V4OworICAgIGF1dG8gcHJvdG9jb2xCcmVha3Bv
aW50ID0gUHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9u
YWxVUkwgPyAqb3B0aW9uYWxVUkwgOiAqb3B0aW9uYWxVUkxSZWdleCwgISFvcHRpb25hbFVSTFJl
Z2V4LCBsaW5lTnVtYmVyLCBvcHRpb25hbENvbHVtbk51bWJlciA/ICpvcHRpb25hbENvbHVtbk51
bWJlciA6IDAsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIXByb3RvY29sQnJlYWtwb2ludCkK
KyAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVyID0gbWFr
ZVN0cmluZyhpc1JlZ2V4ID8gIi8iIDogIiIsIHVybCwgaXNSZWdleCA/ICIvOiIgOiAiOiIsIGxp
bmVOdW1iZXIsICc6JywgY29sdW1uTnVtYmVyKTsKLSAgICBpZiAobV9qYXZhU2NyaXB0QnJlYWtw
b2ludHMuY29udGFpbnMoYnJlYWtwb2ludElkZW50aWZpZXIpKSB7CisgICAgaWYgKG1fcHJvdG9j
b2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY29udGFpbnMocHJvdG9jb2xCcmVh
a3BvaW50LT5pZCgpKSkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBn
aXZlbiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cy4iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBTdHJpbmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBib29sIGF1dG9D
b250aW51ZSA9IGZhbHNlOwotICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsKLSAgICBSZWZQ
dHI8SlNPTjo6QXJyYXk+IGFjdGlvbnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgb3B0
aW9ucy0+Z2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgICAgIG9wdGlv
bnMtPmdldEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICAgICAg
b3B0aW9ucy0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBvcHRpb25z
LT5nZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotICAgIH0KKyAgICBt
X3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElELnNldChwcm90b2NvbEJy
ZWFrcG9pbnQtPmlkKCksICpwcm90b2NvbEJyZWFrcG9pbnQpOwogCi0gICAgQnJlYWtwb2ludEFj
dGlvbnMgYnJlYWtwb2ludEFjdGlvbnM7Ci0gICAgaWYgKCFicmVha3BvaW50QWN0aW9uc0Zyb21Q
cm90b2NvbChlcnJvclN0cmluZywgYWN0aW9ucywgJmJyZWFrcG9pbnRBY3Rpb25zKSkKLSAgICAg
ICAgcmV0dXJuOworICAgIG91dExvY2F0aW9ucyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRl
YnVnZ2VyOjpMb2NhdGlvbj46OmNyZWF0ZSgpOwogCi0gICAgbV9qYXZhU2NyaXB0QnJlYWtwb2lu
dHMuc2V0KGJyZWFrcG9pbnRJZGVudGlmaWVyLCBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29r
aWUodXJsLCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYWN0aW9ucywgaXNS
ZWdleCwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCkpOwotCi0gICAgZm9yIChhdXRvJiBlbnRy
eSA6IG1fc2NyaXB0cykgewotICAgICAgICBTY3JpcHQmIHNjcmlwdCA9IGVudHJ5LnZhbHVlOwor
ICAgIGZvciAoYXV0byYgW3NvdXJjZUlELCBzY3JpcHRdIDogbV9zY3JpcHRzKSB7CiAgICAgICAg
IFN0cmluZyBzY3JpcHRVUkxGb3JCcmVha3BvaW50cyA9ICFzY3JpcHQuc291cmNlVVJMLmlzRW1w
dHkoKSA/IHNjcmlwdC5zb3VyY2VVUkwgOiBzY3JpcHQudXJsOwotICAgICAgICBpZiAoIW1hdGNo
ZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMsIHVybCwgaXNSZWdleCkpCisgICAgICAgIGlmICgh
cHJvdG9jb2xCcmVha3BvaW50LT5tYXRjaGVzKHNjcmlwdFVSTEZvckJyZWFrcG9pbnRzKSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBl
bnRyeS5rZXk7Ci0gICAgICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVD
b3VudCk7Ci0gICAgICAgIHJlc29sdmVCcmVha3BvaW50KHNjcmlwdCwgYnJlYWtwb2ludCk7Ci0g
ICAgICAgIGlmICghYnJlYWtwb2ludC5yZXNvbHZlZCkKKyAgICAgICAgYXV0byBkZWJ1Z2dlckJy
ZWFrcG9pbnQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludCht
X25leHREZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICAgICAgaWYgKCFy
ZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICBib29sIGV4aXN0aW5nOwotICAgICAgICBzZXRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICAgICAgaWYgKGV4aXN0aW5nKQorICAgICAg
ICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogCi0gICAgICAgIFNjcmlwdEJyZWFrcG9pbnQgc2NyaXB0QnJlYWtwb2ludChicmVh
a3BvaW50LmxpbmUsIGJyZWFrcG9pbnQuY29sdW1uLCBjb25kaXRpb24sIGJyZWFrcG9pbnRBY3Rp
b25zLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2lu
dChicmVha3BvaW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7Cisg
ICAgICAgIGRpZFNldEJyZWFrcG9pbnQoKnByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVh
a3BvaW50KTsKIAotICAgICAgICBsb2NhdGlvbnMtPmFkZEl0ZW0oYnVpbGREZWJ1Z2dlckxvY2F0
aW9uKGJyZWFrcG9pbnQpKTsKKyAgICAgICAgb3V0TG9jYXRpb25zLT5hZGRJdGVtKGJ1aWxkRGVi
dWdnZXJMb2NhdGlvbihkZWJ1Z2dlckJyZWFrcG9pbnQpKTsKICAgICB9CiAKLSAgICAqb3V0QnJl
YWtwb2ludElkZW50aWZpZXIgPSBicmVha3BvaW50SWRlbnRpZmllcjsKKyAgICAqb3V0QnJlYWtw
b2ludElkID0gcHJvdG9jb2xCcmVha3BvaW50LT5pZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwg
UmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0aW9uc1BheWxvYWQsIFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRC
cmVha3BvaW50SWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgb3V0QWN0
dWFsTG9jYXRpb24pCiB7CiAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25l
ZCBsaW5lTnVtYmVyOwpAQCAtNTI4LDkxICs1NzMsNzEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNP
TjoKICAgICBpZiAoIXBhcnNlTG9jYXRpb24oZXJyb3JTdHJpbmcsIGxvY2F0aW9uLCBzb3VyY2VJ
RCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3Ry
aW5nIGNvbmRpdGlvbiA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgYm9vbCBhdXRvQ29udGludWUgPSBm
YWxzZTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3VudCA9IDA7Ci0gICAgUmVmUHRyPEpTT046OkFy
cmF5PiBhY3Rpb25zOwotICAgIGlmIChvcHRpb25zKSB7Ci0gICAgICAgIG9wdGlvbnMtPmdldFN0
cmluZygiY29uZGl0aW9uIl9zLCBjb25kaXRpb24pOwotICAgICAgICBvcHRpb25zLT5nZXRCb29s
ZWFuKCJhdXRvQ29udGludWUiX3MsIGF1dG9Db250aW51ZSk7Ci0gICAgICAgIG9wdGlvbnMtPmdl
dEFycmF5KCJhY3Rpb25zIl9zLCBhY3Rpb25zKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0SW50ZWdl
cigiaWdub3JlQ291bnQiX3MsIGlnbm9yZUNvdW50KTsKLSAgICB9Ci0KLSAgICBCcmVha3BvaW50
QWN0aW9ucyBicmVha3BvaW50QWN0aW9uczsKLSAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJv
bVByb3RvY29sKGVycm9yU3RyaW5nLCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQotICAg
ICAgICByZXR1cm47Ci0KICAgICBhdXRvIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQo
c291cmNlSUQpOwogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpIHsK
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzY3JpcHQgZm9yIHNjcmlwdElkIGluIGdp
dmVuIGxvY2F0aW9uIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0JiBz
Y3JpcHQgPSBzY3JpcHRJdGVyYXRvci0+dmFsdWU7Ci0gICAgSlNDOjpCcmVha3BvaW50IGJyZWFr
cG9pbnQoc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRv
Q29udGludWUsIGlnbm9yZUNvdW50KTsKLSAgICByZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGJy
ZWFrcG9pbnQpOwotICAgIGlmICghYnJlYWtwb2ludC5yZXNvbHZlZCkgeworICAgIGF1dG8gcHJv
dG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0
cmluZywgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgb3B0aW9uc1BheWxvYWQp
OworICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAv
LyBEb24ndCBzYXZlIGBwcm90b2NvbEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJlYWtwb2lu
dEZvclByb3RvY29sQnJlYWtwb2ludElEYCBiZWNhdXNlIGl0CisgICAgLy8gd2FzIHNldCBzcGVj
aWZpY2FsbHkgZm9yIHRoZSBnaXZlbiBgc291cmNlSURgLCB3aGljaCBpcyB1bmlxdWUsIG1lYW5p
bmcgdGhhdCBpdCB3aWxsIG5ldmVyCisgICAgLy8gYmUgdXNlZCBpbnNpZGUgYEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlYC4KKworICAgIGF1dG8gZGVidWdnZXJCcmVha3Bv
aW50ID0gcHJvdG9jb2xCcmVha3BvaW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0
RGVidWdnZXJCcmVha3BvaW50SUQrKywgc291cmNlSUQpOworCisgICAgaWYgKCFyZXNvbHZlQnJl
YWtwb2ludChzY3JpcHRJdGVyYXRvci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludCJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgc2V0QnJlYWtw
b2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgaWYgKGV4aXN0aW5nKSB7CisgICAgaWYg
KCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiQnJlYWtwb2ludCBmb3IgZ2l2ZW4gbG9jYXRpb24gYWxyZWFkeSBleGlzdHMiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIg
PSBtYWtlU3RyaW5nKHNvdXJjZUlELCAnOicsIGJyZWFrcG9pbnQubGluZSwgJzonLCBicmVha3Bv
aW50LmNvbHVtbik7Ci0gICAgU2NyaXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50KGJyZWFr
cG9pbnQubGluZSwgYnJlYWtwb2ludC5jb2x1bW4sIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlv
bnMsIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwotICAgIGRpZFNldEJyZWFrcG9pbnQoYnJl
YWtwb2ludCwgYnJlYWtwb2ludElkZW50aWZpZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIGRp
ZFNldEJyZWFrcG9pbnQoKnByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsK
IAotICAgIGFjdHVhbExvY2F0aW9uID0gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGJyZWFrcG9pbnQp
OwotICAgICpvdXRCcmVha3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOwor
ICAgIG91dEFjdHVhbExvY2F0aW9uID0gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGRlYnVnZ2VyQnJl
YWtwb2ludCk7CisgICAgKm91dEJyZWFrcG9pbnRJZCA9IHByb3RvY29sQnJlYWtwb2ludC0+aWQo
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KGNv
bnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2ludCwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50
SWRlbnRpZmllciwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCkKK3Zv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkU2V0QnJlYWtwb2ludChQcm90b2NvbEJyZWFr
cG9pbnQmIHByb3RvY29sQnJlYWtwb2ludCwgSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFr
cG9pbnQpCiB7Ci0gICAgSlNDOjpCcmVha3BvaW50SUQgaWQgPSBicmVha3BvaW50LmlkOwotICAg
IG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0QnJlYWtwb2ludEFjdGlvbnMoaWQsIHNjcmlwdEJyZWFr
cG9pbnQpOworICAgIGF1dG8mIGRlYnVnZ2VyQnJlYWtwb2ludHMgPSBtX2RlYnVnZ2VyQnJlYWtw
b2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5lbnN1cmUocHJvdG9jb2xCcmVha3BvaW50Lmlk
KCksIFtdIHsKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludHNWZWN0b3IoKTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBhdXRvIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0
ZXJhdG9yID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURz
LmZpbmQoYnJlYWtwb2ludElkZW50aWZpZXIpOwotICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJRHNJdGVyYXRvciA9PSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFr
cG9pbnRJRHMuZW5kKCkpCi0gICAgICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9y
ID0gbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLnNldChi
cmVha3BvaW50SWRlbnRpZmllciwgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPigpKS5pdGVyYXRv
cjsKLSAgICBkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvci0+dmFsdWUuYXBwZW5kKGlk
KTsKLQotICAgIG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtw
b2ludElkZW50aWZpZXIuc2V0KGlkLCBicmVha3BvaW50SWRlbnRpZmllcik7CisgICAgZGVidWdn
ZXJCcmVha3BvaW50cy5hcHBlbmQoZGVidWdnZXJCcmVha3BvaW50KTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTY3JpcHQmIHNjcmlw
dCwgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50KQorYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmIHNjcmlw
dCwgSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7Ci0gICAgaWYgKGJyZWFr
cG9pbnQubGluZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuc3RhcnRMaW5lKSB8fCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0LmVuZExpbmUpIDwgYnJlYWtwb2ludC5saW5lKQot
ICAgICAgICByZXR1cm47CisgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludC5saW5lTnVtYmVyKCkg
PCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2NyaXB0LnN0YXJ0TGluZSkgfHwgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KHNjcmlwdC5lbmRMaW5lKSA8IGRlYnVnZ2VyQnJlYWtwb2ludC5saW5lTnVtYmVy
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVz
b2x2ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsK
KyAgICByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlci5yZXNvbHZlQnJlYWtwb2ludChkZWJ1Z2dl
ckJyZWFrcG9pbnQsIHNjcmlwdC5zb3VyY2VQcm92aWRlci5nZXQoKSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmIGJyZWFr
cG9pbnQsIGJvb2wmIGV4aXN0aW5nKQorYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRC
cmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYgZGVidWdnZXJCcmVha3BvaW50KQogewogICAgIEpT
Qzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOwotICAgIG1f
c2NyaXB0RGVidWdTZXJ2ZXIuc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7Cisg
ICAgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFr
cG9pbnQpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwg
Y29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCYgcHJvdG9j
b2xCcmVha3BvaW50SUQpCiB7Ci0gICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMucmVtb3ZlKGJy
ZWFrcG9pbnRJZGVudGlmaWVyKTsKKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29s
QnJlYWtwb2ludElELnJlbW92ZShwcm90b2NvbEJyZWFrcG9pbnRJRCk7CiAKLSAgICBmb3IgKEpT
Qzo6QnJlYWtwb2ludElEIGJyZWFrcG9pbnRJRCA6IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElEcy50YWtlKGJyZWFrcG9pbnRJZGVudGlmaWVyKSkgewotICAg
ICAgICBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJ
ZGVudGlmaWVyLnJlbW92ZShicmVha3BvaW50SUQpOwotCi0gICAgICAgIGNvbnN0IEJyZWFrcG9p
bnRBY3Rpb25zJiBicmVha3BvaW50QWN0aW9ucyA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIuZ2V0QWN0
aW9uc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludElEKTsKLSAgICAgICAgZm9yIChhdXRvJiBhY3Rp
b24gOiBicmVha3BvaW50QWN0aW9ucykKLSAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLnJlbGVhc2VPYmplY3RHcm91cChvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0
aW9uKSk7CisgICAgZm9yIChhdXRvJiBkZWJ1Z2dlckJyZWFrcG9pbnQgOiBtX2RlYnVnZ2VyQnJl
YWtwb2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC50YWtlKHByb3RvY29sQnJlYWtwb2ludElE
KSkgeworICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlvbiA6IGRlYnVnZ2VyQnJlYWtwb2lu
dC0+YWN0aW9ucygpKQorICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVsZWFz
ZU9iamVjdEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24uaWQpKTsK
IAogICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52
bSgpKTsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50QWN0aW9u
cyhicmVha3BvaW50SUQpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludElEKTsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVC
cmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCk7CiAgICAgfQogfQogCkBAIC02MzMsOSArNjU4
LDkgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9y
U3RyaW5nKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpIHsKLSAgICAgICAgbV9zY3JpcHRE
ZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2lu
dElEKTsKLSAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5v
QnJlYWtwb2ludElEOworICAgIGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtw
b2ludCkgeworICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1f
Y29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51
ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBudWxscHRyOwogICAgIH0KIAogICAgIEpT
Qzo6U291cmNlSUQgc291cmNlSUQ7CkBAIC02NTIsMjIgKzY3NywyMyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29uZGl0aW9u
OwotICAgIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291
bnQgPSAwOwotICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7
Ci0gICAgU2NyaXB0JiBzY3JpcHQgPSBzY3JpcHRJdGVyYXRvci0+dmFsdWU7Ci0gICAgcmVzb2x2
ZUJyZWFrcG9pbnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAgICBpZiAoIWJyZWFrcG9pbnQucmVz
b2x2ZWQpIHsKKyAgICBhdXRvIHByb3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2lu
dDo6ZnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpOworICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisK
KyAgICAvLyBEb24ndCBzYXZlIGBwcm90b2NvbEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJl
YWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElEYCBiZWNhdXNlIGl0CisgICAgLy8gaXMgYSB0
ZW1wb3JhcnkgYnJlYWtwb2ludCB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGBsb2Nh
dGlvbmAgaXMgcmVhY2hlZC4KKworICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9j
b2xCcmVha3BvaW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVh
a3BvaW50SUQrKywgc291cmNlSUQpOworCisgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3Jp
cHRJdGVyYXRvci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3Bh
dGNoZXItPnJlc3VtZWQoKTsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29s
dmUgYnJlYWtwb2ludCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgZXhp
c3Rpbmc7Ci0gICAgc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgaWYg
KGV4aXN0aW5nKSB7CisgICAgaWYgKCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkp
IHsKICAgICAgICAgLy8gVGhlcmUgaXMgYW4gZXhpc3RpbmcgYnJlYWtwb2ludCBhdCB0aGlzIGxv
Y2F0aW9uLiBJbnN0ZWFkIG9mCiAgICAgICAgIC8vIGFjdGluZyBsaWtlIGEgc2VyaWVzIG9mIHN0
ZXBzLCBqdXN0IHJlc3VtZSBhbmQgd2Ugd2lsbCBlaXRoZXIKICAgICAgICAgLy8gaGl0IHRoaXMg
bmV3IGJyZWFrcG9pbnQgb3Igbm90LgpAQCAtNjc2LDcgKzcwMiw3IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGludWVUb0xvY2F0
aW9uQnJlYWtwb2ludElEID0gYnJlYWtwb2ludC5pZDsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlv
bkRlYnVnZ2VyQnJlYWtwb2ludCA9IFdURk1vdmUoZGVidWdnZXJCcmVha3BvaW50KTsKIAogICAg
IC8vIFRyZWF0IHRoaXMgYXMgYSBzZXJpZXMgb2Ygc3RlcHMgdW50aWwgcmVhY2hpbmcgdGhlIG5l
dyBicmVha3BvaW50LgogICAgIC8vIFNvIGRvbid0IGlzc3VlIGEgcmVzdW1lZCBldmVudCB1bmxl
c3Mgd2UgZXhpdCB0aGUgVk0gd2l0aG91dCBwYXVzaW5nLgpAQCAtNzE5LDcgKzc0NSw3IEBAIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QKICAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkRldGFp
bHMoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uSWQsIGRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0
YSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9y
dHVuaXR5KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gcmVhc29uLCBSZWZQdHI8
SlNPTjo6T2JqZWN0PiYmIGRhdGEpCiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkKQogICAgICAgICByZXR1cm47CkBAIC03MjksMTAgKzc1NSwxMCBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9u
dGVuZERpc3BhdAogICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24sIFdURk1vdmUo
ZGF0YSkpOwogCiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2
ZXIudm0oKSk7Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVu
dCh0cnVlKTsKKyAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VBdE5leHRPcHBv
cnR1bml0eSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNl
T25OZXh0U3RhdGVtZW50KCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1
c2VBdE5leHRPcHBvcnR1bml0eSgpCiB7CiAgICAgaWYgKCFtX2phdmFTY3JpcHRQYXVzZVNjaGVk
dWxlZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNzQwLDEzICs3NjYsMzMgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAgICAgbV9qYXZh
U2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAogICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7
Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudChmYWxzZSk7
CisgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7
CiAgICAgbV9lbmFibGVQYXVzZVdoZW5JZGxlID0gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEpTQzo6QnJl
YWtwb2ludCYgYnJlYWtwb2ludCwgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBy
ZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3sKKyAgICBKU0M6OkpTTG9ja0hv
bGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKKworICAgIGlmICghbV9zY3Jp
cHREZWJ1Z1NlcnZlci5zY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0
YShyZWFzb24sIFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlND
OjpCcmVha3BvaW50JiBicmVha3BvaW50KQoreworICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZl
ci5jYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBjbGVhclBhdXNlRGV0YWlscygpOworICAgIHJldHVybiB0cnVl
OworfQorCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nJikK
IHsKLSAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OlBhdXNlT25OZXh0U3RhdGVtZW50LCBudWxscHRyKTsKKyAgICBzY2hl
ZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCkBAIC03NTYsNyArODAyLDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nKQogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FuY2VsUGF1c2VPbk5leHRT
dGF0ZW1lbnQoKTsKKyAgICBjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICBtX2NvbmRpdGlvblRvRGlz
cGF0Y2hSZXN1bWVkID0gU2hvdWxkRGlzcGF0Y2hSZXN1bWVkOjpXaGVuQ29udGludWVkOwogfQpA
QCAtODIyLDcgKzg2OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21l
SWRsZSgpCiAgICAgbV9yZWdpc3RlcmVkSWRsZUNhbGxiYWNrID0gZmFsc2U7CiAKICAgICBpZiAo
bV9jb25kaXRpb25Ub0Rpc3BhdGNoUmVzdW1lZCA9PSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6Oldo
ZW5JZGxlKSB7Ci0gICAgICAgIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgICAg
IGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJl
c3VtZWQoKTsKICAgICB9CkBAIC05NTgsNyArMTAwNCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3Vy
cmVuCiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENh
bGxTdGFjay5nZXQoKSk7CiB9CiAKLVN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3Vy
Y2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6
OlNjcmlwdCYgc2NyaXB0KQogewogICAgIHJldHVybiBzY3JpcHQuc291cmNlTWFwcGluZ1VSTDsK
IH0KQEAgLTk3OCw3ICsxMDI0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQ
YXVzZUZvckludGVybmFsU2NyaXB0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdWwKICAgICB9CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3Vy
Y2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0JiBzY3JpcHQpCit2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0IEpT
Qzo6RGVidWdnZXI6OlNjcmlwdCYgc2NyaXB0KQogewogICAgIFN0cmluZyBzY3JpcHRJRFN0ciA9
IFN0cmluZzo6bnVtYmVyKHNvdXJjZUlEKTsKICAgICBib29sIGhhc1NvdXJjZVVSTCA9ICFzY3Jp
cHQuc291cmNlVVJMLmlzRW1wdHkoKTsKQEAgLTEwMDQsNDQgKzEwNTAsMjEgQEAgdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlE
LCBjb25zdCBTY3JpcHQKICAgICBpZiAoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMuaXNFbXB0eSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9qYXZhU2NyaXB0
QnJlYWtwb2ludHMpIHsKLSAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9i
amVjdCA9IGVudHJ5LnZhbHVlOwotCi0gICAgICAgIGJvb2wgaXNSZWdleDsKLSAgICAgICAgU3Ry
aW5nIHVybDsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbigiaXNSZWdleCJf
cywgaXNSZWdleCk7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygidXJsIl9z
LCB1cmwpOwotICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMsIHVy
bCwgaXNSZWdleCkpCisgICAgZm9yIChhdXRvJiBwcm90b2NvbEJyZWFrcG9pbnQgOiBtX3Byb3Rv
Y29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElELnZhbHVlcygpKSB7CisgICAgICAg
IGlmICghcHJvdG9jb2xCcmVha3BvaW50Lm1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBzY3Jp
cHRCcmVha3BvaW50OwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKCJsaW5l
TnVtYmVyIl9zLCBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpOwotICAgICAgICBicmVha3Bv
aW50T2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2x1bW5OdW1iZXIiX3MsIHNjcmlwdEJyZWFrcG9pbnQu
Y29sdW1uTnVtYmVyKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJjb25k
aXRpb24iX3MsIHNjcmlwdEJyZWFrcG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgYnJlYWtwb2lu
dE9iamVjdC0+Z2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBzY3JpcHRCcmVha3BvaW50LmF1
dG9Db250aW51ZSk7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoImlnbm9y
ZUNvdW50Il9zLCBzY3JpcHRCcmVha3BvaW50Lmlnbm9yZUNvdW50KTsKLSAgICAgICAgRXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7Ci0gICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYWN0aW9uczsK
LSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMp
OwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVycm9yU3RyaW5n
LCBhY3Rpb25zLCAmc2NyaXB0QnJlYWtwb2ludC5hY3Rpb25zKSkgewotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAg
ICAgICBhdXRvIGRlYnVnZ2VyQnJlYWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC5jcmVhdGVE
ZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQrKywgc291cmNlSUQp
OwogCi0gICAgICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBzY3JpcHRC
cmVha3BvaW50LmxpbmVOdW1iZXIsIHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyLCBzY3Jp
cHRCcmVha3BvaW50LmNvbmRpdGlvbiwgc2NyaXB0QnJlYWtwb2ludC5hdXRvQ29udGludWUsIHNj
cmlwdEJyZWFrcG9pbnQuaWdub3JlQ291bnQpOwotICAgICAgICByZXNvbHZlQnJlYWtwb2ludChz
Y3JpcHQsIGJyZWFrcG9pbnQpOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2ZWQpCisg
ICAgICAgIGlmICghcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBkZWJ1Z2dlckJyZWFrcG9pbnQp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYm9vbCBleGlzdGluZzsKLSAgICAg
ICAgc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgICAgIGlmIChleGlz
dGluZykKKyAgICAgICAgaWYgKCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZp
ZXIgPSBlbnRyeS5rZXk7Ci0gICAgICAgIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgYnJl
YWtwb2ludElkZW50aWZpZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgICAgICBkaWRTZXRCcmVh
a3BvaW50KHByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsKIAotICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBidWlsZERlYnVnZ2VyTG9jYXRpb24oYnJlYWtwb2ludCkpOworICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+YnJlYWtwb2ludFJlc29sdmVkKHByb3RvY29sQnJlYWtwb2ludC5p
ZCgpLCBidWlsZERlYnVnZ2VyTG9jYXRpb24oZGVidWdnZXJCcmVha3BvaW50KSk7CiAgICAgfQog
fQogCkBAIC0xMDUyLDM2ICsxMDc1LDM4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiAKIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbFJ1bk1pY3JvdGFzaygpCiB7Ci0gICAgaWYg
KCFtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVh
a3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uTWlj
cm90YXNrcykKLSAgICAgICAgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpNaWNyb3Rhc2ssIG51bGxwdHIpOworICAgICAgICBz
Y2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6TWljcm90YXNrKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRSdW5NaWNyb3Rhc2soKQogewotICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5icmVha3Bv
aW50c0FjdGl2ZSgpKQorICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fcGF1c2VPbk1pY3JvdGFza3MpCi0gICAgICAgIGNhbmNlbFBhdXNl
T25OZXh0U3RhdGVtZW50KCk7CisgICAgICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHko
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBKU0M6OkpT
VmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9y
Q2F1Z2h0VmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX3BhdXNlZEdsb2JhbE9iamVjdCk7CiAgICAg
bV9wYXVzZWRHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0gICAgbV9jdXJyZW50Q2FsbFN0
YWNrID0geyBnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZXMgfTsKIAotICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRT
Y3JpcHRGb3IoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiBkZWJ1Z2dlckdsb2JhbE9iamVjdCA9
IGRlYnVnZ2VyQ2FsbEZyYW1lLnNjb3BlKCktPmdsb2JhbE9iamVjdCgpOworICAgIG1fY3VycmVu
dENhbGxTdGFjayA9IHsgbV9wYXVzZWRHbG9iYWxPYmplY3QtPnZtKCksIHRvSlMoZGVidWdnZXJH
bG9iYWxPYmplY3QsIGRlYnVnZ2VyR2xvYmFsT2JqZWN0LCBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpj
cmVhdGUoZGVidWdnZXJDYWxsRnJhbWUpLnB0cigpKSB9OworCisgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZv
cihtX3BhdXNlZEdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBJZiBhIGhpZ2ggbGV2ZWwgcGF1c2Ug
cGF1c2UgcmVhc29uIGlzIG5vdCBhbHJlYWR5IHNldCwgdHJ5IHRvIGluZmVyIGEgcmVhc29uIGZy
b20gdGhlIGRlYnVnZ2VyLgogICAgIGlmIChtX3BhdXNlUmVhc29uID09IERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVyKSB7CiAgICAgICAgIHN3aXRjaCAobV9zY3JpcHRE
ZWJ1Z1NlcnZlci5yZWFzb25Gb3JQYXVzZSgpKSB7CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dl
cjo6UGF1c2VkRm9yQnJlYWtwb2ludDogewogICAgICAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFr
cG9pbnRJZCA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2luZ0JyZWFrcG9pbnRJRCgpOwotICAg
ICAgICAgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEKQorICAgICAgICAgICAgaWYgKCFtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVn
Z2VyQnJlYWtwb2ludCB8fCBkZWJ1Z2dlckJyZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9Mb2Nh
dGlvbkRlYnVnZ2VyQnJlYWtwb2ludC0+aWQoKSkKICAgICAgICAgICAgICAgICB1cGRhdGVQYXVz
ZVJlYXNvbkFuZERhdGEoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtw
b2ludCwgYnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24oZGVidWdnZXJCcmVha3BvaW50SWQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTE5LDcgKzExNDQsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKUwogCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGRhdGE7
CiAgICAgICAgIGlmIChhdXRvIGRlYnVnZ2VyQnJlYWtwb2ludElkID0gbV9zY3JpcHREZWJ1Z1Nl
cnZlci5wYXVzaW5nQnJlYWtwb2ludElEKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChkZWJ1Z2dl
ckJyZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7CisgICAg
ICAgICAgICBBU1NFUlQoIW1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50IHx8
IGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVh
a3BvaW50LT5pZCgpKTsKICAgICAgICAgICAgIGRhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJvcmlnaW5hbFJlYXNvbiJfcywgUHJvdG9j
b2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgIGRhdGEtPnNl
dFZhbHVlKCJvcmlnaW5hbERhdGEiX3MsIGJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKGRlYnVn
Z2VyQnJlYWtwb2ludElkKSk7CkBAIC0xMTUxLDkgKzExNzYsOSBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKUwogCiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAotICAg
IGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCAhPSBKU0M6Om5vQnJlYWtwb2lu
dElEKSB7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludChtX2Nv
bnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7Ci0gICAgICAgIG1fY29udGludWVUb0xvY2F0
aW9uQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRDsKKyAgICBpZiAobV9jb250aW51
ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpIHsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5yZW1vdmVCcmVha3BvaW50KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtw
b2ludCk7CisgICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0g
bnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvJiBzdG9wd2F0Y2ggPSBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpOwpAQCAt
MTE2MywxNyArMTE4OCwxNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKUwogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJy
ZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50QWN0aW9uU291bmQoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgaWQpCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnBsYXlCcmVha3BvaW50QWN0aW9uU291bmQoYnJlYWtwb2lu
dEFjdGlvbklkZW50aWZpZXIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wbGF5QnJlYWtw
b2ludEFjdGlvblNvdW5kKGlkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24sIHVuc2lnbmVkIGJhdGNoSWQsIHVu
c2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgYmF0
Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBzYW1wbGUpCiB7CiAgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmpl
Y3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gcGF5bG9hZCA9IGluamVjdGVk
U2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24o
YWN0aW9uKSwgdHJ1ZSk7CisgICAgYXV0byBwYXlsb2FkID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9i
amVjdChzYW1wbGUsIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb25JRCksIHRy
dWUpOwogICAgIGF1dG8gcmVzdWx0ID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpQcm9iZVNhbXBsZTo6
Y3JlYXRlKCkKLSAgICAgICAgLnNldFByb2JlSWQoYWN0aW9uLmlkZW50aWZpZXIpCisgICAgICAg
IC5zZXRQcm9iZUlkKGFjdGlvbklEKQogICAgICAgICAuc2V0QmF0Y2hJZChiYXRjaElkKQogICAg
ICAgICAuc2V0U2FtcGxlSWQoc2FtcGxlSWQpCiAgICAgICAgIC5zZXRUaW1lc3RhbXAobV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0
Y2goKS5lbGFwc2VkVGltZSgpLnNlY29uZHMoKSkKQEAgLTEyMDksMTAgKzEyMzQsMTUgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbiByZWEKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJ
bnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKQogewogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7Ci0g
ICAgZm9yIChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9icmVha3Bv
aW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmtleXMoKSkpCi0gICAgICAg
IHJlbW92ZUJyZWFrcG9pbnQoaWdub3JlZCwgaWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvJiBw
cm90b2NvbEJyZWFrcG9pbnRJRCA6IGNvcHlUb1ZlY3RvcihtX2RlYnVnZ2VyQnJlYWtwb2ludHNG
b3JQcm90b2NvbEJyZWFrcG9pbnRJRC5rZXlzKCkpKQorICAgICAgICByZW1vdmVCcmVha3BvaW50
KGlnbm9yZWQsIHByb3RvY29sQnJlYWtwb2ludElEKTsKIAotICAgIG1famF2YVNjcmlwdEJyZWFr
cG9pbnRzLmNsZWFyKCk7CisgICAgbV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFr
cG9pbnRJRC5jbGVhcigpOworCisgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJC
cmVha3BvaW50KSB7CisgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2lu
dCgqbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2Nv
bnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgfQogCiAg
ICAgY2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpOwogfQpAQCAtMTIyMSw3ICsxMjUxLDYg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0
YXRlKCkKIHsKICAgICB7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihtX3Njcmlw
dERlYnVnU2VydmVyLnZtKCkpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNsZWFyQnJl
YWtwb2ludEFjdGlvbnMoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJyZWFr
cG9pbnRzKCk7CiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY2xlYXJCbGFja2JveCgpOwog
ICAgIH0KQEAgLTEyMjksOSArMTI1OCwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNsZWFyRGVidWdnZXJCcmVha3BvaW50U3RhdGUoKQogICAgIG1fcGF1c2VkR2xvYmFsT2JqZWN0
ID0gbnVsbHB0cjsKICAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSB7IH07CiAgICAgbV9zY3JpcHRz
LmNsZWFyKCk7Ci0gICAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SURzLmNsZWFyKCk7Ci0gICAgbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNw
ZWN0b3JCcmVha3BvaW50SWRlbnRpZmllci5jbGVhcigpOwotICAgIG1fY29udGludWVUb0xvY2F0
aW9uQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRDsKKyAgICBtX3Byb3RvY29sQnJl
YWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElELmNsZWFyKCk7CisgICAgbV9kZWJ1Z2dlckJy
ZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY2xlYXIoKTsKKyAgICBtX25leHREZWJ1
Z2dlckJyZWFrcG9pbnRJRCA9IEpTQzo6bm9CcmVha3BvaW50SUQgKyAxOworICAgIG1fY29udGlu
dWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICBjbGVhclBhdXNl
RGV0YWlscygpOwogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7CiAgICAg
bV9oYXNFeGNlcHRpb25WYWx1ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CmluZGV4IDM1YWYxNmQyN2Q2ZmY5ZTRkZDZiZTVlMzI3ZmQ4ZDY4MjI4YTdjMTcuLmQ0MDZhZGU3
ZTBkYWI5ZjVkNmVjZThkZDYwZmMyN2Y3ZWViMWI2MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKQEAgLTI5LDE2ICsyOSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkJyZWFrcG9pbnQuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkRlYnVnZ2Vy
UHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewpAQCAtNDYsMTUgKzQ4LDE2IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3Mg
QXN5bmNTdGFja1RyYWNlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7Ci1jbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMg
SlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkgb3ZlcnJpZGU7CiAKKyAgICBzdGF0aWMg
UmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoRXJy
b3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKTsKKwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBiYWNrdHJhY2VPYmplY3RHcm91cDsKIAogICAgIC8vIElu
c3BlY3RvckFnZW50QmFzZQpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
c3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAgICAg
dm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBmaW5h
bDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmlu
YWw7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2Jq
ZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pIGZpbmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCog
b3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1YWxMb2NhdGlv
bikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVVu
dGlsTmV4dFJ1bkxvb3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24pIGZpbmFs
OwpAQCAtODksMTUgKzkyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVtdWxhdGVVc2Vy
R2VzdHVyZSwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQs
IE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkQmxhY2tib3hVUkwoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwgY29uc3QgYm9vbCogY2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25z
dCBTY3JpcHQmKSBmaW5hbDsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZv
aWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2Ny
aXB0JikgZmluYWw7CiAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSBmaW5hbDsKICAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBK
U0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkgZmluYWw7CisgICAgdm9pZCBkaWRQ
YXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIEpTQzo6
SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbnRp
bnVlKCkgZmluYWw7Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9p
bnRBY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9i
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVu
c2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKSBm
aW5hbDsKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rp
b25JRCkgZmluYWw7CisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6QnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCBiYXRjaElkLCB1bnNp
Z25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkgZmluYWw7CiAKICAgICBib29sIGlz
UGF1c2VkKCkgY29uc3Q7CiAgICAgYm9vbCBicmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0OwpAQCAt
MTE4LDEwICsxMjEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERpc3BhdGNoQXN5bmNDYWxs
KEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkKTsKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5
bmNDYWxsKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KTsKLSAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgdm9pZCBzY2hl
ZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgdm9pZCBj
YW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgYm9vbCBwYXVzZU9uTmV4dFN0YXRl
bWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsg
fQogCisgICAgYm9vbCBzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVh
a3BvaW50JiwgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgYm9vbCBjYW5jZWxQYXVzZUZvclNwZWNp
YWxCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYpOworCiAgICAgdm9pZCBicmVha1Byb2dyYW0o
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBkYXRhKTsKICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJp
bmcmIGRpcmVjdGl2ZVRleHQpOwogCkBAIC0xNDIsMTIgKzE0OCwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQogICAgIHZpcnR1YWwgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVj
dXRpb25Db250ZXh0SWQpID0gMDsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1
Z1NlcnZlcigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0KKyAgICBKU0M6OkRlYnVn
Z2VyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dW5tdXRlQ29uc29sZSgpID0gMDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZU1hcFVSTEZv
clNjcmlwdChjb25zdCBTY3JpcHQmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VNYXBVUkxG
b3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZENs
ZWFyR2xvYmFsT2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyQXN5bmNTdGFja1Ry
YWNlRGF0YSgpIHsgfQpAQCAtMTU3LDkgKzE2Myw0NCBAQCBwcml2YXRlOgogCiAgICAgUmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZy
YW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYpOwogCi0gICAgdm9pZCByZXNvbHZlQnJlYWtwb2lu
dChjb25zdCBTY3JpcHQmLCBKU0M6OkJyZWFrcG9pbnQmKTsKLSAgICB2b2lkIHNldEJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50JiwgYm9vbCYgZXhpc3RpbmcpOwotICAgIHZvaWQgZGlkU2V0QnJl
YWtwb2ludChjb25zdCBKU0M6OkJyZWFrcG9pbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTY3Jp
cHRCcmVha3BvaW50Jik7CisgICAgY2xhc3MgUHJvdG9jb2xCcmVha3BvaW50IHsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgT3B0
aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYsIEpTQzo6
U291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9IG51bGxwdHIpOworICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9
IG51bGxwdHIpOworCisgICAgICAgIFByb3RvY29sQnJlYWtwb2ludCgpOworICAgICAgICBQcm90
b2NvbEJyZWFrcG9pbnQoSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWdu
ZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwg
SlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucyA9IHsgfSwgYm9vbCBhdXRv
Q29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CisgICAgICAgIFByb3Rv
Y29sQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
ID0gbnVsbFN0cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25z
ID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAw
KTsKKworICAgICAgICBSZWY8SlNDOjpCcmVha3BvaW50PiBjcmVhdGVEZWJ1Z2dlckJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50SUQsIEpTQzo6U291cmNlSUQpIGNvbnN0OworCisgICAgICAgIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQmIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorCisgICAgICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcm
IHNjcmlwdFVSTCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkIG1faWQ7CisKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgICAgICBKU0M6OlNvdXJjZUlEIG1fc291cmNlSUQgeyBKU0M6Om5vU291cmNlSUQgfTsK
KyNlbmRpZgorICAgICAgICBTdHJpbmcgbV91cmw7CisgICAgICAgIGJvb2wgbV9pc1JlZ2V4IHsg
ZmFsc2UgfTsKKworICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3
MT4gV2ViIEluc3BlY3RvcjogQWRvcHQgVGV4dFBvc2l0aW9uIGluIEluc3BlY3RvciB0byBhdm9p
ZCBvbmVCYXNlZEludC96ZXJvQmFzZWRJbnQgYW1iaWd1aXR5CisgICAgICAgIHVuc2lnbmVkIG1f
bGluZU51bWJlciB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07
CisKKyAgICAgICAgU3RyaW5nIG1fY29uZGl0aW9uOworICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbnNWZWN0b3IgbV9hY3Rpb25zOworICAgICAgICBib29sIG1fYXV0b0NvbnRpbnVlIHsg
ZmFsc2UgfTsKKyAgICAgICAgc2l6ZV90IG1faWdub3JlQ291bnQgeyAwIH07CisgICAgfTsKKwor
ICAgIGJvb2wgcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0Jiwg
SlNDOjpCcmVha3BvaW50Jik7CisgICAgYm9vbCBzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2lu
dCYpOworICAgIHZvaWQgZGlkU2V0QnJlYWtwb2ludChQcm90b2NvbEJyZWFrcG9pbnQmLCBKU0M6
OkJyZWFrcG9pbnQmKTsKIAogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nJik7CiAg
ICAgdm9pZCBjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCk7CkBAIC0xNzgsMTcgKzIxOSwx
NSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGJ1aWxkQnJlYWtwb2ludFBh
dXNlUmVhc29uKEpTQzo6QnJlYWtwb2ludElEKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBi
dWlsZEV4Y2VwdGlvblBhdXNlUmVhc29uKEpTQzo6SlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IElu
amVjdGVkU2NyaXB0Jik7CiAKLSAgICBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29s
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgQnJlYWtwb2ludEFj
dGlvbnMqIHJlc3VsdCk7Ci0KICAgICB0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50PiBB
c3luY0NhbGxJZGVudGlmaWVyOwogICAgIHN0YXRpYyBBc3luY0NhbGxJZGVudGlmaWVyIGFzeW5j
Q2FsbElkZW50aWZpZXIoQXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKICAgICBSZWZQdHI8RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyJiBtX3NjcmlwdERlYnVnU2VydmVyOwor
ICAgIEpTQzo6RGVidWdnZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBIYXNoTWFwPEpTQzo6U291
cmNlSUQsIFNjcmlwdD4gbV9zY3JpcHRzOworICAgIEhhc2hNYXA8SlNDOjpTb3VyY2VJRCwgSlND
OjpEZWJ1Z2dlcjo6U2NyaXB0PiBtX3NjcmlwdHM7CiAKICAgICBzdHJ1Y3QgQmxhY2tib3hDb25m
aWcgewogICAgICAgICBTdHJpbmcgdXJsOwpAQCAtMjA5LDEwICsyNDgsMTIgQEAgcHJpdmF0ZToK
ICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtX3BhdXNlZEdsb2JhbE9iamVjdCB7IG51bGxwdHIg
fTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fY3VycmVudENhbGxTdGFjazsKIAot
ICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+PiBtX2JyZWFrcG9p
bnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxKU09OOjpPYmplY3Q+PiBtX2phdmFTY3JpcHRCcmVha3BvaW50czsKLSAgICBI
YXNoTWFwPEpTQzo6QnJlYWtwb2ludElELCBTdHJpbmc+IG1fZGVidWdnZXJCcmVha3BvaW50SWRl
bnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZpZXI7Ci0gICAgSlNDOjpCcmVha3Bv
aW50SUQgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgeyBKU0M6Om5vQnJlYWtwb2lu
dElEIH07CisgICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludElkLCBQcm90b2NvbEJyZWFrcG9pbnQ+IG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9j
b2xCcmVha3BvaW50SUQ7CisgICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkLCBKU0M6OkJyZWFrcG9pbnRzVmVjdG9yPiBtX2RlYnVnZ2VyQnJlYWtw
b2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRDsKKyAgICBKU0M6OkJyZWFrcG9pbnRJRCBtX25l
eHREZWJ1Z2dlckJyZWFrcG9pbnRJRCB7IEpTQzo6bm9CcmVha3BvaW50SUQgKyAxIH07CisKKyAg
ICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJl
YWtwb2ludDsKKwogICAgIFNob3VsZERpc3BhdGNoUmVzdW1lZCBtX2NvbmRpdGlvblRvRGlzcGF0
Y2hSZXN1bWVkIHsgU2hvdWxkRGlzcGF0Y2hSZXN1bWVkOjpObyB9OwogCiAgICAgRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBtX3BhdXNlUmVhc29uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggMmZjYjJlN2I4NzVmZDQ3OWM0ZGY2MGM0ZTNjY2FjNDU0M2Nm
ZDJiOS4uM2VhMGRhMzNkODBkNTFjNzkxNmM2NTA2ODc4YWFlMmIwMWIwMDY3OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0zNCwxMiArMzQsMTIgQEAKIAogI2luY2x1ZGUg
IkNvbXBsZXRpb24uaCIKICNpbmNsdWRlICJDb250cm9sRmxvd1Byb2ZpbGVyLmgiCisjaW5jbHVk
ZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIklu
amVjdGVkU2NyaXB0SG9zdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIlBhcnNlckVycm9yLmgiCi0jaW5jbHVkZSAi
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlICJTb3VyY2VDb2RlLmgiCiAjaW5jbHVkZSAi
VHlwZVByb2ZpbGVyLmgiCiAjaW5jbHVkZSAiVHlwZVByb2ZpbGVyTG9nLmgiCkBAIC03Myw3ICs3
Myw3IEBAIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6fkluc3BlY3RvclJ1bnRpbWVBZ2VudCgpCiB7
CiB9CiAKLXN0YXRpYyBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1Nl
cnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUp
CitzdGF0aWMgSlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKEpTQzo6RGVidWdnZXImIHNjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRl
YnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG5ld1N0YXRlKQogewogICAgIGF1dG8gcHJl
c2VudFN0YXRlID0gc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwog
ICAgIGlmIChwcmVzZW50U3RhdGUgIT0gbmV3U3RhdGUpCkBAIC0xMjMsOSArMTIzLDkgQEAgdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBleHAKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBTY3JpcHREZWJ1Z1Nl
cnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwogICAg
IGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKLSAgICAg
ICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25F
eGNlcHRpb25zKTsKKyAgICAgICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2Vy
OjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKIApAQCAtMTY1
LDkgKzE2NSw5IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluCiAgICAgaWYgKG9wdGlvbmFsQXJn
dW1lbnRzKQogICAgICAgICBhcmd1bWVudHMgPSBvcHRpb25hbEFyZ3VtZW50cy0+dG9KU09OU3Ry
aW5nKCk7CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBw
cmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBh
dXNlT25FeGNlcHRpb25zOworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRl
ID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwogICAgIGlmIChhc0Jvb2wo
ZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlKSkKLSAgICAgICAgcHJldmlvdXNQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3Njcmlw
dERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsK
KyAgICAgICAgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VP
bkV4Y2VwdGlvbnMpOwogICAgIGlmIChhc0Jvb2woZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlKSkKICAgICAgICAgbXV0ZUNvbnNvbGUoKTsKIApAQCAtMTg3LDcgKzE4Nyw3IEBA
IHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcmV2aWV3KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBT
Y3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25F
eGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIGF1
dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2Vw
dGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5nZXRQcmV2
aWV3KGVycm9yU3RyaW5nLCBvYmplY3RJZCwgcHJldmlldyk7CkBAIC0yMTYsNyArMjE2LDcgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNj
cmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1Nl
cnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgYXV0
byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0
aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldFByb3Bl
cnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBhc0Jvb2wob3duUHJvcGVydGllcyksIHN0YXJ0
LCBjb3VudCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpAQCAtMjQ5LDcg
KzI0OSw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXREaXNwbGF5YWJsZVByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91
c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2Ny
aXB0RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMp
OworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1
c2VPbkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlw
dC5nZXREaXNwbGF5YWJsZVByb3BlcnRpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBzdGFydCwg
Y291bnQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBwcm9wZXJ0aWVzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVB
Z2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmgKaW5kZXggZTNjYjYyNDU2YzJjZmNmN2YzOGM1ODc1ZTBkNmU4M2M5ZTQ0
MzBmZi4uOWQ3NjVkOTYwN2FhOWY2ODYyYjA3NmFiMzljNmNiZDI4NTRkNmQ2NSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yUnVudGltZUFnZW50LmgKQEAgLTM3LDYgKzM3LDcgQEAKICNpbmNsdWRlIDx3dGYvTm9u
Y29weWFibGUuaD4KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFzcyBEZWJ1Z2dlcjsKIGNsYXNzIFZN
OwogfQogCkBAIC00NCw3ICs0NSw2IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCiBjbGFzcyBJ
bmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlw
dERlYnVnU2VydmVyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKIGNsYXNzIEpTX0VY
UE9SVF9QUklWQVRFIEluc3BlY3RvclJ1bnRpbWVBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBSdW50aW1lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKQEAgLTk0LDcg
Kzk0LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldENvbnRyb2xGbG93UHJvZmlsZXJFbmFibGVk
U3RhdGUoYm9vbCk7CiAKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyOwotICAgIFNjcmlwdERlYnVnU2VydmVyJiBtX3NjcmlwdERlYnVnU2VydmVyOwor
ICAgIEpTQzo6RGVidWdnZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiAgICAgSlNDOjpWTSYgbV92
bTsKICAgICBib29sIG1fZW5hYmxlZCB7ZmFsc2V9OwogICAgIGJvb2wgbV9pc1R5cGVQcm9maWxp
bmdFbmFibGVkIHtmYWxzZX07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdl
bnQuY3BwCmluZGV4IDk3Y2M5MWZmNWUyMmM5OTgxMzkzYjRkZmM1NDg5YzIxODM4ODBmYTkuLmMx
MmVjNjlhMDE1ZjVhZGI2MTdmODdhZDEyOWY3ZDk1ZmVlZWIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmgi
CiAKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNsdWRl
ICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCiAjaW5j
bHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgi
CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFs
T2JqZWN0RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKaW5kZXggM2I4OGRlYWI3NzUzZWE1
ZGExYWE3M2ZjMDJiMmEzZTI3MWMzZTAzNC4uNmY3OTI3OGQ1MzMxNzFlMWZkZDBhZWZlOWRkMjli
MzNiZmQxZmU5NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKQEAg
LTM4LDggKzM4LDggQEAgcHVibGljOgogICAgIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudChK
U0FnZW50Q29udGV4dCYsIEluc3BlY3RvckNvbnNvbGVBZ2VudCopOwogICAgIH5KU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQoKSBmaW5hbDsKIAotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIK
LSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYpIGZpbmFsOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAgdm9p
ZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
IGRhdGEpIGZpbmFsOwogCiBwcml2YXRlOgogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0Rm9yRXZhbChFcnJvclN0cmluZyYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvRE9NLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RP
TS5qc29uCmluZGV4IGYzYTc3NTM3MDI5OTVlYmM1NDMxMmVhZDBiMGMwMjhhNThiYjE5YjkuLjk5
OGJjNGFmZTY4ZWM3MDUwMmEwMDliN2JmNWVkMWRlOTc1OGFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgpAQCAtMzE2LDcgKzMx
Niw4IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0IGEgYnJlYWtwb2ludCBvbiB0
aGUgZ2l2ZW4gZXZlbnQgbGlzdGVuZXIuIiwKICAgICAgICAgICAgICJ0YXJnZXRUeXBlcyI6IFsi
cGFnZSJdLAogICAgICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgeyAi
bmFtZSI6ICJldmVudExpc3RlbmVySWQiLCAiJHJlZiI6ICJFdmVudExpc3RlbmVySWQiIH0KKyAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImV2ZW50TGlzdGVuZXJJZCIsICIkcmVmIjogIkV2ZW50
TGlzdGVuZXJJZCIgfSwKKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm9wdGlvbnMiLCAiJHJl
ZiI6ICJEZWJ1Z2dlci5CcmVha3BvaW50T3B0aW9ucyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNj
cmlwdGlvbiI6ICJPcHRpb25zIHRvIGFwcGx5IHRvIHRoaXMgYnJlYWtwb2ludCB0byBtb2RpZnkg
aXRzIGJlaGF2aW9yLiIgfQogICAgICAgICAgICAgXQogICAgICAgICB9LAogICAgICAgICB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURl
YnVnZ2VyLmpzb24gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RP
TURlYnVnZ2VyLmpzb24KaW5kZXggNWExODk3NjI4MjQ0N2Y3ZGVlYjA2ZmRmZGUzMjg4ZTNiYTM2
OWU4MS4uZWVmYTkzM2Y5ZjVkMmMxZjRmYzRkZTc1NjU3NTc0OTRiYmViOTNlMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5q
c29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVi
dWdnZXIuanNvbgpAQCAtMzksNyArMzksOCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjog
IlNldHMgYnJlYWtwb2ludCBvbiBwYXJ0aWN1bGFyIGV2ZW50IG9mIGdpdmVuIHR5cGUuIiwKICAg
ICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiYnJl
YWtwb2ludFR5cGUiLCAiJHJlZiI6ICJFdmVudEJyZWFrcG9pbnRUeXBlIiB9LAotICAgICAgICAg
ICAgICAgIHsgIm5hbWUiOiAiZXZlbnROYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFs
IjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBldmVudCB0
byBzdG9wIG9uLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXZlbnROYW1lIiwgInR5
cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuYW1l
IG9mIHRoZSBzcGVjaWZpYyBldmVudCB0byBzdG9wIG9uLiIgfSwKKyAgICAgICAgICAgICAgICB7
ICJuYW1lIjogIm9wdGlvbnMiLCAiJHJlZiI6ICJEZWJ1Z2dlci5CcmVha3BvaW50T3B0aW9ucyIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPcHRpb25zIHRvIGFwcGx5IHRvIHRo
aXMgYnJlYWtwb2ludCB0byBtb2RpZnkgaXRzIGJlaGF2aW9yLiIgfQogICAgICAgICAgICAgXQog
ICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU01pY3JvdGFzay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U01pY3JvdGFzay5jcHAKaW5kZXggMDNlZTYwYjM2NTk2YWI4Mjg1ZGZhOGI0MzcxZDk5ZmQ0NGU5
OTYxNC4uNDRiODk0NTY3MzBiZWUzNjNlZGMxNWUxODIyYzM5ODBlMWJiYWI1OSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcApAQCAtOTEsNiArOTEs
OSBAQCB2b2lkIEpTTWljcm90YXNrOjpydW4oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
IAogICAgIHByb2ZpbGVkQ2FsbChnbG9iYWxPYmplY3QsIFByb2ZpbGluZ1JlYXNvbjo6TWljcm90
YXNrLCBtX2pvYi5nZXQoKSwgaGFuZGxlckNhbGxEYXRhLCBqc1VuZGVmaW5lZCgpLCBoYW5kbGVy
QXJndW1lbnRzKTsKICAgICBzY29wZS5jbGVhckV4Y2VwdGlvbigpOworCisgICAgaWYgKFVOTElL
RUxZKGdsb2JhbE9iamVjdC0+aGFzRGVidWdnZXIoKSkpCisgICAgICAgIGdsb2JhbE9iamVjdC0+
ZGVidWdnZXIoKS0+ZGlkUnVuTWljcm90YXNrKCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggMGNjZmNjMWUzNjBhODIyMDIwZjk4ZDE1
ZGJlNzFiNzY3MDJmZjkxOC4uNmEwNzY0YWVkODE0MWQ3YTIxOTk3MTVhZjAyZmRmMWRlZTQzMTdj
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0zMzksNyArMzM5LDcgQEAgdm9p
ZCBFdmVudFRhcmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVycyhFdmVudCYgZXZlbnQsIEV2
ZW50TGlzdGVuZXJWZWN0b3IgbGkKIAogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OndpbGxIYW5kbGVFdmVudChjb250ZXh0LCBldmVudCwgKnJlZ2lzdGVyZWRMaXN0ZW5lcik7CiAg
ICAgICAgIHJlZ2lzdGVyZWRMaXN0ZW5lci0+Y2FsbGJhY2soKS5oYW5kbGVFdmVudChjb250ZXh0
LCBldmVudCk7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZl
bnQoY29udGV4dCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxl
RXZlbnQoY29udGV4dCwgZXZlbnQsICpyZWdpc3RlcmVkTGlzdGVuZXIpOwogCiAgICAgICAgIGlm
IChyZWdpc3RlcmVkTGlzdGVuZXItPmlzUGFzc2l2ZSgpKQogICAgICAgICAgICAgZXZlbnQuc2V0
SW5QYXNzaXZlTGlzdGVuZXIoZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcAppbmRleCAxOTFjZjhkMGUyNTYyYzQx
ZDAzYzU4MzBjOGVlMDZiMjM5YThmZTg5Li4wYTA4MTgwNzk4ZmM5ZGRjYzVkYTc1Y2ZlMDM1ZjU2
ZDc2ZTEwODQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcApAQCAtNDE4LDEzICs0MTgsMTMgQEAgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWUKICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbEhhbmRsZUV2ZW50KGV2
ZW50LCBsaXN0ZW5lcik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRI
YW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykK
K3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnQmIGV2ZW50LCBjb25zdCBS
ZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50
KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAK
ICAgICBpZiAoYXV0byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZERPTURlYnVnZ2VyQWdlbnQoKSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFu
ZGxlRXZlbnQoKTsKKyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFuZGxlRXZlbnQoZXZl
bnQsIGxpc3RlbmVyKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERp
c3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IGNvbnN0IEV2ZW50JiBldmVudCkKQEAgLTQ3MywxMCArNDczLDEyIEBAIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBp
bnN0cnVtZW50CiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCwg
ZnJhbWVGb3JTY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMs
IGludCAvKiB0aW1lcklkICovLCBib29sIG9uZVNob3QpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50
KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7Cisg
ICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEZpcmVU
aW1lcihvbmVTaG90KTsKICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQt
PmRpZEZpcmVUaW1lcigpOwogfQpAQCAtNzE2LDYgKzcxOCw5IEBAIHZvaWQgSW5zcGVjdG9ySW5z
dHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0
cnVtZW50CiAgICAgICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuZW5hYmxlZFBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgICAgICBwYWdlRGVi
dWdnZXJBZ2VudC0+bWFpbkZyYW1lTmF2aWdhdGVkKCk7CiAKKyAgICAgICAgaWYgKGF1dG8qIGRv
bURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dlckFn
ZW50KCkpCisgICAgICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQo
KTsKKwogICAgICAgICBpZiAoYXV0byogZW5hYmxlZFBhZ2VIZWFwQWdlbnQgPSBpbnN0cnVtZW50
aW5nQWdlbnRzLmVuYWJsZWRQYWdlSGVhcEFnZW50KCkpCiAgICAgICAgICAgICBlbmFibGVkUGFn
ZUhlYXBBZ2VudC0+bWFpbkZyYW1lTmF2aWdhdGVkKCk7CiAgICAgfQpAQCAtMTI2Miw2ICsxMjY3
LDggQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFt
ZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW4KIHsKICAgICBpZiAoYXV0byogd2ViRGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkK
ICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKKyAgICBp
ZiAoYXV0byogcGFnZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJs
ZWRQYWdlRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+
ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBp
bnN0cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1l
bGluZUFnZW50LT5kaWRGaXJlQW5pbWF0aW9uRnJhbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3MzBmMzMy
NTFkZDAyNzQ0MDRhZGVmOGY2ZjNmYjZlMDljZDZmZTI5Li41YWQ3OWUwZDE2YTk1MzJiODFjOGI1
YWY4MGFhY2FjZTU5ODY5ZDFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCkBAIC0xNzEsMTQgKzE3MSwxNCBAQCBwdWJsaWM6
CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmLCBjb25zdCBFdmVu
dCYpOwogICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnQoRG9jdW1lbnQmLCBjb25zdCBF
dmVudCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwotICAgIHN0
YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKKyAgICBz
dGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgRXZlbnQm
LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxE
aXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyYpOwog
ICAgIHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2
ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goY29uc3Qg
RXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRXZhbHVhdGVTY3JpcHQoRnJhbWUmLCBjb25z
dCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIpOwogICAgIHN0
YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2ls
bEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgaW50IHRpbWVySWQsIGJvb2wgb25l
U2hvdCk7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QpOwogICAgIHN0YXRpYyB2b2lkIGRpZEludmFs
aWRhdGVMYXlvdXQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTGF5b3V0KEZyYW1lJik7
CiAgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0KEZyYW1lJiwgUmVuZGVyT2JqZWN0Jik7CkBAIC0z
OTQsNyArMzk0LDcgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgYm9vbCBpc0V2ZW50TGlzdGVuZXJE
aXNhYmxlZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRv
bVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKICAgICBz
dGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIERv
Y3VtZW50JiwgY29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsSGFuZGxlRXZlbnRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyJik7Ci0gICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
Y29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cmKTsKICAg
ICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3dJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBjb25zdCBFdmVudCYpOwpAQCAtNDAyLDcgKzQwMiw3IEBAIHByaXZhdGU6CiAgICAg
c3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
RnJhbWUmLCBjb25zdCBTdHJpbmcmIHVybCwgaW50IGxpbmVOdW1iZXIsIGludCBjb2x1bW5OdW1i
ZXIpOwogICAgIHN0YXRpYyB2b2lkIGRpZEV2YWx1YXRlU2NyaXB0SW1wbChJbnN0cnVtZW50aW5n
QWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRmlyZVRpbWVySW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCwgU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QpOwogICAgIHN0YXRpYyB2b2lk
IGRpZEludmFsaWRhdGVMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFtZSYpOwog
ICAgIHN0YXRpYyB2b2lkIHdpbGxMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBGcmFt
ZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYs
IFJlbmRlck9iamVjdCYpOwpAQCAtODkyLDExICs4OTIsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY28KICAgICAgICAgcmV0dXJuIHdpbGxIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMsIGV2ZW50LCBsaXN0ZW5lcik7CiB9CiAKLWlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnQo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9f
RlJPTlRFTkRTKHZvaWQoKSk7CiAgICAgaWYgKEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1l
bnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29udGV4dChjb250ZXh0KSkKLSAg
ICAgICAgcmV0dXJuIGRpZEhhbmRsZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cyk7Cisg
ICAgICAgIHJldHVybiBkaWRIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIGV2
ZW50LCBsaXN0ZW5lcik7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6d2lsbERpc3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEV2ZW50JiBl
dmVudCwgRE9NV2luZG93JiB3aW5kb3cpCkBAIC05NDYsMTEgKzk0NiwxMSBAQCBpbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udAogICAgICAgICB3aWxsRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZXJJZCwgb25lU2hvdCwgY29udGV4dCk7CiB9CiAKLWlubGluZSB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVU
aW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBpbnQgdGltZXJJZCwgYm9vbCBv
bmVTaG90KQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAg
IGlmIChhdXRvKiBpbnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNv
bnRleHQoY29udGV4dCkpCi0gICAgICAgIGRpZEZpcmVUaW1lckltcGwoKmluc3RydW1lbnRpbmdB
Z2VudHMpOworICAgICAgICBkaWRGaXJlVGltZXJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCB0
aW1lcklkLCBvbmVTaG90KTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRJbnZhbGlkYXRlTGF5b3V0KEZyYW1lJiBmcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggMTdhNjZmMTBj
MWEyMjYxYWYxZDhkMWU3ZWFiYTJlNThhMTllMjRkYS4uMDVmZWZiY2JlYzZkNTYyNDZlNzI4ZjYx
OTA1N2Y4NzY2OTE2NjcyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTU0LDE4ICs1NCwyMiBAQCB1c2luZyBuYW1lc3Bh
Y2UgSlNDOwogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKIAogUGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXIoUGFnZSYgcGFnZSkKLSAgICA6IFNjcmlwdERlYnVn
U2VydmVyKFdlYkNvcmU6OmNvbW1vblZNKCkpCisgICAgOiBEZWJ1Z2dlcihXZWJDb3JlOjpjb21t
b25WTSgpKQogICAgICwgbV9wYWdlKHBhZ2UpCiB7CiB9CiAKIHZvaWQgUGFnZVNjcmlwdERlYnVn
U2VydmVyOjphdHRhY2hEZWJ1Z2dlcigpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVi
dWdnZXIoKTsKKwogICAgIG1fcGFnZS5zZXREZWJ1Z2dlcih0aGlzKTsKIH0KIAogdm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkK
IHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsK
KwogICAgIG1fcGFnZS5zZXREZWJ1Z2dlcihudWxscHRyKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0
cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC03NywxOCArODEs
MjQgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25z
KCkKICAgICBEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKIH0KIAotdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFBhdXNlKEpTR2xvYmFsT2JqZWN0KikKK3ZvaWQgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogeworICAgIEpTQzo6RGVidWdnZXI6OmRpZFBhdXNlKGdsb2JhbE9iamVjdCk7CisKICAgICBz
ZXRKYXZhU2NyaXB0UGF1c2VkKG1fcGFnZS5ncm91cCgpLCB0cnVlKTsKIH0KIAotdm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KikKK3ZvaWQgUGFn
ZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogeworICAgIEpTQzo6RGVidWdnZXI6OmRpZENvbnRpbnVlKGdsb2JhbE9iamVjdCk7CisK
ICAgICBzZXRKYXZhU2NyaXB0UGF1c2VkKG1fcGFnZS5ncm91cCgpLCBmYWxzZSk7CiB9CiAKIHZv
aWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB7Cisg
ICAgSlNDOjpEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKKwogI2lmIFBMQVRG
T1JNKElPU19GQU1JTFkpCiAgICAgLy8gT24gaU9TLCBydW5uaW5nIGFuIEV2ZW50TG9vcCBjYXVz
ZXMgdXMgdG8gcnVuIGEgbmVzdGVkIFdlYlJ1bkxvb3AuCiAgICAgLy8gU2luY2UgdGhlIFdlYlRo
cmVhZCBpcyBhdXRvcmVsZWFzZWQgYXQgdGhlIGVuZCBvZiBydW4gbG9vcCBpdGVyYXRpb25zCkBA
IC0xMTUsNyArMTI1LDcgQEAgdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9v
cFdoaWxlUGF1c2VkSW50ZXJuYWwoKQogCiAgICAgbV9wYWdlLmluY3JlbWVudE5lc3RlZFJ1bkxv
b3BDb3VudCgpOwogCi0gICAgd2hpbGUgKCFtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMp
IHsKKyAgICB3aGlsZSAoIWRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSkgewogICAgICAg
ICBpZiAoIXBsYXRmb3JtU2hvdWxkQ29udGludWVSdW5uaW5nRXZlbnRMb29wV2hpbGVQYXVzZWQo
KSkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTEyNSwxMSArMTM1LDEzIEBAIHZvaWQg
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKCkK
IAogYm9vbCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmlzQ29udGVudFNjcmlwdChKU0dsb2JhbE9i
amVjdCogc3RhdGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICZjdXJyZW50V29ybGQoKnN0YXRlKSAh
PSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCk7CisgICAgcmV0dXJuICZjdXJyZW50V29ybGQoKnN0
YXRlKSAhPSAmbWFpblRocmVhZE5vcm1hbFdvcmxkKCkgfHwgSlNDOjpEZWJ1Z2dlcjo6aXNDb250
ZW50U2NyaXB0KHN0YXRlKTsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9y
dEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogc3RhdGUsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRp
b24pIGNvbnN0CiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBl
eGNlcHRpb24pOworCiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKHN0YXRlLCBleGNlcHRp
b24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlw
dERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVn
U2VydmVyLmgKaW5kZXggMjJkOGNmNzg5ZDk1YjhkNzhmZWFlM2E0OWEwYTBlNWRhYzM5ZmUwNi4u
ZmYzODE5ZGI0ODVkNDMwNzQ2ZGM2ZmM5ZGFhNTVjZGE2YWE3MmNkMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMjYsNyArMjYs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdERl
YnVnU2VydmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3Mg
UGFnZTsKIGNsYXNzIFBhZ2VHcm91cDsKIAotY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVyIGZp
bmFsIDogcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgUGFnZVNj
cmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik7CiAgICAgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBAIC00NCwxNCArNDQsMTQgQEAgcHVibGljOgogICAgIHZv
aWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2
b2lkIGF0dGFjaERlYnVnZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihi
b29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWRQYXVzZShKU0M6
OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRDb250aW51ZShKU0M6OkpT
R2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNl
ZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxPYmpl
Y3QqKSBjb25zdCBvdmVycmlkZTsKLSAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBvdmVycmlkZTsKKyAgICAvLyBKU0M6
OkRlYnVnZ2VyCisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIGZpbmFsOworICAgIHZvaWQgZGV0
YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBmaW5hbDsKKyAgICB2b2lkIGRpZFBh
dXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbnRpbnVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKKyAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1
c2VkKCkgZmluYWw7CisgICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVj
dCopIGNvbnN0IGZpbmFsOworICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxP
YmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBydW5FdmVu
dExvb3BXaGlsZVBhdXNlZEludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggY2M0NWIxZjRjMmIxMTI2ZGFh
MWUyMGRlMTZiODdhMmM2NmI3OTJjYy4uZWVkZWQ4ZjQ4MjljZTg0MzA2NDMzMjA3N2Q4MzAyYzMx
ZGRhOWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5jcHAKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJGbG9hdFF1YWQuaCIK
ICNpbmNsdWRlICJKU0V4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3Bl
Y3RvclByb3RvY29sT2JqZWN0cy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdEJy
ZWFrcG9pbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2suaD4K
ICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5Lmg+CiAKQEAg
LTczLDEwICs3MiwxMCBAQCBSZWY8SlNPTjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6
OmNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YShjb25zdCBTdHJpbmcmCiAgICAgcmV0dXJuIGRhdGE7
CiB9CiAKLVJlZjxKU09OOjpPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJv
YmVTYW1wbGVEYXRhKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWdu
ZWQgc2FtcGxlSWQpCitSZWY8SlNPTjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVByb2JlU2FtcGxlRGF0YShKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5z
aWduZWQgc2FtcGxlSWQpCiB7CiAgICAgUmVmPEpTT046Ok9iamVjdD4gZGF0YSA9IEpTT046Ok9i
amVjdDo6Y3JlYXRlKCk7Ci0gICAgZGF0YS0+c2V0SW50ZWdlcigicHJvYmVJZCJfcywgYWN0aW9u
LmlkZW50aWZpZXIpOworICAgIGRhdGEtPnNldEludGVnZXIoInByb2JlSWQiX3MsIGFjdGlvbklE
KTsKICAgICBkYXRhLT5zZXRJbnRlZ2VyKCJzYW1wbGVJZCJfcywgc2FtcGxlSWQpOwogICAgIHJl
dHVybiBkYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVs
aW5lUmVjb3JkRmFjdG9yeS5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oCmluZGV4IDUzMDc1NTg3NTlhMzgzODViYjhiODVlOWI5Y2RkMTcwYjEzZDgy
ODEuLjQxYjZkZDY0NTA5ZDA0Zjc2MWZhYzM5NjRmNzg3ZDMyODk0ZTExNGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgKQEAgLTMxLDE1
ICszMSwxMiBAQAogIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9E
ZWJ1Z2dlclByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUg
PHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1NlY29uZHMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci1zdHJ1Y3QgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvbjsKLX0KLQogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBF
dmVudDsKQEAgLTUxLDcgKzQ4LDcgQEAgcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxKU09OOjpP
YmplY3Q+IGNyZWF0ZUZ1bmN0aW9uQ2FsbERhdGEoY29uc3QgU3RyaW5nJiBzY3JpcHROYW1lLCBp
bnQgc2NyaXB0TGluZSwgaW50IHNjcmlwdENvbHVtbik7CiAgICAgc3RhdGljIFJlZjxKU09OOjpP
YmplY3Q+IGNyZWF0ZUNvbnNvbGVQcm9maWxlRGF0YShjb25zdCBTdHJpbmcmIHRpdGxlKTsKLSAg
ICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlUHJvYmVTYW1wbGVEYXRhKGNvbnN0IElu
c3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVuc2lnbmVkIHNhbXBsZUlkKTsKKyAg
ICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlUHJvYmVTYW1wbGVEYXRhKEpTQzo6QnJl
YWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCBzYW1wbGVJZCk7CiAgICAgc3RhdGljIFJlZjxKU09O
OjpPYmplY3Q+IGNyZWF0ZUV2ZW50RGlzcGF0Y2hEYXRhKGNvbnN0IEV2ZW50Jik7CiAgICAgc3Rh
dGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZUdlbmVyaWNUaW1lckRhdGEoaW50IHRpbWVySWQp
OwogICAgIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVUaW1lckluc3RhbGxEYXRhKGlu
dCB0aW1lcklkLCBTZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRl
eCA0YTY5MTk2OTdjYmMyZmU4ZDkzOTEyYzUxN2RlZWY1YTI0ODg5ZGU2Li4zNjFkYjE2YzRkNGE0
ZTE5Mzk0NDk3ODA5ZTRiZjFjM2JjOWI0ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTQ0LDE4ICs0NCwyMiBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFs
U2NvcGUmIGNvbnRleHQpCi0gICAgOiBTY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LnNjcmlwdCgp
LT52bSgpKQorICAgIDogRGVidWdnZXIoY29udGV4dC5zY3JpcHQoKS0+dm0oKSkKICAgICAsIG1f
d29ya2VyR2xvYmFsU2NvcGUoY29udGV4dCkKIHsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIoKQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0dGFjaERl
YnVnZ2VyKCk7CisKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5hdHRhY2hEZWJ1
Z2dlcih0aGlzKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVi
dWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogeworICAgIEpTQzo6RGVidWdnZXI6OmRldGFj
aERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOworCiAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2Nv
cGUuc2NyaXB0KCkpCiAgICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmRldGFj
aERlYnVnZ2VyKHRoaXMpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKQEAgLTcwLDE2ICs3
NCwyMCBAQCB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0
aW9ucygpCiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxl
UGF1c2VkKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgp
OworCiAgICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAogICAg
IE1lc3NhZ2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKICAgICAgICAgcmVzdWx0
ID0gbV93b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1v
ZGUobV93b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VR
dWV1ZVRlcm1pbmF0ZWQgJiYgIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyk7CisgICAg
fSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgIWRvbmVQcm9jZXNz
aW5nRGVidWdnZXJFdmVudHMoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6
OnJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBKU0M6OkV4Y2VwdGlv
biogZXhjZXB0aW9uKSBjb25zdAogeworICAgIEpTQzo6RGVidWdnZXI6OnJlcG9ydEV4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOworCiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKGV4ZWMs
IGV4Y2VwdGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9X
b3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
clNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZWE3MWYxZGU4OGQyNjAzZTU2NmIwZDA5NDJiMzJl
YWZhNjRiYmE5MC4uYzhiYTMyZTQzN2NkOGZmM2NlYTMyYmY3Yzg0MDY3Yzk5ZDU4Y2I3NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmgKQEAgLTMxLDMwICszMSwyNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdERlYnVnU2VydmVyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUv
RGVidWdnZXIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBXb3JrZXJHbG9iYWxT
Y29wZTsKIAotY2xhc3MgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSW5z
cGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlciB7CitjbGFzcyBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
ciBmaW5hbCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJM
RShXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFsU2NvcGUm
KTsKICAgICB+V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CiAK
LSAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0YWNoRGVi
dWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlkUGF1
c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkQ29udGlu
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgcnVuRXZlbnRM
b29wV2hpbGVQYXVzZWQoKSBvdmVycmlkZTsKLSAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6
OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24q
KSBjb25zdCBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyCisgICAgdm9pZCBhdHRhY2hE
ZWJ1Z2dlcigpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVz
dHJveWVkKSBmaW5hbDsKKyAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgZmluYWw7
CisgICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOworICAgIHZvaWQgcmVw
b3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0
IGZpbmFsOwogCiAgICAgV29ya2VyR2xvYmFsU2NvcGUmIG1fd29ya2VyR2xvYmFsU2NvcGU7CiB9
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01BZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcAppbmRleCAzNGRhOTU4MGFlNGE4NmY0OWJjODliNTY3OGVhNjNjMTk5OGNmM2Q2
Li4xNWY2NmQxYmUzNWI4MzNlYzZhM2Y2MmU0YzAwYTk2ZjcwN2MzOWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcApA
QCAtMTEyLDYgKzExMiw3IEBACiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSWRlbnRpZmllcnNG
YWN0b3J5Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHQuaD4KICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdE1hbmFnZXIuaD4KKyNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+CiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgogI2luY2x1ZGUgPHBhbC9jcnlwdG8vQ3J5cHRvRGln
ZXN0Lmg+CiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CkBAIC05MzEsMTMgKzkzMiwxMyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgbgogICAgIGF1dG8gYWRkTGlzdGVuZXIgPSBbJl0gKFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgY29uc3QgRXZlbnRMaXN0ZW5lckluZm8mIGlu
Zm8pIHsKICAgICAgICAgaW50IGlkZW50aWZpZXIgPSAwOwogICAgICAgICBib29sIGRpc2FibGVk
ID0gZmFsc2U7Ci0gICAgICAgIGJvb2wgaGFzQnJlYWtwb2ludCA9IGZhbHNlOworICAgICAgICBS
ZWZQdHI8SlNDOjpCcmVha3BvaW50PiBicmVha3BvaW50OwogCiAgICAgICAgIGZvciAoYXV0byYg
aW5zcGVjdG9yRXZlbnRMaXN0ZW5lciA6IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMudmFsdWVzKCkp
IHsKICAgICAgICAgICAgIGlmIChpbnNwZWN0b3JFdmVudExpc3RlbmVyLm1hdGNoZXMoKmluZm8u
ZXZlbnRUYXJnZXQsIGluZm8uZXZlbnRUeXBlLCBsaXN0ZW5lci5jYWxsYmFjaygpLCBsaXN0ZW5l
ci51c2VDYXB0dXJlKCkpKSB7CiAgICAgICAgICAgICAgICAgaWRlbnRpZmllciA9IGluc3BlY3Rv
ckV2ZW50TGlzdGVuZXIuaWRlbnRpZmllcjsKICAgICAgICAgICAgICAgICBkaXNhYmxlZCA9IGlu
c3BlY3RvckV2ZW50TGlzdGVuZXIuZGlzYWJsZWQ7Ci0gICAgICAgICAgICAgICAgaGFzQnJlYWtw
b2ludCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludDsKKyAgICAgICAgICAg
ICAgICBicmVha3BvaW50ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5icmVha3BvaW50OwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05NDcsMTIg
Kzk0OCwxMiBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5v
ZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbgogCiAgICAgICAgICAgICBpZGVudGlm
aWVyID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5pZGVudGlmaWVyOwogICAgICAgICAgICAgZGlz
YWJsZWQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmRpc2FibGVkOwotICAgICAgICAgICAgaGFz
QnJlYWtwb2ludCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludDsKKyAgICAg
ICAgICAgIGJyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmJyZWFrcG9pbnQ7CiAK
ICAgICAgICAgICAgIG1fZXZlbnRMaXN0ZW5lckVudHJpZXMuYWRkKGlkZW50aWZpZXIsIGluc3Bl
Y3RvckV2ZW50TGlzdGVuZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgbGlzdGVuZXJzQXJyYXkt
PmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGxpc3RlbmVyLCBpZGVudGlmaWVy
LCAqaW5mby5ldmVudFRhcmdldCwgaW5mby5ldmVudFR5cGUsIGRpc2FibGVkLCBoYXNCcmVha3Bv
aW50KSk7CisgICAgICAgIGxpc3RlbmVyc0FycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRXZl
bnRMaXN0ZW5lcihsaXN0ZW5lciwgaWRlbnRpZmllciwgKmluZm8uZXZlbnRUYXJnZXQsIGluZm8u
ZXZlbnRUeXBlLCBkaXNhYmxlZCwgYnJlYWtwb2ludCkpOwogICAgIH07CiAKICAgICAvLyBHZXQg
Q2FwdHVyaW5nIExpc3RlbmVycyAoaW4gdGhpcyBvcmRlcikKQEAgLTk4OCw3ICs5ODksNyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBpbnQgZQogICAgIGl0LT52YWx1ZS5kaXNhYmxlZCA9IGRpc2FibGVk
OwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0
ZW5lcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBldmVudExpc3RlbmVySWQpCit2b2lk
IEluc3BlY3RvckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGludCBldmVudExpc3RlbmVySWQsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0aW9uc1BheWxvYWQpCiB7CiAgICAgYXV0byBpdCA9IG1fZXZlbnRMaXN0ZW5lckVudHJp
ZXMuZmluZChldmVudExpc3RlbmVySWQpOwogICAgIGlmIChpdCA9PSBtX2V2ZW50TGlzdGVuZXJF
bnRyaWVzLmVuZCgpKSB7CkBAIC05OTYsNyArOTk3LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaXQtPnZhbHVlLmhhc0JyZWFrcG9pbnQg
PSB0cnVlOworICAgIGl0LT52YWx1ZS5icmVha3BvaW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXls
b2FkKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklk
KQpAQCAtMTAwNyw3ICsxMDA4LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cmVtb3ZlQnJl
YWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW4KICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIGl0LT52YWx1ZS5oYXNCcmVha3BvaW50ID0gZmFsc2U7Cisg
ICAgaXQtPnZhbHVlLmJyZWFrcG9pbnQgPSBudWxscHRyOwogfQogCiB2b2lkIEluc3BlY3RvckRP
TUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpB
Y2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykKQEAgLTE3NTEsNyArMTc1Miw3
IEBAIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFyCiAgICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwog
fQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0
b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2
ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29s
IGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQpCitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBjb25zdCBSZWZQdHI8SlNDOjpC
cmVha3BvaW50PiYgYnJlYWtwb2ludCkKIHsKICAgICBSZWY8RXZlbnRMaXN0ZW5lcj4gZXZlbnRM
aXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCk7CiAKQEAgLTE4Mzks
OCArMTg0MCw4IEBAIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+
IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2CiAgICAgICAgIHZhbHVlLT5zZXRP
bmNlKHRydWUpOwogICAgIGlmIChkaXNhYmxlZCkKICAgICAgICAgdmFsdWUtPnNldERpc2FibGVk
KGRpc2FibGVkKTsKLSAgICBpZiAoaGFzQnJlYWtwb2ludCkKLSAgICAgICAgdmFsdWUtPnNldEhh
c0JyZWFrcG9pbnQoaGFzQnJlYWtwb2ludCk7CisgICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAg
IHZhbHVlLT5zZXRIYXNCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgIHJldHVybiB2YWx1ZTsK
IH0KIApAQCAtMjU0OCwxMyArMjU0OSwxMyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpldmVu
dERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBFdmVudCYgZXZlbnQpCiAgICAgbV9kaXNwYXRj
aGVkRXZlbnRzLnJlbW92ZSgmZXZlbnQpOwogfQogCi1ib29sIEluc3BlY3RvckRPTUFnZW50Ojpo
YXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBB
dG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1
cmUpCitSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBJbnNwZWN0b3JET01BZ2VudDo6YnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYg
ZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAg
IGZvciAoYXV0byYgaW5zcGVjdG9yRXZlbnRMaXN0ZW5lciA6IG1fZXZlbnRMaXN0ZW5lckVudHJp
ZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGluc3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hl
cyh0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIsIGNhcHR1cmUpKQotICAgICAgICAgICAgcmV0
dXJuIGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludDsKKyAgICAgICAgICAgIHJl
dHVybiBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmJyZWFrcG9pbnQ7CiAgICAgfQotICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAogaW50IEluc3BlY3RvckRPTUFnZW50
OjppZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0ZW5lciwgYm9vbCBjYXB0dXJlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5o
CmluZGV4IDdlNmQzZjY4ZDNkNjBjYWYzZDNhMDFhY2MzODBhMjYwNWY0MmQ2ZTMuLjNlMzc3MDdh
ZmVjZjc4ZjQyMThhYTgzMDFlMWVhMmQ0MWM3MjUxNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMyLDYgKzMyLDcg
QEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50
QmFzZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJl
YWtwb2ludC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNw
YXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlz
cGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTI1LDcgKzEyNiw3IEBA
IHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9y
U3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAg
ICB2b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYsIGludCBldmVudExp
c3RlbmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0QnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklkKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5n
JiwgaW50IGV2ZW50TGlzdGVuZXJJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5h
bDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5n
JiwgaW50IGV2ZW50TGlzdGVuZXJJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBY2Nlc3NpYmls
aXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVy
dGllcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgSlNPTjo6QXJyYXkqIG5vZGVJZHMsIGNvbnN0IGJvb2wq
IGNhc2VTZW5zaXRpdmUsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJy
aWRlOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBhc3NlcnRFbGVt
ZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7CiAgICAgRG9jdW1lbnQqIGFzc2VydERvY3Vt
ZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBl
LCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3Bv
aW50PiBicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgaW50
IGlkRm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50
VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAKIHByaXZhdGU6CkBAIC0yMzEs
NyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWls
ZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwogICAgIFJlZjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWlu
ZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVz
TWFwKTsKICAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVU
b0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZl
bnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRF
dmVudExpc3RlbmVyJiwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0
cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQpOworICAg
IFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0
Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVu
dGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBk
aXNhYmxlZCwgY29uc3QgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mKTsKICAgICBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmpl
Y3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKik7CiAgICAgdm9pZCBwcm9jZXNzQWNj
ZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwog
ICAgIApAQCAtMjkwLDcgKzI5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEF0b21TdHJpbmcgZXZl
bnRUeXBlOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgeyBmYWxzZSB9OwogICAgICAgICBib29s
IGRpc2FibGVkIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBoYXNCcmVha3BvaW50IHsgZmFsc2Ug
fTsKKyAgICAgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYnJlYWtwb2ludDsKIAogICAgICAg
ICBJbnNwZWN0b3JFdmVudExpc3RlbmVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3Bw
CmluZGV4IDM1MmMxMzMzNzY0NjlhYmViYWRkMTk2MTIzNjM4ODk2ZDMwZmM0MzEuLmZiMTM4YTJl
MmZmZjJlMjE1MzFhYzE4NGYxZTFjY2EyZTVlNTdhOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmNwcApAQCAtNzYsMTAgKzc2LDExIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlzYWJsZSgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRET01EZWJ1Z2dl
ckFnZW50KG51bGxwdHIpOwogCiAgICAgbV9saXN0ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7Cisg
ICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgbV9wYXVz
ZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsVGlt
ZW91dHNCcmVha3BvaW50ID0gbnVsbHB0cjsKKwogICAgIG1fdXJsQnJlYWtwb2ludHMuY2xlYXIo
KTsKLSAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkID0gZmFsc2U7Ci0gICAgbV9wYXVz
ZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IGZhbHNlOwotICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRz
RW5hYmxlZCA9IGZhbHNlOwogICAgIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkID0gZmFsc2U7CiB9
CiAKQEAgLTExMSw3ICsxMTIsMjIgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aXNjYXJkQWdlbnQoKQogICAgIG1fZGVidWdnZXJBZ2VudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBicmVha3BvaW50VHlwZVN0cmluZywgY29uc3Qg
U3RyaW5nKiBldmVudE5hbWUpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Om1haW5G
cmFtZU5hdmlnYXRlZCgpCit7CisgICAgZm9yIChhdXRvJiBicmVha3BvaW50IDogbV9saXN0ZW5l
ckJyZWFrcG9pbnRzLnZhbHVlcygpKQorICAgICAgICBicmVha3BvaW50LT5yZXNldEhpdENvdW50
KCk7CisKKyAgICBpZiAobV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAg
bV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludC0+cmVzZXRIaXRDb3VudCgpOworCisgICAg
aWYgKG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFs
bExpc3RlbmVyc0JyZWFrcG9pbnQtPnJlc2V0SGl0Q291bnQoKTsKKworICAgIGlmIChtX3BhdXNl
T25BbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJl
YWtwb2ludC0+cmVzZXRIaXRDb3VudCgpOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IFN0cmluZyYgYnJlYWtwb2ludFR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lLCBj
b25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQogewogICAgIGlmIChicmVha3BvaW50
VHlwZVN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiYnJlYWtwb2lu
dFR5cGUgaXMgZW1wdHkiX3M7CkBAIC0xMjQsMTAgKzE0MCwxMyBAQCB2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYXV0byBicmVha3BvaW50ID0g
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoZXJy
b3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAg
IHJldHVybjsKKwogICAgIGlmIChldmVudE5hbWUgJiYgIWV2ZW50TmFtZS0+aXNFbXB0eSgpKSB7
CiAgICAgICAgIGlmIChicmVha3BvaW50VHlwZS52YWx1ZSgpID09IEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpMaXN0ZW5lcikgewotICAgICAg
ICAgICAgaWYgKCFtX2xpc3RlbmVyQnJlYWtwb2ludHMuYWRkKCpldmVudE5hbWUpKQotICAgICAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgd2l0aCBldmVudE5hbWUgYWxyZWFk
eSBleGlzdHMiX3M7CisgICAgICAgICAgICBtX2xpc3RlbmVyQnJlYWtwb2ludHMuc2V0KCpldmVu
dE5hbWUsIGJyZWFrcG9pbnQucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIApAQCAtMTM3LDI1ICsxNTYsMTkgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b24KIAogICAgIHN3aXRjaCAoYnJlYWtwb2ludFR5cGUudmFsdWUoKSkgewogICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkFuaW1h
dGlvbkZyYW1lOgotICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoZXJyb3JTdHJp
bmcsIHRydWUpOworICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoZXJyb3JTdHJp
bmcsIFdURk1vdmUoYnJlYWtwb2ludCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6OkludGVy
dmFsOgotICAgICAgICBpZiAobV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCkKLSAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIEludGVydmFsIGFscmVhZHkgZXhpc3Rz
Il9zOwotICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkID0gdHJ1ZTsKKyAgICAg
ICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7
CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1
Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlzdGVuZXI6Ci0gICAgICAgIGlmIChtX3BhdXNl
T25BbGxMaXN0ZW5lcnNFbmFibGVkKQotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtw
b2ludCBmb3IgTGlzdGVuZXIgYWxyZWFkeSBleGlzdHMiX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFs
bExpc3RlbmVyc0VuYWJsZWQgPSB0cnVlOworICAgICAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNC
cmVha3BvaW50ID0gV1RGTW92ZShicmVha3BvaW50KTsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBl
OjpUaW1lb3V0OgotICAgICAgICBpZiAobV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkKQotICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgVGltZW91dCBhbHJlYWR5IGV4
aXN0cyJfczsKLSAgICAgICAgbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkID0gdHJ1ZTsKKyAg
ICAgICAgbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gV1RGTW92ZShicmVha3BvaW50
KTsKICAgICAgICAgYnJlYWs7CiAgICAgfQogfQpAQCAtMTg2LDM0ICsxOTksMzEgQEAgdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLAogCiAgICAgc3dpdGNoIChicmVha3BvaW50VHlwZS52YWx1ZSgpKSB7
CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3Bv
aW50VHlwZTo6QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtw
b2ludChlcnJvclN0cmluZywgZmFsc2UpOworICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFr
cG9pbnQoZXJyb3JTdHJpbmcsIG51bGxwdHIpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2Ug
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6Oklu
dGVydmFsOgotICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQpCisgICAg
ICAgIGlmICghbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKICAgICAgICAgICAgIGVy
cm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIEludGVydmFscyBtaXNzaW5nIl9zOwotICAgICAg
ICBtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1fcGF1c2VP
bkFsbEludGVydmFsc0JyZWFrcG9pbnQgPSBudWxscHRyOwogICAgICAgICBicmVhazsKIAogICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5
cGU6Okxpc3RlbmVyOgotICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQp
CisgICAgICAgIGlmICghbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKICAgICAgICAg
ICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIExpc3RlbmVycyBtaXNzaW5nIl9zOwot
ICAgICAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1f
cGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBudWxscHRyOwogICAgICAgICBicmVhazsK
IAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtw
b2ludFR5cGU6OlRpbWVvdXQ6Ci0gICAgICAgIGlmICghbV9wYXVzZU9uQWxsVGltZW91dHNFbmFi
bGVkKQorICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCkKICAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIFRpbWVvdXRzIG1pc3NpbmciX3M7
Ci0gICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBt
X3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBudWxscHRyOwogICAgICAgICBicmVhazsK
ICAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2
ZW50KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVy
ZWRFdmVudExpc3RlbmVyKQogewotICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50
c0FjdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KICAgICBhdXRvIHN0YXRlID0gZXZlbnQudGFy
Z2V0KCktPnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+ZXhlY1N0YXRlKCk7CiAgICAgYXV0byBp
bmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9y
KHN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKQpAQCAtMjI1LDEy
ICsyMzUsMjAgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZl
bnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXYKICAgICAgICAgaW5qZWN0ZWRTY3Jp
cHQuc2V0RXZlbnRWYWx1ZSh0b0pTKHN0YXRlLCBkZXByZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJv
dG90eXBlKHN0YXRlKSwgZXZlbnQpKTsKICAgICB9CiAKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2Vu
dC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCiAgICAgYXV0byogZG9t
QWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCk7CiAKLSAg
ICBib29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVu
dEVuYWJsZWQoKSB8fCBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkIHx8IG1fbGlzdGVuZXJC
cmVha3BvaW50cy5jb250YWlucyhldmVudC50eXBlKCkpOwotICAgIGlmICghc2hvdWxkUGF1c2Ug
JiYgZG9tQWdlbnQpCi0gICAgICAgIHNob3VsZFBhdXNlID0gZG9tQWdlbnQtPmhhc0JyZWFrcG9p
bnRGb3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwg
cmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIudXNlQ2FwdHVyZSgpKTsKLSAgICBpZiAoIXNob3VsZFBhdXNlKQorICAgIGF1dG8gYnJlYWtw
b2ludCA9IG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3Bv
aW50KSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2xpc3RlbmVyQnJlYWtwb2ludHMuZmluZChldmVu
dC50eXBlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9saXN0ZW5lckJyZWFrcG9pbnRzLmVuZCgp
KQorICAgICAgICAgICAgYnJlYWtwb2ludCA9IGl0LT52YWx1ZS5jb3B5UmVmKCk7CisgICAgfQor
ICAgIGlmICghYnJlYWtwb2ludCAmJiBkb21BZ2VudCkKKyAgICAgICAgYnJlYWtwb2ludCA9IGRv
bUFnZW50LT5icmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgp
LCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7CisgICAgaWYgKCFicmVha3BvaW50KQog
ICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBldmVudERhdGEgPSBKU09O
OjpPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMjQxLDEyICsyNTksMzYgQEAgdm9pZCBJbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdp
c3RlcmVkRXYKICAgICAgICAgICAgIGV2ZW50RGF0YS0+c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5l
cklkIl9zLCBldmVudExpc3RlbmVySWQpOwogICAgIH0KIAotICAgIG1fZGVidWdnZXJBZ2VudC0+
c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246Okxpc3RlbmVyLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOworICAgIG1f
ZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3Bv
aW50LCBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Okxpc3Rl
bmVyLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ6OmRpZEhhbmRsZUV2ZW50KCkKK3ZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
ZGlkSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0gICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIuY2xlYXJFdmVudFZhbHVlKCk7CisgICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOworICAgIGF1dG8gaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7
CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgeworICAgICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKworICAgICAg
ICBpbmplY3RlZFNjcmlwdC5jbGVhckV2ZW50VmFsdWUoKTsKKyAgICB9CisKKyAgICBpZiAoIW1f
ZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFn
ZW50KCk7CisKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVh
a3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgYnJlYWtwb2ludCA9IG1fbGlz
dGVuZXJCcmVha3BvaW50cy5nZXQoZXZlbnQudHlwZSgpKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQg
JiYgZG9tQWdlbnQpCisgICAgICAgIGJyZWFrcG9pbnQgPSBkb21BZ2VudC0+YnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIoKmV2ZW50LmN1cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdp
c3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxsYmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51
c2VDYXB0dXJlKCkpOworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVh
a3BvaW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZVRp
bWVyKGJvb2wgb25lU2hvdCkKQEAgLTI1NCwxMiArMjk2LDI0IEBAIHZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6d2lsbEZpcmVUaW1lcihib29sIG9uZVNob3QpCiAgICAgaWYgKCFtX2Rl
YnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGJvb2wgc2hvdWxkUGF1c2UgPSBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50
RW5hYmxlZCgpIHx8IChvbmVTaG90ID8gbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkIDogbV9w
YXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCk7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSkKKyAgICBh
dXRvIGJyZWFrcG9pbnQgPSBvbmVTaG90ID8gbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50
IDogbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQp
CiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gYnJlYWtSZWFzb24gPSBvbmVTaG90ID8gSW5z
cGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpUaW1lb3V0IDogSW5z
cGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpJbnRlcnZhbDsKLSAg
ICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoYnJlYWtSZWFz
b24sIG51bGxwdHIpOworICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZUZvclNwZWNp
YWxCcmVha3BvaW50KCpicmVha3BvaW50LCBicmVha1JlYXNvbik7Cit9CisKK3ZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmlyZVRpbWVyKGJvb2wgb25lU2hvdCkKK3sKKyAgICBp
ZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byBicmVha3BvaW50ID0gb25lU2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRz
QnJlYWtwb2ludCA6IG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFi
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmNhbmNl
bFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldFVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaAppbmRleCAwMWUzYmRjZjAwNGFlNjQwZGZhOTYzZmY5YTU0YzM1
ZDJhZWNkMDUyLi45ZjZlNjM4ZTMzZWUwMzA5NDk5ZTY3MjYwMjFiZDBjMDgxOTRlODRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaApAQCAtMzIsMTAgKzMyLDEzIEBACiAjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRD
b3JlL0JyZWFrcG9pbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSW5zcGVj
dG9yIHsKQEAgLTY0LDcgKzY3LDcgQEAgcHVibGljOgogICAgIC8vIERPTURlYnVnZ2VyQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgdm9pZCBzZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5n
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkgZmluYWw7
CiAgICAgdm9pZCByZW1vdmVVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiB1cmwpIGZpbmFsOwotICAgIHZvaWQgc2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwg
Y29uc3QgU3RyaW5nJiBicmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpIGZp
bmFsOworICAgIHZvaWQgc2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiBicmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nKiBldmVudE5hbWUsIGNvbnN0IEpTT046
Ok9iamVjdCogb3B0aW9ucykgZmluYWw7CiAgICAgdm9pZCByZW1vdmVFdmVudEJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcq
IGV2ZW50TmFtZSkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0
ZW5lcgpAQCAtNzIsMTggKzc1LDIwIEBAIHB1YmxpYzoKICAgICB2b2lkIGRlYnVnZ2VyV2FzRGlz
YWJsZWQoKSBvdmVycmlkZTsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgorICAg
IHZpcnR1YWwgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICB2b2lkIHdpbGxTZW5kWE1M
SHR0cFJlcXVlc3QoY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQgd2lsbEZldGNoKGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHdpbGxIYW5kbGVFdmVudChFdmVudCYsIGNvbnN0IFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyJik7Ci0gICAgdm9pZCBkaWRIYW5kbGVFdmVudCgpOworICAg
IHZvaWQgZGlkSGFuZGxlRXZlbnQoRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ciYpOwogICAgIHZvaWQgd2lsbEZpcmVUaW1lcihib29sIG9uZVNob3QpOworICAgIHZvaWQgZGlk
RmlyZVRpbWVyKGJvb2wgb25lU2hvdCk7CiAKIHByb3RlY3RlZDoKICAgICBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50KFdlYkFnZW50Q29udGV4dCYsIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCopOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZSgpOwogCi0gICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGJvb2wgZW5hYmxlZCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRB
bmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3Bv
aW50PiYmKSA9IDA7CiAKICAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1f
ZGVidWdnZXJBZ2VudCB7IG51bGxwdHIgfTsKIApAQCAtOTQsMTQgKzk5LDEzIEBAIHByaXZhdGU6
CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6RE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9i
YWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciYg
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CiAKLSAgICBIYXNoU2V0PFN0cmluZz4gbV9saXN0ZW5l
ckJyZWFrcG9pbnRzOworICAgIEhhc2hNYXA8U3RyaW5nLCBSZWY8SlNDOjpCcmVha3BvaW50Pj4g
bV9saXN0ZW5lckJyZWFrcG9pbnRzOworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1
c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4g
bV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludDsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3Bv
aW50PiBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQ7CiAKICAgICBlbnVtIGNsYXNzIFVS
TEJyZWFrcG9pbnRUeXBlIHsgUmVndWxhckV4cHJlc3Npb24sIFRleHQgfTsKICAgICBIYXNoTWFw
PFN0cmluZywgVVJMQnJlYWtwb2ludFR5cGU+IG1fdXJsQnJlYWtwb2ludHM7Ci0KLSAgICBib29s
IG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVz
ZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxU
aW1lb3V0c0VuYWJsZWQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9wYXVzZU9uQWxsVVJMc0VuYWJs
ZWQgeyBmYWxzZSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5jcHAKaW5kZXggMTQwZTE1NzhjNWYw
OTZlNDQ0ZWQxNDkyMDc3MThlZTdmODY0NTUyNi4uMzAxZWY5NTI1NjQ5YmEwMGRiMjI5MzM0ODUy
NjE3M2NkMTE5MjdhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC01MSw5ICs1MSw5IEBACiAj
aW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFn
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0JyZWFrcG9pbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVz
c2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRCcmVha3BvaW50Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3Rh
cnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIAogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRUcmFja2luZ1RpbWVsaW5lQWdlbnQodGhpcyk7CiAKLSAgICBtX2Vudmlyb25tZW50
LnNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhpcyk7CisgICAgbV9lbnZpcm9ubWVu
dC5zY3JpcHREZWJ1Z1NlcnZlcigpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIG1fdHJhY2tp
bmcgPSB0cnVlOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjppbnRlcm5hbFN0b3AoKQogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFRyYWNr
aW5nVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAotICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlzLCB0cnVlKTsKKyAgICBtX2Vudmlyb25tZW50
LnNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMsIHRydWUpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAt
NjY5LDExICs2NjksOSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVPYnNl
cnZlckNhbGxiYWNrKCkKICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNv
cmRUeXBlOjpPYnNlcnZlckNhbGxiYWNrKTsKIH0KIAotLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgot
Ci12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJbnNwZWN0b3I6OlNj
cmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgLypiYXRjaElkKi8sIHVuc2ln
bmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypiYXRj
aElkKi8sIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5kUmVj
b3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbiwg
c2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVG
cm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBhcHBlbmRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uSUQsIHNhbXBs
ZUlkKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4
ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBJbnNwZWN0b3I6OlBy
b3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBl
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDMwZmM5Nzk1MjRhOTRiZTBkMzQxNTUxZTFmZThl
ZGNmOWE0ZjdiM2IuLjk1YThlM2VkNzJkMmZiNDQ1MTRhMzEzYTE0MWMxYTlhNzk4OTM4NWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5oCkBAIC0zNCw5ICszNCwxMCBAQAogCiAjaW5jbHVkZSAiSW5zcGVjdG9y
V2ViQWdlbnRCYXNlLmgiCiAjaW5jbHVkZSAiTGF5b3V0UmVjdC5oIgorI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0RlYnVnZ2VyLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXJQ
cmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERp
c3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRnJvbnRlbmRE
aXNwYXRjaGVycy5oPgotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdERlYnVnTGlzdGVu
ZXIuaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIApAQCAtODEsNyArODIsNyBAQCBlbnVtIGNsYXNzIFRpbWVsaW5lUmVjb3JkVHlwZSB7CiAg
ICAgT2JzZXJ2ZXJDYWxsYmFjaywKIH07CiAKLWNsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQg
ZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlICwgcHVibGljIEluc3BlY3Rvcjo6VGlt
ZWxpbmVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgLCBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHRE
ZWJ1Z0xpc3RlbmVyIHsKK2NsYXNzIEluc3BlY3RvclRpbWVsaW5lQWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yQWdlbnRCYXNlICwgcHVibGljIEluc3BlY3Rvcjo6VGltZWxpbmVCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIgLCBwdWJsaWMgSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIgewogICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvclRpbWVsaW5lQWdlbnQpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtMTAwLDE2ICsxMDEsOCBAQCBwdWJsaWM6
CiAgICAgdm9pZCBzZXRBdXRvQ2FwdHVyZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sKSBvdmVy
cmlkZTsKICAgICB2b2lkIHNldEluc3RydW1lbnRzKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6
QXJyYXkmKSBvdmVycmlkZTsKIAotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lk
IGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdCYpIG92ZXJyaWRlIHsg
fQotICAgIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJp
bmcmLCBpbnQsIGludCwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCB3aWxs
UnVuTWljcm90YXNrKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6
OkpTVmFsdWUsIEpTQzo6SlNWYWx1ZSkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaWRDb250aW51
ZSgpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBicmVha3Bv
aW50QWN0aW9uU291bmQoaW50KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rp
b25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSW5zcGVjdG9yOjpTY3JpcHRCcmVh
a3BvaW50QWN0aW9uJiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6
SlNWYWx1ZSByZXN1bHQpIG92ZXJyaWRlOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVy
CisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpT
Qzo6QnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJ
ZCwgSlNDOjpKU1ZhbHVlIHJlc3VsdCkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24KICAgICB2b2lkIGRpZEluc3RhbGxUaW1lcihpbnQgdGltZXJJZCwgU2Vjb25kcyB0
aW1lb3V0LCBib29sIHNpbmdsZVNob3QsIEZyYW1lKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNw
cAppbmRleCAxMzliYmM1ZTMwMjEwNjY1MjQ3NDU1NzM5MzU1ZjhjZGU3NGMyMTkwLi43NTU0NThj
MGIxZDE2M2MxYzE2NmZjY2E1OGY1ZDc4ZDBhYmY5OTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2Vu
dC5jcHAKQEAgLTk0LDcgKzk0LDggQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJs
ZSgpCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldEVuYWJsZWRQYWdlRE9NRGVidWdnZXJB
Z2VudChudWxscHRyKTsKIAogICAgIG1fZG9tQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX3Bh
dXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkID0gZmFsc2U7CisKKyAgICBtX3BhdXNlT25B
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gbnVsbHB0cjsKIAogICAgIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKTsKIH0KQEAgLTE1Miw2ICsxNTMsMTQgQEAgdm9pZCBQ
YWdlRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBub2QKICAgICB9CiB9CiAKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6
Om1haW5GcmFtZU5hdmlnYXRlZCgpCit7CisgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6
bWFpbkZyYW1lTmF2aWdhdGVkKCk7CisKKyAgICBpZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludCkKKyAgICAgICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludC0+cmVzZXRIaXRDb3VudCgpOworfQorCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojpm
cmFtZURvY3VtZW50VXBkYXRlZChGcmFtZSYgZnJhbWUpCiB7CiAgICAgaWYgKCFmcmFtZS5pc01h
aW5GcmFtZSgpKQpAQCAtMjUyLDExICsyNjEsMjMgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2Vu
dDo6d2lsbEZpcmVBbmltYXRpb25GcmFtZSgpCiAgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJy
ZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc2hvdWxkUGF1
c2UgPSBtX2RlYnVnZ2VyQWdlbnQtPnBhdXNlT25OZXh0U3RhdGVtZW50RW5hYmxlZCgpIHx8IG1f
cGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQ7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSkK
KyAgICBhdXRvIGJyZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50OworICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9kZWJ1
Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KEluc3BlY3Rvcjo6RGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QW5pbWF0aW9uRnJhbWUsIG51bGxwdHIpOwor
ICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpi
cmVha3BvaW50LCBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246
OkFuaW1hdGlvbkZyYW1lKTsKK30KKwordm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmly
ZUFuaW1hdGlvbkZyYW1lKCkKK3sKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2lu
dHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBicmVha3BvaW50ID0gbV9w
YXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JT
cGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCk7CiB9CiAKIHZvaWQgUGFnZURPTURlYnVnZ2Vy
QWdlbnQ6OndpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCkBAIC0yNzEs
MTIgKzI5Miw5IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxJbnZhbGlkYXRlU3R5
bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgfQogfQogCi12b2lkIFBhZ2VET01EZWJ1Z2dl
ckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBib29sIGVuYWJsZWQpCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRp
b25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYm
IGJyZWFrcG9pbnQpCiB7Ci0gICAgaWYgKG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJs
ZWQgPT0gZW5hYmxlZCkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBtX3BhdXNlT25BbGxBbmltYXRp
b25GcmFtZXNFbmFibGVkID8gIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIGFscmVhZHkg
ZXhpc3RzIl9zIDogIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIG1pc3NpbmciX3M7Ci0K
LSAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkID0gZW5hYmxlZDsKKyAgICBt
X3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gV1RGTW92ZShicmVha3BvaW50
KTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3JpcHRpb25Gb3JET01FdmVu
dChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpTT046
Ok9iamVjdCYgZGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IDdkZGY0NTNi
OTQxOWQyMGZhOTE0NmMxMTdmYWFiZmE1MWZmMzQ2MDQuLmJhNGVmNjAyM2RhYjMwOGIxYWQ1MWJk
ODYyNDkwYmFiNTcwYTFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0yNiw2ICsyNiw4
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
aCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+CisjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ5LDcgQEAgcHVi
bGljOgogICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24KKyAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZCgpIGZpbmFsOwogICAgIHZv
aWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUmKTsKICAgICB2b2lkIHdpbGxJbnNlcnRET01O
b2RlKE5vZGUmIHBhcmVudCk7CiAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUmKTsKQEAg
LTU1LDEyICs1OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihFbGVt
ZW50Jik7CiAgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAgICAg
dm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKCk7CisgICAgdm9pZCBkaWRGaXJlQW5pbWF0aW9u
RnJhbWUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGlzYWJsZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0
QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJlYWtw
b2ludD4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQoTm9k
ZSYsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpTT046Ok9iamVjdCYgZGVz
Y3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1aW50
MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwpAQCAtNjgsNyArNzIsOCBAQCBwcml2YXRlOgogICAg
IGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogCiAgICAgSGFzaE1hcDxOb2Rl
KiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxBbmlt
YXRpb25GcmFtZXNFbmFibGVkIHsgZmFsc2UgfTsKKworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1MGNjOThiM2ZhMzBlM2Rh
MWY2ZTVlZGQyOTFjOWNjNjYzMTY2ZTcxLi4yMTdjYjU1ZTZjMGVkNzZjOWU2NzQxOGE4YzMzNGEw
NDE4ZmNlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9h
Z2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQ
YWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAgICAgV2Vi
RGVidWdnZXJBZ2VudDo6ZGlzYWJsZShpc0JlaW5nRGVzdHJveWVkKTsKIH0KIAotU3RyaW5nIFBh
Z2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3Jp
cHQpCitTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25z
dCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmIHNjcmlwdCkKIHsKICAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyKE1BS0VfU1RBVElDX1NUUklOR19JTVBM
KCJTb3VyY2VNYXAiKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNl
TWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQoTUFLRV9TVEFUSUNfU1RSSU5HX0lNUEwoIlgtU291cmNl
TWFwIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdl
L1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3Bh
Z2UvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCBkMTM5MTA4YmZiOTg4MzQ5MzlhZDAyOWM2N2M5
NmE4ZmUxOWM3NjNhLi40YzI3ZGQxYzc0YjEyZTg1N2I2Y2Y2NTEwZjg5OTc2MDdhMTY2MjA3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVn
Z2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURlYnVnZ2VyQWdlbnQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6CiAgICAgLy8gRGVidWdn
ZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVD
b21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVD
b25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVBy
ZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVtdWxhdGVVc2VyR2Vz
dHVyZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRS
ZXN1bHRJbmRleCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAg
dm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQg
YnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBk
YXRhKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQg
ZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiwgRE9NV3JhcHBlcldvcmxkJik7CkBA
IC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIGRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKIAotICAgIFN0
cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGU7CisgICAg
U3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQm
KSBvdmVycmlkZTsKIAogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKICAgICB2b2lk
IHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggYWQ4M2Y2ZDM3YmQ2NGJjZTIyMWUzZGFjZDdhMjI5OTMxMTJhOGY2Mi4uMTQ3NmZi
YzgxOTYzNTdkOTEyYmM4MmEzYzM1NGU4M2E5NGE0NjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVi
dWdnZXJBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXb3JrZXJET01EZWJ1Z2dlckFn
ZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IC8K
ICAgICBlcnJvclN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQogCi12b2lkIFdvcmtlckRP
TURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGJvb2wgLyogZW5hYmxlZCAqLykKK3ZvaWQgV29ya2VyRE9NRGVidWdnZXJB
Z2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikKIHsKICAgICBlcnJvclN0cmluZyA9ICJOb3Qg
c3VwcG9ydGVkIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4IGIxMTI4
NWUwNDYyZGEyMTEwZjg5NTY2ODY3ZDVmMDI5NjE3MzJlYjAuLmRhZDE4ZjVjMGVjOGFhM2JjOGI0
Zjc4YWRmZjRlOTA4ZmRkODNkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmgKQEAg
LTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4KKyNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDEsNyAr
NDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGJvb2wg
ZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmKSBvdmVycmlkZTsKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAppbmRleCAzMTkx
Njc2NjNjN2Q2NzhjNDBhMmRmZmU0MTQ2NWQ1NWIzZWUzNWEzLi40YWMwN2Q2Y2MzN2MyMjgwMzMz
OGViODBkMzQyMTk1MjFiOTZmM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCkBAIC0zOCw4
ICszOCw4IEBAIHB1YmxpYzoKICAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KFdvcmtlckFnZW50Q29u
dGV4dCYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBT
Y3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVn
Z2VyOjpPYnNlcnZlcgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFs
T2JqZWN0KiwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICAvLyBX
ZSBkb24ndCBuZWVkIHRvIG11dGUgY29uc29sZSBmb3Igd29ya2Vycy4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01U
aW1lci5jcHAKaW5kZXggNWI5MzFlZmExZjAzYWJhOWY2NzlmNzk1MmRkOWFkZjczYzgxNjFjOC4u
ODY1NDA4ZGJmYTUwMzYyMWZhYzQxZjIwZjZjZmZiZjQ0MzU4YTYwZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01UaW1lci5jcHAKQEAgLTI4NCw2ICsyODQsOCBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAg
ICAgLy8gd2FpdCB1bml0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0byBkZWxldGUgRE9NVGlt
ZXIuCiAgICAgUmVmPERPTVRpbWVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAorICAgIGJvb2wg
b25lU2hvdCA9ICFyZXBlYXRJbnRlcnZhbCgpOworCiAgICAgQVNTRVJUKHNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCA9ICpzY3Jp
cHRFeGVjdXRpb25Db250ZXh0KCk7CiAKQEAgLTI5MSw3ICsyOTMsNyBAQCB2b2lkIERPTVRpbWVy
OjpmaXJlZCgpCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAgICAgICBhdXRv
JiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKICAgICAgICAgaWYgKGF1
dG8qIGhvbGRpbmdUYW5rID0gZG9jdW1lbnQuZG9tVGltZXJIb2xkaW5nVGFua0lmRXhpc3RzKCk7
IGhvbGRpbmdUYW5rICYmIGhvbGRpbmdUYW5rLT5jb250YWlucygqdGhpcykpIHsKLSAgICAgICAg
ICAgIGlmICghcmVwZWF0SW50ZXJ2YWwoKSkKKyAgICAgICAgICAgIGlmIChvbmVTaG90KQogICAg
ICAgICAgICAgICAgIHN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICB9CkBAIC0zMDksNyArMzExLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogICAgIC8v
IE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3QgdGltZXIgc2hvdWxkIGdl
dCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgogICAgIG1fdXNlckdlc3R1
cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsICFyZXBlYXRJbnRlcnZhbCgp
KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwg
bV90aW1lb3V0SWQsIG9uZVNob3QpOwogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9yIG5vbi1vbmUt
c2hvdCB0aW1lcnMuCiAgICAgaWYgKGlzQWN0aXZlKCkpIHsKQEAgLTMyMCw3ICszMjIsNyBAQCB2
b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4
dCk7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoY29u
dGV4dCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVyKGNv
bnRleHQsIG1fdGltZW91dElkLCBvbmVTaG90KTsKIAogICAgICAgICB1cGRhdGVUaHJvdHRsaW5n
U3RhdGVJZk5lY2Vzc2FyeShmaXJlU3RhdGUpOwogICAgICAgICByZXR1cm47CkBAIC0zMzgsNyAr
MzQwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogI2VuZGlmCiAgICAgbV9hY3Rpb24tPmV4
ZWN1dGUoY29udGV4dCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVU
aW1lcihjb250ZXh0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1l
cihjb250ZXh0LCBtX3RpbWVvdXRJZCwgb25lU2hvdCk7CiAKICAgICAvLyBDaGVjayBpZiB3ZSBz
aG91bGQgdGhyb3R0bGUgbmVzdGVkIHNpbmdsZS1zaG90IHRpbWVycy4KICAgICBpZiAobmVzdGVk
VGltZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1NldHRpbmcuanMKaW5kZXggM2IxOTlmYTY4OGZiNTY5NjMyODE1NzQzZjMwNGFmOGM0NTdh
ZjZmZC4uZWQ1YWIwMDk2YjJkMTA2Njc4ZmE5OTgyODUyZWM5OGI2ZjMyMTU4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwpA
QCAtMTk3LDEyICsxOTcsOCBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBzZWFyY2hSZWd1bGFyRXhw
cmVzc2lvbjogbmV3IFdJLlNldHRpbmcoInNlYXJjaC1yZWd1bGFyLWV4cHJlc3Npb24iLCBmYWxz
ZSksCiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVudFZpZXdJZGVudGlmaWVyOiBuZXcg
V0kuU2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12aWV3LWlkZW50aWZpZXIiLCAicHJl
dmlldyIpLAogICAgIHNvdXJjZU1hcHNFbmFibGVkOiBuZXcgV0kuU2V0dGluZygic291cmNlLW1h
cHMtZW5hYmxlZCIsIHRydWUpLAotICAgIHNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50
OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtYW5pbWF0aW9uLWZyYW1lcy1icmVha3BvaW50Iiwg
ZmFsc2UpLAotICAgIHNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygi
c2hvdy1hbGwtaW50ZXZlcmFscy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxMaXN0
ZW5lcnNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtbGlzdGVuZXJzLWJyZWFr
cG9pbnQiLCBmYWxzZSksCiAgICAgc2hvd0FsbE1pY3JvdGFza3NCcmVha3BvaW50OiBuZXcgV0ku
U2V0dGluZygic2hvdy1hbGwtbWljcm90YXNrcy1icmVha3BvaW50IiwgZmFsc2UpLAogICAgIHNo
b3dBbGxSZXF1ZXN0c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFsbC1yZXF1ZXN0
cy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQ6IG5l
dyBXSS5TZXR0aW5nKCJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50IiwgZmFsc2UpLAogICAg
IHNob3dBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFz
c2VydGlvbi1mYWlsdXJlcy1icmVha3BvaW50IiwgdHJ1ZSksCiAgICAgc2hvd0NhbnZhc1BhdGg6
IG5ldyBXSS5TZXR0aW5nKCJzaG93LWNhbnZhcy1wYXRoIiwgZmFsc2UpLAogICAgIHNob3dJbWFn
ZUdyaWQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWltYWdlLWdyaWQiLCB0cnVlKSwKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFr
cG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcwppbmRleCBh
ZTRjYzQ3YzUxY2NkNzgzMDg5NmFlYThjMzNjMjQxYjg4OTQxYzM1Li4wOThjYTJkZmNjYmJhNmIx
ZDdhY2NiOTY0ZDEzODViN2JhNGJjODE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
QnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzCkBAIC00MCw2MCArNDAsNTkgQEAgV0kuQnJl
YWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9s
bGVyIGV4dGVuZHMgV0kuT2IKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvY3VtZW50
LmJvZHkuY29udGFpbnMoYnJlYWtwb2ludERpc3BsYXlFbGVtZW50KSwgIkJyZWFrcG9pbnQgcG9w
b3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVzdCBiZSBpbiB0aGUgRE9NLiIpOwogCi0gICAgICAgIGNv
bnN0IGVkaXRCcmVha3BvaW50ID0gKCkgPT4gewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX3BvcG92ZXIsICJCcmVha3BvaW50IHBvcG92ZXIgYWxyZWFkeSBleGlzdHMuIik7Ci0g
ICAgICAgICAgICBpZiAodGhpcy5fcG9wb3ZlcikKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIGlmIChicmVha3BvaW50LmVkaXRhYmxlKSB7CisgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9pbnRcdTIwMjYiKSwgKCkgPT4g
eworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wb3BvdmVyLCAiQnJlYWtw
b2ludCBwb3BvdmVyIGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICAgICAgICAgIGlmICh0aGlz
Ll9wb3BvdmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHRo
aXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgdGhpcy5f
cG9wb3ZlciA9IG5ldyBXSS5Qb3BvdmVyKHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fcG9wb3Zl
ci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50OworICAgICAgICAgICAgICAg
IHRoaXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAg
IHRoaXMuX3BvcG92ZXIgPSBuZXcgV0kuUG9wb3Zlcih0aGlzKTsKKyAgICAgICAgICAgICAgICB0
aGlzLl9wb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQ7CiAKLSAg
ICAgICAgICAgIGxldCBib3VuZHMgPSBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVha3Bv
aW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOwotICAgICAgICAgICAg
Ym91bmRzLm9yaWdpbi54IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9uZSBwaXhlbCBz
byBpdCBsb29rcyBtb3JlIGNlbnRlcmVkLgotICAgICAgICAgICAgdGhpcy5fcG9wb3Zlci5wcmVz
ZW50KGJvdW5kcy5wYWQoMiksIFtXSS5SZWN0RWRnZS5NQVhfWV0pOwotICAgICAgICB9OworICAg
ICAgICAgICAgICAgIGxldCBib3VuZHMgPSBXSS5SZWN0LnJlY3RGcm9tQ2xpZW50UmVjdChicmVh
a3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOworICAgICAgICAg
ICAgICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAxOyAvLyBNb3ZlIHRoZSBhbmNob3IgbGVmdCBvbmUg
cGl4ZWwgc28gaXQgbG9va3MgbW9yZSBjZW50ZXJlZC4KKyAgICAgICAgICAgICAgICB0aGlzLl9w
b3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dJLlJlY3RFZGdlLk1BWF9ZXSk7CisgICAg
ICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHJlbW92ZUJyZWFrcG9pbnQg
PSAoKSA9PiB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2lu
dChicmVha3BvaW50KTsKLSAgICAgICAgfTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2Fi
bGVkKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJE
aXNhYmxlIEJyZWFrcG9pbnQiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQu
ZGlzYWJsZWQgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKKyAgICAgICAgICAgIH0pOwogCi0gICAg
ICAgIGNvbnN0IHRvZ2dsZUJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAgICAgICAgICBicmVha3Bv
aW50LmRpc2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgIH07CisgICAgICAg
ICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSAmJiBicmVha3BvaW50LmF1dG9Db250aW51ZSkg
eworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkNh
bmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgKCkgPT4geworICAgICAgICAgICAgICAgICAgICBi
cmVha3BvaW50LmF1dG9Db250aW51ZSA9ICFicmVha3BvaW50LmF1dG9Db250aW51ZTsKKyAgICAg
ICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50
IiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFr
cG9pbnQuZGlzYWJsZWQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNv
bnN0IHRvZ2dsZUF1dG9Db250aW51ZSA9ICgpID0+IHsKLSAgICAgICAgICAgIGJyZWFrcG9pbnQu
YXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOwotICAgICAgICB9OworICAg
ICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSAmJiAhYnJlYWtwb2ludC5hdXRvQ29udGludWUg
JiYgIWJyZWFrcG9pbnQuZGlzYWJsZWQgJiYgYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCkgewor
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiU2V0IHRvIEF1
dG9tYXRpY2FsbHkgQ29udGludWUiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9p
bnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAgICAgICAgICAg
fSk7CisgICAgICAgIH0KIAotICAgICAgICBjb25zdCByZXZlYWxPcmlnaW5hbFNvdXJjZUNvZGVM
b2NhdGlvbiA9ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7Ci0gICAgICAg
ICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKLSAgICAgICAgICAgICAgICBpZ25vcmVT
ZWFyY2hUYWI6IHRydWUsCi0gICAgICAgICAgICB9OwotICAgICAgICAgICAgV0kuc2hvd09yaWdp
bmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9j
YXRpb24sIG9wdGlvbnMpOwotICAgICAgICB9OworICAgICAgICBpZiAoYnJlYWtwb2ludC5yZW1v
dmFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmco
IkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50
LnJlbW92ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgICAgICBpZiAoV0ku
ZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9pbnQpKQotICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRWRpdCBCcmVha3BvaW50
XHUyMDI2IiksIGVkaXRCcmVha3BvaW50KTsKLQotICAgICAgICBpZiAoYnJlYWtwb2ludC5hdXRv
Q29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKLSAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVC
cmVha3BvaW50KTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJp
bmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKLSAg
ICAgICAgfSBlbHNlIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpLCB0b2dn
bGVCcmVha3BvaW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwgdG9nZ2xlQnJlYWtwb2lu
dCk7Ci0KLSAgICAgICAgaWYgKCFicmVha3BvaW50LmF1dG9Db250aW51ZSAmJiAhYnJlYWtwb2lu
dC5kaXNhYmxlZCAmJiBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiU2V0IHRvIEF1dG9tYXRpY2FsbHkgQ29u
dGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKLQotICAgICAgICBpZiAoV0kuZGVidWdnZXJN
YW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KSkKLSAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIHJl
bW92ZUJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50Ll9zb3VyY2VDb2RlTG9j
YXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50ICYmIGJyZWFrcG9pbnQuc291cmNlQ29kZUxv
Y2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKICAgICAgICAgICAgIGNvbnRleHRNZW51LmFw
cGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5V
SVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksIHJldmVhbE9yaWdpbmFsU291
cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0ku
VUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJjZSIpLCAoKSA9PiB7CisgICAgICAg
ICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlTmV0
d29ya1RhYjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaWdub3JlU2VhcmNoVGFiOiB0cnVl
LAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgV0kuc2hvd09yaWdpbmFsT3JG
b3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24s
IG9wdGlvbnMpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTEyNCw3
ICsxMjMsMjIgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAgICAgbGV0IGNoZWNrYm94
TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwogICAgICAgICBjaGVja2Jv
eExhYmVsLmNsYXNzTmFtZSA9ICJ0b2dnbGUiOwogICAgICAgICBjaGVja2JveExhYmVsLmFwcGVu
ZENoaWxkKGNoZWNrYm94RWxlbWVudCk7Ci0gICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRo
aXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygp
KTsKKyAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludCkKKyAgICAgICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kKHRoaXMuX2JyZWFr
cG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0cmluZygpKTsKKyAgICAg
ICAgZWxzZSBpZiAodGhpcy5fYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkV2ZW50QnJlYWtwb2lu
dCkgeworICAgICAgICAgICAgbGV0IGRpc3BsYXlOYW1lOworICAgICAgICAgICAgaWYgKGJyZWFr
cG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBBbmlt
YXRpb24gRnJhbWVzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAg
ICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJBbGwgSW50ZXJ2YWxzIik7CisgICAgICAgICAg
ICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5n
KCJBbGwgRXZlbnRzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAg
IGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBUaW1lb3V0cyIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYnJlYWtwb2ludC5ldmVudE5hbWU7
CisgICAgICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRl
eHROb2RlKGRpc3BsYXlOYW1lKSk7CisgICAgICAgIH0KIAogICAgICAgICBsZXQgdGFibGUgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwogCkBAIC0xNzYsNyArMTkwLDcgQEAgV0ku
QnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC5pZCA9
ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1pZ25vcmUiOwogICAgICAgICB0aGlzLl9pZ25vcmVD
b3VudElucHV0LnR5cGUgPSAibnVtYmVyIjsKICAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1
dC5taW4gPSAwOwotICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0LnZhbHVlID0gMDsKKyAg
ICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC52YWx1ZSA9IGJyZWFrcG9pbnQuaWdub3JlQ291
bnQ7CiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiY2hh
bmdlIiwgdGhpcy5fcG9wb3Zlcklnbm9yZUlucHV0Q2hhbmdlZC5iaW5kKHRoaXMpKTsKIAogICAg
ICAgICBpZ25vcmVDb3VudExhYmVsLnNldEF0dHJpYnV0ZSgiZm9yIiwgdGhpcy5faWdub3JlQ291
bnRJbnB1dC5pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKaW5k
ZXggZDI5Y2RiODQ5YmYxYzZmOWM1ZjkyOTAyZGZlMjA0MDkwN2FhYTUxOC4uNzk3YWM5ZWQxNGE5
MDMwYzFkODU3NzZiMWE5MDMxNjg1MDNkNDU3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURl
YnVnZ2VyTWFuYWdlci5qcwpAQCAtMzMsMzYgKzMzLDI3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0
aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKIAogICAgICAg
ICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzID0gW107CisgICAgICAgIHRoaXMuX2FsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBudWxsOworICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNC
cmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9
IG51bGw7CisgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCA9IG51bGw7CisKICAg
ICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHMgPSBbXTsKIAotICAgICAgICB0aGlzLl9hbGxBbmlt
YXRpb25GcmFtZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJl
YWstb24tYWxsLWFuaW1hdGlvbi1mcmFtZXMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDog
IXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwK
LSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludEVuYWJs
ZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1pbnRlcnZhbHMiLCBmYWxz
ZSk7Ci0gICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRC
cmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsLCB7Ci0gICAgICAgICAg
ICBkaXNhYmxlZDogIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52
YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1saXN0ZW5lcnMi
LCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBuZXcgV0ku
RXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7Ci0gICAg
ICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnRFbmFibGVkU2V0
dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLXRpbWVv
dXRzIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBuZXcg
V0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQsIHsKLSAg
ICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxlZFNl
dHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotCiAgICAgICAgIHRoaXMuX2FsbFJlcXVlc3RzQnJl
YWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1yZXF1
ZXN0cyIsIGZhbHNlKTsKICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50ID0gbmV3
IFdJLlVSTEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRleHQsICIiLCB7CiAgICAg
ICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0
aW5nLnZhbHVlLAogICAgICAgICB9KTsKIAotICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwg
dGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKLSAg
ICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRXZlbnRCcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9p
bnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLlVSTEJyZWFrcG9pbnQu
YWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFu
Z2VkLCB0aGlzLl9oYW5kbGVVUkxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMp
OworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50
RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENo
YW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRo
aXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVh
a3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3Bv
aW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50Lklnbm9yZUNvdW50RGlk
Q2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdl
ZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVu
dEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2
ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9u
c0RpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQsIHRo
aXMpOworCisgICAgICAgIFdJLlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVh
a3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVVSTEJyZWFr
cG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuZG9tTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRoaXMu
X25vZGVSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0ZWQs
IHRoaXMpOwpAQCAtNzgsNyArNjksNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBE
T01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAgICAg
bGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0kuU2V0dGluZy5taWdyYXRlVmFs
dWUoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFr
cG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1Nlcmlh
bGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG9iamVjdFN0b3JlLnB1dE9iamVjdChjb25zdHJ1
Y3Rvci5kZXNlcmlhbGl6ZShleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXdhaXQgb2JqZWN0U3RvcmUucHV0T2JqZWN0KGNvbnN0cnVj
dG9yLmZyb21KU09OKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIApAQCAtODYsNyArNzcsNyBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBzZXJpYWxpemVkQnJlYWtwb2ludCBvZiBzZXJpYWxp
emVkQnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBj
b25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAgICAg
ICAgICAgICAgIGxldCBicmVha3BvaW50ID0gY29uc3RydWN0b3IuZnJvbUpTT04oc2VyaWFsaXpl
ZEJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG51bGw7CiAg
ICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFzc29jaWF0ZU9iamVjdChicmVha3BvaW50
LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAgLTEwNSw0MiArOTYsMjEgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtw
b2ludHMoKSB8fCBET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtw
b2ludHMoKSkgewogICAgICAgICAgICAgbG9hZEJyZWFrcG9pbnRzKFdJLkV2ZW50QnJlYWtwb2lu
dCwgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMsIFsiZXZlbnQtYnJlYWtwb2ludHMi
XSwgKGJyZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGByZXF1ZXN0
QW5pbWF0aW9uRnJhbWVgLCBgc2V0VGltZW91dGAsIGFuZCBgc2V0SW50ZXJ2YWxgIGdsb2JhbCBi
cmVha3BvaW50cy4KLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQudHlwZSkgewot
ICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJh
bWU6Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICBp
ZiAoIVdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlz
LmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsK
LSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBXSS5vYmplY3RTdG9y
ZXMuZXZlbnRCcmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7Ci0gICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuVGltZXI6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYnJlYWtwb2ludC5l
dmVudE5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAic2V0VGltZW91dCI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQuZGlzYWJsZWQg
PSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXSS5z
ZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlKSB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52YWx1
ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFr
cG9pbnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAgICAg
ICAgIGNhc2UgInNldEludGVydmFsIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2Fs
bEludGVydmFsc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJl
YWtwb2ludC52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdJLnNldHRpbmdz
LnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxJbnRlcnZhbHNC
cmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAg
ICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFrcG9p
bnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotCiAg
ICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAg
ICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGxvYWRMZWdhY3lHbG9iYWxFdmVudEJyZWFr
cG9pbnQgPSAodHlwZSwgc2hvd25TZXR0aW5nc0tleSwgZW5hYmxlZFNldHRpbmdzS2V5KSA9PiB7
CisgICAgICAgICAgICAgICAgaWYgKCFXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShzaG93blNldHRp
bmdzS2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
cmV0dXJuIG5ldyBXSS5FdmVudEJyZWFrcG9pbnQodHlwZSwgeworICAgICAgICAgICAgICAgICAg
ICBkaXNhYmxlZDogIVdJLlNldHRpbmcubWlncmF0ZVZhbHVlKGVuYWJsZWRTZXR0aW5nc0tleSks
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgdGhpcy5f
YWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJl
YWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSwgInNob3ctYWxs
LWFuaW1hdGlvbi1mcmFtZXMtYnJlYWtwb2ludCIsICJicmVhay1vbi1hbGwtYW5pbWF0aW9uLWZy
YW1lcyIpOworICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA/Pz0gbG9h
ZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRl
cnZhbCwgInNob3ctYWxsLWludGV2ZXJhbHMtYnJlYWtwb2ludCIsICJicmVhay1vbi1hbGwtaW50
ZXJ2YWxzIik7CisgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID8/PSBs
b2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCAic2hvdy1hbGwtbGlzdGVuZXJzLWJyZWFrcG9pbnQiLCAiYnJlYWstb24tYWxsLWxp
c3RlbmVycyIpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50ID8/PSBs
b2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRp
bWVvdXQsICJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50IiwgImJyZWFrLW9uLWFsbC10aW1l
b3V0cyIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5zdXBw
b3J0c1VSTEJyZWFrcG9pbnRzKCkgfHwgRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzWEhSQnJl
YWtwb2ludHMoKSkgewpAQCAtMTYwLDE2ICsxMzAsMTYgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICBpZiAodGFyZ2V0ID09PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKSAmJiB0YXJnZXQubWFpblJl
c291cmNlKQogICAgICAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9NQnJl
YWtwb2ludHNGb3JVUkwodGFyZ2V0Lm1haW5SZXNvdXJjZS51cmwpOwogCi0gICAgICAgICAgICBp
ZiAoIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQuZGlzYWJsZWQpCisgICAgICAg
ICAgICBpZiAodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKICAgICAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVz
QnJlYWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxJbnRlcnZh
bHNCcmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgaWYgKHRoaXMuX2FsbEludGVydmFs
c0JyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50
KHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAgICAgIGlm
ICghdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQogICAgICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0YXJnZXQp
OwogCi0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludC5kaXNhYmxl
ZCkKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCiAgICAgICAg
ICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbFRpbWVvdXRzQnJl
YWtwb2ludCwgdGFyZ2V0KTsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxSZXF1ZXN0c0Jy
ZWFrcG9pbnQuZGlzYWJsZWQpCkBAIC0yNzAsMTUgKzI0MCw2IEBAIFdJLkRPTURlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIGdl
dCBsaXN0ZW5lckJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50
czsgfQogICAgIGdldCB1cmxCcmVha3BvaW50cygpIHsgcmV0dXJuIHRoaXMuX3VybEJyZWFrcG9p
bnRzOyB9CiAKLSAgICBpc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTGlzdGVuZXJz
QnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsVGltZW91
dHNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQ7Ci0gICAgfQotCiAgICAgZG9tQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9k
ZSk7CkBAIC0zMTksNyArMjgwLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJlYWtwb2lu
dCB8fCAhYnJlYWtwb2ludC51cmwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJl
YWtwb2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHticmVh
a3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MSw3ICszMDIs
NyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkp
IHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVha3Bv
aW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwg
e2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4MywxOCArMzQ0LDM4IEBA
IFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50
KSkgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3Bv
aW50Lmdsb2JhbCwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5
cGUpIHsKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFt
ZToKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50LCB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBicmVha3BvaW50
KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBicmVh
a3BvaW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5JbnRlcnZhbDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9h
bGxJbnRlcnZhbHNCcmVha3BvaW50LCB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBicmVh
a3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBicmVh
a3BvaW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5MaXN0ZW5lcjoKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TmFt
ZSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmZpbmQo
KGV4aXN0aW5nKSA9PiBleGlzdGluZy5ldmVudE5hbWUgPT09IGJyZWFrcG9pbnQuZXZlbnROYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
dGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCwgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7
CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IGJyZWFrcG9p
bnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ6CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9p
bnQsIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50
ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlw
ZS5MaXN0ZW5lciwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQuZXZlbnROYW1lLCBicmVha3BvaW50KTsKLQotICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJC
cmVha3BvaW50cy5maW5kKChleGlzdGluZykgPT4gZXhpc3RpbmcuZXZlbnROYW1lID09PSBicmVh
a3BvaW50LmV2ZW50TmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
dGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuRXZlbnRCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKQEAgLTQxNSwzOCAr
Mzk2LDQ2IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3Bv
aW50KSkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuRXZlbnRCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKLSAgICAgICAgICAg
IHJldHVybjsKKyAgICAgICAgLy8gRGlzYWJsZSB0aGUgYnJlYWtwb2ludCBmaXJzdCwgc28gcmVt
b3ZpbmcgYWN0aW9ucyBkb2Vzbid0IHJlLWFkZCB0aGUgYnJlYWtwb2ludC4KKyAgICAgICAgYnJl
YWtwb2ludC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGJyZWFrcG9pbnQuY2xlYXJBY3Rpb25z
KCk7CisKKyAgICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9u
RnJhbWVzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsOgorICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwgdGhpcy5fYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0g
bnVsbDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuTGlzdGVuZXI6CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudE5hbWUp
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9saXN0ZW5lckJyZWFrcG9p
bnRzLmluY2x1ZGVzKGJyZWFrcG9pbnQpLCBicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCkpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVy
QnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50
LCB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9h
bGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dDoK
KyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwg
dGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbFRpbWVv
dXRzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuTGlzdGVuZXIsIGJyZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50LmV2ZW50TmFtZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSwgYnJlYWtw
b2ludCk7Ci0gICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhi
cmVha3BvaW50KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9saXN0ZW5l
ckJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50KTsKLQogICAgICAgICBpZiAoIXRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJl
YWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFrcG9pbnQpOwogCisgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVu
dC5FdmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwotCi0gICAgICAgIGlmIChi
cmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAo
bGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7Ci0gICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgMTIpOiBET01EZWJ1Z2dlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBleGlz
dC4KLSAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3Zl
RXZlbnRCcmVha3BvaW50IikpCi0gICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdl
bnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5ldmVu
dE5hbWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVn
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKLSAgICAgICAgICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
Lkxpc3RlbmVyKTsKLSAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1v
dmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAgICAg
ICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKICAgICB1cmxCcmVha3BvaW50Rm9yVVJMKHVybCkK
QEAgLTQ2MCw3ICs0NDksNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1
Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2lu
dFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7
CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuVVJMQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ5Myw3ICs0ODIsNyBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAg
aWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVk
ID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRP
TURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcwNCw2ICs2OTMsOCBAQCBXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgJiYgIVdJLmRlYnVnZ2Vy
TWFuYWdlci5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCiAgICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7CiAKKyAgICAgICAg
ICAgIGNvbW1hbmRBcmd1bWVudHMub3B0aW9ucyA9IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9j
b2woKTsKKwogICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQuc2V0RXZlbnRCcmVh
a3BvaW50Lmludm9rZShjb21tYW5kQXJndW1lbnRzLCBjYWxsYmFjayk7CiAgICAgICAgIH0KICAg
ICB9CkBAIC03NjAsMjYgKzc1MSw0MCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBE
T01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZm9yIChsZXQgdGFy
Z2V0IG9mIFdJLnRhcmdldHMpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsK
LSAgICAgICAgY2FzZSB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAgICAg
ICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZh
bHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgICAgICBXSS5vYmplY3RT
dG9yZXMuZXZlbnRCcmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7CisgICAgfQogCi0g
ICAgICAgIGNhc2UgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRo
aXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3Bv
aW50LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOworICAgIF9oYW5kbGVFdmVudEJyZWFr
cG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBi
cmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwogCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOworICAgICAgICAvLyBT
cGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUgaGFuZGxlZCBieSBgRE9NTWFu
YWdlcmAuCisgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgY2FzZSB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQ6Ci0g
ICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1
ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9
Ci0KICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAgICAg
IFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsK
KworICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRo
aXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgIH0KKwor
CisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKGV2ZW50KQorICAgIHsK
KyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gU3Bl
Y2lmaWMgZXZlbnQgbGlzdGVuZXIgYnJlYWtwb2ludHMgYXJlIGhhbmRsZWQgYnkgYERPTU1hbmFn
ZXJgLgorICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJv
cGVydHlDaGFuZ2VkKGV2ZW50KTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIudXBkYXRl
UHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfaGFuZGxlVVJM
QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFn
ZXIuanMKaW5kZXggNmYyOTc4ZDk0NGY2M2Y0ZDlkM2UxZjNhYjQxMjIxYzEzZDk2M2IxMy4uYjNk
MjZjMDZkOTQxYTJkYmU5M2RmZTEzMzBlNjhkN2ZkMDNlOGE1MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01N
YW5hZ2VyLmpzCkBAIC01MCw3ICs1MCwxMSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1bWVu
dCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tz
ID0gbnVsbDsKIAotICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5FdmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRs
ZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0ku
RXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNh
YmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0
YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5k
bGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAg
IFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
SWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxl
UHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRo
aXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsK
KyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rp
b25zQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihX
SS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURp
ZENoYW5nZSwgdGhpcyk7CiAgICAgfQpAQCAtMTI2LDYgKzEzMCwxMiBAQCBXSS5ET01NYW5hZ2Vy
ID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgJiYgSW5z
cGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJET00ucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlz
dGVuZXIiKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtw
b2ludENvbmZpZ3VyYXRpb24oKQorICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9T
IDE0KTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIGRpZCBub3QgaGF2ZSBhbiAi
b3B0aW9ucyIgcGFyYW1ldGVyIHlldC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQu
aGFzQ29tbWFuZCgiRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIiwgIm9wdGlvbnMi
KTsKKyAgICB9CisKICAgICBzdGF0aWMgc3VwcG9ydHNFZGl0aW5nVXNlckFnZW50U2hhZG93VHJl
ZXMoe2Zyb250ZW5kT25seSwgdGFyZ2V0fSA9IHt9KQogICAgIHsKICAgICAgICAgdGFyZ2V0ID0g
dGFyZ2V0IHx8IEluc3BlY3RvckJhY2tlbmQ7CkBAIC02NjcsNiArNjc3LDggQEAgV0kuRE9NTWFu
YWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAg
ICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAgICAg
ICAgfQogCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRQcm9iZXNGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworCiAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2lu
dEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KIApAQCAtNjgwLDYgKzY5MiwxMiBAQCBXSS5E
T01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAg
ICAgICAgIHRhcmdldC5ET01BZ2VudC5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihl
dmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBE
aXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1vdmluZyBhY3Rpb25zIGRvZXNuJ3Qg
cmUtYWRkIHRoZSBicmVha3BvaW50LgorICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1
ZTsKKyAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMoKTsKKworICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKwogICAg
ICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRP
TURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2lu
dH0pOwogICAgIH0KIApAQCAtNzEwLDcgKzcyOCwxMCBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3Mg
RE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKCFXSS5kZWJ1Z2dl
ck1hbmFnZXIuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQogICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCi0gICAgICAg
ICAgICB0YXJnZXQuRE9NQWdlbnQuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoZXZlbnRM
aXN0ZW5lci5ldmVudExpc3RlbmVySWQpOworICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNl
dEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLmludm9rZSh7CisgICAgICAgICAgICAgICAgZXZl
bnRMaXN0ZW5lcklkOiBldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwKKyAgICAgICAgICAg
ICAgICBvcHRpb25zOiBicmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCksCisgICAgICAgICAg
ICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzI4LDYgKzc0OSwzNCBAQCBXSS5ET01NYW5h
Z2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAg
fQogCisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAg
ICAgICAgLy8gTm9uLXNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5k
bGVkIGJ5IGBET01EZWJ1Z2dlck1hbmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZXZl
bnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYnJlYWtwb2lu
dC5kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2lu
dChicmVha3BvaW50LCB0YXJnZXQpOworICAgIH0KKworICAgIF9oYW5kbGVFdmVudEJyZWFrcG9p
bnRBY3Rpb25zQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0g
ZXZlbnQudGFyZ2V0OworCisgICAgICAgIC8vIE5vbi1zcGVjaWZpYyBldmVudCBsaXN0ZW5lciBi
cmVha3BvaW50cyBhcmUgaGFuZGxlZCBieSBgRE9NRGVidWdnZXJNYW5hZ2VyYC4KKyAgICAgICAg
aWYgKCFicmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQo
ZXZlbnQpOworCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci51cGRhdGVQcm9iZXNGb3JCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0KKwogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2Uo
ZXZlbnQpCiAgICAgewogICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxl
cnMvRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IGI0OWJlNTBhYmEzM2M1ZTli
MjhhYzY1YTdkODEyOThhOGNlOGZmNTcuLjk5OTAyOGMyZWNjYTNhNGY2OTc2NmQxZDkwNmM3OWM3
NjljOTY4MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTI5LDEy
ICsyOSwxMiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgV0kuQnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0
aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0
aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc2FibGVk
U3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFr
cG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRD
aGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsK
LSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZl
bnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0
eURpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUJyZWFr
cG9pbnRBY3Rpb25zRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVE
aWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnREaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsK
KyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVh
a3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxl
UHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFu
Z2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKKyAg
ICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxl
UHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwg
dGhpcy5faGFuZGxlQnJlYWtwb2ludEFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERp
c3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kudGltZWxpbmVNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0
YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlVGltZWxpbmVDYXB0dXJpbmdTdGF0ZUNoYW5nZWQsIHRo
aXMpOwogCkBAIC01NiwzMSArNTYsMzEgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnN0IHNwZWNpYWxCcmVh
a3BvaW50TG9jYXRpb24gPSBuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5
LCBJbmZpbml0eSk7CiAKICAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2lu
dEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWRlYnVnZ2VyLXN0YXRl
bWVudHMiLCB0cnVlKTsKLSAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2lu
dCA9IG5ldyBXSS5CcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAg
ICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNh
YmxlZDogIXRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52
YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFr
cG9pbnQucmVzb2x2ZWQgPSB0cnVlOwogCiAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2Vw
dGlvbnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0g
bmV3IFdJLkJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0
aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRo
aXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAg
IH0pOwogICAgICAgICB0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRy
dWU7CiAKICAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludEVuYWJsZWRT
ZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbnMiLCBm
YWxzZSk7Ci0gICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcg
V0kuQnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMu
X3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0
aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAg
ICAgICAgIH0pOwogICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LnJl
c29sdmVkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hc3NlcnRpb24tZmFp
bHVyZXMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2lu
dCA9IG5ldyBXSS5CcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAg
ICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRC
cmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2Fi
bGVkOiAhdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFs
dWUsCiAgICAgICAgIH0pOwogICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9p
bnQucmVzb2x2ZWQgPSB0cnVlOwogCiAgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3Bv
aW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLW1pY3JvdGFz
a3MiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0gbmV3
IFdJLkJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlz
Ll9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChz
cGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMu
X2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0p
OwogICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7
CkBAIC0xMjYsMTQgKzEyNiwxNCBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dl
ck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGxldCBleGlzdGluZ1Nlcmlh
bGl6ZWRCcmVha3BvaW50cyA9IFdJLlNldHRpbmcubWlncmF0ZVZhbHVlKCJicmVha3BvaW50cyIp
OwogICAgICAgICAgICAgaWYgKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7CiAgICAg
ICAgICAgICAgICAgZm9yIChsZXQgZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludCBvZiBleGlz
dGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50cykKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgV0ku
b2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLnB1dE9iamVjdChXSS5CcmVha3BvaW50LmZyb21KU09O
KGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgYXdh
aXQgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLnB1dE9iamVjdChXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5mcm9tSlNPTihleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGxldCBzZXJpYWxpemVkQnJlYWtwb2ludHMgPSBhd2FpdCBX
SS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMuZ2V0QWxsKCk7CiAKICAgICAgICAgICAgIHRoaXMu
X3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAobGV0IHNlcmlh
bGl6ZWRCcmVha3BvaW50IG9mIHNlcmlhbGl6ZWRCcmVha3BvaW50cykgewotICAgICAgICAgICAg
ICAgIGxldCBicmVha3BvaW50ID0gV0kuQnJlYWtwb2ludC5mcm9tSlNPTihzZXJpYWxpemVkQnJl
YWtwb2ludCk7CisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5mcm9tSlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CiAKICAgICAgICAgICAg
ICAgICBjb25zdCBrZXkgPSBudWxsOwogICAgICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5i
cmVha3BvaW50cy5hc3NvY2lhdGVPYmplY3QoYnJlYWtwb2ludCwga2V5LCBzZXJpYWxpemVkQnJl
YWtwb2ludCk7CkBAIC0zNDIsMjUgKzM0Miw2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gbnVsbDsK
ICAgICB9CiAKLSAgICBpc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiBicmVha3BvaW50ICE9PSB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVh
a3BvaW50Ci0gICAgICAgICAgICAmJiBicmVha3BvaW50ICE9PSB0aGlzLl9hbGxFeGNlcHRpb25z
QnJlYWtwb2ludAotICAgICAgICAgICAgJiYgYnJlYWtwb2ludCAhPT0gdGhpcy5fdW5jYXVnaHRF
eGNlcHRpb25zQnJlYWtwb2ludDsKLSAgICB9Ci0KLSAgICBpc0JyZWFrcG9pbnRTcGVjaWFsKGJy
ZWFrcG9pbnQpCi0gICAgewotICAgICAgICByZXR1cm4gIXRoaXMuaXNCcmVha3BvaW50UmVtb3Zh
YmxlKGJyZWFrcG9pbnQpCi0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hc3Nl
cnRpb25GYWlsdXJlc0JyZWFrcG9pbnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRo
aXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50OwotICAgIH0KLQotICAgIGlzQnJlYWtwb2ludEVk
aXRhYmxlKGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICByZXR1cm4gIXRoaXMuaXNCcmVha3Bv
aW50U3BlY2lhbChicmVha3BvaW50KTsKLSAgICB9Ci0KICAgICBnZXQgYnJlYWtwb2ludHNFbmFi
bGVkKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0
aW5nLnZhbHVlOwpAQCAtNjU5LDExICs2NDAsMTEgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBhZGRCcmVha3BvaW50
KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGlu
c3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7CiAgICAgICAgIGlmICghYnJl
YWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFr
cG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50Lmdsb2Jh
bCkgewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNjgyLDIyICs2NjMsMjIgQEAgV0kuRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBXSS5vYmplY3RT
dG9yZXMuYnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwogCi0gICAgICAgIHRoaXMu
X2FkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuYWRkUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7
YnJlYWtwb2ludH0pOwogICAgIH0KIAogICAgIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkK
ICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5C
cmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNCcmVha3Bv
aW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKTsKLSAgICAgICAgaWYgKCF0aGlzLmlzQnJlYWtwb2lu
dFJlbW92YWJsZShicmVha3BvaW50KSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dC5yZW1vdmFibGUpOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQucmVtb3ZhYmxlKQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJl
YWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAg
ICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hF
dmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50UmVtb3Zl
ZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcyMSw3ICs3MDIsNyBA
QCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAg
ICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7
CiAKLSAgICAgICAgdGhpcy5fcmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsK
KyAgICAgICAgdGhpcy5yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAg
ICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5CcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKICAgICB9CkBAIC03MzEsNiAr
NzEyLDc3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gdGhpcy5fbmV4dEJyZWFrcG9pbnRBY3Rpb25J
ZGVudGlmaWVyKys7CiAgICAgfQogCisgICAgYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3Bv
aW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJy
ZWFrcG9pbnQuaGFzKGJyZWFrcG9pbnQpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuc2V0KGJyZWFrcG9pbnQs
IG5ldyBTZXQpOworCisgICAgICAgIHRoaXMudXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVh
a3BvaW50KTsKKyAgICB9CisKKyAgICByZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9p
bnQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9rbm93blByb2JlSWRlbnRp
ZmllcnNGb3JCcmVha3BvaW50LmhhcyhicmVha3BvaW50KSk7CisKKyAgICAgICAgdGhpcy51cGRh
dGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB0aGlzLl9rbm93blBy
b2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50LmRlbGV0ZShicmVha3BvaW50KTsKKyAgICB9CisK
KyAgICB1cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCisgICAgeworICAgICAg
ICBsZXQga25vd25Qcm9iZUlkZW50aWZpZXJzID0gdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJz
Rm9yQnJlYWtwb2ludC5nZXQoYnJlYWtwb2ludCk7CisgICAgICAgIGlmICgha25vd25Qcm9iZUlk
ZW50aWZpZXJzKSB7CisgICAgICAgICAgICAvLyBTb21ldGltZXMgYWN0aW9ucyBjaGFuZ2UgYmVm
b3JlIHRoZSBhZGRlZCBicmVha3BvaW50IGlzIGZ1bGx5IGRpc3BhdGNoZWQuCisgICAgICAgICAg
ICB0aGlzLmFkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBsZXQgc2VlblByb2JlSWRlbnRpZmllcnMgPSBu
ZXcgU2V0OworCisgICAgICAgIGZvciAobGV0IHByb2JlQWN0aW9uIG9mIGJyZWFrcG9pbnQucHJv
YmVBY3Rpb25zKSB7CisgICAgICAgICAgICBsZXQgcHJvYmVJZGVudGlmaWVyID0gcHJvYmVBY3Rp
b24uaWQ7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZUlkZW50aWZpZXIsICJQcm9i
ZSBhZGRlZCB3aXRob3V0IGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXI6ICIsIGJyZWFrcG9p
bnQpOworCisgICAgICAgICAgICBzZWVuUHJvYmVJZGVudGlmaWVycy5hZGQocHJvYmVJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIGlmICgha25vd25Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlk
ZW50aWZpZXIpKSB7CisgICAgICAgICAgICAgICAgLy8gTmV3IHByb2JlOyBmaW5kIG9yIGNyZWF0
ZSByZWxldmFudCBwcm9iZSBzZXQuCisgICAgICAgICAgICAgICAga25vd25Qcm9iZUlkZW50aWZp
ZXJzLmFkZChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgICAgIGxldCBwcm9iZVNldCA9
IHRoaXMuX3Byb2JlU2V0Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgICAg
ICBsZXQgbmV3UHJvYmUgPSBuZXcgV0kuUHJvYmUocHJvYmVJZGVudGlmaWVyLCBicmVha3BvaW50
LCBwcm9iZUFjdGlvbi5kYXRhKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50
aWZpZXIuc2V0KHByb2JlSWRlbnRpZmllciwgbmV3UHJvYmUpOworICAgICAgICAgICAgICAgIHBy
b2JlU2V0LmFkZFByb2JlKG5ld1Byb2JlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVzQnlJZGVudGlm
aWVyLmdldChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocHJv
YmUsICJQcm9iZSBrbm93biBidXQgY291bGRuJ3QgYmUgZm91bmQgYnkgaWRlbnRpZmllcjogIiwg
cHJvYmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIC8vIFVwZGF0ZSBwcm9iZSBleHByZXNzaW9u
OyBpZiBpdCBkaWZmZXJlZCwgY2hhbmdlIGV2ZW50cyB3aWxsIGZpcmUuCisgICAgICAgICAgICBw
cm9iZS5leHByZXNzaW9uID0gcHJvYmVBY3Rpb24uZGF0YTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIExvb2sgZm9yIG1pc3NpbmcgcHJvYmVzIGJhc2VkIG9uIHdoYXQgd2Ugc2F3IGxhc3QuCisg
ICAgICAgIGZvciAobGV0IHByb2JlSWRlbnRpZmllciBvZiBrbm93blByb2JlSWRlbnRpZmllcnMp
IHsKKyAgICAgICAgICAgIGlmIChzZWVuUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlm
aWVyKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgLy8gVGhlIHByb2Jl
IGhhcyBnb25lIG1pc3NpbmcsIHJlbW92ZSBpdC4KKyAgICAgICAgICAgIGxldCBwcm9iZVNldCA9
IHRoaXMuX3Byb2JlU2V0Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIGxl
dCBwcm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5nZXQocHJvYmVJZGVudGlmaWVyKTsK
KyAgICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5kZWxldGUocHJvYmVJZGVudGlm
aWVyKTsKKyAgICAgICAgICAgIGtub3duUHJvYmVJZGVudGlmaWVycy5kZWxldGUocHJvYmVJZGVu
dGlmaWVyKTsKKyAgICAgICAgICAgIHByb2JlU2V0LnJlbW92ZVByb2JlKHByb2JlKTsKKworICAg
ICAgICAgICAgLy8gUmVtb3ZlIHRoZSBwcm9iZSBzZXQgaWYgaXQgaGFzIGJlY29tZSBlbXB0eS4K
KyAgICAgICAgICAgIGlmICghcHJvYmVTZXQucHJvYmVzLmxlbmd0aCkgeworICAgICAgICAgICAg
ICAgIHRoaXMuX3Byb2JlU2V0c0J5QnJlYWtwb2ludC5kZWxldGUocHJvYmVTZXQuYnJlYWtwb2lu
dCk7CisgICAgICAgICAgICAgICAgcHJvYmVTZXQud2lsbFJlbW92ZSgpOworICAgICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVu
dC5Qcm9iZVNldFJlbW92ZWQsIHtwcm9iZVNldH0pOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCiAgICAgLy8gRGVidWdnZXJPYnNlcnZlcgogCiAgICAgYnJlYWtwb2ludFJlc29s
dmVkKHRhcmdldCwgYnJlYWtwb2ludElkZW50aWZpZXIsIGxvY2F0aW9uKQpAQCAtOTk3LDYwICsx
MDQ5LDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBuZXcgV0kuU2NvcGVDaGFpbk5vZGUodHlwZSwg
W29iamVjdF0sIHBheWxvYWQubmFtZSwgcGF5bG9hZC5sb2NhdGlvbiwgcGF5bG9hZC5lbXB0eSk7
CiAgICAgfQogCi0gICAgX2RlYnVnZ2VyQnJlYWtwb2ludEFjdGlvblR5cGUodHlwZSkKLSAgICB7
Ci0gICAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rp
b24uVHlwZS5Mb2c6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5FbnVtLkRl
YnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb25UeXBlLkxvZzsKLSAgICAgICAgY2FzZSBXSS5CcmVha3Bv
aW50QWN0aW9uLlR5cGUuRXZhbHVhdGU6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFj
a2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb25UeXBlLkV2YWx1YXRlOwotICAgICAg
ICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Tb3VuZDoKLSAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuU291
bmQ7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlOgotICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0
aW9uVHlwZS5Qcm9iZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGZhbHNlKTsKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVi
dWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuTG9nOwotICAgICAgICB9Ci0gICAgfQotCi0gICAg
X2RlYnVnZ2VyQnJlYWtwb2ludE9wdGlvbnMoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGxl
dCBhY3Rpb25zID0gYnJlYWtwb2ludC5hY3Rpb25zOwotICAgICAgICBhY3Rpb25zID0gYWN0aW9u
cy5tYXAoKGFjdGlvbikgPT4gYWN0aW9uLnRvUHJvdG9jb2woKSk7Ci0gICAgICAgIGFjdGlvbnMg
PSBhY3Rpb25zLmZpbHRlcigoYWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBpZiAoYWN0aW9uLnR5
cGUgIT09IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2cpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGlmICghL1wkXHsuKj9cfS8udGVzdChhY3Rpb24uZGF0
YSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgICAgIGxldCBsZXhl
ciA9IG5ldyBXSS5CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyOwotICAgICAgICAgICAgbGV0IHRv
a2VucyA9IGxleGVyLnRva2VuaXplKGFjdGlvbi5kYXRhKTsKLSAgICAgICAgICAgIGlmICghdG9r
ZW5zKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgbGV0IHRl
bXBsYXRlTGl0ZXJhbCA9IHRva2Vucy5yZWR1Y2UoKHRleHQsIHRva2VuKSA9PiB7Ci0gICAgICAg
ICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIu
VG9rZW5UeXBlLlBsYWluVGV4dCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQgKyB0
b2tlbi5kYXRhLmVzY2FwZUNoYXJhY3RlcnMoImBcXCIpOwotICAgICAgICAgICAgICAgIGlmICh0
b2tlbi50eXBlID09PSBXSS5CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyLlRva2VuVHlwZS5FeHBy
ZXNzaW9uKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCArICIkeyIgKyB0b2tlbi5k
YXRhICsgIn0iOwotICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OwotICAgICAgICAgICAgfSwg
IiIpOwotCi0gICAgICAgICAgICBhY3Rpb24uZGF0YSA9ICJjb25zb2xlLmxvZyhgIiArIHRlbXBs
YXRlTGl0ZXJhbCArICJgKSI7Ci0gICAgICAgICAgICBhY3Rpb24udHlwZSA9IFdJLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZS5FdmFsdWF0ZTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICB9KTsKLQotICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgY29uZGl0aW9uOiBicmVha3Bv
aW50LmNvbmRpdGlvbiwKLSAgICAgICAgICAgIGlnbm9yZUNvdW50OiBicmVha3BvaW50Lmlnbm9y
ZUNvdW50LAotICAgICAgICAgICAgYXV0b0NvbnRpbnVlOiBicmVha3BvaW50LmF1dG9Db250aW51
ZSwKLSAgICAgICAgICAgIGFjdGlvbnMsCi0gICAgICAgIH07Ci0gICAgfQotCiAgICAgX3NldEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgc3BlY2lmaWNUYXJnZXQpCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydCghYnJlYWtwb2ludC5kaXNhYmxlZCk7CkBAIC0xMDg4LDEyICsxMDg2LDYgQEAg
V0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIGlmICghc3BlY2lmaWNUYXJnZXQpCiAgICAgICAgICAgICBicmVha3BvaW50
LnJlc29sdmVkID0gZmFsc2U7CiAKLSAgICAgICAgLy8gQ29udmVydCBCcmVha3BvaW50QWN0aW9u
IHR5cGVzIHRvIERlYnVnZ2VyQWdlbnQgcHJvdG9jb2wgdHlwZXMuCi0gICAgICAgIC8vIE5PVEU6
IEJyZWFrcG9pbnQub3B0aW9ucyByZXR1cm5zIG5ldyBvYmplY3RzIGVhY2ggdGltZSwgc28gaXQg
aXMgc2FmZSB0byBtb2RpZnkuCi0gICAgICAgIGxldCBvcHRpb25zID0gdGhpcy5fZGVidWdnZXJC
cmVha3BvaW50T3B0aW9ucyhicmVha3BvaW50KTsKLSAgICAgICAgZm9yIChsZXQgYWN0aW9uIG9m
IG9wdGlvbnMuYWN0aW9ucykKLSAgICAgICAgICAgIGFjdGlvbi50eXBlID0gdGhpcy5fZGVidWdn
ZXJCcmVha3BvaW50QWN0aW9uVHlwZShhY3Rpb24udHlwZSk7Ci0KICAgICAgICAgaWYgKGJyZWFr
cG9pbnQuY29udGVudElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGxldCB0YXJnZXRzID0gc3Bl
Y2lmaWNUYXJnZXQgPyBbc3BlY2lmaWNUYXJnZXRdIDogV0kudGFyZ2V0czsKICAgICAgICAgICAg
IGZvciAobGV0IHRhcmdldCBvZiB0YXJnZXRzKSB7CkBAIC0xMTAyLDE0ICsxMDk0LDE0IEBAIFdJ
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICAgICAgICAgICAgICB1cmw6IGJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXIs
CiAgICAgICAgICAgICAgICAgICAgIHVybFJlZ2V4OiB1bmRlZmluZWQsCiAgICAgICAgICAgICAg
ICAgICAgIGNvbHVtbk51bWJlcjogYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1u
TnVtYmVyLAotICAgICAgICAgICAgICAgICAgICBvcHRpb25zCisgICAgICAgICAgICAgICAgICAg
IG9wdGlvbnM6IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9jb2woKSwKICAgICAgICAgICAgICAg
ICB9LCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcywgdGFyZ2V0KSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyKSB7CiAgICAg
ICAgICAgICBsZXQgdGFyZ2V0ID0gYnJlYWtwb2ludC50YXJnZXQ7CiAgICAgICAgICAgICB0YXJn
ZXQuRGVidWdnZXJBZ2VudC5zZXRCcmVha3BvaW50Lmludm9rZSh7CiAgICAgICAgICAgICAgICAg
bG9jYXRpb246IHtzY3JpcHRJZDogYnJlYWtwb2ludC5zY3JpcHRJZGVudGlmaWVyLCBsaW5lTnVt
YmVyOiBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyLCBjb2x1bW5OdW1i
ZXI6IGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcn0sCi0gICAgICAg
ICAgICAgICAgb3B0aW9ucworICAgICAgICAgICAgICAgIG9wdGlvbnM6IGJyZWFrcG9pbnQub3B0
aW9uc1RvUHJvdG9jb2woKSwKICAgICAgICAgICAgIH0sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0
aGlzLCB0YXJnZXQpKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBXSS5yZXBvcnRJbnRl
cm5hbEVycm9yKCJVbmtub3duIHNvdXJjZSBmb3IgYnJlYWtwb2ludC4iKTsKQEAgLTEyMzMsOCAr
MTIyNSw4IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmlzQnJlYWtwb2ludEVk
aXRhYmxlKGJyZWFrcG9pbnQpKTsKLSAgICAgICAgaWYgKCF0aGlzLmlzQnJlYWtwb2ludEVkaXRh
YmxlKGJyZWFrcG9pbnQpKQorICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LmVkaXRh
YmxlKTsKKyAgICAgICAgaWYgKCFicmVha3BvaW50LmVkaXRhYmxlKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIC8vIFJlbW92ZSB0aGUgYnJlYWtwb2ludCB3aXRoIGl0cyBvbGQgaWQu
CkBAIC0xMjUwLDcgKzEyNDIsNyBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dl
ck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICB7CiAgICAgICAgIHRoaXMuX2JyZWFrcG9p
bnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlKGV2ZW50KTsKIAotICAgICAgICB0aGlzLl91cGRh
dGVQcm9iZXNGb3JCcmVha3BvaW50KGV2ZW50LnRhcmdldCk7CisgICAgICAgIHRoaXMudXBkYXRl
UHJvYmVzRm9yQnJlYWtwb2ludChldmVudC50YXJnZXQpOwogICAgIH0KIAogICAgIF9zdGFydERp
c2FibGluZ0JyZWFrcG9pbnRzVGVtcG9yYXJpbHkoKQpAQCAtMTQxMyw3NyArMTQwNSw2IEBAIFdJ
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICB0aGlzLl9pZ25vcmVCcmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdl
RXZlbnQgPSBmYWxzZTsKICAgICB9CiAKLSAgICBfYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVh
a3BvaW50KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0Zv
ckJyZWFrcG9pbnQuaGFzKGJyZWFrcG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAg
ICAgIHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuc2V0KGJyZWFrcG9p
bnQsIG5ldyBTZXQpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7Ci0gICAgfQotCi0gICAgX3JlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJl
YWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2tub3duUHJvYmVJ
ZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuaGFzKGJyZWFrcG9pbnQpKTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB0aGlzLl9r
bm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50LmRlbGV0ZShicmVha3BvaW50KTsKLSAg
ICB9Ci0KLSAgICBfdXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsK
LSAgICAgICAgbGV0IGtub3duUHJvYmVJZGVudGlmaWVycyA9IHRoaXMuX2tub3duUHJvYmVJZGVu
dGlmaWVyc0ZvckJyZWFrcG9pbnQuZ2V0KGJyZWFrcG9pbnQpOwotICAgICAgICBpZiAoIWtub3du
UHJvYmVJZGVudGlmaWVycykgewotICAgICAgICAgICAgLy8gU29tZXRpbWVzIGFjdGlvbnMgY2hh
bmdlIGJlZm9yZSB0aGUgYWRkZWQgYnJlYWtwb2ludCBpcyBmdWxseSBkaXNwYXRjaGVkLgotICAg
ICAgICAgICAgdGhpcy5fYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGxldCBzZWVuUHJvYmVJZGVudGlm
aWVycyA9IG5ldyBTZXQ7Ci0KLSAgICAgICAgZm9yIChsZXQgcHJvYmVBY3Rpb24gb2YgYnJlYWtw
b2ludC5wcm9iZUFjdGlvbnMpIHsKLSAgICAgICAgICAgIGxldCBwcm9iZUlkZW50aWZpZXIgPSBw
cm9iZUFjdGlvbi5pZDsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlSWRlbnRpZmll
ciwgIlByb2JlIGFkZGVkIHdpdGhvdXQgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllcjogIiwg
YnJlYWtwb2ludCk7Ci0KLSAgICAgICAgICAgIHNlZW5Qcm9iZUlkZW50aWZpZXJzLmFkZChwcm9i
ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMuaGFz
KHByb2JlSWRlbnRpZmllcikpIHsKLSAgICAgICAgICAgICAgICAvLyBOZXcgcHJvYmU7IGZpbmQg
b3IgY3JlYXRlIHJlbGV2YW50IHByb2JlIHNldC4KLSAgICAgICAgICAgICAgICBrbm93blByb2Jl
SWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICAgICAgbGV0IHBy
b2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAg
ICAgICAgICAgIGxldCBuZXdQcm9iZSA9IG5ldyBXSS5Qcm9iZShwcm9iZUlkZW50aWZpZXIsIGJy
ZWFrcG9pbnQsIHByb2JlQWN0aW9uLmRhdGEpOwotICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Jl
c0J5SWRlbnRpZmllci5zZXQocHJvYmVJZGVudGlmaWVyLCBuZXdQcm9iZSk7Ci0gICAgICAgICAg
ICAgICAgcHJvYmVTZXQuYWRkUHJvYmUobmV3UHJvYmUpOwotICAgICAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9iZXNC
eUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBjb25zb2xlLmFz
c2VydChwcm9iZSwgIlByb2JlIGtub3duIGJ1dCBjb3VsZG4ndCBiZSBmb3VuZCBieSBpZGVudGlm
aWVyOiAiLCBwcm9iZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgLy8gVXBkYXRlIHByb2JlIGV4
cHJlc3Npb247IGlmIGl0IGRpZmZlcmVkLCBjaGFuZ2UgZXZlbnRzIHdpbGwgZmlyZS4KLSAgICAg
ICAgICAgIHByb2JlLmV4cHJlc3Npb24gPSBwcm9iZUFjdGlvbi5kYXRhOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gTG9vayBmb3IgbWlzc2luZyBwcm9iZXMgYmFzZWQgb24gd2hhdCB3ZSBzYXcg
bGFzdC4KLSAgICAgICAgZm9yIChsZXQgcHJvYmVJZGVudGlmaWVyIG9mIGtub3duUHJvYmVJZGVu
dGlmaWVycykgewotICAgICAgICAgICAgaWYgKHNlZW5Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9i
ZUlkZW50aWZpZXIpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAvLyBU
aGUgcHJvYmUgaGFzIGdvbmUgbWlzc2luZywgcmVtb3ZlIGl0LgotICAgICAgICAgICAgbGV0IHBy
b2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAg
ICAgICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmdldChwcm9iZUlkZW50
aWZpZXIpOwotICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmRlbGV0ZShwcm9i
ZUlkZW50aWZpZXIpOwotICAgICAgICAgICAga25vd25Qcm9iZUlkZW50aWZpZXJzLmRlbGV0ZShw
cm9iZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgcHJvYmVTZXQucmVtb3ZlUHJvYmUocHJvYmUp
OwotCi0gICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHByb2JlIHNldCBpZiBpdCBoYXMgYmVjb21l
IGVtcHR5LgotICAgICAgICAgICAgaWYgKCFwcm9iZVNldC5wcm9iZXMubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fcHJvYmVTZXRzQnlCcmVha3BvaW50LmRlbGV0ZShwcm9iZVNldC5i
cmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICBwcm9iZVNldC53aWxsUmVtb3ZlKCk7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwge3Byb2JlU2V0fSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0KICAgICBfcHJvYmVTZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQp
CiAgICAgewogICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNldHNCeUJyZWFrcG9p
bnQuZ2V0KGJyZWFrcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCmlu
ZGV4IDVmNWMxODQ5MTZkY2U1ZjUyZmY1YjE1OWIxZDZlZmFmMGNhMWI3N2YuLjVmOTBhYWRiYzQ5
NGRhZjQ2NjhkYjNmNWQ5MTcwZGViNTI5OTFlYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGlu
ZU1hbmFnZXIuanMKQEAgLTk1MiwxMCArOTUyLDE0IEBAIFdJLlRpbWVsaW5lTWFuYWdlciA9IGNs
YXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGlt
ZWxpbmUuRXZlbnRUeXBlLlByb2JlU2FtcGxlOgorICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tl
bmQuRW51bS5UaW1lbGluZS5FdmVudFR5cGUuUHJvYmVTYW1wbGU6IHsKKyAgICAgICAgICAgIGxl
dCBwcm9iZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5wcm9iZUZvcklkZW50aWZpZXIocmVjb3JkUGF5
bG9hZC5kYXRhLnByb2JlSWQpOworICAgICAgICAgICAgaWYgKHByb2JlLmJyZWFrcG9pbnQgaW5z
dGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBzb3VyY2VD
b2RlTG9jYXRpb24gPSBwcm9iZS5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKKwogICAg
ICAgICAgICAgLy8gUGFzcyB0aGUgc3RhcnRUaW1lIGFzIHRoZSBlbmRUaW1lIHNpbmNlIHRoaXMg
cmVjb3JkIHR5cGUgaGFzIG5vIGR1cmF0aW9uLgotICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0
aW9uID0gV0kuZGVidWdnZXJNYW5hZ2VyLnByb2JlRm9ySWRlbnRpZmllcihyZWNvcmRQYXlsb2Fk
LmRhdGEucHJvYmVJZCkuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkKFdJLlNjcmlwdFRpbWVsaW5lUmVj
b3JkLkV2ZW50VHlwZS5Qcm9iZVNhbXBsZVJlY29yZGVkLCBzdGFydFRpbWUsIHN0YXJ0VGltZSwg
Y2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCByZWNvcmRQYXlsb2FkLmRhdGEucHJvYmVJ
ZCk7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UaW1l
bGluZS5FdmVudFR5cGUuVGltZXJJbnN0YWxsOgogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
aXNOYU4oZW5kVGltZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sCmluZGV4IDVkYjI3MTVlYmMyMjg0Yzk2YjFjYjZmOWY2MzRlNWI0Mjg3ZjZjNzQu
LjlhMTE1OGZlNjU0NmY5OWZhYmJkYjA0ZmUyOWZkYzlmYTEzODIzMTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTEyNyw2ICsxMjcsNyBA
QAogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSW5saW5lU3dhdGNoLmNz
cyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9JbnB1dFBvcG92ZXIu
Y3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lzc3VlVHJlZUVs
ZW1lbnQuY3NzIj4KKyAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0phdmFT
Y3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5jc3MiPgogICAgIDxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQYW5l
bC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5ZXJzM0RD
b250ZW50Vmlldy5jc3MiPgpAQCAtMzQ5LDYgKzM1MCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlBy
b3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQ
cm90b2NvbC9Xb3JrZXJPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0JyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
QnJlYWtwb2ludEFjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9D
b2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbnNvbGVN
ZXNzYWdlLmpzIj48L3NjcmlwdD4KQEAgLTM2OSw3ICszNzEsNiBAQAogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvQXBwbGljYXRpb25DYWNoZU1hbmlmZXN0LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0JhY2tGb3J3YXJkRW50cnkuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvQm94U2hhZG93LmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0JyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
Q1BVSW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVU
aW1lbGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVUaW1lbGlu
ZVJlY29yZC5qcyI+PC9zY3JpcHQ+CkBAIC00MTYsNiArNDE3LDcgQEAKICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlSW5kZXguanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSXNzdWVNZXNzYWdlLmpzIj48L3Njcmlw
dD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0tleWJvYXJkU2hvcnRjdXQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5ZXIuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvTGF5b3V0SW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CkBAIC03MTYs
NiArNzE4LDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5saW5lU3dhdGNoLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSW5wdXRQb3BvdmVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+Cisg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFu
ZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MYXllclRyZWVEYXRhR3Jp
ZE5vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9MYXllclRyZWVEZXRh
aWxzU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKaW5kZXggOWEyMDll
ODI4NmJiZTViNjg5NWZlYzQ5OWUwMGFmZGJiYmRkY2M4Yy4uZjQwNjg3YmNmM2NjMzMzODE2ODdj
ZDg4YWRiODg5NzVkNTQ5YjJiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMKQEAgLTI1LDEwOCArMjUsNjMg
QEAKIAogV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QK
IHsKLSAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2RlTG9jYXRpb24sIHtjb250ZW50SWRlbnRpZmll
ciwgZGlzYWJsZWQsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0gPSB7fSkK
KyAgICBjb25zdHJ1Y3Rvcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9D
b250aW51ZX0gPSB7fSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVM
b2NhdGlvbiBpbnN0YW5jZW9mIFdJLlNvdXJjZUNvZGVMb2NhdGlvbik7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFjb250ZW50SWRlbnRpZmllciB8fCB0eXBlb2YgY29udGVudElkZW50aWZpZXIg
PT09ICJzdHJpbmciKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWRpc2FibGVkIHx8IHR5cGVv
ZiBkaXNhYmxlZCA9PT0gImJvb2xlYW4iKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbmRp
dGlvbiB8fCB0eXBlb2YgY29uZGl0aW9uID09PSAic3RyaW5nIik7Ci0gICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFpZ25vcmVDb3VudCB8fCAhaXNOYU4oaWdub3JlQ291bnQpKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoIWF1dG9Db250aW51ZSB8fCB0eXBlb2YgYXV0b0NvbnRpbnVlID09PSAiYm9v
bGVhbiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2Fi
bGVkID09PSAiYm9vbGVhbiIsIGRpc2FibGVkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWNv
bmRpdGlvbiB8fCB0eXBlb2YgY29uZGl0aW9uID09PSAic3RyaW5nIiwgY29uZGl0aW9uKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIWlnbm9yZUNvdW50IHx8ICFpc05hTihpZ25vcmVDb3VudCks
IGlnbm9yZUNvdW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWF1dG9Db250aW51ZSB8fCB0
eXBlb2YgYXV0b0NvbnRpbnVlID09PSAiYm9vbGVhbiIsIGF1dG9Db250aW51ZSk7CiAKICAgICAg
ICAgc3VwZXIoKTsKIAotICAgICAgICB0aGlzLl9pZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbjsKKyAgICAgICAgLy8gVGhpcyBj
bGFzcyBzaG91bGQgbm90IGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gQ3JlYXRlIGEgY29uY3Jl
dGUgc3ViY2xhc3MgaW5zdGVhZC4KKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5jb25zdHJ1
Y3RvciAhPT0gV0kuQnJlYWtwb2ludCAmJiB0aGlzIGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7
CiAKLSAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291
cmNlQ29kZTsKLSAgICAgICAgaWYgKHNvdXJjZUNvZGUpIHsKLSAgICAgICAgICAgIHRoaXMuX2Nv
bnRlbnRJZGVudGlmaWVyID0gc291cmNlQ29kZS5jb250ZW50SWRlbnRpZmllcjsKLSAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50SWRlbnRpZmllciB8fCBjb250ZW50SWRlbnRpZmll
ciA9PT0gdGhpcy5fY29udGVudElkZW50aWZpZXIsICJUaGUgY29udGVudCBpZGVudGlmaWVyIGZy
b20gdGhlIHNvdXJjZSBjb2RlIHNob3VsZCBtYXRjaCB0aGUgZ2l2ZW4gdmFsdWUuIik7Ci0gICAg
ICAgIH0gZWxzZQotICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBjb250ZW50
SWRlbnRpZmllciB8fCBudWxsOwotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50
SWRlbnRpZmllciB8fCB0aGlzLl9pc1NwZWNpYWwoKSwgIlRoZXJlIHNob3VsZCBhbHdheXMgYmUg
YSBjb250ZW50IGlkZW50aWZpZXIgZm9yIGEgYnJlYWtwb2ludC4iKTsKLQotICAgICAgICB0aGlz
Ll9zY3JpcHRJZGVudGlmaWVyID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/IHNv
dXJjZUNvZGUuaWQgOiBudWxsOwotICAgICAgICB0aGlzLl90YXJnZXQgPSBzb3VyY2VDb2RlIGlu
c3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS50YXJnZXQgOiBudWxsOwogICAgICAgICB0
aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwogICAgICAgICB0aGlzLl9jb25kaXRp
b24gPSBjb25kaXRpb24gfHwgIiI7CiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50ID0gaWdub3Jl
Q291bnQgfHwgMDsKICAgICAgICAgdGhpcy5fYXV0b0NvbnRpbnVlID0gYXV0b0NvbnRpbnVlIHx8
IGZhbHNlOwogICAgICAgICB0aGlzLl9hY3Rpb25zID0gW107Ci0gICAgICAgIHRoaXMuX3Jlc29s
dmVkID0gZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50
TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdlZCwgdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKLSAgICAgICAgdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0
aW9uLkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlv
bkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIEltcG9ydCAv
IEV4cG9ydAogCi0gICAgc3RhdGljIGZyb21KU09OKGpzb24pCi0gICAgewotICAgICAgICBjb25z
dCBzb3VyY2VDb2RlID0gbnVsbDsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgQnJlYWtw
b2ludChuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGUsIGpzb24ubGluZU51bWJl
ciB8fCAwLCBqc29uLmNvbHVtbk51bWJlciB8fCAwKSwgewotICAgICAgICAgICAgLy8gVGhlICd1
cmwnIGZhbGxiYWNrIGlzIGZvciB0cmFuc2l0aW9uaW5nIGZyb20gb2xkZXIgZnJvbnRlbmRzIGFu
ZCBzaG91bGQgYmUgcmVtb3ZlZC4KLSAgICAgICAgICAgIGNvbnRlbnRJZGVudGlmaWVyOiBqc29u
LmNvbnRlbnRJZGVudGlmaWVyIHx8IGpzb24udXJsLAotICAgICAgICAgICAgZGlzYWJsZWQ6IGpz
b24uZGlzYWJsZWQsCi0gICAgICAgICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAotICAg
ICAgICAgICAgaWdub3JlQ291bnQ6IGpzb24uaWdub3JlQ291bnQsCi0gICAgICAgICAgICBhdXRv
Q29udGludWU6IGpzb24uYXV0b0NvbnRpbnVlLAotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWtw
b2ludC5fYWN0aW9ucyA9IGpzb24uYWN0aW9ucy5tYXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFr
cG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNPTiwgYnJlYWtwb2ludCkpOwotICAgICAgICBy
ZXR1cm4gYnJlYWtwb2ludDsKLSAgICB9Ci0KICAgICB0b0pTT04oa2V5KQogICAgIHsKLSAgICAg
ICAgLy8gVGhlIGlkLCBzY3JpcHRJZGVudGlmaWVyLCB0YXJnZXQsIGFuZCByZXNvbHZlZCBzdGF0
ZSBhcmUgdGllZCB0byB0aGUgY3VycmVudCBzZXNzaW9uLCBzbyBkb24ndCBpbmNsdWRlIHRoZW0g
Zm9yIHNlcmlhbGl6YXRpb24uCi0gICAgICAgIGxldCBqc29uID0gewotICAgICAgICAgICAgY29u
dGVudElkZW50aWZpZXI6IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyLAotICAgICAgICAgICAgbGlu
ZU51bWJlcjogdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsCi0gICAgICAgICAg
ICBjb2x1bW5OdW1iZXI6IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXIsCi0g
ICAgICAgICAgICBkaXNhYmxlZDogdGhpcy5fZGlzYWJsZWQsCi0gICAgICAgICAgICBjb25kaXRp
b246IHRoaXMuX2NvbmRpdGlvbiwKLSAgICAgICAgICAgIGlnbm9yZUNvdW50OiB0aGlzLl9pZ25v
cmVDb3VudCwKLSAgICAgICAgICAgIGFjdGlvbnM6IHRoaXMuX2FjdGlvbnMubWFwKChhY3Rpb24p
ID0+IGFjdGlvbi50b0pTT04oKSksCi0gICAgICAgICAgICBhdXRvQ29udGludWU6IHRoaXMuX2F1
dG9Db250aW51ZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0U3Rv
cmUudG9KU09OU3ltYm9sKQotICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMuYnJlYWtw
b2ludHMua2V5UGF0aF0gPSB0aGlzLl9jb250ZW50SWRlbnRpZmllciArICI6IiArIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAgbGV0IGpzb24gPSB7fTsKKyAgICAgICAgaWYgKHRo
aXMuX2Rpc2FibGVkKQorICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9IHRoaXMuX2Rpc2FibGVk
OworICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkgeworICAgICAgICAgICAgaWYgKHRoaXMuX2Nv
bmRpdGlvbikKKyAgICAgICAgICAgICAgICBqc29uLmNvbmRpdGlvbiA9IHRoaXMuX2NvbmRpdGlv
bjsKKyAgICAgICAgICAgIGlmICh0aGlzLl9pZ25vcmVDb3VudCkKKyAgICAgICAgICAgICAgICBq
c29uLmlnbm9yZUNvdW50ID0gdGhpcy5faWdub3JlQ291bnQ7CisgICAgICAgICAgICBpZiAodGhp
cy5fYWN0aW9ucy5sZW5ndGgpCisgICAgICAgICAgICAgICAganNvbi5hY3Rpb25zID0gdGhpcy5f
YWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYWN0aW9uLnRvSlNPTigpKTsKKyAgICAgICAgICAgIGlm
ICh0aGlzLl9hdXRvQ29udGludWUpCisgICAgICAgICAgICAgICAganNvbi5hdXRvQ29udGludWUg
PSB0aGlzLl9hdXRvQ29udGludWU7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGpzb247CiAg
ICAgfQogCiAgICAgLy8gUHVibGljCiAKLSAgICBnZXQgc291cmNlQ29kZUxvY2F0aW9uKCkgeyBy
ZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uOyB9Ci0gICAgZ2V0IGNvbnRlbnRJZGVudGlm
aWVyKCkgeyByZXR1cm4gdGhpcy5fY29udGVudElkZW50aWZpZXI7IH0KLSAgICBnZXQgc2NyaXB0
SWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMuX3NjcmlwdElkZW50aWZpZXI7IH0KLSAgICBnZXQg
dGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fdGFyZ2V0OyB9Ci0KLSAgICBnZXQgaWRlbnRpZmllcigp
CisgICAgZ2V0IGdsb2JhbCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWQ7CisgICAg
ICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9CiAKLSAgICBzZXQgaWRlbnRpZmllcihpZCkKKyAgICBnZXQgcmVtb3Zh
YmxlKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICAgICAgLy8g
T3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQogCi0gICAgZ2V0IHJlc29sdmVkKCkKKyAgICBnZXQgZWRpdGFibGUoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVkOwotICAgIH0KLQotICAgIHNldCByZXNvbHZl
ZChyZXNvbHZlZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCA9PT0gcmVzb2x2
ZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlc29s
dmVkIHx8IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlIHx8IHRoaXMuX2lzU3Bl
Y2lhbCgpLCAiQnJlYWtwb2ludHMgbXVzdCBoYXZlIGEgU291cmNlQ29kZSB0byBiZSByZXNvbHZl
ZC4iLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHJlc29sdmVkIHx8IGZhbHNl
OwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQu
RXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSk7CisgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkg
c3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICBnZXQgZGlzYWJsZWQoKQpAQCAtMTUxLDYgKzEwNiw5IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFz
cyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzZXQgY29uZGl0aW9uKGNvbmRp
dGlvbikKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMp
OworICAgICAgICBjb25zb2xlLmFzc2VydCh0eXBlb2YgY29uZGl0aW9uID09PSAic3RyaW5nIik7
CisKICAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbiA9PT0gY29uZGl0aW9uKQogICAgICAgICAg
ICAgcmV0dXJuOwogCkBAIC0xNjEsMTEgKzExOSwxNSBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3Mg
QnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGlnbm9yZUNvdW50KCkKICAg
ICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAg
ICAgIHJldHVybiB0aGlzLl9pZ25vcmVDb3VudDsKICAgICB9CiAKICAgICBzZXQgaWdub3JlQ291
bnQoaWdub3JlQ291bnQpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRh
YmxlLCB0aGlzKTsKKwogICAgICAgICBjb25zb2xlLmFzc2VydChpZ25vcmVDb3VudCA+PSAwLCAi
SWdub3JlIGNvdW50IGNhbm5vdCBiZSBuZWdhdGl2ZS4iKTsKICAgICAgICAgaWYgKGlnbm9yZUNv
dW50IDwgMCkKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE4MCwxMSArMTQyLDE1IEBAIFdJLkJy
ZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQg
YXV0b0NvbnRpbnVlKCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFi
bGUsIHRoaXMpOworCiAgICAgICAgIHJldHVybiB0aGlzLl9hdXRvQ29udGludWU7CiAgICAgfQog
CiAgICAgc2V0IGF1dG9Db250aW51ZShjb250KQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51
ZSA9PT0gY29udCkKICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk1LDExICsxNjEsMTUgQEAg
V0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAg
IGdldCBhY3Rpb25zKCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFi
bGUsIHRoaXMpOworCiAgICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25zOwogICAgIH0KIAogICAg
IGdldCBwcm9iZUFjdGlvbnMoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5l
ZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGZ1
bmN0aW9uKGFjdGlvbikgewogICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlID09PSBXSS5C
cmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU7CiAgICAgICAgIH0pOwpAQCAtMjA4LDI3ICsxNzgs
MzQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICBjeWNsZVRvTmV4dE1vZGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQp
IHsKLSAgICAgICAgICAgIC8vIFdoZW4gY3ljbGluZywgY2xlYXIgYXV0by1jb250aW51ZSB3aGVu
IGdvaW5nIGZyb20gZGlzYWJsZWQgdG8gZW5hYmxlZC4KLSAgICAgICAgICAgIHRoaXMuYXV0b0Nv
bnRpbnVlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkgeworICAgICAg
ICAgICAgICAgIC8vIFdoZW4gY3ljbGluZywgY2xlYXIgYXV0by1jb250aW51ZSB3aGVuIGdvaW5n
IGZyb20gZGlzYWJsZWQgdG8gZW5hYmxlZC4KKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db250
aW51ZSA9IGZhbHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLmRpc2FibGVk
ID0gZmFsc2U7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
dGhpcy5hdXRvQ29udGludWUpIHsKLSAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmVkaXRhYmxl
KSB7CisgICAgICAgICAgICBpZiAodGhpcy5hdXRvQ29udGludWUpIHsKKyAgICAgICAgICAgICAg
ICB0aGlzLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAg
ICAgICB9CiAKLSAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5sZW5ndGgpIHsKLSAgICAgICAgICAg
IHRoaXMuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
ICAgIGlmICh0aGlzLmFjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5hdXRv
Q29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0K
ICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOwogICAgIH0KIAotICAg
IGNyZWF0ZUFjdGlvbih0eXBlLCBwcmVjZWRpbmdBY3Rpb24sIGRhdGEpCisgICAgY3JlYXRlQWN0
aW9uKHR5cGUsIHtkYXRhLCBwcmVjZWRpbmdBY3Rpb259ID0ge30pCiAgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICB2YXIgbmV3QWN0
aW9uID0gbmV3IFdJLkJyZWFrcG9pbnRBY3Rpb24odGhpcywgdHlwZSwgZGF0YSB8fCBudWxsKTsK
IAogICAgICAgICBpZiAoIXByZWNlZGluZ0FjdGlvbikKQEAgLTI0OSw2ICsyMjYsOCBAQCBXSS5C
cmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgcmVj
cmVhdGVBY3Rpb24odHlwZSwgYWN0aW9uVG9SZXBsYWNlKQogICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgbGV0IGluZGV4ID0gdGhp
cy5fYWN0aW9ucy5pbmRleE9mKGFjdGlvblRvUmVwbGFjZSk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGluZGV4ICE9PSAtMSk7CiAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpCkBAIC0yNjUsNiAr
MjQ0LDggQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIHJlbW92ZUFjdGlvbihhY3Rpb24pCiAgICAgeworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9h
Y3Rpb25zLmluZGV4T2YoYWN0aW9uKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09
IC0xKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKQEAgLTI4MCw2ICsyNjEsOCBAQCBXSS5C
cmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgY2xl
YXJBY3Rpb25zKHR5cGUpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRh
YmxlLCB0aGlzKTsKKwogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICB0aGlzLl9hY3Rp
b25zID0gW107CiAgICAgICAgIGVsc2UKQEAgLTI4OCwxNyArMjcxLDY0IEBAIFdJLkJyZWFrcG9p
bnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5n
ZSk7CiAgICAgfQogCi0gICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQorICAgIHJlbW92
ZSgpCiAgICAgewotICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtY29udGVudC1pZGVudGlmaWVy
Il0gPSB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsKLSAgICAgICAgY29va2llWyJicmVha3BvaW50
LWxpbmUtbnVtYmVyIl0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlcjsKLSAg
ICAgICAgY29va2llWyJicmVha3BvaW50LWNvbHVtbi1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVt
b3ZhYmxlLCB0aGlzKTsKKworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgaWYg
bmVlZGVkLgorICAgIH0KKworICAgIG9wdGlvbnNUb1Byb3RvY29sKCkKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCisgICAgICAgIGxldCBwYXls
b2FkID0ge307CisKKyAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbikKKyAgICAgICAgICAgIHBh
eWxvYWQuY29uZGl0aW9uID0gdGhpcy5fY29uZGl0aW9uOworCisgICAgICAgIGlmICh0aGlzLl9h
Y3Rpb25zLmxlbmd0aCkgeworICAgICAgICAgICAgcGF5bG9hZC5hY3Rpb25zID0gdGhpcy5fYWN0
aW9ucy5tYXAoKGFjdGlvbikgPT4gYWN0aW9uLnRvUHJvdG9jb2woKSkuZmlsdGVyKChhY3Rpb24p
ID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgIT09IFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5Mb2cpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAg
ICAgICAgICAgICAgaWYgKCEvXCRcey4qP1x9Ly50ZXN0KGFjdGlvbi5kYXRhKSkKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBsZXQgbGV4ZXIgPSBu
ZXcgV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlcjsKKyAgICAgICAgICAgICAgICBsZXQgdG9r
ZW5zID0gbGV4ZXIudG9rZW5pemUoYWN0aW9uLmRhdGEpOworICAgICAgICAgICAgICAgIGlmICgh
dG9rZW5zKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAg
ICAgICBsZXQgdGVtcGxhdGVMaXRlcmFsID0gdG9rZW5zLnJlZHVjZSgodGV4dCwgdG9rZW4pID0+
IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRM
b2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBlLlBsYWluVGV4dCkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHJldHVybiB0ZXh0ICsgdG9rZW4uZGF0YS5lc2NhcGVDaGFyYWN0ZXJzKCJgXFwiKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNz
YWdlTGV4ZXIuVG9rZW5UeXBlLkV4cHJlc3Npb24pCisgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdGV4dCArICIkeyIgKyB0b2tlbi5kYXRhICsgIn0iOworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdGV4dDsKKyAgICAgICAgICAgICAgICB9LCAiIik7CisKKyAgICAgICAgICAgICAg
ICBhY3Rpb24uZGF0YSA9ICJjb25zb2xlLmxvZyhgIiArIHRlbXBsYXRlTGl0ZXJhbCArICJgKSI7
CisgICAgICAgICAgICAgICAgYWN0aW9uLnR5cGUgPSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUu
RXZhbHVhdGU7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorCisgICAgICAgIGlmICh0aGlzLl9hdXRvQ29udGludWUpCisgICAgICAgICAg
ICBwYXlsb2FkLmF1dG9Db250aW51ZSA9IHRoaXMuX2F1dG9Db250aW51ZTsKKworICAgICAgICBp
ZiAodGhpcy5faWdub3JlQ291bnQpCisgICAgICAgICAgICBwYXlsb2FkLmlnbm9yZUNvdW50ID0g
dGhpcy5faWdub3JlQ291bnQ7CisKKyAgICAgICAgcmV0dXJuICFpc0VtcHR5T2JqZWN0KHBheWxv
YWQpID8gcGF5bG9hZCA6IHVuZGVmaW5lZDsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKENh
bGxlZCBieSBCcmVha3BvaW50QWN0aW9uKQogCiAgICAgYnJlYWtwb2ludEFjdGlvbkRpZENoYW5n
ZShhY3Rpb24pCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0
aGlzKTsKKwogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0aW9u
KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAgaWYgKGlu
ZGV4ID09PSAtMSkKQEAgLTMwNiwzNCArMzM2LDE0IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBC
cmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9
Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfaXNTcGVjaWFsKCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uaXNFcXVhbChuZXcgV0kuU291cmNlQ29kZUxv
Y2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0eSkpOwotICAgIH0KLQotICAgIF9zb3VyY2VD
b2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hh
bmdlLCBldmVudC5kYXRhKTsKLSAgICB9Ci0KLSAgICBfc291cmNlQ29kZUxvY2F0aW9uRGlzcGxh
eUxvY2F0aW9uQ2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdl
LCBldmVudC5kYXRhKTsKLSAgICB9CiB9OwogCiBXSS5CcmVha3BvaW50LlR5cGVJZGVudGlmaWVy
ID0gImJyZWFrcG9pbnQiOwogCiBXSS5CcmVha3BvaW50LkV2ZW50ID0gewogICAgIERpc2FibGVk
U3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWRpZC1jaGFuZ2UiLAot
ICAgIFJlc29sdmVkU3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LXJlc29sdmVkLXN0YXRlLWRp
ZC1jaGFuZ2UiLAogICAgIENvbmRpdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtY29uZGl0aW9u
LWRpZC1jaGFuZ2UiLAogICAgIElnbm9yZUNvdW50RGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1pZ25v
cmUtY291bnQtZGlkLWNoYW5nZSIsCiAgICAgQWN0aW9uc0RpZENoYW5nZTogImJyZWFrcG9pbnQt
YWN0aW9ucy1kaWQtY2hhbmdlIiwKICAgICBBdXRvQ29udGludWVEaWRDaGFuZ2U6ICJicmVha3Bv
aW50LWF1dG8tY29udGludWUtZGlkLWNoYW5nZSIsCi0gICAgTG9jYXRpb25EaWRDaGFuZ2U6ICJi
cmVha3BvaW50LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAotICAgIERpc3BsYXlMb2NhdGlvbkRpZENo
YW5nZTogImJyZWFrcG9pbnQtZGlzcGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtw
b2ludEFjdGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9CcmVha3BvaW50QWN0aW9uLmpzCmluZGV4IGQ4YmU3ZjVkMmU4YmQ4NmI1M2JiYzU5YjI4ZmEx
ZjdiZjAzMjA2ZGYuLjM0ZmIwYTNkOGFhZWZlNDRlNTEzMjY3OTBmZDY2MjRhMTIyNjVmMjkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVh
a3BvaW50QWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCkBAIC0yNyw4ICsyNyw5IEBAIFdJLkJyZWFrcG9p
bnRBY3Rpb24gPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uCiB7CiAgICAgY29uc3RydWN0b3IoYnJl
YWtwb2ludCwgdHlwZSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFr
cG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
T2JqZWN0LnZhbHVlcyhXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUpLmluY2x1ZGVzKHR5cGUpKTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9p
bnQsIGJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJ
LkJyZWFrcG9pbnRBY3Rpb24uVHlwZSkuaW5jbHVkZXModHlwZSksIHR5cGUpOworICAgICAgICBj
b25zb2xlLmFzc2VydCghZGF0YSB8fCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIsIGRhdGEpOwog
CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50OwogICAgICAgICB0aGlzLl90
eXBlID0gdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKaW5kZXggNzk5NDU5YjdiNjQxZmM2ZmRi
YTA3NWZiMjg3OTNmOTdkODA3N2Y2ZS4uMDUzN2QzNmJiYjdkMGVlZTFhZmZhMGIzNmRhNGEyZjE1
Y2NjNDU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKQEAgLTIzLDE0ICsyMywxNCBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLkRPTUJyZWFrcG9pbnQg
PSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CitXSS5ET01CcmVha3BvaW50
ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKICAgICBjb25z
dHJ1Y3Rvcihkb21Ob2RlT3JJbmZvLCB0eXBlLCB7ZGlzYWJsZWR9ID0ge30pCiAgICAgewogICAg
ICAgICBjb25zb2xlLmFzc2VydChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSB8
fCB0eXBlb2YgZG9tTm9kZU9ySW5mbyA9PT0gIm9iamVjdCIsIGRvbU5vZGVPckluZm8pOwogICAg
ICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkRPTUJyZWFrcG9pbnQuVHlwZSku
aW5jbHVkZXModHlwZSksIHR5cGUpOwogCi0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVy
KHtkaXNhYmxlZH0pOwogCiAgICAgICAgIGlmIChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0ku
RE9NTm9kZSkgewogICAgICAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBkb21Ob2Rl
T3JJbmZvLmlkOwpAQCAtNDQsMTUgKzQ0LDE0IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBE
T01CcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlz
Ll90eXBlID0gdHlwZTsKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxz
ZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJp
YWxpemVkSW5mbykKKyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAgICAgIHJl
dHVybiBuZXcgV0kuRE9NQnJlYWtwb2ludChzZXJpYWxpemVkSW5mbywgc2VyaWFsaXplZEluZm8u
dHlwZSwgewotICAgICAgICAgICAgZGlzYWJsZWQ6ICEhc2VyaWFsaXplZEluZm8uZGlzYWJsZWQs
CisgICAgICAgIHJldHVybiBuZXcgV0kuRE9NQnJlYWtwb2ludChqc29uLCBqc29uLnR5cGUsIHsK
KyAgICAgICAgICAgIGRpc2FibGVkOiBqc29uLmRpc2FibGVkLAogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTYyLDIxICs2MSw2IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3Bv
aW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsg
fQogICAgIGdldCBwYXRoKCkgeyByZXR1cm4gdGhpcy5fcGF0aDsgfQogCi0gICAgZ2V0IGRpc2Fi
bGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKLSAgICB9Ci0KLSAg
ICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJs
ZWQgPT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2Rp
c2FibGVkID0gZGlzYWJsZWQ7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCk7Ci0gICAgfQot
CiAgICAgZ2V0IGRvbU5vZGVJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlz
Ll9kb21Ob2RlSWRlbnRpZmllcjsKQEAgLTk2LDYgKzgwLDEzIEBAIFdJLkRPTUJyZWFrcG9pbnQg
PSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNoYW5n
ZWQsIGRhdGEpOwogICAgIH0KIAorICAgIHJlbW92ZSgpCisgICAgeworICAgICAgICBzdXBlci5y
ZW1vdmUoKTsKKworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtw
b2ludCh0aGlzKTsKKyAgICB9CisKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAg
ICAgewogICAgICAgICBjb29raWVbImRvbS1icmVha3BvaW50LXVybCJdID0gdGhpcy5fdXJsOwpA
QCAtMTA1LDEzICs5NiwxMCBAQCBXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2lu
dCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIGxl
dCBqc29uID0gewotICAgICAgICAgICAgdXJsOiB0aGlzLl91cmwsCi0gICAgICAgICAgICBwYXRo
OiB0aGlzLl9wYXRoLAotICAgICAgICAgICAgdHlwZTogdGhpcy5fdHlwZSwKLSAgICAgICAgfTsK
LSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9
IHRydWU7CisgICAgICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpz
b24udXJsID0gdGhpcy5fdXJsOworICAgICAgICBqc29uLnBhdGggPSB0aGlzLl9wYXRoOworICAg
ICAgICBqc29uLnR5cGUgPSB0aGlzLl90eXBlOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmpl
Y3RTdG9yZS50b0pTT05TeW1ib2wpCiAgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5k
b21CcmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX3VybCArICI6IiArIHRoaXMuX3BhdGggKyAi
OiIgKyB0aGlzLl90eXBlOwogICAgICAgICByZXR1cm4ganNvbjsKQEAgLTEyNiw1ICsxMTQsNCBA
QCBXSS5ET01CcmVha3BvaW50LlR5cGUgPSB7CiAKIFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQgPSB7
CiAgICAgRE9NTm9kZUNoYW5nZWQ6ICJkb20tYnJlYWtwb2ludC1kb20tbm9kZS1jaGFuZ2VkIiwK
LSAgICBEaXNhYmxlZFN0YXRlQ2hhbmdlZDogImRvbS1icmVha3BvaW50LWRpc2FibGVkLXN0YXRl
LWNoYW5nZWQiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9FdmVudEJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzCmluZGV4IGZmMWU3OWNmZTRk
YmE1ZDZjNDQyOGFiNDdmY2FiNDkzNWZlYjAyYWUuLmNiNWYxYmVkODZjODYxYjgyNjI1ZmE2YmRh
YzQ3ODZmODVkOWFkOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9FdmVudEJyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qcwpAQCAtMjMsMjggKzIz
LDQ3IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuRXZl
bnRCcmVha3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CitX
SS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVh
a3BvaW50CiB7Ci0gICAgY29uc3RydWN0b3IodHlwZSwge2V2ZW50TmFtZSwgZXZlbnRMaXN0ZW5l
ciwgZGlzYWJsZWR9ID0ge30pCisgICAgY29uc3RydWN0b3IodHlwZSwge2V2ZW50TmFtZSwgZXZl
bnRMaXN0ZW5lciwgZGlzYWJsZWQsIGFjdGlvbnMsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1
dG9Db250aW51ZX0gPSB7fSkKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIC8vIENP
TVBBVElCSUxJVFkgKGlPUyAxMyk6IERPTURlYnVnZ2VyLkV2ZW50QnJlYWtwb2ludFR5cGVzLlRp
bWVyIHdhcyByZW1vdmVkLgorICAgICAgICBpZiAodHlwZSA9PT0gInRpbWVyIikgeworICAgICAg
ICAgICAgc3dpdGNoIChldmVudE5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgInNldEludGVydmFs
IjoKKyAgICAgICAgICAgICAgICB0eXBlID0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2
YWw7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgInNldFRpbWVv
dXQiOgorICAgICAgICAgICAgICAgIHR5cGUgPSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1l
b3V0OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZSkuaW5jbHVkZXModHlwZSksIHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZXZl
bnROYW1lIHx8IHR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLCBldmVudE5hbWUpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCghZXZlbnRMaXN0ZW5lciB8fCB0eXBlID09PSBXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZSwgZXZlbnRMaXN0ZW5lcik7CisKKyAgICAgICAgc3VwZXIoe2Rpc2Fi
bGVkLCBjb25kaXRpb24sIGFjdGlvbnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9KTsKIAog
ICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICAgICAgdGhpcy5fZXZlbnROYW1lID0gZXZl
bnROYW1lIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXIgPSBldmVudExpc3Rl
bmVyIHx8IG51bGw7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7
CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgZGVzZXJpYWxpemUoc2VyaWFs
aXplZEluZm8pCisgICAgc3RhdGljIGZyb21KU09OKGpzb24pCiAgICAgewotICAgICAgICByZXR1
cm4gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChzZXJpYWxpemVkSW5mby50eXBlLCB7Ci0gICAgICAg
ICAgICBldmVudE5hbWU6IHNlcmlhbGl6ZWRJbmZvLmV2ZW50TmFtZSwKLSAgICAgICAgICAgIGRp
c2FibGVkOiAhIXNlcmlhbGl6ZWRJbmZvLmRpc2FibGVkLAorICAgICAgICBsZXQgYnJlYWtwb2lu
dCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoanNvbi50eXBlLCB7CisgICAgICAgICAgICBldmVu
dE5hbWU6IGpzb24uZXZlbnROYW1lLAorICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJs
ZWQsCisgICAgICAgICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAorICAgICAgICAgICAg
aWdub3JlQ291bnQ6IGpzb24uaWdub3JlQ291bnQsCisgICAgICAgICAgICBhdXRvQ29udGludWU6
IGpzb24uYXV0b0NvbnRpbnVlLAogICAgICAgICB9KTsKKyAgICAgICAgYnJlYWtwb2ludC5fYWN0
aW9ucyA9IGpzb24uYWN0aW9ucz8ubWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3BvaW50QWN0
aW9uLmZyb21KU09OKGFjdGlvbkpTT04sIGJyZWFrcG9pbnQpKSB8fCBbXTsKKyAgICAgICAgcmV0
dXJuIGJyZWFrcG9pbnQ7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC01MywxOSArNzIsMzQg
QEAgV0kuRXZlbnRCcmVha3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgZ2V0IGV2ZW50TmFtZSgpIHsgcmV0dXJuIHRoaXMuX2V2ZW50TmFtZTsgfQog
ICAgIGdldCBldmVudExpc3RlbmVyKCkgeyByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5lcjsgfQog
Ci0gICAgZ2V0IGRpc2FibGVkKCkKKyAgICBnZXQgZ2xvYmFsKCkKICAgICB7Ci0gICAgICAgIHJl
dHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICAgICAgc3dpdGNoICh0aGlzKSB7CisgICAgICAgIGNh
c2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ6Cisg
ICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQ6
CisgICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9p
bnQ6CisgICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtw
b2ludDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKKyAgICBnZXQg
ZWRpdGFibGUoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkID09PSBkaXNhYmxl
ZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0
KTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIGRpZCBub3QgaGF2ZSBhbiAib3B0
aW9ucyIgcGFyYW1ldGVyIHlldC4KKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0KTog
RE9NRGVidWdnZXIuc2V0RXZlbnRCcmVha3BvaW50IGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIg
cGFyYW1ldGVyIHlldC4KKyAgICAgICAgcmV0dXJuIHRoaXMuX2V2ZW50TGlzdGVuZXIgPyBJbnNw
ZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
ciIsICJvcHRpb25zIikgOiBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRPTURlYnVnZ2Vy
LnNldEV2ZW50QnJlYWtwb2ludCIsICJvcHRpb25zIik7CisgICAgfQogCi0gICAgICAgIHRoaXMu
X2Rpc2FibGVkID0gZGlzYWJsZWQ7CisgICAgcmVtb3ZlKCkKKyAgICB7CisgICAgICAgIHN1cGVy
LnJlbW92ZSgpOwogCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkV2
ZW50QnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCk7CisgICAgICAgIGlmICh0
aGlzLl9ldmVudExpc3RlbmVyKQorICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5yZW1vdmVCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lcih0aGlzLl9ldmVudExpc3RlbmVyKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2lu
dCh0aGlzKTsKICAgICB9CiAKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCkBAIC03
NSwxOSArMTA5LDE0IEBAIFdJLkV2ZW50QnJlYWtwb2ludCA9IGNsYXNzIEV2ZW50QnJlYWtwb2lu
dCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgY29va2llWyJldmVudC1icmVha3BvaW50
LWV2ZW50LW5hbWUiXSA9IHRoaXMuX2V2ZW50TmFtZTsKICAgICAgICAgaWYgKHRoaXMuX2V2ZW50
TGlzdGVuZXIpCiAgICAgICAgICAgICBjb29raWVbImV2ZW50LWJyZWFrcG9pbnQtZXZlbnQtbGlz
dGVuZXIiXSA9IHRoaXMuX2V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkOwotICAgICAgICBp
ZiAodGhpcy5fZGlzYWJsZWQpCi0gICAgICAgICAgICBjb29raWVbImV2ZW50LWJyZWFrcG9pbnQt
ZGlzYWJsZWQiXSA9IHRoaXMuX2Rpc2FibGVkOwogICAgIH0KIAogICAgIHRvSlNPTihrZXkpCiAg
ICAgewotICAgICAgICBsZXQganNvbiA9IHsKLSAgICAgICAgICAgIHR5cGU6IHRoaXMuX3R5cGUs
Ci0gICAgICAgIH07CisgICAgICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAg
ICAgIGpzb24udHlwZSA9IHRoaXMuX3R5cGU7CiAgICAgICAgIGlmICh0aGlzLl9ldmVudE5hbWUp
CiAgICAgICAgICAgICBqc29uLmV2ZW50TmFtZSA9IHRoaXMuX2V2ZW50TmFtZTsKLSAgICAgICAg
aWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9IHRydWU7CiAg
ICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKICAgICAgICAg
ICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlz
Ll90eXBlICsgKHRoaXMuX2V2ZW50TmFtZSA/ICI6IiArIHRoaXMuX2V2ZW50TmFtZSA6ICIiKTsK
ICAgICAgICAgcmV0dXJuIGpzb247CkBAIC05OSwxMSArMTI4LDQgQEAgV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUgPSB7CiAgICAgSW50ZXJ2YWw6ICJpbnRlcnZhbCIsCiAgICAgTGlzdGVuZXI6ICJs
aXN0ZW5lciIsCiAgICAgVGltZW91dDogInRpbWVvdXQiLAotCi0gICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDEzKTogRE9NRGVidWdnZXIuRXZlbnRCcmVha3BvaW50VHlwZXMuVGltZXIgd2FzIHJl
bW92ZWQuCi0gICAgVGltZXI6ICJ0aW1lciIsCi19OwotCi1XSS5FdmVudEJyZWFrcG9pbnQuRXZl
bnQgPSB7Ci0gICAgRGlzYWJsZWRTdGF0ZUNoYW5nZWQ6ICJldmVudC1icmVha3BvaW50LWRpc2Fi
bGVkLXN0YXRlLWNoYW5nZWQiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMWYxMTk3ODk1NmY1M2Y5ZDM2YTY3ZWIzNjYyYjEzNGE1YzRlMDU5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzCkBAIC0wLDAgKzEsMTk1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtw
b2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKK3sKKyAgICBjb25zdHJ1Y3Rvcihzb3VyY2VDb2Rl
TG9jYXRpb24sIHtjb250ZW50SWRlbnRpZmllciwgZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9u
cywgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0gPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbiBpbnN0YW5jZW9mIFdJLlNvdXJjZUNvZGVMb2Nh
dGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50SWRlbnRpZmllciB8fCB0eXBl
b2YgY29udGVudElkZW50aWZpZXIgPT09ICJzdHJpbmciKTsKKworICAgICAgICBzdXBlcih7ZGlz
YWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0pOwor
CisgICAgICAgIHRoaXMuX2lkID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOworCisgICAgICAgIGxldCBzb3VyY2VDb2RlID0gdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGU7CisgICAgICAgIGlmIChzb3VyY2VDb2Rl
KSB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50SWRlbnRpZmllciA9IHNvdXJjZUNvZGUuY29u
dGVudElkZW50aWZpZXI7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghY29udGVudElkZW50
aWZpZXIgfHwgY29udGVudElkZW50aWZpZXIgPT09IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyLCAi
VGhlIGNvbnRlbnQgaWRlbnRpZmllciBmcm9tIHRoZSBzb3VyY2UgY29kZSBzaG91bGQgbWF0Y2gg
dGhlIGdpdmVuIHZhbHVlLiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHRoaXMuX2Nv
bnRlbnRJZGVudGlmaWVyID0gY29udGVudElkZW50aWZpZXIgfHwgbnVsbDsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fY29udGVudElkZW50aWZpZXIgfHwgdGhpcy5faXNTcGVjaWFsKCks
ICJUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgY29udGVudCBpZGVudGlmaWVyIGZvciBhIGJyZWFr
cG9pbnQuIik7CisKKyAgICAgICAgdGhpcy5fc2NyaXB0SWRlbnRpZmllciA9IHNvdXJjZUNvZGUg
aW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VDb2RlLmlkIDogbnVsbDsKKyAgICAgICAgdGhp
cy5fdGFyZ2V0ID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/IHNvdXJjZUNvZGUu
dGFyZ2V0IDogbnVsbDsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTsKKworICAgICAg
ICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2Rl
TG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25M
b2NhdGlvbkNoYW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24u
YWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuRGlzcGxheUxvY2F0
aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdl
ZCwgdGhpcyk7CisgICAgfQorCisgICAgLy8gSW1wb3J0IC8gRXhwb3J0CisKKyAgICBzdGF0aWMg
ZnJvbUpTT04oanNvbikKKyAgICB7CisgICAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBudWxsOwor
ICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChuZXcg
V0kuU291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGUsIGpzb24ubGluZU51bWJlciB8fCAwLCBq
c29uLmNvbHVtbk51bWJlciB8fCAwKSwgeworICAgICAgICAgICAgLy8gVGhlICd1cmwnIGZhbGxi
YWNrIGlzIGZvciB0cmFuc2l0aW9uaW5nIGZyb20gb2xkZXIgZnJvbnRlbmRzIGFuZCBzaG91bGQg
YmUgcmVtb3ZlZC4KKyAgICAgICAgICAgIGNvbnRlbnRJZGVudGlmaWVyOiBqc29uLmNvbnRlbnRJ
ZGVudGlmaWVyIHx8IGpzb24udXJsLAorICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJs
ZWQsCisgICAgICAgICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAorICAgICAgICAgICAg
aWdub3JlQ291bnQ6IGpzb24uaWdub3JlQ291bnQsCisgICAgICAgICAgICBhdXRvQ29udGludWU6
IGpzb24uYXV0b0NvbnRpbnVlLAorICAgICAgICB9KTsKKyAgICAgICAgYnJlYWtwb2ludC5fYWN0
aW9ucyA9IGpzb24uYWN0aW9ucz8ubWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3BvaW50QWN0
aW9uLmZyb21KU09OKGFjdGlvbkpTT04sIGJyZWFrcG9pbnQpKSB8fCBbXTsKKyAgICAgICAgcmV0
dXJuIGJyZWFrcG9pbnQ7CisgICAgfQorCisgICAgdG9KU09OKGtleSkKKyAgICB7CisgICAgICAg
IC8vIFRoZSBpZCwgc2NyaXB0SWRlbnRpZmllciwgdGFyZ2V0LCBhbmQgcmVzb2x2ZWQgc3RhdGUg
YXJlIHRpZWQgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiwgc28gZG9uJ3QgaW5jbHVkZSB0aGVtIGZv
ciBzZXJpYWxpemF0aW9uLgorICAgICAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihrZXkpOwor
ICAgICAgICBqc29uLmNvbnRlbnRJZGVudGlmaWVyID0gdGhpcy5fY29udGVudElkZW50aWZpZXI7
CisgICAgICAgIGpzb24ubGluZU51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5l
TnVtYmVyOworICAgICAgICBqc29uLmNvbHVtbk51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRv
SlNPTlN5bWJvbCkKKyAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRz
LmtleVBhdGhdID0gdGhpcy5fY29udGVudElkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24ubGluZU51bWJlciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5j
b2x1bW5OdW1iZXI7CisgICAgICAgIHJldHVybiBqc29uOworICAgIH0KKworICAgIC8vIFB1Ymxp
YworCisgICAgZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpIHsgcmV0dXJuIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbjsgfQorICAgIGdldCBjb250ZW50SWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyOyB9CisgICAgZ2V0IHNjcmlwdElkZW50aWZpZXIoKSB7IHJldHVy
biB0aGlzLl9zY3JpcHRJZGVudGlmaWVyOyB9CisgICAgZ2V0IHRhcmdldCgpIHsgcmV0dXJuIHRo
aXMuX3RhcmdldDsgfQorCisgICAgZ2V0IGdsb2JhbCgpCisgICAgeworICAgICAgICBzd2l0Y2gg
KHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1l
bnRzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0
RXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFz
c2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBnZXQgcmVtb3Zh
YmxlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRl
YnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNl
IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2Fz
ZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGdldCBlZGl0YWJsZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMp
IHsKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJl
YWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0Jy
ZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0
aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxs
TWljcm90YXNrc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBnZXQgaWRlbnRpZmllcigp
CisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWQ7CisgICAgfQorCisgICAgc2V0IGlkZW50
aWZpZXIoaWQpCisgICAgeworICAgICAgICB0aGlzLl9pZCA9IGlkIHx8IG51bGw7CisgICAgfQor
CisgICAgZ2V0IHJlc29sdmVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9yZXNvbHZl
ZDsKKyAgICB9CisKKyAgICBzZXQgcmVzb2x2ZWQocmVzb2x2ZWQpCisgICAgeworICAgICAgICBp
ZiAodGhpcy5fcmVzb2x2ZWQgPT09IHJlc29sdmVkKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFyZXNvbHZlZCB8fCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRp
b24uc291cmNlQ29kZSB8fCB0aGlzLl9pc1NwZWNpYWwoKSwgIkJyZWFrcG9pbnRzIG11c3QgaGF2
ZSBhIFNvdXJjZUNvZGUgdG8gYmUgcmVzb2x2ZWQuIiwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5f
cmVzb2x2ZWQgPSByZXNvbHZlZCB8fCBmYWxzZTsKKworICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlKTsKKyAgICB9CisKKyAgICByZW1vdmUoKQorICAgIHsKKyAgICAgICAgc3VwZXIu
cmVtb3ZlKCk7CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQo
dGhpcyk7CisgICAgfQorCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQorICAgIHsK
KyAgICAgICAgY29va2llWyJqYXZhc2NyaXB0LWJyZWFrcG9pbnQtY29udGVudC1pZGVudGlmaWVy
Il0gPSB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAgY29va2llWyJqYXZhc2NyaXB0
LWJyZWFrcG9pbnQtbGluZS1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5l
TnVtYmVyOworICAgICAgICBjb29raWVbImphdmFzY3JpcHQtYnJlYWtwb2ludC1jb2x1bW4tbnVt
YmVyIl0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgIH0KKwor
ICAgIC8vIFByaXZhdGUKKworICAgIF9pc1NwZWNpYWwoKQorICAgIHsKKyAgICAgICAgcmV0dXJu
IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5pc0VxdWFsKG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRp
b24obnVsbCwgSW5maW5pdHksIEluZmluaXR5KSk7CisgICAgfQorCisgICAgX3NvdXJjZUNvZGVM
b2NhdGlvbkxvY2F0aW9uQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9u
RGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKKyAgICB9CisKKyAgICBfc291cmNlQ29kZUxvY2F0aW9u
RGlzcGxheUxvY2F0aW9uQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRpc3BsYXlM
b2NhdGlvbkRpZENoYW5nZSwgZXZlbnQuZGF0YSk7CisgICAgfQorfTsKKworV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiamF2YXNjcmlwdC1icmVha3BvaW50IjsKKwor
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQgPSB7CisgICAgUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZTogImphdmFzY3JpcHQtYnJlYWtwb2ludC1yZXNvbHZlZC1zdGF0ZS1kaWQtY2hhbmdlIiwK
KyAgICBMb2NhdGlvbkRpZENoYW5nZTogImphdmFzY3JpcHQtYnJlYWtwb2ludC1sb2NhdGlvbi1k
aWQtY2hhbmdlIiwKKyAgICBEaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2U6ICJqYXZhc2NyaXB0LWJy
ZWFrcG9pbnQtZGlzcGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKK307CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKaW5k
ZXggYTUxM2NlMzE4YTZmYjM5MmI1NDIyNzllZjVlZTQ5OTg5MWZlN2YzOC4uOWI2MjdlNTk4ODk5
OGIyY2MzMDBhZmU2ZjI2NGY5NGYwZmJlNTFkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcwpAQCAtNDIsNyArNDIs
NyBAQCBXSS5Qcm9iZVNldCA9IGNsYXNzIFByb2JlU2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICBX
SS5Qcm9iZS5hZGRFdmVudExpc3RlbmVyKFdJLlByb2JlLkV2ZW50LlNhbXBsZUFkZGVkLCB0aGlz
Ll9zYW1wbGVDb2xsZWN0ZWQsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
Ll9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVk
U3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFB1YmxpYwpAQCAtNjgsNyAr
NjgsNyBAQCBXSS5Qcm9iZVNldCA9IGNsYXNzIFByb2JlU2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICBjcmVhdGVQcm9iZShleHByZXNzaW9uKQogICAgIHsKLSAgICAgICAgdGhpcy5icmVha3Bv
aW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGwsIGV4
cHJlc3Npb24pOworICAgICAgICB0aGlzLmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFr
cG9pbnRBY3Rpb24uVHlwZS5Qcm9iZSwge2RhdGE6IGV4cHJlc3Npb259KTsKICAgICB9CiAKICAg
ICBhZGRQcm9iZShwcm9iZSkKQEAgLTEwMSw3ICsxMDEsNyBAQCBXSS5Qcm9iZVNldCA9IGNsYXNz
IFByb2JlU2V0IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgV0kuRnJhbWUucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21h
aW5SZXNvdXJjZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICBXSS5Qcm9iZS5yZW1vdmVFdmVudExp
c3RlbmVyKFdJLlByb2JlLkV2ZW50LlNhbXBsZUFkZGVkLCB0aGlzLl9zYW1wbGVDb2xsZWN0ZWQs
IHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuQnJl
YWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVz
b2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVz
b2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMK
aW5kZXggNDdlZWY2NGUzZGNkZjE2NzQyOTg5NjEyY2E1ZjhkN2ZiZDg1NjliMy4uZjViYzk1ZWQy
YTgwZDI3NGJiZWIyMmY1NGI4OGUzNDgyYzY4ZTYwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQuanMK
QEAgLTIzLDI2ICsyMywyNSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLVdJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0ku
T2JqZWN0CitXSS5VUkxCcmVha3BvaW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludCBleHRlbmRzIFdJ
LkJyZWFrcG9pbnQKIHsKICAgICBjb25zdHJ1Y3Rvcih0eXBlLCB1cmwsIHtkaXNhYmxlZH0gPSB7
fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuVVJMQnJl
YWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHR5cGVvZiB1cmwgPT09ICJzdHJpbmciLCB1cmwpOwogCi0gICAgICAgIHN1cGVyKCk7Cisg
ICAgICAgIHN1cGVyKHtkaXNhYmxlZH0pOwogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwog
ICAgICAgICB0aGlzLl91cmwgPSB1cmw7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJs
ZWQgfHwgZmFsc2U7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgZGVzZXJp
YWxpemUoc2VyaWFsaXplZEluZm8pCisgICAgc3RhdGljIGZyb21KU09OKGpzb24pCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IFdJLlVSTEJyZWFrcG9pbnQoc2VyaWFsaXplZEluZm8udHlwZSwg
c2VyaWFsaXplZEluZm8udXJsLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogISFzZXJpYWxpemVk
SW5mby5kaXNhYmxlZCwKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5VUkxCcmVha3BvaW50KGpzb24u
dHlwZSwganNvbi51cmwsIHsKKyAgICAgICAgICAgIGRpc2FibGVkOiBqc29uLmRpc2FibGVkLAog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTUxLDE5ICs1MCwxNiBAQCBXSS5VUkxCcmVha3BvaW50
ID0gY2xhc3MgVVJMQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCB0eXBlKCkg
eyByZXR1cm4gdGhpcy5fdHlwZTsgfQogICAgIGdldCB1cmwoKSB7IHJldHVybiB0aGlzLl91cmw7
IH0KIAotICAgIGdldCBkaXNhYmxlZCgpCisgICAgZ2V0IGdsb2JhbCgpCiAgICAgewotICAgICAg
ICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAgIHJldHVybiB0aGlzID09PSBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3BvaW50OwogICAgIH0KIAotICAgIHNldCBk
aXNhYmxlZChkaXNhYmxlZCkKKyAgICByZW1vdmUoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X2Rpc2FibGVkID09PSBkaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgc3Vw
ZXIucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKLQotICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5VUkxCcmVha3BvaW50LkV2ZW50
LkRpc2FibGVkU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJl
bW92ZVVSTEJyZWFrcG9pbnQodGhpcyk7CiAgICAgfQogCiAgICAgc2F2ZUlkZW50aXR5VG9Db29r
aWUoY29va2llKQpAQCAtNzQsMjIgKzcwLDE1IEBAIFdJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBV
UkxCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICB0b0pTT04oa2V5KQogICAgIHsK
LSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLl90eXBlLAotICAg
ICAgICAgICAgdXJsOiB0aGlzLl91cmwsCi0gICAgICAgIH07Ci0gICAgICAgIGlmICh0aGlzLl9k
aXNhYmxlZCkKLSAgICAgICAgICAgIGpzb24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBsZXQg
anNvbiA9IHN1cGVyLnRvSlNPTihrZXkpOworICAgICAgICBqc29uLnR5cGUgPSB0aGlzLl90eXBl
OworICAgICAgICBqc29uLnVybCA9IHRoaXMuX3VybDsKICAgICAgICAgaWYgKGtleSA9PT0gV0ku
T2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQogICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9y
ZXMudXJsQnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl90eXBlICsgIjoiICsgdGhpcy5fdXJs
OwogICAgICAgICByZXR1cm4ganNvbjsKICAgICB9CiB9OwogCi1XSS5VUkxCcmVha3BvaW50LkV2
ZW50ID0gewotICAgIERpc2FibGVkU3RhdGVDaGFuZ2VkOiAidXJsLWJyZWFrcG9pbnQtZGlzYWJs
ZWQtc3RhdGUtY2hhbmdlZCIsCi19OwotCiBXSS5VUkxCcmVha3BvaW50LlR5cGUgPSB7CiAgICAg
VGV4dDogInRleHQiLAogICAgIFJlZ3VsYXJFeHByZXNzaW9uOiAicmVnZXgiLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDFmYTljOWU0Yjg1
ZGEwZjE5OTcwNmQ2MDVkMDk2MDIzMjVmMGJiNGQuLmVlZGE4ZWIxMzUyYjc3MjBmNzEyMWM2NTA1
OGQzODZmYmUyN2RkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2Nv
bC9UaW1lbGluZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9j
b2wvV29ya2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFr
cG9pbnRBY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ29sbGVj
dGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db25zb2xlTWVzc2Fn
ZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMjYsNyArMTI3LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0FuaW1hdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Bbmlt
YXRpb25Db2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0Jv
eFNoYWRvdy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVUluc3RydW1lbnQuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmVSZWNvcmQuanMiPjwvc2Ny
aXB0PgpAQCAtMTY5LDYgKzE2OSw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVk
RGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0lzc3VlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9MYXllci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9MYXlvdXRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0xheW91dFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFj
dGlvblZpZXcuanMKaW5kZXggMDNmNmM2OTcxYWEyNjg0OWZhYzMwODczOTQ4Y2ZmMzIzODU5ZGM2
OS4uNjFjYjAwYTMyYTA0M2UwNTY2NTAzNjViN2U1MmQwYWI2ZWRkNjcyZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludEFjdGlv
blZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
QnJlYWtwb2ludEFjdGlvblZpZXcuanMKQEAgLTExNSw3ICsxMTUsNyBAQCBXSS5CcmVha3BvaW50
QWN0aW9uVmlldyA9IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb25WaWV3IGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBfYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7Ci0gICAgICAg
IHZhciBuZXdBY3Rpb24gPSB0aGlzLl9hY3Rpb24uYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24odGhp
cy5fYWN0aW9uLnR5cGUsIHRoaXMuX2FjdGlvbik7CisgICAgICAgIHZhciBuZXdBY3Rpb24gPSB0
aGlzLl9hY3Rpb24uYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24odGhpcy5fYWN0aW9uLnR5cGUsIHtw
cmVjZWVkaW5nQWN0aW9uOiB0aGlzLl9hY3Rpb259KTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUu
YnJlYWtwb2ludEFjdGlvblZpZXdBcHBlbmRBY3Rpb25WaWV3KHRoaXMsIG5ld0FjdGlvbik7CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwppbmRleCAwNWFjNWZk
ZmVmYTg4MmE4YjRkNWI4NjhjNmM1ZGQ0MTNiNzY0ZTg5Li5jMzRlMjUzMTM0NWYwMTZlNTUyMzk0
MTE4N2YwZTY4NTNjYThkZWVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3MKQEAgLTM0LDE1ICszNCw2IEBACiAKICAgICBmaWxsOiB2YXIoLS1icmVha3BvaW50LWNvbG9y
KTsKICAgICBzdHJva2U6IGhzbGEoMCwgMCUsIDEwJSwgMC4zKTsKLSAgICBmaWx0ZXI6IGdyYXlz
Y2FsZSgpOwotfQotCi0uaXRlbS5icmVha3BvaW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJl
c29sdmVkIHsKLSAgICBmaWx0ZXI6IG5vbmU7Ci19Ci0KLWJvZHk6bm90KC53aW5kb3ctaW5hY3Rp
dmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAu
aXRlbS5icmVha3BvaW50LnNlbGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVk
IHsKLSAgICBzdHJva2U6IHZhcigtLXNlbGVjdGVkLWZvcmVncm91bmQtY29sb3IpOwogfQogCiAu
aXRlbS5icmVha3BvaW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLmF1dG8tY29udGludWU6OmFm
dGVyIHsKQEAgLTU5LDgwICs1MCwxMiBAQCBib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2lu
ZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLgogICAgIGZp
bGw6IHZhcigtLWJyZWFrcG9pbnQtY29sb3ItZGlzYWJsZWQpOwogfQogCi0uaXRlbS5icmVha3Bv
aW50IC5zdWJ0aXRsZS5mb3JtYXR0ZWQtbG9jYXRpb24gewotICAgIGZvbnQtc3R5bGU6IGl0YWxp
YzsKLX0KLQotLmJyZWFrcG9pbnQtZGVidWdnZXItc3RhdGVtZW50LWljb24gLmljb24gewotICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1s
aWdodCk7Ci19Ci0KLS5icmVha3BvaW50LWV4Y2VwdGlvbi1pY29uIC5pY29uIHsKLSAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXhjZXB0aW9uLWxpZ2h0KTsKLX0KLQot
LmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9J
bWFnZXMvVHlwZUljb25zLnN2ZyNBc3NlcnRpb24tbGlnaHQpOwotfQotCi0uYnJlYWtwb2ludC1t
aWNyb3Rhc2staWNvbiAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNv
bnMuc3ZnI01pY3JvdGFzay1saWdodCk7Ci19Ci0KLS5icmVha3BvaW50LXBhdXNlZC1pY29uIC5p
Y29uIHsKKy5pdGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUGF1c2VkQnJlYWtwb2ludC1saWdodCk7CiB9CiAKLS8q
IFdoZW4gYW5pbWF0aW5nIGEgbGF5ZXIgb24gdG9wIG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwg
bW92ZSB0aGUgbWFpbgotaWNvbiB0byB0aGUgaWNvbiBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBh
bmltYXRpb25zIGFyZSBsYXllcmVkIG9uIHRvcC4gKi8KLS5icmVha3BvaW50LWdlbmVyaWMtbGlu
ZS1pY29uIC5pY29uIHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJ
Y29ucy5zdmcjUmVzdWx0TGluZS1saWdodCk7Ci0gICAgY29udGVudDogJyc7Ci19Ci0KLS5icmVh
a3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uID4gc3BhbiB7Ci0gICAgcG9zaXRpb246IGFi
c29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdodDogMDsKLSAgICBib3R0b206IDA7Ci0gICAg
bGVmdDogMDsKLQotICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKLSAgICB0cmFuc2Zvcm06IHNjYWxl
KDApOwotICAgIHRyYW5zaXRpb246IG5vbmU7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIx
NiwgMzAlLCA0MiUpOwotfQotCi0uZGF0YS11cGRhdGVkLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5l
LWljb24gLmljb24gPiBzcGFuIHsKLSAgICBib3JkZXItcmFkaXVzOiAwOwotICAgIHRyYW5zZm9y
bTogc2NhbGUoMC44NSk7Ci0gICAgdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlLW91dDsKLSAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxNiwgMzAlLCA0MiUsIDAuMSk7Ci19Ci0KIEBtZWRpYSAo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAuYnJlYWtwb2ludC1kZWJ1Z2dlci1z
dGF0ZW1lbnQtaWNvbiAuaWNvbiB7Ci0gICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlw
ZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1kYXJrKTsKLSAgICB9Ci0gICAgCi0gICAgLmJy
ZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24gewotICAgICAgICBjb250ZW50OiB1cmwoLi4v
SW1hZ2VzL1R5cGVJY29ucy5zdmcjRXhjZXB0aW9uLWRhcmspOwotICAgIH0KLQotICAgIC5icmVh
a3BvaW50LWFzc2VydGlvbi1pY29uIC5pY29uIHsKLSAgICAgICAgY29udGVudDogdXJsKC4uL0lt
YWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlvbi1kYXJrKTsKLSAgICB9Ci0KLSAgICAuYnJlYWtw
b2ludC1taWNyb3Rhc2staWNvbiAuaWNvbiB7Ci0gICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stZGFyayk7Ci0gICAgfQotCi0gICAgLmJyZWFrcG9p
bnQtcGF1c2VkLWljb24gLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29u
IHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1BhdXNlZEJy
ZWFrcG9pbnQtZGFyayk7CiAgICAgfQotCi0gICAgLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWlj
b24gLmljb24gewotICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJ
Y29ucy5zdmcjUmVzdWx0TGluZS1kYXJrKTsKLSAgICB9Ci0gICAgCi19ClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCmluZGV4
IDI2M2YwN2MyOGU3ZjlkYmVjMDg3Y2FiM2FlNzU5NjQxMGI1ZWZmZDUuLmNmMmUwNmVlOGY1NmQw
NjdhYTZkYzA1OTJhNmE2MTkyZDA4ODlkZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVs
ZW1lbnQuanMKQEAgLTI1LDI2ICsyNSwyNiBAQAogCiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQg
PSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1l
bnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7
fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGUsIHN1YnRp
dGxlfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkJyZWFrcG9pbnQpOwogCi0gICAgICAgIGlmICghY2xhc3NOYW1lKQotICAgICAg
ICAgICAgY2xhc3NOYW1lID0gV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNv
blN0eWxlQ2xhc3NOYW1lOworICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykp
CisgICAgICAgICAgICBjbGFzc05hbWVzID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgi
YnJlYWtwb2ludCIpOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAg
c3VwZXIoWyJicmVha3BvaW50IiwgY2xhc3NOYW1lXSwgdGl0bGUsIHN1YnRpdGxlLCBicmVha3Bv
aW50KTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3Bv
aW50KTsKKworICAgICAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVk
IGRpcmVjdGx5LiBDcmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgorICAgICAgICBj
b25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXSS5CcmVha3BvaW50VHJlZUVsZW1l
bnQgJiYgdGhpcyBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CiAKICAgICAg
ICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0
ID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lclNldCA9IG5ldyBXSS5FdmVudExpc3Rl
bmVyU2V0KHRoaXMsICJCcmVha3BvaW50VHJlZUVsZW1lbnQgbGlzdGVuZXJzIik7Ci0gICAgICAg
IGlmICghdGl0bGUpCi0gICAgICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVh
a3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVh
a3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOwotICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdp
c3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFu
Z2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lz
dGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdl
LCB0aGlzLl91cGRhdGVTdGF0dXMpOwotICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rl
cihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVy
KFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRz
RW5hYmxlZERpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbGlz
dGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwgV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxl
ZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3Rl
bmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRp
bnVlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVy
U2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy51cGRhdGVTdGF0dXMpOwogICAgICAg
ICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihXSS5kZWJ1Z2dlck1hbmFnZXIsIFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVkLCB0aGlzLl9wcm9iZVNldEFkZGVkKTsKICAg
ICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0aGlzLl9wcm9iZVNldFJlbW92
ZWQpOwogCkBAIC01NSw4ICs1NSw4IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNz
IEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgICAg
IHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuc3RhdHVzLCAiY2xpY2siLCB0aGlzLl9z
dGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKIAogICAgICAgICBpZiAoIXRpdGxlKQotICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlVGl0bGVzKCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygp
OworICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZXMoKTsKKyAgICAgICAgdGhpcy51cGRhdGVT
dGF0dXMoKTsKIAogICAgICAgICB0aGlzLl9pY29uQW5pbWF0aW9uTGF5ZXJFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0aGlzLmljb25FbGVtZW50LmFw
cGVuZENoaWxkKHRoaXMuX2ljb25BbmltYXRpb25MYXllckVsZW1lbnQpOwpAQCAtNzAsMTEgKzcw
LDYgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVt
ZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFr
cG9pbnQ7CiAgICAgfQogCi0gICAgZ2V0IGZpbHRlcmFibGVEYXRhKCkKLSAgICB7Ci0gICAgICAg
IHJldHVybiB7dGV4dDogW3RoaXMuYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllcl19OwotICAg
IH0KLQogICAgIG9uZGVsZXRlKCkKICAgICB7CiAgICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcg
c28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxsIHJlbW92ZSB0aGlzCkBAIC04Miw4ICs3Nyw4
IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91
dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgogICAgICAgICB0aGlz
Ll9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwogCi0gICAgICAgIGlm
IChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHRoaXMuX2JyZWFrcG9p
bnQpKSB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0
aGlzLl9icmVha3BvaW50KTsKKyAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQucmVtb3ZhYmxl
KSB7CisgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50LnJlbW92ZSgpOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTM0LDQxICsxMjksMjcgQEAgV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
R2VuZXJhbFRyZWVFbGUKICAgICAgICAgc3VwZXIucG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0
TWVudSwgZXZlbnQpOwogICAgIH0KIAotICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQK
IAotICAgIF91cGRhdGVUaXRsZXMoKQotICAgIHsKLSAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2Nh
dGlvbiA9IHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOworICAgIGdldCBsaXN0
ZW5lclNldCgpIHsgcmV0dXJuIHRoaXMuX2xpc3RlbmVyU2V0OyB9CiAKLSAgICAgICAgdmFyIGRp
c3BsYXlMaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMaW5lTnVtYmVyOwot
ICAgICAgICB2YXIgZGlzcGxheUNvbHVtbk51bWJlciA9IHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNw
bGF5Q29sdW1uTnVtYmVyOwotICAgICAgICBpZiAoZGlzcGxheUNvbHVtbk51bWJlciA+IDApCi0g
ICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkOiVkIikuZm9y
bWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSwgZGlzcGxheUNvbHVtbk51bWJlciArIDEpOyAvLyBU
aGUgdXNlciB2aXNpYmxlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFyZSAxLWJhc2VkLgotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5l
ICVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUg
bGluZSBudW1iZXIgaXMgMS1iYXNlZC4KLQotICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9u
Lmhhc01hcHBlZExvY2F0aW9uKCkpIHsKLSAgICAgICAgICAgIHRoaXMuc3VidGl0bGUgPSBzb3Vy
Y2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkTG9jYXRpb25TdHJpbmcoKTsKLQotICAgICAgICAgICAg
aWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpKQotICAgICAgICAg
ICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoV0kuQnJlYWtwb2ludFRy
ZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05hbWUpOwotICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05h
bWUpOwotCi0gICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLm1haW5UaXRsZSArICIgXHUy
MDE0ICIgKyBXSS5VSVN0cmluZygib3JpZ2luYWxseSAlcyIpLmZvcm1hdChzb3VyY2VDb2RlTG9j
YXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKLSAgICAgICAgfQotICAgIH0KLQotICAg
IF91cGRhdGVTdGF0dXMoKQorICAgIHVwZGF0ZVN0YXR1cygpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMuc3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMuc3RhdHVz
LmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlz
YWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJlYWtwb2ludC5kaXNhYmxlZCk7Ci0gICAgICAg
IHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0
YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVDbGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQuYXV0
b0NvbnRpbnVlKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVh
a3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lLCB0aGlz
Ll9icmVha3BvaW50LnJlc29sdmVkICYmIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0Vu
YWJsZWQpOworICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludC5lZGl0YWJsZSkKKyAgICAgICAg
ICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVDbGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQu
YXV0b0NvbnRpbnVlKTsKICAgICB9CiAKKyAgICB1cGRhdGVUaXRsZXMoKQorICAgIHsKKyAgICAg
ICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICB9CisKKyAgICAv
LyBQcml2YXRlCisKICAgICBfYWRkUHJvYmVTZXQocHJvYmVTZXQpCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdJLlByb2JlU2V0KTsKQEAgLTIzMCwx
NyArMjExLDYgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgfSwgV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbik7CiAgICAg
fQogCi0gICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gdGhpcy5fYnJlYWtwb2ludCk7Ci0K
LSAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQgaGFzIGEgbmV3IGRpc3BsYXkgU291cmNlQ29kZS4g
VGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMsIGFuZCBvbmRldGFjaCgpIHdpbGwgY2xlYXIgbGlz
dGVuZXJzLgotICAgICAgICBpZiAoZXZlbnQuZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0g
dGhpcy5fYnJlYWtwb2ludC5kaXNwbGF5U291cmNlQ29kZSkKLSAgICAgICAgICAgIHJldHVybjsK
LQotICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsKLSAgICB9Ci0KICAgICBfc3RhdHVzSW1h
Z2VFbGVtZW50TW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAgICAgLy8gVG8gcHJldmVudCB0
aGUgdHJlZSBlbGVtZW50IGZyb20gc2VsZWN0aW5nLgpAQCAtMjUzLDEyICsyMjMsOSBAQCBXSS5C
cmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5k
cyBXSS5HZW5lcmFsVHJlZUVsZQogICAgIH0KIH07CiAKLVdJLkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVha3BvaW50LWdlbmVyaWMtbGlu
ZS1pY29uIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHls
ZUNsYXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0
YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSA9ICJyZXNvbHZlZCI7CiBXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSA9ICJh
dXRvLWNvbnRpbnVlIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2Fi
bGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOwotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05hbWUgPSAiZm9ybWF0dGVkLWxvY2F0aW9uIjsK
IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUg
PSAiZGF0YS11cGRhdGVkIjsKIAogV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVw
ZGF0ZWRBbmltYXRpb25EdXJhdGlvbiA9IDQwMDsgLy8gbWlsbGlzZWNvbmRzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVl
RWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nh
bGxGcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDc1Y2M3ZDQ2YTZhODZiOGU2YTQ0MmJkYTAxYjk5
YzUyZGQ5NGIyZDUuLjU3YzNjNDFiZjU0MDgyMzBkNzY1ODVhZTBmM2Y2OGZlYjgyODRiNTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxG
cmFtZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCkBAIC0xMDcsNiArMTA3LDE0IEBAIFdJ
LkNhbGxGcmFtZVRyZWVFbGVtZW50ID0gY2xhc3MgQ2FsbEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5k
cyBXSS5HZW5lcmFsVHJlZUVsZW1lCiAgICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwogICAg
IH0KIAorICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX2NhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24pCisgICAgICAg
ICAgICBXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yU291cmNlQ29kZShjb250ZXh0TWVudSwg
dGhpcy5fY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbik7CisKKyAgICAgICAgc3VwZXIucG9w
dWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpOworICAgIH0KKwogICAgIC8vIFBy
aXZhdGUKIAogICAgIF91cGRhdGVTdGF0dXMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwppbmRleCAyOTZjMmE1
NDIzYTBmNjkxZWFjN2QyZDBlOTM2MDBmNTE1NGYwZGU4Li4xOWY2NGJkMzk4ZmUxNWQyOTAxZWMy
ZDgyNzEzOGEyMTYyNGIxN2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAtOTMsNyArOTMsNyBAQCBX
SS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAg
ICAgICAgICAgIHJldHVybiBuZXcgV0kuTWVkaWFUaW1lbGluZVZpZXcocmVwcmVzZW50ZWRPYmpl
Y3QsIGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIFdJLkNv
bnRlbnRWaWV3LmNyZWF0ZUZyb21SZXByZXNlbnRlZE9iamVjdChyZXByZXNlbnRlZE9iamVjdC5z
b3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGUsIGV4dHJhQXJndW1lbnRzKTsKICAg
ICAgICAgfQpAQCAtMjM0LDcgKzIzNCw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLkZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0Lm1h
aW5SZXNvdXJjZTsKIAotICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
SS5CcmVha3BvaW50IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVNZXNz
YWdlKSB7CisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVN
ZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxv
Y2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybiByZXByZXNlbnRlZE9iamVjdC5zb3VyY2VD
b2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGU7CiAgICAgICAgIH0KQEAgLTI3OSw3ICsyNzks
NyBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwog
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBp
bnN0YW5jZW9mIFdJLlRpbWVsaW5lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVz
ZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpCisgICAgICAgIGlmIChyZXBy
ZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50IHx8IHJlcHJl
c2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVNZXNzYWdlKQogICAgICAgICAgICAgcmV0
dXJuIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuTG9jYWxSZXNvdXJjZU92ZXJyaWRlKQogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVudVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCmlu
ZGV4IGQwYjQwNTJkMzBkZWRjYWE5MjU2YmNmODVmNDEyYzEzMWVkZjY3MjUuLmVjMmNjNjQ1ZWY5
MzBiOWE3ODE4MGE3NDk1Y2ZhNjhiZTVkNjQwOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRp
bGl0aWVzLmpzCkBAIC0xMTgsNyArMTE4LDcgQEAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0Zv
clNvdXJjZUNvZGUgPSBmdW5jdGlvbihjb250ZXh0TWVudSwgc291cmNlQ29kZU9yTG9jYXQKICAg
ICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXSS5VSVN0cmluZygiQWRkIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KG5ldyBXSS5CcmVha3Bv
aW50KGxvY2F0aW9uKSk7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQobmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKSk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzCmluZGV4IDZiMzNiMmNlM2MxZjJlZTRlYWExM2M4M2FmYTM0YWRkYmYwYTQ0
NzYuLjE3NGQyMmEzNzAwZDkxOGJmOWJiZDYxZjQ1YWI5ZDMwNTVjMDg3ZGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRU
cmVlRWxlbWVudC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpAQCAtMjMsMjggKzIzLDI4IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLmJyZWFrcG9pbnQuZG9t
LmJyZWFrcG9pbnQtZm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1p
Y29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgu
cGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3Zn
I0RPTUJyZWFrcG9pbnRTdWJ0cmVlTW9kaWZpZWQtbGlnaHQpOwogfQogCi0uYnJlYWtwb2ludC5k
b20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVz
ZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVk
Om5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNv
bnMuc3ZnI0RPTUJyZWFrcG9pbnRBdHRyaWJ1dGVNb2RpZmllZC1saWdodCk7CiB9CiAKLS5icmVh
a3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBh
dXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90
KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRE9NQnJlYWtwb2ludE5vZGVSZW1vdmVkLWxpZ2h0KTsKIH0KIAogQG1lZGlhIChwcmVmZXJz
LWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZv
ci1zdWJ0cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24gewor
ICAgIC5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5p
Y29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJy
ZWFrcG9pbnRTdWJ0cmVlTW9kaWZpZWQtZGFyayk7CiAgICAgfQogCi0gICAgLmJyZWFrcG9pbnQu
ZG9tLmJyZWFrcG9pbnQtZm9yLWF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1
c2VkLWljb24pIC5pY29uIHsKKyAgICAuaXRlbS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9k
aWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRBdHRyaWJ1dGVNb2RpZmllZC1kYXJrKTsKICAg
ICB9CiAKLSAgICAuYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3Itbm9kZS1yZW1vdmVkOm5v
dCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQu
ZG9tLm5vZGUtcmVtb3ZlZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1
cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludE5vZGVSZW1vdmVkLWRhcmsp
OwogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9E
T01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5kZXggYWQ2YmIxYTE0OTIyMmNjM2Q2NzFiNmZk
YmUyYzQ0ODJjMGQ1MGI2Ny4uNjNlNjE2YTkxN2EyMDYwMzc3YjNmNWFlMDRhZmMwNmIwM2I5N2Mw
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjYg
KzIzLDIwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0ku
RE9NQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50CitXSS5ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQgPSBjbGFzcyBET01CcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50
VHJlZUVsZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0
aXRsZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0
bGV9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuRE9NQnJlYWtwb2ludCk7CiAKLSAgICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJy
ZWFrcG9pbnQiLCAiZG9tIiwgYGJyZWFrcG9pbnQtZm9yLSR7YnJlYWtwb2ludC50eXBlfWBdOwot
ICAgICAgICBpZiAoY2xhc3NOYW1lKQotICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNoKGNsYXNz
TmFtZSk7CisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkKKyAgICAgICAg
ICAgIGNsYXNzTmFtZXMgPSBbXTsKKyAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJkb20iLCBicmVh
a3BvaW50LnR5cGUpOwogCiAgICAgICAgIGlmICghdGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9
IFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5kaXNwbGF5TmFtZUZvclR5cGUoYnJlYWtwb2lu
dC50eXBlKTsKIAotICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IG51bGw7Ci0gICAgICAgIHN1cGVy
KGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhp
cy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2woIkltYWdlcy9CcmVha3Bv
aW50LnN2ZyIpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc05hbWUgPSBXSS5CcmVha3BvaW50
VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0KLSAgICAgICAg
dGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOworICAgICAgICBzdXBlcihicmVh
a3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAg
LTYxLDEwOCArNTUsNCBAQCBXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBET01C
cmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVAogICAgICAgICAgICAgcmV0
dXJuIG51bGw7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIG9u
YXR0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uYXR0YWNoKCk7Ci0KLSAgICAgICAgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZl
bnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywg
dGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0g
dGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlz
Ll9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1l
bnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVt
ZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duLmJpbmQodGhp
cyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5h
ZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9j
dXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIs
IHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlz
Ll91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAgICBvbmRldGFjaCgpCi0gICAgewotICAgICAg
ICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAgICAg
dGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExp
c3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0g
ICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMu
X2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7Ci0gICAgfQotCi0gICAgb25kZWxldGUoKQot
ICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0
aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAgICAgLy8gQnJlYWtwb2ludFRyZWVFbGVtZW50IHdp
bGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVkIGZyb20KLSAgICAgICAgLy8gd2l0aGluIHRo
ZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCi0gICAg
ICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnQodGhpcy5yZXBy
ZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25l
bnRlcigpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAg
IHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9uc3BhY2UoKQotICAgIHsKLSAgICAgICAgdGhp
cy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCkKLSAgICB7Ci0gICAgICAg
IGxldCBicmVha3BvaW50ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKLSAgICAgICAgbGV0IGxh
YmVsID0gYnJlYWtwb2ludC5kaXNhYmxlZCA/IFdJLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2lu
dCIpIDogV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtwb2ludCIpOwotICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRJdGVtKGxhYmVsLCB0aGlzLl90b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykp
OwotCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBC
cmVha3BvaW50IiksIGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIH0pOwotICAgIH0K
LQotICAgIC8vIFByaXZhdGUKLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKGV2ZW50
KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgIH0KLQotICAg
IF9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJl
dmVudCB0cmVlIG91dGxpbmUgZm9jdXMuCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigp
OwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAg
ewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgZWxlbWVudCBzZWxlY3Rpb24uCi0gICAgICAgIGV2
ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF90b2dnbGVCcmVha3BvaW50KCkK
LSAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQgPSAhdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZDsKLSAgICB9Ci0KLSAgICBfdXBkYXRlU3RhdHVzKCkK
LSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmRpc2FibGVkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1l
LCBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkKTsKLSAgICB9CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJl
ZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCmluZGV4IDc5OWY2OGNjYjYyZGEwYmE1M2JkYTA0OTli
YWIyMWZmMTExNmRkZTEuLmY1M2IxZjQ1NDVmYTg2ZDhiMWMyMmU0NWJmNmQxM2UzZGVkNjQ4MDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKQEAgLTk1LDcgKzk1LDcgQEAgV0kuRE9N
VHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudFZpZXcKICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHRoaXMu
X2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgICAgICBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIHRoaXMuX2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3Zl
ZCwgdGhpcyk7CiAKLSAgICAgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5k
bGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICAgICAg
V0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3Rh
dGVDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVDaGFuZ2VkLCB0aGlzLl9oYW5k
bGVET01CcmVha3BvaW50RE9NTm9kZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgICAgICB0aGlz
Ll9icmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50LmNzcwppbmRleCA0ZmMzYzRhNmZkY2Y2ZjkxNjQzZGJhZTg2ZDIy
MjYyZjUxZjEzMjUzLi4xNjFjZWRjZjEyN2U4ZjJiYjM1ZTUxZjY2ZmYzNDE5MWQzNGU2M2Q3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCkBAIC0yMywz
NiArMjMsMzYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0u
YnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1hbmltYXRpb24tZnJhbWU6bm90KC5icmVh
a3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1h
dGlvbi1mcmFtZTpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRBbmltYXRpb25GcmFtZS1saWdodCk7CiB9
CiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtw
b2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRlcnZh
bDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUlj
b25zLnN2ZyNFdmVudEJyZWFrcG9pbnRJbnRlcnZhbC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50
LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNv
bikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC5ldmVudC5saXN0ZW5lcjpub3QoLnBhdXNlZCkg
Lmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJy
ZWFrcG9pbnRMaXN0ZW5lci1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9p
bnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRl
bS5icmVha3BvaW50LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50VGltZW91dC1s
aWdodCk7CiB9CiAKIEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5i
cmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFr
cG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50LmFu
aW1hdGlvbi1mcmFtZTpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50QW5pbWF0aW9uRnJhbWUtZGFy
ayk7CiAgICAgfQotICAgIAotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWlu
dGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworCisgICAgLml0ZW0u
YnJlYWtwb2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50SW50ZXJ2
YWwtZGFyayk7CiAgICAgfQotICAgIAotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQt
Zm9yLWxpc3RlbmVyOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworCisgICAg
Lml0ZW0uYnJlYWtwb2ludC5ldmVudC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24gewogICAg
ICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50
TGlzdGVuZXItZGFyayk7CiAgICAgfQotICAgIAotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFr
cG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisK
KyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uIHsK
ICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtw
b2ludFRpbWVvdXQtZGFyayk7Ci0gICAgfSAgIAorICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZl
bnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5kZXggZTBiZmViZjExZDkxNjAyZDQ5OTBmMjdi
Mzg3YWFlOWJiMGFjMWQ4OS4uOWNmNGE3ZDViOWI0YjM5NzgzYzlmY2RhZjlkZDU4YzQ2ODVmZWY5
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTIz
LDEzNiArMjMsMTkgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwog
Ci1XSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludFRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50CitXSS5FdmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMg
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50CiB7Ci0gICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwg
e2NsYXNzTmFtZSwgdGl0bGV9ID0ge30pCisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2Ns
YXNzTmFtZXMsIHRpdGxlfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkV2ZW50QnJlYWtwb2ludCk7CiAKLSAgICAgICAgbGV0IGNs
YXNzTmFtZXMgPSBbImJyZWFrcG9pbnQiLCAiZXZlbnQiLCBgYnJlYWtwb2ludC1mb3ItJHticmVh
a3BvaW50LnR5cGV9YF07Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFz
c05hbWVzLnB1c2goY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNz
TmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOworICAgICAgICBjbGFzc05hbWVz
LnB1c2goImV2ZW50IiwgYnJlYWtwb2ludC50eXBlKTsKIAogICAgICAgICBpZiAoIXRpdGxlKQog
ICAgICAgICAgICAgdGl0bGUgPSBicmVha3BvaW50LmV2ZW50TmFtZTsKIAotICAgICAgICBjb25z
dCBzdWJ0aXRsZSA9IG51bGw7Ci0gICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0
aXRsZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxp
dGllcy51c2VTVkdTeW1ib2woIkltYWdlcy9CcmVha3BvaW50LnN2ZyIpOwotICAgICAgICB0aGlz
LnN0YXR1cy5jbGFzc05hbWUgPSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VF
bGVtZW50U3R5bGVDbGFzc05hbWU7Ci0KLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFy
YXRlbHkgPSB0cnVlOwotICAgIH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2go
KQotICAgIHsKLSAgICAgICAgc3VwZXIub25hdHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMp
OwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMu
X3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9j
dXNlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1v
dXNlRG93biA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bi5iaW5kKHRoaXMpOwot
Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZl
bnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQp
OwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlz
Ll9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fdXBk
YXRlU3RhdHVzKCk7Ci0gICAgfQotCi0gICAgb25kZXRhY2goKQotICAgIHsKLSAgICAgICAgc3Vw
ZXIub25kZXRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2
ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotCi0gICAgICAgIHRoaXMu
c3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFn
ZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAg
ICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJ
bWFnZUVsZW1lbnRGb2N1c2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFn
ZUVsZW1lbnRNb3VzZURvd24gPSBudWxsOwotICAgIH0KLQotICAgIG9uZGVsZXRlKCkKLSAgICB7
Ci0gICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3
aWxsIHJlbW92ZSB0aGlzCi0gICAgICAgIC8vIEJyZWFrcG9pbnRUcmVlRWxlbWVudCB3aWxsIGtu
b3cgd2hldGhlciBpdCB3YXMgZGVsZXRlZCBmcm9tCi0gICAgICAgIC8vIHdpdGhpbiB0aGUgVHJl
ZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgotICAgICAgICB0
aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwotCi0gICAgICAg
IGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmV2ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICBX
SS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuZXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRl
ZE9iamVjdCk7Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigp
Ci0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIG9uc3BhY2UoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9n
Z2xlQnJlYWtwb2ludCgpOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1
bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBi
cmVha3BvaW50ID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdDsKLQotICAgICAgICBsZXQgbGFiZWwg
PSBicmVha3BvaW50LmRpc2FibGVkID8gV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50Iikg
OiBXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0obGFiZWwsIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0K
LSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFr
cG9pbnQiKSwgKCkgPT4gewotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5l
cikKLSAgICAgICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcik7Ci0gICAgICAgICAgICBlbHNlCi0g
ICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2lu
dChicmVha3BvaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0g
ICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlz
Ll90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZv
Y3VzZWQoZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1
cy4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1
c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQg
dHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
Ci0gICAgfQotCi0gICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5y
ZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2Fi
bGVkOwotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0
aGlzLnN0YXR1cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5j
bGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2Fi
bGVkU3R5bGVDbGFzc05hbWUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAg
ICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1l
cywgdGl0bGV9KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlv
bkdyb3VwLmNzcwppbmRleCA0NzY1NzUyZTJmMDAzY2NlNDNjNDlhMmI2ZTdjYWRmZGFjMjk4ZjI5
Li5jZDVkZmZiNGU3ZmEzYjY0YjlmMThmNmRiZDhkMDZkYmE5ODdmYjNkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2Vj
dGlvbkdyb3VwLmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcwpAQCAtMzQsMyArMzQsMTEgQEAKICAg
ICBoZWlnaHQ6IDEycHg7CiAgICAgbWFyZ2luOiAwOwogfQorCisuZXZlbnQtbGlzdGVuZXItc2Vj
dGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNoZWNrYm94Il0gKyAuZ28tdG8tYXJyb3cgewor
ICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4OworfQorCisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+
IC5jb250ZW50IGlucHV0W3R5cGU9ImNoZWNrYm94Il06bm90KDpjaGVja2VkKSArIC5nby10by1h
cnJvdyB7CisgICAgZGlzcGxheTogbm9uZTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVy
U2VjdGlvbkdyb3VwLmpzCmluZGV4IDY4NmY5Zjc5NWZhZjE4OTBjNmIwOWNlODAzNTgwYWNiNjdj
OWI1YjUuLmVmMWJhMzViYzNiN2I5YWU5Y2EzMDc2OGMwODQ4NzUzODlkYTZmMzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVu
ZXJTZWN0aW9uR3JvdXAuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcwpAQCAtNzIsNyArNzIsOSBAQCBX
SS5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5lclNlY3Rpb25H
cm91cCBleHRlbmRzIFdJLkRldGFpbAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
V0kuRE9NTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50cygpKSB7Ci0gICAg
ICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKKyAgICAgICAgICAgICAgICBsZXQgdG9n
Z2xlQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOworCisgICAgICAg
ICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50ID0gdG9n
Z2xlQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0Iikp
OwogICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxl
bWVudC50eXBlID0gImNoZWNrYm94IjsKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVCcmVh
a3BvaW50VG9nZ2xlKCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnRUb2dnbGVFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4g
ewpAQCAtODAsMTMgKzgyLDI2IEBAIFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAgPSBjbGFz
cyBFdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwIGV4dGVuZHMgV0kuRGV0YWlsCiAgICAgICAgICAg
ICAgICAgICAgIHRoaXMuaGFzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQgPSAhIXRoaXMuX2V2ZW50
TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudC5jaGVja2VkOwogICAgICAgICAgICAgICAg
IH0pOwogCisgICAgICAgICAgICAgICAgaWYgKFdJLkRPTU1hbmFnZXIuc3VwcG9ydHNFdmVudExp
c3RlbmVyQnJlYWtwb2ludENvbmZpZ3VyYXRpb24oKSkgeworICAgICAgICAgICAgICAgICAgICBs
ZXQgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdyA9IHRvZ2dsZUNvbnRhaW5lci5hcHBlbmRDaGls
ZChXSS5jcmVhdGVHb1RvQXJyb3dCdXR0b24oKSk7CisgICAgICAgICAgICAgICAgICAgIHJldmVh
bEJyZWFrcG9pbnRHb1RvQXJyb3cudGl0bGUgPSBXSS5VSVN0cmluZygiUmV2ZWFsIGluIFNvdXJj
ZXMgVGFiIik7CisgICAgICAgICAgICAgICAgICAgIHJldmVhbEJyZWFrcG9pbnRHb1RvQXJyb3cu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaGFzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQpOwor
CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludFRvU2VsZWN0ID0gV0kuZG9t
TWFuYWdlci5icmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcklkKHRoaXMuX2V2ZW50TGlzdGVuZXIu
ZXZlbnRMaXN0ZW5lcklkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGJyZWFrcG9pbnRUb1NlbGVjdCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIFdJLnNob3dT
b3VyY2VzVGFiKHticmVha3BvaW50VG9TZWxlY3R9KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7
CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgbGV0IHRvZ2dsZUxhYmVsID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICAgICAgICAgIHRvZ2dsZUxh
YmVsLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIkJyZWFrcG9pbnQiKTsKICAgICAgICAgICAg
ICAgICB0b2dnbGVMYWJlbC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChldmVudCkgPT4gewog
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVs
ZW1lbnQuY2xpY2soKTsKICAgICAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgICAgIHJv
d3MucHVzaChuZXcgV0kuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3codG9nZ2xlTGFiZWwsIHRoaXMu
X2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudCkpOworICAgICAgICAgICAgICAg
IHJvd3MucHVzaChuZXcgV0kuRGV0YWlsc1NlY3Rpb25TaW1wbGVSb3codG9nZ2xlTGFiZWwsIHRv
Z2dsZUNvbnRhaW5lcikpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVh
a3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NjFlOWExMTllMDVhZGM3MTE1MWM1MmNkOGFjNDIyZDQ5MzM2ZGFlMQotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRC
cmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2Ug
eworICAgIGZpbHRlcjogZ3JheXNjYWxlKCk7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCB7CisgICAgZmlsdGVyOiBub25l
OworfQorCitib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2
ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0
LnNlbGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkIHsKKyAgICBzdHJva2U6
IHZhcigtLXNlbGVjdGVkLWZvcmVncm91bmQtY29sb3IpOworfQorCisuaXRlbS5icmVha3BvaW50
LmphdmFzY3JpcHQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbiB7CisgICAgZm9udC1zdHls
ZTogaXRhbGljOworfQorCisvKiBXaGVuIGFuaW1hdGluZyBhIGxheWVyIG9uIHRvcCBvZiBhIHRy
ZWUgZWxlbWVudCdzIGljb24sIG1vdmUgdGhlIG1haW4KK2ljb24gdG8gdGhlIGljb24gZWxlbWVu
dCdzIGJhY2tncm91bmQgc28gYW5pbWF0aW9ucyBhcmUgbGF5ZXJlZCBvbiB0b3AuICovCisuaXRl
bS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbiB7CisgICAgYmFja2dyb3VuZC1pbWFn
ZTogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1Jlc3VsdExpbmUtbGlnaHQpOworICAgIGNv
bnRlbnQ6ICcnOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbiA+
IHNwYW4geworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6
IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6IDA7CisKKyAgICBib3JkZXItcmFkaXVzOiA1
MCU7CisgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsKKyAgICB0cmFuc2l0aW9uOiBub25lOworICAg
IGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTYsIDMwJSwgNDIlKTsKK30KKworLmRhdGEtdXBkYXRl
ZC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3BhbiB7CisgICAgYm9y
ZGVyLXJhZGl1czogMDsKKyAgICB0cmFuc2Zvcm06IHNjYWxlKDAuODUpOworICAgIHRyYW5zaXRp
b246IGFsbCAuNHMgZWFzZS1vdXQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgyMTYsIDMw
JSwgNDIlLCAwLjEpOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXIt
c3RhdGVtZW50IC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRGVidWdnZXJTdGF0ZW1lbnQtbGlnaHQpOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFz
Y3JpcHQuZXhjZXB0aW9uIC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJ
Y29ucy5zdmcjRXhjZXB0aW9uLWxpZ2h0KTsKK30KKworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2Ny
aXB0LmFzc2VydGlvbiAuaWNvbiB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNv
bnMuc3ZnI0Fzc2VydGlvbi1saWdodCk7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlw
dC5taWNyb3Rhc2sgLmljb24geworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNNaWNyb3Rhc2stbGlnaHQpOworfQorCitAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24gewor
ICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVz
dWx0TGluZS1kYXJrKTsKKyAgICB9CisKKyAgICAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQu
ZGVidWdnZXItc3RhdGVtZW50IC5pY29uIHsKKyAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVtZW50LWRhcmspOworICAgIH0KKworICAgIC5p
dGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRpb24gLmljb24geworICAgICAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXhjZXB0aW9uLWRhcmspOworICAgIH0K
KworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5hc3NlcnRpb24gLmljb24geworICAg
ICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWRhcmsp
OworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmlj
b24geworICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjTWljcm90
YXNrLWRhcmspOworICAgIH0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0
QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li40ZTY0NmMyNWM5ZDYxZjc2MzljZjZhM2U1MWQ3NGUxYzBjNjBiODE3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlw
dEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgSmF2YVNjcmlw
dEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAor
eworICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkK
KyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludCk7CisKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNz
TmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFsibGluZSJdOworICAgICAgICBjbGFz
c05hbWVzLnB1c2goImphdmFzY3JpcHQiKTsKKworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7
Y2xhc3NOYW1lcywgdGl0bGV9KTsKKworICAgICAgICBpZiAoIXRpdGxlKQorICAgICAgICAgICAg
dGhpcy5saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludExvY2F0aW9uRGlk
Q2hhbmdlKTsKKyAgICAgICAgdGhpcy5saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlz
LnVwZGF0ZVN0YXR1cyk7CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgZmlsdGVy
YWJsZURhdGEoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5icmVha3BvaW50
LmNvbnRlbnRJZGVudGlmaWVyXX07CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICB1
cGRhdGVTdGF0dXMoKQorICAgIHsKKyAgICAgICAgc3VwZXIudXBkYXRlU3RhdHVzKCk7CisKKyAg
ICAgICAgaWYgKCF0aGlzLnN0YXR1cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0
aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKCJyZXNvbHZlZCIsIHRoaXMuYnJlYWtwb2ludC5y
ZXNvbHZlZCAmJiBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkKTsKKyAgICB9
CisKKyAgICB1cGRhdGVUaXRsZXMoKQorICAgIHsKKyAgICAgICAgc3VwZXIudXBkYXRlVGl0bGVz
KCk7CisKKyAgICAgICAgbGV0IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuYnJlYWtwb2ludC5z
b3VyY2VDb2RlTG9jYXRpb247CisKKyAgICAgICAgbGV0IGRpc3BsYXlMaW5lTnVtYmVyID0gc291
cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMaW5lTnVtYmVyOworICAgICAgICBsZXQgZGlzcGxheUNv
bHVtbk51bWJlciA9IHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOworICAg
ICAgICBpZiAoZGlzcGxheUNvbHVtbk51bWJlciA+IDApCisgICAgICAgICAgICB0aGlzLm1haW5U
aXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkOiVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVy
ICsgMSwgZGlzcGxheUNvbHVtbk51bWJlciArIDEpOyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUg
YW5kIGNvbHVtbiBudW1iZXJzIGFyZSAxLWJhc2VkLgorICAgICAgICBlbHNlCisgICAgICAgICAg
ICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlM
aW5lTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNl
ZC4KKworICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkp
IHsKKyAgICAgICAgICAgIHRoaXMuc3VidGl0bGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0
dGVkTG9jYXRpb25TdHJpbmcoKTsKKworICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlv
bi5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpKQorICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVF
bGVtZW50LmNsYXNzTGlzdC5hZGQoImZvcm1hdHRlZC1sb2NhdGlvbiIpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1v
dmUoImZvcm1hdHRlZC1sb2NhdGlvbiIpOworCisgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0
aGlzLm1haW5UaXRsZSArICIgXHUyMDE0ICIgKyBXSS5VSVN0cmluZygib3JpZ2luYWxseSAlcyIp
LmZvcm1hdChzb3VyY2VDb2RlTG9jYXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9icmVha3BvaW50TG9jYXRp
b25EaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50
YXJnZXQgPT09IHRoaXMuYnJlYWtwb2ludCk7CisKKyAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQg
aGFzIGEgbmV3IGRpc3BsYXkgU291cmNlQ29kZS4gVGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMs
IGFuZCBvbmRldGFjaCgpIHdpbGwgY2xlYXIgbGlzdGVuZXJzLgorICAgICAgICBpZiAoZXZlbnQu
ZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0gdGhpcy5icmVha3BvaW50LmRpc3BsYXlTb3Vy
Y2VDb2RlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMudXBkYXRlVGl0bGVz
KCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpp
bmRleCAxMzQ1M2MyNWNhY2YyOTIyMGZkZWU0NDgwZTE5ZGIwZTYzODE5OWU3Li44ODMwZjNjMWQ3
MGQ3ODFkMjdmNWU2YTEwN2U1NDBiY2VmM2IzMWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRh
aWxzU2lkZWJhclBhbmVsLmpzCkBAIC02OCw2ICs2OCwxMSBAQCBXSS5Qcm9iZURldGFpbHNTaWRl
YmFyUGFuZWwgPSBjbGFzcyBQcm9iZURldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRh
aWxzUwogICAgICAgICB9KTsKIAogICAgICAgICBpbnNwZWN0ZWRQcm9iZVNldHMuc29ydChmdW5j
dGlvbiBzb3J0QnlTb3VyY2VMb2NhdGlvbihhUHJvYmVTZXQsIGJQcm9iZVNldCkgeworICAgICAg
ICAgICAgaWYgKCEoYVByb2JlU2V0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQp
KQorICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgaWYgKCEoYlByb2JlU2V0
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpKQorICAgICAgICAgICAgICAgIHJl
dHVybiAtMTsKKwogICAgICAgICAgICAgdmFyIGFMb2NhdGlvbiA9IGFQcm9iZVNldC5icmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgICAgIHZhciBiTG9jYXRpb24gPSBiUHJv
YmVTZXQuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAgICAgICAgICAgICB2YXIgY29t
cGFyaXNvblJlc3VsdCA9IGFMb2NhdGlvbi5zb3VyY2VDb2RlLmRpc3BsYXlOYW1lLmV4dGVuZGVk
TG9jYWxlQ29tcGFyZShiTG9jYXRpb24uc291cmNlQ29kZS5kaXNwbGF5TmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERl
dGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcwppbmRleCA4Mzc3MzdjMGQzYWQyOGY4ZjY1MDZk
NzZmZjE1OTA2ZTgzNTcxNTllLi5jNTRkZDc3MjJmZjcxZDM5Y2Y1ZDcwYjAyNjg2ODBmNzY2ZWI4
YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMKQEAgLTMwLDYgKzMw
LDIwIEBAIFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBQcm9iZVNldERldGFpbHNT
ZWN0aW9uIGV4dGVuZHMgV0kuRGV0YWlsc1NlY3RpCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdJLlByb2JlU2V0LCAiSW52YWxpZCBQcm9iZVNldCBh
cmd1bWVudDoiLCBwcm9iZVNldCk7CiAKKyAgICAgICAgbGV0IHRpdGxlID0gIiI7CisgICAgICAg
IGlmIChwcm9iZVNldC5icmVha3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KSB7
CisgICAgICAgICAgICBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0
bGUgPSBXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFtZXMiKTsKKyAgICAgICAgICAgIGVs
c2UgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJ
bnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmco
IkFsbCBJbnRlcnZhbHMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb2JlU2V0LmJyZWFrcG9p
bnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAg
ICAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIkFsbCBFdmVudHMiKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0
cmluZygiQWxsIFRpbWVvdXRzIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGl0bGUgPSBwcm9iZVNldC5icmVha3BvaW50LmV2ZW50TmFtZTsKKyAgICAgICAgfQorCiAgICAg
ICAgIHZhciBvcHRpb25zRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwog
ICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV0kuUHJvYmVTZXREYXRhR3JpZChwcm9iZVNldCk7
CiAKQEAgLTM4LDcgKzUyLDcgQEAgV0kuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiA9IGNsYXNzIFBy
b2JlU2V0RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXSS5EZXRhaWxzU2VjdGkKIAogICAgICAgICB2
YXIgcHJvYmVTZWN0aW9uR3JvdXAgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Hcm91cChbc2luZ2xl
dG9uUm93XSk7CiAKLSAgICAgICAgc3VwZXIoInByb2JlIiwgIiIsIFtwcm9iZVNlY3Rpb25Hcm91
cF0sIG9wdGlvbnNFbGVtZW50KTsKKyAgICAgICAgc3VwZXIoInByb2JlIiwgdGl0bGUsIFtwcm9i
ZVNlY3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQu
Y2xhc3NMaXN0LmFkZCgicHJvYmUtc2V0Iik7CiAKQEAgLTY1LDEwICs3OSwxMiBAQCBXSS5Qcm9i
ZVNldERldGFpbHNTZWN0aW9uID0gY2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBleHRlbmRz
IFdJLkRldGFpbHNTZWN0aQogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlz
Ll9wcm9iZVNldCwgV0kuUHJvYmVTZXQuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3Byb2JlU2V0
U2FtcGxlc0NoYW5nZWQpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlz
Ll9wcm9iZVNldCwgV0kuUHJvYmVTZXQuRXZlbnQuU2FtcGxlc0NsZWFyZWQsIHRoaXMuX3Byb2Jl
U2V0U2FtcGxlc0NoYW5nZWQpOwogCi0gICAgICAgIC8vIFVwZGF0ZSB0aGUgc291cmNlIGxpbmsg
d2hlbiB0aGUgYnJlYWtwb2ludCdzIHJlc29sdmVkIHN0YXRlIGNoYW5nZXMsCi0gICAgICAgIC8v
IHNvIHRoYXQgaXQgY2FuIGJlY29tZSBhIGxpdmUgbG9jYXRpb24gbGluayB3aGVuIHBvc3NpYmxl
LgotICAgICAgICB0aGlzLl91cGRhdGVMaW5rRWxlbWVudCgpOwotICAgICAgICB0aGlzLl9saXN0
ZW5lclNldC5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldC5icmVha3BvaW50LCBXSS5CcmVha3BvaW50
LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KTsK
KyAgICAgICAgaWYgKHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludCkgeworICAgICAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGlu
ayB3aGVuIHRoZSBicmVha3BvaW50J3MgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKKyAgICAgICAg
ICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlY29tZSBhIGxpdmUgbG9jYXRpb24gbGluayB3aGVuIHBv
c3NpYmxlLgorICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQoKTsKKyAgICAgICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQs
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRo
aXMuX3VwZGF0ZUxpbmtFbGVtZW50KTsKKyAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX2xpc3Rl
bmVyU2V0Lmluc3RhbGwoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VDb2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpz
CmluZGV4IDZhMzBiZGQyZjE3MGQ3ZWZmZTIxNGFlZDYyYTUxNzAwYTJkYjZiMjAuLjQ2NjE5YmY2
YTMxY2YyMjUxN2E1OWNjNWE4MDU5NzhiZjExMmY1NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVU
ZXh0RWRpdG9yLmpzCkBAIC02NiwxMCArNjYsMTEgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3Ig
PSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAg
ICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoInNvdXJjZS1jb2RlIik7CiAKICAgICAgICAg
aWYgKHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKSB7Ci0gICAgICAgICAgICBXSS5CcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hh
bmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAg
IFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9D
b250aW51ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7
Ci0gICAgICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlk
Q2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVh
a3BvaW50TG9jYXRpb24sIHRoaXMpOworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRD
aGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAg
ICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50
LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENo
YW5nZSwgdGhpcyk7CisKKyAgICAgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURp
ZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAg
ICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3Bv
aW50TG9jYXRpb24sIHRoaXMpOwogCiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRBZGRlZCwgdGhpcy5fdGFy
Z2V0QWRkZWQsIHRoaXMpOwogICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQuVGFyZ2V0UmVtb3ZlZCwgdGhpcy5fdGFyZ2V0
UmVtb3ZlZCwgdGhpcyk7CkBAIC0xNjcsNyArMTY4LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0
b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAg
ICBjbG9zZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpIHsK
LSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxs
LCB0aGlzKTsKKyAgICAgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgICAgIFdJ
LnRhcmdldE1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIApA
QCAtMTMwNSw3ICsxMzA2LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3Vy
Y2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgdmFyIGVkaXRv
ckxpbmVJbmZvID0ge2xpbmVOdW1iZXIsIGNvbHVtbk51bWJlcn07CiAgICAgICAgIHZhciB1bmZv
cm1hdHRlZExpbmVJbmZvID0gdGhpcy5fdW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxpbmVJ
bmZvKGVkaXRvckxpbmVJbmZvKTsKICAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRo
aXMuX3NvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHVuZm9ybWF0dGVkTGluZUlu
Zm8ubGluZU51bWJlciwgdW5mb3JtYXR0ZWRMaW5lSW5mby5jb2x1bW5OdW1iZXIpOwotICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7
CisgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNv
dXJjZUNvZGVMb2NhdGlvbik7CiAKICAgICAgICAgdmFyIGxpbmVJbmZvID0gdGhpcy5fZWRpdG9y
TGluZUluZm9Gb3JTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRp
b24pOwogICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFr
cG9pbnQsIGxpbmVJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanMKaW5kZXggZmFiZjNlYzFlZjljYjEzNmNiMjg3MGE1NDg2NzRkMWJhODQzMzU1
MS4uZWY0YmQyNGI3MDk3YjcxMzg1MDNjNmUxMDY1NWQ1YjNiZjE3ZTEyMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKQEAgLTE2OSw3ICsxNjks
NyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICB0aGlzLl9icmVha3BvaW50c1Ry
ZWVPdXRsaW5lLm9uZGVsZXRlID0gKHNlbGVjdGVkVHJlZUVsZW1lbnQpID0+IHsKICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVkVHJlZUVsZW1lbnQuc2VsZWN0ZWQpOwogCi0gICAg
ICAgICAgICBpZiAoIVdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCkpIHsKKyAgICAgICAgICAgIGlmICgh
c2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmFibGUpIHsKICAgICAg
ICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1NlbGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQu
bmV4dFNlbGVjdGFibGVTaWJsaW5nOwogICAgICAgICAgICAgICAgIGlmICh0cmVlRWxlbWVudFRv
U2VsZWN0KSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9taXRGb2N1cyA9IHRydWU7CkBA
IC0zMjYsNyArMzI2LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFj
dGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRGVidWdnZXJBY3RpdmVDYWxsRnJh
bWVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuV2FpdGluZ1RvUGF1c2UsIHRoaXMuX2hh
bmRsZURlYnVnZ2VyV2FpdGluZ1RvUGF1c2UsIHRoaXMpOwogCi0gICAgICAgIFdJLkJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRp
ZENoYW5nZSwgdGhpcy5faGFuZGxlRGVidWdnZXJPYmplY3REaXNwbGF5TG9jYXRpb25EaWRDaGFu
Z2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcy5faGFuZGxlRGVidWdnZXJPYmplY3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRo
aXMpOwogICAgICAgICBXSS5Jc3N1ZU1lc3NhZ2UuYWRkRXZlbnRMaXN0ZW5lcihXSS5Jc3N1ZU1l
c3NhZ2UuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dl
ck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kuRE9N
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9k
ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdlZCwgdGhpcyk7
CkBAIC0zODcsMTcgKzM4NywxNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9
IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0ZWQpIHsKLSAgICAg
ICAgICAgIGlmIChXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52
YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVh
a3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50
KTsKKyAgICAgICAgICAgIGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsKIAotICAgICAg
ICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQudmFsdWUpCi0g
ICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgICAg
IGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQorICAgICAg
ICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRp
bWVvdXRzQnJlYWtwb2ludCk7CiAKLSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5ncy5zaG93QWxs
SW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRl
cnZhbHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3Bv
aW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKIAotICAg
ICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50LnZhbHVl
KQotICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9p
bnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpOworICAgICAg
ICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQor
ICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICBmb3IgKGxldCBldmVudEJy
ZWFrcG9pbnQgb2YgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmxpc3RlbmVyQnJlYWtwb2ludHMpCiAg
ICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChldmVudEJyZWFrcG9pbnQpOwpAQCAt
NDUyLDcgKzQ1Miw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3Mg
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIFdJLm5ldHdv
cmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5yZW1v
dmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5Jc3N1ZU1lc3Nh
Z2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuRE9N
QnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAg
ICBXSS5jb25zb2xlTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAg
ICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09
PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQsCiAgICAgICAgICAg
ICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0g
V0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQsCiAgICAgICAg
ICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9
PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCwKLSAgICAg
ICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VU
cmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50
LAorICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV0kuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJ
LlNjcmlwdFRyZWVFbGVtZW50LAogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNy
b3Rhc2tzQnJlYWtwb2ludCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+
IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWxsVGltZW91dHNCcmVha3BvaW50LApAQCAtMTIyNCw4ICsxMjI0LDggQEAgV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCBleHRlbmRzIFcKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGlmIChhIGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
ICYmIGIgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpOworICAg
ICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVt
ZW50ICYmIGIgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KQor
ICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRU
cmVlRWxlbWVudHMoYSwgYik7CiAKICAgICAgICAgICAgIHJldHVybiBhLm1haW5UaXRsZS5leHRl
bmRlZExvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUpIHx8IGEuc3VidGl0bGUuZXh0ZW5kZWRMb2Nh
bGVDb21wYXJlKGIuc3VidGl0bGUpOwogICAgICAgICB9OwpAQCAtMTIzMyw3ICsxMjMzLDcgQEAg
V0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0
Q2hpbGQodHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlG
dW5jdGlvbih0cmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIGNvbXBhcmF0
b3IpKTsKICAgICB9CiAKLSAgICBfY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYikK
KyAgICBfY29tcGFyZUphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpCiAgICAg
ewogICAgICAgICBpZiAoIWEucmVwcmVzZW50ZWRPYmplY3QgfHwgIWIucmVwcmVzZW50ZWRPYmpl
Y3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAgLTEyNTEsNyArMTI1MSw3IEBAIFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5l
LmZpbmRUcmVlRWxlbWVudChicmVha3BvaW50KSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwog
Ci0gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudDsKKyAg
ICAgICAgbGV0IGNvbnN0cnVjdG9yID0gV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVu
dDsKICAgICAgICAgbGV0IG9wdGlvbnMgPSB7fTsKICAgICAgICAgbGV0IHBhcmVudFRyZWVFbGVt
ZW50ID0gdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZTsKIApAQCAtMTI2OSwxOSArMTI2OSwx
OSBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICB9OwogCiAgICAgICAgIGlmIChi
cmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtw
b2ludCkgewotICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1kZWJ1
Z2dlci1zdGF0ZW1lbnQtaWNvbiI7CisgICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBb
ImRlYnVnZ2VyLXN0YXRlbWVudCJdOwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLlVJ
U3RyaW5nKCJEZWJ1Z2dlciBTdGF0ZW1lbnRzIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtw
b2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVha3BvaW50KSB7Ci0g
ICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWV4Y2VwdGlvbi1pY29u
IjsKKyAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9IFsiZXhjZXB0aW9uIl07CiAgICAg
ICAgICAgICBvcHRpb25zLnRpdGxlID0gV0kucmVwZWF0ZWRVSVN0cmluZy5hbGxFeGNlcHRpb25z
KCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2Vy
LnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xh
c3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24iOworICAgICAgICAgICAgb3B0aW9u
cy5jbGFzc05hbWVzID0gWyJleGNlcHRpb24iXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUg
PSBXSS5yZXBlYXRlZFVJU3RyaW5nLnVuY2F1Z2h0RXhjZXB0aW9ucygpOwogICAgICAgICB9IGVs
c2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJl
c0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9p
bnQtYXNzZXJ0aW9uLWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJh
c3NlcnRpb24iXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5yZXBlYXRlZFVJU3Ry
aW5nLmFzc2VydGlvbkZhaWx1cmVzKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9
PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50KSB7Ci0gICAgICAg
ICAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LW1pY3JvdGFzay1pY29uIjsKKyAg
ICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9IFsibWljcm90YXNrIl07CiAgICAgICAgICAg
ICBvcHRpb25zLnRpdGxlID0gV0kuVUlTdHJpbmcoIkFsbCBNaWNyb3Rhc2tzIik7CiAgICAgICAg
IH0gZWxzZSBpZiAoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkRPTUJyZWFrcG9pbnQpIHsKICAg
ICAgICAgICAgIGlmICghYnJlYWtwb2ludC5kb21Ob2RlSWRlbnRpZmllcikKQEAgLTEzNjQsNyAr
MTM2NCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgX3JlbW92ZUFsbEJyZWFrcG9p
bnRzKGJyZWFrcG9pbnRzKQogICAgIHsKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBi
cmVha3BvaW50cykgewotICAgICAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFr
cG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkpCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5y
ZW1vdmFibGUpCiAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0xMzgzLDcgKzEzODMsNyBA
QCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogCiAgICAgICAgIGxldCBicmVha3BvaW50cyA9IFtd
OwogICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiB0cmVlRWxlbWVudC5jaGlsZHJlbikgewotICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoY2hpbGQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY2hpbGQgaW5zdGFuY2VvZiBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKICAgICAgICAgICAgIGxldCBicmVh
a3BvaW50ID0gY2hpbGQuYnJlYWtwb2ludDsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQpOwogICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCkBAIC0xNDAzLDcgKzE0MDMs
NyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogCiAgICAgICAgICAgICBpc3N1ZVRyZWVFbGVt
ZW50ID0gbmV3IFdJLklzc3VlVHJlZUVsZW1lbnQoaXNzdWVNZXNzYWdlKTsKIAotICAgICAgICAg
ICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoaXNzdWVUcmVlRWxlbWVudCwgaW5zZXJ0
aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGlzc3VlVHJlZUVsZW1lbnQs
IHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlQnJlYWtwb2ludFRyZWVF
bGVtZW50cykpOworICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoaXNz
dWVUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0
aW9uKGlzc3VlVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9j
b21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudHMpKTsKICAgICAgICAgICAgIGlm
IChwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGggPT09IDEpCiAgICAgICAgICAgICAg
ICAgcGFyZW50VHJlZUVsZW1lbnQuZXhwYW5kKCk7CiAgICAgICAgIH0KQEAgLTE1NTAsNyArMTU1
MCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJl
YXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNz
RmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVl
RWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudChXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAg
IGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNs
YXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5n
KCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgRmlyZWQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFr
cG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xNTk1LDggKzE1OTUsOCBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hZGRFdmVu
dExpc3RlbmVyKFdJLlRyZWVPdXRsaW5lLkV2ZW50LlNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcy5f
aGFuZGxlVHJlZVNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgICAgIGxldCBi
cmVha3BvaW50ID0gV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRGb3JJZGVudGlmaWVyKHBh
dXNlRGF0YS5icmVha3BvaW50SWQpOwotICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRUcmVlRWxl
bWVudCA9IG5ldyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludCwgewotICAgICAg
ICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAg
ICAgbGV0IGJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dFRyZWVFbGVtZW50KGJyZWFrcG9pbnQsIHsKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBb
InBhdXNlZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiVHJpZ2dlcmVk
IEJyZWFrcG9pbnQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnREZXRhaWxzU2VjdGlvbiA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblJvdzsKQEAgLTE2NDUsNyAr
MTY0NSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAKICAgICAgICAgICAgIGxldCB0eXBl
ID0gV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmRpc3BsYXlOYW1lRm9yVHlwZShkb21CcmVh
a3BvaW50LnR5cGUpOwogICAgICAgICAgICAgbGV0IGRvbUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9
IG5ldyBXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQoZG9tQnJlYWtwb2ludCwgewotICAgICAg
ICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IHR5
cGUsCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIGxldCBkb21CcmVha3BvaW50Um93ID0g
bmV3IFdJLkRldGFpbHNTZWN0aW9uUm93OwpAQCAtMTcxNSw3ICsxNzE1LDcgQEAgV0kuU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUg
PSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9
KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJ
LkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KGV2ZW50QnJlYWtwb2ludCwgewotICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAg
ICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJ
U3RyaW5nKCJcdTIwMUMlc1x1MjAxRCBFdmVudCBGaXJlZCIpLmZvcm1hdChwYXVzZURhdGEuZXZl
bnROYW1lKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25U
cmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0x
NzU4LDcgKzE3NTgsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNz
IFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgdGhp
cy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5l
KHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRCcmVh
a3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQsIHsKLSAgICAgICAgICAg
ICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAg
ICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0
cmluZygic2V0SW50ZXJ2YWwgRmlyZWQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAg
dGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRU
cmVlRWxlbWVudCk7CkBAIC0xODAyLDcgKzE4MDIsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMg
VwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRl
Q29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAg
ICAgICBsZXQgZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQoZXZlbnRCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NO
YW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1l
czogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIiVzIEZp
cmVkIikuZm9ybWF0KHBhdXNlRGF0YS5ldmVudE5hbWUpLAogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE4MTgsNyArMTgxOCw3IEBAIFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhp
cy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAK
ICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNC
cmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVz
ZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAg
ICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoInNldFRpbWVvdXQgRmlyZWQiKSwKICAgICAg
ICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBl
bmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xODQ0LDcgKzE4NDQsNyBA
QCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVh
c29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NG
aWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgICAgIGxldCB1cmxCcmVha3BvaW50VHJl
ZUVsZW1lbnQgPSBuZXcgV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50KHVybEJyZWFrcG9pbnQs
IHsKLSAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNv
biIsCisgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAg
ICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiVHJpZ2dlcmVkIFVSTCBCcmVha3BvaW50
IiksCiAgICAgICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICAgICAgbGV0IHVybEJyZWFrcG9p
bnRSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7CkBAIC0xOTUwLDkgKzE5NTAsOSBAQCBX
SS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAK
LSAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50KSB7CisgICAgICAgIGlmICh0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50VHJlZUVsZW1lbnQpIHsKICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gdHJl
ZUVsZW1lbnQuYnJlYWtwb2ludDsKLSAgICAgICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIu
aXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkKKyAgICAgICAgICAgIGlmIChicmVha3Bv
aW50Lmdsb2JhbCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgIGxldCBz
b3VyY2VDb2RlID0gYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNv
ZGU7CkBAIC0xOTgxLDI1ICsxOTgxLDkgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAg
ICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsTWljcm90YXNrc0JyZWFrcG9pbnQ7
CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0dGluZyA9IFdJ
LnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsSW50
ZXJ2YWxzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBz
ZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbExpc3RlbmVyc0JyZWFrcG9pbnQ7Ci0gICAgICAg
ICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQ6CiAgICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0Fs
bFJlcXVlc3RzQnJlYWtwb2ludDsKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludDoKLSAgICAgICAgICAg
IHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50OwotICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2V0dGluZykKQEAgLTIwMDgs
NyArMTk5Miw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGlmIChldmVudC50
eXBlID09PSBXSS5UcmVlT3V0bGluZS5FdmVudC5FbGVtZW50UmVtb3ZlZCkgewogICAgICAgICAg
ICAgbGV0IHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5l
LnNlbGVjdGVkVHJlZUVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVu
dCkgewotICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50
IHx8ICFXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHNlbGVjdGVkVHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpKSB7CisgICAgICAgICAgICAgICAgaWYgKHNlbGVj
dGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgfHwgIXNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3QucmVtb3ZhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNraXBV
bnJldmVhbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9udFBvcHVsYXRl
ID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbGV0IHRyZWVFbGVtZW50VG9TZWxlY3QgPSBz
ZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBVbnJldmVhbGVk
LCBkb250UG9wdWxhdGUpOwpAQCAtMjA1MiwyNSArMjAzNiwyMyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5z
dXBwb3J0c0V2ZW50QnJlYWtwb2ludHMoKSB8fCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9y
dHNFdmVudExpc3RlbmVyQnJlYWtwb2ludHMoKSkgewotICAgICAgICAgICAgZnVuY3Rpb24gYWRk
VG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCBsYWJlbCwgY2hlY2tl
ZCkgeworICAgICAgICAgICAgZnVuY3Rpb24gYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtw
b2ludChsYWJlbCwgYnJlYWtwb2ludCwgdHlwZSkgewogICAgICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZENoZWNrYm94SXRlbShsYWJlbCwgKCkgPT4gewotICAgICAgICAgICAgICAgICAg
ICBpZiAoY2hlY2tlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQpCiAgICAg
ICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9LCBjaGVj
a2VkKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChuZXcgV0kuRXZlbnRCcmVh
a3BvaW50KHR5cGUpKTsKKyAgICAgICAgICAgICAgICB9LCAhIWJyZWFrcG9pbnQpOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50
KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBXSS5V
SVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFtZXMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQudmFsdWUpOwotICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3Bl
Y2lhbEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVh
a3BvaW50LCBXSS5VSVN0cmluZygiQWxsIFRpbWVvdXRzIiksIFdJLnNldHRpbmdzLnNob3dBbGxU
aW1lb3V0c0JyZWFrcG9pbnQudmFsdWUpOwotICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lh
bEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtw
b2ludCwgV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbElu
dGVydmFsc0JyZWFrcG9pbnQudmFsdWUpOworICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lh
bEV2ZW50QnJlYWtwb2ludChXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFtZXMiKSwgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKTsKKyAgICAgICAgICAgIGFkZFRvZ2dsZUZv
clNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmcoIkFsbCBUaW1lb3V0cyIpLCBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50LCBXSS5FdmVudEJyZWFrcG9p
bnQuVHlwZS5UaW1lb3V0KTsKKyAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJy
ZWFrcG9pbnQoV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKSwgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVy
dmFsKTsKIAogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7CiAKICAg
ICAgICAgICAgIGlmIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNBbGxMaXN0ZW5lcnNC
cmVha3BvaW50KCkpCi0gICAgICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJl
YWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgV0ku
VUlTdHJpbmcoIkFsbCBFdmVudHMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbExpc3RlbmVyc0JyZWFr
cG9pbnQudmFsdWUpOworICAgICAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJy
ZWFrcG9pbnQoV0kuVUlTdHJpbmcoIkFsbCBFdmVudHMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbExpc3RlbmVyc0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVy
KTsKIAogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRXZl
bnQgQnJlYWtwb2ludFx1MjAyNiIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAgbGV0IHBvcG92
ZXIgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50UG9wb3Zlcih0aGlzKTsKQEAgLTI0MjEsNyArMjQw
Myw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGxldCB3YXNTZWxlY3RlZCA9
IGZhbHNlOwogICAgICAgICBsZXQgb2xkRGVidWdnZXJUcmVlRWxlbWVudCA9IG51bGw7CiAgICAg
ICAgIGxldCBuZXdEZWJ1Z2dlclRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAgaWYgKGRlYnVn
Z2VyT2JqZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCkgeworICAgICAgICBpZiAoZGVidWdn
ZXJPYmplY3QgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgewogICAgICAgICAg
ICAgb2xkRGVidWdnZXJUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUu
ZmluZFRyZWVFbGVtZW50KGRlYnVnZ2VyT2JqZWN0KTsKICAgICAgICAgICAgIGlmIChvbGREZWJ1
Z2dlclRyZWVFbGVtZW50KQogICAgICAgICAgICAgICAgIHdhc1NlbGVjdGVkID0gb2xkRGVidWdn
ZXJUcmVlRWxlbWVudC5zZWxlY3RlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZp
ZXcuanMKaW5kZXggZjkyZGQyYjMxMGU0M2FjZDNkMWE1MzUwZGUyMDQzYmI5YmE3NTE4ZS4uZjdk
MmRlZmY0MTRmODlmMTAzMTgxMWY0OGFlZTU1MTkzMGNiYzI3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNlQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTk4LDcgKzk4LDcgQEAgV0kuVGV4dFJlc291cmNl
Q29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLlJl
c291cmNlQ28KICAgICBnZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzKCkKICAgICB7
CiAgICAgICAgIGxldCBvYmplY3RzID0gV0kuZGVidWdnZXJNYW5hZ2VyLnByb2JlU2V0cy5maWx0
ZXIoZnVuY3Rpb24ocHJvYmVTZXQpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9yZXNvdXJj
ZS5jb250ZW50SWRlbnRpZmllciA9PT0gcHJvYmVTZXQuYnJlYWtwb2ludC5jb250ZW50SWRlbnRp
ZmllcjsKKyAgICAgICAgICAgIHJldHVybiAhKHByb2JlU2V0LmJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgfHwgdGhpcy5fcmVzb3VyY2UuY29udGVudElkZW50
aWZpZXIgPT09IHByb2JlU2V0LmJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXI7CiAgICAgICAg
IH0sIHRoaXMpOwogCiAgICAgICAgIC8vIElmIHRoZSBTb3VyY2VDb2RlVGV4dEVkaXRvciBoYXMg
YW4gZXhlY3V0aW9uTGluZU51bWJlciwgd2UgY2FuIGFzc3VtZQpAQCAtMzE5LDcgKzMxOSw3IEBA
IFdJLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNlQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5SZXNvdXJjZUNvCiAgICAgX3Byb2JlU2V0c0NoYW5nZWQoZXZlbnQpCiAg
ICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LmRhdGEucHJvYmVTZXQuYnJlYWtw
b2ludDsKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNv
ZGUgPT09IHRoaXMucmVzb3VyY2UpCisgICAgICAgIGlmICghKGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgfHwgYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRp
b24uc291cmNlQ29kZSA9PT0gdGhpcy5yZXNvdXJjZSkKICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJl
c2VudGVkT2JqZWN0c0RpZENoYW5nZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQu
Y3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtw
b2ludFRyZWVFbGVtZW50LmNzcwppbmRleCAwZjI0ODk0ZjM4OWM2ODcyMjFlYWFjOWMzNWQ1ZjE3
NTlmZjEzYTVmLi4wMjFkYmVlMDVlMzA4N2JmOTZkYmI0YmMzNjVmNGY0NzllZWM1ODQ1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVh
a3BvaW50VHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTIzLDE2ICsyMywx
NiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS5icmVha3Bv
aW50LnVybCAuc3VidGl0bGUgeworLml0ZW0uYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlIHsKICAg
ICBmb250LWZhbWlseTogTWVubG8sIG1vbm9zcGFjZTsKIH0KIAotLmJyZWFrcG9pbnQudXJsOm5v
dCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC51cmw6
bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29u
cy5zdmcjVVJMQnJlYWtwb2ludC1saWdodCk7CiB9CiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIHsKLSAgICAuYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNl
ZC1pY29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5p
Y29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1VSTEJy
ZWFrcG9pbnQtZGFyayk7CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VS
TEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCAwMjhhNTA2Zjcx
MjViMmU4NDdkYWNmZDUwNThhYjkyNzYwY2QwMjdhLi44ZDI3NmQ0M2M4NjdkODgwNDBjMjE4NDJh
YjY4ZWVmODMwY2JhNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzCkBAIC0yMywxNSArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KICAqLwogCi1XSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBVUkxCcmVha3Bv
aW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKK1dJLlVSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRz
IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQs
IHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtj
bGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5VUkxCcmVha3BvaW50KTsKIAotICAgICAgICBsZXQgY2xh
c3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJ1cmwiXTsKLSAgICAgICAgaWYgKGNsYXNzTmFtZSkK
LSAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc05hbWUpOworICAgICAgICBpZiAoIUFy
cmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gW107Cisg
ICAgICAgIGNsYXNzTmFtZXMucHVzaCgidXJsIik7CiAKICAgICAgICAgbGV0IHN1YnRpdGxlOwog
ICAgICAgICBpZiAoIXRpdGxlKSB7CkBAIC00MiwxMTUgKzQyLDYgQEAgV0kuVVJMQnJlYWtwb2lu
dFRyZWVFbGVtZW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0ku
R2VuZXJhbFQKICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9ICIvIiArIGJyZWFrcG9pbnQudXJs
ICsgIi8iOwogICAgICAgICB9CiAKLSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1
YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRp
bGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRo
aXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFn
ZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2Vw
YXJhdGVseSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBvbmF0dGFj
aCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmF0dGFjaCgpOwotCi0gICAgICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMp
OwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMu
X3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9j
dXNlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1v
dXNlRG93biA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bi5iaW5kKHRoaXMpOwot
Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZl
bnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQp
OwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlz
Ll9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fdXBk
YXRlU3RhdHVzKCk7Ci0gICAgfQotCi0gICAgb25kZXRhY2goKQotICAgIHsKLSAgICAgICAgc3Vw
ZXIub25kZXRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2
ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotCi0gICAgICAgIHRoaXMu
c3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFn
ZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAg
ICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJ
bWFnZUVsZW1lbnRGb2N1c2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFn
ZUVsZW1lbnRNb3VzZURvd24gPSBudWxsOwotICAgIH0KLQotICAgIG9uZGVsZXRlKCkKLSAgICB7
Ci0gICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3
aWxsIHJlbW92ZSB0aGlzCi0gICAgICAgIC8vIEJyZWFrcG9pbnRUcmVlRWxlbWVudCB3aWxsIGtu
b3cgd2hldGhlciBpdCB3YXMgZGVsZXRlZCBmcm9tCi0gICAgICAgIC8vIHdpdGhpbiB0aGUgVHJl
ZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgotICAgICAgICB0
aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwotCi0gICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KHRoaXMucmVwcmVzZW50
ZWRPYmplY3QpOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9uZW50ZXIo
KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbnNwYWNlKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3Rv
Z2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcG9w
dWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpCi0gICAgewotICAgICAgICBsZXQg
YnJlYWtwb2ludCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIGxldCBsYWJlbCA9
IGJyZWFrcG9pbnQuZGlzYWJsZWQgPyBXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSA6
IFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKTsKLSAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShsYWJlbCwgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLQot
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtw
b2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
VVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8g
UHJpdmF0ZQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCi0gICAgewot
ICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0lt
YWdlRWxlbWVudEZvY3VzZWQoZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUg
b3V0bGluZSBmb2N1cy4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQot
Ci0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKLSAgICB7Ci0gICAgICAg
IC8vIFByZXZlbnQgdHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KLSAgICAgICAgZXZlbnQuc3RvcFBy
b3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQotICAgIHsKLSAg
ICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmRpc2FibGVkOwotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQotICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLnN0YXR1cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0
aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0
dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlz
YWJsZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIFdJLmRlYnVn
Z2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBzdXBlcihicmVha3BvaW50
LCB7Y2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlfSk7CiAgICAgfQogfTsKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBmYjdm
NTJiM2JhYmFjODA2ODJmNDEwYzg3ZTllZjFkN2NjYzAwMmJlLi5hMjc1YTdjY2JmZDJiZjgyNzNh
ZThjZDQ3MGI4MDhlMjdkYzUxZTRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDUgQEAKKzIwMjAtMDgtMTEg
IERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IGFsbG93IGV2ZW50IGJyZWFrcG9pbnRzIHRvIGJlIGNvbmZpZ3VyZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM2MgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9yZXNvdXJjZXMvZXZlbnQtYnJlYWtwb2ludC11dGlsaXRpZXMuanM6CisgICAgICAgIChU
ZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmFkZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2VzKTogQWRkZWQuCisgICAgICAgIChUZXN0UGFn
ZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFzeW5j
IHRlYXJkb3duKToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludCk6CisgICAgICAgIChUZXN0
UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJl
bW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3It
ZXZlbnQtbGlzdGVuZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQt
Zm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9p
bnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50
LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
dGltZW91dC1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdn
ZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgIEFkZCB0
ZXN0cyBmb3IgbmV3IGV2ZW50IGJyZWFrcG9pbnQgY29uZmlndXJhdGlvbiBvcHRpb25zLgorCisg
ICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qczoK
KyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5zdGFy
dFRyYWNpbmdCcmVha3BvaW50cyk6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3Byb2JlLXRlc3QuanM6CisgICAgICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxp
emVyLlByb3RvY29sVGVzdC5Qcm9iZS5pbnN0YWxsVHJhY2luZ0xpc3RlbmVycyk6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWw6CisgICAgICAgICog
aW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWw6CisgICAgICAg
ICogaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9D
b250aW51ZS1icmVha3BvaW50Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Rh
aWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci90YWlsLXJlY3Vyc2lvbi5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci93b3JrZXIv
ZGVidWdnZXItcGF1c2UuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2Vy
LXNoYXJlZC1icmVha3BvaW50Lmh0bWw6CisgICAgICAgIFVwZGF0ZSBleGlzdGluZyBicmVha3Bv
aW50IHRlc3RzIHRvIHVzZSBuZXcgbW9kZWwgb2JqZWN0cy4KKwogMjAyMC0wOC0xMCAgTXlsZXMg
Qy4gTWF4ZmllbGQgIDxtbWF4ZmllbGRAYXBwbGUuY29tPgogCiAgICAgICAgIFtCaWdTdXJdIDUg
ZmFzdC90ZXh0L2ludGVybmF0aW9uYWwvc3lzdGVtLWxhbmd1YWdlL25hdmlnYXRvci1sYW5ndWFn
ZS9uYXZpZ2F0b3ItbGFuZ3VhZ2UgdGVzdHMgYXJlIGNvbnN0YW50IGZhaWx1cmVzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdn
ZXItdGVzdC5qcwppbmRleCA0NmFhN2MzNDljYWU1MDAwMWU5NTc5MTljYjAwMDZlMzJkOGY5M2Yz
Li4yZTI3MjMzYzE1OWQ2NGZjOTg1ZTUyOGU5OGU5ZjRkMDJhY2NiYmI3IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0Lmpz
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2Vy
LXRlc3QuanMKQEAgLTEzLDM3ICsxMywzNyBAQCBJbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0Jy
ZWFrcG9pbnRzID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtw
b2ludCB3YXMgcmVtb3ZlZC4iKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9u
KGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAg
ICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVu
ZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0
IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgZGlzYWJs
ZWQgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuZGlzYWJsZWQpOwogICAgIH0pOwogCi0g
ICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVz
b2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50
LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBi
cmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlZDogIiArIGJy
ZWFrcG9pbnQucmVzb2x2ZWQpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5j
dGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2
ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhw
ZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQg
aW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5
cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgYXV0b2NvbnRp
bnVlIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmF1dG9Db250aW51ZSk7CiAgICAgfSk7
CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVu
dC5Db25kaXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlv
bkRpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQnJlYWtwb2ludCBjb25kaXRpb24gY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuY29uZGl0aW9u
KTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVh
a3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3Bv
aW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGlu
c3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkJyZWFrcG9pbnQgYWN0aW9ucyBjaGFuZ2VkLiBOZXcgY291bnQ6ICIgKyBicmVh
a3BvaW50LmFjdGlvbnMubGVuZ3RoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzIGIvTGF5b3V0VGVz
dHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKaW5kZXggNzY5
YWU0YWYwNDQwYzRmMTNmMzY1YjE3Y2EwYmI1MDI2ZDBmYzM5Ni4uMTFlZWQyZTU4MWI2YTcwMGFk
N2ZhYzYwYmVhNTcxYzU0MjRlODliMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKQEAgLTYwLDM3ICs2MCwz
NyBAQCBQcm90b2NvbFRlc3QuUHJvYmUuaW5zdGFsbFRyYWNpbmdMaXN0ZW5lcnMgPSBmdW5jdGlv
bigpCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IHdhcyByZW1vdmVkLiIp
OwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFr
cG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAg
ICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQu
RXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlw
ZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkOiAi
ICsgYnJlYWtwb2ludC5kaXNhYmxlZCk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
LCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50
YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5C
cmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5l
eHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJl
YWtwb2ludCByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5yZXNvbHZlZCk7
CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2
ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFr
cG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEi
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBhdXRvY29udGludWUgc3RhdGUgY2hhbmdlZDog
IiArIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5n
ZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCBmdW5jdGlv
bihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJV
bmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVj
dCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGNvbmRp
dGlvbiBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgIH0pOwogCi0gICAg
V0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9u
c0RpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwg
ZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3Bv
aW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
YnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3Rl
ZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2lu
dCBhY3Rpb25zIGNoYW5nZWQuIE5ldyBjb3VudDogIiArIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5n
dGgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwKaW5kZXggNTU2MmUyYjMzZjZlNjNmNmY3
MTYyMTNhMTVhMzE1OGEzODdiMDkwNC4uZDU1NDdiY2M2NzBhNzE5OTI2MTE1MmJlNzUxNDcwZGMy
OTM4MDQwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtYWN0aW9uLWV2YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sCkBAIC0yOCw5ICsyOCw5IEBAIGZ1bmN0aW9u
IHRlc3QoKQogCiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3Vy
Y2VDb2RlTG9jYXRpb24oNCwgMCk7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYnJlYWtwb2ludCBh
bmQgaXRzIGFjdGlvbnMgYmVmb3JlIHNlbmRpbmcgYW55dGhpbmcgdG8gdGhlIGJhY2tlbmQuCi0g
ICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlv
bik7CiAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICAgICAgYnJl
YWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCBu
dWxsLCAiYWN0aW9uKGEsIGIpIik7CisgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJ
LkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6ICJhY3Rpb24oYSwgYikifSk7
CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1sb2cuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LWFjdGlvbi1sb2cuaHRtbAppbmRleCBiN2NjMjNkYzM4NTVmNmZmNzc4MGJmZjZlNzg5NmY5
NmRlNDQ4N2VlLi5lZTA5NTVhNWI2M2I1YTY0NDA3MWYyZDU3MmE1M2RmYTQ3MWViMWRkIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24t
bG9nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQt
YWN0aW9uLWxvZy5odG1sCkBAIC0yNCwxMSArMjQsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9
IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7Ci0gICAgICAgICAg
ICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAg
ICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQo
bG9jYXRpb24pOwogICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1
ZTsKIAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkZExvZ0FjdGlvbihkYXRhKSB7Ci0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rp
b24uVHlwZS5Mb2csIGJyZWFrcG9pbnQuYWN0aW9ucy5sYXN0VmFsdWUsIGRhdGEpOworICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9u
LlR5cGUuTG9nLCB7ZGF0YX0pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAg
IGFkZExvZ0FjdGlvbigiYCR7YX1gIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWwKaW5kZXggZDAyZThlM2I5ZmMxNGU3
MDgzZGU5ZWE3MTk4ZGVjYmY4NzFjYWVjOS4uMTQxNzQ4NTg0M2Y3OGZmMWI4YWY3MTNkN2ZmZDJi
YTY1MmI0ZjYyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2Jy
ZWFrcG9pbnQtY29sdW1ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9icmVha3BvaW50LWNvbHVtbnMuaHRtbApAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgdmFyIHRlc3RJbmZvID0gdGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhd
OwogICAgICAgICAKICAgICAgICAgdmFyIGxvY2F0aW9uID0gY3VycmVudFNjcmlwdHNbdGVzdElu
Zm8uc2NyaXB0SW5kZXhdLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0
ZXN0SW5mby5jb2x1bW4pOwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3Bv
aW50KGxvY2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQobG9jYXRpb24pOwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbAppbmRleCAyNDExNDQ2MDhkODg1OTE1Yjk2
NWJjOTExMGQyNGM0NDRmZjI0MTQ1Li5mMGFjYzFhNDI0NGFhZjMxY2NkZDAwOTYxNmJiY2UzMWMz
Y2Y2N2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludC1zY29wZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50LXNjb3BlLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICAgICAgdmFyIHRlc3RJbmZvID0gdGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhdOwogICAg
ICAgICB2YXIgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9u
KHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIHZhciBicmVha3BvaW50
ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAKICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UodGVzdEluZm8uc3RhcnRGdW5jKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93
Lmh0bWwKaW5kZXggNGQ5NTdjODA5MjczN2ExZmYyNGIxZDNhNzViMjRjYzExOWRhYjFjZi4uMmM3
ZjdkYTY0NGQ1YzUxMmEwZTQ1NzMwM2Q1MWEwZmM2NWZkMzExYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93
Lmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIDAgYmFz
ZWQgaW5kaWNlcy4KICAgICAgICAgbGV0IHRlc3RJbmZvID0ge2xpbmU6IDgsIGNvbHVtbjogOH07
CiAgICAgICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9j
YXRpb24odGVzdEluZm8ubGluZSwgdGVzdEluZm8uY29sdW1uKTsKLSAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3Bv
aW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInN0YXJ0KCkiKTsKICAgICB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwKaW5kZXggYWNjMTk1M2I2
MzIzMzNiZWYzMWI5NWNmZTA4YmRkMzBjZDVhOWZiYy4uYTZhZmQ0NDRlOGZhMWUzZDQ0NmRlN2Vk
MDE1MWI5OWU3OWI2NGQyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLXJlYXNvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wYXVzZS1yZWFzb24uaHRtbApAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgaWYgKCEvcGF1c2UtcmVhc29uc1wuanMkLy50ZXN0KHNjcmlwdC51cmwpKQogICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIGxldCBzb3VyY2VDb2RlTG9jYXRpb24gPSBzY3JpcHQu
Y3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDMsIDApOwotICAgICAgICBsZXQgYnJlYWtwb2ludCA9
IG5ldyBXSS5CcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGxldCBicmVh
a3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7
CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwog
ICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcHJvYmUtbWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5o
dG1sCmluZGV4IGJmNGFhZjIxYzIyNjllNmMzMTFiNGUzMWYzMTdlN2E5YTE4ZWVjYmIuLmY1NmEz
NmIzNjNiMjg4NDA2Yjc3ZTk0NDQyZjJiNTM4MjM5Mjc0ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFk
ZC1yZW1vdmUtYWN0aW9ucy5odG1sCkBAIC0zMywxNCArMzMsMTQgQEAgZnVuY3Rpb24gdGVzdCgp
CiAKICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb24oNCwgMCk7CiAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGJyZWFrcG9pbnQg
YW5kIGl0cyBhY3Rpb25zIGJlZm9yZSBzZW5kaW5nIGFueXRoaW5nIHRvIHRoZSBiYWNrZW5kLgot
ICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7
CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dChsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7
CiAgICAgICAgICAgICBmb3IgKHZhciBpIG9mIFswLCAxXSkKLSAgICAgICAgICAgICAgICBicmVh
a3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGws
ICJhIik7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtw
b2ludEFjdGlvbi5UeXBlLlByb2JlLCB7ZGF0YTogImEifSk7CiAKICAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBi
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlk
Q2hhbmdlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVj
dFRoYXQoYnJlYWtwb2ludC5yZXNvbHZlZCwgIkJyZWFrcG9pbnQgc2hvdWxkIGJlIHJlc29sdmVk
LiIpOwogICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3Bv
aW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBp
bmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1sCmluZGV4IGExNzI1Y2ZiZjlh
NTAyNjgyZDBmZjZkZGQwNjFjMDZiMzg5MDFkYzkuLmZmZmFlMGUyOTk4MTg3MTYyYzRhNDg5ZDcy
MDkyNjQ2YzJhOWJhYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRo
cm91Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRtbApAQCAtMjQsOSArMjQsOSBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIFNldCBhdXRvQ29udGludWUgYnJlYWtwb2ludC4K
ICAgICAgICAgICAgIGxldCBzY3JpcHQgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFp
blJlc291cmNlLnNjcmlwdHNbMF07CiAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBzY3JpcHQu
Y3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDgsIDApOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAg
ICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7Ci0gICAgICAgICAgICBicmVha3BvaW50
LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIG51bGwsICJh
bGVydCgxLjUpOyIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogImFsZXJ0KDEuNSk7In0pOwogICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAK
ICAgICAgICAgICAgIC8vIFN0ZXAgdGhyb3VnaCB0aGUgYnJlYWtwb2ludC4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMt
dmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQt
ZnJhbWVzLXRoaXMtdmFsdWUuaHRtbAppbmRleCAzOTc1OWRjYjY1NGFjYjAwMmYxZGE5MTAzMTQ2
OWY4OTMxYTRiOWM4Li5jNzJiYmNlMmI2MWMyOTgyZTk3MjVmZTkzNDYyMzQzNzYyZTc3ODBkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZy
YW1lcy10aGlzLXZhbHVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyAwIGJhc2VkIGluZGljZXMuCiAgICAgICAgIGxldCB0
ZXN0SW5mbyA9IHtsaW5lOiAzLCBjb2x1bW46IDR9OwogICAgICAgICBsZXQgbG9jYXRpb24gPSBz
Y3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJ
bmZvLmNvbHVtbik7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQo
bG9jYXRpb24pOworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3Bv
aW50KGJyZWFrcG9pbnQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJz
dGFydEFCQygpIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvdGFpbC1yZWN1cnNpb24uaHRtbAppbmRleCA4Y2JhYmExYWQyZWMzZDczY2IyNjMwODk4YTFl
ZWFiMTE3NTNhMmQwLi42NWIwY2M2MWFlMzgxMThiNmE3MDZkYTM4MTMxMDZhNzAyYjQ0MDU4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24u
aHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24u
aHRtbApAQCAtMjQsNyArMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIHRlc3RJ
bmZvcyA9IFt7bGluZSA6IDMsIGNvbHVtbiA6IDh9LCB7bGluZSA6IDQsIGNvbHVtbiA6IDh9XTsK
ICAgICAgICAgZm9yIChsZXQgdGVzdEluZm8gb2YgdGVzdEluZm9zKSB7CiAgICAgICAgICAgICBs
ZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJ
bmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9
IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50
ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICB9CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInN0YXJ0UmVjdXJzZSgpIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1h
dGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3Rl
ZC50eHQKaW5kZXggOTBiMjZhNzdiZDU1NjY5NWYxYjAxZmYxNzI5ZDY1YTVkZjI4YzcxYy4uZjll
ZjA0Zjc5ZDZjYjgzZDg5YWExNWQyOGI0NWE4NWFhM2VkMWQ4NiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMSw4
ICsxLDEzIEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05T
T0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJS
RUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9O
IExPRyA0CiBUZXN0cyBmb3IgRXZlbnQgQW5pbWF0aW9uRnJhbWUgYnJlYWtwb2ludHMuCiAKIAog
PT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZQog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLkFk
ZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcg
InJlcXVlc3RBbmltYXRpb25GcmFtZSIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1c2Ug
YmVmb3JlIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBDQUxM
IFNUQUNLOgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuQWRkRGlzYWJsZWRCcmVha3BvaW50
CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcg
ImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJhbmltYXRp
b24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAicmVxdWVzdEFuaW1hdGlvbkZy
YW1lIiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLlJl
bW92ZUJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9p
bnQuLi4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1v
dmluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInJlcXVl
c3RBbmltYXRpb25GcmFtZSIgb24gd2luZG93Li4uCkBAIC0yOSw2ICszNiw3IEBAIFBBU1M6IFNo
b3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1h
dGlvbkZyYW1lLlJlbW92ZURpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlvbi1m
cmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3Bv
aW50Li4uCiBSZW1vdmluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCkBA
IC0zNiwzICs0NCwxMDMgQEAgRmlyaW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9uIHdpbmRv
dy4uLgogUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3Bv
aW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0
aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0
aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdm
YWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5PcHRpb25zLkln
bm9yZUNvdW50CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4u
CitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5n
IGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
cGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVi
dWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5BY3Rpb24uTG9nCitDcmVhdGluZyAi
YW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1m
cmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFi
bGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5PcHRpb25zLkFjdGlvbnMuRXZhbHVh
dGUKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGlu
ZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFsdWF0
ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBl
dmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRp
dGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0
IHRlYXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMu
aHRtbAppbmRleCBmMGJhNDdiNDYyNTI1ZTI5ZWVlMDZkN2YxMmZhNTI3OTNjYTM0MDcxLi5mZmFl
ZjhiNGU0NzM0Zjg3MzhhOWJkOGJhOTA4MGIwNzM1ZjkzNTFkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3Bv
aW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
YW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTQ1LDcgKzQ1LDcgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsK
IAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2lu
dChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQo
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVu
dE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgIH0sCkBAIC01OCw3
ICs1OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVz
ZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5BbmltYXRp
b25GcmFtZSwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtw
b2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRk
QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJy
ZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAg
ICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2lu
dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0
RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsK
QEAgLTcyLDcgKzcyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZh
aWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29u
LkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVk
IGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1l
c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5j
cmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQog
ICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJl
YWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVq
ZWN0KTsKQEAgLTg2LDcgKzg2LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChy
ZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNl
UmVhc29uLkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciBy
ZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFu
aW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1l
KSkKQEAgLTk1LDYgKzk1LDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246
IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAg
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2Fz
ZXMoc3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCBldmVudE5h
bWUpOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50
ZXJ2YWwtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXgg
NWVjNDgwYTc4YjVkODNiY2Q3MGVhYjczYTk3YTIwZGZkZWI4MzY4ZC4uYWNiNzA5ZmYwZjgyYWQ4
MGY1Zjc1YTQ1NDcwNDI4MzdkZTdlM2EwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1i
cmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAotVGVzdHMgZm9yIEV2ZW50
IFRpbWVyIGJyZWFrcG9pbnRzLgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBM
T0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBN
RVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgNAorVGVzdHMgZm9yIEV2ZW50IEludGVydmFsIGJyZWFrcG9pbnRzLgog
CiAKLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIKKz09IFJ1
bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwKIC0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5BZGRCcmVha3BvaW50CitDcmVh
dGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2
ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0SW50ZXJ2YWwiIG9uIHdpbmRvdy4uLgogUEFT
UzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAgLTE1LDYgKzIw
LDcgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLkFkZERpc2FibGVk
QnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRp
bmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgImludGVydmFsIiBF
dmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KQEAg
LTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtw
b2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLlJlbW92ZUJyZWFrcG9pbnQKK0NyZWF0aW5nICJp
bnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJl
YWtwb2ludC4uLgogUmVtb3ZpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJp
bmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KQEAgLTI5LDYgKzM2LDcgQEAgUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2
YWwuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2Fi
bGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJpbnRlcnZhbCIg
RXZlbnQgQnJlYWtwb2ludC4uLgpAQCAtMzcsNiArNDUsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBh
dXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVh
cmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZh
bC5SZXBlYXRGaXJlQnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3Bv
aW50Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNl
dEludGVydmFsIiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQg
aGFuZGxlciBpcyBydW4uCkBAIC01NSwzICs2NCwxMDMgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIDM6
IFtQXSBHbG9iYWwgQ29kZQogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5Db25kaXRpb24K
K0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZh
bCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0
aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3Jl
YXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImludGVydmFsIiBF
dmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5PcHRpb25z
LkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRk
aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24u
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9u
Li4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5PcHRpb25zLkFjdGlvbnMuRXZh
bHVhdGUKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJp
bnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0
aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVh
dGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4K
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1p
bnRlcnZhbC1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1sCmluZGV4IGIzYjJhZmZlODY0ZmMw
Mjc5YWE4ODllMjY0ZTgzYjdjMWM4OGM0NjQuLjAyODRiZGEyOWFlYmI4Yzc4MmE0NTE1ZDVmNzU5
ZWFkMDNiODI5YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTks
MjAgKzksMjAgQEAKIGxldCBpbnRlcnZhbElEID0gTmFOOwogCiBmdW5jdGlvbiBoYW5kbGVXaW5k
b3dfc2V0SW50ZXJ2YWwoKSB7Ci0gICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQo
IlRlc3RQYWdlLXNldEludGVydmFsIik7Ci0KICAgICByZXBlYXRDbGVhckludGVydmFsKCk7CisK
KyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2Utc2V0SW50ZXJ2
YWwiKTsKIH0KIAogZnVuY3Rpb24gaGFuZGxlUmVwZWF0KCkgewogfQogCiBmdW5jdGlvbiB0cmln
Z2VyX3NldEludGVydmFsKCkgewotICAgIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChoYW5kbGVX
aW5kb3dfc2V0SW50ZXJ2YWwsIDEwMCk7CisgICAgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGhh
bmRsZVdpbmRvd19zZXRJbnRlcnZhbCwgMTApOwogfQogCiBmdW5jdGlvbiByZXBlYXRTZXRJbnRl
cnZhbCgpIHsKLSAgICBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoaGFuZGxlUmVwZWF0LCAxMDAp
OworICAgIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChoYW5kbGVSZXBlYXQsIDEwKTsKIH0KIAog
ZnVuY3Rpb24gcmVwZWF0Q2xlYXJJbnRlcnZhbCgpIHsKQEAgLTMzLDcgKzMzLDcgQEAgZnVuY3Rp
b24gcmVwZWF0Q2xlYXJJbnRlcnZhbCgpIHsKIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgY29uc3Qg
ZXZlbnROYW1lID0gInNldEludGVydmFsIjsKIAotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRl
c3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NRGVidWdnZXIuRXZlbnQuVGltZXIiKTsKKyAgICBsZXQg
c3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTURlYnVnZ2VyLkV2ZW50
LkludGVydmFsIik7CiAKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6IGBE
T01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5BZGRCcmVha3BvaW50YCwKQEAgLTYxLDcgKzYxLDcg
QEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAg
ICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRk
QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5h
bWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgIH0sCkBAIC03NCw3ICs3
NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShy
ZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5JbnRlcnZhbCwg
ZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsK
IAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2lu
dChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVu
KEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50
TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg4LDcgKzg4LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJl
amVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkludGVydmFsLCBldmVudE5hbWUs
ICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2lu
dC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAg
ICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5E
ZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uSW50ZXJ2YWwsIGV2ZW50TmFtZSwgIlNob3VsZCBu
b3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5h
bWUpKQpAQCAtMTM0LDcgKzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFs
c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5j
cmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAg
ICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJG
aXJpbmcgXCJzZXRJbnRlcnZhbFwiIG9uIHdpbmRvdy4uLiIpOwogICAgICAgICAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBlYXRTZXRJbnRlcnZhbCgpYCk7
CkBAIC0xNDQsMTEgKzE0NCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZWFyZG93
bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7CiAKKyAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RD
YXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwsIGV2ZW50TmFtZSk7
CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0PgogPC9o
ZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3RzIGZvciBFdmVudCBU
aW1lciBicmVha3BvaW50cy48L3A+CisgICAgPHA+VGVzdHMgZm9yIEV2ZW50IEludGVydmFsIGJy
ZWFrcG9pbnRzLjwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5l
ci1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggNzgxYjdjZDJkZDBhNTgwZWU5OTQ1Mzc5
ZTQzYWI2OGFjM2E1MGEyYS4uYTllZjhmZjhhZGZjZmFiNDA1MjM4YjVlNDFhNGUwMDA0OTUzZTVj
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1s
aXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQK
QEAgLTEsMyArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAx
CitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NB
R0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQg
QUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRXZlbnQgTGlzdGVuZXIgYnJlYWtwb2ludHMuCiAKIApA
QCAtNzUsNiArNzksNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2Fi
bGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5BbGxFdmVudHNCcmVha3BvaW50
CitDcmVhdGluZyAibGlzdGVuZXIiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAibGlzdGVu
ZXIiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAiY2xpY2siIG9uIGJvZHkuLi4KIFBBU1M6
IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC0xMjEsMyArMTI2
LDEwMyBAQCBEaXNhYmxpbmcgYnJlYWtwb2ludHMuLi4KIFBBU1M6IFNob3VsZCBoYXZlIHBhdXNl
ZCBvbmNlLgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NRGVidWdnZXIuRXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5n
ICJjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZl
bnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNv
bmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NRGVidWdnZXIuRXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcg
ImNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVu
dCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkFj
dGlvbi5Mb2cKK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJs
aXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24u
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9u
Li4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZh
bHVhdGUKK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0
ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9u
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUg
YWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZh
bHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVu
dC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sCmluZGV4IGZiYjQ5ODA4ZWZl
OTc4Y2I1NWQ0NjE0MzllZTBlYmI4ZGE3YmI1NzEuLjY3NDYxNmE4NTg4ZDNlNDkyMzZiNDM5NTNh
MGJhYWQ0OGIzZDhjZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwKQEAg
LTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lciwgZXZlbnROYW1lKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
TGlzdGVuZXIsIHtldmVudE5hbWV9KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQogICAgICAg
ICAgICAgICAgIC5jYXRjaChyZWplY3QpOwogICAgICAgICAgICAgfSwKQEAgLTcxLDcgKzcxLDcg
QEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1
c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVu
ZXIsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQu
Iik7CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUp
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJl
YWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAg
ICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJs
ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuYXdhaXRFdmVudCgiYm9keSIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAgICAg
LmNhdGNoKHJlamVjdCk7CkBAIC04NSw3ICs4NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAg
ICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVi
dWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBldmVudE5hbWUsICJTaG91bGQgbm90
IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtw
b2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAg
ICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJib2R5Iiwg
ZXZlbnROYW1lKSkKICAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTk5LDcgKzk5
LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9u
UGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlz
dGVuZXIsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQg
YnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIs
IGV2ZW50TmFtZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7ZXZl
bnROYW1lfSkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgICAgIC50
aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVu
dE5hbWUpKQpAQCAtMTI4LDcgKzEyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAg
ICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
TGlzdGVuZXIpCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gYm9keS4uLiIpOwogICAgICAgICAg
ICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyX2NsaWNr
KClgKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5U
eXBlLkxpc3RlbmVyLCAiY2xpY2siKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5l
ciwge2V2ZW50TmFtZTogImNsaWNrIn0pCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gZGl2I3gu
Li4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgY2xpY2tYKClgKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAg
ICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgICAgICB9KTsKIAot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgImNsaWNrIikKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRC
cmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWU6ICJjbGljayJ9KQogICAgICAgICAg
ICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGaXJp
bmcgXCJjbGlja1wiIG9uIGRpdiN4Li4uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrWCgpYCk7CkBAIC0yMjEsNiArMjIxLDggQEAg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkxpc3RlbmVyLCAiY2xpY2siKTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNl
c0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFr
cG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCBjYTVkMDEwZGVlYzlhYTQ5Y2JiYjQxYjRlNGVhM2Zj
YjQ4ZDNhN2RiLi45YTZiZjhhZDFiMmFhNzk2MjliODYzZGU3ZTNkNGRmYjUxODgzMzJjIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQt
YnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCAr
MSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09M
RSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVB
S1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBM
T0cgNAogVGVzdHMgZm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRzLgogCiAKID09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIKIC0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01EZWJ1Z2dlci5FdmVudC5UaW1lb3V0LkFkZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1l
b3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9p
bnQuLi4KIEZpcmluZyAic2V0VGltZW91dCIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1
c2UgYmVmb3JlIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBD
QUxMIFNUQUNLOgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZW91dC5BZGREaXNhYmxlZEJyZWFrcG9pbnQKK0Ny
ZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2
ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4u
LgogRmlyaW5nICJzZXRUaW1lb3V0IiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFT
UzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50
LlRpbWVvdXQuUmVtb3ZlQnJlYWtwb2ludAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIEFkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3Zpbmcg
InRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0VGltZW91dCIgb24gd2lu
ZG93Li4uCkBAIC0yOSw2ICszNiw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92
ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuUmVtb3ZlRGlzYWJsZWRCcmVha3Bv
aW50CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJ0aW1l
b3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIFJlbW92aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCkBAIC0zNiwz
ICs0NCwxMDMgQEAgRmlyaW5nICJzZXRUaW1lb3V0IiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3Vs
ZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50
LlRpbWVyLk9wdGlvbnMuQ29uZGl0aW9uCitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcg
Y29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRp
b25zLklnbm9yZUNvdW50CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgor
QWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291
bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5n
IHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVu
dC5UaW1lci5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVh
a3BvaW50Li4uCitBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworQWRkaW5n
IGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGlu
ZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRp
bmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5B
Y3Rpb25zLkV2YWx1YXRlCitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgor
QWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFsdWF0ZSBh
Y3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFs
dWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGlu
ZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlv
bi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCmluZGV4IGE0MWVjZDY5
ZWNiN2QxMzg0ZDA3N2I5NTBjYzEwMDU3YWU0MTAwOTEuLjZhMzQ5YTRiNzcyMzVlOWJiMTg4YzRj
MWExY2I4YjNhNzNhNDIxYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCkBA
IC0xMSw3ICsxMSw3IEBAIGZ1bmN0aW9uIGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0KCkgewogfQog
CiBmdW5jdGlvbiB0cmlnZ2VyX3NldFRpbWVvdXQoKSB7Ci0gICAgc2V0VGltZW91dChoYW5kbGVX
aW5kb3dfc2V0VGltZW91dCwgMTAwKTsKKyAgICBzZXRUaW1lb3V0KGhhbmRsZVdpbmRvd19zZXRU
aW1lb3V0LCAxMCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CkBAIC00NSw3ICs0NSw3IEBAIGZ1
bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAg
fSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFr
cG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAg
ICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKICAgICAgICAgfSwKQEAgLTU4LDcgKzU4LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUs
IHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLlRpbWVvdXQsIGV2ZW50TmFt
ZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAg
ICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5E
ZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uVGltZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5v
dCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVv
dXQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1v
dmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRj
aChyZWplY3QpOwpAQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIu
UGF1c2VSZWFzb24uVGltZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVt
b3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxU
aW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpCiAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJl
YWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtOTUsNiArOTUs
OCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuVGltZW91dCwgZXZlbnROYW1lKTsKKwogICAgIHN1aXRlLnJ1blRl
c3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVudC1icmVha3BvaW50LXV0aWxp
dGllcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2
ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCmluZGV4IDE5YjI1ZDFhZGQyMGIyZjVlMGExYjJm
N2Q4MzMyOGZmYmJlMTZkYzYuLmU0MDEzYTgxYmNlNGQzZDRlYTUzMmFlZjMxZDM2MTdhYjUyNzRh
NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3Vy
Y2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpz
CkBAIC0xLDE0ICsxLDE5OSBAQAogVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7
CiAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQgPSB7fTsKIAorICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2VzID0gZnVu
Y3Rpb24oc3VpdGUsIHR5cGUsIGV2ZW50TmFtZSkgeworICAgICAgICBhc3luYyBmdW5jdGlvbiB0
cmlnZ2VyQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChb
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS0iICsg
ZXZlbnROYW1lKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdl
KGB0cmlnZ2VyXyR7ZXZlbnROYW1lfSgpYCksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfQor
CisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5h
bWUgKyAiLk9wdGlvbnMuQ29uZGl0aW9uIiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hl
Y2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50
IGhhcyBhIHRydXRoeSBicmVha3BvaW50IGNvbmRpdGlvbi4iLAorICAgICAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAg
ICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNy
ZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLiIpOworICAgICAgICAgICAgICAgIGJy
ZWFrcG9pbnQuY29uZGl0aW9uID0gImZhbHNlIjsKKworICAgICAgICAgICAgICAgIGZvciAobGV0
IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykg
eworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlv
biB0byAndHJ1ZScuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29u
ZGl0aW9uID0gInRydWUiOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYXdh
aXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAy
KQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxz
ZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJk
b3duLAorICAgICAgICB9KTsKKworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
ICAgICBuYW1lOiBzdWl0ZS5uYW1lICsgIi5PcHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2Ug
dW5sZXNzIHRoZSBicmVha3BvaW50IGlzIGhpdCBhdCBsZWFzdCBhcyBtYW55IHRpbWVzIGFzIGl0
J3MgYGlnbm9yZUNvdW50YC4iLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVu
ZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVz
ZUNvdW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7
CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9
IGF3YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlw
ZSwge2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5l
KCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBpZ25vcmVD
b3VudCB0byAnMicuLi4iKTsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50
ID0gMjsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAg
ICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC50ZWFyZG93biwKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENh
c2UoeworICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb24uTG9n
IiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBh
Y3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAg
IGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisg
ICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7Cisg
ICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkFkZGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IGFj
dGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5M
b2csIHtkYXRhOiAiQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEifSk7CisKKyAgICAgICAgICAgICAg
ICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYg
KGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUo
KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcg
bG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBg
QlJFQUtQT0lOVCBBQ1RJT04gTE9HICR7aX1gOworCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IFttZXNzYWdl
QWRkZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgICAg
ICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1l
c3NhZ2VBZGRlZCksCisgICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCgp
LAorICAgICAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKG1lc3NhZ2VBZGRlZEV2ZW50LmRhdGEubWVzc2FnZS5tZXNzYWdl
VGV4dCwgYWN0aW9uLmRhdGEsICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsK
KworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxkIHBhdXNl
LiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIsICJTaG91bGQgbm90IHBhdXNl
LiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IGxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB0ZWFyZG93bjogSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgICAgIH0pOworCisgICAgICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9w
dGlvbnMuQWN0aW9ucy5FdmFsdWF0ZSIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNr
IHRoYXQgZXZhbHVhdGUgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtw
b2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAg
ICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3Vu
dDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAg
ICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2Fp
dCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtl
dmVudE5hbWV9KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJlYWtwb2ludC5jcmVhdGVB
Y3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5C
UkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURSA9IDE7In0pOworCisgICAgICAgICAgICAgICAgZm9y
IChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID4g
MSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFZGl0aW5nIGV2YWx1
YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBg
d2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gJHtpfTtgOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBsZXQg
YnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZShgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFYCk7CisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludEFjdGlvbkV2
YWx1YXRlUmVzdWx0LCBpLCAiU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4i
KTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4i
KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBs
aXN0ZW5lcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKyAgICB9OworCiAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24gPSBmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludCk7Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9p
bnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpOwotICAgICAg
ICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKLSAgICAgICAgV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
VGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ/LnJlbW92ZSgpOworICAgICAgICBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludD8ucmVtb3ZlKCk7CisgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50Py5yZW1vdmUoKTsKKyAgICAg
ICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludD8ucmVtb3ZlKCk7
CiAKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
bGlzdGVuZXJCcmVha3BvaW50cykKLSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICBicmVha3BvaW50
LnJlbW92ZSgpOwogCiAgICAgICAgIHJlc29sdmUoKTsKICAgICB9OwpAQCAtNDIsOCArMjI3LDEx
IEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICB9KTsKICAg
ICB9OwogCi0gICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2lu
dCA9IGZ1bmN0aW9uKHR5cGUsIGV2ZW50TmFtZSkgewotICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhgQ3JlYXRpbmcgIiR7ZXZlbnROYW1lfSIgRXZlbnQgQnJlYWtwb2ludC4uLmApOworICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQgPSBmdW5jdGlvbih0
eXBlLCB7ZXZlbnROYW1lfSA9IHt9KSB7CisgICAgICAgIGlmICh0eXBlICE9PSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcikKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9IG51bGw7CisK
KyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYENyZWF0aW5nICIke2V2ZW50TmFtZSB8fCB0eXBl
fSIgRXZlbnQgQnJlYWtwb2ludC4uLmApOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChuZXcgV0kuRXZlbnRCcmVha3BvaW50KHR5cGUs
IHtldmVudE5hbWV9KSk7CiAgICAgfTsKIApAQCAtNzQsNyArMjYyLDcgQEAgVGVzdFBhZ2UucmVn
aXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZShicmVha3Bv
aW50KTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgYnJlYWtw
b2ludC5yZW1vdmUoKTsKICAgICAgICAgfSk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxp
c3RlbmVyLWV4cGVjdGVkLnR4dAppbmRleCA3NmE4NjQ0OGJjOWUxNzNmMzZkNmQ3Y2YzMDRmMGNl
NzcwNmFhNTBmLi41OGY5NTYyMmNlY2RjZTA0MjAzYjY4N2NkYzg0OTM1MmIxYzA2NWMxIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxp
c3RlbmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFr
cG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDcgQEAKK0NP
TlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTog
QlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3Rp
bmcgRE9NQWdlbnQuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIgYW5kIERPTUFnZW50LnJl
bW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLgogCiAgIApAQCAtMTksNiArMjMsOTQgQEAg
UEFTUzogU2hvdWxkIG5vdCBwYXVzZSBiZWZvcmUgYnV0dG9uMiBldmVudCBoYW5kbGVyIGlzIHJ1
bi4KIENsaWNraW5nIGJ1dHRvbjEuLi4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgYmVmb3JlIGJ1
dHRvbjEgZXZlbnQgaGFuZGxlciBpcyBydW4uCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00u
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5Db25kaXRpb24KKworU2V0dGlu
ZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLklnbm9yZUNvdW50
CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIuT3B0aW9ucy5BY3Rpb24uTG9nCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2lu
dCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4K
K0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKKworQWRkaW5nIGV2YWx1YXRl
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2
YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0
aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24u
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKIC0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZAogUEFTUzog
U2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCiBFcnJvcjogTWlzc2luZyBldmVudCBsaXN0ZW5lciBm
b3IgZ2l2ZW4gZXZlbnRMaXN0ZW5lcklkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKaW5kZXggMGQy
ZmVhNWFhNTJkNDU0NGExMWYyNDY4MTA1Y2U0ODM3ZmI0MzZhYS4uZjMwYzkyYTZkMDcxYWI4YWRk
Yzg5OTJmZmM3OTAwNzNkZjU1NjUzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbApAQCAtMjMs
OSArMjMsMjIgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBsZXQgYnV0dG9uMU5vZGUgPSBudWxs
OwogICAgIGxldCBidXR0b24yTm9kZSA9IG51bGw7CiAKLSAgICBmdW5jdGlvbiBhd2FpdEdldENs
aWNrRXZlbnRMaXN0ZW5lcihub2RlSWQpIHsKLSAgICAgICAgcmV0dXJuIERPTUFnZW50LmdldEV2
ZW50TGlzdGVuZXJzRm9yTm9kZShub2RlSWQpCi0gICAgICAgIC50aGVuKCh7bGlzdGVuZXJzfSkg
PT4gbGlzdGVuZXJzLmZpbmQoKGV2ZW50TGlzdGVuZXIpID0+IGV2ZW50TGlzdGVuZXIudHlwZSA9
PT0gImNsaWNrIikpOworICAgIGFzeW5jIGZ1bmN0aW9uIGdldENsaWNrRXZlbnRMaXN0ZW5lcihu
b2RlSWQpIHsKKyAgICAgICAgbGV0IHtsaXN0ZW5lcnN9ID0gYXdhaXQgRE9NQWdlbnQuZ2V0RXZl
bnRMaXN0ZW5lcnNGb3JOb2RlKG5vZGVJZCk7CisgICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZmlu
ZCgoZXZlbnRMaXN0ZW5lcikgPT4gZXZlbnRMaXN0ZW5lci50eXBlID09PSAiY2xpY2siKTsKKyAg
ICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3Rl
bmVyKG5vZGUpIHsKKyAgICAgICAgbGV0IGNsaWNrRXZlbnRMaXN0ZW5lciA9IGF3YWl0IGdldENs
aWNrRXZlbnRMaXN0ZW5lcihub2RlLmlkKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
IWNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIg
Zm9yIGJ1dHRvbjEgc2hvdWxkIG5vdCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKKworICAgICAgICBy
ZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAg
ICAgICAgICAgcmVzb2x2ZShldmVudC5kYXRhLmJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIoY2xpY2tFdmVudExpc3RlbmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgbGV0IHN1
aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uQnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIiKTsKQEAgLTQ5LDcgKzYyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFz
b24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5MaXN0ZW5lciwgYFBhdXNlIHJlYXNv
biBzaG91bGQgYmUgTGlzdGVuZXIuYCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlRGF0YS5ldmVudE5hbWUsICJjbGljayIsIGBQYXVz
ZSBkYXRhIGV2ZW50TmFtZSBzaG91bGQgYmUgImNsaWNrIi5gKTsKIAotICAgICAgICAgICAgICAg
IGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAg
ICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgICAg
ICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TGlzdGVuZXJJZCA9
PT0gY2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwgYFBhdXNlIGRhdGEgZXZlbnRM
aXN0ZW5lcklkIHNob3VsZCBiZSAiJHtjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklk
fSIuYCk7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZl
bnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRv
bjEgc2hvdWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwpAQCAtNzcsNyArOTAsNyBAQCBmdW5jdGlv
biB0ZXN0KCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YGNsaWNrQnV0dG9uMSgpYCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgYXdhaXRH
ZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCisgICAgICAgICAgICBnZXRDbGlj
a0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCiAgICAgICAgICAgICAudGhlbigoY2xpY2tF
dmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQo
IWNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIg
Zm9yIGJ1dHRvbjEgc2hvdWxkIG5vdCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKIApAQCAtMTExLDcg
KzEyNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQodGFyZ2V0RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNl
UmVhc29uLkxpc3RlbmVyLCBgUGF1c2UgcmVhc29uIHNob3VsZCBiZSBMaXN0ZW5lci5gKTsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCh0YXJnZXREYXRhLnBhdXNlRGF0YS5l
dmVudE5hbWUsICJjbGljayIsIGBQYXVzZSBkYXRhIGV2ZW50TmFtZSBzaG91bGQgYmUgImNsaWNr
Ii5gKTsKIAotICAgICAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRv
bjFOb2RlLmlkKQorICAgICAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24x
Tm9kZS5pZCkKICAgICAgICAgICAgICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7
CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdldERhdGEucGF1
c2VEYXRhLmV2ZW50TGlzdGVuZXJJZCA9PT0gY2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVu
ZXJJZCwgYFBhdXNlIGRhdGEgZXZlbnRMaXN0ZW5lcklkIHNob3VsZCBiZSAiJHtjbGlja0V2ZW50
TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkfSIuYCk7CiAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sg
ZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwpA
QCAtMTM5LDcgKzE1Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKTsKICAgICAgICAgICAg
IH0pOwogCi0gICAgICAgICAgICBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9k
ZS5pZCkKKyAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkK
ICAgICAgICAgICAgIC50aGVuKChjbGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjbGlja0V2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2lu
dCwgIkNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBidXR0b24xIHNob3VsZCBoYXZlIGEgYnJlYWtw
b2ludC4iKTsKIApAQCAtMTU0LDYgKzE2NywxOTUgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
RE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQ29uZGl0aW9uIiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVz
ZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaGFzIGEgdHJ1dGh5IGJyZWFrcG9pbnQgY29uZGl0aW9u
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9
IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1
dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2Un
Li4uIik7CisgICAgICAgICAgICBicmVha3BvaW50LmNvbmRpdGlvbiA9ICJmYWxzZSI7CisKKyAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAg
IGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGlu
ZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNv
bmRpdGlvbiB0byAndHJ1ZScuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5j
b25kaXRpb24gPSAidHJ1ZSI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZl
bnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAg
XSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNl
LiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lci5PcHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246
ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFr
cG9pbnQgaXMgaGl0IGF0IGxlYXN0IGFzIG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRg
LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9
IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4g
eworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1
dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4u
LiIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5pZ25vcmVDb3VudCA9IDI7CisKKyAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlz
ZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRl
c3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisK
KyAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOwor
ICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lci5PcHRpb25zLkFjdGlvbi5Mb2ciLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNr
IHRoYXQgbG9nIGJyZWFrcG9pbnQgYWN0aW9ucyBleGVjdXRlIHdoZW4gdGhlIGJyZWFrcG9pbnQg
aXMgaGl0LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VD
b3VudCA9IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVu
dCkgPT4geworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3Rl
bmVyKGJ1dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7
CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgbG9nIGFjdGlvbi4uLiIp
OworICAgICAgICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhOiAiQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEi
fSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAg
ICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRWRp
dGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0g
YEJSRUFLUE9JTlQgQUNUSU9OIExPRyAke2l9YDsKKworICAgICAgICAgICAgICAgICAgICBpZiAo
aSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVu
YWJsaW5nIGF1dG8tY29udGludWUuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
cG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOwor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbbWVzc2FnZUFkZGVkRXZlbnRdID0gYXdhaXQg
UHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2Fp
dEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2si
KSwKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xp
Y2tCdXR0b24xKClgKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobWVzc2FnZUFkZGVkRXZlbnQuZGF0YS5tZXNzYWdlLm1l
c3NhZ2VUZXh0LCBhY3Rpb24uZGF0YSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LiIpOworCisgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxkIHBhdXNlLiIp
OworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1
aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUiLAorICAgICAgICBkZXNjcmlwdGlv
bjogIkNoZWNrIHRoYXQgZXZhbHVhdGUgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0
aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAg
ICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50
LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRGb3JD
bGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBl
dmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgIGxldCBhY3Rpb24gPSBicmVha3BvaW50
LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIHtkYXRhOiAi
d2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gMTsifSk7CisKKyAgICAgICAgICAg
IGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID4g
MSkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRWRpdGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFL
UE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gJHtpfTtgOworCisgICAgICAgICAgICAgICAgICAgIGlm
IChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
RW5hYmxpbmcgYXV0by1jb250aW51ZS4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7
CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNr
IiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNs
aWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBs
ZXQgYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFYCk7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChicmVha3BvaW50QWN0aW9uRXZh
bHVhdGVSZXN1bHQsIGksICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKKwor
ICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
RXF1YWwocGF1c2VDb3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgfSk7CisKICAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIuSW52YWxpZCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiSW52YWxpZCBldmVudCBsaXN0ZW5l
ciBpZGVudGlmaWVycyBzaG91bGQgY2F1c2UgYW4gZXJyb3IuIiwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbAppbmRleCBlZTNhMTI1YTcxZDE4
YTMyNTg1MTIyOGMzYjFkYWE2OTQxNjU2NzFiLi41YWNiZDE5MmZlMGUyZDgxYjQzZDczYTJlMzVm
ZjlmMzcyZDQwODNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2Rl
YnVnZ2VyLXBhdXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1
Z2dlci1wYXVzZS5odG1sCkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICBkZXNjcmlwdGlvbjogIldvcmtlciBzaG91bGQgcGF1c2Ugb24gYnJlYWtwb2ludC4iLAogICAg
ICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0g
d29ya2VyVGFyZ2V0Lm1haW5SZXNvdXJjZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oOCwgMCk7
Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9u
KTsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3Bv
aW50KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZShgd29ya2VyLnBvc3RNZXNzYWdlKCJ0cmlnZ2VyQnJlYWtwb2ludCIpYCk7CiAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwK
aW5kZXggYTNiMzM0YzRkNjYzM2JlMzY5NzBiNzg5ZWI2ZWM4OWM4YjYxY2QzMi4uYTNmMjZmZGQw
MmQ3NDcwMTYyYTZkYmNiNzM4ZDE1ZGE3MzZiM2RmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1zaGFyZWQtYnJlYWtwb2ludC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRt
bApAQCAtOTQsNyArOTQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHdvcmtlclRhcmdl
dDEubWFpblJlc291cmNlIGluc3RhbmNlb2YgV0kuU2NyaXB0KTsKICAgICAgICAgICAgIGxldCBs
b2NhdGlvbiA9IHdvcmtlclRhcmdldDEubWFpblJlc291cmNlLmNyZWF0ZVNvdXJjZUNvZGVMb2Nh
dGlvbig4LCAwKTsKLSAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChs
b2NhdGlvbik7CisgICAgICAgICAgICBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVh
a3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRl
SW5QYWdlKGB0cmlnZ2VyV29ya2VyQnJlYWtwb2ludFBhdXNlcygpYCk7Cg==
</data>
<flag name="commit-queue"
          id="421829"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406643</attachid>
            <date>2020-08-14 18:26:34 -0700</date>
            <delta_ts>2020-08-18 01:51:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>215362.diff</filename>
            <type>text/plain</type>
            <size>488158</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGFhYzU3ZmQyYWQ2NC4uMzVmOTdiMjE3ZTFmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNzEgQEAKKzIwMjAtMDgtMTQgIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IGFsbG93IGV2ZW50IGJyZWFrcG9pbnRzIHRvIGJlIGNvbmZpZ3VyZWQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM2MgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3BlcnMg
dG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAgICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93LmV2
ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZpcnN0
IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4gZXZl
bnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRob3V0IHBhdXNpbmcKKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9ET00uanNvbjoKKyAgICAgICAgQWRkIGFuIGBvcHRpb25zYCBwYXJhbWF0
ZXIgdG8gYERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcmAgdG8gYWxsb3cgY29uZmln
dXJhdGlvbi4KKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29u
OgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNgIHBhcmFtYXRlciB0byBgRE9NRGVidWdnZXIuc2V0
RXZlbnRCcmVha3BvaW50YCB0byBhbGxvdyBjb25maWd1cmF0aW9uLgorCisgICAgICAgICogZGVi
dWdnZXIvQnJlYWtwb2ludC5oOgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjppZCBjb25zdCk6
IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50Ojpzb3VyY2VJRCBjb25zdCk6IEFkZGVk
LgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpsaW5lTnVtYmVyIGNvbnN0KTogQWRkZWQuCisg
ICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNvbHVtbk51bWJlciBjb25zdCk6IEFkZGVkLgorICAg
ICAgICAoSlNDOjpCcmVha3BvaW50Ojpjb25kaXRpb24gY29uc3QpOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6QnJlYWtwb2ludDo6YWN0aW9ucyBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
cmVha3BvaW50Ojppc0F1dG9Db250aW51ZSBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
cmVha3BvaW50OjpyZXNldEhpdENvdW50KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9p
bnQ6OmlzTGlua2VkIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6Omlz
UmVzb2x2ZWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludHNMaXN0Ojp+
QnJlYWtwb2ludHNMaXN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBkZWJ1Z2dlci9CcmVha3BvaW50
LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6QWN0aW9uKTog
QWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAg
ICAoSlNDOjpCcmVha3BvaW50OjpCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OmxpbmspOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6cmVzb2x2
ZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpzaG91bGRQYXVzZSk6IEFkZGVk
LgorICAgICAgICBVbmlmeSBgSlNDOjpCcmVha3BvaW50YCBhbmQgYEluc3BlY3Rvcjo6U2NyaXB0
QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaDoK
KyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dlci5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVn
Z2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OkRlYnVnZ2VyKToKKyAgICAgICAgKEpT
Qzo6RGVidWdnZXI6OmFkZE9ic2VydmVyKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
OjpyZW1vdmVPYnNlcnZlcik6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2FuRGlz
cGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
YnVnZ2VyOjpkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMpOiBBZGRlZC4KKyAgICAgICAgKEpT
Qzo6RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dl
cjo6dG9nZ2xlQnJlYWtwb2ludCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjphcHBseUJyZWFr
cG9pbnRzKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKEpTQzo6RGVidWdnZXI6OnNldEJyZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkaWRIaXRC
cmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpjbGVhckJyZWFrcG9p
bnRzKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2ludENvbmRpdGlv
bik6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0
aW9ucyk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2NoZWR1bGVQYXVzZUF0TmV4
dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5jZWxQYXVz
ZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzY2hl
ZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAg
KEpTQzo6RGVidWdnZXI6OmNvbnRpbnVlUHJvZ3JhbSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
OjpzdGVwTmV4dEV4cHJlc3Npb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3RlcEludG9T
dGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpoYW5k
bGVQYXVzZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXhjZXB0aW9uT3JDYXVn
aHRWYWx1ZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6YXRFeHByZXNzaW9uKToK
KyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNsZWFyTmV4dFBhdXNlU3RhdGUpOgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6d2lsbFJ1bk1pY3JvdGFzayk6IEFkZGVkLgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6ZGlkUnVuTWljcm90YXNrKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
OjpoYXNCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldFBh
dXNlT25OZXh0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgVW5pZnkgYEpTQzo6RGVidWdn
ZXJgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcmAgdG8gc2ltcGxpZnkgYnJlYWtw
b2ludCBsb2dpYy4KKyAgICAgICAgSW50cm9kdWNlIHRoZSBjb25jZXB0IG9mIGEgInNwZWNpYWwg
YnJlYWtwb2ludCIsIHdoaWNoIGlzIGVzc2VudGlhbGx5IGEgYEpTQzo6QnJlYWtwb2ludGAKKyAg
ICAgICAgdGhhdCBpcyBleHBlY3RlZCB0byBwYXVzZSBhdCB0aGUgbmV4dCBvcHBvcnR1bml0eSBi
dXQgaXNuJ3QgdGllZCB0byBhIHBhcnRpY3VsYXIgbG9jYXRpb24uCisgICAgICAgIEFzIGFuIGV4
YW1wbGUsIHdoZW5ldmVyIGFuIGV2ZW50IGJyZWFrcG9pbnQgaXMgaGl0LCBpbnN0ZWFkIG9mIGp1
c3QgcGF1c2luZyBhdCB0aGUgbmV4dAorICAgICAgICBvcHBvcnR1bml0eSwgdGhlIG5ld2x5IG1h
bmFnZWQgYEpTQzo6QnJlYWtwb2ludGAgaXMgdXNlZCBhcyBhICJzcGVjaWFsIGJyZWFrcG9pbnQi
LCBhbGxvd2luZworICAgICAgICBmb3IgaXQncyBjb25maWd1cmF0aW9uIChpZS5nLiBjb25kaXRp
b24sIGlnbm9yZSBjb3VudCwgYWN0aW9ucywgYXV0by1jb250aW51ZSkgdG8gYmUgdXNlZC4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6Om9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAg
IChJbnNwZWN0b3I6OmJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKTogQWRkZWQuCisgICAg
ICAgIChJbnNwZWN0b3I6OnBhcnNlQnJlYWtwb2ludE9wdGlvbnMpOiBBZGRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50Ojpm
cm9tUGF5bG9hZCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJlYWtwb2ludCk6IEFkZGVkLgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFr
cG9pbnQ6OmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludCBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6Om1h
dGNoZXMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQpOiBBZGRlZC4KKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29u
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29u
c29sZUFzc2VydCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmRpZFNjaGVkdWxlQXN5bmNDYWxsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGREZWJ1Z2dl
ckxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2V0QnJlYWtwb2ludEJ5VXJsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFNldEJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24pOgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNl
QXROZXh0T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSk6IEFkZGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9y
U3BlY2lhbEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZSk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZEJlY29tZUlkbGUpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JT
Y3JpcHQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQ
YXJzZVNvdXJjZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OndpbGxSdW5NaWNyb3Rhc2spOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRSdW5NaWNyb3Rhc2spOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9yQnJlYWtw
b2ludFN0YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Y2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNo
ZXMpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpidWlsZE9iamVjdEZvckJyZWFrcG9p
bnRDb29raWUpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRT
dGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIENy
ZWF0ZSBhIHByaXZhdGUgYFByb3RvY29sQnJlYWtwb2ludGAgY2xhc3MgdGhhdCBob2xkcyB0aGUg
ZGF0YSBzZW50IGJ5IHRoZSBmcm9udGVuZC4gVGhpcworICAgICAgICBpcyBuZWNlc3NhcnkgYmVj
YXVzZSBicmVha3BvaW50cyBpbiB0aGUgZnJvbnRlbmQgaGF2ZSBhIHBvdGVudGlhbGx5IG9uZS10
by1tYW55IHJlbGF0aW9uc2hpcAorICAgICAgICB3aXRoIGJyZWFrcG9pbnRzIGluIHRoZSBiYWNr
ZW5kLCBhcyB0aGUgc2FtZSBzY3JpcHQgY2FuIGJlIGxvYWRlZCBtYW55IHRpbWVzIG9uIGEgcGFn
ZS4gRWFjaAorICAgICAgICBvZiB0aG9zZSBzY3JpcHRzIGlzIGluZGVwZW5kZW50LCBob3dldmVy
LCBhbmQgY2FuIGV4ZWN1dGUgZGlmZmVyZW50bHksIG1lYW5pbmcgdGhhdCB0aGUgc2FtZQorICAg
ICAgICBicmVha3BvaW50IGZvciBlYWNoIHNjcmlwdCBhbHNvIG5lZWRzIGEgZGlmZmVyZW50IHN0
YXRlIChlLmcuIGlnbm9yZSBjb3VudCkuIEFzIHN1Y2gsIHRoZQorICAgICAgICBgUHJvdG9jb2xC
cmVha3BvaW50YCBpcyBlZmZlY3RpdmVseSBhIHRlbXBsYXRlIHRoYXQgaXMgYWN0dWFsaXplZCB3
aGVuZXZlciBhIG5ldyBzY3JpcHQgaXMKKyAgICAgICAgcGFyc2VkIHRoYXQgbWF0Y2hlcyB0aGUg
VVJMIG9mIHRoZSBgUHJvdG9jb2xCcmVha3BvaW50YCB0byBjcmVhdGUgYSBgSlNDOjpCcmVha3Bv
aW50YCB0aGF0CisgICAgICAgIGlzIHVzZWQgYnkgdGhlIGBKU0M6OkRlYnVnZ2VyYC4gYFByb3Rv
Y29sQnJlYWtwb2ludGAgYWxzbyBwYXJzZXMgYnJlYWtwb2ludCBjb25maWd1cmF0aW9ucy4KKwor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpKU0dsb2JhbE9iamVjdFNj
cmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0ds
b2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChJ
bnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdl
bnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3Bw
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4pOgorICAgICAg
ICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNw
cDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICBSZXBsYWNlIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB3aXRo
IGBKU0M6OkRlYnVnZ2VyYC4KKworICAgICAgICAqIHJ1bnRpbWUvSlNNaWNyb3Rhc2suY3BwOgor
ICAgICAgICAoSlNDOjpKU01pY3JvdGFzazo6cnVuKToKKyAgICAgICAgRHJpdmUtYnk6IHIyNDg4
OTQgbWlzdGFrZW5seSBvbWl0dGVkIHRoZSBjYWxsIHRvIG5vdGlmeSB0aGUgZGVidWdnZXIgdGhh
dCB0aGUgbWljcm90YXNrIHJhbi4KKworICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRCcmVha3Bv
aW50Lmg6IFJlbW92ZWQuCisgICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIu
aDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisKIDIwMjAt
MDgtMTQgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtBUk12
N11bSlNDXSBDb25zZXJ2YXRpdmUgR0MgaXMgbm90IGNvbnNpZGVyaW5nIGByN2AgYXMgYSByb290
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGEyOGY1NTg5MzgwZS4uZTlkODJjZjkw
NWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNj
cmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5Myw5ICsxMzkzLDYgQEAK
IAkJQTNGRjlCQzcyMjM0NzQ5MTAwQjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFC
IC8qIFlhcnJGbGFncy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CiAJCUE1MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1l
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEx
NDE4OEUwRkFGMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAz
RkExRTE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4
OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07
Ci0JCUE1MDNGQTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4
MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3Jp
cHREZWJ1Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTAzRkEyMDE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MDNG
QTI2MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0
IC8qIFNjcmlwdERlYnVnU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MDNGQTI4MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNj
cmlwdERlYnVnU2VydmVyLmggKi87IH07CiAJCUE1MDk4QjA0MUMxNkFBMDIwMDA4Nzc5NyAvKiBT
ZWN1cml0eS5mcmFtZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBBNTA5OEIwMzFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3Jr
ICovOyB9OwogCQlBNTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBF
NEI1RTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMzUsNiArNDIzMiw3
IEBACiAJCTkxOEUxNUJEMjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlw
ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3Rv
dHlwZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MThFMTVCRTI0NDdCMjI3MDA0
NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRl
RXJyb3JDb25zdHJ1Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dy
ZWdhdGVFcnJvckNvbnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkx
RDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyQXJlbmEuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFy
c2VyQXJlbmEuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyQXJlbmEu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1
IC8qIE5vZGVDb25zdHJ1Y3RvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Tm9kZUNvbnN0cnVjdG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3Mywx
MCArNDM3MSw2IEBACiAJCUE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRD
YWxsRnJhbWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0
Q2FsbEZyYW1lLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE3MTg4RTBG
QjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90
eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTgxODhFMEZCMDAw
MTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNj
cmlwdEJyZWFrcG9pbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
QnJlYWtwb2ludC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyMDE4OEVG
RjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUE1MDNGQTIzMTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MDNGQTI0MTg4RUZGRkQwMDEx
MEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTY3JpcHREZWJ1Z1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlB
NTAzRkEyNzE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUw
M0ZBMjgxODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMzFDMTZB
QTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1
cml0eS5mcmFtZXdvcms7IHBhdGggPSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Bl
ci9TREtzL01hY09TWDEwLjExLnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5
LmZyYW1ld29yazsgc291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CkBAIC02NTE3LDYgKzY1
MTEsNyBAQAogCQkxNDgwREI5QTBEREMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8gPSB7CiAJ
CQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkxRDE1NzhDMjRFMEJFMzUw
MDFGNENFRCAvKiBCcmVha3BvaW50LmNwcCAqLywKIAkJCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4
NTEgLyogQnJlYWtwb2ludC5oICovLAogCQkJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBE
ZWJ1Z2dlci5jcHAgKi8sCiAJCQkJRjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2Vy
LmggKi8sCkBAIC04NjYyLDE2ICs4NjU3LDEyIEBACiAJCQkJQTVBQjQ5REIxQkVDODA3OTAwNzAy
MEZCIC8qIFBlckdsb2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovLAogCQkJCUE1RkQwMDY1MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAogCQkJCUE1RkQwMDY2MTg5
QUZFOUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKLQkJCQlBNTAzRkExRjE4OEVG
RjY4MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oICovLAogCQkJCUE1RkQwMDY5MTg5QjAw
QTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAogCQkJCUE1RkQwMDZBMTg5QjAw
QTkwMDYzMzIzMSAvKiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKIAkJCQlBNUZEMDA2QjE4OUIwMEE5
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKIAkJCQlBNUZEMDA2QzE4OUIwMEFB
MDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggKi8sCiAJCQkJQTVGRDAwN0IxODlCMEI0QzAw
NjMzMjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAogCQkJCUE1RkQwMDdDMTg5
QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCi0JCQkJQTUwM0ZB
MjAxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKLQkJCQlBNTAz
RkEyMzE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAotCQkJCUE1
MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJKTsK
IAkJCXBhdGggPSBpbnNwZWN0b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTAy
NjMsMTIgKzEwMjU0LDkgQEAKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRj
aFJlZ2lzdGVyQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1
MDBBQTM0Q0UgLyogU2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZF
OUMwMDYzMzIzMSAvKiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNG
QTIxMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNUZEMDA2RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNUZEMDA3MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNr
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA3RTE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0
Q2FsbFN0YWNrRmFjdG9yeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjIxODhFRkY2ODAw
MTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNG
QTI2MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMTQ3MzQxQ0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVy
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0
RmV0Y2hQYXJhbWV0ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4
dAppbmRleCBjMzEwYjlhNGNkZmQuLjY4NzE0OThiMGZlYyAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3Vy
Y2VzLnR4dApAQCAtMzAwLDYgKzMwMCw3IEBAIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5jcHAKIGJ5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCiBieXRlY29tcGlsZXIvUHJvZmls
ZVR5cGVCeXRlY29kZUZsYWcuY3BwCiAKK2RlYnVnZ2VyL0JyZWFrcG9pbnQuY3BwCiBkZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKIGRlYnVnZ2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAogZGVidWdnZXIv
RGVidWdnZXJMb2NhdGlvbi5jcHAKQEAgLTU5Myw3ICs1OTQsNiBAQCBpbnNwZWN0b3IvU2NyaXB0
QXJndW1lbnRzLmNwcAogaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwCiBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAK
LWluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKIAogLy8gRGVyaXZlZCBTb3VyY2VzCiBp
bnNwZWN0b3IvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMC4uNTk2N2JmMWRkMTExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuY3BwCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgKiAgQ29weXJpZ2h0IChDKSAyMDA4LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQnJlYWtwb2ludC5oIgorCisjaW5jbHVkZSAiRGVi
dWdnZXIuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0JyZWFrcG9pbnQ6OkFjdGlvbjo6QWN0aW9u
KEJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZSB0eXBlKQorICAgIDogdHlwZSh0eXBlKQoreworfQor
CitSZWY8QnJlYWtwb2ludD4gQnJlYWtwb2ludDo6Y3JlYXRlKEJyZWFrcG9pbnRJRCBpZCwgY29u
c3QgU3RyaW5nJiBjb25kaXRpb24sIEFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9D
b250aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEJyZWFrcG9pbnQoaWQsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVl
LCBpZ25vcmVDb3VudCkpOworfQorCitCcmVha3BvaW50OjpCcmVha3BvaW50KEJyZWFrcG9pbnRJ
RCBpZCwgU3RyaW5nIGNvbmRpdGlvbiwgQWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0
b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpCisgICAgOiBtX2lkKGlkKQorICAgICwgbV9j
b25kaXRpb24oY29uZGl0aW9uKQorICAgICwgbV9hY3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisg
ICAgLCBtX2F1dG9Db250aW51ZShhdXRvQ29udGludWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGln
bm9yZUNvdW50KQoreworfQorCitib29sIEJyZWFrcG9pbnQ6OmxpbmsoU291cmNlSUQgc291cmNl
SUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlcikKK3sKKyAgICBB
U1NFUlQoIWlzTGlua2VkKCkpOworICAgIEFTU0VSVCghaXNSZXNvbHZlZCgpKTsKKworICAgIG1f
c291cmNlSUQgPSBzb3VyY2VJRDsKKyAgICBtX2xpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOworICAg
IG1fY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyOworICAgIHJldHVybiBpc0xpbmtlZCgpOwor
fQorCitib29sIEJyZWFrcG9pbnQ6OnJlc29sdmUodW5zaWduZWQgbGluZU51bWJlciwgdW5zaWdu
ZWQgY29sdW1uTnVtYmVyKQoreworICAgIEFTU0VSVChpc0xpbmtlZCgpKTsKKyAgICBBU1NFUlQo
IWlzUmVzb2x2ZWQoKSk7CisgICAgQVNTRVJUKGxpbmVOdW1iZXIgPj0gbV9saW5lTnVtYmVyKTsK
KyAgICBBU1NFUlQoY29sdW1uTnVtYmVyID49IG1fY29sdW1uTnVtYmVyKTsKKworICAgIG1fbGlu
ZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1bW5OdW1iZXI7
CisgICAgbV9yZXNvbHZlZCA9IHRydWU7CisgICAgcmV0dXJuIGlzUmVzb2x2ZWQoKTsKK30KKwor
Ym9vbCBCcmVha3BvaW50OjpzaG91bGRQYXVzZShEZWJ1Z2dlciYgZGVidWdnZXIsIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgaWYgKCsrbV9oaXRDb3VudCA8PSBtX2lnbm9y
ZUNvdW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZGVidWdnZXIuZXZh
bHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKCp0aGlzLCBnbG9iYWxPYmplY3QpOworfQorCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9CcmVha3BvaW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2lu
dC5oCmluZGV4IDE0MThlMTU5OGIzMC4uMWZhZmIzMDNjZjhkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmgKQEAgLTI2LDU0ICsyNiw4MyBAQAogI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIKLSNpbmNsdWRlIDx3dGYv
RG91Ymx5TGlua2VkTGlzdC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEJyZWFrcG9pbnQg
OiBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8QnJlYWtwb2ludD4gewotICAgIEJyZWFrcG9p
bnQoKQotICAgIHsKLSAgICB9CitjbGFzcyBEZWJ1Z2dlcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
OwogCi0gICAgQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZSwgdW5z
aWduZWQgY29sdW1uLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBhdXRvQ29udGludWUs
IHVuc2lnbmVkIGlnbm9yZUNvdW50KQotICAgICAgICA6IHNvdXJjZUlEKHNvdXJjZUlEKQotICAg
ICAgICAsIGxpbmUobGluZSkKLSAgICAgICAgLCBjb2x1bW4oY29sdW1uKQotICAgICAgICAsIGNv
bmRpdGlvbihjb25kaXRpb24pCi0gICAgICAgICwgYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkK
LSAgICAgICAgLCBpZ25vcmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7Ci0gICAgfQorY2xhc3Mg
QnJlYWtwb2ludCA6IHB1YmxpYyBSZWZDb3VudGVkPEJyZWFrcG9pbnQ+IHsKKyAgICBXVEZfTUFL
RV9OT05DT1BZQUJMRShCcmVha3BvaW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K3B1YmxpYzoKKyAgICBzdHJ1Y3QgQWN0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDog
dWludDhfdCB7CisgICAgICAgICAgICBMb2csCisgICAgICAgICAgICBFdmFsdWF0ZSwKKyAgICAg
ICAgICAgIFNvdW5kLAorICAgICAgICAgICAgUHJvYmUsCisgICAgICAgIH07CiAKLSAgICBCcmVh
a3BvaW50SUQgaWQgeyBub0JyZWFrcG9pbnRJRCB9OwotICAgIFNvdXJjZUlEIHNvdXJjZUlEIHsg
bm9Tb3VyY2VJRCB9OwotICAgIHVuc2lnbmVkIGxpbmUgeyAwIH07Ci0gICAgdW5zaWduZWQgY29s
dW1uIHsgMCB9OwotICAgIFN0cmluZyBjb25kaXRpb247Ci0gICAgYm9vbCBhdXRvQ29udGludWUg
eyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVk
IGhpdENvdW50IHsgMCB9OwotICAgIGJvb2wgcmVzb2x2ZWQgeyBmYWxzZSB9OworICAgICAgICBB
Y3Rpb24oVHlwZSk7CisKKyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBTdHJpbmcgZGF0YTsK
KyAgICAgICAgQnJlYWtwb2ludEFjdGlvbklEIGlkIHsgbm9CcmVha3BvaW50QWN0aW9uSUQgfTsK
KyAgICB9OworCisgICAgdXNpbmcgQWN0aW9uc1ZlY3RvciA9IFZlY3RvcjxBY3Rpb24+OworCisg
ICAgc3RhdGljIFJlZjxCcmVha3BvaW50PiBjcmVhdGUoQnJlYWtwb2ludElELCBjb25zdCBTdHJp
bmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwgQWN0aW9uc1ZlY3RvciYmID0geyB9LCBib29s
IGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKworICAgIEJy
ZWFrcG9pbnRJRCBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKworICAgIFNvdXJjZUlEIHNv
dXJjZUlEKCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJRDsgfQorICAgIHVuc2lnbmVkIGxpbmVO
dW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICB1bnNpZ25lZCBjb2x1
bW5OdW1iZXIoKSBjb25zdCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQorCisgICAgY29uc3Qg
U3RyaW5nJiBjb25kaXRpb24oKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvbjsgfQorICAgIGNv
bnN0IEFjdGlvbnNWZWN0b3ImIGFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbnM7IH0K
KyAgICBib29sIGlzQXV0b0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvQ29udGludWU7
IH0KKworICAgIHZvaWQgcmVzZXRIaXRDb3VudCgpIHsgbV9oaXRDb3VudCA9IDA7IH0KKworICAg
IC8vIEFzc29jaWF0ZXMgdGhpcyBicmVha3BvaW50IHdpdGggYSBwb3NpdGlvbiBpbiBhIHNwZWNp
ZmljIHNvdXJjZSBjb2RlLgorICAgIGJvb2wgbGluayhTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyKTsKKyAgICBib29sIGlzTGlua2VkKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VJRCAhPSBub1NvdXJjZUlEOyB9CisKKyAgICAvLyBBZGp1c3QgdGhl
IHByZXZpb3VzbHkgYXNzb2NpYXRlZCBwb3NpdGlvbiB0byB0aGUgbmV4dCBwYXVzZSBvcHBvcnR1
bml0eS4KKyAgICBib29sIHJlc29sdmUodW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29s
dW1uTnVtYmVyKTsKKyAgICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc29s
dmVkOyB9CisKKyAgICBib29sIHNob3VsZFBhdXNlKERlYnVnZ2VyJiwgSlNHbG9iYWxPYmplY3Qq
KTsKIAogcHJpdmF0ZToKLSAgICBCcmVha3BvaW50KiBtX3ByZXY7Ci0gICAgQnJlYWtwb2ludCog
bV9uZXh0OworICAgIEJyZWFrcG9pbnQoQnJlYWtwb2ludElELCBTdHJpbmcgY29uZGl0aW9uID0g
bnVsbFN0cmluZygpLCBBY3Rpb25zVmVjdG9yJiYgPSB7IH0sIGJvb2wgYXV0b0NvbnRpbnVlID0g
ZmFsc2UsIHNpemVfdCBpZ25vcmVDb3VudCA9IDApOwogCi0gICAgZnJpZW5kIGNsYXNzIFdURjo6
RG91Ymx5TGlua2VkTGlzdE5vZGU8QnJlYWtwb2ludD47CisgICAgQnJlYWtwb2ludElEIG1faWQg
eyBub0JyZWFrcG9pbnRJRCB9OworCisgICAgU291cmNlSUQgbV9zb3VyY2VJRCB7IG5vU291cmNl
SUQgfTsKKworICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzcxPiBXZWIg
SW5zcGVjdG9yOiBBZG9wdCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRvIGF2b2lkIG9uZUJh
c2VkSW50L3plcm9CYXNlZEludCBhbWJpZ3VpdHkKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXIg
eyAwIH07CisgICAgdW5zaWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07CisKKyAgICBib29sIG1f
cmVzb2x2ZWQgeyBmYWxzZSB9OworCisgICAgU3RyaW5nIG1fY29uZGl0aW9uOworICAgIEFjdGlv
bnNWZWN0b3IgbV9hY3Rpb25zOworICAgIGJvb2wgbV9hdXRvQ29udGludWUgeyBmYWxzZSB9Owor
ICAgIHNpemVfdCBtX2lnbm9yZUNvdW50IHsgMCB9OworICAgIHNpemVfdCBtX2hpdENvdW50IHsg
MCB9OwogfTsKIAotY2xhc3MgQnJlYWtwb2ludHNMaXN0IDogcHVibGljIERvdWJseUxpbmtlZExp
c3Q8QnJlYWtwb2ludD4sCi0gICAgcHVibGljIFJlZkNvdW50ZWQ8QnJlYWtwb2ludHNMaXN0PiB7
Ci1wdWJsaWM6Ci0gICAgfkJyZWFrcG9pbnRzTGlzdCgpCi0gICAgewotICAgICAgICBCcmVha3Bv
aW50KiBicmVha3BvaW50OwotICAgICAgICB3aGlsZSAoKGJyZWFrcG9pbnQgPSByZW1vdmVIZWFk
KCkpKQotICAgICAgICAgICAgZGVsZXRlIGJyZWFrcG9pbnQ7Ci0gICAgICAgIEFTU0VSVChpc0Vt
cHR5KCkpOwotICAgIH0KLX07Cit1c2luZyBCcmVha3BvaW50c1ZlY3RvciA9IFZlY3RvcjxSZWY8
SlNDOjpCcmVha3BvaW50Pj47CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKaW5kZXggZjRhYzM1NjdhNTY4Li5jNGJmYTFh
NzcxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dl
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApA
QCAtMjQsMTAgKzI0LDE2IEBACiAKICNpbmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJE
ZWJ1Z2dlckNhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRl
ICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIKICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgiCiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCisjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3Rl
eHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC04OSw3ICs5NSw2IEBA
IERlYnVnZ2VyOjpEZWJ1Z2dlcihWTSYgdm0pCiAgICAgLCBtX3JlYXNvbkZvclBhdXNlKE5vdFBh
dXNlZCkKICAgICAsIG1fbGFzdEV4ZWN1dGVkTGluZShVSU5UX01BWCkKICAgICAsIG1fbGFzdEV4
ZWN1dGVkU291cmNlSUQobm9Tb3VyY2VJRCkKLSAgICAsIG1fdG9wQnJlYWtwb2ludElEKG5vQnJl
YWtwb2ludElEKQogICAgICwgbV9wYXVzaW5nQnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQog
ewogfQpAQCAtMjA1LDEyICsyMTAsOTYgQEAgdm9pZCBEZWJ1Z2dlcjo6cmVnaXN0ZXJDb2RlQmxv
Y2soQ29kZUJsb2NrKiBjb2RlQmxvY2spCiAgICAgICAgIGNvZGVCbG9jay0+c2V0U3RlcHBpbmdN
b2RlKENvZGVCbG9jazo6U3RlcHBpbmdNb2RlRW5hYmxlZCk7CiB9CiAKK3ZvaWQgRGVidWdnZXI6
OmFkZE9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlcikKK3sKKyAgICBib29sIHdhc0VtcHR5ID0g
bV9vYnNlcnZlcnMuaXNFbXB0eSgpOworCisgICAgbV9vYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7
CisKKyAgICBpZiAod2FzRW1wdHkpCisgICAgICAgIGF0dGFjaERlYnVnZ2VyKCk7Cit9CisKK3Zv
aWQgRGVidWdnZXI6OnJlbW92ZU9ic2VydmVyKE9ic2VydmVyJiBvYnNlcnZlciwgYm9vbCBpc0Jl
aW5nRGVzdHJveWVkKQoreworICAgIG1fb2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOworCisg
ICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1wdHkoKSkKKyAgICAgICAgZGV0YWNoRGVidWdnZXIoaXNC
ZWluZ0Rlc3Ryb3llZCk7Cit9CisKK2Jvb2wgRGVidWdnZXI6OmNhbkRpc3BhdGNoRnVuY3Rpb25U
b09ic2VydmVycygpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2Rpc3BhdGNoaW5nRnVuY3Rpb25U
b09ic2VydmVycyAmJiAhbV9vYnNlcnZlcnMuaXNFbXB0eSgpOworfQorCit2b2lkIERlYnVnZ2Vy
OjpkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiBm
dW5jKQoreworICAgIGlmICghY2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2Rpc3BhdGNoaW5n
RnVuY3Rpb25Ub09ic2VydmVycywgdHJ1ZSk7CisKKyAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDog
Y29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJzKSkKKyAgICAgICAgZnVuYygqb2JzZXJ2ZXIpOworfQor
CiB2b2lkIERlYnVnZ2VyOjpzZXRQcm9maWxpbmdDbGllbnQoUHJvZmlsaW5nQ2xpZW50KiBjbGll
bnQpCiB7CiAgICAgQVNTRVJUKCEhbV9wcm9maWxpbmdDbGllbnQgIT0gISFjbGllbnQpOwogICAg
IG1fcHJvZmlsaW5nQ2xpZW50ID0gY2xpZW50OwogfQogCit2b2lkIERlYnVnZ2VyOjpzb3VyY2VQ
YXJzZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU291cmNlUHJvdmlkZXIqIHNvdXJj
ZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sK
KyAgICAvLyBQcmVlbXB0aXZlbHkgY2hlY2sgd2hldGhlciB3ZSBjYW4gZGlzcGF0Y2ggc28gdGhh
dCB3ZSBkb24ndCBkbyBhbnkgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuCisgICAgaWYgKCFjYW5E
aXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KGVycm9yTGluZSAhPSAtMSkgeworICAgICAgICBhdXRvIHNvdXJjZVVSTCA9IHNvdXJjZVByb3Zp
ZGVyLT5zb3VyY2VVUkwoKTsKKyAgICAgICAgYXV0byBkYXRhID0gc291cmNlUHJvdmlkZXItPnNv
dXJjZSgpLnRvU3RyaW5nKCk7CisgICAgICAgIGF1dG8gZmlyc3RMaW5lID0gc291cmNlUHJvdmlk
ZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKKyAgICAgICAgZGlzcGF0
Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAg
ICAgICBvYnNlcnZlci5mYWlsZWRUb1BhcnNlU291cmNlKHNvdXJjZVVSTCwgZGF0YSwgZmlyc3RM
aW5lLCBlcnJvckxpbmUsIGVycm9yTWVzc2FnZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IHNvdXJjZVByb3ZpZGVy
LT5hc0lEKCk7CisKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4g
V2ViIEluc3BlY3RvcjogU2ltcGxpZnkgRGVidWdnZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJv
dmlkZXIKKyAgICBEZWJ1Z2dlcjo6U2NyaXB0IHNjcmlwdDsKKyAgICBzY3JpcHQuc291cmNlUHJv
dmlkZXIgPSBzb3VyY2VQcm92aWRlcjsKKyAgICBzY3JpcHQudXJsID0gc291cmNlUHJvdmlkZXIt
PnNvdXJjZVVSTCgpOworICAgIHNjcmlwdC5zb3VyY2UgPSBzb3VyY2VQcm92aWRlci0+c291cmNl
KCkudG9TdHJpbmcoKTsKKyAgICBzY3JpcHQuc3RhcnRMaW5lID0gc291cmNlUHJvdmlkZXItPnN0
YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CisgICAgc2NyaXB0LnN0YXJ0Q29s
dW1uID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2NvbHVtbi56ZXJvQmFzZWRJ
bnQoKTsKKyAgICBzY3JpcHQuaXNDb250ZW50U2NyaXB0ID0gaXNDb250ZW50U2NyaXB0KGdsb2Jh
bE9iamVjdCk7CisgICAgc2NyaXB0LnNvdXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VV
UkxEaXJlY3RpdmUoKTsKKyAgICBzY3JpcHQuc291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZVByb3Zp
ZGVyLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCk7CisKKyAgICBpbnQgc291cmNlTGVuZ3Ro
ID0gc2NyaXB0LnNvdXJjZS5sZW5ndGgoKTsKKyAgICBpbnQgbGluZUNvdW50ID0gMTsKKyAgICBp
bnQgbGFzdExpbmVTdGFydCA9IDA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VMZW5n
dGg7ICsraSkgeworICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVtpXSA9PSAnXG4nKSB7CisgICAg
ICAgICAgICBsaW5lQ291bnQgKz0gMTsKKyAgICAgICAgICAgIGxhc3RMaW5lU3RhcnQgPSBpICsg
MTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNjcmlwdC5lbmRMaW5lID0gc2NyaXB0LnN0YXJ0
TGluZSArIGxpbmVDb3VudCAtIDE7CisgICAgaWYgKGxpbmVDb3VudCA9PSAxKQorICAgICAgICBz
Y3JpcHQuZW5kQ29sdW1uID0gc2NyaXB0LnN0YXJ0Q29sdW1uICsgc291cmNlTGVuZ3RoOworICAg
IGVsc2UKKyAgICAgICAgc2NyaXB0LmVuZENvbHVtbiA9IHNvdXJjZUxlbmd0aCAtIGxhc3RMaW5l
U3RhcnQ7CisKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYg
b2JzZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkUGFyc2VTb3VyY2Uoc291cmNlSUQsIHNj
cmlwdCk7CisgICAgfSk7Cit9CisKIFNlY29uZHMgRGVidWdnZXI6OndpbGxFdmFsdWF0ZVNjcmlw
dCgpCiB7CiAgICAgcmV0dXJuIG1fcHJvZmlsaW5nQ2xpZW50LT53aWxsRXZhbHVhdGVTY3JpcHQo
KTsKQEAgLTIyMywxMiArMzEyLDEyIEBAIHZvaWQgRGVidWdnZXI6OmRpZEV2YWx1YXRlU2NyaXB0
KFNlY29uZHMgc3RhcnRUaW1lLCBQcm9maWxpbmdSZWFzb24gcmVhc29uKQogCiB2b2lkIERlYnVn
Z2VyOjp0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayogY29kZUJsb2NrLCBCcmVha3BvaW50JiBi
cmVha3BvaW50LCBCcmVha3BvaW50U3RhdGUgZW5hYmxlZE9yTm90KQogewotICAgIEFTU0VSVChi
cmVha3BvaW50LnJlc29sdmVkKTsKKyAgICBBU1NFUlQoYnJlYWtwb2ludC5pc1Jlc29sdmVkKCkp
OwogCiAgICAgU2NyaXB0RXhlY3V0YWJsZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJF
eGVjdXRhYmxlKCk7CiAKICAgICBTb3VyY2VJRCBzb3VyY2VJRCA9IHN0YXRpY19jYXN0PFNvdXJj
ZUlEPihleGVjdXRhYmxlLT5zb3VyY2VJRCgpKTsKLSAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VJ
RCAhPSBzb3VyY2VJRCkKKyAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VJRCgpICE9IHNvdXJjZUlE
KQogICAgICAgICByZXR1cm47CiAKICAgICB1bnNpZ25lZCBzdGFydExpbmUgPSBleGVjdXRhYmxl
LT5maXJzdExpbmUoKTsKQEAgLTIzOCwxMCArMzI3LDEwIEBAIHZvaWQgRGVidWdnZXI6OnRvZ2ds
ZUJyZWFrcG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQs
IEJyCiAKICAgICAvLyBJbnNwZWN0b3IgYnJlYWtwb2ludCBsaW5lIGFuZCBjb2x1bW4gdmFsdWVz
IGFyZSB6ZXJvLWJhc2VkIGJ1dCB0aGUgZXhlY3V0YWJsZQogICAgIC8vIGFuZCBDb2RlQmxvY2sg
bGluZSBhbmQgY29sdW1uIHZhbHVlcyBhcmUgb25lLWJhc2VkLgotICAgIHVuc2lnbmVkIGxpbmUg
PSBicmVha3BvaW50LmxpbmUgKyAxOworICAgIHVuc2lnbmVkIGxpbmUgPSBicmVha3BvaW50Lmxp
bmVOdW1iZXIoKSArIDE7CiAgICAgT3B0aW9uYWw8dW5zaWduZWQ+IGNvbHVtbjsKLSAgICBpZiAo
YnJlYWtwb2ludC5jb2x1bW4pCi0gICAgICAgIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uICsg
MTsKKyAgICBpZiAoYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkKKyAgICAgICAgY29sdW1uID0g
YnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSArIDE7CiAKICAgICBpZiAobGluZSA8IHN0YXJ0TGlu
ZSB8fCBsaW5lID4gZW5kTGluZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYzLDkgKzM1Miw4IEBA
IHZvaWQgRGVidWdnZXI6OnRvZ2dsZUJyZWFrcG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJy
ZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEJyCiAKIHZvaWQgRGVidWdnZXI6OmFwcGx5QnJlYWtwb2lu
dHMoQ29kZUJsb2NrKiBjb2RlQmxvY2spCiB7Ci0gICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50
TWFwJiBicmVha3BvaW50cyA9IG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50OwotICAgIGZvciAo
YXV0byogYnJlYWtwb2ludCA6IGJyZWFrcG9pbnRzLnZhbHVlcygpKQotICAgICAgICB0b2dnbGVC
cmVha3BvaW50KGNvZGVCbG9jaywgKmJyZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsKKyAg
ICBmb3IgKGF1dG8mIGJyZWFrcG9pbnQgOiBtX2JyZWFrcG9pbnRzKQorICAgICAgICB0b2dnbGVC
cmVha3BvaW50KGNvZGVCbG9jaywgYnJlYWtwb2ludCwgQnJlYWtwb2ludEVuYWJsZWQpOwogfQog
CiBjbGFzcyBEZWJ1Z2dlcjo6VG9nZ2xlQnJlYWtwb2ludEZ1bmN0b3IgewpAQCAtMzE0LDE4OCAr
NDAyLDE0MyBAQCBEZWJ1Z2dlclBhcnNlRGF0YSYgRGVidWdnZXI6OmRlYnVnZ2VyUGFyc2VEYXRh
KFNvdXJjZUlEIHNvdXJjZUlELCBTb3VyY2VQcm92aWRlcgogICAgIHJldHVybiByZXN1bHQuaXRl
cmF0b3ItPnZhbHVlOwogfQogCi12b2lkIERlYnVnZ2VyOjpyZXNvbHZlQnJlYWtwb2ludChCcmVh
a3BvaW50JiBicmVha3BvaW50LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIpCitib29s
IERlYnVnZ2VyOjpyZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50LCBTb3Vy
Y2VQcm92aWRlciogc291cmNlUHJvdmlkZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWJyZWFr
cG9pbnQucmVzb2x2ZWQpOwotICAgIEFTU0VSVChicmVha3BvaW50LnNvdXJjZUlEICE9IG5vU291
cmNlSUQpOworICAgIFJFTEVBU0VfQVNTRVJUKCFicmVha3BvaW50LmlzUmVzb2x2ZWQoKSk7Cisg
ICAgQVNTRVJUKGJyZWFrcG9pbnQuaXNMaW5rZWQoKSk7CiAKICAgICAvLyBGSVhNRTogPGh0dHBz
Oi8vd2Via2l0Lm9yZy9iLzE2Mjc3MT4gV2ViIEluc3BlY3RvcjogQWRvcHQgVGV4dFBvc2l0aW9u
IGluIEluc3BlY3RvciB0byBhdm9pZCBvbmVCYXNlZEludC96ZXJvQmFzZWRJbnQgYW1iaWd1aXR5
CiAgICAgLy8gSW5zcGVjdG9yIGJyZWFrcG9pbnQgbGluZSBhbmQgY29sdW1uIHZhbHVlcyBhcmUg
emVyby1iYXNlZCBidXQgdGhlIGV4ZWN1dGFibGUKICAgICAvLyBhbmQgQ29kZUJsb2NrIGxpbmUg
dmFsdWVzIGFyZSBvbmUtYmFzZWQgd2hpbGUgY29sdW1uIGlzIHplcm8tYmFzZWQuCi0gICAgaW50
IGxpbmUgPSBicmVha3BvaW50LmxpbmUgKyAxOwotICAgIGludCBjb2x1bW4gPSBicmVha3BvaW50
LmNvbHVtbjsKKyAgICBpbnQgbGluZSA9IGJyZWFrcG9pbnQubGluZU51bWJlcigpICsgMTsKKyAg
ICBpbnQgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKTsKIAogICAgIC8vIEFjY291
bnQgZm9yIGEgPHNjcmlwdD4ncyBzdGFydCBwb3NpdGlvbiBvbiB0aGUgZmlyc3QgbGluZSBvbmx5
LgogICAgIGludCBwcm92aWRlclN0YXJ0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0
aW9uKCkubV9saW5lLm9uZUJhc2VkSW50KCk7IC8vIE9uZSBiYXNlZCB0byBtYXRjaCB0aGUgYWxy
ZWFkeSBhZGp1c3RlZCBsaW5lLgogICAgIGludCBwcm92aWRlclN0YXJ0Q29sdW1uID0gc291cmNl
UHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsgLy8gWmVy
byBiYXNlZCBzbyBjb2x1bW4gemVybyBpcyB6ZXJvLgotICAgIGlmIChsaW5lID09IHByb3ZpZGVy
U3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uKSB7CisgICAgaWYgKGxpbmUgPT0gcHJvdmlk
ZXJTdGFydExpbmUgJiYgYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSkgewogICAgICAgICBBU1NF
UlQocHJvdmlkZXJTdGFydENvbHVtbiA8PSBjb2x1bW4pOwogICAgICAgICBpZiAocHJvdmlkZXJT
dGFydENvbHVtbikKICAgICAgICAgICAgIGNvbHVtbiAtPSBwcm92aWRlclN0YXJ0Q29sdW1uOwog
ICAgIH0KIAotICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNl
RGF0YShicmVha3BvaW50LnNvdXJjZUlELCBzb3VyY2VQcm92aWRlcik7CisgICAgRGVidWdnZXJQ
YXJzZURhdGEmIHBhcnNlRGF0YSA9IGRlYnVnZ2VyUGFyc2VEYXRhKGJyZWFrcG9pbnQuc291cmNl
SUQoKSwgc291cmNlUHJvdmlkZXIpOwogICAgIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiByZXNv
bHZlZFBvc2l0aW9uID0gcGFyc2VEYXRhLnBhdXNlUG9zaXRpb25zLmJyZWFrcG9pbnRMb2NhdGlv
bkZvckxpbmVDb2x1bW4obGluZSwgY29sdW1uKTsKICAgICBpZiAoIXJlc29sdmVkUG9zaXRpb24p
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IHJlc29s
dmVkTGluZSA9IHJlc29sdmVkUG9zaXRpb24tPmxpbmU7CiAgICAgaW50IHJlc29sdmVkQ29sdW1u
ID0gcmVzb2x2ZWRQb3NpdGlvbi0+Y29sdW1uKCk7CiAKICAgICAvLyBSZS1hY2NvdW50IGZvciBh
IDxzY3JpcHQ+J3Mgc3RhcnQgcG9zaXRpb24gb24gdGhlIGZpcnN0IGxpbmUgb25seS4KLSAgICBp
ZiAocmVzb2x2ZWRMaW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1u
KSB7CisgICAgaWYgKHJlc29sdmVkTGluZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVha3Bv
aW50LmNvbHVtbk51bWJlcigpKSB7CiAgICAgICAgIGlmIChwcm92aWRlclN0YXJ0Q29sdW1uKQog
ICAgICAgICAgICAgcmVzb2x2ZWRDb2x1bW4gKz0gcHJvdmlkZXJTdGFydENvbHVtbjsKICAgICB9
CiAKLSAgICBicmVha3BvaW50LmxpbmUgPSByZXNvbHZlZExpbmUgLSAxOwotICAgIGJyZWFrcG9p
bnQuY29sdW1uID0gcmVzb2x2ZWRDb2x1bW47Ci0gICAgYnJlYWtwb2ludC5yZXNvbHZlZCA9IHRy
dWU7CisgICAgcmV0dXJuIGJyZWFrcG9pbnQucmVzb2x2ZShyZXNvbHZlZExpbmUgLSAxLCByZXNv
bHZlZENvbHVtbik7CiB9CiAKLUJyZWFrcG9pbnRJRCBEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludChC
cmVha3BvaW50JiBicmVha3BvaW50LCBib29sJiBleGlzdGluZykKK2Jvb2wgRGVidWdnZXI6OnNl
dEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkKIHsKLSAgICBBU1NFUlQoYnJlYWtw
b2ludC5yZXNvbHZlZCk7Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQuc291cmNlSUQgIT0gbm9Tb3Vy
Y2VJRCk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQuaXNSZXNvbHZlZCgpKTsKIAotICAgIFNvdXJj
ZUlEIHNvdXJjZUlEID0gYnJlYWtwb2ludC5zb3VyY2VJRDsKLSAgICB1bnNpZ25lZCBsaW5lID0g
YnJlYWtwb2ludC5saW5lOwotICAgIHVuc2lnbmVkIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1u
OworICAgIGF1dG8mIGJyZWFrcG9pbnRzRm9yTGluZSA9IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJ
RC5lbnN1cmUoYnJlYWtwb2ludC5zb3VyY2VJRCgpLCBbXSB7CisgICAgICAgIHJldHVybiBMaW5l
VG9CcmVha3BvaW50c01hcCgpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIFNvdXJj
ZUlEVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50
cy5maW5kKGJyZWFrcG9pbnQuc291cmNlSUQpOwotICAgIGlmIChpdCA9PSBtX3NvdXJjZUlEVG9C
cmVha3BvaW50cy5lbmQoKSkKLSAgICAgICAgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5z
ZXQoc291cmNlSUQsIExpbmVUb0JyZWFrcG9pbnRzTWFwKCkpLml0ZXJhdG9yOworICAgIGF1dG8m
IGJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHNGb3JMaW5lLmVuc3VyZShicmVha3BvaW50LmxpbmVO
dW1iZXIoKSwgW10geworICAgICAgICByZXR1cm4gQnJlYWtwb2ludHNWZWN0b3IoKTsKKyAgICB9
KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAgICBMaW5lVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3Ig
YnJlYWtzSXQgPSBpdC0+dmFsdWUuZmluZChsaW5lKTsKLSAgICBpZiAoYnJlYWtzSXQgPT0gaXQt
PnZhbHVlLmVuZCgpKQotICAgICAgICBicmVha3NJdCA9IGl0LT52YWx1ZS5zZXQobGluZSwgYWRv
cHRSZWYobmV3IEJyZWFrcG9pbnRzTGlzdCkpLml0ZXJhdG9yOwotCi0gICAgQnJlYWtwb2ludHNM
aXN0JiBicmVha3BvaW50cyA9ICpicmVha3NJdC0+dmFsdWU7Ci0gICAgZm9yIChCcmVha3BvaW50
KiBjdXJyZW50ID0gYnJlYWtwb2ludHMuaGVhZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVu
dC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW50LT5jb2x1bW4gPT0gY29sdW1uKSB7Cisg
ICAgZm9yIChhdXRvJiBleGlzdGluZ0JyZWFrcG9pbnQgOiBicmVha3BvaW50cykgeworICAgICAg
ICBpZiAoZXhpc3RpbmdCcmVha3BvaW50LT5jb2x1bW5OdW1iZXIoKSA9PSBicmVha3BvaW50LmNv
bHVtbk51bWJlcigpKSB7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdCcmVha3BvaW50LT5p
ZCgpICE9IGJyZWFrcG9pbnQuaWQoKSk7CiAgICAgICAgICAgICAvLyBGb3VuZCBleGlzdGluZyBi
cmVha3BvaW50LiBEbyBub3QgY3JlYXRlIGEgZHVwbGljYXRlIGF0IHRoaXMgbG9jYXRpb24uCi0g
ICAgICAgICAgICBleGlzdGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudC0+
aWQ7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBl
eGlzdGluZyA9IGZhbHNlOwotICAgIEJyZWFrcG9pbnRJRCBpZCA9ICsrbV90b3BCcmVha3BvaW50
SUQ7Ci0gICAgUkVMRUFTRV9BU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOworICAgIGJyZWFr
cG9pbnRzLmFwcGVuZChtYWtlUmVmKGJyZWFrcG9pbnQpKTsKIAotICAgIGJyZWFrcG9pbnQuaWQg
PSBpZDsKKyAgICBtX2JyZWFrcG9pbnRzLmFkZChtYWtlUmVmKGJyZWFrcG9pbnQpKTsKIAotICAg
IEJyZWFrcG9pbnQqIG5ld0JyZWFrcG9pbnQgPSBuZXcgQnJlYWtwb2ludChicmVha3BvaW50KTsK
LSAgICBicmVha3BvaW50cy5hcHBlbmQobmV3QnJlYWtwb2ludCk7Ci0gICAgbV9icmVha3BvaW50
SURUb0JyZWFrcG9pbnQuc2V0KGlkLCBuZXdCcmVha3BvaW50KTsKKyAgICB0b2dnbGVCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsKIAotICAgIHRvZ2dsZUJyZWFrcG9p
bnQoKm5ld0JyZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsKLQotICAgIHJldHVybiBpZDsK
KyAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtwb2ludChC
cmVha3BvaW50SUQgaWQpCitib29sIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50KEJyZWFrcG9p
bnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAgQVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKKyAg
ICBBU1NFUlQoYnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCi0gICAgQnJlYWtwb2ludElEVG9C
cmVha3BvaW50TWFwOjppdGVyYXRvciBpZEl0ID0gbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQu
ZmluZChpZCk7Ci0gICAgQVNTRVJUKGlkSXQgIT0gbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQu
ZW5kKCkpOwotICAgIEJyZWFrcG9pbnQqIGJyZWFrcG9pbnQgPSBpZEl0LT52YWx1ZTsKKyAgICBh
dXRvIGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yID0gbV9icmVha3BvaW50c0ZvclNvdXJjZUlE
LmZpbmQoYnJlYWtwb2ludC5zb3VyY2VJRCgpKTsKKyAgICBpZiAoYnJlYWtwb2ludHNGb3JMaW5l
SXRlcmF0b3IgPT0gbV9icmVha3BvaW50c0ZvclNvdXJjZUlELmVuZCgpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBTb3VyY2VJRCBzb3VyY2VJRCA9IGJyZWFrcG9pbnQtPnNvdXJjZUlE
OwotICAgIEFTU0VSVChzb3VyY2VJRCk7Ci0gICAgU291cmNlSURUb0JyZWFrcG9pbnRzTWFwOjpp
dGVyYXRvciBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSUQpOwotICAg
IEFTU0VSVChpdCAhPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5lbmQoKSk7Ci0gICAgTGluZVRv
QnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQoYnJlYWtw
b2ludC0+bGluZSk7Ci0gICAgQVNTRVJUKGJyZWFrc0l0ICE9IGl0LT52YWx1ZS5lbmQoKSk7Cisg
ICAgYXV0byBicmVha3BvaW50c0l0ZXJhdG9yID0gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3It
PnZhbHVlLmZpbmQoYnJlYWtwb2ludC5saW5lTnVtYmVyKCkpOworICAgIGlmIChicmVha3BvaW50
c0l0ZXJhdG9yID09IGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgdG9nZ2xlQnJlYWtwb2ludCgqYnJlYWtwb2ludCwg
QnJlYWtwb2ludERpc2FibGVkKTsKKyAgICB0b2dnbGVCcmVha3BvaW50KGJyZWFrcG9pbnQsIEJy
ZWFrcG9pbnREaXNhYmxlZCk7CisKKyAgICBhdXRvJiBicmVha3BvaW50cyA9IGJyZWFrcG9pbnRz
SXRlcmF0b3ItPnZhbHVlOwogCi0gICAgQnJlYWtwb2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpi
cmVha3NJdC0+dmFsdWU7CiAjaWYgQVNTRVJUX0VOQUJMRUQKICAgICBib29sIGZvdW5kID0gZmFs
c2U7Ci0gICAgZm9yIChCcmVha3BvaW50KiBjdXJyZW50ID0gYnJlYWtwb2ludHMuaGVhZCgpOyBj
dXJyZW50ICYmICFmb3VuZDsgY3VycmVudCA9IGN1cnJlbnQtPm5leHQoKSkgewotICAgICAgICBp
ZiAoY3VycmVudC0+aWQgPT0gYnJlYWtwb2ludC0+aWQpCisgICAgZm9yIChhdXRvJiBleGlzdGlu
Z0JyZWFrcG9pbnQgOiBicmVha3BvaW50cykgeworICAgICAgICBpZiAoZXhpc3RpbmdCcmVha3Bv
aW50LT5jb2x1bW5OdW1iZXIoKSA9PSBicmVha3BvaW50LmNvbHVtbk51bWJlcigpKSB7CisgICAg
ICAgICAgICBBU1NFUlQoZXhpc3RpbmdCcmVha3BvaW50LT5pZCgpID09IGJyZWFrcG9pbnQuaWQo
KSk7CisgICAgICAgICAgICBBU1NFUlQoIWZvdW5kKTsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1
ZTsKKyAgICAgICAgfQogICAgIH0KLSAgICBBU1NFUlQoZm91bmQpOwogI2VuZGlmIC8vIEFTU0VS
VF9FTkFCTEVECiAKLSAgICBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5yZW1vdmUoaWRJdCk7
Ci0gICAgYnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQpOwotICAgIGRlbGV0ZSBicmVha3Bv
aW50OworICAgIGF1dG8gcmVtb3ZlZCA9IG1fYnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQp
OworICAgIHJlbW92ZWQgfD0gIWJyZWFrcG9pbnRzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoY29u
c3QgUmVmPEJyZWFrcG9pbnQ+JiBleGlzdGluZ0JyZWFrcG9pbnQpIHsKKyAgICAgICAgcmV0dXJu
ICZicmVha3BvaW50ID09IGV4aXN0aW5nQnJlYWtwb2ludC5wdHIoKTsKKyAgICB9KTsKIAogICAg
IGlmIChicmVha3BvaW50cy5pc0VtcHR5KCkpIHsKLSAgICAgICAgaXQtPnZhbHVlLnJlbW92ZShi
cmVha3NJdCk7Ci0gICAgICAgIGlmIChpdC0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9zb3VyY2VJRFRvQnJlYWtwb2ludHMucmVtb3ZlKGl0KTsKKyAgICAgICAgYnJlYWtwb2ludHNG
b3JMaW5lSXRlcmF0b3ItPnZhbHVlLnJlbW92ZShicmVha3BvaW50c0l0ZXJhdG9yKTsKKyAgICAg
ICAgaWYgKGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQucmVtb3ZlKGJyZWFrcG9pbnRzRm9yTGlu
ZUl0ZXJhdG9yKTsKICAgICB9CisKKyAgICByZXR1cm4gcmVtb3ZlZDsKIH0KIAotYm9vbCBEZWJ1
Z2dlcjo6aGFzQnJlYWtwb2ludChTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9u
JiBwb3NpdGlvbiwgQnJlYWtwb2ludCAqaGl0QnJlYWtwb2ludCkKK1JlZlB0cjxCcmVha3BvaW50
PiBEZWJ1Z2dlcjo6ZGlkSGl0QnJlYWtwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAg
ICBpZiAoIW1fYnJlYWtwb2ludHNBY3RpdmF0ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA6OmNv
bnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7
Ci0gICAgaWYgKGl0ID09IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgYXV0byBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9IG1fYnJl
YWtwb2ludHNGb3JTb3VyY2VJRC5maW5kKHNvdXJjZUlEKTsKKyAgICBpZiAoYnJlYWtwb2ludHNG
b3JMaW5lSXRlcmF0b3IgPT0gbV9icmVha3BvaW50c0ZvclNvdXJjZUlELmVuZCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKIAogICAgIHVuc2lnbmVkIGxpbmUgPSBwb3NpdGlvbi5tX2xpbmUu
emVyb0Jhc2VkSW50KCk7CiAgICAgdW5zaWduZWQgY29sdW1uID0gcG9zaXRpb24ubV9jb2x1bW4u
emVyb0Jhc2VkSW50KCk7CiAgICAgCi0gICAgTGluZVRvQnJlYWtwb2ludHNNYXA6OmNvbnN0X2l0
ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQobGluZSk7Ci0gICAgaWYgKGJyZWFrc0l0
ID09IGl0LT52YWx1ZS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gYnJl
YWtwb2ludHNJdGVyYXRvciA9IGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5maW5k
KGxpbmUpOworICAgIGlmIChicmVha3BvaW50c0l0ZXJhdG9yID09IGJyZWFrcG9pbnRzRm9yTGlu
ZUl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBm
b3IgKGF1dG8mIGJyZWFrcG9pbnQgOiBicmVha3BvaW50c0l0ZXJhdG9yLT52YWx1ZSkgeworICAg
ICAgICB1bnNpZ25lZCBicmVha0xpbmUgPSBicmVha3BvaW50LT5saW5lTnVtYmVyKCk7CisgICAg
ICAgIHVuc2lnbmVkIGJyZWFrQ29sdW1uID0gYnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCk7CiAK
LSAgICBib29sIGhpdCA9IGZhbHNlOwotICAgIGNvbnN0IEJyZWFrcG9pbnRzTGlzdCYgYnJlYWtw
b2ludHMgPSAqYnJlYWtzSXQtPnZhbHVlOwotICAgIEJyZWFrcG9pbnQqIGJyZWFrcG9pbnQ7Ci0g
ICAgZm9yIChicmVha3BvaW50ID0gYnJlYWtwb2ludHMuaGVhZCgpOyBicmVha3BvaW50OyBicmVh
a3BvaW50ID0gYnJlYWtwb2ludC0+bmV4dCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJyZWFrTGlu
ZSA9IGJyZWFrcG9pbnQtPmxpbmU7Ci0gICAgICAgIHVuc2lnbmVkIGJyZWFrQ29sdW1uID0gYnJl
YWtwb2ludC0+Y29sdW1uOwogICAgICAgICAvLyBTaW5jZSBmcm9udGVuZCB0cnVuY2F0ZXMgdGhl
IGluZGVudCwgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiBhIGxpbmUgbXVzdCBtYXRjaCB0aGUgYnJl
YWtwb2ludCAobGluZSwwKS4KICAgICAgICAgQVNTRVJUKHRoaXMgPT0gbV9jdXJyZW50Q2FsbEZy
YW1lLT5jb2RlQmxvY2soKS0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpOwotICAgICAgICBp
ZiAoKGxpbmUgIT0gbV9sYXN0RXhlY3V0ZWRMaW5lICYmIGxpbmUgPT0gYnJlYWtMaW5lICYmICFi
cmVha0NvbHVtbikKLSAgICAgICAgICAgIHx8IChsaW5lID09IGJyZWFrTGluZSAmJiBjb2x1bW4g
PT0gYnJlYWtDb2x1bW4pKSB7Ci0gICAgICAgICAgICBoaXQgPSB0cnVlOworICAgICAgICBpZiAo
KGxpbmUgIT0gbV9sYXN0RXhlY3V0ZWRMaW5lICYmIGxpbmUgPT0gYnJlYWtMaW5lICYmICFicmVh
a0NvbHVtbikgfHwgKGxpbmUgPT0gYnJlYWtMaW5lICYmIGNvbHVtbiA9PSBicmVha0NvbHVtbikp
IHsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LT5zaG91bGRQYXVzZSgqdGhpcywgZ2xvYmFs
T2JqZWN0KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gYnJlYWtwb2ludC5jb3B5UmVmKCk7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAoIWhpdCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGhpdEJyZWFrcG9pbnQpCi0gICAgICAgICpoaXRC
cmVha3BvaW50ID0gKmJyZWFrcG9pbnQ7Ci0KLSAgICBicmVha3BvaW50LT5oaXRDb3VudCsrOwot
ICAgIGlmIChicmVha3BvaW50LT5pZ25vcmVDb3VudCA+PSBicmVha3BvaW50LT5oaXRDb3VudCkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKGJyZWFrcG9pbnQtPmNvbmRpdGlvbi5p
c0VtcHR5KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgLy8gV2UgY2Fubm90IHN0b3Ag
aW4gdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBjb25kaXRpb24gY29kZSwKLSAgICAvLyBz
byBtYWtlIGl0IGxvb2tzIGxpa2UgdGhlIGRlYnVnZ2VyIGlzIGFscmVhZHkgcGF1c2VkLgotICAg
IFRlbXBvcmFyeVBhdXNlZFN0YXRlIHBhdXNlZFN0YXRlKCp0aGlzKTsKLQotICAgIE5ha2VkUHRy
PEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgIERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNh
bGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotICAgIEpTT2JqZWN0KiBzY29w
ZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dl
ckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihicmVha3BvaW50LT5jb25kaXRp
b24sIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOwotCi0gICAgLy8gV2UgY2FuIGxv
c2UgdGhlIGRlYnVnZ2VyIHdoaWxlIGV4ZWN1dGluZyBKYXZhU2NyaXB0LgotICAgIGlmICghbV9j
dXJyZW50Q2FsbEZyYW1lKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0gbV9jdXJyZW50Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KG1fdm0pOwotICAgIGlmIChleGNlcHRpb24pIHsKLSAgICAgICAgLy8gQW4gZXJyb25lb3Vz
IGNvbmRpdGlvbiBjb3VudHMgYXMgImZhbHNlIi4KLSAgICAgICAgaGFuZGxlRXhjZXB0aW9uSW5C
cmVha3BvaW50Q29uZGl0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9i
amVjdCk7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGNsYXNzIERlYnVnZ2VyOjpDbGVhckNv
ZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yIHsKQEAgLTUxOSwxNCArNTYyLDkzIEBAIHZv
aWQgRGVidWdnZXI6OmNsZWFyQnJlYWtwb2ludHMoKQogewogICAgIG1fdm0uaGVhcC5jb21wbGV0
ZUFsbEpJVFBsYW5zKCk7CiAKLSAgICBtX3RvcEJyZWFrcG9pbnRJRCA9IG5vQnJlYWtwb2ludElE
OwotICAgIG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50LmNsZWFyKCk7Ci0gICAgbV9zb3VyY2VJ
RFRvQnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuY2xl
YXIoKTsKKyAgICBtX2JyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9zcGVjaWFsQnJlYWtwb2lu
dCA9IG51bGxwdHI7CiAKICAgICBDbGVhckNvZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9y
IGZ1bmN0b3IodGhpcyk7CiAgICAgbV92bS5oZWFwLmZvckVhY2hDb2RlQmxvY2soZnVuY3Rvcik7
CiB9CiAKK2Jvb2wgRGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2ludENvbmRpdGlvbihCcmVha3Bv
aW50JiBicmVha3BvaW50LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIGNv
bnN0IFN0cmluZyYgY29uZGl0aW9uID0gYnJlYWtwb2ludC5jb25kaXRpb24oKTsKKyAgICBpZiAo
Y29uZGl0aW9uLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBXZSBj
YW5ub3Qgc3RvcCBpbiB0aGUgZGVidWdnZXIgd2hpbGUgZXhlY3V0aW5nIGNvbmRpdGlvbiBjb2Rl
LAorICAgIC8vIHNvIG1ha2UgaXQgbG9va3MgbGlrZSB0aGUgZGVidWdnZXIgaXMgYWxyZWFkeSBw
YXVzZWQuCisgICAgVGVtcG9yYXJ5UGF1c2VkU3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOworCisg
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgRGVidWdnZXJDYWxsRnJhbWUm
IGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7CisgICAgSlNP
YmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHJlc3Vs
dCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbmRpdGlv
biwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7CisKKyAgICAvLyBXZSBjYW4gbG9z
ZSB0aGUgZGVidWdnZXIgd2hpbGUgZXhlY3V0aW5nIEphdmFTY3JpcHQuCisgICAgaWYgKCFtX2N1
cnJlbnRDYWxsRnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmIChleGNlcHRp
b24pIHsKKyAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9Cb29s
ZWFuKGdsb2JhbE9iamVjdCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2lu
dEFjdGlvbnMoQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCkKK3sKKyAgICBBU1NFUlQobV9pc1BhdXNlZCk7CisgICAgQVNTRVJUKGlzQXR0YWNoZWQo
Z2xvYmFsT2JqZWN0KSk7CisKKyAgICBtX2N1cnJlbnRQcm9iZUJhdGNoSWQrKzsKKworICAgIGZv
ciAoYXV0byYgYWN0aW9uIDogYnJlYWtwb2ludC5hY3Rpb25zKCkpIHsKKyAgICAgICAgYXV0byYg
ZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKKworICAgICAg
ICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7CisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9u
OjpUeXBlOjpMb2c6CisgICAgICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZd
IChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgICAgICBvYnNlcnZlci5icmVha3Bv
aW50QWN0aW9uTG9nKGRlYnVnZ2VyQ2FsbEZyYW1lLmdsb2JhbE9iamVjdCgpLCBhY3Rpb24uZGF0
YSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZTogeworICAgICAgICAgICAgTmFrZWRQ
dHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgICAgICAgICBKU09iamVjdCogc2NvcGVFeHRl
bnNpb25PYmplY3QgPSBudWxscHRyOworICAgICAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUuZXZh
bHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
LCBleGNlcHRpb24pOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAg
ICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGV4Y2Vw
dGlvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQnJl
YWtwb2ludDo6QWN0aW9uOjpUeXBlOjpTb3VuZDoKKyAgICAgICAgICAgIGRpc3BhdGNoRnVuY3Rp
b25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICAgICAgICAg
IG9ic2VydmVyLmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChhY3Rpb24uaWQpOworICAgICAgICAgICAg
fSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFjdGlv
bjo6VHlwZTo6UHJvYmU6IHsKKyAgICAgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0
aW9uOworICAgICAgICAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0
cjsKKyAgICAgICAgICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVh
dGVXaXRoU2NvcGVFeHRlbnNpb24oYWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBl
eGNlcHRpb24pOworICAgICAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZGVidWdnZXJHbG9i
YWxPYmplY3QgPSBkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAg
IGlmIChleGNlcHRpb24pCisgICAgICAgICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2Vy
R2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworCisgICAgICAgICAgICBkaXNwYXRjaEZ1bmN0aW9u
VG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgICAgICBv
YnNlcnZlci5icmVha3BvaW50QWN0aW9uUHJvYmUoZGVidWdnZXJHbG9iYWxPYmplY3QsIGFjdGlv
bi5pZCwgbV9jdXJyZW50UHJvYmVCYXRjaElkLCBtX25leHRQcm9iZVNhbXBsZUlkKyssIGV4Y2Vw
dGlvbiA/IGV4Y2VwdGlvbi0+dmFsdWUoKSA6IHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlz
QXR0YWNoZWQoZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisK
IGNsYXNzIERlYnVnZ2VyOjpDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yIHsKIHB1YmxpYzoK
ICAgICBDbGVhckRlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCkBAIC01NzEsMTEgKzY5MywzNSBAQCB2b2lkIERlYnVnZ2VyOjpzZXRQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2UpCiAgICAgbV9wYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID0gcGF1c2U7CiB9CiAKLXZvaWQgRGVidWdnZXI6OnNldFBhdXNlT25O
ZXh0U3RhdGVtZW50KGJvb2wgcGF1c2UpCit2b2lkIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXRO
ZXh0T3Bwb3J0dW5pdHkoKQogewotICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHBhdXNl
OwotICAgIGlmIChwYXVzZSkKLSAgICAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVu
YWJsZWQpOworICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHRydWU7CisKKyAgICBzZXRT
dGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmNh
bmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKQoreworICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1
bml0eSA9IGZhbHNlOworfQorCitib29sIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK3sKKyAgICBpZiAobV9zcGVjaWFs
QnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbV9zcGVjaWFsQnJlYWtw
b2ludCA9IG1ha2VSZWYoYnJlYWtwb2ludCk7CisgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5n
TW9kZUVuYWJsZWQpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIERlYnVnZ2VyOjpjYW5j
ZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7Cisg
ICAgaWYgKCZicmVha3BvaW50ICE9IG1fc3BlY2lhbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIG1fc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOworICAgIHJldHVy
biB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2VyOjpicmVha1Byb2dyYW0oKQpAQCAtNTk5LDcgKzc0
NSw3IEBAIHZvaWQgRGVidWdnZXI6OmNvbnRpbnVlUHJvZ3JhbSgpCiAgICAgaWYgKCFtX2lzUGF1
c2VkKQogICAgICAgICByZXR1cm47CiAKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0K
IAogdm9pZCBEZWJ1Z2dlcjo6c3RlcE5leHRFeHByZXNzaW9uKCkKQEAgLTYxMCw3ICs3NTYsNyBA
QCB2b2lkIERlYnVnZ2VyOjpzdGVwTmV4dEV4cHJlc3Npb24oKQogICAgIG1fcGF1c2VPbkNhbGxG
cmFtZSA9IG1fY3VycmVudENhbGxGcmFtZTsKICAgICBtX3BhdXNlT25TdGVwTmV4dCA9IHRydWU7
CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURv
bmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2VyOjpzdGVwSW50b1N0YXRlbWVudCgp
CkBAIC02MjAsNyArNzY2LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcEludG9TdGF0ZW1lbnQoKQog
CiAgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKICAgICBzZXRTdGVwcGluZ01v
ZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0gICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dl
ckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7CiB9
CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBPdmVyU3RhdGVtZW50KCkKQEAgLTYzMCw3ICs3NzYsNyBA
QCB2b2lkIERlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCgpCiAKICAgICBtX3BhdXNlT25DYWxs
RnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJhbWU7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5n
TW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKTsK
KyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiB2b2lkIERl
YnVnZ2VyOjpzdGVwT3V0T2ZGdW5jdGlvbigpCkBAIC02NDIsNyArNzg4LDcgQEAgdm9pZCBEZWJ1
Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24oKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3Vy
cmVudENhbGxGcmFtZSA/IG1fY3VycmVudENhbGxGcmFtZS0+Y2FsbGVyRnJhbWUodG9wRW50cnlG
cmFtZSkgOiBudWxscHRyOwogICAgIG1fcGF1c2VPblN0ZXBPdXQgPSB0cnVlOwogICAgIHNldFN0
ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVFbmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2lu
Z0RlYnVnZ2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0g
dHJ1ZTsKIH0KIAogc3RhdGljIGlubGluZSBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9i
amVjdEZvckNhbGxGcmFtZShWTSYgdm0sIENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNzAxLDEw
ICs4NDcsMTcgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0KQogCiAgICAgYm9vbCBkaWRQYXVzZUZvclN0ZXAgPSBwYXVzZU5vdzsKIAot
ICAgIEJyZWFrcG9pbnQgYnJlYWtwb2ludDsKICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBE
ZWJ1Z2dlckNhbGxGcmFtZTo6cG9zaXRpb25Gb3JDYWxsRnJhbWUodm0sIG1fY3VycmVudENhbGxG
cmFtZSk7Ci0gICAgYm9vbCBkaWRIaXRCcmVha3BvaW50ID0gaGFzQnJlYWtwb2ludChzb3VyY2VJ
RCwgcG9zaXRpb24sICZicmVha3BvaW50KTsKLSAgICBwYXVzZU5vdyB8PSBkaWRIaXRCcmVha3Bv
aW50OworCisgICAgYXV0byBicmVha3BvaW50ID0gZGlkSGl0QnJlYWtwb2ludChnbG9iYWxPYmpl
Y3QsIHNvdXJjZUlELCBwb3NpdGlvbik7CisgICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgIHBh
dXNlTm93ID0gdHJ1ZTsKKworICAgIC8vIFNwZWNpYWwgYnJlYWtwb2ludHMgYXJlIG9ubHkgZ2l2
ZW4gb25lIG9wcG9ydHVuaXR5IHRvIHBhdXNlLgorICAgIGF1dG8gc3BlY2lhbEJyZWFrcG9pbnQg
PSBXVEZNb3ZlKG1fc3BlY2lhbEJyZWFrcG9pbnQpOworICAgIGlmIChzcGVjaWFsQnJlYWtwb2lu
dCAmJiBzcGVjaWFsQnJlYWtwb2ludC0+c2hvdWxkUGF1c2UoKnRoaXMsIGdsb2JhbE9iamVjdCkp
CisgICAgICAgIHBhdXNlTm93ID0gdHJ1ZTsKKwogICAgIG1fbGFzdEV4ZWN1dGVkTGluZSA9IHBv
c2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKICAgICBpZiAoIXBhdXNlTm93KQogICAgICAg
ICByZXR1cm47CkBAIC03MTYsMjQgKzg2OSw0NSBAQCB2b2lkIERlYnVnZ2VyOjpwYXVzZUlmTmVl
ZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgLy8gcmVzZXRpbmcgdGhlIHBh
dXNlIHN0YXRlIGJlZm9yZSBleGVjdXRpbmcgYW55IGJyZWFrcG9pbnQgYWN0aW9ucy4KICAgICBU
ZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7CiAKLSAgICBpZiAoZGlkSGl0
QnJlYWtwb2ludCkgewotICAgICAgICBoYW5kbGVCcmVha3BvaW50SGl0KGdsb2JhbE9iamVjdCwg
YnJlYWtwb2ludCk7CisgICAgaWYgKGJyZWFrcG9pbnQgfHwgc3BlY2lhbEJyZWFrcG9pbnQpIHsK
ICAgICAgICAgLy8gTm90ZSB0aGF0IHRoZSBhY3Rpb25zIGNhbiBwb3RlbnRpYWxseSBzdG9wIHRo
ZSBkZWJ1Z2dlciwgc28gd2UgbmVlZCB0byBjaGVjayB0aGF0CiAgICAgICAgIC8vIHdlIHN0aWxs
IGhhdmUgYSBjdXJyZW50IGNhbGwgZnJhbWUgd2hlbiB3ZSBnZXQgYmFjay4KLSAgICAgICAgaWYg
KCFtX2N1cnJlbnRDYWxsRnJhbWUpCi0gICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKSB7CisgICAgICAgIGJvb2wgYXV0b0NvbnRpbnVlID0g
ZmFsc2U7CisKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGV2YWx1YXRl
QnJlYWtwb2ludEFjdGlvbnMoKmJyZWFrcG9pbnQsIGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAg
ICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKwor
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQtPmlzQXV0b0NvbnRpbnVlKCkpCisgICAgICAgICAg
ICAgICAgYXV0b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzcGVj
aWFsQnJlYWtwb2ludCkgeworICAgICAgICAgICAgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucygq
c3BlY2lhbEJyZWFrcG9pbnQsIGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgICAgIGlmICghbV9j
dXJyZW50Q2FsbEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
aWYgKHNwZWNpYWxCcmVha3BvaW50LT5pc0F1dG9Db250aW51ZSgpKQorICAgICAgICAgICAgICAg
IGF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXV0b0NvbnRp
bnVlKSB7CiAgICAgICAgICAgICBpZiAoIWRpZFBhdXNlRm9yU3RlcCkKICAgICAgICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgICAgICBkaWRIaXRCcmVha3BvaW50ID0gZmFsc2U7Ci0gICAgICAg
IH0gZWxzZQotICAgICAgICAgICAgbV9wYXVzaW5nQnJlYWtwb2ludElEID0gYnJlYWtwb2ludC5p
ZDsKKworICAgICAgICAgICAgYnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgICAgICAgICBzcGVj
aWFsQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCkK
KyAgICAgICAgICAgIG1fcGF1c2luZ0JyZWFrcG9pbnRJRCA9IGJyZWFrcG9pbnQtPmlkKCk7CiAg
ICAgfQogCiAgICAgaWYgKGJsYWNrYm94VHlwZUl0ZXJhdG9yICE9IG1fYmxhY2tib3hlZFNjcmlw
dHMuZW5kKCkgJiYgYmxhY2tib3hUeXBlSXRlcmF0b3ItPnZhbHVlID09IEJsYWNrYm94VHlwZTo6
RGVmZXJyZWQpIHsKICAgICAgICAgbV9hZnRlckJsYWNrYm94ZWRTY3JpcHQgPSB0cnVlOwotICAg
ICAgICBzZXRQYXVzZU9uTmV4dFN0YXRlbWVudCh0cnVlKTsKKyAgICAgICAgc2NoZWR1bGVQYXVz
ZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0MSw3
ICs5MTUsNyBAQCB2b2lkIERlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCiAgICAgICAgIGF1dG8gcmVhc29uID0gbV9yZWFzb25Gb3JQYXVzZTsKICAg
ICAgICAgaWYgKGFmdGVyQmxhY2tib3hlZFNjcmlwdCkKICAgICAgICAgICAgIHJlYXNvbiA9IFBh
dXNlZEFmdGVyQmxhY2tib3hlZFNjcmlwdDsKLSAgICAgICAgZWxzZSBpZiAoZGlkSGl0QnJlYWtw
b2ludCkKKyAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJlYXNvbiA9
IFBhdXNlZEZvckJyZWFrcG9pbnQ7CiAgICAgICAgIFBhdXNlUmVhc29uRGVjbGFyYXRpb24gcmF1
c2VSZWFzb25EZWNsYXJhdGlvbigqdGhpcywgcmVhc29uKTsKIApAQCAtNzUxLDEyICs5MjUsNDUg
QEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogCiAgICAgbV9wYXVzaW5nQnJlYWtwb2ludElEID0gbm9CcmVha3BvaW50SUQ7CiAKLSAg
ICBpZiAoIW1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSAmJiAhbV9wYXVzZU9uQ2FsbEZyYW1lKSB7
CisgICAgaWYgKCFtX3BhdXNlQXROZXh0T3Bwb3J0dW5pdHkgJiYgIW1fcGF1c2VPbkNhbGxGcmFt
ZSAmJiAhbV9zcGVjaWFsQnJlYWtwb2ludCkgewogICAgICAgICBzZXRTdGVwcGluZ01vZGUoU3Rl
cHBpbmdNb2RlRGlzYWJsZWQpOwogICAgICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBudWxscHRy
OwogICAgIH0KIH0KIAordm9pZCBEZWJ1Z2dlcjo6aGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgUmVhc29uRm9yUGF1c2UpCit7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRv
T2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIEFTU0VSVChpc1Bh
dXNlZCgpKTsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkUGF1c2UoZ2xvYmFsT2JqZWN0LCBjdXJyZW50
RGVidWdnZXJDYWxsRnJhbWUoKSwgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZShnbG9iYWxPYmplY3Qp
KTsKKyAgICB9KTsKKworICAgIGRpZFBhdXNlKGdsb2JhbE9iamVjdCk7CisKKyAgICBtX2RvbmVQ
cm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSBmYWxzZTsKKyAgICBydW5FdmVudExvb3BXaGlsZVBh
dXNlZCgpOworCisgICAgZGlkQ29udGludWUoZ2xvYmFsT2JqZWN0KTsKKworICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICBv
YnNlcnZlci5kaWRDb250aW51ZSgpOworICAgIH0pOworfQorCitKU0M6OkpTVmFsdWUgRGVidWdn
ZXI6OmV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQoreworICAgIGlmIChyZWFzb25Gb3JQYXVzZSgpID09IFBhdXNlZEZvckV4Y2VwdGlvbikK
KyAgICAgICAgcmV0dXJuIGN1cnJlbnRFeGNlcHRpb24oKTsKKworICAgIGZvciAoUmVmUHRyPERl
YnVnZ2VyQ2FsbEZyYW1lPiBmcmFtZSA9ICZjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsgZnJh
bWU7IGZyYW1lID0gZnJhbWUtPmNhbGxlckZyYW1lKCkpIHsKKyAgICAgICAgRGVidWdnZXJTY29w
ZSYgc2NvcGUgPSAqZnJhbWUtPnNjb3BlKCk7CisgICAgICAgIGlmIChzY29wZS5pc0NhdGNoU2Nv
cGUoKSkKKyAgICAgICAgICAgIHJldHVybiBzY29wZS5jYXVnaHRWYWx1ZShnbG9iYWxPYmplY3Qp
OworICAgIH0KKworICAgIHJldHVybiB7IH07Cit9CisKIHZvaWQgRGVidWdnZXI6OmV4Y2VwdGlv
bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNW
YWx1ZSBleGNlcHRpb24sIGJvb2wgaGFzQ2F0Y2hIYW5kbGVyKQogewogICAgIGlmIChtX2lzUGF1
c2VkKQpAQCAtODA3LDggKzEwMTQsOCBAQCB2b2lkIERlYnVnZ2VyOjphdEV4cHJlc3Npb24oQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBPbmx5
IHBhdXNlIGF0IHRoZSBuZXh0IGV4cHJlc3Npb24gd2l0aCBzdGVwLWluLCBzdGVwLW5leHQsIGFu
ZCBzdGVwLW91dC4KLSAgICBib29sIHNob3VsZEF0dGVtcHRQYXVzZSA9IG1fcGF1c2VBdE5leHRP
cHBvcnR1bml0eSB8fCBtX3BhdXNlT25TdGVwTmV4dCB8fCBtX3BhdXNlT25TdGVwT3V0OworICAg
IC8vIE9ubHkgcGF1c2UgYXQgdGhlIG5leHQgZXhwcmVzc2lvbiBmb3Igc3RlcC1pbiwgc3RlcC1u
ZXh0LCBzdGVwLW91dCwgb3Igc3BlY2lhbCBicmVha3BvaW50cy4KKyAgICBib29sIHNob3VsZEF0
dGVtcHRQYXVzZSA9IG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSB8fCBtX3BhdXNlT25TdGVwTmV4
dCB8fCBtX3BhdXNlT25TdGVwT3V0IHx8IG1fc3BlY2lhbEJyZWFrcG9pbnQ7CiAKICAgICBQYXVz
ZVJlYXNvbkRlY2xhcmF0aW9uIHJlYXNvbigqdGhpcywgUGF1c2VkQXRFeHByZXNzaW9uKTsKICAg
ICB1cGRhdGVDYWxsRnJhbWUobGV4aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZShtX3ZtLCBj
YWxsRnJhbWUpLCBjYWxsRnJhbWUsIHNob3VsZEF0dGVtcHRQYXVzZSA/IEF0dGVtcHRQYXVzZSA6
IE5vUGF1c2UpOwpAQCAtOTE3LDYgKzExMjQsNyBAQCB2b2lkIERlYnVnZ2VyOjpjbGVhck5leHRQ
YXVzZVN0YXRlKCkKICAgICBtX3BhdXNlT25TdGVwTmV4dCA9IGZhbHNlOwogICAgIG1fcGF1c2VP
blN0ZXBPdXQgPSBmYWxzZTsKICAgICBtX2FmdGVyQmxhY2tib3hlZFNjcmlwdCA9IGZhbHNlOwor
ICAgIG1fc3BlY2lhbEJyZWFrcG9pbnQgPSBudWxscHRyOwogfQogCiB2b2lkIERlYnVnZ2VyOjpk
aWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtOTMzLDYg
KzExNDEsMjAgQEAgdm9pZCBEZWJ1Z2dlcjo6ZGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudChDYWxs
RnJhbWUqIGNhbGxGcmFtZSkKICAgICB1cGRhdGVDYWxsRnJhbWUobGV4aWNhbEdsb2JhbE9iamVj
dEZvckNhbGxGcmFtZShtX3ZtLCBjYWxsRnJhbWUpLCBjYWxsRnJhbWUsIEF0dGVtcHRQYXVzZSk7
CiB9CiAKK3ZvaWQgRGVidWdnZXI6OndpbGxSdW5NaWNyb3Rhc2soKQoreworICAgIGRpc3BhdGNo
RnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICBv
YnNlcnZlci53aWxsUnVuTWljcm90YXNrKCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRGVidWdnZXI6
OmRpZFJ1bk1pY3JvdGFzaygpCit7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsm
XSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRpZFJ1bk1pY3JvdGFz
aygpOworICAgIH0pOworfQorCiBEZWJ1Z2dlckNhbGxGcmFtZSYgRGVidWdnZXI6OmN1cnJlbnRE
ZWJ1Z2dlckNhbGxGcmFtZSgpCiB7CiAgICAgaWYgKCFtX2N1cnJlbnREZWJ1Z2dlckNhbGxGcmFt
ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggZmJhNDRj
NjBjYzZhLi5kZTdmMGQ2MjM4ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZWJ1Z2dlci9EZWJ1Z2dlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9E
ZWJ1Z2dlci5oCkBAIC0yNywxMCArMjcsNyBAQAogI2luY2x1ZGUgIkRlYnVnZ2VyUGFyc2VEYXRh
LmgiCiAjaW5jbHVkZSAiRGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1
ZS5oIgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4K
LSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9u
Lmg+CisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTQx
LDI2ICszOCwxNCBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdDsKIGNsYXNzIFNvdXJjZVByb3ZpZGVy
OwogY2xhc3MgVk07CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyIHsKK2NsYXNz
IERlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBE
ZWJ1Z2dlcihWTSYpOwotICAgIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CisgICAgSlNfRVhQT1JUX1BS
SVZBVEUgRGVidWdnZXIoVk0mKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIH5EZWJ1
Z2dlcigpOwogCiAgICAgVk0mIHZtKCkgeyByZXR1cm4gbV92bTsgfQogCi0gICAgSlNDOjpEZWJ1
Z2dlckNhbGxGcmFtZSYgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7Ci0gICAgYm9vbCBoYXNI
YW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2soKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJU
KG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJu
IG1faGFzSGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrOwotICAgIH0KLSAgICBKU1ZhbHVlIGN1
cnJlbnRFeGNlcHRpb24oKQotICAgIHsKLSAgICAgICAgQVNTRVJUKG1fcmVhc29uRm9yUGF1c2Ug
PT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIG1fY3VycmVudEV4Y2VwdGlv
bjsKLSAgICB9Ci0KICAgICBib29sIG5lZWRzRXhjZXB0aW9uQ2FsbGJhY2tzKCkgY29uc3QgeyBy
ZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZCAmJiBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUg
IT0gRG9udFBhdXNlT25FeGNlcHRpb25zOyB9CiAgICAgYm9vbCBpc0ludGVyYWN0aXZlbHlEZWJ1
Z2dpbmcoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOyB9CiAKQEAgLTY4
LDI2ICs1MywzMCBAQCBwdWJsaWM6CiAgICAgICAgIFRlcm1pbmF0aW5nRGVidWdnaW5nU2Vzc2lv
biwKICAgICAgICAgR2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZwogICAgIH07Ci0gICAgdm9pZCBh
dHRhY2goSlNHbG9iYWxPYmplY3QqKTsKLSAgICB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCos
IFJlYXNvbkZvckRldGFjaCk7Ci0gICAgYm9vbCBpc0F0dGFjaGVkKEpTR2xvYmFsT2JqZWN0Kik7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBhdHRhY2goSlNHbG9iYWxPYmplY3QqKTsKKyAg
ICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGRldGFjaChKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZv
ckRldGFjaCk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0F0dGFjaGVkKEpTR2xvYmFs
T2JqZWN0Kik7CiAKLSAgICB2b2lkIHJlc29sdmVCcmVha3BvaW50KEJyZWFrcG9pbnQmLCBTb3Vy
Y2VQcm92aWRlciopOwotICAgIEJyZWFrcG9pbnRJRCBzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQm
LCBib29sJiBleGlzdGluZyk7Ci0gICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pbnRJ
RCk7CisgICAgYm9vbCByZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiwgU291cmNlUHJvdmlk
ZXIqKTsKKyAgICBib29sIHNldEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOworICAgIGJvb2wgcmVt
b3ZlQnJlYWtwb2ludChCcmVha3BvaW50Jik7CiAgICAgdm9pZCBjbGVhckJyZWFrcG9pbnRzKCk7
CiAKICAgICB2b2lkIGFjdGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJyZWFrcG9pbnRzQWN0aXZh
dGVkKHRydWUpOyB9CiAgICAgdm9pZCBkZWFjdGl2YXRlQnJlYWtwb2ludHMoKSB7IHNldEJyZWFr
cG9pbnRzQWN0aXZhdGVkKGZhbHNlKTsgfQogICAgIGJvb2wgYnJlYWtwb2ludHNBY3RpdmUoKSBj
b25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZhdGVkOyB9CiAKKyAgICAvLyBCcmVha3Bv
aW50ICJkZWxlZ2F0ZSIgZnVuY3Rpb25hbGl0eS4KKyAgICBib29sIGV2YWx1YXRlQnJlYWtwb2lu
dENvbmRpdGlvbihCcmVha3BvaW50JiwgSlNHbG9iYWxPYmplY3QqKTsKKyAgICB2b2lkIGV2YWx1
YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludCYsIEpTR2xvYmFsT2JqZWN0Kik7CisKICAg
ICBlbnVtIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgewogICAgICAgICBEb250UGF1c2VPbkV4Y2Vw
dGlvbnMsCiAgICAgICAgIFBhdXNlT25BbGxFeGNlcHRpb25zLAogICAgICAgICBQYXVzZU9uVW5j
YXVnaHRFeGNlcHRpb25zCiAgICAgfTsKICAgICBQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBhdXNl
T25FeGNlcHRpb25zU3RhdGUoKSBjb25zdCB7IHJldHVybiBtX3BhdXNlT25FeGNlcHRpb25zU3Rh
dGU7IH0KLSAgICB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSk7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOwogCiAgICAgdm9pZCBzZXRQYXVzZU9uRGVi
dWdnZXJTdGF0ZW1lbnRzKGJvb2wgZW5hYmxlZCkgeyBtX3BhdXNlT25EZWJ1Z2dlclN0YXRlbWVu
dHMgPSBlbmFibGVkOyB9CiAKQEAgLTEwNSw3ICs5NCwxMCBAQCBwdWJsaWM6CiAgICAgUmVhc29u
Rm9yUGF1c2UgcmVhc29uRm9yUGF1c2UoKSBjb25zdCB7IHJldHVybiBtX3JlYXNvbkZvclBhdXNl
OyB9CiAgICAgQnJlYWtwb2ludElEIHBhdXNpbmdCcmVha3BvaW50SUQoKSBjb25zdCB7IHJldHVy
biBtX3BhdXNpbmdCcmVha3BvaW50SUQ7IH0KIAotICAgIHZvaWQgc2V0UGF1c2VPbk5leHRTdGF0
ZW1lbnQoYm9vbCk7CisgICAgdm9pZCBzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsK
KyAgICB2b2lkIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKKyAgICBib29sIHNjaGVk
dWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVha3BvaW50Jik7CisgICAgYm9vbCBjYW5j
ZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKICAgICB2b2lkIGJyZWFr
UHJvZ3JhbSgpOwogICAgIHZvaWQgY29udGludWVQcm9ncmFtKCk7CiAgICAgdm9pZCBzdGVwTmV4
dEV4cHJlc3Npb24oKTsKQEAgLTEyMyw5ICsxMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdXBw
cmVzc0FsbFBhdXNlcygpIGNvbnN0IHsgcmV0dXJuIG1fc3VwcHJlc3NBbGxQYXVzZXM7IH0KICAg
ICB2b2lkIHNldFN1cHByZXNzQWxsUGF1c2VzKGJvb2wgc3VwcHJlc3MpIHsgbV9zdXBwcmVzc0Fs
bFBhdXNlcyA9IHN1cHByZXNzOyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpT
R2xvYmFsT2JqZWN0KiwgU291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5lTnVtYmVyLCBjb25z
dCBXVEY6OlN0cmluZyYgZXJyb3JNZXNzYWdlKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHdpbGxS
dW5NaWNyb3Rhc2soKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUnVuTWljcm90YXNrKCkgeyB9
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0dsb2Jh
bE9iamVjdCosIFNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgV1RG
OjpTdHJpbmcmIGVycm9yTWVzc2FnZSk7CiAKICAgICB2b2lkIGV4Y2VwdGlvbihKU0dsb2JhbE9i
amVjdCosIENhbGxGcmFtZSosIEpTVmFsdWUgZXhjZXB0aW9uVmFsdWUsIGJvb2wgaGFzQ2F0Y2hI
YW5kbGVyKTsKICAgICB2b2lkIGF0U3RhdGVtZW50KENhbGxGcmFtZSopOwpAQCAtMTM3LDEwICsx
MjcsNDYgQEAgcHVibGljOgogICAgIHZvaWQgZGlkRXhlY3V0ZVByb2dyYW0oQ2FsbEZyYW1lKik7
CiAgICAgdm9pZCBkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFtZSopOwogCi0gICAg
dmlydHVhbCB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CisgICAgdm9pZCB3aWxsUnVu
TWljcm90YXNrKCk7CisgICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKTsKIAogICAgIHZvaWQgcmVn
aXN0ZXJDb2RlQmxvY2soQ29kZUJsb2NrKik7CiAKKyAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE2Mjc3Mz4gV2ViIEluc3BlY3RvcjogU2ltcGxpZnkgRGVidWdnZXI6OlNjcmlw
dCB0byB1c2UgU291cmNlUHJvdmlkZXIKKyAgICBzdHJ1Y3QgU2NyaXB0IHsKKyAgICAgICAgU3Ry
aW5nIHVybDsKKyAgICAgICAgU3RyaW5nIHNvdXJjZTsKKyAgICAgICAgU3RyaW5nIHNvdXJjZVVS
TDsKKyAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7CisgICAgICAgIFJlZlB0cjxTb3Vy
Y2VQcm92aWRlcj4gc291cmNlUHJvdmlkZXI7CisgICAgICAgIGludCBzdGFydExpbmUgeyAwIH07
CisgICAgICAgIGludCBzdGFydENvbHVtbiB7IDAgfTsKKyAgICAgICAgaW50IGVuZExpbmUgeyAw
IH07CisgICAgICAgIGludCBlbmRDb2x1bW4geyAwIH07CisgICAgICAgIGJvb2wgaXNDb250ZW50
U2NyaXB0IHsgZmFsc2UgfTsKKyAgICB9OworCisgICAgY2xhc3MgT2JzZXJ2ZXIgeworICAgIHB1
YmxpYzoKKyAgICAgICAgdmlydHVhbCB+T2JzZXJ2ZXIoKSB7IH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUGFyc2VTb3VyY2UoU291cmNlSUQsIGNvbnN0IERlYnVnZ2VyOjpTY3JpcHQmKSB7
IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5n
JiAvKiB1cmwgKi8sIGNvbnN0IFN0cmluZyYgLyogZGF0YSAqLywgaW50IC8qIGZpcnN0TGluZSAq
LywgaW50IC8qIGVycm9yTGluZSAqLywgY29uc3QgU3RyaW5nJiAvKiBlcnJvck1lc3NhZ2UgKi8p
IHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgeyB9CisgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSB7IH0KKworICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqLCBEZWJ1Z2dlckNhbGxGcmFtZSYsIEpTVmFs
dWUgLyogZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRDb250aW51ZSgpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0
aW9uTG9nKEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiAvKiBkYXRhICovKSB7IH0KKyAg
ICAgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChCcmVha3BvaW50QWN0aW9u
SUQpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblByb2JlKEpTR2xv
YmFsT2JqZWN0KiwgQnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCAvKiBiYXRjaElkICovLCB1
bnNpZ25lZCAvKiBzYW1wbGVJZCAqLywgSlNWYWx1ZSAvKiByZXN1bHQgKi8pIHsgfQorICAgIH07
CisKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIGFkZE9ic2VydmVyKE9ic2VydmVyJik7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCByZW1vdmVPYnNlcnZlcihPYnNlcnZlciYsIGJvb2wg
aXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBjbGFzcyBQcm9maWxpbmdDbGllbnQgewogICAgIHB1
YmxpYzoKICAgICAgICAgdmlydHVhbCB+UHJvZmlsaW5nQ2xpZW50KCk7CkBAIC0xNTYsMTYgKzE4
MiwzNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChTZWNvbmRzIHN0YXJ0
VGltZSwgUHJvZmlsaW5nUmVhc29uKTsKIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgdm9pZCBo
YW5kbGVCcmVha3BvaW50SGl0KEpTR2xvYmFsT2JqZWN0KiwgY29uc3QgQnJlYWtwb2ludCYpIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRpb24o
SlNHbG9iYWxPYmplY3QqLCBFeGNlcHRpb24qKSBjb25zdCB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
aGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JQYXVzZSkgeyB9Ci0gICAgdmly
dHVhbCB2b2lkIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKSB7IH0KKyAgICBK
U19FWFBPUlRfUFJJVkFURSBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBjdXJyZW50RGVidWdnZXJD
YWxsRnJhbWUoKTsKKworICAgIGJvb2wgaGFzSGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrKCkg
Y29uc3QKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNlID09IFBhdXNlZEZv
ckV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBtX2hhc0hhbmRsZXJGb3JFeGNlcHRpb25DYWxs
YmFjazsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGN1cnJlbnRFeGNlcHRpb24oKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKKyAg
ICAgICAgcmV0dXJuIG1fY3VycmVudEV4Y2VwdGlvbjsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZv
aWQgYXR0YWNoRGVidWdnZXIoKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdnZXIo
Ym9vbCAvKiBpc0JlaW5nRGVzdHJveWVkICovKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBkaWRQYXVzZShKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZp
cnR1YWwgdm9pZCBoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCosIFJlYXNvbkZvclBhdXNlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3QqKSB7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSB7IH0KKworICAgIHZpcnR1YWwg
Ym9vbCBpc0NvbnRlbnRTY3JpcHQoSlNHbG9iYWxPYmplY3QqKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCos
IEV4Y2VwdGlvbiopIGNvbnN0IHsgfQorCisgICAgYm9vbCBkb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKCkgY29uc3QgeyByZXR1cm4gbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzOyB9
CiAKIHByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEJyZWFrcG9pbnRJRCwgQnJlYWtwb2lu
dCo+IEJyZWFrcG9pbnRJRFRvQnJlYWtwb2ludE1hcDsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDx1
bnNpZ25lZCwgUmVmUHRyPEJyZWFrcG9pbnRzTGlzdD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6
OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPGludD4+IExpbmVUb0JyZWFrcG9pbnRzTWFw
OwotICAgIHR5cGVkZWYgSGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtwb2ludHNNYXAsIFdU
Rjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8
U291cmNlSUQ+PiBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA7CisgICAgSlNWYWx1ZSBleGNlcHRp
b25PckNhdWdodFZhbHVlKEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBjbGFzcyBDbGVhckNvZGVC
bG9ja0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yOwogICAgIGNsYXNzIENsZWFyRGVidWdnZXJSZXF1
ZXN0c0Z1bmN0b3I7CkBAIC0xODgsNyArMjM1LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGVidWdn
ZXImIG1fZGVidWdnZXI7CiAgICAgfTsKIAotICAgIGJvb2wgaGFzQnJlYWtwb2ludChTb3VyY2VJ
RCwgY29uc3QgVGV4dFBvc2l0aW9uJiwgQnJlYWtwb2ludCogaGl0QnJlYWtwb2ludCk7CisgICAg
UmVmUHRyPEJyZWFrcG9pbnQ+IGRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxPYmplY3QqLCBTb3Vy
Y2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJik7CiAKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgZGVi
dWdnZXJQYXJzZURhdGEoU291cmNlSUQsIFNvdXJjZVByb3ZpZGVyKik7CiAKQEAgLTIxNSw3ICsy
NjIsNyBAQCBwcml2YXRlOgogICAgICAgICBCcmVha3BvaW50RGlzYWJsZWQsCiAgICAgICAgIEJy
ZWFrcG9pbnRFbmFibGVkCiAgICAgfTsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZhdGVk
KGJvb2wpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0
ZWQoYm9vbCk7CiAgICAgdm9pZCB0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayosIEJyZWFrcG9p
bnQmLCBCcmVha3BvaW50U3RhdGUpOwogICAgIHZvaWQgYXBwbHlCcmVha3BvaW50cyhDb2RlQmxv
Y2sqKTsKICAgICB2b2lkIHRvZ2dsZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIEJyZWFrcG9pbnRT
dGF0ZSk7CkBAIC0yMjMsNiArMjcwLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRGVidWdn
ZXJSZXF1ZXN0cyhKU0dsb2JhbE9iamVjdCopOwogICAgIHZvaWQgY2xlYXJQYXJzZWREYXRhKCk7
CiAKKyAgICBib29sIGNhbkRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycygpIGNvbnN0OworICAg
IHZvaWQgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXIm
KT4pOworCiAgICAgVk0mIG1fdm07CiAgICAgSGFzaFNldDxKU0dsb2JhbE9iamVjdCo+IG1fZ2xv
YmFsT2JqZWN0czsKICAgICBIYXNoTWFwPFNvdXJjZUlELCBEZWJ1Z2dlclBhcnNlRGF0YSwgV1RG
OjpJbnRIYXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxT
b3VyY2VJRD4+IG1fcGFyc2VEYXRhTWFwOwpAQCAtMjQ4LDE1ICsyOTgsMjQgQEAgcHJpdmF0ZToK
ICAgICBTb3VyY2VJRCBtX2xhc3RFeGVjdXRlZFNvdXJjZUlEOwogICAgIGJvb2wgbV9hZnRlckJs
YWNrYm94ZWRTY3JpcHQgeyBmYWxzZSB9OwogCi0gICAgQnJlYWtwb2ludElEIG1fdG9wQnJlYWtw
b2ludElEOworICAgIHVzaW5nIExpbmVUb0JyZWFrcG9pbnRzTWFwID0gSGFzaE1hcDx1bnNpZ25l
ZCwgQnJlYWtwb2ludHNWZWN0b3IsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0
aFplcm9LZXlIYXNoVHJhaXRzPGludD4+OworICAgIEhhc2hNYXA8U291cmNlSUQsIExpbmVUb0Jy
ZWFrcG9pbnRzTWFwLCBXVEY6OkludEhhc2g8U291cmNlSUQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPFNvdXJjZUlEPj4gbV9icmVha3BvaW50c0ZvclNvdXJjZUlEOworICAg
IEhhc2hTZXQ8UmVmPEJyZWFrcG9pbnQ+PiBtX2JyZWFrcG9pbnRzOworICAgIFJlZlB0cjxCcmVh
a3BvaW50PiBtX3NwZWNpYWxCcmVha3BvaW50OwogICAgIEJyZWFrcG9pbnRJRCBtX3BhdXNpbmdC
cmVha3BvaW50SUQ7Ci0gICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50TWFwIG1fYnJlYWtwb2lu
dElEVG9CcmVha3BvaW50OwotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlE
VG9CcmVha3BvaW50czsKKworICAgIHVuc2lnbmVkIG1fbmV4dFByb2JlU2FtcGxlSWQgeyAxIH07
CisgICAgdW5zaWduZWQgbV9jdXJyZW50UHJvYmVCYXRjaElkIHsgMCB9OwogCiAgICAgUmVmUHRy
PEpTQzo6RGVidWdnZXJDYWxsRnJhbWU+IG1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lOwogCisg
ICAgSGFzaFNldDxPYnNlcnZlcio+IG1fb2JzZXJ2ZXJzOworICAgIGJvb2wgbV9kaXNwYXRjaGlu
Z0Z1bmN0aW9uVG9PYnNlcnZlcnMgeyBmYWxzZSB9OworCiAgICAgUHJvZmlsaW5nQ2xpZW50KiBt
X3Byb2ZpbGluZ0NsaWVudCB7IG51bGxwdHIgfTsKIAorICAgIGJvb2wgbV9kb25lUHJvY2Vzc2lu
Z0RlYnVnZ2VyRXZlbnRzIHsgdHJ1ZSB9OworCiAgICAgZnJpZW5kIGNsYXNzIERlYnVnZ2VyUGF1
c2VkU2NvcGU7CiAgICAgZnJpZW5kIGNsYXNzIFRlbXBvcmFyeVBhdXNlZFN0YXRlOwogICAgIGZy
aWVuZCBjbGFzcyBMTEludE9mZnNldHNFeHRyYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKaW5kZXggNWZiNmU4YTYzOTYz
Li40MjU2M2FjZjNlMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlclByaW1pdGl2ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKQEAgLTI5LDEwICsyOSwxMyBAQAogCiBuYW1lc3BhY2Ug
SlNDIHsKIAotdHlwZWRlZiBzaXplX3QgU291cmNlSUQ7Ci1zdGF0aWMgY29uc3RleHByIFNvdXJj
ZUlEIG5vU291cmNlSUQgPSAwOwordXNpbmcgU291cmNlSUQgPSBzaXplX3Q7Citjb25zdGV4cHIg
U291cmNlSUQgbm9Tb3VyY2VJRCA9IDA7CiAKLXR5cGVkZWYgc2l6ZV90IEJyZWFrcG9pbnRJRDsK
LXN0YXRpYyBjb25zdGV4cHIgQnJlYWtwb2ludElEIG5vQnJlYWtwb2ludElEID0gMDsKK3VzaW5n
IEJyZWFrcG9pbnRJRCA9IHNpemVfdDsKK2NvbnN0ZXhwciBCcmVha3BvaW50SUQgbm9CcmVha3Bv
aW50SUQgPSAwOworCit1c2luZyBCcmVha3BvaW50QWN0aW9uSUQgPSBpbnQ7Citjb25zdGV4cHIg
QnJlYWtwb2ludEFjdGlvbklEIG5vQnJlYWtwb2ludEFjdGlvbklEID0gMDsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckVudmlyb25tZW50LmgKaW5kZXggMjEwMTllZGExZDBjLi5jNWIxMjZlODA1NjEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJv
bm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVu
dmlyb25tZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgU3RvcHdhdGNoOwogfQogCiBuYW1l
c3BhY2UgSlNDIHsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgU291
cmNlQ29kZTsKIGNsYXNzIFZNOwpAQCAtMzksNyArNDAsNiBAQCBjbGFzcyBWTTsKIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBKU0M6
OkpTVmFsdWUgKCpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlND
OjpDYWxsRGF0YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6
QXJnTGlzdCYgYXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlv
bik7CiB0eXBlZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckV2YWx1YXRlSGFuZGxlcikoSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0
aGlzVmFsdWUsIE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwog
CkBAIC01Miw3ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluc3BlY3RvckV2YWx1YXRl
SGFuZGxlciBldmFsdWF0ZUhhbmRsZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZy
b250ZW5kSW5pdGlhbGl6ZWQoKSA9IDA7CiAgICAgdmlydHVhbCBXVEY6OlN0b3B3YXRjaCYgZXhl
Y3V0aW9uU3RvcHdhdGNoKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2NyaXB0RGVidWdTZXJ2
ZXImIHNjcmlwdERlYnVnU2VydmVyKCkgPSAwOworICAgIHZpcnR1YWwgSlNDOjpEZWJ1Z2dlciYg
c2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7CiAgICAgdmlydHVhbCBKU0M6OlZNJiB2bSgpID0gMDsK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDRmZWE0ODE4
NWI0My4uYzJmNzBjN2QwY2M4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKQEAgLTM1LDE4ICszNSwyMiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHVzaW5nIG5hbWVz
cGFjZSBKU0M7CiAKIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLSAgICA6
IFNjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9iamVjdC52bSgpKQorICAgIDogRGVidWdnZXIoZ2xv
YmFsT2JqZWN0LnZtKCkpCiAgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7CiB9
CiAKIHZvaWQgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIo
KQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0dGFjaERlYnVnZ2VyKCk7CisKICAgICBhdHRhY2go
Jm1fZ2xvYmFsT2JqZWN0KTsKIH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CisgICAgSlNDOjpE
ZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBkZXRhY2go
Jm1fZ2xvYmFsT2JqZWN0LCBpc0JlaW5nRGVzdHJveWVkID8gRGVidWdnZXI6Okdsb2JhbE9iamVj
dElzRGVzdHJ1Y3RpbmcgOiBEZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsK
ICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKCk7CkBAIC01NCwxMCArNTgsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKIHZvaWQgSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQog
eworICAgIEpTQzo6RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKICAgICAv
LyBEcm9wIGFsbCBsb2NrcyBzbyBhbm90aGVyIHRocmVhZCBjYW4gd29yayBpbiB0aGUgVk0gd2hp
bGUgd2UgYXJlIG5lc3RlZC4KICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxM
b2NrcygmbV9nbG9iYWxPYmplY3Qudm0oKSk7CiAKLSAgICB3aGlsZSAoIW1fZG9uZVByb2Nlc3Np
bmdEZWJ1Z2dlckV2ZW50cykgeworICAgIHdoaWxlICghZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2
ZW50cygpKSB7CiAgICAgICAgIGlmIChSdW5Mb29wOjpjeWNsZShKU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyOjpydW5Mb29wTW9kZSgpKSA9PSBSdW5Mb29wOjpDeWNsZVJlc3VsdDo6U3Rv
cCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmgKaW5kZXggZGFhYmNmNzY0ZTE3Li44MDFlNzYyZjljMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RT
Y3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0yNSwxMiArMjUsMTIgQEAKIAogI3ByYWdtYSBvbmNlCiAK
LSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAj
aW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKLWNsYXNz
IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgU2NyaXB0RGVi
dWdTZXJ2ZXIgeworY2xhc3MgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6
IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2Jh
bE9iamVjdFNjcmlwdERlYnVnU2VydmVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTQyLDE4ICs0MiwxNCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFJ1bkxvb3BN
b2RlIHJ1bkxvb3BNb2RlKCk7CiAKIHByaXZhdGU6CisgICAgLy8gSlNDOjpEZWJ1Z2dlcgogICAg
IHZvaWQgYXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKICAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJv
b2wgaXNCZWluZ0Rlc3Ryb3llZCkgZmluYWw7Ci0KLSAgICB2b2lkIGRpZFBhdXNlKEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBmaW5hbCB7IH0KLSAgICB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqKSBmaW5hbCB7IH0KICAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkg
ZmluYWw7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICAvLyBOT1RFOiBDdXJyZW50bHkgYWxs
IGV4Y2VwdGlvbnMgYXJlIHJlcG9ydGVkIGF0IHRoZSBBUEkgYm91bmRhcnkgdGhyb3VnaCByZXBv
cnRBUElFeGNlcHRpb24uCiAgICAgLy8gVW50aWwgYSB0aW1lIGNvbWVzIHdoZXJlIGFuIGV4Y2Vw
dGlvbiBjYW4gYmUgY2F1c2VkIG91dHNpZGUgb2YgdGhlIEFQSSAoZS5nLiBzZXRUaW1lb3V0CiAg
ICAgLy8gb3Igc29tZSBvdGhlciBhc3luYyBvcGVyYXRpb24gaW4gYSBwdXJlIEpTQ29udGV4dCkg
d2UgY2FuIGlnbm9yZSBleGNlcHRpb25zIHJlcG9ydGVkIGhlcmUuCi0gICAgdm9pZCByZXBvcnRF
eGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmlu
YWwgeyB9CiAKICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0JiBtX2dsb2JhbE9iamVjdDsKIH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9p
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODYwNDE3OTZhNGUuLjAwMDAwMDAwMDAw
MAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3Bl
Y3RvciB7Ci0KLXR5cGVkZWYgZW51bSB7Ci0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVM
b2csCi0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZSwKLSAgICBTY3JpcHRC
cmVha3BvaW50QWN0aW9uVHlwZVNvdW5kLAotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBl
UHJvYmUKLX0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGU7Ci0KLXN0cnVjdCBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uIHsKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uKFNjcmlwdEJyZWFrcG9p
bnRBY3Rpb25UeXBlIHR5cGUsIGludCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGEpCi0g
ICAgICAgIDogdHlwZSh0eXBlKQotICAgICAgICAsIGlkZW50aWZpZXIoaWRlbnRpZmllcikKLSAg
ICAgICAgLCBkYXRhKGRhdGEpCi0gICAgewotICAgIH0KLQotICAgIFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb25UeXBlIHR5cGU7Ci0gICAgaW50IGlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIGRhdGE7Ci19
OwotCi10eXBlZGVmIFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiBCcmVha3BvaW50QWN0
aW9uczsKLQotc3RydWN0IFNjcmlwdEJyZWFrcG9pbnQgewotICAgIFNjcmlwdEJyZWFrcG9pbnQo
KQotICAgIHsKLSAgICB9Ci0KLSAgICBTY3JpcHRCcmVha3BvaW50KGludCBsaW5lTnVtYmVyLCBp
bnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBhdXRvQ29udGlu
dWUsIHVuc2lnbmVkIGlnbm9yZUNvdW50KQotICAgICAgICA6IGxpbmVOdW1iZXIobGluZU51bWJl
cikKLSAgICAgICAgLCBjb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAgICAsIGNvbmRp
dGlvbihjb25kaXRpb24pCi0gICAgICAgICwgYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKLSAg
ICAgICAgLCBpZ25vcmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7Ci0gICAgfQotCi0gICAgU2Ny
aXB0QnJlYWtwb2ludChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3Ry
aW5nJiBjb25kaXRpb24sIEJyZWFrcG9pbnRBY3Rpb25zJiBhY3Rpb25zLCBib29sIGF1dG9Db250
aW51ZSwgdW5zaWduZWQgaWdub3JlQ291bnQpCi0gICAgICAgIDogbGluZU51bWJlcihsaW5lTnVt
YmVyKQotICAgICAgICAsIGNvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCi0gICAgICAgICwgY29u
ZGl0aW9uKGNvbmRpdGlvbikKLSAgICAgICAgLCBhY3Rpb25zKGFjdGlvbnMpCi0gICAgICAgICwg
YXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25vcmVDb3VudChpZ25vcmVD
b3VudCkKLSAgICB7Ci0gICAgfQotCi0gICAgaW50IGxpbmVOdW1iZXIgeyAwIH07Ci0gICAgaW50
IGNvbHVtbk51bWJlciB7IDAgfTsKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIEJyZWFrcG9p
bnRBY3Rpb25zIGFjdGlvbnM7Ci0gICAgYm9vbCBhdXRvQ29udGludWUgeyBmYWxzZSB9OwotICAg
IHVuc2lnbmVkIGlnbm9yZUNvdW50IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVj
dG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERl
YnVnTGlzdGVuZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVi
dWdMaXN0ZW5lci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDhiZWY0MGVmYmMu
LjAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1Njcmlw
dERlYnVnTGlzdGVuZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0g
KgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgi
QXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20g
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJ
QlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKLSNp
bmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0K
LXN0cnVjdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uOwotCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3Rl
bmVyIHsKLXB1YmxpYzoKLSAgICBzdHJ1Y3QgU2NyaXB0IHsKLSAgICAgICAgU3RyaW5nIHVybDsK
LSAgICAgICAgU3RyaW5nIHNvdXJjZTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICAg
ICAgU3RyaW5nIHNvdXJjZU1hcHBpbmdVUkw7Ci0gICAgICAgIFJlZlB0cjxKU0M6OlNvdXJjZVBy
b3ZpZGVyPiBzb3VyY2VQcm92aWRlcjsKLSAgICAgICAgaW50IHN0YXJ0TGluZSB7MH07Ci0gICAg
ICAgIGludCBzdGFydENvbHVtbiB7MH07Ci0gICAgICAgIGludCBlbmRMaW5lIHswfTsKLSAgICAg
ICAgaW50IGVuZENvbHVtbiB7MH07Ci0gICAgICAgIGJvb2wgaXNDb250ZW50U2NyaXB0IHtmYWxz
ZX07Ci0gICAgfTsKLQotICAgIHZpcnR1YWwgflNjcmlwdERlYnVnTGlzdGVuZXIoKSB7IH0KLQot
ICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3Jp
cHQmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGlu
ZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB3
aWxsUnVuTWljcm90YXNrKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2so
KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCos
IEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGJy
ZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24m
LCB1bnNpZ25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHJlc3Vs
dCkgPSAwOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZGVkMTI5NWY5NDMuLjAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAorKysg
L2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAy
MDA5LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHly
aWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTMgVW5pdmVyc2l0eSBvZiBXYXNoaW5ndG9uLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAq
ICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQg
SVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9S
IElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
Ci0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCi0KLSNpbmNs
dWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKLSNp
bmNsdWRlICJFeGNlcHRpb24uaCIKLSNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCIK
LSNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiU291cmNlUHJvdmlk
ZXIuaCIKLSNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvU2V0
Rm9yU2NvcGUuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXVzaW5nIG5hbWVzcGFjZSBK
U0M7Ci0KLVNjcmlwdERlYnVnU2VydmVyOjpTY3JpcHREZWJ1Z1NlcnZlcihWTSYgdm0pCi0gICAg
OiBEZWJ1Z2dlcih2bSkKLXsKLX0KLQotU2NyaXB0RGVidWdTZXJ2ZXI6On5TY3JpcHREZWJ1Z1Nl
cnZlcigpCi17Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEJyZWFrcG9pbnRBY3Rp
b25zKEJyZWFrcG9pbnRJRCBpZCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtw
b2ludCkKLXsKLSAgICBBU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOwotICAgIEFTU0VSVCgh
bV9icmVha3BvaW50SURUb0FjdGlvbnMuY29udGFpbnMoaWQpKTsKLQotICAgIG1fYnJlYWtwb2lu
dElEVG9BY3Rpb25zLnNldChpZCwgc2NyaXB0QnJlYWtwb2ludC5hY3Rpb25zKTsKLX0KLQotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludElE
IGlkKQotewotICAgIEFTU0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0KLSAgICBtX2JyZWFr
cG9pbnRJRFRvQWN0aW9ucy5yZW1vdmUoaWQpOwotfQotCi1jb25zdCBCcmVha3BvaW50QWN0aW9u
cyYgU2NyaXB0RGVidWdTZXJ2ZXI6OmdldEFjdGlvbnNGb3JCcmVha3BvaW50KEJyZWFrcG9pbnRJ
RCBpZCkKLXsKLSAgICBBU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOwotCi0gICAgYXV0byBl
bnRyeSA9IG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmZpbmQoaWQpOwotICAgIGlmIChlbnRyeSAh
PSBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5lbmQoKSkKLSAgICAgICAgcmV0dXJuIGVudHJ5LT52
YWx1ZTsKLQotICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxCcmVha3BvaW50QWN0aW9ucz4gZW1w
dHlBY3Rpb25WZWN0b3IgPSBCcmVha3BvaW50QWN0aW9ucygpOwotICAgIHJldHVybiBlbXB0eUFj
dGlvblZlY3RvcjsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6Y2xlYXJCcmVha3BvaW50
QWN0aW9ucygpCi17Ci0gICAgbV9icmVha3BvaW50SURUb0FjdGlvbnMuY2xlYXIoKTsKLX0KLQot
Ym9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNj
cmlwdEJyZWFrcG9pbnRBY3Rpb24mIGJyZWFrcG9pbnRBY3Rpb24pCi17Ci0gICAgRGVidWdnZXJD
YWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7
Ci0KLSAgICBzd2l0Y2ggKGJyZWFrcG9pbnRBY3Rpb24udHlwZSkgewotICAgIGNhc2UgU2NyaXB0
QnJlYWtwb2ludEFjdGlvblR5cGVMb2c6Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3Rl
bmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBs
aXN0ZW5lci5icmVha3BvaW50QWN0aW9uTG9nKGRlYnVnZ2VyQ2FsbEZyYW1lLmdsb2JhbE9iamVj
dCgpLCBicmVha3BvaW50QWN0aW9uLmRhdGEpOwotICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7
Ci0KLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGU6IHsKLSAgICAg
ICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247Ci0gICAgICAgIEpTT2JqZWN0KiBzY29w
ZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7Ci0gICAgICAgIGRlYnVnZ2VyQ2FsbEZyYW1lLmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGJyZWFrcG9pbnRBY3Rpb24uZGF0YSwgc2NvcGVFeHRl
bnNpb25PYmplY3QsIGV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0gICAgICAg
ICAgICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGV4
Y2VwdGlvbik7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGNhc2UgU2NyaXB0QnJlYWtw
b2ludEFjdGlvblR5cGVTb3VuZDoKLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJz
KFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgICAgIGxpc3Rl
bmVyLmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChicmVha3BvaW50QWN0aW9uLmlkZW50aWZpZXIpOwot
ICAgICAgICB9KTsKLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb25UeXBlUHJvYmU6IHsKLSAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247
Ci0gICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51bGxwdHI7Ci0gICAg
ICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVF
eHRlbnNpb24oYnJlYWtwb2ludEFjdGlvbi5kYXRhLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhj
ZXB0aW9uKTsKLSAgICAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZGVi
dWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGlmIChleGNlcHRpb24pCi0g
ICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwotCi0g
ICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVu
ZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci5icmVha3BvaW50QWN0aW9uUHJv
YmUoZ2xvYmFsT2JqZWN0LCBicmVha3BvaW50QWN0aW9uLCBtX2N1cnJlbnRQcm9iZUJhdGNoSWQs
IG1fbmV4dFByb2JlU2FtcGxlSWQrKywgZXhjZXB0aW9uID8gZXhjZXB0aW9uLT52YWx1ZSgpIDog
cmVzdWx0KTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIGRlZmF1
bHQ6Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgIH0KLQotICAgIHJldHVybiB0
cnVlOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzb3VyY2VQYXJzZWQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBpbnQg
ZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKLXsKLSAgICAvLyBQcmVlbXB0
aXZlbHkgY2hlY2sgd2hldGhlciB3ZSBjYW4gZGlzcGF0Y2ggc28gdGhhdCB3ZSBkb24ndCBkbyBh
bnkgdW5uZWNlc3NhcnkgYWxsb2NhdGlvbnMuCi0gICAgaWYgKCFjYW5EaXNwYXRjaEZ1bmN0aW9u
VG9MaXN0ZW5lcnMoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgaWYgKGVycm9yTGluZSAhPSAt
MSkgewotICAgICAgICBhdXRvIHNvdXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkwo
KTsKLSAgICAgICAgYXV0byBkYXRhID0gc291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5n
KCk7Ci0gICAgICAgIGF1dG8gZmlyc3RMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRp
b24oKS5tX2xpbmUub25lQmFzZWRJbnQoKTsKLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlz
dGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgICAg
IGxpc3RlbmVyLmZhaWxlZFRvUGFyc2VTb3VyY2Uoc291cmNlVVJMLCBkYXRhLCBmaXJzdExpbmUs
IGVycm9yTGluZSwgZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIHJldHVybjsK
LSAgICB9Ci0KLSAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc291cmNlUHJvdmlkZXItPmFz
SUQoKTsKLQotICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzczPiBXZWIg
SW5zcGVjdG9yOiBTaW1wbGlmeSBTY3JpcHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgdG8gdXNlIFNv
dXJjZVByb3ZpZGVyCi0gICAgU2NyaXB0RGVidWdMaXN0ZW5lcjo6U2NyaXB0IHNjcmlwdDsKLSAg
ICBzY3JpcHQuc291cmNlUHJvdmlkZXIgPSBzb3VyY2VQcm92aWRlcjsKLSAgICBzY3JpcHQudXJs
ID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgpOwotICAgIHNjcmlwdC5zb3VyY2UgPSBzb3Vy
Y2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICBzY3JpcHQuc3RhcnRMaW5lID0g
c291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVyb0Jhc2VkSW50KCk7Ci0g
ICAgc2NyaXB0LnN0YXJ0Q29sdW1uID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5t
X2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsKLSAgICBzY3JpcHQuaXNDb250ZW50U2NyaXB0ID0gaXND
b250ZW50U2NyaXB0KGdsb2JhbE9iamVjdCk7Ci0gICAgc2NyaXB0LnNvdXJjZVVSTCA9IHNvdXJj
ZVByb3ZpZGVyLT5zb3VyY2VVUkxEaXJlY3RpdmUoKTsKLSAgICBzY3JpcHQuc291cmNlTWFwcGlu
Z1VSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VNYXBwaW5nVVJMRGlyZWN0aXZlKCk7Ci0KLSAg
ICBpbnQgc291cmNlTGVuZ3RoID0gc2NyaXB0LnNvdXJjZS5sZW5ndGgoKTsKLSAgICBpbnQgbGlu
ZUNvdW50ID0gMTsKLSAgICBpbnQgbGFzdExpbmVTdGFydCA9IDA7Ci0gICAgZm9yIChpbnQgaSA9
IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkgewotICAgICAgICBpZiAoc2NyaXB0LnNvdXJjZVtp
XSA9PSAnXG4nKSB7Ci0gICAgICAgICAgICBsaW5lQ291bnQgKz0gMTsKLSAgICAgICAgICAgIGxh
c3RMaW5lU3RhcnQgPSBpICsgMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHNjcmlwdC5lbmRM
aW5lID0gc2NyaXB0LnN0YXJ0TGluZSArIGxpbmVDb3VudCAtIDE7Ci0gICAgaWYgKGxpbmVDb3Vu
dCA9PSAxKQotICAgICAgICBzY3JpcHQuZW5kQ29sdW1uID0gc2NyaXB0LnN0YXJ0Q29sdW1uICsg
c291cmNlTGVuZ3RoOwotICAgIGVsc2UKLSAgICAgICAgc2NyaXB0LmVuZENvbHVtbiA9IHNvdXJj
ZUxlbmd0aCAtIGxhc3RMaW5lU3RhcnQ7Ci0KLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5l
cnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBsaXN0ZW5l
ci5kaWRQYXJzZVNvdXJjZShzb3VyY2VJRCwgc2NyaXB0KTsKLSAgICB9KTsKLX0KLQotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6d2lsbFJ1bk1pY3JvdGFzaygpCi17Ci0gICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAg
ICAgICAgbGlzdGVuZXIud2lsbFJ1bk1pY3JvdGFzaygpOwotICAgIH0pOwotfQotCi12b2lkIFNj
cmlwdERlYnVnU2VydmVyOjpkaWRSdW5NaWNyb3Rhc2soKQotewotICAgIGRpc3BhdGNoRnVuY3Rp
b25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAg
ICAgIGxpc3RlbmVyLmRpZFJ1bk1pY3JvdGFzaygpOwotICAgIH0pOwotfQotCi1ib29sIFNjcmlw
dERlYnVnU2VydmVyOjpjYW5EaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKSBjb25zdAotewot
ICAgIGlmIChtX2NhbGxpbmdMaXN0ZW5lcnMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBp
ZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpc3BhdGNoRnVuY3Rpb25U
b0xpc3RlbmVycyhGdW5jdGlvbjx2b2lkKFNjcmlwdERlYnVnTGlzdGVuZXImKT4gY2FsbGJhY2sp
Ci17Ci0gICAgaWYgKCFjYW5EaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKSkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1fY2FsbGluZ0xpc3RlbmVy
cywgdHJ1ZSk7Ci0KLSAgICBmb3IgKGF1dG8qIGxpc3RlbmVyIDogY29weVRvVmVjdG9yKG1fbGlz
dGVuZXJzKSkKLSAgICAgICAgY2FsbGJhY2soKmxpc3RlbmVyKTsKLX0KLQotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6bm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpCi17Ci0gICAg
bV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKLX0KLQotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlQnJlYWtwb2ludEhpdChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2ludCkKLXsKLSAgICBBU1NF
UlQoaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKTsKLQotICAgIG1fY3VycmVudFByb2JlQmF0Y2hJ
ZCsrOwotCi0gICAgYXV0byBlbnRyeSA9IG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmZpbmQoYnJl
YWtwb2ludC5pZCk7Ci0gICAgaWYgKGVudHJ5ICE9IG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmVu
ZCgpKSB7Ci0gICAgICAgIEJyZWFrcG9pbnRBY3Rpb25zIGFjdGlvbnMgPSBlbnRyeS0+dmFsdWU7
Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYWN0aW9ucy5zaXplKCk7ICsraSkgewot
ICAgICAgICAgICAgaWYgKCFldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uc1tpXSkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgaWYgKCFpc0F0dGFjaGVkKGdsb2Jh
bE9iamVjdCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgfQotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSBjb25zdAotewotICAgIHJlcG9ydEV4Y2VwdGlvbihnbG9iYWxPYmplY3QsIGV4
Y2VwdGlvbik7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmhhbmRsZVBhdXNlKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIERlYnVnZ2VyOjpSZWFzb25Gb3JQYXVzZSkKLXsKLSAg
ICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBs
aXN0ZW5lcikgewotICAgICAgICBBU1NFUlQoaXNQYXVzZWQoKSk7Ci0gICAgICAgIGF1dG8mIGRl
YnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7Ci0gICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLnNjb3BlKCktPmdsb2JhbE9iamVj
dCgpOwotICAgICAgICBhdXRvIGpzQ2FsbEZyYW1lID0gdG9KUyhnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdCwgSmF2YVNjcmlwdENhbGxGcmFtZTo6Y3JlYXRlKGRlYnVnZ2VyQ2FsbEZyYW1lKS5w
dHIoKSk7Ci0gICAgICAgIGxpc3RlbmVyLmRpZFBhdXNlKGdsb2JhbE9iamVjdCwganNDYWxsRnJh
bWUsIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoZ2xvYmFsT2JqZWN0KSk7Ci0gICAgfSk7Ci0KLSAg
ICBkaWRQYXVzZShnbG9iYWxPYmplY3QpOwotCi0gICAgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzID0gZmFsc2U7Ci0gICAgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKLQotICAgIGRp
ZENvbnRpbnVlKGdsb2JhbE9iamVjdCk7Ci0KLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5l
cnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBsaXN0ZW5l
ci5kaWRDb250aW51ZSgpOwotICAgIH0pOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjph
ZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lcikKLXsKLSAgICBBU1NFUlQo
bGlzdGVuZXIpOwotCi0gICAgYm9vbCB3YXNFbXB0eSA9IG1fbGlzdGVuZXJzLmlzRW1wdHkoKTsK
LSAgICBtX2xpc3RlbmVycy5hZGQobGlzdGVuZXIpOwotCi0gICAgLy8gRmlyc3QgbGlzdGVuZXIu
IEF0dGFjaCB0aGUgZGVidWdnZXIuCi0gICAgaWYgKHdhc0VtcHR5KQotICAgICAgICBhdHRhY2hE
ZWJ1Z2dlcigpOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpyZW1vdmVMaXN0ZW5lcihT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKQotewot
ICAgIEFTU0VSVChsaXN0ZW5lcik7Ci0KLSAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIp
OwotCi0gICAgLy8gTGFzdCBsaXN0ZW5lci4gRGV0YWNoIHRoZSBkZWJ1Z2dlci4KLSAgICBpZiAo
bV9saXN0ZW5lcnMuaXNFbXB0eSgpKQotICAgICAgICBkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVz
dHJveWVkKTsKLX0KLQotSlNDOjpKU1ZhbHVlIFNjcmlwdERlYnVnU2VydmVyOjpleGNlcHRpb25P
ckNhdWdodFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKLXsKLSAgICBp
ZiAocmVhc29uRm9yUGF1c2UoKSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pCi0gICAgICAgIHJldHVy
biBjdXJyZW50RXhjZXB0aW9uKCk7Ci0KLSAgICBmb3IgKFJlZlB0cjxEZWJ1Z2dlckNhbGxGcmFt
ZT4gZnJhbWUgPSAmY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT5jYWxsZXJGcmFtZSgpKSB7Ci0gICAgICAgIERlYnVnZ2VyU2NvcGUmIHNjb3BlID0gKmZy
YW1lLT5zY29wZSgpOwotICAgICAgICBpZiAoc2NvcGUuaXNDYXRjaFNjb3BlKCkpCi0gICAgICAg
ICAgICByZXR1cm4gc2NvcGUuY2F1Z2h0VmFsdWUoZ2xvYmFsT2JqZWN0KTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4geyB9OwotfQotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdjMTEwZDc0YzExLi4wMDAwMDAwMDAwMDAKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyAv
ZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTMsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChD
KSAyMDEwLTIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVk
ZSAiRGVidWdnZXIuaCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVkZSAi
U2NyaXB0RGVidWdMaXN0ZW5lci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7
Ci1jbGFzcyBKU0dsb2JhbE9iamVjdDsKLWNsYXNzIFZNOwotfQotCi1uYW1lc3BhY2UgSW5zcGVj
dG9yIHsKLQotY2xhc3MgSlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJs
aWMgSlNDOjpEZWJ1Z2dlciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0RGVidWdT
ZXJ2ZXIpOwotICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgLy8g
RklYTUU6IE1vdmUgQnJlYWtwb2ludEFjdGlvbiBoYW5kbGluZyBpbnRvIEpTQzo6RGVidWdnZXIg
b3IgSW5zcGVjdG9yRGVidWdnZXJBZ2VudC4KLSAgICB2b2lkIHNldEJyZWFrcG9pbnRBY3Rpb25z
KEpTQzo6QnJlYWtwb2ludElELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7Ci0gICAgdm9pZCBy
ZW1vdmVCcmVha3BvaW50QWN0aW9ucyhKU0M6OkJyZWFrcG9pbnRJRCk7Ci0gICAgdm9pZCBjbGVh
ckJyZWFrcG9pbnRBY3Rpb25zKCk7Ci0KLSAgICBjb25zdCBCcmVha3BvaW50QWN0aW9ucyYgZ2V0
QWN0aW9uc0ZvckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQpOwotCi0gICAgdm9pZCBhZGRM
aXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihT
Y3JpcHREZWJ1Z0xpc3RlbmVyKiwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKLQotcHJvdGVjdGVk
OgotICAgIFNjcmlwdERlYnVnU2VydmVyKEpTQzo6Vk0mKTsKLSAgICB+U2NyaXB0RGVidWdTZXJ2
ZXIoKSBvdmVycmlkZTsKLQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpID0gMDsK
LSAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSA9
IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopID0g
MDsKLSAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSA9IDA7Ci0gICAg
dmlydHVhbCBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qg
PSAwOwotICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVj
dCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgPSAwOwotCi0gICAgYm9vbCBldmFsdWF0ZUJyZWFr
cG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYpOwotCi0gICAgYm9vbCBj
YW5EaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoKSBjb25zdDsKLSAgICB2b2lkIGRpc3BhdGNo
RnVuY3Rpb25Ub0xpc3RlbmVycyhGdW5jdGlvbjx2b2lkKFNjcmlwdERlYnVnTGlzdGVuZXImKT4g
Y2FsbGJhY2spOwotCi0gICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgeyB0
cnVlIH07Ci0KLXByaXZhdGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEpTQzo6QnJlYWtwb2ludElE
LCBCcmVha3BvaW50QWN0aW9ucz4gQnJlYWtwb2ludElEVG9BY3Rpb25zTWFwOwotCi0gICAgdm9p
ZCBzb3VyY2VQYXJzZWQoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U291cmNlUHJvdmlkZXIq
LCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJpbmcmIGVycm9yTXNnKSBmaW5hbDsKLSAgICB2b2lk
IHdpbGxSdW5NaWNyb3Rhc2soKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIGZp
bmFsOwotICAgIHZvaWQgaGFuZGxlQnJlYWtwb2ludEhpdChKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgSlNDOjpCcmVha3BvaW50JikgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVFeGNlcHRpb25J
bkJyZWFrcG9pbnRDb25kaXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9u
KikgY29uc3QgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5
RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpIGZpbmFsOwotCi0gICAgSlNDOjpKU1ZhbHVl
IGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotCi0gICAgQnJl
YWtwb2ludElEVG9BY3Rpb25zTWFwIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zOwotICAgIEhhc2hT
ZXQ8U2NyaXB0RGVidWdMaXN0ZW5lcio+IG1fbGlzdGVuZXJzOwotICAgIGJvb2wgbV9jYWxsaW5n
TGlzdGVuZXJzIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBtX25leHRQcm9iZVNhbXBsZUlkIHsg
MSB9OwotICAgIHVuc2lnbmVkIG1fY3VycmVudFByb2JlQmF0Y2hJZCB7IDAgfTsKLX07Ci0KLX0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAppbmRleCBi
ZmQ3Nzc0Y2YzZDcuLjk3Y2VhOTRiZDVhZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAK
QEAgLTI2LDEwICsyNiwxMCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckF1ZGl0QWdlbnQuaCIKIAorI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJPYmplY3RDb25z
dHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9T
dHJpbmdCdWlsZGVyLmg+CkBAIC0xMDUsOSArMTA1LDkgQEAgdm9pZCBJbnNwZWN0b3JBdWRpdEFn
ZW50OjpydW4oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRlc3QsIGNv
bnMKIAogICAgIE9wdGlvbmFsPGludD4gc2F2ZWRSZXN1bHRJbmRleDsKIAotICAgIFNjcmlwdERl
YnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwor
ICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gbV9zY3JpcHREZWJ1Z1Nl
cnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVy
LnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucyk7CisgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uRXhjZXB0aW9u
c1N0YXRlKERlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25zb2xl
KCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5leGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlvblN0
cmluZy50b1N0cmluZygpLCBXVEZNb3ZlKG9wdGlvbnMpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2
ZWRSZXN1bHRJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKaW5kZXggODNiY2NhNjI5NzU0
Li4wNmIxYTgzZmQ4MjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKQEAgLTMyLDExICszMiwx
NCBAQAogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxl
Lmg+CiAKK25hbWVzcGFjZSBKU0MgeworY2xhc3MgRGVidWdnZXI7Cit9CisKIG5hbWVzcGFjZSBJ
bnNwZWN0b3IgewogCiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0
TWFuYWdlcjsKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBTdHJpbmcgRXJyb3JT
dHJpbmc7CiAKIGNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckF1ZGl0QWdlbnQgOiBw
dWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgQXVkaXRCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgewpAQCAtNzEsNyArNzQsNyBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIFJlZlB0
cjxBdWRpdEJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgU2NyaXB0RGVi
dWdTZXJ2ZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CisgICAgSlNDOjpEZWJ1Z2dlciYgbV9zY3Jp
cHREZWJ1Z1NlcnZlcjsKIAogICAgIEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+IG1faW5qZWN0
ZWRXZWJJbnNwZWN0b3JBdWRpdFZhbHVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggMjljMTMwYjk2NWNhLi42ZjA2MTJiMjZjNmIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMiwxMiArMzIsMTYgQEAKIAogI2luY2x1ZGUgIkFzeW5j
U3RhY2tUcmFjZS5oIgogI2luY2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaCIKKyNpbmNs
dWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdC5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2lu
Y2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxs
RnJhbWUuaCIKICNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlw
dENhbGxTdGFjay5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKLSNpbmNs
dWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2lu
Y2x1ZGUgPHd0Zi9KU09OVmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtNTAsOSArNTQsOSBAQCBjb25zdCBjaGFy
KiBjb25zdCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCA9ICJi
YWNrdHJhY2UiOwogLy8gYWNjb3JkaW5nIHRvIHRoZSBicmVha3BvaW50IGFjdGlvbiBpZGVudGlm
aWVyIGFzc2lnbmVkIGJ5IHRoZSBmcm9udGVuZC4gQSBicmVha3BvaW50IG1heQogLy8gaGF2ZSBz
ZXZlcmFsIG9iamVjdCBncm91cHMsIGFuZCBvYmplY3RzIGZyb20gc2V2ZXJhbCBiYWNrZW5kIGJy
ZWFrcG9pbnQgYWN0aW9uIGluc3RhbmNlcyBtYXkKIC8vIGNyZWF0ZSBvYmplY3RzIGluIHRoZSBz
YW1lIGdyb3VwLgotc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24o
Y29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9uKQorc3RhdGljIFN0cmluZyBvYmpl
Y3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgaWQpCiB7
Ci0gICAgcmV0dXJuIG1ha2VTdHJpbmcoImJyZWFrcG9pbnQtYWN0aW9uLSIsIGFjdGlvbi5pZGVu
dGlmaWVyKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZygiYnJlYWtwb2ludC1hY3Rpb24tIiwgaWQp
OwogfQogCiBzdGF0aWMgYm9vbCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYg
c291cmNlVVJMKQpAQCAtNjAsNiArNjQsMTU2IEBAIHN0YXRpYyBib29sIGlzV2ViS2l0SW5qZWN0
ZWRTY3JpcHQoY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCiAgICAgcmV0dXJuIHNvdXJjZVVSTC5z
dGFydHNXaXRoKCJfX0luamVjdGVkU2NyaXB0XyIpICYmIHNvdXJjZVVSTC5lbmRzV2l0aCgiLmpz
Iik7CiB9CiAKK3N0YXRpYyBPcHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4g
YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHR5cGVTdHJpbmcpCit7CisgICAgYXV0byB0eXBlID0gSW5zcGVjdG9yOjpQ
cm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlPih0eXBlU3Ry
aW5nKTsKKyAgICBpZiAoIXR5cGUpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5n
KCJVbmtub3duIGJyZWFrcG9pbnQgYWN0aW9uIHR5cGU6ICJfcywgdHlwZVN0cmluZyk7CisgICAg
ICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CisgICAgfQorCisgICAgc3dpdGNoICgqdHlwZSkgewor
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246
OlR5cGU6OkxvZzoKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBl
OjpMb2c7CisKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZToKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2lu
dDo6QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZTsKKworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kOgorICAgICAgICByZXR1
cm4gSlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OlNvdW5kOworCisgICAgY2FzZSBJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6UHJvYmU6
CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6UHJvYmU7Cisg
ICAgfQorCisgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9w
dDsKK30KKwordGVtcGxhdGUgPHR5cGVuYW1lIFQ+CitzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRP
cHRpb25zKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRp
b25zUGF5bG9hZCwgRnVuY3Rpb248VChjb25zdCBTdHJpbmcmLCBKU0M6OkJyZWFrcG9pbnQ6OkFj
dGlvbnNWZWN0b3ImJiwgYm9vbCwgc2l6ZV90KT4gY2FsbGJhY2spCit7CisgICAgU3RyaW5nIGNv
bmRpdGlvbjsKKyAgICBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3IgYWN0aW9uczsKKyAg
ICBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlOworICAgIHNpemVfdCBpZ25vcmVDb3VudCA9IDA7
CisKKyAgICBpZiAob3B0aW9uc1BheWxvYWQpIHsKKyAgICAgICAgb3B0aW9uc1BheWxvYWQtPmdl
dFN0cmluZygiY29uZGl0aW9uIl9zLCBjb25kaXRpb24pOworCisgICAgICAgIFJlZlB0cjxKU09O
OjpBcnJheT4gYWN0aW9uc1BheWxvYWQ7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5nZXRBcnJh
eSgiYWN0aW9ucyJfcywgYWN0aW9uc1BheWxvYWQpOworICAgICAgICBpZiAoYXV0byBjb3VudCA9
IGFjdGlvbnNQYXlsb2FkID8gYWN0aW9uc1BheWxvYWQtPmxlbmd0aCgpIDogMCkgeworICAgICAg
ICAgICAgYWN0aW9ucy5yZXNlcnZlQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgICAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIFJlZlB0
cjxKU09OOjpPYmplY3Q+IGFjdGlvbk9iamVjdDsKKyAgICAgICAgICAgICAgICBpZiAoIWFjdGlv
bnNQYXlsb2FkLT5nZXQoaSktPmFzT2JqZWN0KGFjdGlvbk9iamVjdCkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24tb2JqZWN0IGl0ZW0gaW4gZ2l2
ZW4gYWN0aW9ucyJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBTdHJpbmcgYWN0aW9uVHlwZVN0cmluZzsKKyAg
ICAgICAgICAgICAgICBpZiAoIWFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCBhY3Rp
b25UeXBlU3RyaW5nKSkgeworICAgICAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNz
aW5nIHR5cGUgZm9yIGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRv
IGFjdGlvblR5cGUgPSBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhlcnJvclN0cmluZywg
YWN0aW9uVHlwZVN0cmluZyk7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25UeXBlKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4geyB9OworCisgICAgICAgICAgICAgICAgSlNDOjpCcmVh
a3BvaW50OjpBY3Rpb24gYWN0aW9uKCphY3Rpb25UeXBlKTsKKworICAgICAgICAgICAgICAgIGFj
dGlvbk9iamVjdC0+Z2V0U3RyaW5nKCJkYXRhIl9zLCBhY3Rpb24uZGF0YSk7CisKKyAgICAgICAg
ICAgICAgICAvLyBTcGVjaWZ5aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJl
IHVzZWQgdG8gY29ycmVsYXRlIHByb2JlIHNhbXBsZXMKKyAgICAgICAgICAgICAgICAvLyBpbiB0
aGUgZnJvbnRlbmQgYWNyb3NzIG11bHRpcGxlIGJhY2tlbmQgcHJvYmUgYWN0aW9ucyBhbmQgc2Vn
cmVnYXRlIG9iamVjdCBncm91cHMuCisgICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0LT5nZXRJ
bnRlZ2VyKCJpZCJfcywgYWN0aW9uLmlkKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbnMuYXBw
ZW5kKFdURk1vdmUoYWN0aW9uKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBvcHRpb25zUGF5bG9hZC0+Z2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGlu
dWUpOworICAgICAgICBvcHRpb25zUGF5bG9hZC0+Z2V0SW50ZWdlcigiaWdub3JlQ291bnQiX3Ms
IGlnbm9yZUNvdW50KTsKKyAgICB9CisKKyAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBX
VEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKK30KKworT3B0aW9u
YWw8SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXls
b2FkKQoreworICAgIHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFsPFByb3Rv
Y29sQnJlYWtwb2ludD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChjb25zdCBT
dHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9u
cywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJv
dG9jb2xCcmVha3BvaW50PiB7CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQoc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlv
bnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGlu
ZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlv
bnNQYXlsb2FkKQoreworICAgIHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFs
PFByb3RvY29sQnJlYWtwb2ludD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChj
b25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYg
YWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9u
YWw8UHJvdG9jb2xCcmVha3BvaW50PiB7CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9p
bnQodXJsLCBpc1JlZ2V4LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgV1RG
TW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAgfSk7Cit9CisK
K0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVh
a3BvaW50KCkgPSBkZWZhdWx0OworCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJy
ZWFrcG9pbnQ6OlByb3RvY29sQnJlYWtwb2ludChKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCB1bnNp
Z25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29u
ZGl0aW9uLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1
dG9Db250aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChtYWtlU3RyaW5nKHNv
dXJjZUlELCAnOicsIGxpbmVOdW1iZXIsICc6JywgY29sdW1uTnVtYmVyKSkKKyNpZiBBU1NFUlRf
RU5BQkxFRAorICAgICwgbV9zb3VyY2VJRChzb3VyY2VJRCkKKyNlbmRpZgorICAgICwgbV9saW5l
TnVtYmVyKGxpbmVOdW1iZXIpCisgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCisg
ICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisgICAgLCBtX2FjdGlvbnMoV1RGTW92ZShhY3Rp
b25zKSkKKyAgICAsIG1fYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKKyAgICAsIG1faWdub3Jl
Q291bnQoaWdub3JlQ291bnQpCit7Cit9CisKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3Rv
Y29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBib29s
IGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFj
dGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpCisgICAgOiBtX2lk
KG1ha2VTdHJpbmcoaXNSZWdleCA/ICIvIiA6ICIiLCB1cmwsIGlzUmVnZXggPyAiLyIgOiAiIiwg
JzonLCBsaW5lTnVtYmVyLCAnOicsIGNvbHVtbk51bWJlcikpCisgICAgLCBtX3VybCh1cmwpCisg
ICAgLCBtX2lzUmVnZXgoaXNSZWdleCkKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQor
ICAgICwgbV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQorICAgICwgbV9jb25kaXRpb24oY29u
ZGl0aW9uKQorICAgICwgbV9hY3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgLCBtX2F1dG9D
b250aW51ZShhdXRvQ29udGludWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGlnbm9yZUNvdW50KQor
eworfQorCitSZWY8SlNDOjpCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90
b2NvbEJyZWFrcG9pbnQ6OmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJ
RCBkZWJ1Z2dlckJyZWFrcG9pbnRJRCwgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoZGVidWdnZXJCcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7
CisgICAgQVNTRVJUKHNvdXJjZUlEICE9IEpTQzo6bm9Tb3VyY2VJRCk7CisgICAgQVNTRVJUKHNv
dXJjZUlEID09IG1fc291cmNlSUQgfHwgbV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOwor
CisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnQgPSBKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZShk
ZWJ1Z2dlckJyZWFrcG9pbnRJRCwgbV9jb25kaXRpb24sIGNvcHlUb1ZlY3RvcihtX2FjdGlvbnMp
LCBtX2F1dG9Db250aW51ZSwgbV9pZ25vcmVDb3VudCk7CisgICAgZGVidWdnZXJCcmVha3BvaW50
LT5saW5rKHNvdXJjZUlELCBtX2xpbmVOdW1iZXIsIG1fY29sdW1uTnVtYmVyKTsKKyAgICByZXR1
cm4gZGVidWdnZXJCcmVha3BvaW50OworfQorCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OlByb3RvY29sQnJlYWtwb2ludDo6bWF0Y2hlcyhjb25zdCBTdHJpbmcmIHNjcmlwdFVSTCkgY29u
c3QKK3sKKyAgICBBU1NFUlQobV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOworCisgICAg
aWYgKG1faXNSZWdleCkgeworICAgICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJl
Z2V4KG1fdXJsKTsKKyAgICAgICAgcmV0dXJuIHJlZ2V4Lm1hdGNoKHNjcmlwdFVSTCkgIT0gLTE7
CisgICAgfQorICAgIHJldHVybiBtX3VybCA9PSBzY3JpcHRVUkw7Cit9CisKK1JlZlB0cjxKU0M6
OkJyZWFrcG9pbnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZy
b21QYXlsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25zUGF5bG9hZCkKK3sKKyAgICByZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxSZWZQ
dHI8SlNDOjpCcmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkLCBbXSAoY29u
c3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFj
dGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIHsKKyAgICAgICAg
cmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6Y3JlYXRlKEpTQzo6bm9CcmVha3BvaW50SUQsIGNvbmRp
dGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAg
fSk7Cit9CisKIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQo
QWdlbnRDb250ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dl
ciJfcykKICAgICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQpAQCAtODcsNyArMjQxLDcg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKQogewogICAgIG1fZW5hYmxl
ZCA9IHRydWU7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLmFkZExpc3RlbmVyKHRoaXMpOwor
ICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuYWRkT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgZm9yIChh
dXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCiAgICAgICAgIGxpc3Rl
bmVyLT5kZWJ1Z2dlcldhc0VuYWJsZWQoKTsKQEAgLTEwOCwxNSArMjYyLDEzIEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAgICAg
Zm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCiAgICAgICAg
IGxpc3RlbmVyLT5kZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLnJlbW92ZUxpc3RlbmVyKHRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOworICAgIG1fc2NyaXB0
RGVidWdTZXJ2ZXIucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOwogCiAg
ICAgY2xlYXJJbnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKTsKIAogICAgIGlmICghaXNCZWluZ0Rl
c3Ryb3llZCkKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5kZWFjdGl2YXRlQnJlYWtwb2lu
dHMoKTsKIAotICAgIEFTU0VSVChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5pc0VtcHR5KCkpOwot
CiAgICAgY2xlYXJBc3luY1N0YWNrVHJhY2VEYXRhKCk7CiAKICAgICBtX3BhdXNlT25Bc3NlcnRp
b25GYWlsdXJlcyA9IGZhbHNlOwpAQCAtMjA2LDE3ICszNTgsMjIgQEAgc3RhdGljIFJlZlB0cjxK
U09OOjpPYmplY3Q+IGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oY29uc3QgU3RyaW5nJiBk
aXJlY3RpdmUKICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CiB9CiAKLVJlZlB0
cjxKU09OOjpPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBh
dXNlUmVhc29uKEpTQzo6QnJlYWtwb2ludElEIGRlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIp
CitSZWZQdHI8SlNPTjo6T2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFr
cG9pbnRQYXVzZVJlYXNvbihKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJRCkK
IHsKLSAgICBBU1NFUlQoZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllciAhPSBKU0M6Om5vQnJl
YWtwb2ludElEKTsKLSAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVy
VG9JbnNwZWN0b3JCcmVha3BvaW50SWRlbnRpZmllci5maW5kKGRlYnVnZ2VyQnJlYWtwb2ludElk
ZW50aWZpZXIpOwotICAgIGlmIChpdCA9PSBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJU
b0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKyAgICBBU1NFUlQoZGVidWdnZXJCcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9p
bnRJRCk7CiAKLSAgICBhdXRvIHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2lu
dFBhdXNlUmVhc29uOjpjcmVhdGUoKQotICAgICAgICAuc2V0QnJlYWtwb2ludElkKGl0LT52YWx1
ZSkKLSAgICAgICAgLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3Jz
KCk7CisgICAgZm9yIChhdXRvJiBbcHJvdG9jb2xCcmVha3BvaW50SUQsIGRlYnVnZ2VyQnJlYWtw
b2ludHNdIDogbV9kZWJ1Z2dlckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQpIHsK
KyAgICAgICAgZm9yIChhdXRvJiBkZWJ1Z2dlckJyZWFrcG9pbnQgOiBkZWJ1Z2dlckJyZWFrcG9p
bnRzKSB7CisgICAgICAgICAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50LT5pZCgpID09IGRlYnVn
Z2VyQnJlYWtwb2ludElEKSB7CisgICAgICAgICAgICAgICAgYXV0byByZWFzb24gPSBQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKKyAgICAgICAgICAg
ICAgICAgICAgLnNldEJyZWFrcG9pbnRJZChwcm90b2NvbEJyZWFrcG9pbnRJRCkKKyAgICAgICAg
ICAgICAgICAgICAgLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVhc29uLT5v
cGVuQWNjZXNzb3JzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gbnVsbHB0cjsKIH0KIAogUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihKU0M6OkpTVmFsdWUgZXhjZXB0aW9u
LCBjb25zdCBJbmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQpCkBAIC0yMzQsNyArMzkxLDcg
QEAgUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRFeGNl
cHRpb25QYXVzZVJlYXNvbihKU0M6OkpTVmEKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpoYW5kbGVDb25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAo
IW1fc2NyaXB0RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBpZiAoIWJyZWFr
cG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BhdXNlT25Bc3Nl
cnRpb25GYWlsdXJlcykKQEAgLTI1MSw3ICs0MDgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFNjaGVkdWxlQXN5bmNDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
agogICAgIGlmICghbV9hc3luY1N0YWNrVHJhY2VEZXB0aCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYg
KCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8U2NyaXB0
Q2FsbFN0YWNrPiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZ2xvYmFsT2JqZWN0
LCBtX2FzeW5jU3RhY2tUcmFjZURlcHRoKTsKQEAgLTMzMywxMDcgKzQ5MCwxNSBAQCB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZERpc3BhdGNoQXN5bmNDYWxsKCkKICAgICAgICAgbV9w
ZW5kaW5nQXN5bmNDYWxscy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLXN0YXRpYyBSZWY8SlNP
Tjo6T2JqZWN0PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1
cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRp
dGlvbiwgUmVmUHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgYm9vbCBpc1JlZ2V4LCBib29sIGF1
dG9Db250aW51ZSwgdW5zaWduZWQgaWdub3JlQ291bnQpCitzdGF0aWMgUmVmUHRyPFByb3RvY29s
OjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxkRGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJy
ZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiBi
cmVha3BvaW50T2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBicmVha3BvaW50
T2JqZWN0LT5zZXRTdHJpbmcoInVybCJfcywgdXJsKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5z
ZXRJbnRlZ2VyKCJsaW5lTnVtYmVyIl9zLCBsaW5lTnVtYmVyKTsKLSAgICBicmVha3BvaW50T2Jq
ZWN0LT5zZXRJbnRlZ2VyKCJjb2x1bW5OdW1iZXIiX3MsIGNvbHVtbk51bWJlcik7Ci0gICAgYnJl
YWtwb2ludE9iamVjdC0+c2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAg
YnJlYWtwb2ludE9iamVjdC0+c2V0Qm9vbGVhbigiaXNSZWdleCJfcywgaXNSZWdleCk7Ci0gICAg
YnJlYWtwb2ludE9iamVjdC0+c2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGlu
dWUpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBp
Z25vcmVDb3VudCk7Ci0KLSAgICBpZiAoYWN0aW9ucykKLSAgICAgICAgYnJlYWtwb2ludE9iamVj
dC0+c2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotCi0gICAgcmV0dXJuIGJyZWFrcG9p
bnRPYmplY3Q7Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1cmwsIGNv
bnN0IFN0cmluZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQotewotICAgIGlmIChpc1JlZ2V4KSB7
Ci0gICAgICAgIEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXgocGF0dGVybik7Ci0g
ICAgICAgIHJldHVybiByZWdleC5tYXRjaCh1cmwpICE9IC0xOwotICAgIH0KLSAgICByZXR1cm4g
dXJsID09IHBhdHRlcm47Ci19Ci0KLXN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9y
U3RyaW5nKGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGUqIG91dHB1dCkKLXsKLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9y
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50QWN0aW9uOjpUeXBlOjpMb2cpKSB7Ci0gICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uVHlwZUxvZzsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0
eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRl
KSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0
ZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFBy
b3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6
RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewotICAgICAgICAqb3V0
cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxw
ZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRB
Y3Rpb246OlR5cGU6OlByb2JlKSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2lu
dEFjdGlvblR5cGVQcm9iZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0
dXJuIGZhbHNlOwotfQotCi1ib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRB
Y3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTT046
OkFycmF5PiYgYWN0aW9ucywgQnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCkKLXsKLSAgICBpZiAo
IWFjdGlvbnMpCi0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdW5zaWduZWQgYWN0aW9uc0xl
bmd0aCA9IGFjdGlvbnMtPmxlbmd0aCgpOwotICAgIGlmICghYWN0aW9uc0xlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICByZXN1bHQtPnJlc2VydmVDYXBhY2l0eShhY3Rpb25zTGVu
Z3RoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWN0aW9uc0xlbmd0aDsgKytpKSB7
Ci0gICAgICAgIFJlZlB0cjxKU09OOjpWYWx1ZT4gdmFsdWUgPSBhY3Rpb25zLT5nZXQoaSk7Ci0g
ICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKLSAgICAgICAgaWYgKCF2YWx1ZS0+
YXNPYmplY3Qob2JqZWN0KSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3Rl
ZCBub24tb2JqZWN0IGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKLSAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyB0eXBlU3RyaW5nOwotICAgICAg
ICBpZiAoIW9iamVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCB0eXBlU3RyaW5nKSkgewotICAgICAg
ICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlv
bnMiX3M7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0eXBlOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRB
Y3Rpb25UeXBlRm9yU3RyaW5nKHR5cGVTdHJpbmcsICZ0eXBlKSkgewotICAgICAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTm9uLXN0cmluZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTcGVj
aWZ5aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVs
YXRlIHByb2JlIHNhbXBsZXMKLSAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0
aXBsZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgot
ICAgICAgICBpbnQgaWRlbnRpZmllciA9IDA7Ci0gICAgICAgIG9iamVjdC0+Z2V0SW50ZWdlcigi
aWQiX3MsIGlkZW50aWZpZXIpOwotCi0gICAgICAgIFN0cmluZyBkYXRhOwotICAgICAgICBvYmpl
Y3QtPmdldFN0cmluZygiZGF0YSJfcywgZGF0YSk7Ci0KLSAgICAgICAgcmVzdWx0LT5hcHBlbmQo
U2NyaXB0QnJlYWtwb2ludEFjdGlvbih0eXBlLCBpZGVudGlmaWVyLCBkYXRhKSk7Ci0gICAgfQot
Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2ludCYg
YnJlYWtwb2ludCkKLXsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CisgICAgQVNT
RVJUKGRlYnVnZ2VyQnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCiAgICAgYXV0byBsb2NhdGlv
biA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRT
Y3JpcHRJZChTdHJpbmc6Om51bWJlcihicmVha3BvaW50LnNvdXJjZUlEKSkKLSAgICAgICAgLnNl
dExpbmVOdW1iZXIoYnJlYWtwb2ludC5saW5lKQorICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5n
OjpudW1iZXIoZGVidWdnZXJCcmVha3BvaW50LnNvdXJjZUlEKCkpKQorICAgICAgICAuc2V0TGlu
ZU51bWJlcihkZWJ1Z2dlckJyZWFrcG9pbnQubGluZU51bWJlcigpKQogICAgICAgICAucmVsZWFz
ZSgpOwotICAgIGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoYnJlYWtwb2ludC5jb2x1bW4pOwor
ICAgIGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoZGVidWdnZXJCcmVha3BvaW50LmNvbHVtbk51
bWJlcigpKTsKIAogICAgIHJldHVybiBsb2NhdGlvbjsKIH0KQEAgLTQ1OSw2OCArNTI0LDQ4IEBA
IHN0YXRpYyBib29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBKU09OOjpPYmplY3QmIGxvY2F0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJl
ciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5n
KiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25z
dCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCogb3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6
RGVidWdnZXI6OkxvY2F0aW9uPj4mIG91dExvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBK
U09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAg
ICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQiX3M7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgdXJsID0gb3B0aW9uYWxVUkwgPyAq
b3B0aW9uYWxVUkwgOiAqb3B0aW9uYWxVUkxSZWdleDsKLSAgICBpbnQgY29sdW1uTnVtYmVyID0g
b3B0aW9uYWxDb2x1bW5OdW1iZXIgPyAqb3B0aW9uYWxDb2x1bW5OdW1iZXIgOiAwOwotICAgIGJv
b2wgaXNSZWdleCA9IG9wdGlvbmFsVVJMUmVnZXg7CisgICAgYXV0byBwcm90b2NvbEJyZWFrcG9p
bnQgPSBQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25h
bFVSTCA/ICpvcHRpb25hbFVSTCA6ICpvcHRpb25hbFVSTFJlZ2V4LCAhIW9wdGlvbmFsVVJMUmVn
ZXgsIGxpbmVOdW1iZXIsIG9wdGlvbmFsQ29sdW1uTnVtYmVyID8gKm9wdGlvbmFsQ29sdW1uTnVt
YmVyIDogMCwgb3B0aW9uc1BheWxvYWQpOworICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQor
ICAgICAgICByZXR1cm47CiAKLSAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBtYWtl
U3RyaW5nKGlzUmVnZXggPyAiLyIgOiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi86IiA6ICI6IiwgbGlu
ZU51bWJlciwgJzonLCBjb2x1bW5OdW1iZXIpOwotICAgIGlmIChtX2phdmFTY3JpcHRCcmVha3Bv
aW50cy5jb250YWlucyhicmVha3BvaW50SWRlbnRpZmllcikpIHsKKyAgICBpZiAobV9wcm90b2Nv
bEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jb250YWlucyhwcm90b2NvbEJyZWFr
cG9pbnQtPmlkKCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdp
dmVuIGxvY2F0aW9uIGFscmVhZHkgZXhpc3RzLiJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFN0cmluZyBjb25kaXRpb24gPSBlbXB0eVN0cmluZygpOwotICAgIGJvb2wgYXV0b0Nv
bnRpbnVlID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgPSAwOwotICAgIFJlZlB0
cjxKU09OOjpBcnJheT4gYWN0aW9uczsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgICBvcHRp
b25zLT5nZXRTdHJpbmcoImNvbmRpdGlvbiJfcywgY29uZGl0aW9uKTsKLSAgICAgICAgb3B0aW9u
cy0+Z2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOwotICAgICAgICBv
cHRpb25zLT5nZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0aW9ucyk7Ci0gICAgICAgIG9wdGlvbnMt
PmdldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3VudCk7Ci0gICAgfQorICAgIG1f
cHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuc2V0KHByb3RvY29sQnJl
YWtwb2ludC0+aWQoKSwgKnByb3RvY29sQnJlYWtwb2ludCk7CiAKLSAgICBCcmVha3BvaW50QWN0
aW9ucyBicmVha3BvaW50QWN0aW9uczsKLSAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVBy
b3RvY29sKGVycm9yU3RyaW5nLCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQotICAgICAg
ICByZXR1cm47CisgICAgb3V0TG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVi
dWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50
cy5zZXQoYnJlYWtwb2ludElkZW50aWZpZXIsIGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tp
ZSh1cmwsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhY3Rpb25zLCBpc1Jl
Z2V4LCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KSk7Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5
IDogbV9zY3JpcHRzKSB7Ci0gICAgICAgIFNjcmlwdCYgc2NyaXB0ID0gZW50cnkudmFsdWU7Cisg
ICAgZm9yIChhdXRvJiBbc291cmNlSUQsIHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAgICAg
U3RyaW5nIHNjcmlwdFVSTEZvckJyZWFrcG9pbnRzID0gIXNjcmlwdC5zb3VyY2VVUkwuaXNFbXB0
eSgpID8gc2NyaXB0LnNvdXJjZVVSTCA6IHNjcmlwdC51cmw7Ci0gICAgICAgIGlmICghbWF0Y2hl
cyhzY3JpcHRVUkxGb3JCcmVha3BvaW50cywgdXJsLCBpc1JlZ2V4KSkKKyAgICAgICAgaWYgKCFw
cm90b2NvbEJyZWFrcG9pbnQtPm1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IGVu
dHJ5LmtleTsKLSAgICAgICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNv
dW50KTsKLSAgICAgICAgcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAg
ICAgICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKQorICAgICAgICBhdXRvIGRlYnVnZ2VyQnJl
YWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC0+Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50KG1f
bmV4dERlYnVnZ2VyQnJlYWtwb2ludElEKyssIHNvdXJjZUlEKTsKKworICAgICAgICBpZiAoIXJl
c29sdmVCcmVha3BvaW50KHNjcmlwdCwgZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgICAgIHNldEJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgZXhpc3RpbmcpOwotICAgICAgICBpZiAoZXhpc3RpbmcpCisgICAgICAg
IGlmICghc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50KGJyZWFr
cG9pbnQubGluZSwgYnJlYWtwb2ludC5jb2x1bW4sIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlv
bnMsIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwotICAgICAgICBkaWRTZXRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBzY3JpcHRCcmVha3BvaW50KTsKKyAg
ICAgICAgZGlkU2V0QnJlYWtwb2ludCgqcHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFr
cG9pbnQpOwogCi0gICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShidWlsZERlYnVnZ2VyTG9jYXRp
b24oYnJlYWtwb2ludCkpOworICAgICAgICBvdXRMb2NhdGlvbnMtPmFkZEl0ZW0oYnVpbGREZWJ1
Z2dlckxvY2F0aW9uKGRlYnVnZ2VyQnJlYWtwb2ludCkpOwogICAgIH0KIAotICAgICpvdXRCcmVh
a3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOworICAgICpvdXRCcmVha3Bv
aW50SWQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmlkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJv
dG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJy
ZWFrcG9pbnRJZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1
YWxMb2NhdGlvbikKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVk
IGxpbmVOdW1iZXI7CkBAIC01MjgsOTEgKzU3Myw3MSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
OgogICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywgbG9jYXRpb24sIHNvdXJjZUlE
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBib29sIGF1dG9Db250aW51ZSA9IGZh
bHNlOwotICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsKLSAgICBSZWZQdHI8SlNPTjo6QXJy
YXk+IGFjdGlvbnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgb3B0aW9ucy0+Z2V0U3Ry
aW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgICAgIG9wdGlvbnMtPmdldEJvb2xl
YW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0
QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBvcHRpb25zLT5nZXRJbnRlZ2Vy
KCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotICAgIH0KLQotICAgIEJyZWFrcG9pbnRB
Y3Rpb25zIGJyZWFrcG9pbnRBY3Rpb25zOwotICAgIGlmICghYnJlYWtwb2ludEFjdGlvbnNGcm9t
UHJvdG9jb2woZXJyb3JTdHJpbmcsIGFjdGlvbnMsICZicmVha3BvaW50QWN0aW9ucykpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGF1dG8gc2NyaXB0SXRlcmF0b3IgPSBtX3NjcmlwdHMuZmluZChz
b3VyY2VJRCk7CiAgICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHNjcmlwdCBmb3Igc2NyaXB0SWQgaW4gZ2l2
ZW4gbG9jYXRpb24iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHQmIHNj
cmlwdCA9IHNjcmlwdEl0ZXJhdG9yLT52YWx1ZTsKLSAgICBKU0M6OkJyZWFrcG9pbnQgYnJlYWtw
b2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGF1dG9D
b250aW51ZSwgaWdub3JlQ291bnQpOwotICAgIHJlc29sdmVCcmVha3BvaW50KHNjcmlwdCwgYnJl
YWtwb2ludCk7Ci0gICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKSB7CisgICAgYXV0byBwcm90
b2NvbEJyZWFrcG9pbnQgPSBQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKGVycm9yU3Ry
aW5nLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBvcHRpb25zUGF5bG9hZCk7
CisgICAgaWYgKCFwcm90b2NvbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IERvbid0IHNhdmUgYHByb3RvY29sQnJlYWtwb2ludGAgaW4gYG1fcHJvdG9jb2xCcmVha3BvaW50
Rm9yUHJvdG9jb2xCcmVha3BvaW50SURgIGJlY2F1c2UgaXQKKyAgICAvLyB3YXMgc2V0IHNwZWNp
ZmljYWxseSBmb3IgdGhlIGdpdmVuIGBzb3VyY2VJRGAsIHdoaWNoIGlzIHVuaXF1ZSwgbWVhbmlu
ZyB0aGF0IGl0IHdpbGwgbmV2ZXIKKyAgICAvLyBiZSB1c2VkIGluc2lkZSBgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2VgLgorCisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9p
bnQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHRE
ZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICBpZiAoIXJlc29sdmVCcmVh
a3BvaW50KHNjcmlwdEl0ZXJhdG9yLT52YWx1ZSwgZGVidWdnZXJCcmVha3BvaW50KSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50Il9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBleGlzdGluZzsKLSAgICBzZXRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICBpZiAoZXhpc3RpbmcpIHsKKyAgICBpZiAo
IXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cyJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmllciA9
IG1ha2VTdHJpbmcoc291cmNlSUQsICc6JywgYnJlYWtwb2ludC5saW5lLCAnOicsIGJyZWFrcG9p
bnQuY29sdW1uKTsKLSAgICBTY3JpcHRCcmVha3BvaW50IHNjcmlwdEJyZWFrcG9pbnQoYnJlYWtw
b2ludC5saW5lLCBicmVha3BvaW50LmNvbHVtbiwgY29uZGl0aW9uLCBicmVha3BvaW50QWN0aW9u
cywgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgZGlkU2V0QnJlYWtwb2ludChicmVh
a3BvaW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgZGlk
U2V0QnJlYWtwb2ludCgqcHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFrcG9pbnQpOwog
Ci0gICAgYWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24oYnJlYWtwb2ludCk7
Ci0gICAgKm91dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7Cisg
ICAgb3V0QWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24oZGVidWdnZXJCcmVh
a3BvaW50KTsKKyAgICAqb3V0QnJlYWtwb2ludElkID0gcHJvdG9jb2xCcmVha3BvaW50LT5pZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNldEJyZWFrcG9pbnQoY29u
c3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50KQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KFByb3RvY29sQnJlYWtw
b2ludCYgcHJvdG9jb2xCcmVha3BvaW50LCBKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtw
b2ludCkKIHsKLSAgICBKU0M6OkJyZWFrcG9pbnRJRCBpZCA9IGJyZWFrcG9pbnQuaWQ7Ci0gICAg
bV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50QWN0aW9ucyhpZCwgc2NyaXB0QnJlYWtw
b2ludCk7CisgICAgYXV0byYgZGVidWdnZXJCcmVha3BvaW50cyA9IG1fZGVidWdnZXJCcmVha3Bv
aW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELmVuc3VyZShwcm90b2NvbEJyZWFrcG9pbnQuaWQo
KSwgW10geworICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50c1ZlY3RvcigpOworICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRl
cmF0b3IgPSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMu
ZmluZChicmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2lu
dElEc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElEcy5lbmQoKSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3Ig
PSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+KCkpLml0ZXJhdG9y
OwotICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoaWQp
OwotCi0gICAgbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3Bv
aW50SWRlbnRpZmllci5zZXQoaWQsIGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKKyAgICBkZWJ1Z2dl
ckJyZWFrcG9pbnRzLmFwcGVuZChkZWJ1Z2dlckJyZWFrcG9pbnQpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFNjcmlwdCYgc2NyaXB0
LCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYgc2NyaXB0
LCBKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBpZiAoYnJlYWtw
b2ludC5saW5lIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5zdGFydExpbmUpIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuZW5kTGluZSkgPCBicmVha3BvaW50LmxpbmUpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIoKSA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuc3RhcnRMaW5lKSB8fCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyaXB0LmVuZExpbmUpIDwgZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZXNv
bHZlQnJlYWtwb2ludChicmVha3BvaW50LCBzY3JpcHQuc291cmNlUHJvdmlkZXIuZ2V0KCkpOwor
ICAgIHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyLnJlc29sdmVCcmVha3BvaW50KGRlYnVnZ2Vy
QnJlYWtwb2ludCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYgYnJlYWtw
b2ludCwgYm9vbCYgZXhpc3RpbmcpCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKKyAg
ICByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtw
b2ludCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkJiBwcm90b2Nv
bEJyZWFrcG9pbnRJRCkKIHsKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5yZW1vdmUoYnJl
YWtwb2ludElkZW50aWZpZXIpOworICAgIG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xC
cmVha3BvaW50SUQucmVtb3ZlKHByb3RvY29sQnJlYWtwb2ludElEKTsKIAotICAgIGZvciAoSlND
OjpCcmVha3BvaW50SUQgYnJlYWtwb2ludElEIDogbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVi
dWdTZXJ2ZXJCcmVha3BvaW50SURzLnRha2UoYnJlYWtwb2ludElkZW50aWZpZXIpKSB7Ci0gICAg
ICAgIG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElk
ZW50aWZpZXIucmVtb3ZlKGJyZWFrcG9pbnRJRCk7Ci0KLSAgICAgICAgY29uc3QgQnJlYWtwb2lu
dEFjdGlvbnMmIGJyZWFrcG9pbnRBY3Rpb25zID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5nZXRBY3Rp
b25zRm9yQnJlYWtwb2ludChicmVha3BvaW50SUQpOwotICAgICAgICBmb3IgKGF1dG8mIGFjdGlv
biA6IGJyZWFrcG9pbnRBY3Rpb25zKQotICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIucmVsZWFzZU9iamVjdEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rp
b24pKTsKKyAgICBmb3IgKGF1dG8mIGRlYnVnZ2VyQnJlYWtwb2ludCA6IG1fZGVidWdnZXJCcmVh
a3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELnRha2UocHJvdG9jb2xCcmVha3BvaW50SUQp
KSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgYWN0aW9uIDogZGVidWdnZXJCcmVha3BvaW50
LT5hY3Rpb25zKCkpCisgICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxlYXNl
T2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbi5pZCkpOwog
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZt
KCkpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnRBY3Rpb25z
KGJyZWFrcG9pbnRJRCk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50SUQpOworICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJy
ZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KTsKICAgICB9CiB9CiAKQEAgLTYzMyw5ICs2NTgs
OSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaWYgKCFhc3NlcnRQYXVzZWQoZXJyb3JT
dHJpbmcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25C
cmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCkgewotICAgICAgICBtX3NjcmlwdERl
YnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50
SUQpOwotICAgICAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCA9IEpTQzo6bm9C
cmVha3BvaW50SUQ7CisgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3Bv
aW50KSB7CisgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludCgqbV9j
b250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2NvbnRpbnVl
VG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgSlND
OjpTb3VyY2VJRCBzb3VyY2VJRDsKQEAgLTY1MiwyMiArNjc3LDIzIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBjb25kaXRpb247
Ci0gICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3Vu
dCA9IDA7Ci0gICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsK
LSAgICBTY3JpcHQmIHNjcmlwdCA9IHNjcmlwdEl0ZXJhdG9yLT52YWx1ZTsKLSAgICByZXNvbHZl
QnJlYWtwb2ludChzY3JpcHQsIGJyZWFrcG9pbnQpOwotICAgIGlmICghYnJlYWtwb2ludC5yZXNv
bHZlZCkgeworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50
Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CisgICAgaWYgKCFwcm90b2NvbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIERvbid0IHNhdmUgYHByb3RvY29sQnJlYWtwb2ludGAgaW4gYG1fcHJvdG9jb2xCcmVh
a3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SURgIGJlY2F1c2UgaXQKKyAgICAvLyBpcyBhIHRl
bXBvcmFyeSBicmVha3BvaW50IHRoYXQgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgYGxvY2F0
aW9uYCBpcyByZWFjaGVkLgorCisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnQgPSBwcm90b2Nv
bEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFr
cG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICBpZiAoIXJlc29sdmVCcmVha3BvaW50KHNjcmlw
dEl0ZXJhdG9yLT52YWx1ZSwgZGVidWdnZXJCcmVha3BvaW50KSkgewogICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVzdW1lZCgpOwogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVzb2x2
ZSBicmVha3BvaW50Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBleGlz
dGluZzsKLSAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICBpZiAo
ZXhpc3RpbmcpIHsKKyAgICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkg
ewogICAgICAgICAvLyBUaGVyZSBpcyBhbiBleGlzdGluZyBicmVha3BvaW50IGF0IHRoaXMgbG9j
YXRpb24uIEluc3RlYWQgb2YKICAgICAgICAgLy8gYWN0aW5nIGxpa2UgYSBzZXJpZXMgb2Ygc3Rl
cHMsIGp1c3QgcmVzdW1lIGFuZCB3ZSB3aWxsIGVpdGhlcgogICAgICAgICAvLyBoaXQgdGhpcyBu
ZXcgYnJlYWtwb2ludCBvciBub3QuCkBAIC02NzYsNyArNzAyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQgPSBicmVha3BvaW50LmlkOworICAgIG1fY29udGludWVUb0xvY2F0aW9u
RGVidWdnZXJCcmVha3BvaW50ID0gV1RGTW92ZShkZWJ1Z2dlckJyZWFrcG9pbnQpOwogCiAgICAg
Ly8gVHJlYXQgdGhpcyBhcyBhIHNlcmllcyBvZiBzdGVwcyB1bnRpbCByZWFjaGluZyB0aGUgbmV3
IGJyZWFrcG9pbnQuCiAgICAgLy8gU28gZG9uJ3QgaXNzdWUgYSByZXN1bWVkIGV2ZW50IHVubGVz
cyB3ZSBleGl0IHRoZSBWTSB3aXRob3V0IHBhdXNpbmcuCkBAIC03MTksNyArNzQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWls
cyhlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgZGV0YWlscyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0
dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVs
ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTcyOSwxMCArNzU1LDEwIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0CiAgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRhKHJlYXNvbiwgV1RGTW92ZShk
YXRhKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZl
ci52bSgpKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25OZXh0U3RhdGVtZW50
KHRydWUpOworICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9y
dHVuaXR5KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VP
bk5leHRTdGF0ZW1lbnQoKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVz
ZUF0TmV4dE9wcG9ydHVuaXR5KCkKIHsKICAgICBpZiAoIW1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkKQogICAgICAgICByZXR1cm47CkBAIC03NDAsMTMgKzc2NiwzMyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCkKICAgICBtX2phdmFT
Y3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNlOwogCiAgICAgY2xlYXJQYXVzZURldGFpbHMoKTsK
LSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGZhbHNlKTsK
KyAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsK
ICAgICBtX2VuYWJsZVBhdXNlV2hlbklkbGUgPSBmYWxzZTsKIH0KIAorYm9vbCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVh
a3BvaW50JiBicmVha3BvaW50LCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhKQoreworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOworCisgICAgaWYgKCFtX3Njcmlw
dERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChicmVha3BvaW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRh
KHJlYXNvbiwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChKU0M6
OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2UoRXJyb3JTdHJpbmcmKQog
ewotICAgIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQsIG51bGxwdHIpOworICAgIHNjaGVk
dWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cmVzdW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKQEAgLTc1Niw3ICs4MDIsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYW5jZWxQYXVzZU9uTmV4dFN0
YXRlbWVudCgpOworICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICBtX3Nj
cmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIG1fY29uZGl0aW9uVG9EaXNw
YXRjaFJlc3VtZWQgPSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5Db250aW51ZWQ7CiB9CkBA
IC04MjIsNyArODY4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRCZWNvbWVJ
ZGxlKCkKICAgICBtX3JlZ2lzdGVyZWRJZGxlQ2FsbGJhY2sgPSBmYWxzZTsKIAogICAgIGlmICht
X2NvbmRpdGlvblRvRGlzcGF0Y2hSZXN1bWVkID09IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6V2hl
bklkbGUpIHsKLSAgICAgICAgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICAgICAg
Y2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgICAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVz
dW1lZCgpOwogICAgIH0KQEAgLTk1OCw3ICsxMDA0LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW4KICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQud3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2Fs
bFN0YWNrLmdldCgpKTsKIH0KIAotU3RyaW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKK1N0cmluZyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6
U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgcmV0dXJuIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMOwog
fQpAQCAtOTc4LDcgKzEwMjQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bAogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJj
ZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQmIHNjcmlwdCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgSlND
OjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyID0g
U3RyaW5nOjpudW1iZXIoc291cmNlSUQpOwogICAgIGJvb2wgaGFzU291cmNlVVJMID0gIXNjcmlw
dC5zb3VyY2VVUkwuaXNFbXB0eSgpOwpAQCAtMTAwNCw0NCArMTA1MCwyMSBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQs
IGNvbnN0IFNjcmlwdAogICAgIGlmIChzY3JpcHRVUkxGb3JCcmVha3BvaW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2phdmFTY3JpcHRC
cmVha3BvaW50cykgewotICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBicmVha3BvaW50T2Jq
ZWN0ID0gZW50cnkudmFsdWU7Ci0KLSAgICAgICAgYm9vbCBpc1JlZ2V4OwotICAgICAgICBTdHJp
bmcgdXJsOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFuKCJpc1JlZ2V4Il9z
LCBpc1JlZ2V4KTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJ1cmwiX3Ms
IHVybCk7Ci0gICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRVUkxGb3JCcmVha3BvaW50cywgdXJs
LCBpc1JlZ2V4KSkKKyAgICBmb3IgKGF1dG8mIHByb3RvY29sQnJlYWtwb2ludCA6IG1fcHJvdG9j
b2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKCFwcm90b2NvbEJyZWFrcG9pbnQubWF0Y2hlcyhzY3JpcHRVUkxGb3JCcmVha3BvaW50cykp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTY3JpcHRCcmVha3BvaW50IHNjcmlw
dEJyZWFrcG9pbnQ7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoImxpbmVO
dW1iZXIiX3MsIHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7Ci0gICAgICAgIGJyZWFrcG9p
bnRPYmplY3QtPmdldEludGVnZXIoImNvbHVtbk51bWJlciJfcywgc2NyaXB0QnJlYWtwb2ludC5j
b2x1bW5OdW1iZXIpOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJpbmcoImNvbmRp
dGlvbiJfcywgc2NyaXB0QnJlYWtwb2ludC5jb25kaXRpb24pOwotICAgICAgICBicmVha3BvaW50
T2JqZWN0LT5nZXRCb29sZWFuKCJhdXRvQ29udGludWUiX3MsIHNjcmlwdEJyZWFrcG9pbnQuYXV0
b0NvbnRpbnVlKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0SW50ZWdlcigiaWdub3Jl
Q291bnQiX3MsIHNjcmlwdEJyZWFrcG9pbnQuaWdub3JlQ291bnQpOwotICAgICAgICBFcnJvclN0
cmluZyBlcnJvclN0cmluZzsKLSAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBhY3Rpb25zOwot
ICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0aW9ucyk7
Ci0gICAgICAgIGlmICghYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woZXJyb3JTdHJpbmcs
IGFjdGlvbnMsICZzY3JpcHRCcmVha3BvaW50LmFjdGlvbnMpKSB7Ci0gICAgICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAg
ICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xCcmVha3BvaW50LmNyZWF0ZURl
YnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7
CiAKLSAgICAgICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIHNjcmlwdEJy
ZWFrcG9pbnQubGluZU51bWJlciwgc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1iZXIsIHNjcmlw
dEJyZWFrcG9pbnQuY29uZGl0aW9uLCBzY3JpcHRCcmVha3BvaW50LmF1dG9Db250aW51ZSwgc2Ny
aXB0QnJlYWtwb2ludC5pZ25vcmVDb3VudCk7Ci0gICAgICAgIHJlc29sdmVCcmVha3BvaW50KHNj
cmlwdCwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICghYnJlYWtwb2ludC5yZXNvbHZlZCkKKyAg
ICAgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGRlYnVnZ2VyQnJlYWtwb2ludCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBib29sIGV4aXN0aW5nOwotICAgICAg
ICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICAgICAgaWYgKGV4aXN0
aW5nKQorICAgICAgICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmll
ciA9IGVudHJ5LmtleTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2ludChicmVha3BvaW50LCBicmVh
a3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGRpZFNldEJyZWFr
cG9pbnQocHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFrcG9pbnQpOwogCi0gICAgICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoYnJlYWtwb2ludElkZW50
aWZpZXIsIGJ1aWxkRGVidWdnZXJMb2NhdGlvbihicmVha3BvaW50KSk7CisgICAgICAgIG1fZnJv
bnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQocHJvdG9jb2xCcmVha3BvaW50Lmlk
KCksIGJ1aWxkRGVidWdnZXJMb2NhdGlvbihkZWJ1Z2dlckJyZWFrcG9pbnQpKTsKICAgICB9CiB9
CiAKQEAgLTEwNTIsMzYgKzEwNzUsMzggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpm
YWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcKIAogdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsUnVuTWljcm90YXNrKCkKIHsKLSAgICBpZiAo
IW1fc2NyaXB0RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBpZiAoIWJyZWFr
cG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BhdXNlT25NaWNy
b3Rhc2tzKQotICAgICAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok1pY3JvdGFzaywgbnVsbHB0cik7CisgICAgICAgIHNj
aGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6
UmVhc29uOjpNaWNyb3Rhc2spOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZFJ1bk1pY3JvdGFzaygpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9p
bnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1
cm47CiAKICAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAgY2FuY2VsUGF1c2VP
bk5leHRTdGF0ZW1lbnQoKTsKKyAgICAgICAgY2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgp
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMsIEpTQzo6SlNW
YWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RGVidWdn
ZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JD
YXVnaHRWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fcGF1c2VkR2xvYmFsT2JqZWN0KTsKICAgICBt
X3BhdXNlZEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBtX2N1cnJlbnRDYWxsU3Rh
Y2sgPSB7IGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lcyB9OwogCi0gICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNj
cmlwdEZvcihnbG9iYWxPYmplY3QpOworICAgIGF1dG8qIGRlYnVnZ2VyR2xvYmFsT2JqZWN0ID0g
ZGVidWdnZXJDYWxsRnJhbWUuc2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAgbV9jdXJyZW50
Q2FsbFN0YWNrID0geyBtX3BhdXNlZEdsb2JhbE9iamVjdC0+dm0oKSwgdG9KUyhkZWJ1Z2dlckds
b2JhbE9iamVjdCwgZGVidWdnZXJHbG9iYWxPYmplY3QsIEphdmFTY3JpcHRDYWxsRnJhbWU6OmNy
ZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSkucHRyKCkpIH07CisKKyAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVkU2NyaXB0Rm9y
KG1fcGF1c2VkR2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIElmIGEgaGlnaCBsZXZlbCBwYXVzZSBw
YXVzZSByZWFzb24gaXMgbm90IGFscmVhZHkgc2V0LCB0cnkgdG8gaW5mZXIgYSByZWFzb24gZnJv
bSB0aGUgZGVidWdnZXIuCiAgICAgaWYgKG1fcGF1c2VSZWFzb24gPT0gRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXIpIHsKICAgICAgICAgc3dpdGNoIChtX3NjcmlwdERl
YnVnU2VydmVyLnJlYXNvbkZvclBhdXNlKCkpIHsKICAgICAgICAgY2FzZSBKU0M6OkRlYnVnZ2Vy
OjpQYXVzZWRGb3JCcmVha3BvaW50OiB7CiAgICAgICAgICAgICBhdXRvIGRlYnVnZ2VyQnJlYWtw
b2ludElkID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzaW5nQnJlYWtwb2ludElEKCk7Ci0gICAg
ICAgICAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRvTG9jYXRpb25C
cmVha3BvaW50SUQpCisgICAgICAgICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0aW9uRGVidWdn
ZXJCcmVha3BvaW50IHx8IGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0
aW9uRGVidWdnZXJCcmVha3BvaW50LT5pZCgpKQogICAgICAgICAgICAgICAgIHVwZGF0ZVBhdXNl
UmVhc29uQW5kRGF0YShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpCcmVha3Bv
aW50LCBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9pbnRJZCkpOwog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExMTksNyArMTE0NCw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkpTCiAKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gZGF0YTsK
ICAgICAgICAgaWYgKGF1dG8gZGVidWdnZXJCcmVha3BvaW50SWQgPSBtX3NjcmlwdERlYnVnU2Vy
dmVyLnBhdXNpbmdCcmVha3BvaW50SUQoKSkgewotICAgICAgICAgICAgQVNTRVJUKGRlYnVnZ2Vy
QnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKKyAgICAg
ICAgICAgIEFTU0VSVCghbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgfHwg
ZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFr
cG9pbnQtPmlkKCkpOwogICAgICAgICAgICAgZGF0YSA9IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7
CiAgICAgICAgICAgICBkYXRhLT5zZXRTdHJpbmcoIm9yaWdpbmFsUmVhc29uIl9zLCBQcm90b2Nv
bDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtwb2ludCkpOwogICAgICAgICAgICAgZGF0YS0+c2V0
VmFsdWUoIm9yaWdpbmFsRGF0YSJfcywgYnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24oZGVidWdn
ZXJCcmVha3BvaW50SWQpKTsKQEAgLTExNTEsOSArMTE3Niw5IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U0M6OkpTCiAKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNlOwogCi0gICAg
aWYgKG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50
SUQpIHsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50KG1fY29u
dGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKLSAgICAgICAgbV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIGlmIChtX2NvbnRpbnVl
VG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgeworICAgICAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3Bv
aW50KTsKKyAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBu
dWxscHRyOwogICAgIH0KIAogICAgIGF1dG8mIHN0b3B3YXRjaCA9IG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNoKCk7CkBAIC0x
MTYzLDE3ICsxMTg4LDE3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2Uo
SlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTCiAgICAgfQogfQogCi12
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQgYnJl
YWtwb2ludEFjdGlvbklkZW50aWZpZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrcG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBpZCkKIHsKLSAgICBt
X2Zyb250ZW5kRGlzcGF0Y2hlci0+cGxheUJyZWFrcG9pbnRBY3Rpb25Tb3VuZChicmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBsYXlCcmVha3Bv
aW50QWN0aW9uU291bmQoaWQpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJy
ZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIGNv
bnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5z
aWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBzYW1wbGUpCit2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklELCB1bnNpZ25lZCBiYXRj
aElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkKIHsKICAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVj
dGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBwYXlsb2FkID0gaW5qZWN0ZWRT
Y3JpcHQud3JhcE9iamVjdChzYW1wbGUsIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihh
Y3Rpb24pLCB0cnVlKTsKKyAgICBhdXRvIHBheWxvYWQgPSBpbmplY3RlZFNjcmlwdC53cmFwT2Jq
ZWN0KHNhbXBsZSwgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbklEKSwgdHJ1
ZSk7CiAgICAgYXV0byByZXN1bHQgPSBQcm90b2NvbDo6RGVidWdnZXI6OlByb2JlU2FtcGxlOjpj
cmVhdGUoKQotICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb24uaWRlbnRpZmllcikKKyAgICAgICAg
LnNldFByb2JlSWQoYWN0aW9uSUQpCiAgICAgICAgIC5zZXRCYXRjaElkKGJhdGNoSWQpCiAgICAg
ICAgIC5zZXRTYW1wbGVJZChzYW1wbGVJZCkKICAgICAgICAgLnNldFRpbWVzdGFtcChtX2luamVj
dGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRj
aCgpLmVsYXBzZWRUaW1lKCkuc2Vjb25kcygpKQpAQCAtMTIwOSwxMCArMTIzNCwxNSBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uIHJlYQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhcklu
c3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCiB7CiAgICAgRXJyb3JTdHJpbmcgaWdub3JlZDsKLSAg
ICBmb3IgKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3RvcihtX2JyZWFrcG9p
bnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMua2V5cygpKSkKLSAgICAgICAg
cmVtb3ZlQnJlYWtwb2ludChpZ25vcmVkLCBpZGVudGlmaWVyKTsKKyAgICBmb3IgKGF1dG8mIHBy
b3RvY29sQnJlYWtwb2ludElEIDogY29weVRvVmVjdG9yKG1fZGVidWdnZXJCcmVha3BvaW50c0Zv
clByb3RvY29sQnJlYWtwb2ludElELmtleXMoKSkpCisgICAgICAgIHJlbW92ZUJyZWFrcG9pbnQo
aWdub3JlZCwgcHJvdG9jb2xCcmVha3BvaW50SUQpOwogCi0gICAgbV9qYXZhU2NyaXB0QnJlYWtw
b2ludHMuY2xlYXIoKTsKKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtw
b2ludElELmNsZWFyKCk7CisKKyAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJy
ZWFrcG9pbnQpIHsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50
KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCk7CisgICAgICAgIG1fY29u
dGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICB9CiAKICAg
ICBjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCk7CiB9CkBAIC0xMjIxLDcgKzEyNTEsNiBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRGVidWdnZXJCcmVha3BvaW50U3Rh
dGUoKQogewogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVyKG1fc2NyaXB0
RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY2xlYXJCcmVh
a3BvaW50QWN0aW9ucygpOwogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNsZWFyQnJlYWtw
b2ludHMoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJsYWNrYm94KCk7CiAg
ICAgfQpAQCAtMTIyOSw5ICsxMjU4LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Y2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpCiAgICAgbV9wYXVzZWRHbG9iYWxPYmplY3Qg
PSBudWxscHRyOwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IHsgfTsKICAgICBtX3NjcmlwdHMu
Y2xlYXIoKTsKLSAgICBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9p
bnRJRHMuY2xlYXIoKTsKLSAgICBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3Bl
Y3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmNsZWFyKCk7Ci0gICAgbV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIG1fcHJvdG9jb2xCcmVh
a3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY2xlYXIoKTsKKyAgICBtX2RlYnVnZ2VyQnJl
YWtwb2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jbGVhcigpOworICAgIG1fbmV4dERlYnVn
Z2VyQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRCArIDE7CisgICAgbV9jb250aW51
ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBudWxscHRyOwogICAgIGNsZWFyUGF1c2VE
ZXRhaWxzKCk7CiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKICAgICBt
X2hhc0V4Y2VwdGlvblZhbHVlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgK
aW5kZXggMzVhZjE2ZDI3ZDZmLi5kNDA2YWRlN2UwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKQEAgLTI5LDE2ICsyOSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkJyZWFrcG9pbnQuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkRlYnVnZ2Vy
UHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewpAQCAtNDYsMTUgKzQ4LDE2IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3Mg
QXN5bmNTdGFja1RyYWNlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7Ci1jbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMg
SlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkgb3ZlcnJpZGU7CiAKKyAgICBzdGF0aWMg
UmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoRXJy
b3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKTsKKwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBiYWNrdHJhY2VPYmplY3RHcm91cDsKIAogICAgIC8vIElu
c3BlY3RvckFnZW50QmFzZQpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
c3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAgICAg
dm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBmaW5h
bDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmlu
YWw7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2Jq
ZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pIGZpbmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCog
b3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1YWxMb2NhdGlv
bikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVVu
dGlsTmV4dFJ1bkxvb3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24pIGZpbmFs
OwpAQCAtODksMTUgKzkyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVtdWxhdGVVc2Vy
R2VzdHVyZSwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQs
IE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkQmxhY2tib3hVUkwoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwgY29uc3QgYm9vbCogY2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25z
dCBTY3JpcHQmKSBmaW5hbDsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZv
aWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2Ny
aXB0JikgZmluYWw7CiAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSBmaW5hbDsKICAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBK
U0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkgZmluYWw7CisgICAgdm9pZCBkaWRQ
YXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIEpTQzo6
SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbnRp
bnVlKCkgZmluYWw7Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9p
bnRBY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9i
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVu
c2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKSBm
aW5hbDsKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rp
b25JRCkgZmluYWw7CisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6QnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCBiYXRjaElkLCB1bnNp
Z25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkgZmluYWw7CiAKICAgICBib29sIGlz
UGF1c2VkKCkgY29uc3Q7CiAgICAgYm9vbCBicmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0OwpAQCAt
MTE4LDEwICsxMjEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERpc3BhdGNoQXN5bmNDYWxs
KEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkKTsKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5
bmNDYWxsKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KTsKLSAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgdm9pZCBzY2hl
ZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgdm9pZCBj
YW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgYm9vbCBwYXVzZU9uTmV4dFN0YXRl
bWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsg
fQogCisgICAgYm9vbCBzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVh
a3BvaW50JiwgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgYm9vbCBjYW5jZWxQYXVzZUZvclNwZWNp
YWxCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYpOworCiAgICAgdm9pZCBicmVha1Byb2dyYW0o
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBkYXRhKTsKICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJp
bmcmIGRpcmVjdGl2ZVRleHQpOwogCkBAIC0xNDIsMTIgKzE0OCwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQogICAgIHZpcnR1YWwgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVj
dXRpb25Db250ZXh0SWQpID0gMDsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1
Z1NlcnZlcigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0KKyAgICBKU0M6OkRlYnVn
Z2VyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dW5tdXRlQ29uc29sZSgpID0gMDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZU1hcFVSTEZv
clNjcmlwdChjb25zdCBTY3JpcHQmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VNYXBVUkxG
b3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZENs
ZWFyR2xvYmFsT2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyQXN5bmNTdGFja1Ry
YWNlRGF0YSgpIHsgfQpAQCAtMTU3LDkgKzE2Myw0NCBAQCBwcml2YXRlOgogCiAgICAgUmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZy
YW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYpOwogCi0gICAgdm9pZCByZXNvbHZlQnJlYWtwb2lu
dChjb25zdCBTY3JpcHQmLCBKU0M6OkJyZWFrcG9pbnQmKTsKLSAgICB2b2lkIHNldEJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50JiwgYm9vbCYgZXhpc3RpbmcpOwotICAgIHZvaWQgZGlkU2V0QnJl
YWtwb2ludChjb25zdCBKU0M6OkJyZWFrcG9pbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTY3Jp
cHRCcmVha3BvaW50Jik7CisgICAgY2xhc3MgUHJvdG9jb2xCcmVha3BvaW50IHsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgT3B0
aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYsIEpTQzo6
U291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9IG51bGxwdHIpOworICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9
IG51bGxwdHIpOworCisgICAgICAgIFByb3RvY29sQnJlYWtwb2ludCgpOworICAgICAgICBQcm90
b2NvbEJyZWFrcG9pbnQoSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWdu
ZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwg
SlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucyA9IHsgfSwgYm9vbCBhdXRv
Q29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CisgICAgICAgIFByb3Rv
Y29sQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
ID0gbnVsbFN0cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25z
ID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAw
KTsKKworICAgICAgICBSZWY8SlNDOjpCcmVha3BvaW50PiBjcmVhdGVEZWJ1Z2dlckJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50SUQsIEpTQzo6U291cmNlSUQpIGNvbnN0OworCisgICAgICAgIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQmIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorCisgICAgICAgIGJvb2wgbWF0Y2hlcyhjb25zdCBTdHJpbmcm
IHNjcmlwdFVSTCkgY29uc3Q7CisKKyAgICBwcml2YXRlOgorICAgICAgICBJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkIG1faWQ7CisKKyNpZiBBU1NFUlRfRU5BQkxF
RAorICAgICAgICBKU0M6OlNvdXJjZUlEIG1fc291cmNlSUQgeyBKU0M6Om5vU291cmNlSUQgfTsK
KyNlbmRpZgorICAgICAgICBTdHJpbmcgbV91cmw7CisgICAgICAgIGJvb2wgbV9pc1JlZ2V4IHsg
ZmFsc2UgfTsKKworICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3
MT4gV2ViIEluc3BlY3RvcjogQWRvcHQgVGV4dFBvc2l0aW9uIGluIEluc3BlY3RvciB0byBhdm9p
ZCBvbmVCYXNlZEludC96ZXJvQmFzZWRJbnQgYW1iaWd1aXR5CisgICAgICAgIHVuc2lnbmVkIG1f
bGluZU51bWJlciB7IDAgfTsKKyAgICAgICAgdW5zaWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07
CisKKyAgICAgICAgU3RyaW5nIG1fY29uZGl0aW9uOworICAgICAgICBKU0M6OkJyZWFrcG9pbnQ6
OkFjdGlvbnNWZWN0b3IgbV9hY3Rpb25zOworICAgICAgICBib29sIG1fYXV0b0NvbnRpbnVlIHsg
ZmFsc2UgfTsKKyAgICAgICAgc2l6ZV90IG1faWdub3JlQ291bnQgeyAwIH07CisgICAgfTsKKwor
ICAgIGJvb2wgcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0Jiwg
SlNDOjpCcmVha3BvaW50Jik7CisgICAgYm9vbCBzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2lu
dCYpOworICAgIHZvaWQgZGlkU2V0QnJlYWtwb2ludChQcm90b2NvbEJyZWFrcG9pbnQmLCBKU0M6
OkJyZWFrcG9pbnQmKTsKIAogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nJik7CiAg
ICAgdm9pZCBjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCk7CkBAIC0xNzgsMTcgKzIxOSwx
NSBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGJ1aWxkQnJlYWtwb2ludFBh
dXNlUmVhc29uKEpTQzo6QnJlYWtwb2ludElEKTsKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBi
dWlsZEV4Y2VwdGlvblBhdXNlUmVhc29uKEpTQzo6SlNWYWx1ZSBleGNlcHRpb24sIGNvbnN0IElu
amVjdGVkU2NyaXB0Jik7CiAKLSAgICBib29sIGJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29s
KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgQnJlYWtwb2ludEFj
dGlvbnMqIHJlc3VsdCk7Ci0KICAgICB0eXBlZGVmIHN0ZDo6cGFpcjx1bnNpZ25lZCwgaW50PiBB
c3luY0NhbGxJZGVudGlmaWVyOwogICAgIHN0YXRpYyBBc3luY0NhbGxJZGVudGlmaWVyIGFzeW5j
Q2FsbElkZW50aWZpZXIoQXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQpOwogCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0
Y2hlcjsKICAgICBSZWZQdHI8RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlz
cGF0Y2hlcjsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyJiBtX3NjcmlwdERlYnVnU2VydmVyOwor
ICAgIEpTQzo6RGVidWdnZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiAgICAgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKLSAgICBIYXNoTWFwPEpTQzo6U291
cmNlSUQsIFNjcmlwdD4gbV9zY3JpcHRzOworICAgIEhhc2hNYXA8SlNDOjpTb3VyY2VJRCwgSlND
OjpEZWJ1Z2dlcjo6U2NyaXB0PiBtX3NjcmlwdHM7CiAKICAgICBzdHJ1Y3QgQmxhY2tib3hDb25m
aWcgewogICAgICAgICBTdHJpbmcgdXJsOwpAQCAtMjA5LDEwICsyNDgsMTIgQEAgcHJpdmF0ZToK
ICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBtX3BhdXNlZEdsb2JhbE9iamVjdCB7IG51bGxwdHIg
fTsKICAgICBKU0M6OlN0cm9uZzxKU0M6OlVua25vd24+IG1fY3VycmVudENhbGxTdGFjazsKIAot
ICAgIEhhc2hNYXA8U3RyaW5nLCBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+PiBtX2JyZWFrcG9p
bnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHM7Ci0gICAgSGFzaE1hcDxTdHJp
bmcsIFJlZlB0cjxKU09OOjpPYmplY3Q+PiBtX2phdmFTY3JpcHRCcmVha3BvaW50czsKLSAgICBI
YXNoTWFwPEpTQzo6QnJlYWtwb2ludElELCBTdHJpbmc+IG1fZGVidWdnZXJCcmVha3BvaW50SWRl
bnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50aWZpZXI7Ci0gICAgSlNDOjpCcmVha3Bv
aW50SUQgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgeyBKU0M6Om5vQnJlYWtwb2lu
dElEIH07CisgICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtw
b2ludElkLCBQcm90b2NvbEJyZWFrcG9pbnQ+IG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9j
b2xCcmVha3BvaW50SUQ7CisgICAgSGFzaE1hcDxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkLCBKU0M6OkJyZWFrcG9pbnRzVmVjdG9yPiBtX2RlYnVnZ2VyQnJlYWtw
b2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRDsKKyAgICBKU0M6OkJyZWFrcG9pbnRJRCBtX25l
eHREZWJ1Z2dlckJyZWFrcG9pbnRJRCB7IEpTQzo6bm9CcmVha3BvaW50SUQgKyAxIH07CisKKyAg
ICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJl
YWtwb2ludDsKKwogICAgIFNob3VsZERpc3BhdGNoUmVzdW1lZCBtX2NvbmRpdGlvblRvRGlzcGF0
Y2hSZXN1bWVkIHsgU2hvdWxkRGlzcGF0Y2hSZXN1bWVkOjpObyB9OwogCiAgICAgRGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiBtX3BhdXNlUmVhc29uOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggMmZjYjJlN2I4NzVmLi4zZWEwZGEzM2Q4MGQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKICNpbmNsdWRl
ICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgorI2luY2x1
ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRlICJJ
bmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIK
ICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgotI2luY2x1ZGUg
IlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2luY2x1ZGUg
IlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgpAQCAtNzMsNyAr
NzMsNyBAQCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0b3JSdW50aW1lQWdlbnQoKQog
ewogfQogCi1zdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUg
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdT
ZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG5ld1N0YXRl
KQorc3RhdGljIEpTQzo6RGVidWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyJiBzY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpE
ZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBuZXdTdGF0ZSkKIHsKICAgICBhdXRvIHBy
ZXNlbnRTdGF0ZSA9IHNjcmlwdERlYnVnU2VydmVyLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsK
ICAgICBpZiAocHJlc2VudFN0YXRlICE9IG5ld1N0YXRlKQpAQCAtMTIzLDkgKzEyMyw5IEBAIHZv
aWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGNvbnN0IFN0cmluZyYgZXhwCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNl
cHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gU2NyaXB0RGVidWdT
ZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKICAg
ICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCi0gICAg
ICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucyk7CisgICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNl
dFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dl
cjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4
Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAKQEAgLTE2
NSw5ICsxNjUsOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0aW9uT24o
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGlmIChvcHRpb25hbEFy
Z3VtZW50cykKICAgICAgICAgYXJndW1lbnRzID0gb3B0aW9uYWxBcmd1bWVudHMtPnRvSlNPTlN0
cmluZygpOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUg
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9uczsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKICAgICBpZiAoYXNCb29s
KGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCi0gICAgICAgIHByZXZpb3Vz
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3Jp
cHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7
CisgICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNl
T25FeGNlcHRpb25zKTsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSkpCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAKQEAgLTE4Nyw3ICsxODcsNyBA
QCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVn
U2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICBh
dXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJl
dmlldyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHByZXZpZXcpOwpAQCAtMjE2LDcgKzIxNiw3IEBA
IHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBT
Y3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25F
eGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdT
ZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgIGF1
dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2Vw
dGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5nZXRQcm9w
ZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgYXNCb29sKG93blByb3BlcnRpZXMpLCBzdGFy
dCwgY291bnQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBwcm9wZXJ0aWVzKTsKQEAgLTI0OSw3
ICsyNDksNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJldmlv
dXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3Nj
cmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25z
KTsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBh
dXNlT25FeGNlcHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3Jp
cHQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgc3RhcnQs
IGNvdW50LCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgcHJvcGVydGllcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oCmluZGV4IGUzY2I2MjQ1NmMyYy4uOWQ3NjVkOTYwN2FhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3Mg
Vk07CiB9CiAKQEAgLTQ0LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNz
IEluamVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2Ny
aXB0RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgSW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewpAQCAtOTQs
NyArOTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJs
ZWRTdGF0ZShib29sKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXI7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7
CisgICAgSlNDOjpEZWJ1Z2dlciYgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKICAgICBKU0M6OlZNJiBt
X3ZtOwogICAgIGJvb2wgbV9lbmFibGVkIHtmYWxzZX07CiAgICAgYm9vbCBtX2lzVHlwZVByb2Zp
bGluZ0VuYWJsZWQge2ZhbHNlfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudC5jcHAKaW5kZXggOTdjYzkxZmY1ZTIyLi5jMTJlYzY5YTAxNWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2Zp
bGVyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0yNiwxMSArMjYsMTEgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50
LmgiCiAKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkRlZmVyR0MuaCIKICNpbmNs
dWRlICJIZWFwSW5saW5lcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckVudmlyb25tZW50LmgiCiAj
aW5jbHVkZSAiU2FtcGxpbmdQcm9maWxlci5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVy
LmgiCiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xv
YmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgKaW5kZXggM2I4OGRlYWI3NzUz
Li42Zjc5Mjc4ZDUzMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5o
CkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQoSlNBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqKTsKICAgICB+SlNHbG9i
YWxPYmplY3REZWJ1Z2dlckFnZW50KCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3Rl
bmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAg
IHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3Ry
aW5nJiBkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJ
ZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3By
b3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9ET00uanNvbgppbmRleCBmM2E3NzUzNzAyOTkuLjk5OGJjNGFmZTY4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCkBAIC0zMTYs
NyArMzE2LDggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXQgYSBicmVha3BvaW50
IG9uIHRoZSBnaXZlbiBldmVudCBsaXN0ZW5lci4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVz
IjogWyJwYWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAg
ICB7ICJuYW1lIjogImV2ZW50TGlzdGVuZXJJZCIsICIkcmVmIjogIkV2ZW50TGlzdGVuZXJJZCIg
fQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXZlbnRMaXN0ZW5lcklkIiwgIiRyZWYiOiAi
RXZlbnRMaXN0ZW5lcklkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIs
ICIkcmVmIjogIkRlYnVnZ2VyLkJyZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwg
ImRlc2NyaXB0aW9uIjogIk9wdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1v
ZGlmeSBpdHMgYmVoYXZpb3IuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
RE9NRGVidWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9j
b2wvRE9NRGVidWdnZXIuanNvbgppbmRleCA1YTE4OTc2MjgyNDQuLmVlZmE5MzNmOWY1ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1
Z2dlci5qc29uCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wv
RE9NRGVidWdnZXIuanNvbgpAQCAtMzksNyArMzksOCBAQAogICAgICAgICAgICAgImRlc2NyaXB0
aW9uIjogIlNldHMgYnJlYWtwb2ludCBvbiBwYXJ0aWN1bGFyIGV2ZW50IG9mIGdpdmVuIHR5cGUu
IiwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwogICAgICAgICAgICAgICAgIHsgIm5hbWUi
OiAiYnJlYWtwb2ludFR5cGUiLCAiJHJlZiI6ICJFdmVudEJyZWFrcG9pbnRUeXBlIiB9LAotICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXZlbnROYW1lIiwgInR5cGUiOiAic3RyaW5nIiwgIm9w
dGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRoZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBl
dmVudCB0byBzdG9wIG9uLiIgfQorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXZlbnROYW1l
IiwgInR5cGUiOiAic3RyaW5nIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIlRo
ZSBuYW1lIG9mIHRoZSBzcGVjaWZpYyBldmVudCB0byBzdG9wIG9uLiIgfSwKKyAgICAgICAgICAg
ICAgICB7ICJuYW1lIjogIm9wdGlvbnMiLCAiJHJlZiI6ICJEZWJ1Z2dlci5CcmVha3BvaW50T3B0
aW9ucyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPcHRpb25zIHRvIGFwcGx5
IHRvIHRoaXMgYnJlYWtwb2ludCB0byBtb2RpZnkgaXRzIGJlaGF2aW9yLiIgfQogICAgICAgICAg
ICAgXQogICAgICAgICB9LAogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU01pY3JvdGFzay5jcHAKaW5kZXggMDNlZTYwYjM2NTk2Li40NGI4OTQ1NjczMGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKQEAgLTkx
LDYgKzkxLDkgQEAgdm9pZCBKU01pY3JvdGFzazo6cnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKICAgICBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246
Ok1pY3JvdGFzaywgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
aGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKworICAgIGlm
IChVTkxJS0VMWShnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkpKQorICAgICAgICBnbG9iYWxP
YmplY3QtPmRlYnVnZ2VyKCktPmRpZFJ1bk1pY3JvdGFzaygpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCBmZTg3ZDc2OTFmYTIuLjcwODZjNTg2OTgxYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDEwNyBAQAorMjAyMC0wOC0xNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2lu
dHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0byBkbyB0aGluZ3MgbGlrZToKKyAg
ICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZlbnQudHlwZWAgaXMgYSBjZXJ0YWlu
IHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3QgTiBwYXVzZXMKKyAgICAgICAgIC0g
ZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVudCBsaXN0ZW5lciBpcyBpbnZva2Vk
IHdpdGhvdXQgcGF1c2luZworCisgICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvZG9tL2JyZWFrcG9p
bnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWwKKyAgICAgICAg
ICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMu
aHRtbAorICAgICAgICAgICAgICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5l
ci1icmVha3BvaW50cy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JE
T01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJyZWFrcG9p
bnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50
OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6IERlbGV0ZWQuCisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKToKKyAg
ICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtw
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1v
dmVFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmlyZVRpbWVyKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZURPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVBbmltYXRpb25GcmFtZSk6CisgICAg
ICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25G
cmFtZUJyZWFrcG9pbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9X
b3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRPTURl
YnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludCk6CisgICAgICAgIEtlZXAg
YSBgSlNDOjpCcmVha3BvaW50YCBmb3IgZWFjaCBldmVudCBicmVha3BvaW50IGluc3RlYWQgb2Yg
YSBzaW1wbGUgYGJvb2xgLCBhbGxvd2luZyBmb3IKKyAgICAgICAgY29uZmlndXJhdGlvbiB3aGVu
IHRoZSBicmVha3BvaW50IGlzIGZpcnN0IHNldC4gV2hlbiBhbnkgb2YgdGhlc2UgYnJlYWtwb2lu
dHMgYXJlIGhpdCwgcGFzcworICAgICAgICBpdCB0byB0aGUgYEpTQzo6RGVidWdnZXJgIGFzIGEg
InNwZWNpYWwgYnJlYWtwb2ludCIsIHdoaWNoIGJlaGF2ZXMgdGhlIHNhbWUgYXMgInBhdXNlIEFT
QVAiCisgICAgICAgIGJ1dCBhbHNvIHN1cHBvcnRzIGEgY29uZGl0aW9uLCBhbiBpZ25vcmUgY291
bnQsIGFjdGlvbnMsIGFuZCBhdXRvLWNvbnRpbnVlLiBSZXNldCB0aGUgaGl0CisgICAgICAgIGNv
dW50IGZvciBhbnkgb2YgdGhlc2UgInNwZWNpYWwgYnJlYWtwb2ludHMiIHRoYXQgcGVyc2lzdCBh
Y3Jvc3MgV2ViIEluc3BlY3RvciBzZXNzaW9ucworICAgICAgICB3aGVuIHRoZSBtYWluIGZyYW1l
IG5hdmlnYXRlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6UGFnZVNjcmlwdERlYnVnU2VydmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdn
ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1
Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFBhdXNl
KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BX
aGlsZVBhdXNlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1
bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNj
cmlwdERlYnVnU2VydmVyOjppc0NvbnRlbnRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZXBvcnRFeGNlcHRpb24gY29uc3QpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3Bl
Y3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hp
bGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJl
cG9ydEV4Y2VwdGlvbiBjb25zdCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VE
ZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpz
b3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICBSZXBsYWNlIGBJbnNwZWN0b3I6OlNjcmlw
dERlYnVnU2VydmVyYCB3aXRoIGBKU0M6OkRlYnVnZ2VyYC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVS
ZWNvcmRGYWN0b3J5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclRpbWVsaW5lQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxp
bmVBZ2VudDo6aW50ZXJuYWxTdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1l
bGluZUFnZW50OjppbnRlcm5hbFN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGlt
ZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToKKyAgICAgICAgUmVwbGFjZSBgSW5z
cGVjdG9yOjpTY3JpcHRCcmVha3BvaW50YCB3aXRoIGBKU0M6OkJyZWFrcG9pbnRgLgorCisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcklt
cGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21t
aXRMb2FkSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwpOgorCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojppbm5lckludm9rZUV2ZW50TGlz
dGVuZXJzKToKKyAgICAgICAgKiBwYWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRPTVRpbWVyOjpmaXJlZCk6CisgICAgICAgIFdoZW4gbm90aWZ5aW5nIFdlYiBJbnNwZWN0b3Ig
dGhhdCBhY3Rpdml0eSBkaWQgb2NjdXIsIGluY2x1ZGUgYWxsIGluZm9ybWF0aW9uIHByZXZpb3Vz
bHkKKyAgICAgICAgaW5jbHVkZWQgd2hlbiBub3RpZnlpbmcgV2ViIEluc3BlY3RvciB0aGF0IHRo
YXQgYWN0aXZpdHkgd2FzIGFib3V0IHRvIG9jY3VyIHNvIHRoYXQgV2ViCisgICAgICAgIEluc3Bl
Y3RvciBjYW4ga25vdyB3aGV0aGVyIGEgcGF1c2UgZm9yIHRoZSAic3BlY2lhbCBicmVha3BvaW50
IiBmb3IgdGhhdCBhY3Rpdml0eSBpcyBzdGlsbAorICAgICAgICBzY2hlZHVsZWQgYW5kIGlmIHNv
IGNhbmNlbCBpdC4KKwogMjAyMC0wOC0xNCAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29t
PgogCiAgICAgICAgIE9mZmxpbmVBdWRpb0NvbnRleHQuZGVzdGluYXRpb24gaGFzIGluY29ycmVj
dCBudW1iZXIgb2YgY2hhbm5lbHMgJiBjaGFubmVsIGNvdW50IG1vZGUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZl
bnRUYXJnZXQuY3BwCmluZGV4IDFkYWMzNTQyNmU5Ni4uMzU0YmVlOTk4OTFiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lkIEV2ZW50VGFyZ2V0
Ojppbm5lckludm9rZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCwgRXZlbnRMaXN0ZW5lclZl
Y3RvciBsaQogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2
ZW50KGNvbnRleHQsIGV2ZW50LCAqcmVnaXN0ZXJlZExpc3RlbmVyKTsKICAgICAgICAgcmVnaXN0
ZXJlZExpc3RlbmVyLT5jYWxsYmFjaygpLmhhbmRsZUV2ZW50KGNvbnRleHQsIGV2ZW50KTsKLSAg
ICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChjb250ZXh0KTsK
KyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChjb250ZXh0
LCBldmVudCwgKnJlZ2lzdGVyZWRMaXN0ZW5lcik7CiAKICAgICAgICAgaWYgKHJlZ2lzdGVyZWRM
aXN0ZW5lci0+aXNQYXNzaXZlKCkpCiAgICAgICAgICAgICBldmVudC5zZXRJblBhc3NpdmVMaXN0
ZW5lcihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDE5MWNmOGQwZTI1Ni4uMGEwODE4MDc5OGZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uLmNwcApAQCAtNDE4LDEzICs0MTgsMTMgQEAgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OndpbGxIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWUK
ICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+d2lsbEhhbmRsZUV2ZW50KGV2ZW50LCBsaXN0ZW5l
cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cykKK3ZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudGluZ0FnZW50cywgRXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lciYgbGlzdGVuZXIpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAg
IHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CiAKICAgICBpZiAoYXV0
byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURlYnVn
Z2VyQWdlbnQoKSkKLSAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFuZGxlRXZlbnQoKTsK
KyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkSGFuZGxlRXZlbnQoZXZlbnQsIGxpc3RlbmVy
KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZERpc3BhdGNoRXZlbnRJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGNvbnN0IEV2ZW50
JiBldmVudCkKQEAgLTQ3MywxMCArNDczLDEyIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjp3aWxsRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAg
ICAgICAgIHRpbWVsaW5lQWdlbnQtPndpbGxGaXJlVGltZXIodGltZXJJZCwgZnJhbWVGb3JTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVu
dGluZ0FnZW50cykKK3ZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIGludCAvKiB0aW1l
cklkICovLCBib29sIG9uZVNob3QpCiB7CiAgICAgaWYgKGF1dG8qIHdlYkRlYnVnZ2VyQWdlbnQg
PSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAg
IHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7CisgICAgaWYgKGF1dG8q
IGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dl
ckFnZW50KCkpCisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEZpcmVUaW1lcihvbmVTaG90
KTsKICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMudHJh
Y2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVsaW5lQWdlbnQtPmRpZEZpcmVUaW1l
cigpOwogfQpAQCAtNzE2LDYgKzcxOCw5IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50CiAgICAg
ICAgIGlmIChhdXRvKiBwYWdlRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5h
YmxlZFBhZ2VEZWJ1Z2dlckFnZW50KCkpCiAgICAgICAgICAgICBwYWdlRGVidWdnZXJBZ2VudC0+
bWFpbkZyYW1lTmF2aWdhdGVkKCk7CiAKKyAgICAgICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdl
bnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRET01EZWJ1Z2dlckFnZW50KCkpCisgICAg
ICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKKwogICAgICAg
ICBpZiAoYXV0byogZW5hYmxlZFBhZ2VIZWFwQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVu
YWJsZWRQYWdlSGVhcEFnZW50KCkpCiAgICAgICAgICAgICBlbmFibGVkUGFnZUhlYXBBZ2VudC0+
bWFpbkZyYW1lTmF2aWdhdGVkKCk7CiAgICAgfQpAQCAtMTI2Miw2ICsxMjY3LDggQEAgdm9pZCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFtZUltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYgaW4KIHsKICAgICBpZiAoYXV0byogd2ViRGVidWdnZXJBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgd2Vi
RGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKKyAgICBpZiAoYXV0byogcGFn
ZURPTURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRE9NRGVi
dWdnZXJBZ2VudCgpKQorICAgICAgICBwYWdlRE9NRGVidWdnZXJBZ2VudC0+ZGlkRmlyZUFuaW1h
dGlvbkZyYW1lKCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGluZUFnZW50LT5k
aWRGaXJlQW5pbWF0aW9uRnJhbWUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAppbmRleCA3MzBmMzMyNTFkZDAuLjVhZDc5
ZTBkMTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uaApAQCAtMTcxLDE0ICsxNzEsMTQgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50JiwgY29uc3QgRXZlbnQmKTsKICAgICBz
dGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KERvY3VtZW50JiwgY29uc3QgRXZlbnQmKTsKICAg
ICBzdGF0aWMgdm9pZCB3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV2
ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKLSAgICBzdGF0aWMgdm9pZCBk
aWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAgc3RhdGljIHZvaWQg
ZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIEV2ZW50JiwgY29uc3QgUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVu
dE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQmLCBET01XaW5kb3cmKTsKICAgICBzdGF0aWMg
dm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBjb25zdCBFdmVudCYpOwogICAg
IHN0YXRpYyB2b2lkIGV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNoKGNvbnN0IEV2ZW50Jik7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1
cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBk
aWRFdmFsdWF0ZVNjcmlwdChGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxGaXJlVGltZXIo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QpOwotICAg
IHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CisgICAg
c3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBpbnQgdGlt
ZXJJZCwgYm9vbCBvbmVTaG90KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnZhbGlkYXRlTGF5b3V0
KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExheW91dChGcmFtZSYpOwogICAgIHN0YXRp
YyB2b2lkIGRpZExheW91dChGcmFtZSYsIFJlbmRlck9iamVjdCYpOwpAQCAtMzk0LDcgKzM5NCw3
IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFdmVudExpc3RlbmVyRGlzYWJsZWRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2
ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgc3RhdGljIHZvaWQg
d2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBEb2N1bWVudCYsIGNv
bnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRsZUV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwot
ICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJik7
CisgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAgc3RhdGljIHZv
aWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IEV2ZW50
Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Jik7CiAgICAgc3RhdGljIHZv
aWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgY29u
c3QgRXZlbnQmKTsKQEAgLTQwMiw3ICs0MDIsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lk
IHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJiwgY29u
c3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZy
YW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
KTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMm
LCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKICAgICBzdGF0aWMgdm9pZCBkaWRJbnZhbGlk
YXRlTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBzdGF0aWMg
dm9pZCB3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJhbWUmKTsKICAgICBz
dGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBSZW5kZXJPYmpl
Y3QmKTsKQEAgLTg5MiwxMSArODkyLDExIEBAIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvCiAgICAg
ICAgIHJldHVybiB3aWxsSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBldmVu
dCwgbGlzdGVuZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCitpbmxpbmUg
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmIGNvbnRleHQsIEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImIGxpc3RlbmVyKQogewogICAgIEZBU1RfUkVUVVJOX0lGX05PX0ZST05URU5EUyh2
b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRz
ID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4dCkpCi0gICAgICAgIHJldHVy
biBkaWRIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMpOworICAgICAgICByZXR1
cm4gZGlkSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzLCBldmVudCwgbGlzdGVu
ZXIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxEaXNw
YXRjaEV2ZW50T25XaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBFdmVudCYgZXZlbnQsIERPTVdp
bmRvdyYgd2luZG93KQpAQCAtOTQ2LDExICs5NDYsMTEgQEAgaW5saW5lIHZvaWQgSW5zcGVjdG9y
SW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnQKICAgICAgICAgd2lsbEZpcmVUaW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRpbWVy
SWQsIG9uZVNob3QsIGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQor
aW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCkKIHsK
ICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoYXV0byog
aW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRl
eHQpKQotICAgICAgICBkaWRGaXJlVGltZXJJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAg
ICAgICAgZGlkRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgdGltZXJJZCwgb25l
U2hvdCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52
YWxpZGF0ZUxheW91dChGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDE3YTY2ZjEwYzFhMi4uMDVmZWZi
Y2JlYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERl
YnVnU2VydmVyLmNwcApAQCAtNTQsMTggKzU0LDIyIEBAIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiB1
c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OlBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcihQYWdlJiBwYWdlKQotICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoV2Vi
Q29yZTo6Y29tbW9uVk0oKSkKKyAgICA6IERlYnVnZ2VyKFdlYkNvcmU6OmNvbW1vblZNKCkpCiAg
ICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmF0
dGFjaERlYnVnZ2VyKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjphdHRhY2hEZWJ1Z2dlcigpOwor
CiAgICAgbV9wYWdlLnNldERlYnVnZ2VyKHRoaXMpOwogfQogCiB2b2lkIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogeworICAgIEpT
Qzo6RGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOworCiAgICAgbV9w
YWdlLnNldERlYnVnZ2VyKG51bGxwdHIpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKICAg
ICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKQEAgLTc3LDE4ICs4MSwyNCBAQCB2b2lk
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKQogICAgIERl
YnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogfQogCi12b2lkIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqKQordm9pZCBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6OmRpZFBhdXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CisgICAg
SlNDOjpEZWJ1Z2dlcjo6ZGlkUGF1c2UoZ2xvYmFsT2JqZWN0KTsKKwogICAgIHNldEphdmFTY3Jp
cHRQYXVzZWQobV9wYWdlLmdyb3VwKCksIHRydWUpOwogfQogCi12b2lkIFBhZ2VTY3JpcHREZWJ1
Z1NlcnZlcjo6ZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3QqKQordm9pZCBQYWdlU2NyaXB0RGVi
dWdTZXJ2ZXI6OmRpZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Cisg
ICAgSlNDOjpEZWJ1Z2dlcjo6ZGlkQ29udGludWUoZ2xvYmFsT2JqZWN0KTsKKwogICAgIHNldEph
dmFTY3JpcHRQYXVzZWQobV9wYWdlLmdyb3VwKCksIGZhbHNlKTsKIH0KIAogdm9pZCBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIHsKKyAgICBKU0M6OkRl
YnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKICAgICAvLyBPbiBpT1MsIHJ1bm5pbmcgYW4gRXZlbnRMb29wIGNhdXNlcyB1cyB0byBy
dW4gYSBuZXN0ZWQgV2ViUnVuTG9vcC4KICAgICAvLyBTaW5jZSB0aGUgV2ViVGhyZWFkIGlzIGF1
dG9yZWxlYXNlZCBhdCB0aGUgZW5kIG9mIHJ1biBsb29wIGl0ZXJhdGlvbnMKQEAgLTExNSw3ICsx
MjUsNyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVz
ZWRJbnRlcm5hbCgpCiAKICAgICBtX3BhZ2UuaW5jcmVtZW50TmVzdGVkUnVuTG9vcENvdW50KCk7
CiAKLSAgICB3aGlsZSAoIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cykgeworICAgIHdo
aWxlICghZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKSB7CiAgICAgICAgIGlmICghcGxh
dGZvcm1TaG91bGRDb250aW51ZVJ1bm5pbmdFdmVudExvb3BXaGlsZVBhdXNlZCgpKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI1LDExICsxMzUsMTMgQEAgdm9pZCBQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKQogCiBib29sIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6aXNDb250ZW50U2NyaXB0KEpTR2xvYmFsT2JqZWN0KiBzdGF0
ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gJmN1cnJlbnRXb3JsZCgqc3RhdGUpICE9ICZtYWluVGhy
ZWFkTm9ybWFsV29ybGQoKTsKKyAgICByZXR1cm4gJmN1cnJlbnRXb3JsZCgqc3RhdGUpICE9ICZt
YWluVGhyZWFkTm9ybWFsV29ybGQoKSB8fCBKU0M6OkRlYnVnZ2VyOjppc0NvbnRlbnRTY3JpcHQo
c3RhdGUpOwogfQogCiB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVwb3J0RXhjZXB0aW9u
KEpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikgY29uc3QK
IHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlvbik7
CisKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlvbik7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApp
bmRleCAyMmQ4Y2Y3ODlkOTUuLmZmMzgxOWRiNDg1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMjYsNyArMjYsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdERlYnVnU2VydmVy
Lmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCkBAIC0zNCw3ICszNCw3IEBAIGNsYXNzIEZyYW1lOwogY2xhc3MgUGFnZTsKIGNs
YXNzIFBhZ2VHcm91cDsKIAotY2xhc3MgUGFnZVNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVi
bGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgUGFnZVNjcmlwdERlYnVn
U2VydmVyIGZpbmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQ7CiBwdWJsaWM6CkBAIC00NCwxNCArNDQsMTQgQEAgcHVibGljOgogICAgIHZvaWQgcmVjb21w
aWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVp
bmdEZXN0cm95ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFs
T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0Kikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIG92ZXJy
aWRlOwotICAgIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25z
dCBvdmVycmlkZTsKLSAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0
KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2Vy
CisgICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIGZpbmFsOworICAgIHZvaWQgZGV0YWNoRGVidWdn
ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBmaW5hbDsKKyAgICB2b2lkIGRpZFBhdXNlKEpTQzo6
SlNHbG9iYWxPYmplY3QqKSBmaW5hbDsKKyAgICB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9i
YWxPYmplY3QqKSBmaW5hbDsKKyAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgZmlu
YWw7CisgICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0
IGZpbmFsOworICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCBydW5FdmVudExvb3BXaGls
ZVBhdXNlZEludGVybmFsKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Rp
bWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAKaW5kZXggY2M0NWIxZjRjMmIxLi5lZWRlZDhmNDgyOWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRmxvYXRRdWFkLmgiCiAjaW5jbHVk
ZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JQcm90
b2NvbE9iamVjdHMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRCcmVha3BvaW50
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrLmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5oPgogCkBAIC03MywxMCAr
NzIsMTAgQEAgUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVD
b25zb2xlUHJvZmlsZURhdGEoY29uc3QgU3RyaW5nJgogICAgIHJldHVybiBkYXRhOwogfQogCi1S
ZWY8SlNPTjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxl
RGF0YShjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24sIHVuc2lnbmVkIHNhbXBs
ZUlkKQorUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9i
ZVNhbXBsZURhdGEoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgYWN0aW9uSUQsIHVuc2lnbmVkIHNh
bXBsZUlkKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGRhdGEgPSBKU09OOjpPYmplY3Q6OmNy
ZWF0ZSgpOwotICAgIGRhdGEtPnNldEludGVnZXIoInByb2JlSWQiX3MsIGFjdGlvbi5pZGVudGlm
aWVyKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJwcm9iZUlkIl9zLCBhY3Rpb25JRCk7CiAgICAg
ZGF0YS0+c2V0SW50ZWdlcigic2FtcGxlSWQiX3MsIHNhbXBsZUlkKTsKICAgICByZXR1cm4gZGF0
YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29y
ZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuaAppbmRleCA1MzA3NTU4NzU5YTMuLjQxYjZkZDY0NTA5ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtMzEsMTUgKzMxLDEy
IEBACiAgCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2Vy
UHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0pT
T05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLXN0cnVjdCBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2ZW50OwpA
QCAtNTEsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4g
Y3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGludCBzY3Jp
cHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4g
Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAgIHN0YXRp
YyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVQcm9iZVNhbXBsZURhdGEoY29uc3QgSW5zcGVjdG9y
OjpTY3JpcHRCcmVha3BvaW50QWN0aW9uJiwgdW5zaWduZWQgc2FtcGxlSWQpOworICAgIHN0YXRp
YyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVQcm9iZVNhbXBsZURhdGEoSlNDOjpCcmVha3BvaW50
QWN0aW9uSUQsIHVuc2lnbmVkIHNhbXBsZUlkKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVj
dD4gY3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgUmVm
PEpTT046Ok9iamVjdD4gY3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7CiAgICAg
c3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50IHRpbWVy
SWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDRhNjkx
OTY5N2NiYy4uMzYxZGIxNmM0ZDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTQ0LDE4ICs0NCwyMiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBXb3JrZXJTY3Jp
cHREZWJ1Z1NlcnZlcjo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIoV29ya2VyR2xvYmFsU2NvcGUm
IGNvbnRleHQpCi0gICAgOiBTY3JpcHREZWJ1Z1NlcnZlcihjb250ZXh0LnNjcmlwdCgpLT52bSgp
KQorICAgIDogRGVidWdnZXIoY29udGV4dC5zY3JpcHQoKS0+dm0oKSkKICAgICAsIG1fd29ya2Vy
R2xvYmFsU2NvcGUoY29udGV4dCkKIHsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZl
cjo6YXR0YWNoRGVidWdnZXIoKQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0dGFjaERlYnVnZ2Vy
KCk7CisKICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgpLT5hdHRhY2hEZWJ1Z2dlcih0
aGlzKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIo
Ym9vbCBpc0JlaW5nRGVzdHJveWVkKQogeworICAgIEpTQzo6RGVidWdnZXI6OmRldGFjaERlYnVn
Z2VyKGlzQmVpbmdEZXN0cm95ZWQpOworCiAgICAgaWYgKG1fd29ya2VyR2xvYmFsU2NvcGUuc2Ny
aXB0KCkpCiAgICAgICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmRldGFjaERlYnVn
Z2VyKHRoaXMpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkKQEAgLTcwLDE2ICs3NCwyMCBA
QCB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygp
CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2Vk
KCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOworCiAg
ICAgVGltZXJCYXNlOjpmaXJlVGltZXJzSW5OZXN0ZWRFdmVudExvb3AoKTsKIAogICAgIE1lc3Nh
Z2VRdWV1ZVdhaXRSZXN1bHQgcmVzdWx0OwogICAgIGRvIHsKICAgICAgICAgcmVzdWx0ID0gbV93
b3JrZXJHbG9iYWxTY29wZS50aHJlYWQoKS5ydW5Mb29wKCkucnVuSW5EZWJ1Z2dlck1vZGUobV93
b3JrZXJHbG9iYWxTY29wZSk7Ci0gICAgfSB3aGlsZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRl
cm1pbmF0ZWQgJiYgIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyk7CisgICAgfSB3aGls
ZSAocmVzdWx0ICE9IE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQgJiYgIWRvbmVQcm9jZXNzaW5nRGVi
dWdnZXJFdmVudHMoKSk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9y
dEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiBleGVjLCBKU0M6OkV4Y2VwdGlvbiogZXhj
ZXB0aW9uKSBjb25zdAogeworICAgIEpTQzo6RGVidWdnZXI6OnJlcG9ydEV4Y2VwdGlvbihleGVj
LCBleGNlcHRpb24pOworCiAgICAgV2ViQ29yZTo6cmVwb3J0RXhjZXB0aW9uKGV4ZWMsIGV4Y2Vw
dGlvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlw
dERlYnVnU2VydmVyLmgKaW5kZXggZWE3MWYxZGU4OGQyLi5jOGJhMzJlNDM3Y2QgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oCkBA
IC0zMSwzMCArMzEsMjcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9TY3JpcHREZWJ1Z1NlcnZlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVn
Z2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7
CiAKLWNsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEluc3BlY3Rv
cjo6U2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIgZmlu
YWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoV29y
a2VyU2NyaXB0RGVidWdTZXJ2ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVi
bGljOgogICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2JhbFNjb3BlJik7CiAg
ICAgfldvcmtlclNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OwogCi0gICAg
dm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAg
IHZvaWQgYXR0YWNoRGVidWdnZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGFjaERlYnVnZ2Vy
KGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpZFBhdXNlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGRpZENvbnRpbnVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0ds
b2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdm9pZCBy
ZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29u
c3Qgb3ZlcnJpZGU7CisgICAgLy8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQgYXR0YWNoRGVidWdn
ZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3ll
ZCkgZmluYWw7CisgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpIGZpbmFsOworICAg
IHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKKyAgICB2b2lkIHJlcG9ydEV4
Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5h
bDsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNjb3BlOwogfTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKaW5kZXggMzRkYTk1ODBhZTRhLi4xNWY2NmQxYmUzNWIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0x
MTIsNiArMTEyLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0ZhY3Rv
cnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDxKYXZhU2Ny
aXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdlc3Qu
aD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTkzMSwxMyArOTMyLDEzIEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGludCBuCiAgICAgYXV0byBhZGRMaXN0ZW5lciA9IFsmXSAoUmVnaXN0ZXJl
ZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBFdmVudExpc3RlbmVySW5mbyYgaW5mbykg
ewogICAgICAgICBpbnQgaWRlbnRpZmllciA9IDA7CiAgICAgICAgIGJvb2wgZGlzYWJsZWQgPSBm
YWxzZTsKLSAgICAgICAgYm9vbCBoYXNCcmVha3BvaW50ID0gZmFsc2U7CisgICAgICAgIFJlZlB0
cjxKU0M6OkJyZWFrcG9pbnQ+IGJyZWFrcG9pbnQ7CiAKICAgICAgICAgZm9yIChhdXRvJiBpbnNw
ZWN0b3JFdmVudExpc3RlbmVyIDogbV9ldmVudExpc3RlbmVyRW50cmllcy52YWx1ZXMoKSkgewog
ICAgICAgICAgICAgaWYgKGluc3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcygqaW5mby5ldmVu
dFRhcmdldCwgaW5mby5ldmVudFR5cGUsIGxpc3RlbmVyLmNhbGxiYWNrKCksIGxpc3RlbmVyLnVz
ZUNhcHR1cmUoKSkpIHsKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gaW5zcGVjdG9yRXZl
bnRMaXN0ZW5lci5pZGVudGlmaWVyOwogICAgICAgICAgICAgICAgIGRpc2FibGVkID0gaW5zcGVj
dG9yRXZlbnRMaXN0ZW5lci5kaXNhYmxlZDsKLSAgICAgICAgICAgICAgICBoYXNCcmVha3BvaW50
ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAgICAgICAg
IGJyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmJyZWFrcG9pbnQ7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk0NywxMiArOTQ4
LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBuCiAKICAgICAgICAgICAgIGlkZW50aWZpZXIg
PSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmlkZW50aWZpZXI7CiAgICAgICAgICAgICBkaXNhYmxl
ZCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuZGlzYWJsZWQ7Ci0gICAgICAgICAgICBoYXNCcmVh
a3BvaW50ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAg
ICAgYnJlYWtwb2ludCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuYnJlYWtwb2ludDsKIAogICAg
ICAgICAgICAgbV9ldmVudExpc3RlbmVyRW50cmllcy5hZGQoaWRlbnRpZmllciwgaW5zcGVjdG9y
RXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIH0KIAotICAgICAgICBsaXN0ZW5lcnNBcnJheS0+YWRk
SXRlbShidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlkZW50aWZpZXIsICpp
bmZvLmV2ZW50VGFyZ2V0LCBpbmZvLmV2ZW50VHlwZSwgZGlzYWJsZWQsIGhhc0JyZWFrcG9pbnQp
KTsKKyAgICAgICAgbGlzdGVuZXJzQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JFdmVudExp
c3RlbmVyKGxpc3RlbmVyLCBpZGVudGlmaWVyLCAqaW5mby5ldmVudFRhcmdldCwgaW5mby5ldmVu
dFR5cGUsIGRpc2FibGVkLCBicmVha3BvaW50KSk7CiAgICAgfTsKIAogICAgIC8vIEdldCBDYXB0
dXJpbmcgTGlzdGVuZXJzIChpbiB0aGlzIG9yZGVyKQpAQCAtOTg4LDcgKzk4OSw3IEBAIHZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGludCBlCiAgICAgaXQtPnZhbHVlLmRpc2FibGVkID0gZGlzYWJsZWQ7CiB9
CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGV2ZW50TGlzdGVuZXJJZCkKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgaW50IGV2ZW50TGlzdGVuZXJJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25zUGF5bG9hZCkKIHsKICAgICBhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVyRW50cmllcy5m
aW5kKGV2ZW50TGlzdGVuZXJJZCk7CiAgICAgaWYgKGl0ID09IG1fZXZlbnRMaXN0ZW5lckVudHJp
ZXMuZW5kKCkpIHsKQEAgLTk5Niw3ICs5OTcsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpz
ZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsCiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpdC0+dmFsdWUuaGFzQnJlYWtwb2ludCA9IHRy
dWU7CisgICAgaXQtPnZhbHVlLmJyZWFrcG9pbnQgPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
ZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQp
OwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBldmVudExpc3RlbmVySWQpCkBA
IC0xMDA3LDcgKzEwMDgsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVha3Bv
aW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgaXQtPnZhbHVlLmhhc0JyZWFrcG9pbnQgPSBmYWxzZTsKKyAgICBp
dC0+dmFsdWUuYnJlYWtwb2ludCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OmdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vz
c2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKQpAQCAtMTc1MSw3ICsxNzUyLDcgQEAg
UmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkQXIKICAgICByZXR1cm4gcHNldWRvRWxlbWVudHM7CiB9CiAK
LVJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRP
TUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLCBpbnQgaWRlbnRpZmllciwgRXZlbnRU
YXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlz
YWJsZWQsIGJvb2wgaGFzQnJlYWtwb2ludCkKK1JlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlz
dGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmIGV2ZW50VGFyZ2V0LCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGNvbnN0IFJlZlB0cjxKU0M6OkJyZWFr
cG9pbnQ+JiBicmVha3BvaW50KQogewogICAgIFJlZjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyID0gcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKTsKIApAQCAtMTgzOSw4ICsx
ODQwLDggQEAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5z
cGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXYKICAgICAgICAgdmFsdWUtPnNldE9uY2Uo
dHJ1ZSk7CiAgICAgaWYgKGRpc2FibGVkKQogICAgICAgICB2YWx1ZS0+c2V0RGlzYWJsZWQoZGlz
YWJsZWQpOwotICAgIGlmIChoYXNCcmVha3BvaW50KQotICAgICAgICB2YWx1ZS0+c2V0SGFzQnJl
YWtwb2ludChoYXNCcmVha3BvaW50KTsKKyAgICBpZiAoYnJlYWtwb2ludCkKKyAgICAgICAgdmFs
dWUtPnNldEhhc0JyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgcmV0dXJuIHZhbHVlOwogfQog
CkBAIC0yNTQ4LDEzICsyNTQ5LDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmV2ZW50RGlk
UmVzZXRBZnRlckRpc3BhdGNoKGNvbnN0IEV2ZW50JiBldmVudCkKICAgICBtX2Rpc3BhdGNoZWRF
dmVudHMucmVtb3ZlKCZldmVudCk7CiB9CiAKLWJvb2wgSW5zcGVjdG9yRE9NQWdlbnQ6Omhhc0Jy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQsIGNvbnN0IEF0b21T
dHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJvb2wgY2FwdHVyZSkK
K1JlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IEluc3BlY3RvckRPTUFnZW50OjpicmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVu
dFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCiB7CiAgICAgZm9y
IChhdXRvJiBpbnNwZWN0b3JFdmVudExpc3RlbmVyIDogbV9ldmVudExpc3RlbmVyRW50cmllcy52
YWx1ZXMoKSkgewogICAgICAgICBpZiAoaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5tYXRjaGVzKHRh
cmdldCwgZXZlbnRUeXBlLCBsaXN0ZW5lciwgY2FwdHVyZSkpCi0gICAgICAgICAgICByZXR1cm4g
aW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAgICAgcmV0dXJu
IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuYnJlYWtwb2ludDsKICAgICB9Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHJldHVybiBudWxscHRyOwogfQogCiBpbnQgSW5zcGVjdG9yRE9NQWdlbnQ6Omlk
Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKaW5k
ZXggN2U2ZDNmNjhkM2Q2Li4zZTM3NzA3YWZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAK
ICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFz
ZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtw
b2ludC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0
Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtMTI1LDcgKzEyNiw3IEBAIHB1
YmxpYzoKICNlbmRpZgogICAgIHZvaWQgZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxpc3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAgICB2
b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmluZyYsIGludCBldmVudExpc3Rl
bmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklkKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwg
aW50IGV2ZW50TGlzdGVuZXJJZCwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwg
aW50IGV2ZW50TGlzdGVuZXJJZCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5
UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGll
cykgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBxdWVyeSwgY29uc3QgSlNPTjo6QXJyYXkqIG5vZGVJZHMsIGNvbnN0IGJvb2wqIGNh
c2VTZW5zaXRpdmUsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRl
OwpAQCAtMjA1LDcgKzIwNiw3IEBAIHB1YmxpYzoKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7CiAgICAgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBF
dmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJlKTsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50
PiBicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgaW50IGlk
Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CiAKIHByaXZhdGU6CkBAIC0yMzEsNyAr
MjMyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWlsZEFy
cmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxlbWVudCopOwogICAgIFJlZjxKU09OOjpBcnJheU9m
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJD
aGlsZHJlbihOb2RlKiBjb250YWluZXIsIGludCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFw
KTsKICAgICBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5v
ZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxlbWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lk
TWFwKiBub2Rlc01hcCk7Ci0gICAgUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRM
aXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyJiwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQpOworICAgIFJl
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9y
RXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVudGlm
aWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNh
YmxlZCwgY29uc3QgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mKTsKICAgICBSZWZQdHI8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RG
b3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhOb2RlKik7CiAgICAgdm9pZCBwcm9jZXNzQWNjZXNz
aWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVjdCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAg
IApAQCAtMjkwLDcgKzI5MSw3IEBAIHByaXZhdGU6CiAgICAgICAgIEF0b21TdHJpbmcgZXZlbnRU
eXBlOwogICAgICAgICBib29sIHVzZUNhcHR1cmUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGRp
c2FibGVkIHsgZmFsc2UgfTsKLSAgICAgICAgYm9vbCBoYXNCcmVha3BvaW50IHsgZmFsc2UgfTsK
KyAgICAgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYnJlYWtwb2ludDsKIAogICAgICAgICBJ
bnNwZWN0b3JFdmVudExpc3RlbmVyKCkgeyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmlu
ZGV4IDM1MmMxMzMzNzY0Ni4uZmIxMzhhMmUyZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5j
cHAKQEAgLTc2LDEwICs3NiwxMSBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRFbmFibGVkRE9NRGVidWdnZXJB
Z2VudChudWxscHRyKTsKIAogICAgIG1fbGlzdGVuZXJCcmVha3BvaW50cy5jbGVhcigpOworICAg
IG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQgPSBudWxscHRyOworICAgIG1fcGF1c2VP
bkFsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBudWxscHRyOworICAgIG1fcGF1c2VPbkFsbFRpbWVv
dXRzQnJlYWtwb2ludCA9IG51bGxwdHI7CisKICAgICBtX3VybEJyZWFrcG9pbnRzLmNsZWFyKCk7
Ci0gICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9IGZhbHNlOwotICAgIG1fcGF1c2VP
bkFsbExpc3RlbmVyc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0Vu
YWJsZWQgPSBmYWxzZTsKICAgICBtX3BhdXNlT25BbGxVUkxzRW5hYmxlZCA9IGZhbHNlOwogfQog
CkBAIC0xMTEsNyArMTEyLDIyIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlz
Y2FyZEFnZW50KCkKICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBudWxscHRyOwogfQogCi12b2lkIElu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGVTdHJpbmcsIGNvbnN0IFN0
cmluZyogZXZlbnROYW1lKQordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjptYWluRnJh
bWVOYXZpZ2F0ZWQoKQoreworICAgIGZvciAoYXV0byYgYnJlYWtwb2ludCA6IG1fbGlzdGVuZXJC
cmVha3BvaW50cy52YWx1ZXMoKSkKKyAgICAgICAgYnJlYWtwb2ludC0+cmVzZXRIaXRDb3VudCgp
OworCisgICAgaWYgKG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgIG1f
cGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQtPnJlc2V0SGl0Q291bnQoKTsKKworICAgIGlm
IChtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAgICBtX3BhdXNlT25BbGxM
aXN0ZW5lcnNCcmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7CisKKyAgICBpZiAobV9wYXVzZU9u
QWxsVGltZW91dHNCcmVha3BvaW50KQorICAgICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFr
cG9pbnQtPnJlc2V0SGl0Q291bnQoKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJyZWFrcG9pbnRUeXBlU3RyaW5nLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsKICAgICBpZiAoYnJlYWtwb2ludFR5
cGVTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gImJyZWFrcG9pbnRU
eXBlIGlzIGVtcHR5Il9zOwpAQCAtMTI0LDEwICsxNDAsMTMgQEAgdm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb24KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGF1dG8gYnJlYWtwb2ludCA9IElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXlsb2FkKGVycm9y
U3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICBy
ZXR1cm47CisKICAgICBpZiAoZXZlbnROYW1lICYmICFldmVudE5hbWUtPmlzRW1wdHkoKSkgewog
ICAgICAgICBpZiAoYnJlYWtwb2ludFR5cGUudmFsdWUoKSA9PSBJbnNwZWN0b3I6OlByb3RvY29s
OjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlzdGVuZXIpIHsKLSAgICAgICAg
ICAgIGlmICghbV9saXN0ZW5lckJyZWFrcG9pbnRzLmFkZCgqZXZlbnROYW1lKSkKLSAgICAgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IHdpdGggZXZlbnROYW1lIGFscmVhZHkg
ZXhpc3RzIl9zOworICAgICAgICAgICAgbV9saXN0ZW5lckJyZWFrcG9pbnRzLnNldCgqZXZlbnRO
YW1lLCBicmVha3BvaW50LnJlbGVhc2VOb25OdWxsKCkpOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKQEAgLTEzNywyNSArMTU2LDE5IEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudDo6c2V0RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
CiAKICAgICBzd2l0Y2ggKGJyZWFrcG9pbnRUeXBlLnZhbHVlKCkpIHsKICAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpBbmltYXRp
b25GcmFtZToKLSAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KGVycm9yU3RyaW5n
LCB0cnVlKTsKKyAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KGVycm9yU3RyaW5n
LCBXVEZNb3ZlKGJyZWFrcG9pbnQpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpJbnRlcnZh
bDoKLSAgICAgICAgaWYgKG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQpCi0gICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBJbnRlcnZhbCBhbHJlYWR5IGV4aXN0cyJf
czsKLSAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9IHRydWU7CisgICAgICAg
IG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOwog
ICAgICAgICBicmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdn
ZXI6OkV2ZW50QnJlYWtwb2ludFR5cGU6Okxpc3RlbmVyOgotICAgICAgICBpZiAobV9wYXVzZU9u
QWxsTGlzdGVuZXJzRW5hYmxlZCkKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9p
bnQgZm9yIExpc3RlbmVyIGFscmVhZHkgZXhpc3RzIl9zOwotICAgICAgICBtX3BhdXNlT25BbGxM
aXN0ZW5lcnNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJl
YWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2Fz
ZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6
VGltZW91dDoKLSAgICAgICAgaWYgKG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCkKLSAgICAg
ICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIFRpbWVvdXQgYWxyZWFkeSBleGlz
dHMiX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IHRydWU7CisgICAg
ICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE4NiwzNCArMTk5LDMxIEBAIHZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywKIAogICAgIHN3aXRjaCAoYnJlYWtwb2ludFR5cGUudmFsdWUoKSkgewog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2lu
dFR5cGU6OkFuaW1hdGlvbkZyYW1lOgotICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9p
bnQoZXJyb3JTdHJpbmcsIGZhbHNlKTsKKyAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3Bv
aW50KGVycm9yU3RyaW5nLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpJbnRl
cnZhbDoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkKQorICAgICAg
ICBpZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBlcnJv
clN0cmluZyA9ICJCcmVha3BvaW50IGZvciBJbnRlcnZhbHMgbWlzc2luZyJfczsKLSAgICAgICAg
bV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3BhdXNlT25B
bGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBj
YXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBl
OjpMaXN0ZW5lcjoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkKQor
ICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCiAgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBMaXN0ZW5lcnMgbWlzc2luZyJfczsKLSAg
ICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3Bh
dXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAK
ICAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9p
bnRUeXBlOjpUaW1lb3V0OgotICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxl
ZCkKKyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQpCiAgICAgICAg
ICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBUaW1lb3V0cyBtaXNzaW5nIl9zOwot
ICAgICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9w
YXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVu
dChFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lcikKIHsKLSAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNB
Y3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdl
dCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOwogICAgIGF1dG8gaW5q
ZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihz
dGF0ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKQEAgLTIyNSwxMiAr
MjM1LDIwIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50
KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2CiAgICAgICAgIGluamVjdGVkU2NyaXB0
LnNldEV2ZW50VmFsdWUodG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEdsb2JhbE9iamVjdEZvclByb3Rv
dHlwZShzdGF0ZSksIGV2ZW50KSk7CiAgICAgfQogCisgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQt
PmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKwogICAgIGF1dG8qIGRvbUFn
ZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2VudCgpOwogCi0gICAg
Ym9vbCBzaG91bGRQYXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+cGF1c2VPbk5leHRTdGF0ZW1lbnRF
bmFibGVkKCkgfHwgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCB8fCBtX2xpc3RlbmVyQnJl
YWtwb2ludHMuY29udGFpbnMoZXZlbnQudHlwZSgpKTsKLSAgICBpZiAoIXNob3VsZFBhdXNlICYm
IGRvbUFnZW50KQotICAgICAgICBzaG91bGRQYXVzZSA9IGRvbUFnZW50LT5oYXNCcmVha3BvaW50
Rm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
LnVzZUNhcHR1cmUoKSk7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSkKKyAgICBhdXRvIGJyZWFrcG9p
bnQgPSBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2lu
dCkgeworICAgICAgICBhdXRvIGl0ID0gbV9saXN0ZW5lckJyZWFrcG9pbnRzLmZpbmQoZXZlbnQu
dHlwZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fbGlzdGVuZXJCcmVha3BvaW50cy5lbmQoKSkK
KyAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBpdC0+dmFsdWUuY29weVJlZigpOworICAgIH0KKyAg
ICBpZiAoIWJyZWFrcG9pbnQgJiYgZG9tQWdlbnQpCisgICAgICAgIGJyZWFrcG9pbnQgPSBkb21B
Z2VudC0+YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50LmN1cnJlbnRUYXJnZXQoKSwg
ZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxsYmFjaygpLCByZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOworICAgIGlmICghYnJlYWtwb2ludCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEpTT046Ok9iamVjdD4gZXZlbnREYXRhID0gSlNPTjo6
T2JqZWN0OjpjcmVhdGUoKTsKQEAgLTI0MSwxMiArMjU5LDM2IEBAIHZvaWQgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0
ZXJlZEV2CiAgICAgICAgICAgICBldmVudERhdGEtPnNldEludGVnZXIoImV2ZW50TGlzdGVuZXJJ
ZCJfcywgZXZlbnRMaXN0ZW5lcklkKTsKICAgICB9CiAKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNj
aGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpMaXN0ZW5lciwgV1RGTW92ZShldmVudERhdGEpKTsKKyAgICBtX2Rl
YnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2lu
dCwgSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpMaXN0ZW5l
ciwgV1RGTW92ZShldmVudERhdGEpKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpkaWRIYW5kbGVFdmVudCgpCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRp
ZEhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIm
IHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKQogewotICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmNsZWFyRXZlbnRWYWx1ZSgpOworICAgIGF1dG8gc3RhdGUgPSBldmVudC50YXJnZXQoKS0+c2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCgpLT5leGVjU3RhdGUoKTsKKyAgICBhdXRvIGluamVjdGVkU2Ny
aXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc3RhdGUpOwor
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzdGF0ZSk7CisKKyAgICAgICAg
aW5qZWN0ZWRTY3JpcHQuY2xlYXJFdmVudFZhbHVlKCk7CisgICAgfQorCisgICAgaWYgKCFtX2Rl
YnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRET01BZ2Vu
dCgpOworCisgICAgYXV0byBicmVha3BvaW50ID0gbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtw
b2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIGJyZWFrcG9pbnQgPSBtX2xpc3Rl
bmVyQnJlYWtwb2ludHMuZ2V0KGV2ZW50LnR5cGUoKSk7CisgICAgaWYgKCFicmVha3BvaW50ICYm
IGRvbUFnZW50KQorICAgICAgICBicmVha3BvaW50ID0gZG9tQWdlbnQtPmJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNl
Q2FwdHVyZSgpKTsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAg
IG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtw
b2ludCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVUaW1l
cihib29sIG9uZVNob3QpCkBAIC0yNTQsMTIgKzI5NiwyNCBAQCB2b2lkIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OndpbGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KQogICAgIGlmICghbV9kZWJ1
Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBi
b29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVu
YWJsZWQoKSB8fCAob25lU2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA6IG1fcGF1
c2VPbkFsbEludGVydmFsc0VuYWJsZWQpOwotICAgIGlmICghc2hvdWxkUGF1c2UpCisgICAgYXV0
byBicmVha3BvaW50ID0gb25lU2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCA6
IG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQog
ICAgICAgICByZXR1cm47CiAKICAgICBhdXRvIGJyZWFrUmVhc29uID0gb25lU2hvdCA/IEluc3Bl
Y3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6VGltZW91dCA6IEluc3Bl
Y3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6SW50ZXJ2YWw7Ci0gICAg
bV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGJyZWFrUmVhc29u
LCBudWxscHRyKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFs
QnJlYWtwb2ludCgqYnJlYWtwb2ludCwgYnJlYWtSZWFzb24pOworfQorCit2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEZpcmVUaW1lcihib29sIG9uZVNob3QpCit7CisgICAgaWYg
KCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIGF1dG8gYnJlYWtwb2ludCA9IG9uZVNob3QgPyBtX3BhdXNlT25BbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQgOiBtX3BhdXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50OworICAgIGlmICghYnJl
YWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQ
YXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50OjpzZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmgKaW5kZXggMDFlM2JkY2YwMDRhLi45ZjZlNjM4ZTMzZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zMiwxMCArMzIsMTMgQEAKICNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdlbnRCYXNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvQnJlYWtwb2ludC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tl
bmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNo
U2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0
b3IgewpAQCAtNjQsNyArNjcsNyBAQCBwdWJsaWM6CiAgICAgLy8gRE9NRGVidWdnZXJCYWNrZW5k
RGlzcGF0Y2hlckhhbmRsZXIKICAgICB2b2lkIHNldFVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZVVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IHVybCkgZmluYWw7Ci0gICAgdm9pZCBzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSkgZmlu
YWw7CisgICAgdm9pZCBzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIGJyZWFrcG9pbnRUeXBlLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUV2ZW50QnJlYWtwb2ludChF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyog
ZXZlbnROYW1lKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3Rl
bmVyCkBAIC03MiwxOCArNzUsMjAgQEAgcHVibGljOgogICAgIHZvaWQgZGVidWdnZXJXYXNEaXNh
YmxlZCgpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCisgICAg
dmlydHVhbCB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZCgpOwogICAgIHZvaWQgd2lsbFNlbmRYTUxI
dHRwUmVxdWVzdChjb25zdCBTdHJpbmcmIHVybCk7CiAgICAgdm9pZCB3aWxsRmV0Y2goY29uc3Qg
U3RyaW5nJiB1cmwpOwogICAgIHZvaWQgd2lsbEhhbmRsZUV2ZW50KEV2ZW50JiwgY29uc3QgUmVn
aXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKLSAgICB2b2lkIGRpZEhhbmRsZUV2ZW50KCk7CisgICAg
dm9pZCBkaWRIYW5kbGVFdmVudChFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
Jik7CiAgICAgdm9pZCB3aWxsRmlyZVRpbWVyKGJvb2wgb25lU2hvdCk7CisgICAgdm9pZCBkaWRG
aXJlVGltZXIoYm9vbCBvbmVTaG90KTsKIAogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50Kik7CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNhYmxlKCk7CiAKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFu
aW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIFJlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+JiYpID0gMDsKIAogICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9k
ZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9OwogCkBAIC05NCwxNCArOTksMTMgQEAgcHJpdmF0ZToK
ICAgICBSZWZQdHI8SW5zcGVjdG9yOjpET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2Jh
Y2tlbmREaXNwYXRjaGVyOwogICAgIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBt
X2luamVjdGVkU2NyaXB0TWFuYWdlcjsKIAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2xpc3RlbmVy
QnJlYWtwb2ludHM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJlZjxKU0M6OkJyZWFrcG9pbnQ+PiBt
X2xpc3RlbmVyQnJlYWtwb2ludHM7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVz
ZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludDsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBt
X3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludDsKIAogICAgIGVudW0gY2xhc3MgVVJM
QnJlYWtwb2ludFR5cGUgeyBSZWd1bGFyRXhwcmVzc2lvbiwgVGV4dCB9OwogICAgIEhhc2hNYXA8
U3RyaW5nLCBVUkxCcmVha3BvaW50VHlwZT4gbV91cmxCcmVha3BvaW50czsKLQotICAgIGJvb2wg
bV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BhdXNl
T25BbGxMaXN0ZW5lcnNFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fcGF1c2VPbkFsbFRp
bWVvdXRzRW5hYmxlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3BhdXNlT25BbGxVUkxzRW5hYmxl
ZCB7IGZhbHNlIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAppbmRleCAxNDBlMTU3OGM1ZjAu
LjMwMWVmOTUyNTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3BwCkBAIC01MSw5ICs1MSw5IEBACiAj
aW5jbHVkZSAiVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgiCiAjaW5jbHVkZSAiV2ViQ29uc29sZUFn
ZW50LmgiCiAjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0JyZWFrcG9pbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVz
c2FnZS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHRCcmVha3BvaW50Lmg+CiAj
aW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKQEAg
LTE4Nyw3ICsxODcsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3Rh
cnQoY29uc3QgaW50KiBtYXhDYWxsU3RhY2tEZXB0aCkKIAogICAgIG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5zZXRUcmFja2luZ1RpbWVsaW5lQWdlbnQodGhpcyk7CiAKLSAgICBtX2Vudmlyb25tZW50
LnNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhpcyk7CisgICAgbV9lbnZpcm9ubWVu
dC5zY3JpcHREZWJ1Z1NlcnZlcigpLmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIG1fdHJhY2tp
bmcgPSB0cnVlOwogCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBJbnNwZWN0b3JUaW1lbGluZUFn
ZW50OjppbnRlcm5hbFN0b3AoKQogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFRyYWNr
aW5nVGltZWxpbmVBZ2VudChudWxscHRyKTsKIAotICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlzLCB0cnVlKTsKKyAgICBtX2Vudmlyb25tZW50
LnNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMsIHRydWUpOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgbV9mcmFtZVN0YXJ0T2JzZXJ2ZXIgPSBudWxscHRyOwpAQCAt
NjY5LDExICs2NjksOSBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmRpZEZpcmVPYnNl
cnZlckNhbGxiYWNrKCkKICAgICBkaWRDb21wbGV0ZUN1cnJlbnRSZWNvcmQoVGltZWxpbmVSZWNv
cmRUeXBlOjpPYnNlcnZlckNhbGxiYWNrKTsKIH0KIAotLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgot
Ci12b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdCBJbnNwZWN0b3I6OlNj
cmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgLypiYXRjaElkKi8sIHVuc2ln
bmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCit2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6
OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFs
T2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgLypiYXRj
aElkKi8sIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUpCiB7Ci0gICAgYXBwZW5kUmVj
b3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbiwg
c2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVG
cm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmplY3QpKTsKKyAgICBhcHBlbmRSZWNvcmQoVGlt
ZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uSUQsIHNhbXBs
ZUlkKSwgVGltZWxpbmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4
ZWNTdGF0ZShsZXhpY2FsR2xvYmFsT2JqZWN0KSk7CiB9CiAKIHN0YXRpYyBJbnNwZWN0b3I6OlBy
b3RvY29sOjpUaW1lbGluZTo6RXZlbnRUeXBlIHRvUHJvdG9jb2woVGltZWxpbmVSZWNvcmRUeXBl
IHR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yVGltZWxpbmVBZ2VudC5oCmluZGV4IDMwZmM5Nzk1MjRhOS4uOTVhOGUzZWQ3MmQyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVs
aW5lQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clRpbWVsaW5lQWdlbnQuaApAQCAtMzQsOSArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkluc3BlY3Rv
cldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2Vy
UHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmRE
aXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5k
RGlzcGF0Y2hlcnMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHREZWJ1Z0xpc3Rl
bmVyLmg+CiAjaW5jbHVkZSA8d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9y
Lmg+CiAKQEAgLTgxLDcgKzgyLDcgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewog
ICAgIE9ic2VydmVyQ2FsbGJhY2ssCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50
IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OlRp
bWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyICwgcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0
RGVidWdMaXN0ZW5lciB7CitjbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IGZpbmFsIDogcHVi
bGljIEluc3BlY3RvckFnZW50QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2Vu
ZERpc3BhdGNoZXJIYW5kbGVyICwgcHVibGljIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTEwMCwxNiArMTAxLDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0QXV0b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBzZXRJbnN0cnVtZW50cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046
OkFycmF5Jikgb3ZlcnJpZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9p
ZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSB7
IH0KLSAgICB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgaW50LCBpbnQsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgd2ls
bFJ1bk1pY3JvdGFzaygpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkUnVuTWljcm90YXNrKCkg
b3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlND
OjpKU1ZhbHVlLCBKU0M6OkpTVmFsdWUpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkQ29udGlu
dWUoKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYnJlYWtw
b2ludEFjdGlvblNvdW5kKGludCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBicmVha3BvaW50QWN0
aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJl
YWtwb2ludEFjdGlvbiYsIHVuc2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6
OkpTVmFsdWUgcmVzdWx0KSBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZl
cgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBK
U0M6OkJyZWFrcG9pbnRBY3Rpb25JRCwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxl
SWQsIEpTQzo6SlNWYWx1ZSByZXN1bHQpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uCiAgICAgdm9pZCBkaWRJbnN0YWxsVGltZXIoaW50IHRpbWVySWQsIFNlY29uZHMg
dGltZW91dCwgYm9vbCBzaW5nbGVTaG90LCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5j
cHAKaW5kZXggMTM5YmJjNWUzMDIxLi43NTU0NThjMGIxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFn
ZW50LmNwcApAQCAtOTQsNyArOTQsOCBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKCkKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0RW5hYmxlZFBhZ2VET01EZWJ1Z2dl
ckFnZW50KG51bGxwdHIpOwogCiAgICAgbV9kb21CcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1f
cGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQgPSBmYWxzZTsKKworICAgIG1fcGF1c2VP
bkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBudWxscHRyOwogCiAgICAgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpOwogfQpAQCAtMTUyLDYgKzE1MywxNCBAQCB2b2lk
IFBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywgaW50IG5vZAogICAgIH0KIH0KIAordm9pZCBQYWdlRE9NRGVidWdnZXJBZ2Vu
dDo6bWFpbkZyYW1lTmF2aWdhdGVkKCkKK3sKKyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjptYWluRnJhbWVOYXZpZ2F0ZWQoKTsKKworICAgIGlmIChtX3BhdXNlT25BbGxBbmltYXRpb25G
cmFtZXNCcmVha3BvaW50KQorICAgICAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50LT5yZXNldEhpdENvdW50KCk7Cit9CisKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6
OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLmlz
TWFpbkZyYW1lKCkpCkBAIC0yNTIsMTEgKzI2MSwyMyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFn
ZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKCkKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+
YnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRQ
YXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+cGF1c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwg
bV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZDsKLSAgICBpZiAoIXNob3VsZFBhdXNl
KQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2Rl
YnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1
Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBbmltYXRpb25GcmFtZSwgbnVsbHB0cik7
CisgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQo
KmJyZWFrcG9pbnQsIEluc3BlY3Rvcjo6RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNv
bjo6QW5pbWF0aW9uRnJhbWUpOworfQorCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRG
aXJlQW5pbWF0aW9uRnJhbWUoKQoreworICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3Bv
aW50c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBt
X3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2lu
dCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZUZv
clNwZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50KTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdn
ZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKQEAgLTI3
MSwxMiArMjkyLDkgQEAgdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVT
dHlsZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKICAgICB9CiB9CiAKLXZvaWQgUGFnZURPTURlYnVn
Z2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGJvb2wgZW5hYmxlZCkKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+
JiYgYnJlYWtwb2ludCkKIHsKLSAgICBpZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5h
YmxlZCA9PSBlbmFibGVkKQotICAgICAgICBlcnJvclN0cmluZyA9IG1fcGF1c2VPbkFsbEFuaW1h
dGlvbkZyYW1lc0VuYWJsZWQgPyAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgYWxyZWFk
eSBleGlzdHMiX3MgOiAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgbWlzc2luZyJfczsK
LQotICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQgPSBlbmFibGVkOworICAg
IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9p
bnQpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkZXNjcmlwdGlvbkZvckRPTUV2
ZW50KE5vZGUmIHRhcmdldCwgaW50IGJyZWFrcG9pbnRUeXBlLCBib29sIGluc2VydGlvbiwgSlNP
Tjo6T2JqZWN0JiBkZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggN2RkZjQ1
M2I5NDE5Li5iYTRlZjYwMjNkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0yNiw2ICsy
Niw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+CisjaW5jbHVkZSA8
d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3LDYgKzQ5LDcgQEAg
cHVibGljOgogICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAvLyBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24KKyAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZCgpIGZpbmFsOwogICAg
IHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUmKTsKICAgICB2b2lkIHdpbGxJbnNlcnRE
T01Ob2RlKE5vZGUmIHBhcmVudCk7CiAgICAgdm9pZCBkaWRJbnNlcnRET01Ob2RlKE5vZGUmKTsK
QEAgLTU1LDEyICs1OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsTW9kaWZ5RE9NQXR0cihF
bGVtZW50Jik7CiAgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVN0eWxlQXR0cihFbGVtZW50Jik7CiAg
ICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKCk7CisgICAgdm9pZCBkaWRGaXJlQW5pbWF0
aW9uRnJhbWUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgZGlzYWJsZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQg
c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJl
YWtwb2ludD4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlc2NyaXB0aW9uRm9yRE9NRXZlbnQo
Tm9kZSYsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpTT046Ok9iamVjdCYg
ZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9pbnRzKE5vZGUqLCB1
aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwpAQCAtNjgsNyArNzIsOCBAQCBwcml2YXRlOgog
ICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogCiAgICAgSGFzaE1hcDxO
b2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxB
bmltYXRpb25GcmFtZXNFbmFibGVkIHsgZmFsc2UgfTsKKworICAgIFJlZlB0cjxKU0M6OkJyZWFr
cG9pbnQ+IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1MGNjOThiM2ZhMzAu
LjIxN2NiNTVlNmMwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBAIHZv
aWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogICAg
IFdlYkRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ryb3llZCk7CiB9CiAKLVN0cmlu
ZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYg
c2NyaXB0KQorU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQo
Y29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgc3RhdGljIE5ldmVy
RGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlcihNQUtFX1NUQVRJQ19TVFJJTkdf
SU1QTCgiU291cmNlTWFwIikpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+IHNv
dXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJYLVNv
dXJjZU1hcCIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
cGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggZDEzOTEwOGJmYjk4Li40YzI3ZGQxYzc0
YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdl
RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRGVidWdnZXJBZ2VudC5oCkBAIC01MSw4ICs1MSw4IEBAIHB1YmxpYzoKICAgICAvLyBE
ZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlcgogICAgIHZvaWQgZXZhbHVhdGVPbkNhbGxG
cmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0IFN0cmlu
ZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogaW5j
bHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5k
TXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgY29uc3QgYm9vbCogZW11bGF0ZVVz
ZXJHZXN0dXJlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2Jq
ZWN0PiYgcmVzdWx0LCBPcHRpb25hbDxib29sPiYgd2FzVGhyb3duLCBPcHRpb25hbDxpbnQ+JiBz
YXZlZFJlc3VsdEluZGV4KSBvdmVycmlkZTsKIAotICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIK
LSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAg
dm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJp
bmcmIGRhdGEpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAg
dm9pZCBkaWRDbGVhcldpbmRvd09iamVjdEluV29ybGQoRnJhbWUmLCBET01XcmFwcGVyV29ybGQm
KTsKQEAgLTY3LDcgKzY3LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwogCi0g
ICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmKSBvdmVycmlkZTsK
KyAgICBTdHJpbmcgc291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNj
cmlwdCYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlOwogICAg
IHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFn
ZW50LmNwcAppbmRleCBhZDgzZjZkMzdiZDYuLjE0NzZmYmM4MTk2MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2Vy
RE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXb3JrZXJET01EZWJ1
Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IC8KICAgICBlcnJvclN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQogCi12b2lkIFdv
cmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgLyogZW5hYmxlZCAqLykKK3ZvaWQgV29ya2VyRE9NRGVi
dWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikKIHsKICAgICBlcnJvclN0cmluZyA9
ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4
IGIxMTI4NWUwNDYyZC4uZGFkMThmNWMwZWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2Vu
dC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQxLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBib29sIGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikgb3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5k
ZXggMzE5MTY3NjYzYzdkLi40YWMwN2Q2Y2MzN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgK
QEAgLTM4LDggKzM4LDggQEAgcHVibGljOgogICAgIFdvcmtlckRlYnVnZ2VyQWdlbnQoV29ya2Vy
QWdlbnRDb250ZXh0Jik7CiAgICAgfldvcmtlckRlYnVnZ2VyQWdlbnQoKSBvdmVycmlkZTsKIAot
ICAgIC8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2co
SlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlOworICAgIC8vIEpT
Qzo6RGVidWdnZXI6Ok9ic2VydmVyCisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6
SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmIGRhdGEpIGZpbmFsOwogCiBwcml2YXRlOgog
ICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gbXV0ZSBjb25zb2xlIGZvciB3b3JrZXJzLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RPTVRpbWVyLmNwcAppbmRleCA1YjkzMWVmYTFmMDMuLjg2NTQwOGRiZmE1MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTI4NCw2ICsyODQsOCBAQCB2b2lkIERPTVRpbWVyOjpm
aXJlZCgpCiAgICAgLy8gd2FpdCB1bml0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0byBkZWxl
dGUgRE9NVGltZXIuCiAgICAgUmVmPERPTVRpbWVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAor
ICAgIGJvb2wgb25lU2hvdCA9ICFyZXBlYXRJbnRlcnZhbCgpOworCiAgICAgQVNTRVJUKHNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4
dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKQEAgLTI5MSw3ICsyOTMsNyBAQCB2b2lk
IERPTVRpbWVyOjpmaXJlZCgpCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkgewogICAg
ICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKICAgICAg
ICAgaWYgKGF1dG8qIGhvbGRpbmdUYW5rID0gZG9jdW1lbnQuZG9tVGltZXJIb2xkaW5nVGFua0lm
RXhpc3RzKCk7IGhvbGRpbmdUYW5rICYmIGhvbGRpbmdUYW5rLT5jb250YWlucygqdGhpcykpIHsK
LSAgICAgICAgICAgIGlmICghcmVwZWF0SW50ZXJ2YWwoKSkKKyAgICAgICAgICAgIGlmIChvbmVT
aG90KQogICAgICAgICAgICAgICAgIHN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CkBAIC0zMDksNyArMzExLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQo
KQogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3QgdGltZXIg
c2hvdWxkIGdldCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgogICAgIG1f
dXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKLSAgICBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsICFyZXBlYXRJ
bnRlcnZhbCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIo
Y29udGV4dCwgbV90aW1lb3V0SWQsIG9uZVNob3QpOwogCiAgICAgLy8gU2ltcGxlIGNhc2UgZm9y
IG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYgKGlzQWN0aXZlKCkpIHsKQEAgLTMyMCw3ICsz
MjIsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICAgICAgbV9hY3Rpb24tPmV4ZWN1
dGUoY29udGV4dCk7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJl
VGltZXIoY29udGV4dCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmly
ZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCBvbmVTaG90KTsKIAogICAgICAgICB1cGRhdGVU
aHJvdHRsaW5nU3RhdGVJZk5lY2Vzc2FyeShmaXJlU3RhdGUpOwogICAgICAgICByZXR1cm47CkBA
IC0zMzgsNyArMzQwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogI2VuZGlmCiAgICAgbV9h
Y3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OmRpZEZpcmVUaW1lcihjb250ZXh0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpcmVUaW1lcihjb250ZXh0LCBtX3RpbWVvdXRJZCwgb25lU2hvdCk7CiAKICAgICAvLyBDaGVj
ayBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgbmVzdGVkIHNpbmdsZS1zaG90IHRpbWVycy4KICAgICBp
ZiAobmVzdGVkVGltZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1NmVhNDAxMWY3
ZGIuLjg0YmYwZmRhZjAwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzYz
IEBACisyMDIwLTA4LTE0ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KKworICAg
ICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBldmVudCBicmVha3BvaW50cyB0byBiZSBjb25maWd1
cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTUz
NjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IGFsbG93cyBkZXZlbG9wZXJzIHRvIGRvIHRoaW5ncyBsaWtlOgorICAgICAgICAgLSBvbmx5IHBh
dXNlIHdoZW4gYHdpbmRvdy5ldmVudC50eXBlYCBpcyBhIGNlcnRhaW4gdmFsdWUKKyAgICAgICAg
IC0gaWdub3JlIHRoZSBmaXJzdCBOIHBhdXNlcworICAgICAgICAgLSBldmFsdWF0ZSBKYXZhU2Ny
aXB0IHdoZW5ldmVyIGFuIGV2ZW50IGxpc3RlbmVyIGlzIGludm9rZWQgd2l0aG91dCBwYXVzaW5n
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzOgorICAgICAg
ICAoV0kuQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS50b0pT
T04pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVk
LgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHJlbW92YWJsZSk6IEFkZGVk
LgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQu
CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgY29uZGl0aW9uKToKKyAgICAg
ICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBpZ25vcmVDb3VudCk6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgaWdub3JlQ291bnQpOgorICAgICAgICAoV0kuQnJl
YWtwb2ludC5wcm90b3R5cGUuZ2V0IGF1dG9Db250aW51ZSk6CisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5zZXQgYXV0b0NvbnRpbnVlKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQu
cHJvdG90eXBlLmdldCBhY3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBl
LmdldCBwcm9iZUFjdGlvbnMpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuY3lj
bGVUb05leHRNb2RlKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmNyZWF0ZUFj
dGlvbik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5yZWNyZWF0ZUFjdGlvbik6
CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24pOgorICAgICAg
ICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuY2xlYXJBY3Rpb25zKToKKyAgICAgICAgKFdJLkJy
ZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2lu
dC5wcm90b3R5cGUub3B0aW9uc1RvUHJvdG9jb2wpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFr
cG9pbnQucHJvdG90eXBlLmJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5mcm9tSlNPTik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnBy
b3RvdHlwZS5nZXQgc291cmNlQ29kZUxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJy
ZWFrcG9pbnQucHJvdG90eXBlLmdldCBjb250ZW50SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRpZmllcik6IERlbGV0
ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgdGFyZ2V0KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBpZGVudGlmaWVyKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBpZGVudGlmaWVyKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZXNvbHZlZCk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgcmVzb2x2ZWQp
OiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5
VG9Db29raWUpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuX2lz
U3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5fc291
cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJy
ZWFrcG9pbnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFu
Z2VkKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3Bv
aW50LmpzOgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01CcmVh
a3BvaW50LmZyb21KU09OKTogQWRkZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3Rv
dHlwZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJvdG90eXBl
LnRvSlNPTik6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50LmRlc2VyaWFsaXplKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZGlzYWJsZWQp
OiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2lu
dC5qczoKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5FdmVudEJy
ZWFrcG9pbnQuZnJvbUpTT04pOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5w
cm90b3R5cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50
LnByb3RvdHlwZS5nZXQgZWRpdGFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtw
b2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9p
bnQucHJvdG90eXBlLnNhdmVJZGVudGl0eVRvQ29va2llKToKKyAgICAgICAgKFdJLkV2ZW50QnJl
YWtwb2ludC5wcm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5k
ZXNlcmlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90
eXBlLmdldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQu
cHJvdG90eXBlLnNldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFj
ZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanM6IENvcGllZCBmcm9tIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL0JyZWFrcG9pbnQuanMuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9tSlNPTik6CisgICAgICAg
IChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc291cmNlQ29kZUxvY2F0aW9uKToK
KyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgY29udGVudElk
ZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdl
dCBzY3JpcHRJZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnBy
b3RvdHlwZS5nZXQgdGFyZ2V0KToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnBy
b3RvdHlwZS5nZXQgZ2xvYmFsKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5wcm90b3R5cGUuZ2V0IHJlbW92YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlZGl0YWJsZSk6IEFkZGVkLgorICAgICAgICAo
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBpZGVudGlmaWVyKToKKyAgICAg
ICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5zZXQgaWRlbnRpZmllcik6Cisg
ICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHJlc29sdmVkKToK
KyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5zZXQgcmVzb2x2ZWQp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFk
ZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnNhdmVJZGVu
dGl0eVRvQ29va2llKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5faXNTcGVjaWFsKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0
aW9uQ2hhbmdlZCk6CisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2lu
dC5qczoKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuVVJMQnJlYWtw
b2ludC5mcm9tSlNPTik6IEFkZGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IGdsb2JhbCk6IEFkZGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5
cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS50
b0pTT04pOgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5kZXNlcmlhbGl6ZSk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJsZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGRpc2FibGVkKTog
RGVsZXRlZC4KKyAgICAgICAgUmVuYW1lIGBXSS5CcmVha3BvaW50YCB0byBgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnRgIGFuZCB1c2UgYFdJLkJyZWFrcG9pbnRgIGFzIGEgbmV3IGNvbW1vbgorICAg
ICAgICBiYXNlIGNsYXNzIGZvciBhbGwgYnJlYWtwb2ludCB0eXBlcywgYWxsb3dpbmcgbW9yZSBs
b2dpYyB0byBiZSBzaGFyZWQgKGUuZy4gZGlzYWJsZWQgc3RhdGUpLgorICAgICAgICBBZGRpdGlv
bmFsbHksIGJyZWFrcG9pbnRzIGFyZSBub3cgYWJsZSB0bworICAgICAgICAgLSBkZXRlcm1pbmUg
d2hldGhlciBvciBub3QgdGhleSdyZQorICAgICAgICAgICAgLSBnbG9iYWwgKGkuZS4gc3BlY2lh
bCkKKyAgICAgICAgICAgIC0gcmVtb3ZhYmxlCisgICAgICAgICAgICAtIGVkaXRhYmxlIChpLmUu
IGNvbmZpZ3VyYWJsZSkKKyAgICAgICAgIC0gcmVtb3ZlIHRoZW1zZWx2ZXMKKyAgICAgICAgd2l0
aG91dCB0aGUgY2FsbGVyIG5lZWRpbmcgdG8ga25vdyB3aGF0IG1hbmFnZXIgdG8gY29uc3VsdCB3
aXRoLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpz
OgorICAgICAgICAoV0kuRE9NTWFuYWdlcik6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnN1cHBv
cnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRDb25maWd1cmF0aW9uKTogQWRkZWQuCisgICAgICAg
IChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6
CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lcik6CisgICAgICAgIChXSS5ET01NYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRXZl
bnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVF
dmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAo
V0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFu
Z2VkKTogQWRkZWQuCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY29uZmlndXJhdGlvbiBjaGFuZ2Vz
IGZvciBzcGVjaWZpYyBsaXN0ZW5lciBicmVha3BvaW50cy4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzOgorICAgICAgICAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyKToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5
cGUuaW5pdGlhbGl6ZVRhcmdldCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJv
dG90eXBlLmFkZERPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5yZW1vdmVET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuYWRkRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAg
KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkVVJMQnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZVVSTEJyZWFrcG9pbnQp
OgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRXZlbnRC
cmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hh
bmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKTogQWRkZWQuCisgICAgICAg
IChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRF
ZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaXNCcmVha3Bv
aW50U3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY29uZmlndXJhdGlv
biBjaGFuZ2VzIGZvciBnbG9iYWwgZXZlbnQgYnJlYWtwb2ludHMuCisgICAgICAgIFN0b3JlIHNw
ZWNpYWwgZ2xvYmFsIGV2ZW50IGJyZWFrcG9pbnRzIGluc2lkZSBgV0kub2JqZWN0U3RvcmVzLmV2
ZW50QnJlYWtwb2ludHNgLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9E
ZWJ1Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIpOgorICAgICAg
ICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRCcmVha3BvaW50KToKKyAgICAgICAg
KFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAg
IChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFByb2Jlc0ZvckJyZWFrcG9pbnQpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlUHJvYmVz
Rm9yQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3Rv
dHlwZS51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLl9zZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdl
KToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUJyZWFrcG9p
bnRBY3Rpb25zRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5
cGUuaXNCcmVha3BvaW50UmVtb3ZhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50U3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludEVkaXRhYmxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2RlYnVnZ2VyQnJl
YWtwb2ludEFjdGlvblR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5fZGVidWdnZXJCcmVha3BvaW50T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9hZGRQcm9iZXNGb3JCcmVha3BvaW50KTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZVBy
b2Jlc0ZvckJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2Vy
LnByb3RvdHlwZS5fdXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAg
IFJlcGxhY2UgYFdJLkJyZWFrcG9pbnRgIHdpdGggYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4K
KyAgICAgICAgUHJvYmVzIG5vdyBzdXBwb3J0IGBXSS5FdmVudEJyZWFrcG9pbnRgIGluIGFkZGl0
aW9uIHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qczoKKyAgICAgICAg
KFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1l
bnVJdGVtcyk6CisgICAgICAgIChXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90
eXBlLl9jcmVhdGVQb3BvdmVyQ29udGVudCk6CisgICAgICAgIEFsbG93IGFueSBicmVha3BvaW50
IGluc3RlYWQgb2Ygb25seSBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorICAgICAgICBEcml2
ZS1ieTogdGhlIGV4aXN0aW5nIGBpZ25vcmVDb3VudGAgdmFsdWUgd2Fzbid0IGJlaW5nIHVzZWQg
dG8gcG9wdWxhdGUgdGhlIGA8aW5wdXQ+YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLmdldCBsaXN0ZW5lclNldCk6IEFkZGVkLgorICAgICAgICAoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOiBBZGRlZC4KKyAgICAg
ICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGVzKTogQWRk
ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBicmVh
a3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUuZ2V0IGZpbHRlcmFibGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVRpdGxlcyk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fYnJlYWtw
b2ludExvY2F0aW9uRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICguaXRlbS5icmVha3Bv
aW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlKToKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQu
cGF1c2VkIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LnBhdXNlZCAuaWNvbik6IEFkZGVkLgorICAgICAg
ICAoLml0ZW0uYnJlYWtwb2ludCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6IERl
bGV0ZWQuCisgICAgICAgIChib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tl
ZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5z
ZWxlY3RlZCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6IERlbGV0ZWQuCisgICAg
ICAgICguaXRlbS5icmVha3BvaW50IC5zdWJ0aXRsZS5mb3JtYXR0ZWQtbG9jYXRpb24pOiBEZWxl
dGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtZGVidWdnZXItc3RhdGVtZW50LWljb24gLmljb24p
OiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24pOiBEZWxl
dGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtbWljcm90YXNrLWljb24gLmljb24pOiBEZWxldGVk
LgorICAgICAgICAoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24pOiBEZWxldGVkLgorICAg
ICAgICAoLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24pOiBEZWxldGVkLgorICAg
ICAgICAoLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gPiBzcGFuKTogRGVsZXRl
ZC4KKyAgICAgICAgKC5kYXRhLXVwZGF0ZWQuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAu
aWNvbiA+IHNwYW4pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgLmJyZWFrcG9pbnQtZGVidWdnZXItc3RhdGVtZW50LWljb24gLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJy
ZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24g
Lmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLmJyZWFrcG9pbnQtbWljcm90YXNrLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAg
ICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtcGF1c2Vk
LWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24pOiBEZWxldGVk
LgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LmpzOgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJ
LkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaCk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBl
Lm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50
VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9N
QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0
YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtw
b2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9z
dGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdG9nZ2xlQnJlYWtwb2ludCk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVT
dGF0dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtw
b2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRy
ZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5i
cmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRk
ZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVz
ZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgucGF1c2Vk
KSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLml0ZW0uYnJlYWtwb2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2Vk
KSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1yZW1vdmVkOm5vdCgucGF1c2VkKSAuaWNv
bik6IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRy
ZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1vZGlm
aWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAg
ICAoLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFr
cG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJl
ZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1z
dWJ0cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxl
dGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFr
cG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9p
bnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2Rl
LXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
czoKKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJ
LkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6IERlbGV0ZWQu
CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRh
Y2gpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJv
dG90eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRy
ZWVFbGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50
QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRl
eHRNZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxl
bWVudEZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxldGVkLgor
ICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl90b2dnbGVC
cmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5fdXBkYXRlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5p
dGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNvbik6
IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBh
dXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQubGlz
dGVuZXI6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChA
bWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQu
YW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1l
ZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2ZW50Lmlu
dGVydmFsOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhKHByZWZl
cnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2ZW50Lmxpc3RlbmVyOm5v
dCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3It
c2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQp
IC5pY29uKTogQWRkZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZv
ci1hbmltYXRpb24tZnJhbWU6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1pbnRlcnZh
bDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAg
KC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJlYWtwb2lu
dC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZXZl
bnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5p
Y29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItYW5pbWF0aW9uLWZyYW1lOm5vdCgu
YnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlh
KHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50
LWZvci1pbnRlcnZhbDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9p
bnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVha3BvaW50LXBhdXNlZC1p
Y29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hl
bWU6IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5i
cmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50
VHJlZUVsZW1lbnQuanMuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVt
ZW50KToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLmdldCBmaWx0ZXJhYmxlRGF0YSk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZVRpdGxlcyk6
IEFkZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczogQ29waWVkIGZy
b20gU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcy4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3Rh
dHVzID4gLnN0YXR1cy1pbWFnZSk6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5q
YXZhc2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkKTogQWRkZWQuCisgICAg
ICAgIChib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkg
LnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LnNl
bGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkKTogQWRkZWQuCisgICAgICAg
ICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlv
bik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmlj
b24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5p
Y29uID4gc3Bhbik6IEFkZGVkLgorICAgICAgICAoLmRhdGEtdXBkYXRlZC5pdGVtLmJyZWFrcG9p
bnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3Bhbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0u
YnJlYWtwb2ludC5qYXZhc2NyaXB0LmRlYnVnZ2VyLXN0YXRlbWVudCAuaWNvbik6IEFkZGVkLgor
ICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmV4Y2VwdGlvbiAuaWNvbik6IEFk
ZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFzc2VydGlvbiAuaWNv
bik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFz
ayAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24pOiBBZGRlZC4KKyAg
ICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9p
bnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24pOiBBZGRlZC4KKyAgICAgICAg
KEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2
YXNjcmlwdC5leGNlcHRpb24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5hc3NlcnRp
b24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmljb24pOiBBZGRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qczoKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCk6CisgICAgICAgIChX
SS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRhY2gp
OiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5vbmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1l
bnQucHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2lu
dFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVS
TEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0TWVudSk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9z
dGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5f
c3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9pbnQpOiBEZWxldGVk
LgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRl
U3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICguaXRlbS5icmVha3BvaW50LnVybCAuc3Vi
dGl0bGUpOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQudXJsOm5vdCgucGF1c2Vk
KSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTog
ZGFyaykgLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisg
ICAgICAgICguYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlKTogRGVsZXRlZC4KKyAgICAgICAgKC5i
cmVha3BvaW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3Bv
aW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAg
ICAgICAgUmVuYW1lIGBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnRgIHRvIGBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludFRyZWVFbGVtZW50YCBhbmQgdXNlCisgICAgICAgIGBXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnRgIGFzIGEgbmV3IGNvbW1vbiBiYXNlIGNsYXNzIGZvciBhbGwgYnJlYWtwb2ludCB0
cmVlIGVsZW1lbnRzLAorICAgICAgICBhbGxvd2luZyBtb3JlIGxvZ2ljIGFuZCBzdHlsZXMgdG8g
YmUgc2hhcmVkIChlLmcuIGRpc2FibGVkIHN0YXRlKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faW5zZXJ0RGVidWdnZXJUcmVlRWxlbWVu
dCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUu
X2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50cyk6IEFkZGVkLgorICAgICAg
ICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9hZGRCcmVha3Bv
aW50KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fcmVtb3ZlQWxsQnJlYWtwb2ludHMpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50c0JlbmVhdGhUcmVlRWxlbWVudCk6Cisg
ICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZElz
c3VlKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5fdXBkYXRlUGF1c2VSZWFzb25TZWN0aW9uKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlVHJlZVNlbGVjdGlvbkRpZENoYW5nZSk6
CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hh
bmRsZUJyZWFrcG9pbnRFbGVtZW50QWRkZWRPclJlbW92ZWQpOgorICAgICAgICAoV0kuU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUNyZWF0ZUJyZWFrcG9p
bnRDb250ZXh0TWVudS5hZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KToKKyAgICAg
ICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVD
cmVhdGVCcmVha3BvaW50Q29udGV4dE1lbnUpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2Nh
dGlvbkRpZENoYW5nZSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bC5wcm90b3R5cGUuX2NvbXBhcmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKTogRGVsZXRlZC4KKwor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzOgorICAgICAgICAoV0ku
UHJvYmVTZXQpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBlLmNyZWF0ZVByb2JlKToK
KyAgICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlwZS53aWxsUmVtb3ZlKToKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdJ
LlRpbWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb2Nlc3NSZWNvcmQpOgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qczoKKyAgICAgICAgKFdJ
LlByb2JlU2V0RGV0YWlsc1NlY3Rpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
UHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuUHJvYmVEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5pbnNwZWN0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRF
ZGl0b3IpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLmNsb3Nl
KToKKyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9y
QnJlYWtwb2ludEFkZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNv
dXJjZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcu
cHJvdG90eXBlLmdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMpOgorICAgICAgICAo
V0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9wcm9iZVNldHNDaGFuZ2VkKToK
KyAgICAgICAgUHJvYmVzIG5vdyBzdXBwb3J0IGBXSS5FdmVudEJyZWFrcG9pbnRgIGluIGFkZGl0
aW9uIHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuQ29udGVudFZpZXcuY3JlYXRl
RnJvbVJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdJLkNvbnRlbnRWaWV3LnJlc29sdmVk
UmVwcmVzZW50ZWRPYmplY3RGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXSS5Db250
ZW50Vmlldy5pc1ZpZXdhYmxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
eHRNZW51VXRpbGl0aWVzLmpzOgorICAgICAgICAoV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0Zv
clNvdXJjZUNvZGUpOgorICAgICAgICBSZXBsYWNlIGBXSS5CcmVha3BvaW50YCB3aXRoIGBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RP
TVRyZWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldyk6Cisg
ICAgICAgIFJlcGxhY2UgYFdJLkRPTUJyZWFrcG9pbnRgIHdpdGggYFdJLkJyZWFrcG9pbnRgLgor
CisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3Vw
LmpzOgorICAgICAgICAoV0kuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCk6CisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzczoKKyAgICAg
ICAgKC5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2ti
b3giXSArIC5nby10by1hcnJvdyk6IEFkZGVkLgorICAgICAgICAoLmV2ZW50LWxpc3RlbmVyLXNl
Y3Rpb24gPiAuY29udGVudCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOm5vdCg6Y2hlY2tlZCkgKyAu
Z28tdG8tYXJyb3cpOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgZ28tdG8gYXJyb3cgbmV4dCB0byB0
aGUgQnJlYWtwb2ludCBjaGVja2JveCB0aGF0IHJldmVhbHMgdGhlIGBXSS5FdmVudEJyZWFrcG9p
bnRgIGluCisgICAgICAgIHRoZSBTb3VyY2VzIFRhYi4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50
QWN0aW9uVmlldy5wcm90b3R5cGUuX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNrZWQpOgorICAgICAg
ICBEcml2ZS1ieTogbWlub3IgY29kZSBjbGVhbnVwLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkNhbGxGcmFtZVRy
ZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgRHJpdmUt
Ynk6IGluY2x1ZGUgc291cmNlIGNvZGUgbG9jYXRpb24gY29udGV4dCBtZW51IGl0ZW1zLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlcklu
dGVyZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisK
IDIwMjAtMDgtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IEFzc2VydGlvbiBGYWlsZWQ6IHJlbW92ZUV2ZW50TGlzdGVuZXIgY2Fu
bm90IHJlbW92ZSBjc3MtbWFuYWdlci1zdHlsZS1zaGVldC1hZGRlZCBiZWNhdXNlIGl0IGRvZXNu
J3QgZXhpc3QuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9C
YXNlL1NldHRpbmcuanMKaW5kZXggM2IxOTlmYTY4OGZiLi5lZDVhYjAwOTZiMmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMK
QEAgLTE5NywxMiArMTk3LDggQEAgV0kuc2V0dGluZ3MgPSB7CiAgICAgc2VhcmNoUmVndWxhckV4
cHJlc3Npb246IG5ldyBXSS5TZXR0aW5nKCJzZWFyY2gtcmVndWxhci1leHByZXNzaW9uIiwgZmFs
c2UpLAogICAgIHNlbGVjdGVkTmV0d29ya0RldGFpbENvbnRlbnRWaWV3SWRlbnRpZmllcjogbmV3
IFdJLlNldHRpbmcoIm5ldHdvcmstZGV0YWlsLWNvbnRlbnQtdmlldy1pZGVudGlmaWVyIiwgInBy
ZXZpZXciKSwKICAgICBzb3VyY2VNYXBzRW5hYmxlZDogbmV3IFdJLlNldHRpbmcoInNvdXJjZS1t
YXBzLWVuYWJsZWQiLCB0cnVlKSwKLSAgICBzaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2lu
dDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxsLWFuaW1hdGlvbi1mcmFtZXMtYnJlYWtwb2ludCIs
IGZhbHNlKSwKLSAgICBzaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludDogbmV3IFdJLlNldHRpbmco
InNob3ctYWxsLWludGV2ZXJhbHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKLSAgICBzaG93QWxsTGlz
dGVuZXJzQnJlYWtwb2ludDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxsLWxpc3RlbmVycy1icmVh
a3BvaW50IiwgZmFsc2UpLAogICAgIHNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDogbmV3IFdJ
LlNldHRpbmcoInNob3ctYWxsLW1pY3JvdGFza3MtYnJlYWtwb2ludCIsIGZhbHNlKSwKICAgICBz
aG93QWxsUmVxdWVzdHNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtcmVxdWVz
dHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKLSAgICBzaG93QWxsVGltZW91dHNCcmVha3BvaW50OiBu
ZXcgV0kuU2V0dGluZygic2hvdy1hbGwtdGltZW91dHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKICAg
ICBzaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1h
c3NlcnRpb24tZmFpbHVyZXMtYnJlYWtwb2ludCIsIHRydWUpLAogICAgIHNob3dDYW52YXNQYXRo
OiBuZXcgV0kuU2V0dGluZygic2hvdy1jYW52YXMtcGF0aCIsIGZhbHNlKSwKICAgICBzaG93SW1h
Z2VHcmlkOiBuZXcgV0kuU2V0dGluZygic2hvdy1pbWFnZS1ncmlkIiwgdHJ1ZSksCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVh
a3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMKaW5kZXgg
YWU0Y2M0N2M1MWNjLi4wOThjYTJkZmNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMKQEAgLTQwLDYwICs0MCw1OSBAQCBXSS5C
cmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlckNvbnRy
b2xsZXIgZXh0ZW5kcyBXSS5PYgogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9jdW1l
bnQuYm9keS5jb250YWlucyhicmVha3BvaW50RGlzcGxheUVsZW1lbnQpLCAiQnJlYWtwb2ludCBw
b3BvdmVyIGRpc3BsYXkgZWxlbWVudCBtdXN0IGJlIGluIHRoZSBET00uIik7CiAKLSAgICAgICAg
Y29uc3QgZWRpdEJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fcG9wb3ZlciwgIkJyZWFrcG9pbnQgcG9wb3ZlciBhbHJlYWR5IGV4aXN0cy4iKTsK
LSAgICAgICAgICAgIGlmICh0aGlzLl9wb3BvdmVyKQotICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkVkaXQgQnJlYWtwb2ludFx1MjAyNiIpLCAoKSA9
PiB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVh
a3BvaW50IHBvcG92ZXIgYWxyZWFkeSBleGlzdHMuIik7CisgICAgICAgICAgICAgICAgaWYgKHRo
aXMuX3BvcG92ZXIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAg
dGhpcy5fY3JlYXRlUG9wb3ZlckNvbnRlbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICB0aGlz
Ll9wb3BvdmVyID0gbmV3IFdJLlBvcG92ZXIodGhpcyk7Ci0gICAgICAgICAgICB0aGlzLl9wb3Bv
dmVyLmNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVudEVsZW1lbnQ7CisgICAgICAgICAgICAg
ICAgdGhpcy5fY3JlYXRlUG9wb3ZlckNvbnRlbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAg
ICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBXSS5Qb3BvdmVyKHRoaXMpOworICAgICAgICAgICAgICAg
IHRoaXMuX3BvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudDsKIAot
ICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGJyZWFr
cG9pbnREaXNwbGF5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7Ci0gICAgICAgICAg
ICBib3VuZHMub3JpZ2luLnggLT0gMTsgLy8gTW92ZSB0aGUgYW5jaG9yIGxlZnQgb25lIHBpeGVs
IHNvIGl0IGxvb2tzIG1vcmUgY2VudGVyZWQuCi0gICAgICAgICAgICB0aGlzLl9wb3BvdmVyLnBy
ZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dJLlJlY3RFZGdlLk1BWF9ZXSk7Ci0gICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgbGV0IGJvdW5kcyA9IFdJLlJlY3QucmVjdEZyb21DbGllbnRSZWN0KGJy
ZWFrcG9pbnREaXNwbGF5RWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7CisgICAgICAg
ICAgICAgICAgYm91bmRzLm9yaWdpbi54IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBsZWZ0IG9u
ZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNlbnRlcmVkLgorICAgICAgICAgICAgICAgIHRoaXMu
X3BvcG92ZXIucHJlc2VudChib3VuZHMucGFkKDIpLCBbV0kuUmVjdEVkZ2UuTUFYX1ldKTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgcmVtb3ZlQnJlYWtwb2lu
dCA9ICgpID0+IHsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3Bv
aW50KGJyZWFrcG9pbnQpOwotICAgICAgICB9OworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlz
YWJsZWQpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmco
IkRpc2FibGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5kaXNhYmxlZCA9ICFicmVha3BvaW50LmRpc2FibGVkOworICAgICAgICAgICAgfSk7CiAKLSAg
ICAgICAgY29uc3QgdG9nZ2xlQnJlYWtwb2ludCA9ICgpID0+IHsKLSAgICAgICAgICAgIGJyZWFr
cG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgfTsKKyAgICAg
ICAgICAgIGlmIChicmVha3BvaW50LmVkaXRhYmxlICYmIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVl
KSB7CisgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygi
Q2FuY2VsIEF1dG9tYXRpYyBDb250aW51ZSIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOworICAg
ICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9p
bnQiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJl
YWtwb2ludC5kaXNhYmxlZDsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAKLSAgICAgICAg
Y29uc3QgdG9nZ2xlQXV0b0NvbnRpbnVlID0gKCkgPT4gewotICAgICAgICAgICAgYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgPSAhYnJlYWtwb2ludC5hdXRvQ29udGludWU7Ci0gICAgICAgIH07Cisg
ICAgICAgIGlmIChicmVha3BvaW50LmVkaXRhYmxlICYmICFicmVha3BvaW50LmF1dG9Db250aW51
ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCAmJiBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKSB7
CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJTZXQgdG8g
QXV0b21hdGljYWxseSBDb250aW51ZSIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgYnJlYWtw
b2ludC5hdXRvQ29udGludWUgPSAhYnJlYWtwb2ludC5hdXRvQ29udGludWU7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHJldmVhbE9yaWdpbmFsU291cmNlQ29k
ZUxvY2F0aW9uID0gKCkgPT4gewotICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKLSAgICAg
ICAgICAgICAgICBpZ25vcmVOZXR3b3JrVGFiOiB0cnVlLAotICAgICAgICAgICAgICAgIGlnbm9y
ZVNlYXJjaFRhYjogdHJ1ZSwKLSAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBXSS5zaG93T3Jp
Z2luYWxPckZvcm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbihicmVha3BvaW50LnNvdXJjZUNvZGVM
b2NhdGlvbiwgb3B0aW9ucyk7Ci0gICAgICAgIH07CisgICAgICAgIGlmIChicmVha3BvaW50LnJl
bW92YWJsZSkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmlu
ZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGJyZWFrcG9p
bnQucmVtb3ZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChX
SS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpCi0gICAg
ICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9p
bnRcdTIwMjYiKSwgZWRpdEJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50LmF1
dG9Db250aW51ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCkgewotICAgICAgICAgICAgY29udGV4
dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRvZ2ds
ZUJyZWFrcG9pbnQpOwotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0
cmluZygiQ2FuY2VsIEF1dG9tYXRpYyBDb250aW51ZSIpLCB0b2dnbGVBdXRvQ29udGludWUpOwot
ICAgICAgICB9IGVsc2UgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksIHRv
Z2dsZUJyZWFrcG9pbnQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjb250ZXh0TWVudS5h
cHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpLCB0b2dnbGVCcmVha3Bv
aW50KTsKLQotICAgICAgICBpZiAoIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlICYmICFicmVha3Bv
aW50LmRpc2FibGVkICYmIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJTZXQgdG8gQXV0b21hdGljYWxseSBD
b250aW51ZSIpLCB0b2dnbGVBdXRvQ29udGludWUpOwotCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dl
ck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKQotICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwg
cmVtb3ZlQnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuX3NvdXJjZUNvZGVM
b2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlvbigpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50IGlu
c3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgJiYgYnJlYWtwb2ludC5zb3VyY2VDb2Rl
TG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgewogICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kU2VwYXJhdG9yKCk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJ
LlVJU3RyaW5nKCJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiKSwgcmV2ZWFsT3JpZ2luYWxT
b3VyY2VDb2RlTG9jYXRpb24pOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShX
SS5VSVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksICgpID0+IHsKKyAgICAg
ICAgICAgICAgICBjb25zdCBvcHRpb25zID0geworICAgICAgICAgICAgICAgICAgICBpZ25vcmVO
ZXR3b3JrVGFiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRy
dWUsCisgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICBXSS5zaG93T3JpZ2luYWxP
ckZvcm1hdHRlZFNvdXJjZUNvZGVMb2NhdGlvbihicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlv
biwgb3B0aW9ucyk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMTI0
LDcgKzEyMywyMiBAQCBXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgPSBjbGFzcyBCcmVh
a3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgZXh0ZW5kcyBXSS5PYgogICAgICAgICBsZXQgY2hlY2ti
b3hMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgIGNoZWNr
Ym94TGFiZWwuY2xhc3NOYW1lID0gInRvZ2dsZSI7CiAgICAgICAgIGNoZWNrYm94TGFiZWwuYXBw
ZW5kQ2hpbGQoY2hlY2tib3hFbGVtZW50KTsKLSAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmQo
dGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheUxvY2F0aW9uU3RyaW5n
KCkpOworICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50KQorICAgICAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmQodGhpcy5fYnJl
YWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheUxvY2F0aW9uU3RyaW5nKCkpOworICAg
ICAgICBlbHNlIGlmICh0aGlzLl9icmVha3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3Bv
aW50KSB7CisgICAgICAgICAgICBsZXQgZGlzcGxheU5hbWU7CisgICAgICAgICAgICBpZiAoYnJl
YWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQpCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiQWxsIEFu
aW1hdGlvbiBGcmFtZXMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAg
ICAgIGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKTsKKyAgICAgICAg
ICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0
ZW5lcnNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlTdHJp
bmcoIkFsbCBFdmVudHMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICAg
ICAgZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiQWxsIFRpbWVvdXRzIik7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBicmVha3BvaW50LmV2ZW50TmFt
ZTsKKyAgICAgICAgICAgIGNoZWNrYm94TGFiZWwuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoZGlzcGxheU5hbWUpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGxldCB0YWJsZSA9
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRhYmxlIik7CiAKQEAgLTE3Niw3ICsxOTAsNyBAQCBX
SS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIgPSBjbGFzcyBCcmVha3BvaW50UG9wb3ZlckNv
bnRyb2xsZXIgZXh0ZW5kcyBXSS5PYgogICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0Lmlk
ID0gImVkaXQtYnJlYWtwb2ludC1wb3BvdmVyLWlnbm9yZSI7CiAgICAgICAgIHRoaXMuX2lnbm9y
ZUNvdW50SW5wdXQudHlwZSA9ICJudW1iZXIiOwogICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElu
cHV0Lm1pbiA9IDA7Ci0gICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5wdXQudmFsdWUgPSAwOwor
ICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0LnZhbHVlID0gYnJlYWtwb2ludC5pZ25vcmVD
b3VudDsKICAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJj
aGFuZ2UiLCB0aGlzLl9wb3BvdmVySWdub3JlSW5wdXRDaGFuZ2VkLmJpbmQodGhpcykpOwogCiAg
ICAgICAgIGlnbm9yZUNvdW50TGFiZWwuc2V0QXR0cmlidXRlKCJmb3IiLCB0aGlzLl9pZ25vcmVD
b3VudElucHV0LmlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpp
bmRleCBkMjljZGI4NDliZjEuLjc5N2FjOWVkMTRhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RP
TURlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMzMsMzYgKzMzLDI3IEBAIFdJLkRPTURlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwID0gbmV3IE1hcDsKIAogICAg
ICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzID0gW107CisgICAgICAgIHRoaXMuX2FsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBudWxsOworICAgICAgICB0aGlzLl9hbGxJbnRlcnZh
bHNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCA9IG51bGw7CisK
ICAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHMgPSBbXTsKIAotICAgICAgICB0aGlzLl9hbGxB
bmltYXRpb25GcmFtZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygi
YnJlYWstb24tYWxsLWFuaW1hdGlvbi1mcmFtZXMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2Fs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCB7Ci0gICAgICAgICAgICBkaXNhYmxl
ZDogIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1
ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludEVu
YWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1pbnRlcnZhbHMiLCBm
YWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZl
bnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsLCB7Ci0gICAgICAg
ICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnRFbmFibGVkU2V0dGlu
Zy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1saXN0ZW5l
cnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBuZXcg
V0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7Ci0g
ICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnRFbmFibGVk
U2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsVGltZW91dHNC
cmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLXRp
bWVvdXRzIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBu
ZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQsIHsK
LSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxl
ZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotCiAgICAgICAgIHRoaXMuX2FsbFJlcXVlc3Rz
QnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1y
ZXF1ZXN0cyIsIGZhbHNlKTsKICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50ID0g
bmV3IFdJLlVSTEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRleHQsICIiLCB7CiAg
ICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRT
ZXR0aW5nLnZhbHVlLAogICAgICAgICB9KTsKIAotICAgICAgICBXSS5ET01CcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdl
ZCwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsK
LSAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRXZlbnRCcmVh
a3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFr
cG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJLlVSTEJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVD
aGFuZ2VkLCB0aGlzLl9oYW5kbGVVUkxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRo
aXMpOworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3Bv
aW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJLkV2ZW50QnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURp
ZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQs
IHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVh
a3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50Lklnbm9yZUNvdW50
RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hh
bmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVF
dmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJ
LkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0
aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQs
IHRoaXMpOworCisgICAgICAgIFdJLlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVVSTEJy
ZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuZG9tTWFu
YWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZVJlbW92ZWQsIHRo
aXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlzLl9ub2RlSW5zZXJ0
ZWQsIHRoaXMpOwpAQCAtNzgsNyArNjksNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICAg
ICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0kuU2V0dGluZy5taWdyYXRl
VmFsdWUoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nU2VyaWFsaXplZEJy
ZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1Nl
cmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG9iamVjdFN0b3JlLnB1dE9iamVjdChjb25z
dHJ1Y3Rvci5kZXNlcmlhbGl6ZShleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgb2JqZWN0U3RvcmUucHV0T2JqZWN0KGNvbnN0
cnVjdG9yLmZyb21KU09OKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIApAQCAtODYsNyArNzcsNyBAQCBXSS5E
T01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzID0gdHJ1
ZTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBzZXJpYWxpemVkQnJlYWtwb2ludCBvZiBzZXJp
YWxpemVkQnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQg
PSBjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAgICAg
ICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gY29uc3RydWN0b3IuZnJvbUpTT04oc2VyaWFs
aXplZEJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG51bGw7
CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFzc29jaWF0ZU9iamVjdChicmVha3Bv
aW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAgLTEwNSw0MiArOTYsMjEgQEAgV0ku
RE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50QnJl
YWtwb2ludHMoKSB8fCBET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJl
YWtwb2ludHMoKSkgewogICAgICAgICAgICAgbG9hZEJyZWFrcG9pbnRzKFdJLkV2ZW50QnJlYWtw
b2ludCwgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMsIFsiZXZlbnQtYnJlYWtwb2lu
dHMiXSwgKGJyZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAvLyBNaWdyYXRlIGByZXF1
ZXN0QW5pbWF0aW9uRnJhbWVgLCBgc2V0VGltZW91dGAsIGFuZCBgc2V0SW50ZXJ2YWxgIGdsb2Jh
bCBicmVha3BvaW50cy4KLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQudHlwZSkg
ewotICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9u
RnJhbWU6Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAg
ICBpZiAoIVdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVl
KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9u
RnJhbWVzQnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50
KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBXSS5vYmplY3RT
dG9yZXMuZXZlbnRCcmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuVGltZXI6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYnJlYWtwb2lu
dC5ldmVudE5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAic2V0VGltZW91dCI6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQuZGlzYWJs
ZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFX
SS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlKSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52
YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJy
ZWFrcG9pbnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICAg
ICAgICAgIGNhc2UgInNldEludGVydmFsIjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMu
X2FsbEludGVydmFsc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwot
ICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxz
QnJlYWtwb2ludC52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdJLnNldHRp
bmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlID0gdHJ1ZTsKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxJbnRlcnZh
bHNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAg
ICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFr
cG9pbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQot
CiAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAg
ICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGxvYWRMZWdhY3lHbG9iYWxFdmVudEJy
ZWFrcG9pbnQgPSAodHlwZSwgc2hvd25TZXR0aW5nc0tleSwgZW5hYmxlZFNldHRpbmdzS2V5KSA9
PiB7CisgICAgICAgICAgICAgICAgaWYgKCFXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShzaG93blNl
dHRpbmdzS2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXSS5FdmVudEJyZWFrcG9pbnQodHlwZSwgeworICAgICAgICAgICAgICAg
ICAgICBkaXNhYmxlZDogIVdJLlNldHRpbmcubWlncmF0ZVZhbHVlKGVuYWJsZWRTZXR0aW5nc0tl
eSksCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAgICAgICAgICAgdGhp
cy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50
QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSwgInNob3ct
YWxsLWFuaW1hdGlvbi1mcmFtZXMtYnJlYWtwb2ludCIsICJicmVhay1vbi1hbGwtYW5pbWF0aW9u
LWZyYW1lcyIpOworICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA/Pz0g
bG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5J
bnRlcnZhbCwgInNob3ctYWxsLWludGV2ZXJhbHMtYnJlYWtwb2ludCIsICJicmVhay1vbi1hbGwt
aW50ZXJ2YWxzIik7CisgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID8/
PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
Lkxpc3RlbmVyLCAic2hvdy1hbGwtbGlzdGVuZXJzLWJyZWFrcG9pbnQiLCAiYnJlYWstb24tYWxs
LWxpc3RlbmVycyIpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50ID8/
PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LlRpbWVvdXQsICJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50IiwgImJyZWFrLW9uLWFsbC10
aW1lb3V0cyIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5z
dXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkgfHwgRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzWEhS
QnJlYWtwb2ludHMoKSkgewpAQCAtMTYwLDE2ICsxMzAsMTYgQEAgV0kuRE9NRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICBpZiAodGFyZ2V0ID09PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKSAmJiB0YXJnZXQubWFp
blJlc291cmNlKQogICAgICAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZlbHlSZXNvbHZlRE9N
QnJlYWtwb2ludHNGb3JVUkwodGFyZ2V0Lm1haW5SZXNvdXJjZS51cmwpOwogCi0gICAgICAgICAg
ICBpZiAoIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQuZGlzYWJsZWQpCisgICAg
ICAgICAgICBpZiAodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKICAgICAgICAg
ICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxJbnRl
cnZhbHNCcmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgaWYgKHRoaXMuX2FsbEludGVy
dmFsc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3Bv
aW50KHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAgICAg
IGlmICghdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAg
IGlmICh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQogICAgICAgICAgICAgICAgIHRoaXMu
X3VwZGF0ZUV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0YXJn
ZXQpOwogCi0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludC5kaXNh
YmxlZCkKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCiAgICAg
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbFRpbWVvdXRz
QnJlYWtwb2ludCwgdGFyZ2V0KTsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxSZXF1ZXN0
c0JyZWFrcG9pbnQuZGlzYWJsZWQpCkBAIC0yNzAsMTUgKzI0MCw2IEBAIFdJLkRPTURlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
IGdldCBsaXN0ZW5lckJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fbGlzdGVuZXJCcmVha3Bv
aW50czsgfQogICAgIGdldCB1cmxCcmVha3BvaW50cygpIHsgcmV0dXJuIHRoaXMuX3VybEJyZWFr
cG9pbnRzOyB9CiAKLSAgICBpc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpCi0gICAgewot
ICAgICAgICByZXR1cm4gYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsVGlt
ZW91dHNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxS
ZXF1ZXN0c0JyZWFrcG9pbnQ7Ci0gICAgfQotCiAgICAgZG9tQnJlYWtwb2ludHNGb3JOb2RlKG5v
ZGUpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChub2RlIGluc3RhbmNlb2YgV0kuRE9N
Tm9kZSk7CkBAIC0zMTksNyArMjgwLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3Mg
RE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJlYWtw
b2ludCB8fCAhYnJlYWtwb2ludC51cmwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
aWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAo
YnJlYWtwb2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHti
cmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MSw3ICsz
MDIsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2lu
dCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVh
a3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3Zl
ZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4MywxOCArMzQ0LDM4
IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3Bv
aW50KSkgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0p
OwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVh
a3BvaW50Lmdsb2JhbCwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgc3dpdGNoIChicmVha3BvaW50
LnR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25G
cmFtZToKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxBbmltYXRpb25GcmFt
ZXNCcmVha3BvaW50LCB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBicmVha3Bv
aW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBi
cmVha3BvaW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5JbnRlcnZhbDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBi
cmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBi
cmVha3BvaW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcjoKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50
TmFtZSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmZp
bmQoKGV4aXN0aW5nKSA9PiBleGlzdGluZy5ldmVudE5hbWUgPT09IGJyZWFrcG9pbnQuZXZlbnRO
YW1lKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAg
ICAgdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYWxsTGlz
dGVuZXJzQnJlYWtwb2ludCwgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgYnJlYWtwb2lu
dCk7CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IGJyZWFr
cG9pbnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNl
IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ6CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCghdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0aGlzLl9hbGxUaW1lb3V0c0JyZWFr
cG9pbnQsIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3Bv
aW50ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lciwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFr
cG9pbnQuZXZlbnROYW1lLCBicmVha3BvaW50KTsKLQotICAgICAgICBpZiAodGhpcy5fbGlzdGVu
ZXJCcmVha3BvaW50cy5maW5kKChleGlzdGluZykgPT4gZXhpc3RpbmcuZXZlbnROYW1lID09PSBi
cmVha3BvaW50LmV2ZW50TmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAg
ICAgdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAog
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKQEAgLTQxNSwz
OCArMzk2LDQ2IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVh
a3BvaW50KSkgewotICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Ci0gICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKLSAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgLy8gRGlzYWJsZSB0aGUgYnJlYWtwb2ludCBmaXJzdCwgc28g
cmVtb3ZpbmcgYWN0aW9ucyBkb2Vzbid0IHJlLWFkZCB0aGUgYnJlYWtwb2ludC4KKyAgICAgICAg
YnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGJyZWFrcG9pbnQuY2xlYXJBY3Rp
b25zKCk7CisKKyAgICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5cGUpIHsKKyAgICAgICAgY2Fz
ZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRoaXMuX2Fs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsOgorICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwgdGhpcy5fYWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50
ID0gbnVsbDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuTGlzdGVuZXI6CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudE5h
bWUpIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9saXN0ZW5lckJyZWFr
cG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9pbnQpLCBicmVha3BvaW50KTsKKyAgICAgICAgICAgICAg
ICBpZiAoIXRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCkpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHRoaXMuX2xpc3Rl
bmVyQnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSBlbHNlIHsK
KyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3Bv
aW50LCB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlz
Ll9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91
dDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2lu
dCwgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbFRp
bWVvdXRzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuTGlzdGVuZXIsIGJyZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFzc2Vy
dChicmVha3BvaW50LmV2ZW50TmFtZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSwgYnJl
YWtwb2ludCk7Ci0gICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRl
cyhicmVha3BvaW50KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9saXN0
ZW5lckJyZWFrcG9pbnRzLnJlbW92ZShicmVha3BvaW50KTsKLQogICAgICAgICBpZiAoIXRoaXMu
X3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50
QnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFrcG9pbnQpOwogCisgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5F
dmVudC5FdmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwotCi0gICAgICAgIGlm
IChicmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZv
ciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7Ci0gICAgICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgMTIpOiBET01EZWJ1Z2dlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBl
eGlzdC4KLSAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVt
b3ZlRXZlbnRCcmVha3BvaW50IikpCi0gICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2Vy
QWdlbnQucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5l
dmVudE5hbWUpOwotICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURl
YnVnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKLSAgICAgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5U
eXBlLkxpc3RlbmVyKTsKLSAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5y
ZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgIH0KICAgICB9CiAKICAgICB1cmxCcmVha3BvaW50Rm9yVVJMKHVy
bCkKQEAgLTQ2MCw3ICs0NDksNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01E
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtw
b2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFs
KSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuVVJMQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ5Myw3ICs0ODIsNyBAQCBXSS5E
T01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAg
ICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVha3BvaW50LmRpc2Fi
bGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJ
LkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5VUkxCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9p
bnR9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTcwNCw2ICs2OTMsOCBAQCBXSS5ET01EZWJ1
Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgJiYgIVdJLmRlYnVn
Z2VyTWFuYWdlci5icmVha3BvaW50c0Rpc2FibGVkVGVtcG9yYXJpbHkpCiAgICAgICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7CiAKKyAgICAg
ICAgICAgIGNvbW1hbmRBcmd1bWVudHMub3B0aW9ucyA9IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJv
dG9jb2woKTsKKwogICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQuc2V0RXZlbnRC
cmVha3BvaW50Lmludm9rZShjb21tYW5kQXJndW1lbnRzLCBjYWxsYmFjayk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC03NjAsMjYgKzc1MSw0MCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgZm9yIChsZXQg
dGFyZ2V0IG9mIFdJLnRhcmdldHMpCiAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQp
IHsKLSAgICAgICAgY2FzZSB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAg
ICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5n
LnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCisgICAgICAgICAgICBXSS5vYmpl
Y3RTdG9yZXMuZXZlbnRCcmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7CisgICAgfQog
Ci0gICAgICAgIGNhc2UgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludDoKLSAgICAgICAgICAg
IHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVh
a3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOworICAgIF9oYW5kbGVFdmVudEJy
ZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIGxl
dCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwogCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsTGlz
dGVuZXJzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9p
bnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOworICAgICAgICAv
LyBTcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUgaGFuZGxlZCBieSBgRE9N
TWFuYWdlcmAuCisgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCiAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgY2FzZSB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQ6
Ci0gICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52
YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICB9Ci0KICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAg
ICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50
KTsKKworICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykKKyAgICAgICAgICAg
IHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgIH0K
KworCisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKGV2ZW50KQorICAg
IHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8g
U3BlY2lmaWMgZXZlbnQgbGlzdGVuZXIgYnJlYWtwb2ludHMgYXJlIGhhbmRsZWQgYnkgYERPTU1h
bmFnZXJgLgorICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxl
UHJvcGVydHlDaGFuZ2VkKGV2ZW50KTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIudXBk
YXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICB9CiAKICAgICBfaGFuZGxl
VVJMQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1h
bmFnZXIuanMKaW5kZXggNmYyOTc4ZDk0NGY2Li5iM2QyNmMwNmQ5NDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RE9NTWFuYWdlci5qcwpAQCAtNTAsNyArNTAsMTEgQEAgV0kuRE9NTWFuYWdlciA9IGNsYXNzIERP
TU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5faGFzUmVxdWVzdGVkRG9j
dW1lbnQgPSBmYWxzZTsKICAgICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxi
YWNrcyA9IG51bGw7CiAKLSAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9o
YW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAg
IFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
RGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJs
ZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5f
aGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAg
ICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2
ZW50Lklnbm9yZUNvdW50RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0
YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdl
LCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhp
cyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFr
cG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50
QWN0aW9uc0NoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3Vy
Y2VEaWRDaGFuZ2UsIHRoaXMpOwogICAgIH0KQEAgLTEyNiw2ICsxMzAsMTIgQEAgV0kuRE9NTWFu
YWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICYm
IEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9NLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyIik7CiAgICAgfQogCisgICAgc3RhdGljIHN1cHBvcnRzRXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnRDb25maWd1cmF0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxNCk6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciBkaWQgbm90IGhhdmUg
YW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNr
ZW5kLmhhc0NvbW1hbmQoIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciIsICJvcHRp
b25zIik7CisgICAgfQorCiAgICAgc3RhdGljIHN1cHBvcnRzRWRpdGluZ1VzZXJBZ2VudFNoYWRv
d1RyZWVzKHtmcm9udGVuZE9ubHksIHRhcmdldH0gPSB7fSkKICAgICB7CiAgICAgICAgIHRhcmdl
dCA9IHRhcmdldCB8fCBJbnNwZWN0b3JCYWNrZW5kOwpAQCAtNjY3LDYgKzY3Nyw4IEBAIFdJLkRP
TU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAg
ICAgICAgIH0KIAorICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtw
b2ludChicmVha3BvaW50KTsKKwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFr
cG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICB9CiAKQEAgLTY4MCw2ICs2OTIsMTIgQEAg
V0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOwogICAgICAgICB9CiAKKyAgICAgICAg
Ly8gRGlzYWJsZSB0aGUgYnJlYWtwb2ludCBmaXJzdCwgc28gcmVtb3ZpbmcgYWN0aW9ucyBkb2Vz
bid0IHJlLWFkZCB0aGUgYnJlYWtwb2ludC4KKyAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9
IHRydWU7CisgICAgICAgIGJyZWFrcG9pbnQuY2xlYXJBY3Rpb25zKCk7CisKKyAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisK
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFr
cG9pbnR9KTsKICAgICB9CiAKQEAgLTcxMCw3ICs3MjgsMTAgQEAgV0kuRE9NTWFuYWdlciA9IGNs
YXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGlmICghV0kuZGVi
dWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKICAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAotICAg
ICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2
ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKKyAgICAgICAgICAgIHRhcmdldC5ET01BZ2Vu
dC5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5pbnZva2UoeworICAgICAgICAgICAgICAg
IGV2ZW50TGlzdGVuZXJJZDogZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsCisgICAgICAg
ICAgICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpLAorICAgICAg
ICAgICAgfSk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTcyOCw2ICs3NDksMzQgQEAgV0kuRE9N
TWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQog
ICAgIH0KIAorICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdl
ZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0Owor
CisgICAgICAgIC8vIE5vbi1zcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUg
aGFuZGxlZCBieSBgRE9NRGVidWdnZXJNYW5hZ2VyYC4KKyAgICAgICAgaWYgKCFicmVha3BvaW50
LmV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGJyZWFr
cG9pbnQuZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQg
dGFyZ2V0IG9mIFdJLnRhcmdldHMpCisgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICB9CisKKyAgICBfaGFuZGxlRXZlbnRCcmVh
a3BvaW50QWN0aW9uc0NoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICBsZXQgYnJlYWtwb2lu
dCA9IGV2ZW50LnRhcmdldDsKKworICAgICAgICAvLyBOb24tc3BlY2lmaWMgZXZlbnQgbGlzdGVu
ZXIgYnJlYWtwb2ludHMgYXJlIGhhbmRsZWQgYnkgYERPTURlYnVnZ2VyTWFuYWdlcmAuCisgICAg
ICAgIGlmICghYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFu
Z2VkKGV2ZW50KTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIudXBkYXRlUHJvYmVzRm9y
QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICB9CisKICAgICBfbWFpblJlc291cmNlRGlkQ2hh
bmdlKGV2ZW50KQogICAgIHsKICAgICAgICAgaWYgKCFldmVudC50YXJnZXQuaXNNYWluRnJhbWUo
KSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwppbmRleCBiNDliZTUwYWJhMzMu
Ljk5OTAyOGMyZWNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAt
MjksMTIgKzI5LDEyIEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICBX
SS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5
TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFu
Z2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJl
YWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3Vu
dERpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRo
aXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVBy
b3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxl
QnJlYWtwb2ludEFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRo
aXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRp
dGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERp
ZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMp
OworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRp
dGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hh
bmdlLCB0aGlzLl9oYW5kbGVCcmVha3BvaW50QWN0aW9uc0RpZENoYW5nZSwgdGhpcyk7CisgICAg
ICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3Bv
aW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICBXSS50aW1lbGlu
ZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVy
aW5nU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVUaW1lbGluZUNhcHR1cmluZ1N0YXRlQ2hhbmdl
ZCwgdGhpcyk7CiAKQEAgLTU2LDMxICs1NiwzMSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY29uc3Qgc3BlY2lh
bEJyZWFrcG9pbnRMb2NhdGlvbiA9IG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgSW5m
aW5pdHksIEluZmluaXR5KTsKIAogICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tZGVidWdnZXIt
c3RhdGVtZW50cyIsIHRydWUpOwotICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgewor
ICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAg
IGRpc2FibGVkOiAhdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludEVuYWJsZWRTZXR0
aW5nLnZhbHVlLAogICAgICAgICB9KTsKICAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRz
QnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9u
c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwt
ZXhjZXB0aW9ucyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQgPSBuZXcgV0kuQnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAg
ICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVk
OiAhdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAg
ICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVk
ID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50RW5h
YmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9u
cyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCA9
IG5ldyBXSS5CcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAg
dGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxl
ZDogIXRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1
ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9p
bnQucmVzb2x2ZWQgPSB0cnVlOwogCiAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJl
YWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFzc2VydGlv
bi1mYWlsdXJlcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgewor
ICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgewogICAgICAgICAgICAg
ZGlzYWJsZWQ6ICF0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGlu
Zy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJl
YWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0Jy
ZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtbWlj
cm90YXNrcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQg
PSBuZXcgV0kuQnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAg
IHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAh
dGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAg
ICAgfSk7CiAgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LnJlc29sdmVkID0g
dHJ1ZTsKQEAgLTEyNiwxNCArMTI2LDE0IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgbGV0IGV4aXN0aW5n
U2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoImJyZWFrcG9p
bnRzIik7CiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludHMpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50IG9m
IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgICAgICBhd2Fp
dCBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMucHV0T2JqZWN0KFdJLkJyZWFrcG9pbnQuZnJv
bUpTT04oZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludCkpOworICAgICAgICAgICAgICAgICAg
ICBhd2FpdCBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMucHV0T2JqZWN0KFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LmZyb21KU09OKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKICAg
ICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50cyA9IGF3
YWl0IFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5nZXRBbGwoKTsKIAogICAgICAgICAgICAg
dGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChsZXQg
c2VyaWFsaXplZEJyZWFrcG9pbnQgb2Ygc2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7Ci0gICAgICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5CcmVha3BvaW50LmZyb21KU09OKHNlcmlhbGl6
ZWRCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LmZyb21KU09OKHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKIAogICAgICAg
ICAgICAgICAgIGNvbnN0IGtleSA9IG51bGw7CiAgICAgICAgICAgICAgICAgV0kub2JqZWN0U3Rv
cmVzLmJyZWFrcG9pbnRzLmFzc29jaWF0ZU9iamVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6
ZWRCcmVha3BvaW50KTsKQEAgLTM0MiwyNSArMzQyLDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0g
Y2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBu
dWxsOwogICAgIH0KIAotICAgIGlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KQotICAg
IHsKLSAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQgIT09IHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50
c0JyZWFrcG9pbnQKLSAgICAgICAgICAgICYmIGJyZWFrcG9pbnQgIT09IHRoaXMuX2FsbEV4Y2Vw
dGlvbnNCcmVha3BvaW50Ci0gICAgICAgICAgICAmJiBicmVha3BvaW50ICE9PSB0aGlzLl91bmNh
dWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OwotICAgIH0KLQotICAgIGlzQnJlYWtwb2ludFNwZWNp
YWwoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0JyZWFrcG9pbnRS
ZW1vdmFibGUoYnJlYWtwb2ludCkKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMu
X2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9
PT0gdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ7Ci0gICAgfQotCi0gICAgaXNCcmVha3Bv
aW50RWRpdGFibGUoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0Jy
ZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpOwotICAgIH0KLQogICAgIGdldCBicmVha3BvaW50
c0VuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxl
ZFNldHRpbmcudmFsdWU7CkBAIC02NTksMTEgKzY0MCwxMSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIg
PSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGFkZEJyZWFr
cG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KTsKICAgICAgICAgaWYg
KCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlz
QnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQu
Z2xvYmFsKSB7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5E
ZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02ODIsMjIgKzY2MywyMiBAQCBXSS5EZWJ1
Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAgICAgIFdJLm9i
amVjdFN0b3Jlcy5icmVha3BvaW50cy5wdXRPYmplY3QoYnJlYWtwb2ludCk7CiAKLSAgICAgICAg
dGhpcy5fYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5h
ZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50QWRk
ZWQsIHticmVha3BvaW50fSk7CiAgICAgfQogCiAgICAgcmVtb3ZlQnJlYWtwb2ludChicmVha3Bv
aW50KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLkJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnQp
CiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0Jy
ZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkpOwotICAgICAgICBpZiAoIXRoaXMuaXNCcmVh
a3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKQorICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50LnJlbW92YWJsZSk7CisgICAgICAgIGlmICghYnJlYWtwb2ludC5yZW1vdmFibGUpCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lh
bChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludC5nbG9iYWwpIHsKICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRS
ZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzIxLDcgKzcw
Miw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAg
ICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3Bv
aW50KTsKIAotICAgICAgICB0aGlzLl9yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9p
bnQpOworICAgICAgICB0aGlzLnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KQEAgLTcz
MSw2ICs3MTIsNzcgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiB0aGlzLl9uZXh0QnJlYWtwb2ludEFj
dGlvbklkZW50aWZpZXIrKzsKICAgICB9CiAKKyAgICBhZGRQcm9iZXNGb3JCcmVha3BvaW50KGJy
ZWFrcG9pbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJz
Rm9yQnJlYWtwb2ludC5oYXMoYnJlYWtwb2ludCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJlYWtw
b2ludCwgbmV3IFNldCk7CisKKyAgICAgICAgdGhpcy51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworICAgIH0KKworICAgIHJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJl
YWtwb2ludCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2tub3duUHJvYmVJ
ZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuaGFzKGJyZWFrcG9pbnQpKTsKKworICAgICAgICB0aGlz
LnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuX2tu
b3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQpOworICAg
IH0KKworICAgIHVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7Cisg
ICAgICAgIGxldCBrbm93blByb2JlSWRlbnRpZmllcnMgPSB0aGlzLl9rbm93blByb2JlSWRlbnRp
ZmllcnNGb3JCcmVha3BvaW50LmdldChicmVha3BvaW50KTsKKyAgICAgICAgaWYgKCFrbm93blBy
b2JlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIC8vIFNvbWV0aW1lcyBhY3Rpb25zIGNoYW5n
ZSBiZWZvcmUgdGhlIGFkZGVkIGJyZWFrcG9pbnQgaXMgZnVsbHkgZGlzcGF0Y2hlZC4KKyAgICAg
ICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAg
ICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGxldCBzZWVuUHJvYmVJZGVudGlmaWVy
cyA9IG5ldyBTZXQ7CisKKyAgICAgICAgZm9yIChsZXQgcHJvYmVBY3Rpb24gb2YgYnJlYWtwb2lu
dC5wcm9iZUFjdGlvbnMpIHsKKyAgICAgICAgICAgIGxldCBwcm9iZUlkZW50aWZpZXIgPSBwcm9i
ZUFjdGlvbi5pZDsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlSWRlbnRpZmllciwg
IlByb2JlIGFkZGVkIHdpdGhvdXQgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllcjogIiwgYnJl
YWtwb2ludCk7CisKKyAgICAgICAgICAgIHNlZW5Qcm9iZUlkZW50aWZpZXJzLmFkZChwcm9iZUlk
ZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMuaGFzKHBy
b2JlSWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAgICAvLyBOZXcgcHJvYmU7IGZpbmQgb3Ig
Y3JlYXRlIHJlbGV2YW50IHByb2JlIHNldC4KKyAgICAgICAgICAgICAgICBrbm93blByb2JlSWRl
bnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgbGV0IHByb2Jl
U2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAg
ICAgICAgIGxldCBuZXdQcm9iZSA9IG5ldyBXSS5Qcm9iZShwcm9iZUlkZW50aWZpZXIsIGJyZWFr
cG9pbnQsIHByb2JlQWN0aW9uLmRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5
SWRlbnRpZmllci5zZXQocHJvYmVJZGVudGlmaWVyLCBuZXdQcm9iZSk7CisgICAgICAgICAgICAg
ICAgcHJvYmVTZXQuYWRkUHJvYmUobmV3UHJvYmUpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9iZXNCeUlk
ZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dChwcm9iZSwgIlByb2JlIGtub3duIGJ1dCBjb3VsZG4ndCBiZSBmb3VuZCBieSBpZGVudGlmaWVy
OiAiLCBwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgLy8gVXBkYXRlIHByb2JlIGV4cHJl
c3Npb247IGlmIGl0IGRpZmZlcmVkLCBjaGFuZ2UgZXZlbnRzIHdpbGwgZmlyZS4KKyAgICAgICAg
ICAgIHByb2JlLmV4cHJlc3Npb24gPSBwcm9iZUFjdGlvbi5kYXRhOworICAgICAgICB9CisKKyAg
ICAgICAgLy8gTG9vayBmb3IgbWlzc2luZyBwcm9iZXMgYmFzZWQgb24gd2hhdCB3ZSBzYXcgbGFz
dC4KKyAgICAgICAgZm9yIChsZXQgcHJvYmVJZGVudGlmaWVyIG9mIGtub3duUHJvYmVJZGVudGlm
aWVycykgeworICAgICAgICAgICAgaWYgKHNlZW5Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlk
ZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyBUaGUg
cHJvYmUgaGFzIGdvbmUgbWlzc2luZywgcmVtb3ZlIGl0LgorICAgICAgICAgICAgbGV0IHByb2Jl
U2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAg
ICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmdldChwcm9iZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmRlbGV0ZShwcm9iZUlk
ZW50aWZpZXIpOworICAgICAgICAgICAga25vd25Qcm9iZUlkZW50aWZpZXJzLmRlbGV0ZShwcm9i
ZUlkZW50aWZpZXIpOworICAgICAgICAgICAgcHJvYmVTZXQucmVtb3ZlUHJvYmUocHJvYmUpOwor
CisgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHByb2JlIHNldCBpZiBpdCBoYXMgYmVjb21lIGVt
cHR5LgorICAgICAgICAgICAgaWYgKCFwcm9iZVNldC5wcm9iZXMubGVuZ3RoKSB7CisgICAgICAg
ICAgICAgICAgdGhpcy5fcHJvYmVTZXRzQnlCcmVha3BvaW50LmRlbGV0ZShwcm9iZVNldC5icmVh
a3BvaW50KTsKKyAgICAgICAgICAgICAgICBwcm9iZVNldC53aWxsUmVtb3ZlKCk7CisgICAgICAg
ICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2Vy
LkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwge3Byb2JlU2V0fSk7CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICB9CisKICAgICAvLyBEZWJ1Z2dlck9ic2VydmVyCiAKICAgICBicmVha3BvaW50
UmVzb2x2ZWQodGFyZ2V0LCBicmVha3BvaW50SWRlbnRpZmllciwgbG9jYXRpb24pCkBAIC05OTcs
NjAgKzEwNDksNiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIG5ldyBXSS5TY29wZUNoYWluTm9kZSh0
eXBlLCBbb2JqZWN0XSwgcGF5bG9hZC5uYW1lLCBwYXlsb2FkLmxvY2F0aW9uLCBwYXlsb2FkLmVt
cHR5KTsKICAgICB9CiAKLSAgICBfZGVidWdnZXJCcmVha3BvaW50QWN0aW9uVHlwZSh0eXBlKQot
ICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2lu
dEFjdGlvbi5UeXBlLkxvZzoKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuTG9nOwotICAgICAgICBjYXNlIFdJLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZToKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0
b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuRXZhbHVhdGU7Ci0g
ICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlNvdW5kOgotICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlw
ZS5Tb3VuZDsKLSAgICAgICAgY2FzZSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU6Ci0g
ICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9p
bnRBY3Rpb25UeXBlLlByb2JlOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51
bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5Mb2c7Ci0gICAgICAgIH0KLSAgICB9Ci0K
LSAgICBfZGVidWdnZXJCcmVha3BvaW50T3B0aW9ucyhicmVha3BvaW50KQotICAgIHsKLSAgICAg
ICAgbGV0IGFjdGlvbnMgPSBicmVha3BvaW50LmFjdGlvbnM7Ci0gICAgICAgIGFjdGlvbnMgPSBh
Y3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24udG9Qcm90b2NvbCgpKTsKLSAgICAgICAgYWN0
aW9ucyA9IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+IHsKLSAgICAgICAgICAgIGlmIChhY3Rp
b24udHlwZSAhPT0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZykKLSAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgaWYgKCEvXCRcey4qP1x9Ly50ZXN0KGFjdGlv
bi5kYXRhKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgbGV0
IGxleGVyID0gbmV3IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXI7Ci0gICAgICAgICAgICBs
ZXQgdG9rZW5zID0gbGV4ZXIudG9rZW5pemUoYWN0aW9uLmRhdGEpOwotICAgICAgICAgICAgaWYg
KCF0b2tlbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBs
ZXQgdGVtcGxhdGVMaXRlcmFsID0gdG9rZW5zLnJlZHVjZSgodGV4dCwgdG9rZW4pID0+IHsKLSAg
ICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VM
ZXhlci5Ub2tlblR5cGUuUGxhaW5UZXh0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4
dCArIHRva2VuLmRhdGEuZXNjYXBlQ2hhcmFjdGVycygiYFxcIik7Ci0gICAgICAgICAgICAgICAg
aWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBl
LkV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgIiR7IiArIHRv
a2VuLmRhdGEgKyAifSI7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAg
ICB9LCAiIik7Ci0KLSAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gImNvbnNvbGUubG9nKGAiICsg
dGVtcGxhdGVMaXRlcmFsICsgImApIjsKLSAgICAgICAgICAgIGFjdGlvbi50eXBlID0gV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0g
ICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBjb25kaXRpb246IGJy
ZWFrcG9pbnQuY29uZGl0aW9uLAotICAgICAgICAgICAgaWdub3JlQ291bnQ6IGJyZWFrcG9pbnQu
aWdub3JlQ291bnQsCi0gICAgICAgICAgICBhdXRvQ29udGludWU6IGJyZWFrcG9pbnQuYXV0b0Nv
bnRpbnVlLAotICAgICAgICAgICAgYWN0aW9ucywKLSAgICAgICAgfTsKLSAgICB9Ci0KICAgICBf
c2V0QnJlYWtwb2ludChicmVha3BvaW50LCBzcGVjaWZpY1RhcmdldCkKICAgICB7CiAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50LmRpc2FibGVkKTsKQEAgLTEwODgsMTIgKzEwODYs
NiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKICAgICAgICAgaWYgKCFzcGVjaWZpY1RhcmdldCkKICAgICAgICAgICAgIGJyZWFr
cG9pbnQucmVzb2x2ZWQgPSBmYWxzZTsKIAotICAgICAgICAvLyBDb252ZXJ0IEJyZWFrcG9pbnRB
Y3Rpb24gdHlwZXMgdG8gRGVidWdnZXJBZ2VudCBwcm90b2NvbCB0eXBlcy4KLSAgICAgICAgLy8g
Tk9URTogQnJlYWtwb2ludC5vcHRpb25zIHJldHVybnMgbmV3IG9iamVjdHMgZWFjaCB0aW1lLCBz
byBpdCBpcyBzYWZlIHRvIG1vZGlmeS4KLSAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLl9kZWJ1
Z2dlckJyZWFrcG9pbnRPcHRpb25zKGJyZWFrcG9pbnQpOwotICAgICAgICBmb3IgKGxldCBhY3Rp
b24gb2Ygb3B0aW9ucy5hY3Rpb25zKQotICAgICAgICAgICAgYWN0aW9uLnR5cGUgPSB0aGlzLl9k
ZWJ1Z2dlckJyZWFrcG9pbnRBY3Rpb25UeXBlKGFjdGlvbi50eXBlKTsKLQogICAgICAgICBpZiAo
YnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllcikgewogICAgICAgICAgICAgbGV0IHRhcmdldHMg
PSBzcGVjaWZpY1RhcmdldCA/IFtzcGVjaWZpY1RhcmdldF0gOiBXSS50YXJnZXRzOwogICAgICAg
ICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMpIHsKQEAgLTExMDIsMTQgKzEwOTQsMTQg
QEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgICAgICAgICAgICAgIHVybDogYnJlYWtwb2ludC5jb250ZW50SWRlbnRp
ZmllciwKICAgICAgICAgICAgICAgICAgICAgdXJsUmVnZXg6IHVuZGVmaW5lZCwKICAgICAgICAg
ICAgICAgICAgICAgY29sdW1uTnVtYmVyOiBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5j
b2x1bW5OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgIG9wdGlvbnMKKyAgICAgICAgICAgICAg
ICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpLAogICAgICAgICAg
ICAgICAgIH0sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0aGlzLCB0YXJnZXQpKTsKICAgICAgICAg
ICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIpIHsK
ICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBicmVha3BvaW50LnRhcmdldDsKICAgICAgICAgICAg
IHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9pbnQuaW52b2tlKHsKICAgICAgICAgICAg
ICAgICBsb2NhdGlvbjoge3NjcmlwdElkOiBicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIsIGxp
bmVOdW1iZXI6IGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcjogYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyfSwKLSAg
ICAgICAgICAgICAgICBvcHRpb25zCisgICAgICAgICAgICAgICAgb3B0aW9uczogYnJlYWtwb2lu
dC5vcHRpb25zVG9Qcm90b2NvbCgpLAogICAgICAgICAgICAgfSwgZGlkU2V0QnJlYWtwb2ludC5i
aW5kKHRoaXMsIHRhcmdldCkpOwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdJLnJlcG9y
dEludGVybmFsRXJyb3IoIlVua25vd24gc291cmNlIGZvciBicmVha3BvaW50LiIpOwpAQCAtMTIz
Myw4ICsxMjI1LDggQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNCcmVha3Bv
aW50RWRpdGFibGUoYnJlYWtwb2ludCkpOwotICAgICAgICBpZiAoIXRoaXMuaXNCcmVha3BvaW50
RWRpdGFibGUoYnJlYWtwb2ludCkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQu
ZWRpdGFibGUpOworICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZWRpdGFibGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKICAgICAgICAgLy8gUmVtb3ZlIHRoZSBicmVha3BvaW50IHdpdGggaXRzIG9s
ZCBpZC4KQEAgLTEyNTAsNyArMTI0Miw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERl
YnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgdGhpcy5fYnJl
YWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UoZXZlbnQpOwogCi0gICAgICAgIHRoaXMu
X3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgdGhpcy51
cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGV2ZW50LnRhcmdldCk7CiAgICAgfQogCiAgICAgX3N0
YXJ0RGlzYWJsaW5nQnJlYWtwb2ludHNUZW1wb3JhcmlseSgpCkBAIC0xNDEzLDc3ICsxNDA1LDYg
QEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHRoaXMuX2lnbm9yZUJyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRD
aGFuZ2VFdmVudCA9IGZhbHNlOwogICAgIH0KIAotICAgIF9hZGRQcm9iZXNGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fa25vd25Qcm9iZUlkZW50aWZp
ZXJzRm9yQnJlYWtwb2ludC5oYXMoYnJlYWtwb2ludCkpCi0gICAgICAgICAgICByZXR1cm47Ci0K
LSAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJl
YWtwb2ludCwgbmV3IFNldCk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlUHJvYmVzRm9yQnJlYWtw
b2ludChicmVha3BvaW50KTsKLSAgICB9Ci0KLSAgICBfcmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2lu
dChicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fa25vd25Q
cm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMoYnJlYWtwb2ludCkpOwotCi0gICAgICAg
IHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIHRo
aXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQp
OwotICAgIH0KLQotICAgIF91cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0g
ICAgewotICAgICAgICBsZXQga25vd25Qcm9iZUlkZW50aWZpZXJzID0gdGhpcy5fa25vd25Qcm9i
ZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5nZXQoYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICgh
a25vd25Qcm9iZUlkZW50aWZpZXJzKSB7Ci0gICAgICAgICAgICAvLyBTb21ldGltZXMgYWN0aW9u
cyBjaGFuZ2UgYmVmb3JlIHRoZSBhZGRlZCBicmVha3BvaW50IGlzIGZ1bGx5IGRpc3BhdGNoZWQu
Ci0gICAgICAgICAgICB0aGlzLl9hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwot
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHNlZW5Qcm9iZUlk
ZW50aWZpZXJzID0gbmV3IFNldDsKLQotICAgICAgICBmb3IgKGxldCBwcm9iZUFjdGlvbiBvZiBi
cmVha3BvaW50LnByb2JlQWN0aW9ucykgewotICAgICAgICAgICAgbGV0IHByb2JlSWRlbnRpZmll
ciA9IHByb2JlQWN0aW9uLmlkOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmVJZGVu
dGlmaWVyLCAiUHJvYmUgYWRkZWQgd2l0aG91dCBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVy
OiAiLCBicmVha3BvaW50KTsKLQotICAgICAgICAgICAgc2VlblByb2JlSWRlbnRpZmllcnMuYWRk
KHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBpZiAoIWtub3duUHJvYmVJZGVudGlmaWVy
cy5oYXMocHJvYmVJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAgIC8vIE5ldyBwcm9iZTsg
ZmluZCBvciBjcmVhdGUgcmVsZXZhbnQgcHJvYmUgc2V0LgotICAgICAgICAgICAgICAgIGtub3du
UHJvYmVJZGVudGlmaWVycy5hZGQocHJvYmVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBs
ZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0g
ICAgICAgICAgICAgICAgbGV0IG5ld1Byb2JlID0gbmV3IFdJLlByb2JlKHByb2JlSWRlbnRpZmll
ciwgYnJlYWtwb2ludCwgcHJvYmVBY3Rpb24uZGF0YSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5f
cHJvYmVzQnlJZGVudGlmaWVyLnNldChwcm9iZUlkZW50aWZpZXIsIG5ld1Byb2JlKTsKLSAgICAg
ICAgICAgICAgICBwcm9iZVNldC5hZGRQcm9iZShuZXdQcm9iZSk7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGxldCBwcm9iZSA9IHRoaXMuX3By
b2Jlc0J5SWRlbnRpZmllci5nZXQocHJvYmVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHByb2JlLCAiUHJvYmUga25vd24gYnV0IGNvdWxkbid0IGJlIGZvdW5kIGJ5IGlk
ZW50aWZpZXI6ICIsIHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICAvLyBVcGRhdGUgcHJv
YmUgZXhwcmVzc2lvbjsgaWYgaXQgZGlmZmVyZWQsIGNoYW5nZSBldmVudHMgd2lsbCBmaXJlLgot
ICAgICAgICAgICAgcHJvYmUuZXhwcmVzc2lvbiA9IHByb2JlQWN0aW9uLmRhdGE7Ci0gICAgICAg
IH0KLQotICAgICAgICAvLyBMb29rIGZvciBtaXNzaW5nIHByb2JlcyBiYXNlZCBvbiB3aGF0IHdl
IHNhdyBsYXN0LgotICAgICAgICBmb3IgKGxldCBwcm9iZUlkZW50aWZpZXIgb2Yga25vd25Qcm9i
ZUlkZW50aWZpZXJzKSB7Ci0gICAgICAgICAgICBpZiAoc2VlblByb2JlSWRlbnRpZmllcnMuaGFz
KHByb2JlSWRlbnRpZmllcikpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAg
IC8vIFRoZSBwcm9iZSBoYXMgZ29uZSBtaXNzaW5nLCByZW1vdmUgaXQuCi0gICAgICAgICAgICBs
ZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0g
ICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2Jl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZGVsZXRl
KHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuZGVs
ZXRlKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBwcm9iZVNldC5yZW1vdmVQcm9iZShw
cm9iZSk7Ci0KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0aGUgcHJvYmUgc2V0IGlmIGl0IGhhcyBi
ZWNvbWUgZW1wdHkuCi0gICAgICAgICAgICBpZiAoIXByb2JlU2V0LnByb2Jlcy5sZW5ndGgpIHsK
LSAgICAgICAgICAgICAgICB0aGlzLl9wcm9iZVNldHNCeUJyZWFrcG9pbnQuZGVsZXRlKHByb2Jl
U2V0LmJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgIHByb2JlU2V0LndpbGxSZW1vdmUoKTsK
LSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dl
ck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB7cHJvYmVTZXR9KTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIF9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtw
b2ludCkKICAgICB7CiAgICAgICAgIGxldCBwcm9iZVNldCA9IHRoaXMuX3Byb2JlU2V0c0J5QnJl
YWtwb2ludC5nZXQoYnJlYWtwb2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIu
anMKaW5kZXggNWY1YzE4NDkxNmRjLi41ZjkwYWFkYmM0OTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9U
aW1lbGluZU1hbmFnZXIuanMKQEAgLTk1MiwxMCArOTUyLDE0IEBAIFdJLlRpbWVsaW5lTWFuYWdl
ciA9IGNsYXNzIFRpbWVsaW5lTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAg
fQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVu
dW0uVGltZWxpbmUuRXZlbnRUeXBlLlByb2JlU2FtcGxlOgorICAgICAgICBjYXNlIEluc3BlY3Rv
ckJhY2tlbmQuRW51bS5UaW1lbGluZS5FdmVudFR5cGUuUHJvYmVTYW1wbGU6IHsKKyAgICAgICAg
ICAgIGxldCBwcm9iZSA9IFdJLmRlYnVnZ2VyTWFuYWdlci5wcm9iZUZvcklkZW50aWZpZXIocmVj
b3JkUGF5bG9hZC5kYXRhLnByb2JlSWQpOworICAgICAgICAgICAgaWYgKHByb2JlLmJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBz
b3VyY2VDb2RlTG9jYXRpb24gPSBwcm9iZS5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsK
KwogICAgICAgICAgICAgLy8gUGFzcyB0aGUgc3RhcnRUaW1lIGFzIHRoZSBlbmRUaW1lIHNpbmNl
IHRoaXMgcmVjb3JkIHR5cGUgaGFzIG5vIGR1cmF0aW9uLgotICAgICAgICAgICAgc291cmNlQ29k
ZUxvY2F0aW9uID0gV0kuZGVidWdnZXJNYW5hZ2VyLnByb2JlRm9ySWRlbnRpZmllcihyZWNvcmRQ
YXlsb2FkLmRhdGEucHJvYmVJZCkuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAgICAg
ICAgICAgICByZXR1cm4gbmV3IFdJLlNjcmlwdFRpbWVsaW5lUmVjb3JkKFdJLlNjcmlwdFRpbWVs
aW5lUmVjb3JkLkV2ZW50VHlwZS5Qcm9iZVNhbXBsZVJlY29yZGVkLCBzdGFydFRpbWUsIHN0YXJ0
VGltZSwgY2FsbEZyYW1lcywgc291cmNlQ29kZUxvY2F0aW9uLCByZWNvcmRQYXlsb2FkLmRhdGEu
cHJvYmVJZCk7CisgICAgICAgIH0KIAogICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51
bS5UaW1lbGluZS5FdmVudFR5cGUuVGltZXJJbnN0YWxsOgogICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoaXNOYU4oZW5kVGltZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCmluZGV4IDVkYjI3MTVlYmMyMi4uOWExMTU4ZmU2NTQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0xMjcsNiAr
MTI3LDcgQEAKICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lubGluZVN3
YXRjaC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSW5wdXRQ
b3BvdmVyLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Jc3N1
ZVRyZWVFbGVtZW50LmNzcyI+CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJz
dHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRl
YmFyUGFuZWwuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xh
eWVyczNEQ29udGVudFZpZXcuY3NzIj4KQEAgLTM0OSw2ICszNTAsNyBAQAogICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iUHJvdG9jb2wvV29ya2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9D
b25zb2xlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CkBAIC0zNjksNyArMzcxLDYgQEAKICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0FwcGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CYWNrRm9yd2FyZEVudHJ5LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JveFNoYWRvdy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Ik1vZGVscy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0NQVUluc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvQ1BVVGltZWxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BV
VGltZWxpbmVSZWNvcmQuanMiPjwvc2NyaXB0PgpAQCAtNDE2LDYgKzQxNyw3IEBACiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0lzc3VlTWVzc2FnZS5qcyI+
PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9LZXlib2FyZFNob3J0Y3V0Lmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheWVyLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheW91dEluc3RydW1lbnQuanMiPjwvc2NyaXB0PgpA
QCAtNzE2LDYgKzcxOCw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0lubGluZVN3YXRjaC5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0lucHV0UG9wb3Zlci5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0lzc3VlVHJlZUVsZW1lbnQuanMiPjwvc2Ny
aXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVt
ZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJUcmVl
RGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJU
cmVlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzCmluZGV4
IDlhMjA5ZTgyODZiYi4uZjQwNjg3YmNmM2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcwpAQCAtMjUsMTA4
ICsyNSw2MyBAQAogCiBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJ
Lk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbiwge2NvbnRlbnRJ
ZGVudGlmaWVyLCBkaXNhYmxlZCwgY29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVl
fSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKHtkaXNhYmxlZCwgY29uZGl0aW9uLCBpZ25vcmVDb3Vu
dCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc291
cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV0kuU291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVyIHx8IHR5cGVvZiBjb250ZW50SWRl
bnRpZmllciA9PT0gInN0cmluZyIpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghZGlzYWJsZWQg
fHwgdHlwZW9mIGRpc2FibGVkID09PSAiYm9vbGVhbiIpOwotICAgICAgICBjb25zb2xlLmFzc2Vy
dCghY29uZGl0aW9uIHx8IHR5cGVvZiBjb25kaXRpb24gPT09ICJzdHJpbmciKTsKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoIWlnbm9yZUNvdW50IHx8ICFpc05hTihpZ25vcmVDb3VudCkpOwotICAg
ICAgICBjb25zb2xlLmFzc2VydCghYXV0b0NvbnRpbnVlIHx8IHR5cGVvZiBhdXRvQ29udGludWUg
PT09ICJib29sZWFuIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkaXNhYmxlZCB8fCB0eXBl
b2YgZGlzYWJsZWQgPT09ICJib29sZWFuIiwgZGlzYWJsZWQpOworICAgICAgICBjb25zb2xlLmFz
c2VydCghY29uZGl0aW9uIHx8IHR5cGVvZiBjb25kaXRpb24gPT09ICJzdHJpbmciLCBjb25kaXRp
b24pOworICAgICAgICBjb25zb2xlLmFzc2VydCghaWdub3JlQ291bnQgfHwgIWlzTmFOKGlnbm9y
ZUNvdW50KSwgaWdub3JlQ291bnQpOworICAgICAgICBjb25zb2xlLmFzc2VydCghYXV0b0NvbnRp
bnVlIHx8IHR5cGVvZiBhdXRvQ29udGludWUgPT09ICJib29sZWFuIiwgYXV0b0NvbnRpbnVlKTsK
IAogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIHRoaXMuX2lkID0gbnVsbDsKLSAgICAgICAg
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOworICAgICAgICAv
LyBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBDcmVhdGUg
YSBjb25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
LmNvbnN0cnVjdG9yICE9PSBXSS5CcmVha3BvaW50ICYmIHRoaXMgaW5zdGFuY2VvZiBXSS5CcmVh
a3BvaW50KTsKIAotICAgICAgICBsZXQgc291cmNlQ29kZSA9IHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbi5zb3VyY2VDb2RlOwotICAgICAgICBpZiAoc291cmNlQ29kZSkgewotICAgICAgICAgICAg
dGhpcy5fY29udGVudElkZW50aWZpZXIgPSBzb3VyY2VDb2RlLmNvbnRlbnRJZGVudGlmaWVyOwot
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVyIHx8IGNvbnRlbnRJ
ZGVudGlmaWVyID09PSB0aGlzLl9jb250ZW50SWRlbnRpZmllciwgIlRoZSBjb250ZW50IGlkZW50
aWZpZXIgZnJvbSB0aGUgc291cmNlIGNvZGUgc2hvdWxkIG1hdGNoIHRoZSBnaXZlbiB2YWx1ZS4i
KTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLl9jb250ZW50SWRlbnRpZmllciA9
IGNvbnRlbnRJZGVudGlmaWVyIHx8IG51bGw7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyIHx8IHRoaXMuX2lzU3BlY2lhbCgpLCAiVGhlcmUgc2hvdWxkIGFs
d2F5cyBiZSBhIGNvbnRlbnQgaWRlbnRpZmllciBmb3IgYSBicmVha3BvaW50LiIpOwotCi0gICAg
ICAgIHRoaXMuX3NjcmlwdElkZW50aWZpZXIgPSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2Ny
aXB0ID8gc291cmNlQ29kZS5pZCA6IG51bGw7Ci0gICAgICAgIHRoaXMuX3RhcmdldCA9IHNvdXJj
ZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VDb2RlLnRhcmdldCA6IG51bGw7CiAg
ICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMu
X2NvbmRpdGlvbiA9IGNvbmRpdGlvbiB8fCAiIjsKICAgICAgICAgdGhpcy5faWdub3JlQ291bnQg
PSBpZ25vcmVDb3VudCB8fCAwOwogICAgICAgICB0aGlzLl9hdXRvQ29udGludWUgPSBhdXRvQ29u
dGludWUgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMuX2FjdGlvbnMgPSBbXTsKLSAgICAgICAgdGhp
cy5fcmVzb2x2ZWQgPSBmYWxzZTsKLQotICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24u
YWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFu
Z2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwotICAg
ICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VD
b2RlTG9jYXRpb24uRXZlbnQuRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29k
ZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8g
SW1wb3J0IC8gRXhwb3J0CiAKLSAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKLSAgICB7Ci0gICAg
ICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBudWxsOwotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5l
dyBCcmVha3BvaW50KG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZSwganNvbi5s
aW5lTnVtYmVyIHx8IDAsIGpzb24uY29sdW1uTnVtYmVyIHx8IDApLCB7Ci0gICAgICAgICAgICAv
LyBUaGUgJ3VybCcgZmFsbGJhY2sgaXMgZm9yIHRyYW5zaXRpb25pbmcgZnJvbSBvbGRlciBmcm9u
dGVuZHMgYW5kIHNob3VsZCBiZSByZW1vdmVkLgotICAgICAgICAgICAgY29udGVudElkZW50aWZp
ZXI6IGpzb24uY29udGVudElkZW50aWZpZXIgfHwganNvbi51cmwsCi0gICAgICAgICAgICBkaXNh
YmxlZDoganNvbi5kaXNhYmxlZCwKLSAgICAgICAgICAgIGNvbmRpdGlvbjoganNvbi5jb25kaXRp
b24sCi0gICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25vcmVDb3VudCwKLSAgICAgICAg
ICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUsCi0gICAgICAgIH0pOwotICAgICAg
ICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zLm1hcCgoYWN0aW9uSlNPTikgPT4g
V0kuQnJlYWtwb2ludEFjdGlvbi5mcm9tSlNPTihhY3Rpb25KU09OLCBicmVha3BvaW50KSk7Ci0g
ICAgICAgIHJldHVybiBicmVha3BvaW50OwotICAgIH0KLQogICAgIHRvSlNPTihrZXkpCiAgICAg
ewotICAgICAgICAvLyBUaGUgaWQsIHNjcmlwdElkZW50aWZpZXIsIHRhcmdldCwgYW5kIHJlc29s
dmVkIHN0YXRlIGFyZSB0aWVkIHRvIHRoZSBjdXJyZW50IHNlc3Npb24sIHNvIGRvbid0IGluY2x1
ZGUgdGhlbSBmb3Igc2VyaWFsaXphdGlvbi4KLSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAg
ICAgICBjb250ZW50SWRlbnRpZmllcjogdGhpcy5fY29udGVudElkZW50aWZpZXIsCi0gICAgICAg
ICAgICBsaW5lTnVtYmVyOiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciwKLSAg
ICAgICAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51
bWJlciwKLSAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLl9kaXNhYmxlZCwKLSAgICAgICAgICAg
IGNvbmRpdGlvbjogdGhpcy5fY29uZGl0aW9uLAotICAgICAgICAgICAgaWdub3JlQ291bnQ6IHRo
aXMuX2lnbm9yZUNvdW50LAotICAgICAgICAgICAgYWN0aW9uczogdGhpcy5fYWN0aW9ucy5tYXAo
KGFjdGlvbikgPT4gYWN0aW9uLnRvSlNPTigpKSwKLSAgICAgICAgICAgIGF1dG9Db250aW51ZTog
dGhpcy5fYXV0b0NvbnRpbnVlLAotICAgICAgICB9OwotICAgICAgICBpZiAoa2V5ID09PSBXSS5P
YmplY3RTdG9yZS50b0pTT05TeW1ib2wpCi0gICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jl
cy5icmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyICsgIjoiICsg
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgICAgICBsZXQganNvbiA9IHt9OworICAgICAg
ICBpZiAodGhpcy5fZGlzYWJsZWQpCisgICAgICAgICAgICBqc29uLmRpc2FibGVkID0gdGhpcy5f
ZGlzYWJsZWQ7CisgICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAgICAgICBpZiAo
dGhpcy5fY29uZGl0aW9uKQorICAgICAgICAgICAgICAgIGpzb24uY29uZGl0aW9uID0gdGhpcy5f
Y29uZGl0aW9uOworICAgICAgICAgICAgaWYgKHRoaXMuX2lnbm9yZUNvdW50KQorICAgICAgICAg
ICAgICAgIGpzb24uaWdub3JlQ291bnQgPSB0aGlzLl9pZ25vcmVDb3VudDsKKyAgICAgICAgICAg
IGlmICh0aGlzLl9hY3Rpb25zLmxlbmd0aCkKKyAgICAgICAgICAgICAgICBqc29uLmFjdGlvbnMg
PSB0aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24udG9KU09OKCkpOworICAgICAg
ICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSkKKyAgICAgICAgICAgICAgICBqc29uLmF1dG9D
b250aW51ZSA9IHRoaXMuX2F1dG9Db250aW51ZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4g
anNvbjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAgIGdldCBzb3VyY2VDb2RlTG9jYXRp
b24oKSB7IHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247IH0KLSAgICBnZXQgY29udGVu
dElkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsgfQotICAgIGdl
dCBzY3JpcHRJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5fc2NyaXB0SWRlbnRpZmllcjsgfQot
ICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlzLl90YXJnZXQ7IH0KLQotICAgIGdldCBpZGVu
dGlmaWVyKCkKKyAgICBnZXQgZ2xvYmFsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9p
ZDsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNldCBpZGVudGlmaWVyKGlkKQorICAgIGdl
dCByZW1vdmFibGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOworICAg
ICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgorICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBnZXQgcmVzb2x2ZWQoKQorICAgIGdldCBlZGl0YWJsZSgp
CiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZWQ7Ci0gICAgfQotCi0gICAgc2V0
IHJlc29sdmVkKHJlc29sdmVkKQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Jlc29sdmVkID09
PSByZXNvbHZlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBjb25zb2xlLmFzc2Vy
dCghcmVzb2x2ZWQgfHwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgfHwgdGhp
cy5faXNTcGVjaWFsKCksICJCcmVha3BvaW50cyBtdXN0IGhhdmUgYSBTb3VyY2VDb2RlIHRvIGJl
IHJlc29sdmVkLiIsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gcmVzb2x2ZWQg
fHwgZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJl
YWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlKTsKKyAgICAgICAgLy8gT3ZlcnJp
ZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIAogICAgIGdldCBkaXNhYmxlZCgpCkBAIC0xNTEsNiArMTA2LDkgQEAgV0kuQnJlYWtwb2lu
dCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHNldCBjb25kaXRp
b24oY29uZGl0aW9uKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJs
ZSwgdGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBjb25kaXRpb24gPT09ICJz
dHJpbmciKTsKKwogICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9uID09PSBjb25kaXRpb24pCiAg
ICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2MSwxMSArMTE5LDE1IEBAIFdJLkJyZWFrcG9pbnQg
PSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgaWdub3JlQ291
bnQoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7
CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2lnbm9yZUNvdW50OwogICAgIH0KIAogICAgIHNldCBp
Z25vcmVDb3VudChpZ25vcmVDb3VudCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlnbm9yZUNvdW50
ID49IDAsICJJZ25vcmUgY291bnQgY2Fubm90IGJlIG5lZ2F0aXZlLiIpOwogICAgICAgICBpZiAo
aWdub3JlQ291bnQgPCAwKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTgwLDExICsxNDIsMTUg
QEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgIGdldCBhdXRvQ29udGludWUoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db250aW51ZTsK
ICAgICB9CiAKICAgICBzZXQgYXV0b0NvbnRpbnVlKGNvbnQpCiAgICAgeworICAgICAgICBjb25z
b2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICBpZiAodGhpcy5fYXV0
b0NvbnRpbnVlID09PSBjb250KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTUsMTEgKzE2
MSwxNSBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVj
dAogCiAgICAgZ2V0IGFjdGlvbnMoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7CiAgICAg
fQogCiAgICAgZ2V0IHByb2JlQWN0aW9ucygpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5m
aWx0ZXIoZnVuY3Rpb24oYWN0aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUg
PT09IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZTsKICAgICAgICAgfSk7CkBAIC0yMDgs
MjcgKzE3OCwzNCBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJ
Lk9iamVjdAogICAgIGN5Y2xlVG9OZXh0TW9kZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5k
aXNhYmxlZCkgewotICAgICAgICAgICAgLy8gV2hlbiBjeWNsaW5nLCBjbGVhciBhdXRvLWNvbnRp
bnVlIHdoZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFibGVkLgotICAgICAgICAgICAgdGhp
cy5hdXRvQ29udGludWUgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7
CisgICAgICAgICAgICAgICAgLy8gV2hlbiBjeWNsaW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdo
ZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFibGVkLgorICAgICAgICAgICAgICAgIHRoaXMu
YXV0b0NvbnRpbnVlID0gZmFsc2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHRoaXMu
ZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICh0aGlzLmF1dG9Db250aW51ZSkgewotICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9
IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMu
ZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmF1dG9Db250aW51ZSkgeworICAgICAg
ICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCkgewotICAg
ICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLmF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7CiAgICAg
fQogCi0gICAgY3JlYXRlQWN0aW9uKHR5cGUsIHByZWNlZGluZ0FjdGlvbiwgZGF0YSkKKyAgICBj
cmVhdGVBY3Rpb24odHlwZSwge2RhdGEsIHByZWNlZGluZ0FjdGlvbn0gPSB7fSkKICAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHZh
ciBuZXdBY3Rpb24gPSBuZXcgV0kuQnJlYWtwb2ludEFjdGlvbih0aGlzLCB0eXBlLCBkYXRhIHx8
IG51bGwpOwogCiAgICAgICAgIGlmICghcHJlY2VkaW5nQWN0aW9uKQpAQCAtMjQ5LDYgKzIyNiw4
IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICByZWNyZWF0ZUFjdGlvbih0eXBlLCBhY3Rpb25Ub1JlcGxhY2UpCiAgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICBsZXQgaW5k
ZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0aW9uVG9SZXBsYWNlKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKQEAg
LTI2NSw2ICsyNDQsOCBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgcmVtb3ZlQWN0aW9uKGFjdGlvbikKICAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBpbmRleCA9
IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwogICAgICAgICBjb25zb2xlLmFzc2VydChp
bmRleCAhPT0gLTEpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQpAQCAtMjgwLDYgKzI2MSw4
IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAK
ICAgICBjbGVhckFjdGlvbnModHlwZSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRo
aXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgIHRo
aXMuX2FjdGlvbnMgPSBbXTsKICAgICAgICAgZWxzZQpAQCAtMjg4LDE3ICsyNzEsNjQgQEAgV0ku
QnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
dGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25z
RGlkQ2hhbmdlKTsKICAgICB9CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCisg
ICAgcmVtb3ZlKCkKICAgICB7Ci0gICAgICAgIGNvb2tpZVsiYnJlYWtwb2ludC1jb250ZW50LWlk
ZW50aWZpZXIiXSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOwotICAgICAgICBjb29raWVbImJy
ZWFrcG9pbnQtbGluZS1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVt
YmVyOwotICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtY29sdW1uLW51bWJlciJdID0gdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5yZW1vdmFibGUsIHRoaXMpOworCisgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xh
c3NlcyBpZiBuZWVkZWQuCisgICAgfQorCisgICAgb3B0aW9uc1RvUHJvdG9jb2woKQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKKyAgICAgICAg
bGV0IHBheWxvYWQgPSB7fTsKKworICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9uKQorICAgICAg
ICAgICAgcGF5bG9hZC5jb25kaXRpb24gPSB0aGlzLl9jb25kaXRpb247CisKKyAgICAgICAgaWYg
KHRoaXMuX2FjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICBwYXlsb2FkLmFjdGlvbnMgPSB0
aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24udG9Qcm90b2NvbCgpKS5maWx0ZXIo
KGFjdGlvbikgPT4geworICAgICAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSAhPT0gV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLkxvZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgICAgICAgICBpZiAoIS9cJFx7Lio/XH0vLnRlc3QoYWN0aW9uLmRhdGEpKQor
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGxldCBs
ZXhlciA9IG5ldyBXSS5CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyOworICAgICAgICAgICAgICAg
IGxldCB0b2tlbnMgPSBsZXhlci50b2tlbml6ZShhY3Rpb24uZGF0YSk7CisgICAgICAgICAgICAg
ICAgaWYgKCF0b2tlbnMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZUxpdGVyYWwgPSB0b2tlbnMucmVkdWNlKCh0ZXh0LCB0
b2tlbikgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gV0kuQnJl
YWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuUGxhaW5UZXh0KQorICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRleHQgKyB0b2tlbi5kYXRhLmVzY2FwZUNoYXJhY3RlcnMoImBc
XCIpOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2lu
dExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuRXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0ZXh0ICsgIiR7IiArIHRva2VuLmRhdGEgKyAifSI7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAgICAgIH0sICIiKTsKKworICAgICAg
ICAgICAgICAgIGFjdGlvbi5kYXRhID0gImNvbnNvbGUubG9nKGAiICsgdGVtcGxhdGVMaXRlcmFs
ICsgImApIjsKKyAgICAgICAgICAgICAgICBhY3Rpb24udHlwZSA9IFdJLkJyZWFrcG9pbnRBY3Rp
b24uVHlwZS5FdmFsdWF0ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSkKKyAg
ICAgICAgICAgIHBheWxvYWQuYXV0b0NvbnRpbnVlID0gdGhpcy5fYXV0b0NvbnRpbnVlOworCisg
ICAgICAgIGlmICh0aGlzLl9pZ25vcmVDb3VudCkKKyAgICAgICAgICAgIHBheWxvYWQuaWdub3Jl
Q291bnQgPSB0aGlzLl9pZ25vcmVDb3VudDsKKworICAgICAgICByZXR1cm4gIWlzRW1wdHlPYmpl
Y3QocGF5bG9hZCkgPyBwYXlsb2FkIDogdW5kZWZpbmVkOwogICAgIH0KIAogICAgIC8vIFByb3Rl
Y3RlZCAoQ2FsbGVkIGJ5IEJyZWFrcG9pbnRBY3Rpb24pCiAKICAgICBicmVha3BvaW50QWN0aW9u
RGlkQ2hhbmdlKGFjdGlvbikKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRp
dGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhP
ZihhY3Rpb24pOwogICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogICAgICAg
ICBpZiAoaW5kZXggPT09IC0xKQpAQCAtMzA2LDM0ICszMzYsMTQgQEAgV0kuQnJlYWtwb2ludCA9
IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2Up
OwogICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9pc1NwZWNpYWwoKQotICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5pc0VxdWFsKG5ldyBXSS5Tb3Vy
Y2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIEluZmluaXR5KSk7Ci0gICAgfQotCi0gICAg
X3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRp
b25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOwotICAgIH0KLQotICAgIF9zb3VyY2VDb2RlTG9jYXRp
b25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25E
aWRDaGFuZ2UsIGV2ZW50LmRhdGEpOwotICAgIH0KIH07CiAKIFdJLkJyZWFrcG9pbnQuVHlwZUlk
ZW50aWZpZXIgPSAiYnJlYWtwb2ludCI7CiAKIFdJLkJyZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAg
RGlzYWJsZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNo
YW5nZSIsCi0gICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQt
c3RhdGUtZGlkLWNoYW5nZSIsCiAgICAgQ29uZGl0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1j
b25kaXRpb24tZGlkLWNoYW5nZSIsCiAgICAgSWdub3JlQ291bnREaWRDaGFuZ2U6ICJicmVha3Bv
aW50LWlnbm9yZS1jb3VudC1kaWQtY2hhbmdlIiwKICAgICBBY3Rpb25zRGlkQ2hhbmdlOiAiYnJl
YWtwb2ludC1hY3Rpb25zLWRpZC1jaGFuZ2UiLAogICAgIEF1dG9Db250aW51ZURpZENoYW5nZTog
ImJyZWFrcG9pbnQtYXV0by1jb250aW51ZS1kaWQtY2hhbmdlIiwKLSAgICBMb2NhdGlvbkRpZENo
YW5nZTogImJyZWFrcG9pbnQtbG9jYXRpb24tZGlkLWNoYW5nZSIsCi0gICAgRGlzcGxheUxvY2F0
aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1kaXNwbGF5LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9CcmVha3BvaW50QWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKaW5kZXggZDhiZTdmNWQyZThiLi4zNGZiMGEz
ZDhhYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzCkBAIC0yNyw4ICsyNyw5IEBAIFdJ
LkJyZWFrcG9pbnRBY3Rpb24gPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uCiB7CiAgICAgY29uc3Ry
dWN0b3IoYnJlYWtwb2ludCwgdHlwZSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUpLmluY2x1ZGVz
KHR5cGUpKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJ
LkJyZWFrcG9pbnQsIGJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3Qu
dmFsdWVzKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZSkuaW5jbHVkZXModHlwZSksIHR5cGUpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydCghZGF0YSB8fCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIs
IGRhdGEpOwogCiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50OwogICAgICAg
ICB0aGlzLl90eXBlID0gdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMKaW5kZXggNzk5NDU5Yjdi
NjQxLi4wNTM3ZDM2YmJiN2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzCkBAIC0yMywxNCArMjMs
MTQgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5ET01C
cmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAorV0kuRE9N
QnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiB7
CiAgICAgY29uc3RydWN0b3IoZG9tTm9kZU9ySW5mbywgdHlwZSwge2Rpc2FibGVkfSA9IHt9KQog
ICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZG9tTm9kZU9ySW5mbyBpbnN0YW5jZW9mIFdJ
LkRPTU5vZGUgfHwgdHlwZW9mIGRvbU5vZGVPckluZm8gPT09ICJvYmplY3QiLCBkb21Ob2RlT3JJ
bmZvKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5ET01CcmVha3Bv
aW50LlR5cGUpLmluY2x1ZGVzKHR5cGUpLCB0eXBlKTsKIAotICAgICAgICBzdXBlcigpOworICAg
ICAgICBzdXBlcih7ZGlzYWJsZWR9KTsKIAogICAgICAgICBpZiAoZG9tTm9kZU9ySW5mbyBpbnN0
YW5jZW9mIFdJLkRPTU5vZGUpIHsKICAgICAgICAgICAgIHRoaXMuX2RvbU5vZGVJZGVudGlmaWVy
ID0gZG9tTm9kZU9ySW5mby5pZDsKQEAgLTQ0LDE1ICs0NCwxNCBAQCBXSS5ET01CcmVha3BvaW50
ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAKICAg
ICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJs
ZWQgfHwgZmFsc2U7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgZGVzZXJp
YWxpemUoc2VyaWFsaXplZEluZm8pCisgICAgc3RhdGljIGZyb21KU09OKGpzb24pCiAgICAgewot
ICAgICAgICByZXR1cm4gbmV3IFdJLkRPTUJyZWFrcG9pbnQoc2VyaWFsaXplZEluZm8sIHNlcmlh
bGl6ZWRJbmZvLnR5cGUsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhIXNlcmlhbGl6ZWRJbmZv
LmRpc2FibGVkLAorICAgICAgICByZXR1cm4gbmV3IFdJLkRPTUJyZWFrcG9pbnQoanNvbiwganNv
bi50eXBlLCB7CisgICAgICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKICAgICAgICAg
fSk7CiAgICAgfQogCkBAIC02MiwyMSArNjEsNiBAQCBXSS5ET01CcmVha3BvaW50ID0gY2xhc3Mg
RE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgIGdldCB1cmwoKSB7IHJldHVybiB0
aGlzLl91cmw7IH0KICAgICBnZXQgcGF0aCgpIHsgcmV0dXJuIHRoaXMuX3BhdGg7IH0KIAotICAg
IGdldCBkaXNhYmxlZCgpCi0gICAgewotICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7Ci0g
ICAgfQotCi0gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQotICAgIHsKLSAgICAgICAgaWYgKHRo
aXMuX2Rpc2FibGVkID09PSBkaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAg
ICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQp
OwotICAgIH0KLQogICAgIGdldCBkb21Ob2RlSWRlbnRpZmllcigpCiAgICAgewogICAgICAgICBy
ZXR1cm4gdGhpcy5fZG9tTm9kZUlkZW50aWZpZXI7CkBAIC05Niw2ICs4MCwxMyBAQCBXSS5ET01C
cmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01CcmVha3BvaW50LkV2ZW50LkRP
TU5vZGVDaGFuZ2VkLCBkYXRhKTsKICAgICB9CiAKKyAgICByZW1vdmUoKQorICAgIHsKKyAgICAg
ICAgc3VwZXIucmVtb3ZlKCk7CisKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92
ZURPTUJyZWFrcG9pbnQodGhpcyk7CisgICAgfQorCiAgICAgc2F2ZUlkZW50aXR5VG9Db29raWUo
Y29va2llKQogICAgIHsKICAgICAgICAgY29va2llWyJkb20tYnJlYWtwb2ludC11cmwiXSA9IHRo
aXMuX3VybDsKQEAgLTEwNSwxMyArOTYsMTAgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERP
TUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRvSlNPTihrZXkpCiAgICAgewot
ICAgICAgICBsZXQganNvbiA9IHsKLSAgICAgICAgICAgIHVybDogdGhpcy5fdXJsLAotICAgICAg
ICAgICAgcGF0aDogdGhpcy5fcGF0aCwKLSAgICAgICAgICAgIHR5cGU6IHRoaXMuX3R5cGUsCi0g
ICAgICAgIH07Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKLSAgICAgICAgICAgIGpzb24u
ZGlzYWJsZWQgPSB0cnVlOworICAgICAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihrZXkpOwor
ICAgICAgICBqc29uLnVybCA9IHRoaXMuX3VybDsKKyAgICAgICAganNvbi5wYXRoID0gdGhpcy5f
cGF0aDsKKyAgICAgICAganNvbi50eXBlID0gdGhpcy5fdHlwZTsKICAgICAgICAgaWYgKGtleSA9
PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQogICAgICAgICAgICAganNvbltXSS5vYmpl
Y3RTdG9yZXMuZG9tQnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl91cmwgKyAiOiIgKyB0aGlz
Ll9wYXRoICsgIjoiICsgdGhpcy5fdHlwZTsKICAgICAgICAgcmV0dXJuIGpzb247CkBAIC0xMjYs
NSArMTE0LDQgQEAgV0kuRE9NQnJlYWtwb2ludC5UeXBlID0gewogCiBXSS5ET01CcmVha3BvaW50
LkV2ZW50ID0gewogICAgIERPTU5vZGVDaGFuZ2VkOiAiZG9tLWJyZWFrcG9pbnQtZG9tLW5vZGUt
Y2hhbmdlZCIsCi0gICAgRGlzYWJsZWRTdGF0ZUNoYW5nZWQ6ICJkb20tYnJlYWtwb2ludC1kaXNh
YmxlZC1zdGF0ZS1jaGFuZ2VkIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qcwppbmRleCBm
ZjFlNzljZmU0ZGIuLmNiNWYxYmVkODZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzCkBA
IC0yMywyOCArMjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBX
SS5PYmplY3QKK1dJLkV2ZW50QnJlYWtwb2ludCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludCBleHRl
bmRzIFdJLkJyZWFrcG9pbnQKIHsKLSAgICBjb25zdHJ1Y3Rvcih0eXBlLCB7ZXZlbnROYW1lLCBl
dmVudExpc3RlbmVyLCBkaXNhYmxlZH0gPSB7fSkKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCB7ZXZl
bnROYW1lLCBldmVudExpc3RlbmVyLCBkaXNhYmxlZCwgYWN0aW9ucywgY29uZGl0aW9uLCBpZ25v
cmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAg
ICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogRE9NRGVidWdnZXIuRXZlbnRCcmVha3Bv
aW50VHlwZXMuVGltZXIgd2FzIHJlbW92ZWQuCisgICAgICAgIGlmICh0eXBlID09PSAidGltZXIi
KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50TmFtZSkgeworICAgICAgICAgICAgY2FzZSAi
c2V0SW50ZXJ2YWwiOgorICAgICAgICAgICAgICAgIHR5cGUgPSBXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5JbnRlcnZhbDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2Fz
ZSAic2V0VGltZW91dCI6CisgICAgICAgICAgICAgICAgdHlwZSA9IFdJLkV2ZW50QnJlYWtwb2lu
dC5UeXBlLlRpbWVvdXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCFldmVudE5hbWUgfHwgdHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUsIGV2
ZW50TmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFldmVudExpc3RlbmVyIHx8IHR5cGUg
PT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLCBldmVudExpc3RlbmVyKTsKKworICAgICAgICBz
dXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQsIGF1dG9Db250
aW51ZX0pOwogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgICAgICB0aGlzLl9ldmVu
dE5hbWUgPSBldmVudE5hbWUgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lciA9
IGV2ZW50TGlzdGVuZXIgfHwgbnVsbDsKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxl
ZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlh
bGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0g
ICAgICAgIHJldHVybiBuZXcgV0kuRXZlbnRCcmVha3BvaW50KHNlcmlhbGl6ZWRJbmZvLnR5cGUs
IHsKLSAgICAgICAgICAgIGV2ZW50TmFtZTogc2VyaWFsaXplZEluZm8uZXZlbnROYW1lLAotICAg
ICAgICAgICAgZGlzYWJsZWQ6ICEhc2VyaWFsaXplZEluZm8uZGlzYWJsZWQsCisgICAgICAgIGxl
dCBicmVha3BvaW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChqc29uLnR5cGUsIHsKKyAgICAg
ICAgICAgIGV2ZW50TmFtZToganNvbi5ldmVudE5hbWUsCisgICAgICAgICAgICBkaXNhYmxlZDog
anNvbi5kaXNhYmxlZCwKKyAgICAgICAgICAgIGNvbmRpdGlvbjoganNvbi5jb25kaXRpb24sCisg
ICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25vcmVDb3VudCwKKyAgICAgICAgICAgIGF1
dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUsCiAgICAgICAgIH0pOworICAgICAgICBicmVh
a3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zPy5tYXAoKGFjdGlvbkpTT04pID0+IFdJLkJy
ZWFrcG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNPTiwgYnJlYWtwb2ludCkpIHx8IFtdOwor
ICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTUz
LDE5ICs3MiwzNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICBnZXQgZXZlbnROYW1lKCkgeyByZXR1cm4gdGhpcy5fZXZl
bnROYW1lOyB9CiAgICAgZ2V0IGV2ZW50TGlzdGVuZXIoKSB7IHJldHVybiB0aGlzLl9ldmVudExp
c3RlbmVyOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQorICAgIGdldCBnbG9iYWwoKQogICAgIHsK
LSAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOworICAgICAgICBzd2l0Y2ggKHRoaXMpIHsK
KyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGlt
ZW91dHNCcmVha3BvaW50OgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKwor
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc2V0IGRpc2FibGVkKGRpc2FibGVk
KQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQg
PT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBDT01QQVRJQklM
SVRZIChpT1MgMTQpOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIgZGlkIG5vdCBo
YXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAgICAvLyBDT01QQVRJQklMSVRZ
IChpT1MgMTQpOiBET01EZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBoYXZlIGFu
ICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAgICByZXR1cm4gdGhpcy5fZXZlbnRMaXN0
ZW5lciA/IEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9NLnNldEJyZWFrcG9pbnRGb3JF
dmVudExpc3RlbmVyIiwgIm9wdGlvbnMiKSA6IEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgi
RE9NRGVidWdnZXIuc2V0RXZlbnRCcmVha3BvaW50IiwgIm9wdGlvbnMiKTsKKyAgICB9CiAKLSAg
ICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKKyAgICByZW1vdmUoKQorICAgIHsKKyAg
ICAgICAgc3VwZXIucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkKTsKKyAg
ICAgICAgaWYgKHRoaXMuX2V2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICBXSS5kb21NYW5hZ2Vy
LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKHRoaXMuX2V2ZW50TGlzdGVuZXIpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZl
bnRCcmVha3BvaW50KHRoaXMpOwogICAgIH0KIAogICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNv
b2tpZSkKQEAgLTc1LDE5ICsxMDksMTQgQEAgV0kuRXZlbnRCcmVha3BvaW50ID0gY2xhc3MgRXZl
bnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBjb29raWVbImV2ZW50
LWJyZWFrcG9pbnQtZXZlbnQtbmFtZSJdID0gdGhpcy5fZXZlbnROYW1lOwogICAgICAgICBpZiAo
dGhpcy5fZXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAgIGNvb2tpZVsiZXZlbnQtYnJlYWtwb2lu
dC1ldmVudC1saXN0ZW5lciJdID0gdGhpcy5fZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQ7
Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKLSAgICAgICAgICAgIGNvb2tpZVsiZXZlbnQt
YnJlYWtwb2ludC1kaXNhYmxlZCJdID0gdGhpcy5fZGlzYWJsZWQ7CiAgICAgfQogCiAgICAgdG9K
U09OKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBqc29uID0gewotICAgICAgICAgICAgdHlwZTog
dGhpcy5fdHlwZSwKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04o
a2V5KTsKKyAgICAgICAganNvbi50eXBlID0gdGhpcy5fdHlwZTsKICAgICAgICAgaWYgKHRoaXMu
X2V2ZW50TmFtZSkKICAgICAgICAgICAgIGpzb24uZXZlbnROYW1lID0gdGhpcy5fZXZlbnROYW1l
OwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0gICAgICAgICAgICBqc29uLmRpc2FibGVk
ID0gdHJ1ZTsKICAgICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9s
KQogICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50cy5rZXlQ
YXRoXSA9IHRoaXMuX3R5cGUgKyAodGhpcy5fZXZlbnROYW1lID8gIjoiICsgdGhpcy5fZXZlbnRO
YW1lIDogIiIpOwogICAgICAgICByZXR1cm4ganNvbjsKQEAgLTk5LDExICsxMjgsNCBAQCBXSS5F
dmVudEJyZWFrcG9pbnQuVHlwZSA9IHsKICAgICBJbnRlcnZhbDogImludGVydmFsIiwKICAgICBM
aXN0ZW5lcjogImxpc3RlbmVyIiwKICAgICBUaW1lb3V0OiAidGltZW91dCIsCi0KLSAgICAvLyBD
T01QQVRJQklMSVRZIChpT1MgMTMpOiBET01EZWJ1Z2dlci5FdmVudEJyZWFrcG9pbnRUeXBlcy5U
aW1lciB3YXMgcmVtb3ZlZC4KLSAgICBUaW1lcjogInRpbWVyIiwKLX07Ci0KLVdJLkV2ZW50QnJl
YWtwb2ludC5FdmVudCA9IHsKLSAgICBEaXNhYmxlZFN0YXRlQ2hhbmdlZDogImV2ZW50LWJyZWFr
cG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFTY3JpcHRC
cmVha3BvaW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjFm
MTE5Nzg5NTZmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzCkBAIC0wLDAgKzEsMTk1IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgPSBjbGFzcyBKYXZh
U2NyaXB0QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKK3sKKyAgICBjb25zdHJ1Y3Rv
cihzb3VyY2VDb2RlTG9jYXRpb24sIHtjb250ZW50SWRlbnRpZmllciwgZGlzYWJsZWQsIGNvbmRp
dGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0gPSB7fSkKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNvdXJjZUNvZGVMb2NhdGlvbiBpbnN0YW5jZW9mIFdJLlNv
dXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50SWRlbnRp
ZmllciB8fCB0eXBlb2YgY29udGVudElkZW50aWZpZXIgPT09ICJzdHJpbmciKTsKKworICAgICAg
ICBzdXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQsIGF1dG9D
b250aW51ZX0pOworCisgICAgICAgIHRoaXMuX2lkID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc291
cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOworCisgICAgICAgIGxldCBzb3Vy
Y2VDb2RlID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGU7CisgICAgICAgIGlm
IChzb3VyY2VDb2RlKSB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50SWRlbnRpZmllciA9IHNv
dXJjZUNvZGUuY29udGVudElkZW50aWZpZXI7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCgh
Y29udGVudElkZW50aWZpZXIgfHwgY29udGVudElkZW50aWZpZXIgPT09IHRoaXMuX2NvbnRlbnRJ
ZGVudGlmaWVyLCAiVGhlIGNvbnRlbnQgaWRlbnRpZmllciBmcm9tIHRoZSBzb3VyY2UgY29kZSBz
aG91bGQgbWF0Y2ggdGhlIGdpdmVuIHZhbHVlLiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyID0gY29udGVudElkZW50aWZpZXIgfHwgbnVsbDsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29udGVudElkZW50aWZpZXIgfHwgdGhpcy5f
aXNTcGVjaWFsKCksICJUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgY29udGVudCBpZGVudGlmaWVy
IGZvciBhIGJyZWFrcG9pbnQuIik7CisKKyAgICAgICAgdGhpcy5fc2NyaXB0SWRlbnRpZmllciA9
IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VDb2RlLmlkIDogbnVsbDsK
KyAgICAgICAgdGhpcy5fdGFyZ2V0ID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/
IHNvdXJjZUNvZGUudGFyZ2V0IDogbnVsbDsKKyAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxz
ZTsKKworICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihX
SS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQu
RGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxv
Y2F0aW9uQ2hhbmdlZCwgdGhpcyk7CisgICAgfQorCisgICAgLy8gSW1wb3J0IC8gRXhwb3J0CisK
KyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKKyAgICB7CisgICAgICAgIGNvbnN0IHNvdXJjZUNv
ZGUgPSBudWxsOworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludChuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKHNvdXJjZUNvZGUsIGpzb24ubGluZU51
bWJlciB8fCAwLCBqc29uLmNvbHVtbk51bWJlciB8fCAwKSwgeworICAgICAgICAgICAgLy8gVGhl
ICd1cmwnIGZhbGxiYWNrIGlzIGZvciB0cmFuc2l0aW9uaW5nIGZyb20gb2xkZXIgZnJvbnRlbmRz
IGFuZCBzaG91bGQgYmUgcmVtb3ZlZC4KKyAgICAgICAgICAgIGNvbnRlbnRJZGVudGlmaWVyOiBq
c29uLmNvbnRlbnRJZGVudGlmaWVyIHx8IGpzb24udXJsLAorICAgICAgICAgICAgZGlzYWJsZWQ6
IGpzb24uZGlzYWJsZWQsCisgICAgICAgICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAor
ICAgICAgICAgICAgaWdub3JlQ291bnQ6IGpzb24uaWdub3JlQ291bnQsCisgICAgICAgICAgICBh
dXRvQ29udGludWU6IGpzb24uYXV0b0NvbnRpbnVlLAorICAgICAgICB9KTsKKyAgICAgICAgYnJl
YWtwb2ludC5fYWN0aW9ucyA9IGpzb24uYWN0aW9ucz8ubWFwKChhY3Rpb25KU09OKSA9PiBXSS5C
cmVha3BvaW50QWN0aW9uLmZyb21KU09OKGFjdGlvbkpTT04sIGJyZWFrcG9pbnQpKSB8fCBbXTsK
KyAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQ7CisgICAgfQorCisgICAgdG9KU09OKGtleSkKKyAg
ICB7CisgICAgICAgIC8vIFRoZSBpZCwgc2NyaXB0SWRlbnRpZmllciwgdGFyZ2V0LCBhbmQgcmVz
b2x2ZWQgc3RhdGUgYXJlIHRpZWQgdG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiwgc28gZG9uJ3QgaW5j
bHVkZSB0aGVtIGZvciBzZXJpYWxpemF0aW9uLgorICAgICAgICBsZXQganNvbiA9IHN1cGVyLnRv
SlNPTihrZXkpOworICAgICAgICBqc29uLmNvbnRlbnRJZGVudGlmaWVyID0gdGhpcy5fY29udGVu
dElkZW50aWZpZXI7CisgICAgICAgIGpzb24ubGluZU51bWJlciA9IHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICBqc29uLmNvbHVtbk51bWJlciA9IHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIGlmIChrZXkgPT09IFdJLk9i
amVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKKyAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVz
LmJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhpcy5fY29udGVudElkZW50aWZpZXIgKyAiOiIgKyB0
aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciArICI6IiArIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7CisgICAgICAgIHJldHVybiBqc29uOworICAgIH0KKwor
ICAgIC8vIFB1YmxpYworCisgICAgZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpIHsgcmV0dXJuIHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbjsgfQorICAgIGdldCBjb250ZW50SWRlbnRpZmllcigpIHsg
cmV0dXJuIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOyB9CisgICAgZ2V0IHNjcmlwdElkZW50aWZp
ZXIoKSB7IHJldHVybiB0aGlzLl9zY3JpcHRJZGVudGlmaWVyOyB9CisgICAgZ2V0IHRhcmdldCgp
IHsgcmV0dXJuIHRoaXMuX3RhcmdldDsgfQorCisgICAgZ2V0IGdsb2JhbCgpCisgICAgeworICAg
ICAgICBzd2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVi
dWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5h
Z2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdn
ZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAg
ICBnZXQgcmVtb3ZhYmxlKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAg
ICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50Ogor
ICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoK
KyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtw
b2ludDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIH0KKworICAgIGdldCBlZGl0YWJsZSgpCisgICAgeworICAgICAgICBz
d2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJT
dGF0ZW1lbnRzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxs
RXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLnVu
Y2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5h
Z2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBnZXQg
aWRlbnRpZmllcigpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5faWQ7CisgICAgfQorCisg
ICAgc2V0IGlkZW50aWZpZXIoaWQpCisgICAgeworICAgICAgICB0aGlzLl9pZCA9IGlkIHx8IG51
bGw7CisgICAgfQorCisgICAgZ2V0IHJlc29sdmVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0
aGlzLl9yZXNvbHZlZDsKKyAgICB9CisKKyAgICBzZXQgcmVzb2x2ZWQocmVzb2x2ZWQpCisgICAg
eworICAgICAgICBpZiAodGhpcy5fcmVzb2x2ZWQgPT09IHJlc29sdmVkKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFyZXNvbHZlZCB8fCB0aGlzLl9zb3Vy
Y2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSB8fCB0aGlzLl9pc1NwZWNpYWwoKSwgIkJyZWFrcG9p
bnRzIG11c3QgaGF2ZSBhIFNvdXJjZUNvZGUgdG8gYmUgcmVzb2x2ZWQuIiwgdGhpcyk7CisKKyAg
ICAgICAgdGhpcy5fcmVzb2x2ZWQgPSByZXNvbHZlZCB8fCBmYWxzZTsKKworICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5S
ZXNvbHZlZFN0YXRlRGlkQ2hhbmdlKTsKKyAgICB9CisKKyAgICByZW1vdmUoKQorICAgIHsKKyAg
ICAgICAgc3VwZXIucmVtb3ZlKCk7CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92
ZUJyZWFrcG9pbnQodGhpcyk7CisgICAgfQorCisgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29v
a2llKQorICAgIHsKKyAgICAgICAgY29va2llWyJqYXZhc2NyaXB0LWJyZWFrcG9pbnQtY29udGVu
dC1pZGVudGlmaWVyIl0gPSB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAgY29va2ll
WyJqYXZhc2NyaXB0LWJyZWFrcG9pbnQtbGluZS1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVM
b2NhdGlvbi5saW5lTnVtYmVyOworICAgICAgICBjb29raWVbImphdmFzY3JpcHQtYnJlYWtwb2lu
dC1jb2x1bW4tbnVtYmVyIl0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVy
OworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9pc1NwZWNpYWwoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5pc0VxdWFsKG5ldyBXSS5Tb3Vy
Y2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIEluZmluaXR5KSk7CisgICAgfQorCisgICAg
X3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2
ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKKyAgICB9CisKKyAgICBfc291cmNl
Q29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2
ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgZXZlbnQuZGF0YSk7CisgICAgfQorfTsKKwor
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiamF2YXNjcmlwdC1icmVh
a3BvaW50IjsKKworV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQgPSB7CisgICAgUmVzb2x2
ZWRTdGF0ZURpZENoYW5nZTogImphdmFzY3JpcHQtYnJlYWtwb2ludC1yZXNvbHZlZC1zdGF0ZS1k
aWQtY2hhbmdlIiwKKyAgICBMb2NhdGlvbkRpZENoYW5nZTogImphdmFzY3JpcHQtYnJlYWtwb2lu
dC1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKKyAgICBEaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2U6ICJq
YXZhc2NyaXB0LWJyZWFrcG9pbnQtZGlzcGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKK307CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
YmVTZXQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJv
YmVTZXQuanMKaW5kZXggYTUxM2NlMzE4YTZmLi45YjYyN2U1OTg4OTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMK
QEAgLTQyLDcgKzQyLDcgQEAgV0kuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZl
bnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlz
KTsKICAgICAgICAgV0kuUHJvYmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1w
bGVBZGRlZCwgdGhpcy5fc2FtcGxlQ29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURp
ZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOwor
ICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFr
cG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQdWJs
aWMKQEAgLTY4LDcgKzY4LDcgQEAgV0kuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgY3JlYXRlUHJvYmUoZXhwcmVzc2lvbikKICAgICB7Ci0gICAgICAg
IHRoaXMuYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlBy
b2JlLCBudWxsLCBleHByZXNzaW9uKTsKKyAgICAgICAgdGhpcy5icmVha3BvaW50LmNyZWF0ZUFj
dGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIHtkYXRhOiBleHByZXNzaW9ufSk7
CiAgICAgfQogCiAgICAgYWRkUHJvYmUocHJvYmUpCkBAIC0xMDEsNyArMTAxLDcgQEAgV0kuUHJv
YmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIFdJLkZy
YW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hh
bmdlLCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0kuUHJvYmUu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fc2Ft
cGxlQ29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5yZW1vdmVFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZl
ZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtw
b2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxC
cmVha3BvaW50LmpzCmluZGV4IDQ3ZWVmNjRlM2RjZC4uZjViYzk1ZWQyYTgwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2lu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJM
QnJlYWtwb2ludC5qcwpAQCAtMjMsMjYgKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9p
bnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3Bv
aW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNvbnN0cnVjdG9yKHR5cGUsIHVybCwg
e2Rpc2FibGVkfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZh
bHVlcyhXSS5VUkxCcmVha3BvaW50LlR5cGUpLmluY2x1ZGVzKHR5cGUpLCB0eXBlKTsKICAgICAg
ICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHVybCA9PT0gInN0cmluZyIsIHVybCk7CiAKLSAgICAg
ICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkfSk7CiAKICAgICAgICAgdGhpcy5f
dHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuX3VybCA9IHVybDsKLSAgICAgICAgdGhpcy5fZGlz
YWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAg
IHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0aWMgZnJvbUpTT04o
anNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuVVJMQnJlYWtwb2ludChzZXJpYWxp
emVkSW5mby50eXBlLCBzZXJpYWxpemVkSW5mby51cmwsIHsKLSAgICAgICAgICAgIGRpc2FibGVk
OiAhIXNlcmlhbGl6ZWRJbmZvLmRpc2FibGVkLAorICAgICAgICByZXR1cm4gbmV3IFdJLlVSTEJy
ZWFrcG9pbnQoanNvbi50eXBlLCBqc29uLnVybCwgeworICAgICAgICAgICAgZGlzYWJsZWQ6IGpz
b24uZGlzYWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNTEsMTkgKzUwLDE2IEBAIFdJ
LlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAg
ICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CiAgICAgZ2V0IHVybCgpIHsgcmV0
dXJuIHRoaXMuX3VybDsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkKKyAgICBnZXQgZ2xvYmFsKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICAgICAgcmV0dXJuIHRo
aXMgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQ7CiAgICAg
fQogCi0gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQorICAgIHJlbW92ZSgpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBzdXBlci5yZW1vdmUoKTsKIAotICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRp
c2FibGVkOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLlVSTEJy
ZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQpOworICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtwb2ludCh0aGlzKTsKICAgICB9CiAKICAgICBzYXZl
SWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCkBAIC03NCwyMiArNzAsMTUgQEAgV0kuVVJMQnJlYWtw
b2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHRvSlNP
TihrZXkpCiAgICAgewotICAgICAgICBsZXQganNvbiA9IHsKLSAgICAgICAgICAgIHR5cGU6IHRo
aXMuX3R5cGUsCi0gICAgICAgICAgICB1cmw6IHRoaXMuX3VybCwKLSAgICAgICAgfTsKLSAgICAg
ICAgaWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9IHRydWU7
CisgICAgICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpzb24udHlw
ZSA9IHRoaXMuX3R5cGU7CisgICAgICAgIGpzb24udXJsID0gdGhpcy5fdXJsOwogICAgICAgICBp
ZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCiAgICAgICAgICAgICBqc29u
W1dJLm9iamVjdFN0b3Jlcy51cmxCcmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX3R5cGUgKyAi
OiIgKyB0aGlzLl91cmw7CiAgICAgICAgIHJldHVybiBqc29uOwogICAgIH0KIH07CiAKLVdJLlVS
TEJyZWFrcG9pbnQuRXZlbnQgPSB7Ci0gICAgRGlzYWJsZWRTdGF0ZUNoYW5nZWQ6ICJ1cmwtYnJl
YWtwb2ludC1kaXNhYmxlZC1zdGF0ZS1jaGFuZ2VkIiwKLX07Ci0KIFdJLlVSTEJyZWFrcG9pbnQu
VHlwZSA9IHsKICAgICBUZXh0OiAidGV4dCIsCiAgICAgUmVndWxhckV4cHJlc3Npb246ICJyZWdl
eCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKaW5k
ZXggMWZhOWM5ZTRiODVkLi5lZWRhOGViMTM1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgIDxzY3Jp
cHQgc3JjPSJQcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iUHJvdG9jb2wvV29ya2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogCisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJNb2RlbHMvQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9Db25zb2xlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMjYsNyArMTI3LDYgQEAKICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0FuaW1hdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9BbmltYXRpb25Db2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0JveFNoYWRvdy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQ
VUluc3RydW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGlt
ZWxpbmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmVS
ZWNvcmQuanMiPjwvc2NyaXB0PgpAQCAtMTY5LDYgKzE2OSw3IEBACiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0lzc3VlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXllci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9MYXlvdXRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9p
bnRBY3Rpb25WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKaW5kZXggMDNmNmM2OTcxYWEyLi42MWNiMDBhMzJh
MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCkBAIC0xMTUsNyArMTE1LDcg
QEAgV0kuQnJlYWtwb2ludEFjdGlvblZpZXcgPSBjbGFzcyBCcmVha3BvaW50QWN0aW9uVmlldyBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNrZWQoZXZlbnQp
CiAgICAgewotICAgICAgICB2YXIgbmV3QWN0aW9uID0gdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQu
Y3JlYXRlQWN0aW9uKHRoaXMuX2FjdGlvbi50eXBlLCB0aGlzLl9hY3Rpb24pOworICAgICAgICB2
YXIgbmV3QWN0aW9uID0gdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKHRoaXMu
X2FjdGlvbi50eXBlLCB7cHJlY2VlZGluZ0FjdGlvbjogdGhpcy5fYWN0aW9ufSk7CiAgICAgICAg
IHRoaXMuX2RlbGVnYXRlLmJyZWFrcG9pbnRBY3Rpb25WaWV3QXBwZW5kQWN0aW9uVmlldyh0aGlz
LCBuZXdBY3Rpb24pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3MKaW5kZXggMDVhYzVmZGZlZmE4Li5jMzRlMjUzMTM0NWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludFRyZWVFbGVtZW50LmNzcwpAQCAtMzQsMTUgKzM0LDYgQEAKIAogICAgIGZpbGw6IHZhcigt
LWJyZWFrcG9pbnQtY29sb3IpOwogICAgIHN0cm9rZTogaHNsYSgwLCAwJSwgMTAlLCAwLjMpOwot
ICAgIGZpbHRlcjogZ3JheXNjYWxlKCk7Ci19Ci0KLS5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+
IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQgewotICAgIGZpbHRlcjogbm9uZTsKLX0KLQotYm9keTpu
b3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxp
bmU6Zm9jdXMtd2l0aGluIC5pdGVtLmJyZWFrcG9pbnQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0
dXMtaW1hZ2UucmVzb2x2ZWQgewotICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3Vu
ZC1jb2xvcik7CiB9CiAKIC5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2Uu
YXV0by1jb250aW51ZTo6YWZ0ZXIgewpAQCAtNTksODAgKzUwLDEyIEBAIGJvZHk6bm90KC53aW5k
b3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3Vz
LXdpdGhpbiAuCiAgICAgZmlsbDogdmFyKC0tYnJlYWtwb2ludC1jb2xvci1kaXNhYmxlZCk7CiB9
CiAKLS5pdGVtLmJyZWFrcG9pbnQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbiB7Ci0gICAg
Zm9udC1zdHlsZTogaXRhbGljOwotfQotCi0uYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQt
aWNvbiAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Rl
YnVnZ2VyU3RhdGVtZW50LWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24g
Lmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRp
b24tbGlnaHQpOwotfQotCi0uYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiAuaWNvbiB7Ci0gICAg
Y29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlvbi1saWdodCk7Ci19
Ci0KLS5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsKLSAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjTWljcm90YXNrLWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9p
bnQtcGF1c2VkLWljb24gLmljb24geworLml0ZW0uYnJlYWtwb2ludC5wYXVzZWQgLmljb24gewog
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNQYXVzZWRCcmVha3BvaW50
LWxpZ2h0KTsKIH0KIAotLyogV2hlbiBhbmltYXRpbmcgYSBsYXllciBvbiB0b3Agb2YgYSB0cmVl
IGVsZW1lbnQncyBpY29uLCBtb3ZlIHRoZSBtYWluCi1pY29uIHRvIHRoZSBpY29uIGVsZW1lbnQn
cyBiYWNrZ3JvdW5kIHNvIGFuaW1hdGlvbnMgYXJlIGxheWVyZWQgb24gdG9wLiAqLwotLmJyZWFr
cG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gewotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWxpZ2h0KTsKLSAgICBjb250ZW50
OiAnJzsKLX0KLQotLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gPiBzcGFuIHsK
LSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAg
IGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotCi0gICAgYm9yZGVyLXJhZGl1czogNTAlOwotICAg
IHRyYW5zZm9ybTogc2NhbGUoMCk7Ci0gICAgdHJhbnNpdGlvbjogbm9uZTsKLSAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBoc2woMjE2LCAzMCUsIDQyJSk7Ci19Ci0KLS5kYXRhLXVwZGF0ZWQuYnJlYWtw
b2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4gewotICAgIGJvcmRlci1yYWRpdXM6
IDA7Ci0gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjg1KTsKLSAgICB0cmFuc2l0aW9uOiBhbGwgLjRz
IGVhc2Utb3V0OwotICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMjE2LCAzMCUsIDQyJSwgMC4x
KTsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5icmVh
a3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1pY29uIC5pY29uIHsKLSAgICAgICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVtZW50LWRhcmspOwotICAg
IH0KLSAgICAKLSAgICAuYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNvbiB7Ci0gICAgICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tZGFyayk7Ci0g
ICAgfQotCi0gICAgLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24gewotICAgICAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWRhcmspOwotICAg
IH0KLQotICAgIC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsKLSAgICAgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1kYXJrKTsKLSAgICB9
Ci0KLSAgICAuYnJlYWtwb2ludC1wYXVzZWQtaWNvbiAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtw
b2ludC5wYXVzZWQgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJ
Y29ucy5zdmcjUGF1c2VkQnJlYWtwb2ludC1kYXJrKTsKICAgICB9Ci0KLSAgICAuYnJlYWtwb2lu
dC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiB7Ci0gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRhcmspOwotICAgIH0KLSAgICAK
LX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJl
ZUVsZW1lbnQuanMKaW5kZXggMjYzZjA3YzI4ZTdmLi5jZjJlMDZlZThmNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVl
RWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTI1LDI2ICsyNSwyNiBAQAogCiBXSS5CcmVh
a3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xh
c3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NO
YW1lcywgdGl0bGUsIHN1YnRpdGxlfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQpOwogCi0gICAgICAgIGlmICgh
Y2xhc3NOYW1lKQotICAgICAgICAgICAgY2xhc3NOYW1lID0gV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICBpZiAoIUFycmF5Lmlz
QXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gW107CisgICAgICAg
IGNsYXNzTmFtZXMucHVzaCgiYnJlYWtwb2ludCIpOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxl
ID0gbnVsbDsKLSAgICAgICAgc3VwZXIoWyJicmVha3BvaW50IiwgY2xhc3NOYW1lXSwgdGl0bGUs
IHN1YnRpdGxlLCBicmVha3BvaW50KTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUs
IHN1YnRpdGxlLCBicmVha3BvaW50KTsKKworICAgICAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBu
b3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBDcmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBp
bnN0ZWFkLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXSS5C
cmVha3BvaW50VHJlZUVsZW1lbnQgJiYgdGhpcyBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVl
RWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CiAgICAg
ICAgIHRoaXMuX3Byb2JlU2V0ID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lclNldCA9
IG5ldyBXSS5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJCcmVha3BvaW50VHJlZUVsZW1lbnQgbGlz
dGVuZXJzIik7Ci0gICAgICAgIGlmICghdGl0bGUpCi0gICAgICAgICAgICB0aGlzLl9saXN0ZW5l
clNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlk
Q2hhbmdlLCB0aGlzLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOwotICAgICAgICB0aGlz
Ll9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMu
X2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0
b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMpOwotICAgICAgICB0aGlzLl9s
aXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LlJlc29s
dmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMuX2xp
c3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVidWdnZXJNYW5hZ2Vy
LkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsK
KyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwgV0kuQnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7Cisg
ICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9p
bnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CisgICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy51cGRh
dGVTdGF0dXMpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihXSS5kZWJ1Z2dl
ck1hbmFnZXIsIFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVkLCB0aGlzLl9w
cm9iZVNldEFkZGVkKTsKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVi
dWdnZXJNYW5hZ2VyLCBXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB0
aGlzLl9wcm9iZVNldFJlbW92ZWQpOwogCkBAIC01NSw4ICs1NSw4IEBAIFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVy
YWxUcmVlRWxlCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuc3RhdHVz
LCAiY2xpY2siLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKIAogICAgICAgICBp
ZiAoIXRpdGxlKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVzKCk7Ci0gICAgICAgIHRo
aXMuX3VwZGF0ZVN0YXR1cygpOworICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRsZXMoKTsKKyAg
ICAgICAgdGhpcy51cGRhdGVTdGF0dXMoKTsKIAogICAgICAgICB0aGlzLl9pY29uQW5pbWF0aW9u
TGF5ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgICB0
aGlzLmljb25FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb25BbmltYXRpb25MYXllckVsZW1l
bnQpOwpAQCAtNzAsMTEgKzcwLDYgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3Mg
QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAg
cmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7CiAgICAgfQogCi0gICAgZ2V0IGZpbHRlcmFibGVEYXRh
KCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMuYnJlYWtwb2ludC5jb250ZW50
SWRlbnRpZmllcl19OwotICAgIH0KLQogICAgIG9uZGVsZXRlKCkKICAgICB7CiAgICAgICAgIC8v
IFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxsIHJlbW92ZSB0
aGlzCkBAIC04Miw4ICs3Nyw4IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJy
ZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgICAgIC8v
IHdpdGhpbiB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcuIFRleHRFZGl0
b3IpLgogICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0
cnVlOwogCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3Zh
YmxlKHRoaXMuX2JyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlQnJlYWtwb2ludCh0aGlzLl9icmVha3BvaW50KTsKKyAgICAgICAgaWYgKHRoaXMuX2Jy
ZWFrcG9pbnQucmVtb3ZhYmxlKSB7CisgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50LnJlbW92
ZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAtMTM0LDQxICsx
MjksMjcgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVF
bGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgc3VwZXIucG9wdWxhdGVD
b250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpOwogICAgIH0KIAotICAgIC8vIFByaXZhdGUK
KyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF91cGRhdGVUaXRsZXMoKQotICAgIHsKLSAgICAgICAg
dmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0
aW9uOworICAgIGdldCBsaXN0ZW5lclNldCgpIHsgcmV0dXJuIHRoaXMuX2xpc3RlbmVyU2V0OyB9
CiAKLSAgICAgICAgdmFyIGRpc3BsYXlMaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRp
c3BsYXlMaW5lTnVtYmVyOwotICAgICAgICB2YXIgZGlzcGxheUNvbHVtbk51bWJlciA9IHNvdXJj
ZUNvZGVMb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOwotICAgICAgICBpZiAoZGlzcGxheUNv
bHVtbk51bWJlciA+IDApCi0gICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5n
KCJMaW5lICVkOiVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSwgZGlzcGxheUNvbHVt
bk51bWJlciArIDEpOyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJz
IGFyZSAxLWJhc2VkLgotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9
IFdJLlVJU3RyaW5nKCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSk7IC8v
IFRoZSB1c2VyIHZpc2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC4KLQotICAgICAgICBpZiAo
c291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKLSAgICAgICAgICAgIHRo
aXMuc3VidGl0bGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkTG9jYXRpb25TdHJpbmco
KTsKLQotICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5oYXNGb3JtYXR0ZWRMb2Nh
dGlvbigpKQotICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5h
ZGQoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05h
bWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVt
ZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExv
Y2F0aW9uU3R5bGVDbGFzc05hbWUpOwotCi0gICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlz
Lm1haW5UaXRsZSArICIgXHUyMDE0ICIgKyBXSS5VSVN0cmluZygib3JpZ2luYWxseSAlcyIpLmZv
cm1hdChzb3VyY2VDb2RlTG9jYXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKLSAgICAg
ICAgfQotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQorICAgIHVwZGF0ZVN0YXR1cygpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQogICAgICAgICAgICAgcmV0dXJuOwogCiAg
ICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJlYWtwb2ludC5k
aXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVDbGFzc05hbWUsIHRo
aXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NM
aXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0
eWxlQ2xhc3NOYW1lLCB0aGlzLl9icmVha3BvaW50LnJlc29sdmVkICYmIFdJLmRlYnVnZ2VyTWFu
YWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludC5l
ZGl0YWJsZSkKKyAgICAgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVDbGFzc05hbWUs
IHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKICAgICB9CiAKKyAgICB1cGRhdGVUaXRs
ZXMoKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRl
ZC4KKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKICAgICBfYWRkUHJvYmVTZXQocHJvYmVTZXQp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdJLlBy
b2JlU2V0KTsKQEAgLTIzMCwxNyArMjExLDYgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0g
Y2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAg
ICAgICAgfSwgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRBbmltYXRp
b25EdXJhdGlvbik7CiAgICAgfQogCi0gICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZShl
dmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gdGhp
cy5fYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQgaGFzIGEgbmV3IGRp
c3BsYXkgU291cmNlQ29kZS4gVGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMsIGFuZCBvbmRldGFj
aCgpIHdpbGwgY2xlYXIgbGlzdGVuZXJzLgotICAgICAgICBpZiAoZXZlbnQuZGF0YS5vbGREaXNw
bGF5U291cmNlQ29kZSA9PT0gdGhpcy5fYnJlYWtwb2ludC5kaXNwbGF5U291cmNlQ29kZSkKLSAg
ICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsKLSAgICB9
Ci0KICAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50KQogICAgIHsKICAgICAg
ICAgLy8gVG8gcHJldmVudCB0aGUgdHJlZSBlbGVtZW50IGZyb20gc2VsZWN0aW5nLgpAQCAtMjUz
LDEyICsyMjMsOSBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgIH0KIH07CiAKLVdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNzTmFtZSA9ICJicmVh
a3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0
dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwotV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSA9ICJyZXNv
bHZlZCI7CiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVT
dHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRpbnVlIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQiOwotV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05hbWUgPSAiZm9y
bWF0dGVkLWxvY2F0aW9uIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9iZURhdGFVcGRh
dGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11cGRhdGVkIjsKIAogV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50LlByb2JlRGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbiA9IDQwMDsgLy8gbWlsbGlz
ZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDc1Y2M3ZDQ2YTZh
OC4uNTdjM2M0MWJmNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcwpAQCAt
MTA3LDYgKzEwNywxNCBAQCBXSS5DYWxsRnJhbWVUcmVlRWxlbWVudCA9IGNsYXNzIENhbGxGcmFt
ZVRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZQogICAgICAgICB0aGlzLl91
cGRhdGVTdGF0dXMoKTsKICAgICB9CiAKKyAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRN
ZW51LCBldmVudCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9jYWxsRnJhbWUuc291cmNlQ29k
ZUxvY2F0aW9uKQorICAgICAgICAgICAgV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvclNvdXJj
ZUNvZGUoY29udGV4dE1lbnUsIHRoaXMuX2NhbGxGcmFtZS5zb3VyY2VDb2RlTG9jYXRpb24pOwor
CisgICAgICAgIHN1cGVyLnBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KTsK
KyAgICB9CisKICAgICAvLyBQcml2YXRlCiAKICAgICBfdXBkYXRlU3RhdHVzKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZp
ZXcuanMKaW5kZXggMjk2YzJhNTQyM2EwLi4xOWY2NGJkMzk4ZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Lmpz
CkBAIC05Myw3ICs5Myw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5NZWRpYVRpbWVsaW5l
VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCB8fCBy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkgeworICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCB8
fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkgewogICAgICAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbikKICAgICAgICAg
ICAgICAgICByZXR1cm4gV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0
KHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZSwg
ZXh0cmFBcmd1bWVudHMpOwogICAgICAgICB9CkBAIC0yMzQsNyArMjM0LDcgQEAgV0kuQ29udGVu
dFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4g
cmVwcmVzZW50ZWRPYmplY3QubWFpblJlc291cmNlOwogCi0gICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5z
dGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3Qg
aW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcHJl
c2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZTsKICAgICAg
ICAgfQpAQCAtMjc5LDcgKzI3OSw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYg
KHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuVGltZWxpbmUpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0ku
QnJlYWtwb2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2Fn
ZSkKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3Nh
Z2UpCiAgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxvY2F0
aW9uOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Mb2NhbFJl
c291cmNlT3ZlcnJpZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0
aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4
dE1lbnVVdGlsaXRpZXMuanMKaW5kZXggZDBiNDA1MmQzMGRlLi5lYzJjYzY0NWVmOTMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRN
ZW51VXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCkBAIC0xMTgsNyArMTE4LDcgQEAgV0kuYXBw
ZW5kQ29udGV4dE1lbnVJdGVtc0ZvclNvdXJjZUNvZGUgPSBmdW5jdGlvbihjb250ZXh0TWVudSwg
c291cmNlQ29kZU9yTG9jYXQKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiQWRkIEJyZWFrcG9p
bnQiKSwgKCkgPT4gewotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVh
a3BvaW50KG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKSk7CisgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQobmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50
KGxvY2F0aW9uKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9p
bnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4IDZiMzNiMmNlM2MxZi4uMTc0
ZDIyYTM3MDBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MK
QEAgLTIzLDI4ICsyMywyOCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1zdWJ0cmVlLW1vZGlmaWVkOm5v
dCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC5kb20u
c3VidHJlZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50U3VidHJlZU1vZGlmaWVkLWxpZ2h0
KTsKIH0KIAotLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0dHJpYnV0ZS1tb2RpZmll
ZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQu
ZG9tLmF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50QXR0cmlidXRlTW9kaWZp
ZWQtbGlnaHQpOwogfQogCi0uYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3Itbm9kZS1yZW1v
dmVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2lu
dC5kb20ubm9kZS1yZW1vdmVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJs
KC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnROb2RlUmVtb3ZlZC1saWdodCk7
CiB9CiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAuYnJlYWtw
b2ludC5kb20uYnJlYWtwb2ludC1mb3Itc3VidHJlZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQt
cGF1c2VkLWljb24pIC5pY29uIHsKKyAgICAuaXRlbS5icmVha3BvaW50LmRvbS5zdWJ0cmVlLW1v
ZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50U3VidHJlZU1vZGlmaWVkLWRhcmspOwogICAg
IH0KIAotICAgIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUtbW9kaWZp
ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtw
b2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50QXR0cmli
dXRlTW9kaWZpZWQtZGFyayk7CiAgICAgfQogCi0gICAgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9p
bnQtZm9yLW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsK
KyAgICAuaXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQpIC5pY29u
IHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFr
cG9pbnROb2RlUmVtb3ZlZC1kYXJrKTsKICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2Yg
ZmlsZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCmluZGV4IGFk
NmJiMWExNDkyMi4uNjNlNjE2YTkxN2EyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCkBAIC0yMywyNiArMjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBE
T01CcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKK1dJ
LkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9yKGJy
ZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFr
cG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50KTsKIAotICAgICAg
ICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJkb20iLCBgYnJlYWtwb2ludC1mb3It
JHticmVha3BvaW50LnR5cGV9YF07Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAg
ICBjbGFzc05hbWVzLnB1c2goY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5
KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOworICAgICAgICBjbGFz
c05hbWVzLnB1c2goImRvbSIsIGJyZWFrcG9pbnQudHlwZSk7CiAKICAgICAgICAgaWYgKCF0aXRs
ZSkKICAgICAgICAgICAgIHRpdGxlID0gV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmRpc3Bs
YXlOYW1lRm9yVHlwZShicmVha3BvaW50LnR5cGUpOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxl
ID0gbnVsbDsKLSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVh
a3BvaW50KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNW
R1N5bWJvbCgiSW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNs
YXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHls
ZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRy
dWU7CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOwogICAg
IH0KIAogICAgIC8vIFN0YXRpYwpAQCAtNjEsMTA4ICs1NSw0IEBAIFdJLkRPTUJyZWFrcG9pbnRU
cmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdl
bmVyYWxUCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogICAgIH0KLQotICAg
IC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25h
dHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcy5fdXBk
YXRlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5n
ZSwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudENsaWNrZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkLmJp
bmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9
IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhp
cy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSB0aGlzLl9zdGF0dXNJbWFnZUVs
ZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7
Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3Vz
ZURvd24pOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwotICAgIH0KLQotICAgIG9u
ZGV0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7Ci0KLSAgICAgICAgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0gICAgICAgIHRo
aXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRTdGF0dXNJ
bWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24p
OwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IG51bGw7
Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IG51bGw7Ci0g
ICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gbnVsbDsKLSAg
ICB9Ci0KLSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBzZXQgdGhpcyBmbGFn
IHNvIHRoYXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwotICAgICAgICAvLyBC
cmVha3BvaW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRlbGV0ZWQgZnJv
bQotICAgICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0c2lkZSBpdCAo
ZS5nLiBUZXh0RWRpdG9yKS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxldGVLZXlib2Fy
ZFNob3J0Y3V0ID0gdHJ1ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RE9NQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2ds
ZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25zcGFj
ZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUs
IGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0OwotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVkID8gV0kuVUlT
dHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3Bv
aW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRoaXMuX3RvZ2ds
ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAg
ICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludChicmVha3BvaW50
KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0YXR1c0lt
YWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVh
a3BvaW50KCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQoZXZlbnQp
Ci0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAgICAgICAg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVu
dE1vdXNlRG93bihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBlbGVtZW50
IHNlbGVjdGlvbi4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0g
ICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwotICAgIH0K
LQotICAgIF91cGRhdGVTdGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9n
Z2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFz
c05hbWUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0aGlzLnN0
YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFn
ZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0Vu
YWJsZWQpOwotICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggNzk5
ZjY4Y2NiNjJkLi5mNTNiMWY0NTQ1ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMK
QEAgLTk1LDcgKzk1LDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJlZUNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5E
T01CcmVha3BvaW50QWRkZWQsIHRoaXMuX2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwgdGhp
cyk7CiAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIHRoaXMuX2Rv
bUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CiAKLSAgICAgICAgICAgIFdJLkRPTUJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRpc2FibGVk
U3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5n
ZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVy
KFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxl
RE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgICAgIFdJ
LkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRP
TU5vZGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZUNoYW5nZWQsIHRo
aXMpOwogCiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2
ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwppbmRleCA0ZmMz
YzRhNmZkY2YuLjE2MWNlZGNmMTI3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2lu
dFRyZWVFbGVtZW50LmNzcwpAQCAtMjMsMzYgKzIzLDM2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3It
YW5pbWF0aW9uLWZyYW1lOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0
ZW0uYnJlYWtwb2ludC5ldmVudC5hbmltYXRpb24tZnJhbWU6bm90KC5wYXVzZWQpIC5pY29uIHsK
ICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50
QW5pbWF0aW9uRnJhbWUtbGlnaHQpOwogfQogCi0uYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50
LWZvci1pbnRlcnZhbDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVt
LmJyZWFrcG9pbnQuZXZlbnQuaW50ZXJ2YWw6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250
ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50SW50ZXJ2YWwt
bGlnaHQpOwogfQogCi0uYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1saXN0ZW5lcjpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZXZl
bnQubGlzdGVuZXI6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1h
Z2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50TGlzdGVuZXItbGlnaHQpOwogfQogCi0u
YnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci10aW1lb3V0Om5vdCguYnJlYWtwb2ludC1w
YXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC5ldmVudC50aW1lb3V0Om5vdCgu
cGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3Zn
I0V2ZW50QnJlYWtwb2ludFRpbWVvdXQtbGlnaHQpOwogfQogCiBAbWVkaWEocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIHsKLSAgICAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1h
bmltYXRpb24tZnJhbWU6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAg
Lml0ZW0uYnJlYWtwb2ludC5ldmVudC5hbmltYXRpb24tZnJhbWU6bm90KC5wYXVzZWQpIC5pY29u
IHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJl
YWtwb2ludEFuaW1hdGlvbkZyYW1lLWRhcmspOwogICAgIH0KLSAgICAKLSAgICAuYnJlYWtwb2lu
dC5ldmVudC5icmVha3BvaW50LWZvci1pbnRlcnZhbDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWlj
b24pIC5pY29uIHsKKworICAgIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuaW50ZXJ2YWw6bm90KC5w
YXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMu
c3ZnI0V2ZW50QnJlYWtwb2ludEludGVydmFsLWRhcmspOwogICAgIH0KLSAgICAKLSAgICAuYnJl
YWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1saXN0ZW5lcjpub3QoLmJyZWFrcG9pbnQtcGF1
c2VkLWljb24pIC5pY29uIHsKKworICAgIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQubGlzdGVuZXI6
bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBl
SWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludExpc3RlbmVyLWRhcmspOwogICAgIH0KLSAgICAKLSAg
ICAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci10aW1lb3V0Om5vdCguYnJlYWtwb2lu
dC1wYXVzZWQtaWNvbikgLmljb24geworCisgICAgLml0ZW0uYnJlYWtwb2ludC5ldmVudC50aW1l
b3V0Om5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
VHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRUaW1lb3V0LWRhcmspOwotICAgIH0gICAKKyAg
ICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCmluZGV4
IGUwYmZlYmYxMWQ5MS4uOWNmNGE3ZDViOWI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMTM2ICsyMywxOSBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJl
ZUVsZW1lbnQKK1dJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgRXZlbnRCcmVh
a3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQKIHsKLSAg
ICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBj
b25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30pCiAgICAgewog
ICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVh
a3BvaW50KTsKIAotICAgICAgICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJldmVu
dCIsIGBicmVha3BvaW50LWZvci0ke2JyZWFrcG9pbnQudHlwZX1gXTsKLSAgICAgICAgaWYgKGNs
YXNzTmFtZSkKLSAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc05hbWUpOworICAgICAg
ICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVz
ID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiZXZlbnQiLCBicmVha3BvaW50LnR5cGUp
OwogCiAgICAgICAgIGlmICghdGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9IGJyZWFrcG9pbnQu
ZXZlbnROYW1lOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAgc3Vw
ZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAgICAgICB0
aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0JyZWFr
cG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQotICAgICAg
ICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8g
UHJvdGVjdGVkCi0KLSAgICBvbmF0dGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmF0dGFj
aCgpOwotCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihX
SS5FdmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX3VwZGF0
ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2Us
IHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJ
bWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZC5iaW5k
KHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSB0
aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMu
X2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVt
ZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRM
aXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwot
ICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5k
U3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50
TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VE
b3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAgICBvbmRl
dGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAgIHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsK
LSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xp
Y2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0aGlz
LnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1h
Z2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsK
LQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBudWxsOwot
ICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxsOwotICAg
ICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7Ci0gICAg
fQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyBz
byB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAgICAgLy8gQnJl
YWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVkIGZyb20K
LSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQgKGUu
Zy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9hcmRT
aG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZXZl
bnRMaXN0ZW5lcikKLSAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3RlbmVyKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
QnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICByZXR1cm4gdHJ1
ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJy
ZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25zcGFjZSgp
Ci0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2
ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJlc2VudGVkT2Jq
ZWN0OwotCi0gICAgICAgIGxldCBsYWJlbCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQgPyBXSS5VSVN0
cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9p
bnQiKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShsYWJlbCwgdGhpcy5fdG9nZ2xl
QnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQotICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFn
ZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoYnJlYWtwb2ludC5ldmVudExpc3Rl
bmVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB9KTsKLSAg
ICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZChl
dmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICB9Ci0K
LSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVudCkKLSAgICB7Ci0gICAgICAgIC8v
IFByZXZlbnQgdHJlZSBvdXRsaW5lIGZvY3VzLgotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRp
b24oKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50KQot
ICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1lbnQgc2VsZWN0aW9uLgotICAgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfdG9nZ2xlQnJlYWtwb2lu
dCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkID0gIXRo
aXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0YXR1
cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRy
ZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dn
bGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNsYXNz
TmFtZSwgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCk7CisgICAgICAgIHN1
cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOwogICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3Rl
bmVyU2VjdGlvbkdyb3VwLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzCmluZGV4IDQ3NjU3NTJlMmYwMC4u
Y2Q1ZGZmYjRlN2ZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3Vw
LmNzcwpAQCAtMzQsMyArMzQsMTEgQEAKICAgICBoZWlnaHQ6IDEycHg7CiAgICAgbWFyZ2luOiAw
OwogfQorCisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNo
ZWNrYm94Il0gKyAuZ28tdG8tYXJyb3cgeworICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4OworfQor
CisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNoZWNrYm94
Il06bm90KDpjaGVja2VkKSArIC5nby10by1hcnJvdyB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2
ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCmluZGV4IDY4NmY5Zjc5
NWZhZi4uZWYxYmEzNWJjM2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9u
R3JvdXAuanMKQEAgLTcyLDcgKzcyLDkgQEAgV0kuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCA9
IGNsYXNzIEV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAgZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAg
ICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKFdJLkRPTU1hbmFnZXIuc3VwcG9ydHNFdmVudExp
c3RlbmVyQnJlYWtwb2ludHMoKSkgewotICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVu
ZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0
Iik7CisgICAgICAgICAgICAgICAgbGV0IHRvZ2dsZUNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoInNwYW4iKTsKKworICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJC
cmVha3BvaW50VG9nZ2xlRWxlbWVudCA9IHRvZ2dsZUNvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpKTsKICAgICAgICAgICAgICAgICB0aGlzLl9ldmVu
dExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQudHlwZSA9ICJjaGVja2JveCI7CiAgICAg
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlQnJlYWtwb2ludFRvZ2dsZSgpOwogICAgICAgICAgICAg
ICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJjaGFuZ2UiLCAoZXZlbnQpID0+IHsKQEAgLTgwLDEzICs4MiwyNiBAQCBXSS5FdmVu
dExpc3RlbmVyU2VjdGlvbkdyb3VwID0gY2xhc3MgRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCBl
eHRlbmRzIFdJLkRldGFpbAogICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0V2ZW50TGlzdGVu
ZXJCcmVha3BvaW50ID0gISF0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1l
bnQuY2hlY2tlZDsKICAgICAgICAgICAgICAgICB9KTsKIAorICAgICAgICAgICAgICAgIGlmIChX
SS5ET01NYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRDb25maWd1cmF0aW9u
KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IHJldmVhbEJyZWFrcG9pbnRHb1RvQXJyb3cg
PSB0b2dnbGVDb250YWluZXIuYXBwZW5kQ2hpbGQoV0kuY3JlYXRlR29Ub0Fycm93QnV0dG9uKCkp
OworICAgICAgICAgICAgICAgICAgICByZXZlYWxCcmVha3BvaW50R29Ub0Fycm93LnRpdGxlID0g
V0kuVUlTdHJpbmcoIlJldmVhbCBpbiBTb3VyY2VzIFRhYiIpOworICAgICAgICAgICAgICAgICAg
ICByZXZlYWxCcmVha3BvaW50R29Ub0Fycm93LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmhh
c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50KTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnRUb1NlbGVjdCA9IFdJLmRvbU1hbmFnZXIuYnJlYWtwb2ludEZvckV2ZW50TGlz
dGVuZXJJZCh0aGlzLl9ldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50VG9TZWxlY3QpOworCisgICAg
ICAgICAgICAgICAgICAgICAgICBXSS5zaG93U291cmNlc1RhYih7YnJlYWtwb2ludFRvU2VsZWN0
fSk7CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKwogICAgICAg
ICAgICAgICAgIGxldCB0b2dnbGVMYWJlbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4i
KTsKICAgICAgICAgICAgICAgICB0b2dnbGVMYWJlbC50ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5n
KCJCcmVha3BvaW50Iik7CiAgICAgICAgICAgICAgICAgdG9nZ2xlTGFiZWwuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCAoZXZlbnQpID0+IHsKICAgICAgICAgICAgICAgICAgICAgdGhpcy5fZXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50LmNsaWNrKCk7CiAgICAgICAgICAgICAg
ICAgfSk7CiAKLSAgICAgICAgICAgICAgICByb3dzLnB1c2gobmV3IFdJLkRldGFpbHNTZWN0aW9u
U2ltcGxlUm93KHRvZ2dsZUxhYmVsLCB0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2ds
ZUVsZW1lbnQpKTsKKyAgICAgICAgICAgICAgICByb3dzLnB1c2gobmV3IFdJLkRldGFpbHNTZWN0
aW9uU2ltcGxlUm93KHRvZ2dsZUxhYmVsLCB0b2dnbGVDb250YWluZXIpKTsKICAgICAgICAgICAg
IH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50
VHJlZUVsZW1lbnQuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
NjFlOWExMTllMDVhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAg
LTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZSB7CisgICAgZmlsdGVyOiBncmF5c2NhbGUoKTsK
K30KKworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdl
LnJlc29sdmVkIHsKKyAgICBmaWx0ZXI6IG5vbmU7Cit9CisKK2JvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhp
biAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMt
aW1hZ2UucmVzb2x2ZWQgeworICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1j
b2xvcik7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3VidGl0bGUuZm9ybWF0
dGVkLWxvY2F0aW9uIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy8qIFdoZW4gYW5p
bWF0aW5nIGEgbGF5ZXIgb24gdG9wIG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwgbW92ZSB0aGUg
bWFpbgoraWNvbiB0byB0aGUgaWNvbiBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBhbmltYXRpb25z
IGFyZSBsYXllcmVkIG9uIHRvcC4gKi8KKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5l
IC5pY29uIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjUmVzdWx0TGluZS1saWdodCk7CisgICAgY29udGVudDogJyc7Cit9CisKKy5pdGVtLmJyZWFr
cG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3BhbiB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVm
dDogMDsKKworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICB0cmFuc2Zvcm06IHNjYWxlKDAp
OworICAgIHRyYW5zaXRpb246IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxNiwg
MzAlLCA0MiUpOworfQorCisuZGF0YS11cGRhdGVkLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0
LmxpbmUgLmljb24gPiBzcGFuIHsKKyAgICBib3JkZXItcmFkaXVzOiAwOworICAgIHRyYW5zZm9y
bTogc2NhbGUoMC44NSk7CisgICAgdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlLW91dDsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxNiwgMzAlLCA0MiUsIDAuMSk7Cit9CisKKy5pdGVtLmJy
ZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24geworICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1saWdodCk7
Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRpb24gLmljb24geworICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tbGlnaHQpOwor
fQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuYXNzZXJ0aW9uIC5pY29uIHsKKyAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWxpZ2h0KTsKK30K
KworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7CisgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1saWdodCk7Cit9CisK
K0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAuaXRlbS5icmVha3Bv
aW50LmphdmFzY3JpcHQubGluZSAuaWNvbiB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRhcmspOworICAgIH0KKworICAg
IC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24gewor
ICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRGVidWdnZXJTdGF0
ZW1lbnQtZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmV4
Y2VwdGlvbiAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNFeGNlcHRpb24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZh
c2NyaXB0LmFzc2VydGlvbiAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
VHlwZUljb25zLnN2ZyNBc3NlcnRpb24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtw
b2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stZGFyayk7CisgICAgfQorfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtw
b2ludFRyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MC4uNGU2NDZjMjVjOWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpA
QCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dFRyZWVFbGVtZW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRl
bmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9p
bnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7CisKKyAg
ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NO
YW1lcyA9IFsibGluZSJdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goImphdmFzY3JpcHQiKTsK
KworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsKKworICAg
ICAgICBpZiAoIXRpdGxlKQorICAgICAgICAgICAgdGhpcy5saXN0ZW5lclNldC5yZWdpc3Rlcihi
cmVha3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcy5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5saXN0
ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVu
dC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CisgICAgfQorCisg
ICAgLy8gUHVibGljCisKKyAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHt0ZXh0OiBbdGhpcy5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyXX07CisgICAg
fQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICB1cGRhdGVTdGF0dXMoKQorICAgIHsKKyAgICAg
ICAgc3VwZXIudXBkYXRlU3RhdHVzKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xl
KCJyZXNvbHZlZCIsIHRoaXMuYnJlYWtwb2ludC5yZXNvbHZlZCAmJiBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYnJlYWtwb2ludHNFbmFibGVkKTsKKyAgICB9CisKKyAgICB1cGRhdGVUaXRsZXMoKQorICAg
IHsKKyAgICAgICAgc3VwZXIudXBkYXRlVGl0bGVzKCk7CisKKyAgICAgICAgbGV0IHNvdXJjZUNv
ZGVMb2NhdGlvbiA9IHRoaXMuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CisKKyAgICAg
ICAgbGV0IGRpc3BsYXlMaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMaW5l
TnVtYmVyOworICAgICAgICBsZXQgZGlzcGxheUNvbHVtbk51bWJlciA9IHNvdXJjZUNvZGVMb2Nh
dGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOworICAgICAgICBpZiAoZGlzcGxheUNvbHVtbk51bWJl
ciA+IDApCisgICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVk
OiVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSwgZGlzcGxheUNvbHVtbk51bWJlciAr
IDEpOyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFyZSAxLWJh
c2VkLgorICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3Ry
aW5nKCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSk7IC8vIFRoZSB1c2Vy
IHZpc2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC4KKworICAgICAgICBpZiAoc291cmNlQ29k
ZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKKyAgICAgICAgICAgIHRoaXMuc3VidGl0
bGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkTG9jYXRpb25TdHJpbmcoKTsKKworICAg
ICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpKQor
ICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoImZvcm1h
dHRlZC1sb2NhdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMu
c3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImZvcm1hdHRlZC1sb2NhdGlvbiIpOwor
CisgICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLm1haW5UaXRsZSArICIgXHUyMDE0ICIg
KyBXSS5VSVN0cmluZygib3JpZ2luYWxseSAlcyIpLmZvcm1hdChzb3VyY2VDb2RlTG9jYXRpb24u
b3JpZ2luYWxMb2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFBy
aXZhdGUKKworICAgIF9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgPT09IHRoaXMuYnJlYWtwb2ludCk7
CisKKyAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQgaGFzIGEgbmV3IGRpc3BsYXkgU291cmNlQ29k
ZS4gVGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMsIGFuZCBvbmRldGFjaCgpIHdpbGwgY2xlYXIg
bGlzdGVuZXJzLgorICAgICAgICBpZiAoZXZlbnQuZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9
PT0gdGhpcy5icmVha3BvaW50LmRpc3BsYXlTb3VyY2VDb2RlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIHRoaXMudXBkYXRlVGl0bGVzKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCAxMzQ1M2MyNWNhY2YuLjg4MzBmM2Mx
ZDcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNjgs
NiArNjgsMTEgQEAgV0kuUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgUHJvYmVEZXRh
aWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKICAgICAgICAgfSk7CiAKICAgICAg
ICAgaW5zcGVjdGVkUHJvYmVTZXRzLnNvcnQoZnVuY3Rpb24gc29ydEJ5U291cmNlTG9jYXRpb24o
YVByb2JlU2V0LCBiUHJvYmVTZXQpIHsKKyAgICAgICAgICAgIGlmICghKGFQcm9iZVNldCBpbnN0
YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
MTsKKyAgICAgICAgICAgIGlmICghKGJQcm9iZVNldCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisKICAgICAgICAgICAgIHZh
ciBhTG9jYXRpb24gPSBhUHJvYmVTZXQuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CiAg
ICAgICAgICAgICB2YXIgYkxvY2F0aW9uID0gYlByb2JlU2V0LmJyZWFrcG9pbnQuc291cmNlQ29k
ZUxvY2F0aW9uOwogICAgICAgICAgICAgdmFyIGNvbXBhcmlzb25SZXN1bHQgPSBhTG9jYXRpb24u
c291cmNlQ29kZS5kaXNwbGF5TmFtZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYkxvY2F0aW9uLnNv
dXJjZUNvZGUuZGlzcGxheU5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24u
anMKaW5kZXggODM3NzM3YzBkM2FkLi5jNTRkZDc3MjJmZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24u
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbi5qcwpAQCAtMzAsNiArMzAsMjAgQEAgV0kuUHJvYmVTZXREZXRhaWxz
U2VjdGlvbiA9IGNsYXNzIFByb2JlU2V0RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXSS5EZXRhaWxz
U2VjdGkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2Yg
V0kuUHJvYmVTZXQsICJJbnZhbGlkIFByb2JlU2V0IGFyZ3VtZW50OiIsIHByb2JlU2V0KTsKIAor
ICAgICAgICBsZXQgdGl0bGUgPSAiIjsKKyAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQg
aW5zdGFuY2VvZiBXSS5FdmVudEJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGlmIChwcm9iZVNl
dC5icmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVz
QnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwgQW5p
bWF0aW9uIEZyYW1lcyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2lu
dCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAg
ICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIEludGVydmFscyIpOworICAgICAg
ICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5V
SVN0cmluZygiQWxsIEV2ZW50cyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJl
YWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkK
KyAgICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwgVGltZW91dHMiKTsKKyAg
ICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aXRsZSA9IHByb2JlU2V0LmJyZWFrcG9p
bnQuZXZlbnROYW1lOworICAgICAgICB9CisKICAgICAgICAgdmFyIG9wdGlvbnNFbGVtZW50ID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHZhciBkYXRhR3JpZCA9IG5l
dyBXSS5Qcm9iZVNldERhdGFHcmlkKHByb2JlU2V0KTsKIApAQCAtMzgsNyArNTIsNyBAQCBXSS5Q
cm9iZVNldERldGFpbHNTZWN0aW9uID0gY2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBleHRl
bmRzIFdJLkRldGFpbHNTZWN0aQogCiAgICAgICAgIHZhciBwcm9iZVNlY3Rpb25Hcm91cCA9IG5l
dyBXSS5EZXRhaWxzU2VjdGlvbkdyb3VwKFtzaW5nbGV0b25Sb3ddKTsKIAotICAgICAgICBzdXBl
cigicHJvYmUiLCAiIiwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOworICAg
ICAgICBzdXBlcigicHJvYmUiLCB0aXRsZSwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0Vs
ZW1lbnQpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9iZS1zZXQi
KTsKIApAQCAtNjUsMTAgKzc5LDEyIEBAIFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gPSBjbGFz
cyBQcm9iZVNldERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV0kuRGV0YWlsc1NlY3RpCiAgICAgICAg
IHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNldC5F
dmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAgICAgICAg
IHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNldC5F
dmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAKLSAg
ICAgICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50J3MgcmVz
b2x2ZWQgc3RhdGUgY2hhbmdlcywKLSAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEg
bGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCi0gICAgICAgIHRoaXMuX3VwZGF0ZUxp
bmtFbGVtZW50KCk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3By
b2JlU2V0LmJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQpOworICAgICAgICBpZiAodGhpcy5fcHJvYmVT
ZXQuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSB7CisgICAg
ICAgICAgICAvLyBVcGRhdGUgdGhlIHNvdXJjZSBsaW5rIHdoZW4gdGhlIGJyZWFrcG9pbnQncyBy
ZXNvbHZlZCBzdGF0ZSBjaGFuZ2VzLAorICAgICAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVj
b21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICB0aGlz
Ll91cGRhdGVMaW5rRWxlbWVudCgpOworICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVn
aXN0ZXIodGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludCwgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQu
RXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQpOwor
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQuaW5zdGFsbCgpOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Nv
dXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggNmEzMGJkZDJmMTcwLi40NjYx
OWJmNmEzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC02NiwxMCAr
NjYsMTEgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVk
aXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlz
dC5hZGQoInNvdXJjZS1jb2RlIik7CiAKICAgICAgICAgaWYgKHRoaXMuX3N1cHBvcnRzRGVidWdn
aW5nKSB7Ci0gICAgICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJl
YWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3Rh
dHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgICAgICBXSS5CcmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAg
ICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50Lkxv
Y2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMpOwor
ICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRT
dGF0dXNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENo
YW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAg
ICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2lu
dFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkxvY2F0
aW9uRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMpOwogCiAg
ICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFu
YWdlci5FdmVudC5UYXJnZXRBZGRlZCwgdGhpcy5fdGFyZ2V0QWRkZWQsIHRoaXMpOwogICAgICAg
ICAgICAgV0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIu
RXZlbnQuVGFyZ2V0UmVtb3ZlZCwgdGhpcy5fdGFyZ2V0UmVtb3ZlZCwgdGhpcyk7CkBAIC0xNjcs
NyArMTY4LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4
dEVkaXRvciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICBjbG9zZSgpCiAgICAgewogICAgICAg
ICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpIHsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9p
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAgICAgIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihu
dWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIApAQCAtMTMwNSw3ICsxMzA2LDcgQEAgV0ku
U291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRz
IFdJLlRleHRFZGl0b3IKICAgICAgICAgdmFyIGVkaXRvckxpbmVJbmZvID0ge2xpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcn07CiAgICAgICAgIHZhciB1bmZvcm1hdHRlZExpbmVJbmZvID0gdGhpcy5f
dW5mb3JtYXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxpbmVJbmZvKGVkaXRvckxpbmVJbmZvKTsKICAg
ICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUNvZGUuY3JlYXRlU291
cmNlQ29kZUxvY2F0aW9uKHVuZm9ybWF0dGVkTGluZUluZm8ubGluZU51bWJlciwgdW5mb3JtYXR0
ZWRMaW5lSW5mby5jb2x1bW5OdW1iZXIpOwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBX
SS5CcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIHZhciBicmVha3BvaW50
ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CiAKICAg
ICAgICAgdmFyIGxpbmVJbmZvID0gdGhpcy5fZWRpdG9yTGluZUluZm9Gb3JTb3VyY2VDb2RlTG9j
YXRpb24oYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl9hZGRC
cmVha3BvaW50V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIGxpbmVJbmZvKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggZmFiZjNl
YzFlZjljLi5lZjRiZDI0YjcwOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLmpzCkBAIC0xNjksNyArMTY5LDcgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5vbmRlbGV0ZSA9IChz
ZWxlY3RlZFRyZWVFbGVtZW50KSA9PiB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChzZWxl
Y3RlZFRyZWVFbGVtZW50LnNlbGVjdGVkKTsKIAotICAgICAgICAgICAgaWYgKCFXSS5kZWJ1Z2dl
ck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVz
ZW50ZWRPYmplY3QpKSB7CisgICAgICAgICAgICBpZiAoIXNlbGVjdGVkVHJlZUVsZW1lbnQucmVw
cmVzZW50ZWRPYmplY3QucmVtb3ZhYmxlKSB7CiAgICAgICAgICAgICAgICAgbGV0IHRyZWVFbGVt
ZW50VG9TZWxlY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50Lm5leHRTZWxlY3RhYmxlU2libGluZzsK
ICAgICAgICAgICAgICAgICBpZiAodHJlZUVsZW1lbnRUb1NlbGVjdCkgewogICAgICAgICAgICAg
ICAgICAgICBjb25zdCBvbWl0Rm9jdXMgPSB0cnVlOwpAQCAtMzI2LDcgKzMyNiw3IEBAIFdJLlNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5BY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2Us
IHRoaXMuX2hhbmRsZURlYnVnZ2VyQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzKTsKICAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LldhaXRpbmdUb1BhdXNlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlcldhaXRpbmdUb1Bh
dXNlLCB0aGlzKTsKIAotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURl
YnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURlYnVnZ2Vy
T2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKICAgICAgICAgV0kuSXNzdWVN
ZXNzYWdlLmFkZEV2ZW50TGlzdGVuZXIoV0kuSXNzdWVNZXNzYWdlLkV2ZW50LkRpc3BsYXlMb2Nh
dGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRGVidWdnZXJPYmplY3REaXNwbGF5TG9jYXRpb25E
aWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRPTU5vZGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVE
T01CcmVha3BvaW50RE9NTm9kZUNoYW5nZWQsIHRoaXMpOwpAQCAtMzg3LDE3ICszODcsMTcgQEAg
V0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgfQogCiAgICAgICAgIGlmIChXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydGVkKSB7Ci0gICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Mu
c2hvd0FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICAgICAg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCk7CisgICAgICAgICAgICBpZiAoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAg
ICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCk7CiAKLSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5ncy5z
aG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bFRpbWVvdXRzQnJlYWtwb2ludCk7CisgICAgICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVh
a3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpOwogCi0g
ICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Muc2hvd0FsbEludGVydmFsc0JyZWFrcG9pbnQudmFs
dWUpCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtw
b2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCk7CisgICAg
ICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQp
CisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCk7CiAKLSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5n
cy5zaG93QWxsTGlzdGVuZXJzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmIChXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLl9h
ZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50
KTsKIAogICAgICAgICAgICAgZm9yIChsZXQgZXZlbnRCcmVha3BvaW50IG9mIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5saXN0ZW5lckJyZWFrcG9pbnRzKQogICAgICAgICAgICAgICAgIHRoaXMuX2Fk
ZEJyZWFrcG9pbnQoZXZlbnRCcmVha3BvaW50KTsKQEAgLTQ1Miw3ICs0NTIsNyBAQCBXSS5Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsIGV4dGVuZHMgVwogICAgICAgICBXSS5uZXR3b3JrTWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgICAg
IFdJLkJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAg
ICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKICAgICAgICAgV0kuSXNzdWVNZXNzYWdlLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLkRPTUJyZWFrcG9pbnQucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuY29uc29sZU1hbmFnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKQEAgLTEyMDEsNyArMTIwMSw3IEBA
IFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9
PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFs
bEV4Y2VwdGlvbnNCcmVha3BvaW50LAogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4g
dHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci51bmNh
dWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LAogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkg
PT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQsCi0gICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50
KSA9PiB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCB8fCB0
cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlJlc291cmNlVHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXSS5TY3JpcHRUcmVlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAodHJl
ZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnRUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlJlc291cmNlVHJlZUVs
ZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5TY3JpcHRUcmVlRWxlbWVudCwKICAg
ICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQsCiAgICAg
ICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVj
dCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQs
CiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCwK
QEAgLTEyMjQsOCArMTIyNCw4IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0g
Y2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiAxOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoYSBp
bnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCAmJiBiIGluc3RhbmNlb2YgV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50KQotICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9jb21wYXJl
QnJlYWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKTsKKyAgICAgICAgICAgIGlmIChhIGluc3RhbmNl
b2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCAmJiBiIGluc3RhbmNlb2YgV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCkKKyAgICAgICAgICAgICAgICByZXR1cm4g
dGhpcy5fY29tcGFyZUphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpOwogCiAg
ICAgICAgICAgICByZXR1cm4gYS5tYWluVGl0bGUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGIubWFp
blRpdGxlKSB8fCBhLnN1YnRpdGxlLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLnN1YnRpdGxlKTsK
ICAgICAgICAgfTsKQEAgLTEyMzMsNyArMTIzMyw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
CiAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKHRyZWVFbGVtZW50LCBpbnNl
cnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24odHJlZUVsZW1lbnQsIHBh
cmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCBjb21wYXJhdG9yKSk7CiAgICAgfQogCi0gICAgX2Nv
bXBhcmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKGEsIGIpCisgICAgX2NvbXBhcmVKYXZhU2NyaXB0
QnJlYWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKQogICAgIHsKICAgICAgICAgaWYgKCFhLnJlcHJl
c2VudGVkT2JqZWN0IHx8ICFiLnJlcHJlc2VudGVkT2JqZWN0KQogICAgICAgICAgICAgcmV0dXJu
IDA7CkBAIC0xMjUxLDcgKzEyNTEsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAg
ICBpZiAodGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQoYnJlYWtw
b2ludCkpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKIAotICAgICAgICBsZXQgY29uc3RydWN0
b3IgPSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQ7CisgICAgICAgIGxldCBjb25zdHJ1Y3RvciA9
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQ7CiAgICAgICAgIGxldCBvcHRpb25z
ID0ge307CiAgICAgICAgIGxldCBwYXJlbnRUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRz
VHJlZU91dGxpbmU7CiAKQEAgLTEyNjksMTkgKzEyNjksMTkgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKICAgICAgICAgfTsKIAogICAgICAgICBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdn
ZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9w
dGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZGVidWdnZXItc3RhdGVtZW50LWljb24iOwor
ICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJkZWJ1Z2dlci1zdGF0ZW1lbnQiXTsK
ICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5VSVN0cmluZygiRGVidWdnZXIgU3RhdGVt
ZW50cyIpOwogICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVnZ2VyTWFu
YWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludCkgewotICAgICAgICAgICAgb3B0aW9ucy5jbGFz
c05hbWUgPSAiYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiI7CisgICAgICAgICAgICBvcHRpb25z
LmNsYXNzTmFtZXMgPSBbImV4Y2VwdGlvbiJdOwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9
IFdJLnJlcGVhdGVkVUlTdHJpbmcuYWxsRXhjZXB0aW9ucygpOwogICAgICAgICB9IGVsc2UgaWYg
KGJyZWFrcG9pbnQgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVh
a3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWV4
Y2VwdGlvbi1pY29uIjsKKyAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9IFsiZXhjZXB0
aW9uIl07CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxlID0gV0kucmVwZWF0ZWRVSVN0cmluZy51
bmNhdWdodEV4Y2VwdGlvbnMoKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09PSBX
SS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50KSB7Ci0gICAgICAg
ICAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWFzc2VydGlvbi1pY29uIjsKKyAg
ICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9IFsiYXNzZXJ0aW9uIl07CiAgICAgICAgICAg
ICBvcHRpb25zLnRpdGxlID0gV0kucmVwZWF0ZWRVSVN0cmluZy5hc3NlcnRpb25GYWlsdXJlcygp
OwogICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5h
bGxNaWNyb3Rhc2tzQnJlYWtwb2ludCkgewotICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWUg
PSAiYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiI7CisgICAgICAgICAgICBvcHRpb25zLmNsYXNz
TmFtZXMgPSBbIm1pY3JvdGFzayJdOwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLlVJ
U3RyaW5nKCJBbGwgTWljcm90YXNrcyIpOwogICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9pbnQg
aW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50KSB7CiAgICAgICAgICAgICBpZiAoIWJyZWFrcG9p
bnQuZG9tTm9kZUlkZW50aWZpZXIpCkBAIC0xMzY0LDcgKzEzNjQsNyBAQCBXSS5Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
IGV4dGVuZHMgVwogICAgIF9yZW1vdmVBbGxCcmVha3BvaW50cyhicmVha3BvaW50cykKICAgICB7
CiAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQgb2YgYnJlYWtwb2ludHMpIHsKLSAgICAgICAg
ICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9p
bnQpKQorICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQucmVtb3ZhYmxlKQogICAgICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAg
ICAgICB9CiAgICAgfQpAQCAtMTM4Myw3ICsxMzgzLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRz
IFcKIAogICAgICAgICBsZXQgYnJlYWtwb2ludHMgPSBbXTsKICAgICAgICAgZm9yIChsZXQgY2hp
bGQgb2YgdHJlZUVsZW1lbnQuY2hpbGRyZW4pIHsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGNoaWxkIGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50KTsKKyAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGNoaWxkIGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRU
cmVlRWxlbWVudCk7CiAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGNoaWxkLmJyZWFrcG9p
bnQ7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50KTsKICAgICAgICAgICAg
IGlmIChicmVha3BvaW50KQpAQCAtMTQwMyw3ICsxNDAzLDcgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKIAogICAgICAgICAgICAgaXNzdWVUcmVlRWxlbWVudCA9IG5ldyBXSS5Jc3N1ZVRyZWVF
bGVtZW50KGlzc3VlTWVzc2FnZSk7CiAKLSAgICAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50Lmlu
c2VydENoaWxkKGlzc3VlVHJlZUVsZW1lbnQsIGluc2VydGlvbkluZGV4Rm9yT2JqZWN0SW5MaXN0
U29ydGVkQnlGdW5jdGlvbihpc3N1ZVRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGls
ZHJlbiwgdGhpcy5fY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMpKTsKKyAgICAgICAgICAg
IHBhcmVudFRyZWVFbGVtZW50Lmluc2VydENoaWxkKGlzc3VlVHJlZUVsZW1lbnQsIGluc2VydGlv
bkluZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbihpc3N1ZVRyZWVFbGVtZW50LCBw
YXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwgdGhpcy5fY29tcGFyZUphdmFTY3JpcHRCcmVha3Bv
aW50VHJlZUVsZW1lbnRzKSk7CiAgICAgICAgICAgICBpZiAocGFyZW50VHJlZUVsZW1lbnQuY2hp
bGRyZW4ubGVuZ3RoID09PSAxKQogICAgICAgICAgICAgICAgIHBhcmVudFRyZWVFbGVtZW50LmV4
cGFuZCgpOwogICAgICAgICB9CkBAIC0xNTUwLDcgKzE1NTAsNyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMu
Y3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAg
ICAgICAgICAgICBsZXQgZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRC
cmVha3BvaW50VHJlZUVsZW1lbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50
LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAog
ICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygicmVxdWVzdEFuaW1hdGlvbkZyYW1l
IEZpcmVkIiksCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29u
VHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwpAQCAt
MTU5NSw4ICsxNTk1LDggQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5UcmVlT3V0bGlu
ZS5FdmVudC5TZWxlY3Rpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZVRyZWVTZWxlY3Rpb25EaWRD
aGFuZ2UsIHRoaXMpOwogCiAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IFdJLmRlYnVnZ2Vy
TWFuYWdlci5icmVha3BvaW50Rm9ySWRlbnRpZmllcihwYXVzZURhdGEuYnJlYWtwb2ludElkKTsK
LSAgICAgICAgICAgIGxldCBicmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuQnJlYWtwb2lu
dFRyZWVFbGVtZW50KGJyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJi
cmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50VHJlZUVs
ZW1lbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudChicmVha3BvaW50
LCB7CisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAg
ICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlRyaWdnZXJlZCBCcmVha3BvaW50IiksCiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgICAgIGxldCBicmVha3BvaW50RGV0YWlsc1NlY3Rpb24gPSBuZXcg
V0kuRGV0YWlsc1NlY3Rpb25Sb3c7CkBAIC0xNjQ1LDcgKzE2NDUsNyBAQCBXSS5Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
IGV4dGVuZHMgVwogCiAgICAgICAgICAgICBsZXQgdHlwZSA9IFdJLkRPTUJyZWFrcG9pbnRUcmVl
RWxlbWVudC5kaXNwbGF5TmFtZUZvclR5cGUoZG9tQnJlYWtwb2ludC50eXBlKTsKICAgICAgICAg
ICAgIGxldCBkb21CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRE9NQnJlYWtwb2ludFRy
ZWVFbGVtZW50KGRvbUJyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJi
cmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBh
dXNlZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiB0eXBlLAogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICBsZXQgZG9tQnJlYWtwb2ludFJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblJv
dzsKQEAgLTE3MTUsNyArMTcxNSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
ID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAg
ICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJl
ZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBl
dmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxl
bWVudChldmVudEJyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVh
a3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNl
ZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygiXHUyMDFDJXNcdTIwMUQg
RXZlbnQgRmlyZWQiKS5mb3JtYXQocGF1c2VEYXRhLmV2ZW50TmFtZSksCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQo
ZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwpAQCAtMTc1OCw3ICsxNzU4LDcgQEAgV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxp
bmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRy
dWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3
IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJ
bnRlcnZhbHNCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtw
b2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQi
XSwKICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoInNldEludGVydmFsIEZpcmVk
IiksCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91
dGxpbmUuYXBwZW5kQ2hpbGQoZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwpAQCAtMTgwMiw3
ICsxODAyLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMuX3Bh
dXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3Vw
cHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtwb2lu
dFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KGV2ZW50QnJl
YWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2Vk
LWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAg
ICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCIlcyBGaXJlZCIpLmZvcm1hdChwYXVzZURhdGEu
ZXZlbnROYW1lKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFz
b25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBA
IC0xODE4LDcgKzE4MTgsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNs
YXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAg
dGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRs
aW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRC
cmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQo
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCwgewotICAgICAgICAg
ICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAg
ICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJ
U3RyaW5nKCJzZXRUaW1lb3V0IEZpcmVkIiksCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAg
IHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQoZXZlbnRCcmVha3BvaW50
VHJlZUVsZW1lbnQpOwpAQCAtMTg0NCw3ICsxODQ0LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRz
IFcKICAgICAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5j
cmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAg
ICAgICAgICAgICAgICBsZXQgdXJsQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLlVSTEJy
ZWFrcG9pbnRUcmVlRWxlbWVudCh1cmxCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgICAg
IGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgICAg
ICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAgICAgICAgICB0aXRsZTogV0ku
VUlTdHJpbmcoIlRyaWdnZXJlZCBVUkwgQnJlYWtwb2ludCIpLAogICAgICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgICAgIGxldCB1cmxCcmVha3BvaW50Um93ID0gbmV3IFdJLkRldGFpbHNT
ZWN0aW9uUm93OwpAQCAtMTk1MCw5ICsxOTUwLDkgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0cmVlRWxlbWVu
dCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCkgeworICAgICAgICBpZiAodHJl
ZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KSB7
CiAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IHRyZWVFbGVtZW50LmJyZWFrcG9pbnQ7Ci0g
ICAgICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJl
YWtwb2ludCkpCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5nbG9iYWwpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBsZXQgc291cmNlQ29kZSA9IGJyZWFrcG9pbnQu
c291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlOwpAQCAtMTk4MSwyNSArMTk4MSw5
IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0
dGluZ3Muc2hvd0FsbE1pY3JvdGFza3NCcmVha3BvaW50OwogICAgICAgICAgICAgYnJlYWs7CiAK
LSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAg
ICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbEludGVydmFsc0JyZWFrcG9pbnQ7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxM
aXN0ZW5lcnNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdzLnNo
b3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAg
Y2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3BvaW50OgogICAgICAg
ICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxSZXF1ZXN0c0JyZWFrcG9pbnQ7CiAg
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxUaW1lb3V0c0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Mu
c2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9
CiAKICAgICAgICAgaWYgKHNldHRpbmcpCkBAIC0yMDA4LDcgKzE5OTIsNyBAQCBXSS5Tb3VyY2Vz
TmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsIGV4dGVuZHMgVwogICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gV0kuVHJlZU91dGxpbmUu
RXZlbnQuRWxlbWVudFJlbW92ZWQpIHsKICAgICAgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVt
ZW50ID0gdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50Owog
ICAgICAgICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCB8fCAhV0kuZGVidWdnZXJNYW5hZ2Vy
LmlzQnJlYWtwb2ludFJlbW92YWJsZShzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0KSkgeworICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3Bv
aW50IHx8ICFzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkg
ewogICAgICAgICAgICAgICAgICAgICBjb25zdCBza2lwVW5yZXZlYWxlZCA9IHRydWU7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IGRvbnRQb3B1bGF0ZSA9IHRydWU7CiAgICAgICAgICAgICAg
ICAgICAgIGxldCB0cmVlRWxlbWVudFRvU2VsZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2
ZXJzZU5leHRUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgZG9udFBvcHVsYXRlKTsKQEAgLTIw
NTIsMjUgKzIwMzYsMjMgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9pbnRz
KCkgfHwgV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnRzKCkpIHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgbGFiZWwsIGNoZWNrZWQpIHsKKyAgICAgICAgICAgIGZ1bmN0
aW9uIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQobGFiZWwsIGJyZWFrcG9pbnQs
IHR5cGUpIHsKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0o
bGFiZWwsICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpCisgICAgICAg
ICAgICAgICAgICAgIGlmIChicmVha3BvaW50KQogICAgICAgICAgICAgICAgICAgICAgICAgV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAg
ICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVha3Bv
aW50LmRpc2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSwgY2hlY2tlZCk7CisgICAgICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudEJyZWFrcG9pbnQobmV3IFdJLkV2ZW50QnJlYWtwb2ludCh0eXBlKSk7CisgICAgICAg
ICAgICAgICAgfSwgISFicmVha3BvaW50KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
YWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
YWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFsbCBBbmltYXRpb24g
RnJhbWVzIiksIFdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZh
bHVlKTsKLSAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFs
bCBUaW1lb3V0cyIpLCBXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVl
KTsKLSAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwg
SW50ZXJ2YWxzIiksIFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVl
KTsKKyAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuVUlT
dHJpbmcoIkFsbCBBbmltYXRpb24gRnJhbWVzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxB
bmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRp
b25GcmFtZSk7CisgICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50
KFdJLlVJU3RyaW5nKCJBbGwgVGltZW91dHMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRp
bWVvdXRzQnJlYWtwb2ludCwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCk7CisgICAg
ICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJU3RyaW5nKCJB
bGwgSW50ZXJ2YWxzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3Bv
aW50LCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCk7CiAKICAgICAgICAgICAgIGNv
bnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCiAgICAgICAgICAgICBpZiAoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLnN1cHBvcnRzQWxsTGlzdGVuZXJzQnJlYWtwb2ludCgpKQotICAgICAgICAg
ICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwgRXZlbnRzIiks
IFdJLnNldHRpbmdzLnNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50LnZhbHVlKTsKKyAgICAgICAg
ICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJU3RyaW5nKCJB
bGwgRXZlbnRzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50
LCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7CiAKICAgICAgICAgICAgIGNvbnRl
eHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkV2ZW50IEJyZWFrcG9pbnRcdTIwMjYiKSwg
KCkgPT4gewogICAgICAgICAgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdJLkV2ZW50QnJlYWtw
b2ludFBvcG92ZXIodGhpcyk7CkBAIC0yNDIxLDcgKzI0MDMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICBsZXQgd2FzU2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgbGV0IG9s
ZERlYnVnZ2VyVHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICBsZXQgbmV3RGVidWdnZXJUcmVl
RWxlbWVudCA9IG51bGw7Ci0gICAgICAgIGlmIChkZWJ1Z2dlck9iamVjdCBpbnN0YW5jZW9mIFdJ
LkJyZWFrcG9pbnQpIHsKKyAgICAgICAgaWYgKGRlYnVnZ2VyT2JqZWN0IGluc3RhbmNlb2YgV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQpIHsKICAgICAgICAgICAgIG9sZERlYnVnZ2VyVHJlZUVsZW1l
bnQgPSB0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChkZWJ1Z2dl
ck9iamVjdCk7CiAgICAgICAgICAgICBpZiAob2xkRGVidWdnZXJUcmVlRWxlbWVudCkKICAgICAg
ICAgICAgICAgICB3YXNTZWxlY3RlZCA9IG9sZERlYnVnZ2VyVHJlZUVsZW1lbnQuc2VsZWN0ZWQ7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9U
ZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4IGY5MmRkMmIzMTBl
NC4uZjdkMmRlZmY0MTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5q
cwpAQCAtOTgsNyArOTgsNyBAQCBXSS5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRl
eHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDbwogICAgIGdldCBzdXBw
bGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsKICAgICAgICAgbGV0IG9iamVjdHMg
PSBXSS5kZWJ1Z2dlck1hbmFnZXIucHJvYmVTZXRzLmZpbHRlcihmdW5jdGlvbihwcm9iZVNldCkg
ewotICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLmNvbnRlbnRJZGVudGlmaWVyID09
PSBwcm9iZVNldC5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyOworICAgICAgICAgICAgcmV0
dXJuICEocHJvYmVTZXQuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KSB8fCB0aGlzLl9yZXNvdXJjZS5jb250ZW50SWRlbnRpZmllciA9PT0gcHJvYmVTZXQuYnJl
YWtwb2ludC5jb250ZW50SWRlbnRpZmllcjsKICAgICAgICAgfSwgdGhpcyk7CiAKICAgICAgICAg
Ly8gSWYgdGhlIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGhhcyBhbiBleGVjdXRpb25MaW5lTnVtYmVy
LCB3ZSBjYW4gYXNzdW1lCkBAIC0zMTksNyArMzE5LDcgQEAgV0kuVGV4dFJlc291cmNlQ29udGVu
dFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLlJlc291cmNl
Q28KICAgICBfcHJvYmVTZXRzQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVh
a3BvaW50ID0gZXZlbnQuZGF0YS5wcm9iZVNldC5icmVha3BvaW50OwotICAgICAgICBpZiAoYnJl
YWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5yZXNvdXJjZSkK
KyAgICAgICAgaWYgKCEoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KSB8fCBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlz
LnJlc291cmNlKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
Q29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdl
KTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmlu
ZGV4IDBmMjQ4OTRmMzg5Yy4uMDIxZGJlZTA1ZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3Nz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTIzLDE2ICsyMywxNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS5icmVha3BvaW50LnVybCAuc3VidGl0bGUgewor
Lml0ZW0uYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlIHsKICAgICBmb250LWZhbWlseTogTWVubG8s
IG1vbm9zcGFjZTsKIH0KIAotLmJyZWFrcG9pbnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQt
aWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uIHsK
ICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjVVJMQnJlYWtwb2ludC1s
aWdodCk7CiB9CiAKIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAu
YnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAg
Lml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVu
dDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1VSTEJyZWFrcG9pbnQtZGFyayk7CiAgICAg
fQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCAwMjhhNTA2ZjcxMjUuLjhkMjc2ZDQzYzg2NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMTUgKzIzLDE1
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuVVJMQnJl
YWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVu
ZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50CitXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBj
bGFzcyBVUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0g
PSB7fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0g
e30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuVVJMQnJlYWtwb2ludCk7CiAKLSAgICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJyZWFrcG9p
bnQiLCAidXJsIl07Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05h
bWVzLnB1c2goY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFt
ZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOworICAgICAgICBjbGFzc05hbWVzLnB1
c2goInVybCIpOwogCiAgICAgICAgIGxldCBzdWJ0aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkg
ewpAQCAtNDIsMTE1ICs0Miw2IEBAIFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNz
IFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgICAg
ICAgICAgc3VidGl0bGUgPSAiLyIgKyBicmVha3BvaW50LnVybCArICIvIjsKICAgICAgICAgfQog
Ci0gICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7
Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2wo
IkltYWdlcy9CcmVha3BvaW50LnN2ZyIpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc05hbWUg
PSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05h
bWU7Ci0KLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotICAg
IH0KLQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAg
c3VwZXIub25hdHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2
ZW50TGlzdGVuZXIoV0kuVVJMQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwg
dGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxl
ZERpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9i
b3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRD
bGlja2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50
Rm9jdXNlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsKLSAg
ICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSB0aGlzLl9zdGF0
dXNJbWFnZUVsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1
cy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50
Q2xpY2tlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwg
dGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0
dXMuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVs
ZW1lbnRNb3VzZURvd24pOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwotICAgIH0K
LQotICAgIG9uZGV0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7Ci0KLSAg
ICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExp
c3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0g
ICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3Zl
RXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRN
b3VzZURvd24pOwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tl
ZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9
IG51bGw7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0g
bnVsbDsKLSAgICB9Ci0KLSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBzZXQg
dGhpcyBmbGFnIHNvIHRoYXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwotICAg
ICAgICAvLyBCcmVha3BvaW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRl
bGV0ZWQgZnJvbQotICAgICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0
c2lkZSBpdCAoZS5nLiBUZXh0RWRpdG9yKS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxl
dGVLZXlib2FyZFNob3J0Y3V0ID0gdHJ1ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlVVJMQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRo
aXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgb25zcGFjZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0g
ICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29u
dGV4dE1lbnUsIGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0OwotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVk
ID8gV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJs
ZSBCcmVha3BvaW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRo
aXMuX3RvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAg
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9zdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xl
QnJlYWtwb2ludCgpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKGV2
ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIG91dGxpbmUgZm9jdXMuCi0gICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVs
ZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgZWxl
bWVudCBzZWxlY3Rpb24uCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0K
LQotICAgIF90b2dnbGVCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QuZGlzYWJsZWQgPSAhdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZDsKLSAg
ICB9Ci0KLSAgICBfdXBkYXRlU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5zdGF0
dXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0
LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxl
Q2xhc3NOYW1lLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkKTsKLSAgICAgICAgdGhp
cy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVz
SW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lLCBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2lu
dHNFbmFibGVkKTsKKyAgICAgICAgc3VwZXIoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxl
LCBzdWJ0aXRsZX0pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWU5ZGY5MzFjMmVhLi5iNGMwNzNmNTc5
YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSw0NSBAQAorMjAyMC0wOC0xNCAgRGV2aW4gUm91c3NvICA8ZHJv
dXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJl
YWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVu
dC1icmVha3BvaW50LXV0aWxpdGllcy5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5p
dGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlv
bnNUZXN0Q2FzZXMpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6
ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXN5bmMgdGVhcmRvd24pOgorICAgICAg
ICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlh
bGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCk6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5p
bWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0Ogor
ICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2lu
dHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFs
LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRz
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJy
ZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQWRkIHRlc3RzIGZvciBuZXcgZXZlbnQg
YnJlYWtwb2ludCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisKKyAgICAgICAgKiBodHRwL3Rlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzOgorICAgICAgICAoVGVzdFBhZ2Uu
cmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRz
KToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5q
czoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuUHJvdG9jb2xUZXN0LlBy
b2JlLmluc3RhbGxUcmFjaW5nTGlzdGVuZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
ZGVidWdnZXItc3RhY2stb3ZlcmZsb3cuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdn
ZXIvcGF1c2UtcmVhc29uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2Jl
LW1hbmFnZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQu
aHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10
aGlzLXZhbHVlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJz
aW9uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1s
OgorICAgICAgICAqIGluc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFrcG9pbnQu
aHRtbDoKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGJyZWFrcG9pbnQgdGVzdHMgdG8gdXNlIG5l
dyBtb2RlbCBvYmplY3RzLgorCiAyMDIwLTA4LTE0ICBKYW1lcyBEYXJwaW5pYW4gIDxqZGFycGlu
aWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbV2ViR0wyXSByZWxlYXNlU2hhZGVyQ29tcGls
ZXIgaXMgbm90IGFsbG93ZWQgdG8gYmUgc3VwcG9ydGVkIGluIFdlYkdMCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0Lmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVz
dC5qcwppbmRleCA0NmFhN2MzNDljYWUuLjJlMjcyMzNjMTU5ZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0
LmpzCkBAIC0xMywzNyArMTMsMzcgQEAgSW5zcGVjdG9yVGVzdC5zdGFydFRyYWNpbmdCcmVha3Bv
aW50cyA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQg
d2FzIHJlbW92ZWQuIik7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlv
bihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVu
dCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVj
dGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGlu
c3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBl
ISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGRpc2FibGVkIHN0
YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmRpc2FibGVkKTsKICAgICB9KTsKIAotICAgIFdJ
LkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVk
U3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNv
bHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBp
bnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAg
ICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJCcmVha3BvaW50IHJlc29sdmVkIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3Bv
aW50LnJlc29sdmVkKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgZnVuY3Rpb24o
ZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkg
ewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVk
IG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIp
OwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGF1dG9jb250aW51ZSBz
dGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAgIH0pOwogCi0g
ICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29u
ZGl0aW9uRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRD
aGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQu
dGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0ku
QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVu
ZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJy
ZWFrcG9pbnQgY29uZGl0aW9uIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmNvbmRpdGlvbik7CiAg
ICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rp
b25zRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5j
ZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJCcmVha3BvaW50IGFjdGlvbnMgY2hhbmdlZC4gTmV3IGNvdW50OiAiICsgYnJlYWtwb2lu
dC5hY3Rpb25zLmxlbmd0aCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qcyBiL0xheW91dFRlc3RzL2h0
dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzCmluZGV4IDc2OWFlNGFm
MDQ0MC4uMTFlZWQyZTU4MWI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rl
c3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qcwpAQCAtNjAsMzcgKzYwLDM3IEBA
IFByb3RvY29sVGVzdC5Qcm9iZS5pbnN0YWxsVHJhY2luZ0xpc3RlbmVycyA9IGZ1bmN0aW9uKCkK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgd2FzIHJlbW92ZWQuIik7CiAg
ICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVu
dC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIg
YnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIp
OworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGRpc2FibGVkIHN0YXRlIGNoYW5nZWQ6ICIgKyBi
cmVha3BvaW50LmRpc2FibGVkKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
LCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdl
dDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFr
cG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVj
dGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3Bv
aW50IHJlc29sdmVkIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LnJlc29sdmVkKTsKICAg
ICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50
LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
QXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJCcmVha3BvaW50IGF1dG9jb250aW51ZSBzdGF0ZSBjaGFuZ2VkOiAiICsg
YnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCBm
dW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2
ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhw
ZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQg
aW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5
cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgY29uZGl0aW9u
IGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmNvbmRpdGlvbik7CiAgICAgfSk7CiAKLSAgICBXSS5C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlk
Q2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCBmdW5j
dGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQs
ICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9i
amVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGFj
dGlvbnMgY2hhbmdlZC4gTmV3IGNvdW50OiAiICsgYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCk7
CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1hY3Rpb24tZXZhbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbAppbmRleCA1NTYyZTJiMzNmNmUuLmQ1NTQ3YmNj
NjcwYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9p
bnQtYWN0aW9uLWV2YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sCkBAIC0yOCw5ICsyOCw5IEBAIGZ1bmN0aW9uIHRl
c3QoKQogCiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb24oNCwgMCk7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYnJlYWtwb2ludCBhbmQg
aXRzIGFjdGlvbnMgYmVmb3JlIHNlbmRpbmcgYW55dGhpbmcgdG8gdGhlIGJhY2tlbmQuCi0gICAg
ICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7
CiAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWtw
b2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCBudWxs
LCAiYWN0aW9uKGEsIGIpIik7CisgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJy
ZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6ICJhY3Rpb24oYSwgYikifSk7CiAK
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFj
dGlvbi1sb2cuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1sb2cuaHRtbAppbmRleCBiN2NjMjNkYzM4NTUuLmVlMDk1NWE1YjYzYiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxv
Zy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFj
dGlvbi1sb2cuaHRtbApAQCAtMjQsMTEgKzI0LDExIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBz
Y3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDQsIDApOwotICAgICAgICAgICAg
ICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAg
ICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxv
Y2F0aW9uKTsKICAgICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7
CiAKICAgICAgICAgICAgICAgICBmdW5jdGlvbiBhZGRMb2dBY3Rpb24oZGF0YSkgewotICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9u
LlR5cGUuTG9nLCBicmVha3BvaW50LmFjdGlvbnMubGFzdFZhbHVlLCBkYXRhKTsKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5U
eXBlLkxvZywge2RhdGF9KTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBh
ZGRMb2dBY3Rpb24oImAke2F9YCIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1sCmluZGV4IGQwMmU4ZTNiOWZjMS4uMTQx
NzQ4NTg0M2Y3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1jb2x1bW5zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtY29sdW1ucy5odG1sCkBAIC0zOCw3ICszOCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICB2YXIgdGVzdEluZm8gPSB0ZXN0SW5mb0xpc3RbY3VycmVudFRlc3RJbmRleF07
CiAgICAgICAgIAogICAgICAgICB2YXIgbG9jYXRpb24gPSBjdXJyZW50U2NyaXB0c1t0ZXN0SW5m
by5zY3JpcHRJbmRleF0uY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRl
c3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9p
bnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludChsb2NhdGlvbik7CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sCmluZGV4IDI0MTE0NDYwOGQ4OC4uZjBhY2Mx
YTQyNDRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludC1zY29wZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50LXNjb3BlLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAg
ICAgICAgdmFyIHRlc3RJbmZvID0gdGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhdOwogICAg
ICAgICB2YXIgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9u
KHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIHZhciBicmVha3BvaW50
ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9
IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAKICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UodGVzdEluZm8uc3RhcnRGdW5jKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93
Lmh0bWwKaW5kZXggNGQ5NTdjODA5MjczLi4yYzdmN2RhNjQ0ZDUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxv
dy5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyAwIGJh
c2VkIGluZGljZXMuCiAgICAgICAgIGxldCB0ZXN0SW5mbyA9IHtsaW5lOiA4LCBjb2x1bW46IDh9
OwogICAgICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxv
Y2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIGxldCBicmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICBsZXQgYnJlYWtw
b2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzdGFydCgpIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1sCmluZGV4IGFjYzE5NTNi
NjMyMy4uYTZhZmQ0NDRlOGZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtcmVhc29uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLXJlYXNvbi5odG1sCkBAIC0xNiw3ICsxNiw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICBpZiAoIS9wYXVzZS1yZWFzb25zXC5qcyQvLnRlc3Qoc2NyaXB0LnVybCkpCiAgICAg
ICAgICAgICBjb250aW51ZTsKICAgICAgICAgbGV0IHNvdXJjZUNvZGVMb2NhdGlvbiA9IHNjcmlw
dC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oMywgMCk7Ci0gICAgICAgIGxldCBicmVha3BvaW50
ID0gbmV3IFdJLkJyZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0aW9u
KTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1hbmFnZXItYWRkLXJlbW92ZS1hY3Rpb25z
Lmh0bWwKaW5kZXggYmY0YWFmMjFjMjI2Li5mNTZhMzZiMzYzYjIgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9u
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2Vy
LWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCkBAIC0zMywxNCArMzMsMTQgQEAgZnVuY3Rpb24gdGVz
dCgpCiAKICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3Vy
Y2VDb2RlTG9jYXRpb24oNCwgMCk7CiAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGJyZWFrcG9p
bnQgYW5kIGl0cyBhY3Rpb25zIGJlZm9yZSBzZW5kaW5nIGFueXRoaW5nIHRvIHRoZSBiYWNrZW5k
LgotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlv
bik7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRy
dWU7CiAgICAgICAgICAgICBmb3IgKHZhciBpIG9mIFswLCAxXSkKLSAgICAgICAgICAgICAgICBi
cmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51
bGwsICJhIik7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLlByb2JlLCB7ZGF0YTogImEifSk7CiAKICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCi0gICAgICAgICAg
ICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZl
ZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRl
RGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQoYnJlYWtwb2ludC5yZXNvbHZlZCwgIkJyZWFrcG9pbnQgc2hvdWxkIGJlIHJlc29s
dmVkLiIpOwogICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVh
a3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3Rl
cHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1sCmluZGV4IGExNzI1Y2Zi
ZjlhNS4uZmZmYWUwZTI5OTgxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGlu
Zy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwKQEAgLTI0LDkgKzI0LDkgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAvLyBTZXQgYXV0b0NvbnRpbnVlIGJyZWFrcG9p
bnQuCiAgICAgICAgICAgICBsZXQgc2NyaXB0ID0gV0kubmV0d29ya01hbmFnZXIubWFpbkZyYW1l
Lm1haW5SZXNvdXJjZS5zY3JpcHRzWzBdOwogICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gc2Ny
aXB0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig4LCAwKTsKLSAgICAgICAgICAgIHZhciBicmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOwotICAgICAgICAgICAgYnJlYWtw
b2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCBudWxs
LCAiYWxlcnQoMS41KTsiKTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJ
LkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6ICJhbGVydCgxLjUpOyJ9KTsK
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogCiAgICAgICAgICAgICAvLyBTdGVwIHRocm91Z2ggdGhlIGJyZWFrcG9pbnQuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10
aGlzLXZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxl
dGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0bWwKaW5kZXggMzk3NTlkY2I2NTRhLi5jNzJiYmNlMmI2
MWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0
ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0bWwKQEAgLTE1LDcgKzE1LDcg
QEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIDAgYmFzZWQgaW5kaWNlcy4KICAgICAgICAg
bGV0IHRlc3RJbmZvID0ge2xpbmU6IDMsIGNvbHVtbjogNH07CiAgICAgICAgIGxldCBsb2NhdGlv
biA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8ubGluZSwg
dGVzdEluZm8uY29sdW1uKTsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtw
b2ludChsb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBh
Z2UoInN0YXJ0QUJDKCkiKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci90YWlsLXJlY3Vyc2lvbi5odG1sCmluZGV4IDhjYmFiYTFhZDJlYy4uNjViMGNjNjFh
ZTM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1
cnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1
cnNpb24uaHRtbApAQCAtMjQsNyArMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFy
IHRlc3RJbmZvcyA9IFt7bGluZSA6IDMsIGNvbHVtbiA6IDh9LCB7bGluZSA6IDQsIGNvbHVtbiA6
IDh9XTsKICAgICAgICAgZm9yIChsZXQgdGVzdEluZm8gb2YgdGVzdEluZm9zKSB7CiAgICAgICAg
ICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9u
KHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgICAgICBsZXQgYnJlYWtw
b2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBicmVh
a3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAg
ICB9CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInN0YXJ0UmVjdXJzZSgp
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50
LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1l
eHBlY3RlZC50eHQKaW5kZXggOTBiMjZhNzdiZDU1Li5mOWVmMDRmNzlkNmMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1l
LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQK
QEAgLTEsOCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cg
MQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNT
QUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5U
IEFDVElPTiBMT0cgNAogVGVzdHMgZm9yIEV2ZW50IEFuaW1hdGlvbkZyYW1lIGJyZWFrcG9pbnRz
LgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9u
RnJhbWUKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25G
cmFtZS5BZGRCcmVha3BvaW50CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVh
a3BvaW50Li4uCiBBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgog
RmlyaW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxk
IHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAgLTE1LDYgKzIwLDcgQEAgQVNZ
TkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLkFkZERpc2FibGVkQnJl
YWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgog
QWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAi
YW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmlt
YXRpb25GcmFtZSIgb24gd2luZG93Li4uCkBAIC0yMiw2ICsyOCw3IEBAIFBBU1M6IFNob3VsZCBu
b3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25G
cmFtZS5SZW1vdmVCcmVha3BvaW50CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBC
cmVha3BvaW50Li4uCiBBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4u
LgogUmVtb3ZpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5n
ICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9uIHdpbmRvdy4uLgpAQCAtMjksNiArMzYsNyBAQCBQ
QVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5n
IHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVu
dC5BbmltYXRpb25GcmFtZS5SZW1vdmVEaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmlt
YXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1l
IiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQg
QnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2lu
dC4uLgpAQCAtMzYsMyArNDQsMTAzIEBAIEZpcmluZyAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBv
biB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQg
YnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAorLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLk9wdGlvbnMuQ29uZGl0aW9u
CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcg
ImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlv
biB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0
aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKwor
U2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLk9wdGlvbnMuQWN0aW9uLkxvZworQ3Jl
YXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJhbmlt
YXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4u
LgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5BY3Rpb25z
LkV2YWx1YXRlCitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4u
CitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcg
ZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0Vk
aXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRl
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5p
bmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFr
cG9pbnRzLmh0bWwKaW5kZXggZjBiYTQ3YjQ2MjUyLi5mZmFlZjhiNGU0NzMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1l
LWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbApAQCAtNDUsNyArNDUsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAg
ICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRC
cmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJl
YWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSkKICAgICAgICAg
ICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRv
dyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKICAgICAgICAgfSwK
QEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZh
aWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29u
LkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxl
ZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFt
ZXNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSkK
ICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVC
cmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChy
ZWplY3QpOwpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0
KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1
c2VSZWFzb24uQW5pbWF0aW9uRnJhbWUsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9y
IHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9u
RnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5y
ZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5j
YXRjaChyZWplY3QpOwpAQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAg
ICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFn
ZXIuUGF1c2VSZWFzb24uQW5pbWF0aW9uRnJhbWUsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1
c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAu
dGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBl
dmVudE5hbWUpKQpAQCAtOTUsNiArOTUsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0
ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7
CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9u
c1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUs
IGV2ZW50TmFtZSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9l
dmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4
dAppbmRleCA1ZWM0ODBhNzhiNWQuLmFjYjcwOWZmMGY4MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1p
bnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAotVGVzdHMg
Zm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRzLgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5U
IEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgor
Q09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdF
OiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAorVGVzdHMgZm9yIEV2ZW50IEludGVydmFsIGJyZWFr
cG9pbnRzLgogCiAKLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuVGlt
ZXIKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwKIC0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5BZGRCcmVha3Bv
aW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50
ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0SW50ZXJ2YWwiIG9uIHdpbmRv
dy4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAg
LTE1LDYgKzIwLDcgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLkFk
ZERpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50
Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgImlu
dGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5k
b3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJs
ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0
ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLlJlbW92ZUJyZWFrcG9pbnQKK0Ny
ZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJpbnRlcnZhbCIg
RXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50
Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KQEAgLTI5LDYgKzM2LDcgQEAg
UEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgogLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuSW50ZXJ2YWwuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIERpc2FibGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJp
bnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgpAQCAtMzcsNiArNDUsNyBAQCBQQVNTOiBTaG91
bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5n
IHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVu
dC5JbnRlcnZhbC5SZXBlYXRGaXJlQnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVu
dCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBG
aXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZv
cmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC01NSwzICs2NCwxMDMgQEAgQVNZTkMgQ0FMTCBT
VEFDSzoKIDM6IFtQXSBHbG9iYWwgQ29kZQogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5D
b25kaXRpb24KK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5n
ICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAn
ZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5u
aW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5JZ25vcmVD
b3VudAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImlu
dGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzIn
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVh
cmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZh
bC5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2lu
dC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9n
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxv
ZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBs
b2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5PcHRpb25zLkFj
dGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgor
QWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUg
YWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZh
bHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1sCmluZGV4IGIzYjJh
ZmZlODY0Zi4uMDI4NGJkYTI5YWViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5o
dG1sCkBAIC05LDIwICs5LDIwIEBACiBsZXQgaW50ZXJ2YWxJRCA9IE5hTjsKIAogZnVuY3Rpb24g
aGFuZGxlV2luZG93X3NldEludGVydmFsKCkgewotICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRU
b0Zyb250ZW5kKCJUZXN0UGFnZS1zZXRJbnRlcnZhbCIpOwotCiAgICAgcmVwZWF0Q2xlYXJJbnRl
cnZhbCgpOworCisgICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdl
LXNldEludGVydmFsIik7CiB9CiAKIGZ1bmN0aW9uIGhhbmRsZVJlcGVhdCgpIHsKIH0KIAogZnVu
Y3Rpb24gdHJpZ2dlcl9zZXRJbnRlcnZhbCgpIHsKLSAgICBpbnRlcnZhbElEID0gc2V0SW50ZXJ2
YWwoaGFuZGxlV2luZG93X3NldEludGVydmFsLCAxMDApOworICAgIGludGVydmFsSUQgPSBzZXRJ
bnRlcnZhbChoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2YWwsIDEwKTsKIH0KIAogZnVuY3Rpb24gcmVw
ZWF0U2V0SW50ZXJ2YWwoKSB7Ci0gICAgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGhhbmRsZVJl
cGVhdCwgMTAwKTsKKyAgICBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoaGFuZGxlUmVwZWF0LCAx
MCk7CiB9CiAKIGZ1bmN0aW9uIHJlcGVhdENsZWFySW50ZXJ2YWwoKSB7CkBAIC0zMyw3ICszMyw3
IEBAIGZ1bmN0aW9uIHJlcGVhdENsZWFySW50ZXJ2YWwoKSB7CiBmdW5jdGlvbiB0ZXN0KCkgewog
ICAgIGNvbnN0IGV2ZW50TmFtZSA9ICJzZXRJbnRlcnZhbCI7CiAKLSAgICBsZXQgc3VpdGUgPSBJ
bnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTURlYnVnZ2VyLkV2ZW50LlRpbWVyIik7
CisgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET01EZWJ1
Z2dlci5FdmVudC5JbnRlcnZhbCIpOwogCiAgICAgc3VpdGUuYWRkVGVzdENhc2UoewogICAgICAg
ICBuYW1lOiBgRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuQWRkQnJlYWtwb2ludGAsCkBAIC02
MSw3ICs2MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgp
OwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0Jy
ZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAgICAg
ICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93
IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwogICAgICAgICB9LApA
QCAtNzQsNyArNzQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUs
IHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFp
bE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24u
SW50ZXJ2YWwsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFr
cG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFk
ZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQp
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4o
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5k
b3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04OCw3ICs4
OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShy
ZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5JbnRlcnZhbCwg
ZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOwog
Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50
KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5h
bWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC0xMDIsNyArMTAyLDcgQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJl
amVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkludGVydmFsLCBldmVudE5hbWUs
ICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQo
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAg
ICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93
IiwgZXZlbnROYW1lKSkKQEAgLTEzNCw3ICsxMzQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZh
bCkKICAgICAgICAgICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiRmlyaW5nIFwic2V0SW50ZXJ2YWxcIiBvbiB3aW5kb3cuLi4iKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgcmVwZWF0U2V0SW50
ZXJ2YWwoKWApOwpAQCAtMTQ0LDExICsxNDQsMTMgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAogICAg
IH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9w
dGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsLCBl
dmVudE5hbWUpOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3Nj
cmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVuVGVzdCgpIj4KLSAgICA8cD5UZXN0cyBm
b3IgRXZlbnQgVGltZXIgYnJlYWtwb2ludHMuPC9wPgorICAgIDxwPlRlc3RzIGZvciBFdmVudCBJ
bnRlcnZhbCBicmVha3BvaW50cy48L3A+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9p
bnRzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZl
bnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IDc4MWI3Y2QyZGQwYS4u
YTllZjhmZjhhZGZjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLWV4
cGVjdGVkLnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBB
Q1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NP
TlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTog
QlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBFdmVudCBMaXN0ZW5lciBicmVha3Bv
aW50cy4KIAogCkBAIC03NSw2ICs3OSw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJl
bW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAog
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lkxpc3RlbmVyLkFsbEV2ZW50
c0JyZWFrcG9pbnQKK0NyZWF0aW5nICJsaXN0ZW5lciIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRk
aW5nICJsaXN0ZW5lciIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJjbGljayIgb24gYm9k
eS4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAg
LTEyMSwzICsxMjYsMTAzIEBAIERpc2FibGluZyBicmVha3BvaW50cy4uLgogUEFTUzogU2hvdWxk
IGhhdmUgcGF1c2VkIG9uY2UuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkNvbmRpdGlv
bgorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImxpc3RlbmVy
OmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxz
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisK
K1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcg
dGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLklnbm9yZUNvdW50
CitDcmVhdGluZyAiY2xpY2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAibGlzdGVuZXI6
Y2xpY2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicu
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFy
ZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lkxpc3RlbmVy
Lk9wdGlvbnMuQWN0aW9uLkxvZworQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4u
CitBZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBs
b2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4
ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcg
bG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5n
IGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lkxpc3RlbmVyLk9wdGlvbnMu
QWN0aW9ucy5FdmFsdWF0ZQorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCitB
ZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFs
dWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGlu
ZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
RWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0
aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0
ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwKaW5kZXgg
ZmJiNDk4MDhlZmU5Li42NzQ2MTZhODU4OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMuaHRtbAorKysgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9p
bnRzLmh0bWwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAg
ICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgZXZlbnROYW1lKQorICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWV9KQogICAgICAgICAgICAgICAgIC50aGVu
KEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVudE5h
bWUpKQogICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwogICAgICAgICAgICAgfSwKQEAg
LTcxLDcgKzcxLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2
ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VS
ZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVk
IGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVy
LCBldmVudE5hbWUpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2
ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgiYm9keSIsIGV2ZW50TmFtZSkpCiAgICAg
ICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04NSw3ICs4NSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJl
amVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBldmVudE5hbWUs
ICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAg
LnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAg
ICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2
ZW50KCJib2R5IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsK
QEAgLTk5LDcgKzk5LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRlc3QocmVz
b2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1
c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92
ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCB7ZXZlbnROYW1lfSkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAg
ICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQo
ImJvZHkiLCBldmVudE5hbWUpKQpAQCAtMTI4LDcgKzEyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgICAgICB9KTsKIAotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuTGlzdGVuZXIpCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gYm9keS4uLiIp
OwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0
cmlnZ2VyX2NsaWNrKClgKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewog
ICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAiY2xpY2siKQorICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZTogImNsaWNrIn0pCiAgICAgICAgICAgICAudGhlbigo
KSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNr
XCIgb24gZGl2I3guLi4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgY2xpY2tYKClgKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAg
ICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3Jl
YXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgImNsaWNrIikK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWU6ICJjbGljayJ9
KQogICAgICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJGaXJpbmcgXCJjbGlja1wiIG9uIGRpdiN4Li4uIik7CiAgICAgICAgICAgICAgICAg
cmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrWCgpYCk7CkBAIC0yMjEs
NiArMjIxLDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUs
IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAiY2xpY2siKTsKKwogICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10
aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCBjYTVkMDEwZGVlYzkuLjlhNmJm
OGFkMWIyYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9l
dmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQu
dHh0CkBAIC0xLDggKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04g
TE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUg
TUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBFdmVudCBUaW1lciBicmVha3BvaW50cy4KIAog
CiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyCiAtLSBSdW5u
aW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZW91dC5BZGRCcmVha3BvaW50CitD
cmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJ0aW1lb3V0IiBF
dmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldFRpbWVvdXQiIG9uIHdpbmRvdy4uLgogUEFT
UzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAgLTE1LDYgKzIw
LDcgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuQWRkRGlzYWJsZWRC
cmVha3BvaW50CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5n
ICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgInRpbWVvdXQiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0VGltZW91dCIgb24gd2luZG93Li4uCkBAIC0yMiw2
ICsyOCw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQu
CiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01E
ZWJ1Z2dlci5FdmVudC5UaW1lb3V0LlJlbW92ZUJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIFJlbW92aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldFRp
bWVvdXQiIG9uIHdpbmRvdy4uLgpAQCAtMjksNiArMzYsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBh
dXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAK
IC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lb3V0LlJlbW92ZURp
c2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4K
IEFkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2lu
dC4uLgpAQCAtMzYsMyArNDQsMTAzIEBAIEZpcmluZyAic2V0VGltZW91dCIgb24gd2luZG93Li4u
CiBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQu
CiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01E
ZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25zLkNvbmRpdGlvbgorQ3JlYXRpbmcgInRpbWVvdXQi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4u
LgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuVGltZXIuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KK0FkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0
aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNl
LgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9N
RGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5BY3Rpb24uTG9nCitDcmVhdGluZyAidGltZW91
dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50
Li4uCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlv
bi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJy
ZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRp
bWVyLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KK0FkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVl
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1
YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1
bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbApp
bmRleCBhNDFlY2Q2OWVjYjcuLjZhMzQ5YTRiNzcyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFr
cG9pbnRzLmh0bWwKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gaGFuZGxlV2luZG93X3NldFRp
bWVvdXQoKSB7CiB9CiAKIGZ1bmN0aW9uIHRyaWdnZXJfc2V0VGltZW91dCgpIHsKLSAgICBzZXRU
aW1lb3V0KGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0LCAxMDApOworICAgIHNldFRpbWVvdXQoaGFu
ZGxlV2luZG93X3NldFRpbWVvdXQsIDEwKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgpIHsKQEAgLTQ1
LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVh
a3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRl
QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KQogICAgICAgICAgICAg
LnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93Iiwg
ZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwogICAgICAgICB9LApAQCAt
NTgsNyArNTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9u
UGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uVGlt
ZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2lu
dC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJl
YWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAu
dGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBl
dmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC03Miw3ICs3Miw3IEBA
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZl
LCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5UaW1lb3V0LCBldmVudE5h
bWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAg
ICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04Niw3ICs4Niw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRl
YnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5UaW1lb3V0LCBldmVudE5hbWUsICJTaG91bGQgbm90
IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkp
CkBAIC05NSw2ICs5NSw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlYXJkb3duOiBJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwKICAgICB9KTsKIAorICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2Vz
KHN1aXRlLCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0LCBldmVudE5hbWUpOworCiAg
ICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJy
ZWFrcG9pbnQtdXRpbGl0aWVzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9yZXNvdXJjZXMvZXZlbnQtYnJlYWtwb2ludC11dGlsaXRpZXMuanMKaW5kZXggMTliMjVkMWFk
ZDIwLi5lNDAxM2E4MWJjZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9p
bnQtdXRpbGl0aWVzLmpzCkBAIC0xLDE0ICsxLDE5OSBAQAogVGVzdFBhZ2UucmVnaXN0ZXJJbml0
aWFsaXplcigoKSA9PiB7CiAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQgPSB7fTsK
IAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25z
VGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHR5cGUsIGV2ZW50TmFtZSkgeworICAgICAgICBh
c3luYyBmdW5jdGlvbiB0cmlnZ2VyQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIHJldHVy
biBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50
KCJUZXN0UGFnZS0iICsgZXZlbnROYW1lKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyXyR7ZXZlbnROYW1lfSgpYCksCisgICAgICAgICAgICBd
KTsKKyAgICAgICAgfQorCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAg
IG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQ29uZGl0aW9uIiwKKyAgICAgICAgICAgIGRl
c2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNz
IHRoZSBicmVha3BvaW50IGhhcyBhIHRydXRoeSBicmVha3BvaW50IGNvbmRpdGlvbi4iLAorICAg
ICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9
IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQp
ID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisK
KyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLiIpOworICAg
ICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0gImZhbHNlIjsKKworICAgICAgICAg
ICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgICAg
ICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5u
ZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJT
ZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGJyZWFrcG9pbnQuY29uZGl0aW9uID0gInRydWUiOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAg
ICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7Cisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKworICAgICAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1lICsgIi5PcHRpb25zLklnbm9yZUNv
dW50IiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdnZXIg
d2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50IGlzIGhpdCBhdCBsZWFzdCBhcyBt
YW55IHRpbWVzIGFzIGl0J3MgYGlnbm9yZUNvdW50YC4iLAorICAgICAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAg
ICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0
ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
U2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4iKTsKKyAgICAgICAgICAgICAgICBicmVha3Bv
aW50Lmlnbm9yZUNvdW50ID0gMjsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBp
IDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgp
OworCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2Uu
Iik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2Uu
Iik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
bGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwKKyAgICAgICAgfSk7CisKKyAgICAgICAg
c3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0
aW9ucy5BY3Rpb24uTG9nIiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBs
b2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQu
IiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNl
Q291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJN
YW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwg
KGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsK
KworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAg
ICAgICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhOiAiQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEifSk7CisK
KyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJT04gTE9HICR7aX1gOworCisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAg
ICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgbGV0IFttZXNzYWdlQWRkZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAg
ICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVN
YW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisgICAgICAgICAgICAgICAgICAgICAgICB0cmln
Z2VyQnJlYWtwb2ludCgpLAorICAgICAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG1lc3NhZ2VBZGRlZEV2ZW50LmRhdGEu
bWVzc2FnZS5tZXNzYWdlVGV4dCwgYWN0aW9uLmRhdGEsICJTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBp
LCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIsICJT
aG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdl
ci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB0
ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgICAg
IH0pOworCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1
aXRlLm5hbWUgKyAiLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZSIsCisgICAgICAgICAgICBkZXNj
cmlwdGlvbjogIkNoZWNrIHRoYXQgZXZhbHVhdGUgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUg
d2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7
CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAg
bGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVh
a3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGlu
ZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJl
YWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7
ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURSA9IDE7In0pOworCisgICAg
ICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gJHtpfTtg
OworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVl
Li4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGlu
dWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAg
ICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0ID0gYXdhaXQgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxV
QVRFYCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJl
YWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0LCBpLCAiU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2lu
dCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSwg
IlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hv
dWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVh
cmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9
KTsKKyAgICB9OworCiAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24g
PSBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludCk7Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1v
dmVFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFr
cG9pbnQpOwotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3Bv
aW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKLSAgICAg
ICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ/LnJlbW92ZSgpOworICAgICAg
ICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludD8ucmVtb3ZlKCk7
CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50Py5y
ZW1vdmUoKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtw
b2ludD8ucmVtb3ZlKCk7CiAKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIubGlzdGVuZXJCcmVha3BvaW50cykKLSAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAg
ICAgICBicmVha3BvaW50LnJlbW92ZSgpOwogCiAgICAgICAgIHJlc29sdmUoKTsKICAgICB9OwpA
QCAtNDIsOCArMjI3LDExIEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewog
ICAgICAgICB9KTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludCA9IGZ1bmN0aW9uKHR5cGUsIGV2ZW50TmFtZSkgewotICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhgQ3JlYXRpbmcgIiR7ZXZlbnROYW1lfSIgRXZlbnQgQnJlYWtwb2lu
dC4uLmApOworICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQgPSBmdW5jdGlvbih0eXBlLCB7ZXZlbnROYW1lfSA9IHt9KSB7CisgICAgICAgIGlmICh0eXBl
ICE9PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcikKKyAgICAgICAgICAgIGV2ZW50
TmFtZSA9IG51bGw7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYENyZWF0aW5nICIke2V2
ZW50TmFtZSB8fCB0eXBlfSIgRXZlbnQgQnJlYWtwb2ludC4uLmApOwogICAgICAgICByZXR1cm4g
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChuZXcgV0kuRXZlbnRC
cmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KSk7CiAgICAgfTsKIApAQCAtNzQsNyArMjYyLDcg
QEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgICAgICAgICAgICAg
cmVzb2x2ZShicmVha3BvaW50KTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAg
ICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKICAgICAgICAgfSk7CiAgICAgfTsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1s
aXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9p
bnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dAppbmRleCA3NmE4NjQ0OGJjOWUuLjU4
Zjk1NjIyY2VjZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3Bv
aW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQKQEAg
LTEsMyArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6
IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNU
SU9OIExPRyA0CiBUZXN0aW5nIERPTUFnZW50LnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
IGFuZCBET01BZ2VudC5yZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci4KIAogICAKQEAg
LTE5LDYgKzIzLDk0IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgYmVmb3JlIGJ1dHRvbjIgZXZl
bnQgaGFuZGxlciBpcyBydW4uCiBDbGlja2luZyBidXR0b24xLi4uCiBQQVNTOiBTaG91bGQgbm90
IHBhdXNlIGJlZm9yZSBidXR0b24xIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgogCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQ29u
ZGl0aW9uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRv
ICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0
aW9ucy5JZ25vcmVDb3VudAorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLnNl
dEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQWN0aW9uLkxvZworCitBZGRpbmcg
bG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5n
IGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGlu
ZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlv
bi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00u
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCisK
K0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcg
ZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
CiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
LkludmFsaWQKIFBBU1M6IFNob3VsZCBwcm9kdWNlIGFuIGVycm9yLgogRXJyb3I6IE1pc3Npbmcg
ZXZlbnQgbGlzdGVuZXIgZm9yIGdpdmVuIGV2ZW50TGlzdGVuZXJJZApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1s
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5l
ci5odG1sCmluZGV4IDBkMmZlYTVhYTUyZC4uZjMwYzkyYTZkMDcxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0
ZW5lci5odG1sCkBAIC0yMyw5ICsyMywyMiBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgIGxldCBi
dXR0b24xTm9kZSA9IG51bGw7CiAgICAgbGV0IGJ1dHRvbjJOb2RlID0gbnVsbDsKIAotICAgIGZ1
bmN0aW9uIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKG5vZGVJZCkgewotICAgICAgICByZXR1
cm4gRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKG5vZGVJZCkKLSAgICAgICAgLnRo
ZW4oKHtsaXN0ZW5lcnN9KSA9PiBsaXN0ZW5lcnMuZmluZCgoZXZlbnRMaXN0ZW5lcikgPT4gZXZl
bnRMaXN0ZW5lci50eXBlID09PSAiY2xpY2siKSk7CisgICAgYXN5bmMgZnVuY3Rpb24gZ2V0Q2xp
Y2tFdmVudExpc3RlbmVyKG5vZGVJZCkgeworICAgICAgICBsZXQge2xpc3RlbmVyc30gPSBhd2Fp
dCBET01BZ2VudC5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobm9kZUlkKTsKKyAgICAgICAgcmV0
dXJuIGxpc3RlbmVycy5maW5kKChldmVudExpc3RlbmVyKSA9PiBldmVudExpc3RlbmVyLnR5cGUg
PT09ICJjbGljayIpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHNldEJyZWFrcG9pbnRG
b3JDbGlja0V2ZW50TGlzdGVuZXIobm9kZSkgeworICAgICAgICBsZXQgY2xpY2tFdmVudExpc3Rl
bmVyID0gYXdhaXQgZ2V0Q2xpY2tFdmVudExpc3RlbmVyKG5vZGUuaWQpOworICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydCghY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQsICJDbGlj
ayBldmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgbm90IGhhdmUgYSBicmVha3BvaW50
LiIpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7
CisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVu
ZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICByZXNvbHZlKGV2ZW50LmRhdGEuYnJlYWtwb2ludCk7
CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5zZXRCcmVha3Bv
aW50Rm9yRXZlbnRMaXN0ZW5lcihjbGlja0V2ZW50TGlzdGVuZXIpOworICAgICAgICB9KTsKICAg
ICB9CiAKICAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRP
TS5CcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciIpOwpAQCAtNDksNyArNjIsNyBAQCBmdW5jdGlv
biB0ZXN0KCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwodGFy
Z2V0RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3Rl
bmVyLCBgUGF1c2UgcmVhc29uIHNob3VsZCBiZSBMaXN0ZW5lci5gKTsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TmFt
ZSwgImNsaWNrIiwgYFBhdXNlIGRhdGEgZXZlbnROYW1lIHNob3VsZCBiZSAiY2xpY2siLmApOwog
Ci0gICAgICAgICAgICAgICAgYXdhaXRHZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUu
aWQpCisgICAgICAgICAgICAgICAgZ2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlk
KQogICAgICAgICAgICAgICAgIC50aGVuKChjbGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQodGFyZ2V0RGF0YS5wYXVzZURhdGEu
ZXZlbnRMaXN0ZW5lcklkID09PSBjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkLCBg
UGF1c2UgZGF0YSBldmVudExpc3RlbmVySWQgc2hvdWxkIGJlICIke2NsaWNrRXZlbnRMaXN0ZW5l
ci5ldmVudExpc3RlbmVySWR9Ii5gKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQoY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQsICJDbGljayBldmVudCBs
aXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgaGF2ZSBhIGJyZWFrcG9pbnQuIik7CkBAIC03Nyw3
ICs5MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKTsKICAgICAgICAgICAgIH0pOwogCi0g
ICAgICAgICAgICBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKKyAg
ICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAg
ICAgIC50aGVuKChjbGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmFzc2VydCghY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQsICJDbGlj
ayBldmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgbm90IGhhdmUgYSBicmVha3BvaW50
LiIpOwogCkBAIC0xMTEsNyArMTI0LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBXSS5EZWJ1
Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGBQYXVzZSByZWFzb24gc2hvdWxkIGJl
IExpc3RlbmVyLmApOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdl
dERhdGEucGF1c2VEYXRhLmV2ZW50TmFtZSwgImNsaWNrIiwgYFBhdXNlIGRhdGEgZXZlbnROYW1l
IHNob3VsZCBiZSAiY2xpY2siLmApOwogCi0gICAgICAgICAgICAgICAgYXdhaXRHZXRDbGlja0V2
ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCisgICAgICAgICAgICAgICAgZ2V0Q2xpY2tFdmVu
dExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQogICAgICAgICAgICAgICAgIC50aGVuKChjbGlja0V2
ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnQodGFyZ2V0RGF0YS5wYXVzZURhdGEuZXZlbnRMaXN0ZW5lcklkID09PSBjbGlja0V2ZW50TGlz
dGVuZXIuZXZlbnRMaXN0ZW5lcklkLCBgUGF1c2UgZGF0YSBldmVudExpc3RlbmVySWQgc2hvdWxk
IGJlICIke2NsaWNrRXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWR9Ii5gKTsKICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2xpY2tFdmVudExpc3RlbmVyLmhhc0Jy
ZWFrcG9pbnQsICJDbGljayBldmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgaGF2ZSBh
IGJyZWFrcG9pbnQuIik7CkBAIC0xMzksNyArMTUyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlja0J1dHRvbjEo
KWApOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tFdmVudExp
c3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAgZ2V0Q2xpY2tFdmVudExpc3RlbmVy
KGJ1dHRvbjFOb2RlLmlkKQogICAgICAgICAgICAgLnRoZW4oKGNsaWNrRXZlbnRMaXN0ZW5lcikg
PT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZlbnRMaXN0
ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hv
dWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwogCkBAIC0xNTQsNiArMTY3LDE5NSBAQCBmdW5jdGlv
biB0ZXN0KCkgewogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CisgICAgICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9u
cy5Db25kaXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVn
Z2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBoYXMgYSB0cnV0aHkgYnJl
YWtwb2ludCBjb25kaXRpb24uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBh
dXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRGb3JDbGlj
a0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRpbmcgY29u
ZGl0aW9uIHRvICdmYWxzZScuLi4iKTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9u
ID0gImZhbHNlIjsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7
CisgICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlNldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLiIpOworICAgICAgICAgICAgICAg
ICAgICBicmVha3BvaW50LmNvbmRpdGlvbiA9ICJ0cnVlIjsKKyAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwK
KyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwg
IlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGkgLSAyLCAiU2hv
dWxkIHBhdXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVha3BvaW50LnJl
bW92ZSgpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICB9
LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9N
LnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuSWdub3JlQ291bnQiLAorICAg
ICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNl
IHVubGVzcyB0aGUgYnJlYWtwb2ludCBpcyBoaXQgYXQgbGVhc3QgYXMgbWFueSB0aW1lcyBhcyBp
dCdzIGBpZ25vcmVDb3VudGAuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAg
IGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBh
dXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRGb3JDbGlj
a0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRpbmcgaWdu
b3JlQ291bnQgdG8gJzInLi4uIik7CisgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50
ID0gMjsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD00OyArK2kpIHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAg
ICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwKKyAgICAg
ICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3Vs
ZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGkgLSAyLCAiU2hvdWxkIHBh
dXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgp
OworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICB9LAorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLnNldEJy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQWN0aW9uLkxvZyIsCisgICAgICAgIGRl
c2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hl
biB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50Owor
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRG
b3JDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGlu
ZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJlYWtwb2ludC5j
cmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZywge2RhdGE6ICJCUkVBS1BP
SU5UIEFDVElPTiBMT0cgMSJ9KTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0g
NDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJFZGl0aW5nIGxvZyBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJT04gTE9HICR7aX1gOworCisgICAgICAg
ICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLiIpOworICAgICAgICAgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgbGV0IFttZXNzYWdlQWRk
ZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIFdJLmNv
bnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFk
ZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0
UGFnZUJ1dHRvbjFDbGljayIpLAorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2
YWx1YXRlSW5QYWdlKGBjbGlja0J1dHRvbjEoKWApLAorICAgICAgICAgICAgICAgIF0pOworCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChtZXNzYWdlQWRkZWRFdmVu
dC5kYXRhLm1lc3NhZ2UubWVzc2FnZVRleHQsIGFjdGlvbi5kYXRhLCAiU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGks
ICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIsICJTaG91bGQgbm90
IHBhdXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVha3BvaW50LnJlbW92
ZSgpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICB9LAor
ICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLnNl
dEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZSIsCisg
ICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBldmFsdWF0ZSBicmVha3BvaW50IGFjdGlv
bnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAorICAgICAgICBhc3luYyB0
ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICBs
ZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAr
K3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQg
c2V0QnJlYWtwb2ludEZvckNsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZSk7CisKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgbGV0IGFj
dGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5F
dmFsdWF0ZSwge2RhdGE6ICJ3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEUgPSAxOyJ9
KTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAg
ICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFZGl0
aW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZGF0
YSA9IGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEUgPSAke2l9O2A7CisKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNl
LmFsbChbCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVz
dFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwKKyAgICAgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQgPSBhd2Fp
dCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05f
RVZBTFVBVEVgKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKGJy
ZWFrcG9pbnRBY3Rpb25FdmFsdWF0ZVJlc3VsdCwgaSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9p
bnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxk
IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4i
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAg
ICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVn
Z2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsK
KwogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3Bv
aW50Rm9yRXZlbnRMaXN0ZW5lci5JbnZhbGlkIiwKICAgICAgICAgZGVzY3JpcHRpb246ICJJbnZh
bGlkIGV2ZW50IGxpc3RlbmVyIGlkZW50aWZpZXJzIHNob3VsZCBjYXVzZSBhbiBlcnJvci4iLApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sCmlu
ZGV4IGVlM2ExMjVhNzFkMS4uNWFjYmQxOTJmZTBlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXBhdXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sCkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIldvcmtlciBzaG91bGQgcGF1c2Ugb24g
YnJlYWtwb2ludC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAg
ICAgbGV0IGxvY2F0aW9uID0gd29ya2VyVGFyZ2V0Lm1haW5SZXNvdXJjZS5jcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb24oOCwgMCk7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5C
cmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgd29ya2VyLnBvc3RNZXNzYWdlKCJ0cmlnZ2VyQnJlYWtwb2lu
dCIpYCk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVh
a3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJl
ZC1icmVha3BvaW50Lmh0bWwKaW5kZXggYTNiMzM0YzRkNjYzLi5hM2YyNmZkZDAyZDcgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFr
cG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNo
YXJlZC1icmVha3BvaW50Lmh0bWwKQEAgLTk0LDcgKzk0LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydCh3b3JrZXJUYXJnZXQxLm1haW5SZXNvdXJjZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCk7
CiAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSB3b3JrZXJUYXJnZXQxLm1haW5SZXNvdXJjZS5j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oOCwgMCk7Ci0gICAgICAgICAgICBicmVha3BvaW50ID0g
bmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICAgICAgYnJlYWtwb2ludCA9IG5l
dyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgdHJpZ2dlcldvcmtlckJyZWFrcG9pbnRQYXVzZXMo
KWApOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3Ny4u
ZTAwZDgwNDllYjVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC02ODUs
MTIgKzY4NSw5IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19IRUFERVJT
CiAgICAgaW5zcGVjdG9yL0luc3BlY3RvclRhcmdldC5oCiAgICAgaW5zcGVjdG9yL1Blckdsb2Jh
bE9iamVjdFdyYXBwZXJXb3JsZC5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdEFyZ3VtZW50cy5oCi0g
ICAgaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxs
RnJhbWUuaAogICAgIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suaAogICAgIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgKLSAgICBpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5l
ci5oCi0gICAgaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKIAogICAgIGluc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yQWdlbnQuaAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVk
aXRBZ2VudC5oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>406772</attachid>
            <date>2020-08-18 01:51:26 -0700</date>
            <delta_ts>2020-08-21 18:50:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215362-20200818015125.patch</filename>
            <type>text/plain</type>
            <size>502858</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGRiZTkwYzAxOGIxZGJiYjU5NDljNzUzMjkyYTI2
Yzc3MTk1YzUwNDMuLmVjZGMxZThiNmZhZWIyZTEyNGQzZTZmYzU5NWYwMGM0NjMyYWZhMTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MSBAQAorMjAyMC0wOC0xOCAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxvd3MgZGV2ZWxvcGVycyB0
byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3aGVuIGB3aW5kb3cuZXZl
bnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGlnbm9yZSB0aGUgZmlyc3Qg
TiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3aGVuZXZlciBhbiBldmVu
dCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisgICAgICAgICogaW5zcGVj
dG9yL3Byb3RvY29sL0RPTS5qc29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNgIHBhcmFtYXRl
ciB0byBgRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyYCB0byBhbGxvdyBjb25maWd1
cmF0aW9uLgorCisgICAgICAgICogaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpzb246
CisgICAgICAgIEFkZCBhbiBgb3B0aW9uc2AgcGFyYW1hdGVyIHRvIGBET01EZWJ1Z2dlci5zZXRF
dmVudEJyZWFrcG9pbnRgIHRvIGFsbG93IGNvbmZpZ3VyYXRpb24uCisKKyAgICAgICAgKiBkZWJ1
Z2dlci9CcmVha3BvaW50Lmg6CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlkIGNvbnN0KTog
QWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnNvdXJjZUlEIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmxpbmVOdW1iZXIgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y29sdW1uTnVtYmVyIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNvbmRpdGlvbiBjb25zdCk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpCcmVha3BvaW50OjphY3Rpb25zIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OmlzQXV0b0NvbnRpbnVlIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJy
ZWFrcG9pbnQ6OnJlc2V0SGl0Q291bnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2lu
dDo6aXNMaW5rZWQgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6aXNS
ZXNvbHZlZCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50c0xpc3Q6On5C
cmVha3BvaW50c0xpc3QpOiBEZWxldGVkLgorICAgICAgICAqIGRlYnVnZ2VyL0JyZWFrcG9pbnQu
Y3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpBY3Rpb24pOiBB
ZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6Y3JlYXRlKTogQWRkZWQuCisgICAgICAg
IChKU0M6OkJyZWFrcG9pbnQ6OkJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJl
YWtwb2ludDo6bGluayk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpyZXNvbHZl
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OnNob3VsZFBhdXNlKTogQWRkZWQu
CisgICAgICAgIFVuaWZ5IGBKU0M6OkJyZWFrcG9pbnRgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHRC
cmVha3BvaW50YC4KKworICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0aXZlcy5oOgor
ICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmg6CisgICAgICAgICogZGVidWdnZXIvRGVidWdn
ZXIuY3BwOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6RGVidWdnZXIpOgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6YWRkT2JzZXJ2ZXIpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
OnJlbW92ZU9ic2VydmVyKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5EaXNw
YXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMgY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OmRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyk6IEFkZGVkLgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6c291cmNlUGFyc2VkKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2Vy
Ojp0b2dnbGVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmFwcGx5QnJlYWtw
b2ludHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVzb2x2ZUJyZWFrcG9pbnQpOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChKU0M6OkRlYnVn
Z2VyOjpyZW1vdmVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmRpZEhpdEJy
ZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNsZWFyQnJlYWtwb2lu
dHMpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9u
KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rp
b25zKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0
T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNhbmNlbFBhdXNl
QXROZXh0T3Bwb3J0dW5pdHkpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNjaGVk
dWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1
Z2dlcjo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6Y29udGludWVQcm9ncmFtKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
OnN0ZXBOZXh0RXhwcmVzc2lvbik6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwSW50b1N0
YXRlbWVudCk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwT3ZlclN0YXRlbWVudCk6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwT3V0T2ZGdW5jdGlvbik6CisgICAgICAgIChKU0M6
OkRlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmhhbmRs
ZVBhdXNlKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpleGNlcHRpb25PckNhdWdo
dFZhbHVlKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjphdEV4cHJlc3Npb24pOgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2xlYXJOZXh0UGF1c2VTdGF0ZSk6CisgICAgICAgIChK
U0M6OkRlYnVnZ2VyOjp3aWxsUnVuTWljcm90YXNrKTogQWRkZWQuCisgICAgICAgIChKU0M6OkRl
YnVnZ2VyOjpkaWRSdW5NaWNyb3Rhc2spOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6
Omhhc0JyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c2V0UGF1
c2VPbk5leHRTdGF0ZW1lbnQpOiBEZWxldGVkLgorICAgICAgICBVbmlmeSBgSlNDOjpEZWJ1Z2dl
cmAgYW5kIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB0byBzaW1wbGlmeSBicmVha3Bv
aW50IGxvZ2ljLgorICAgICAgICBJbnRyb2R1Y2UgdGhlIGNvbmNlcHQgb2YgYSAic3BlY2lhbCBi
cmVha3BvaW50Iiwgd2hpY2ggaXMgZXNzZW50aWFsbHkgYSBgSlNDOjpCcmVha3BvaW50YAorICAg
ICAgICB0aGF0IGlzIGV4cGVjdGVkIHRvIHBhdXNlIGF0IHRoZSBuZXh0IG9wcG9ydHVuaXR5IGJ1
dCBpc24ndCB0aWVkIHRvIGEgcGFydGljdWxhciBsb2NhdGlvbi4KKyAgICAgICAgQXMgYW4gZXhh
bXBsZSwgd2hlbmV2ZXIgYW4gZXZlbnQgYnJlYWtwb2ludCBpcyBoaXQsIGluc3RlYWQgb2YganVz
dCBwYXVzaW5nIGF0IHRoZSBuZXh0CisgICAgICAgIG9wcG9ydHVuaXR5LCB0aGUgbmV3bHkgbWFu
YWdlZCBgSlNDOjpCcmVha3BvaW50YCBpcyB1c2VkIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIs
IGFsbG93aW5nCisgICAgICAgIGZvciBpdCdzIGNvbmZpZ3VyYXRpb24gKGllLmcuIGNvbmRpdGlv
biwgaWdub3JlIGNvdW50LCBhY3Rpb25zLCBhdXRvLWNvbnRpbnVlKSB0byBiZSB1c2VkLgorCisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKEluc3BlY3Rvcjo6b2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6YnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcpOiBBZGRlZC4KKyAgICAg
ICAgKEluc3BlY3Rvcjo6cGFyc2VCcmVha3BvaW50T3B0aW9ucyk6IEFkZGVkLgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmZy
b21QYXlsb2FkKTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVha3BvaW50KTogQWRkZWQuCisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtw
b2ludDo6Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50IGNvbnN0KTogQWRkZWQuCisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6bWF0
Y2hlc1NjcmlwdFVSTCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZCk6IEFkZGVkLgor
ICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1
c2VSZWFzb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpo
YW5kbGVDb25zb2xlQXNzZXJ0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkU2NoZWR1bGVBc3luY0NhbGwpOgorICAgICAgICAoSW5zcGVjdG9yOjpidWls
ZERlYnVnZ2VyTG9jYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkU2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludCk6Cisg
ICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2Nh
dGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVk
dWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRk
ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxl
UGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KTog
QWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNl
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVzdW1lKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRs
ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1h
cFVSTEZvclNjcmlwdCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFBhcnNlU291cmNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6d2lsbFJ1bk1pY3JvdGFzayk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmRpZFJ1bk1pY3JvdGFzayk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblNvdW5kKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJbnNwZWN0
b3JCcmVha3BvaW50U3RhdGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKToKKyAgICAgICAgKEluc3BlY3Rv
cjo6bWF0Y2hlcyk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6OmJ1aWxkT2JqZWN0Rm9y
QnJlYWtwb2ludENvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKTogRGVsZXRlZC4K
KyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVz
ZU9uTmV4dFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgQ3JlYXRlIGEgcHJpdmF0ZSBgUHJvdG9jb2xCcmVha3BvaW50YCBjbGFzcyB0aGF0IGhv
bGRzIHRoZSBkYXRhIHNlbnQgYnkgdGhlIGZyb250ZW5kLiBUaGlzCisgICAgICAgIGlzIG5lY2Vz
c2FyeSBiZWNhdXNlIGJyZWFrcG9pbnRzIGluIHRoZSBmcm9udGVuZCBoYXZlIGEgcG90ZW50aWFs
bHkgb25lLXRvLW1hbnkgcmVsYXRpb25zaGlwCisgICAgICAgIHdpdGggYnJlYWtwb2ludHMgaW4g
dGhlIGJhY2tlbmQsIGFzIHRoZSBzYW1lIHNjcmlwdCBjYW4gYmUgbG9hZGVkIG1hbnkgdGltZXMg
b24gYSBwYWdlLiBFYWNoCisgICAgICAgIG9mIHRob3NlIHNjcmlwdHMgaXMgaW5kZXBlbmRlbnQs
IGhvd2V2ZXIsIGFuZCBjYW4gZXhlY3V0ZSBkaWZmZXJlbnRseSwgbWVhbmluZyB0aGF0IHRoZSBz
YW1lCisgICAgICAgIGJyZWFrcG9pbnQgZm9yIGVhY2ggc2NyaXB0IGFsc28gbmVlZHMgYSBkaWZm
ZXJlbnQgc3RhdGUgKGUuZy4gaWdub3JlIGNvdW50KS4gQXMgc3VjaCwgdGhlCisgICAgICAgIGBQ
cm90b2NvbEJyZWFrcG9pbnRgIGlzIGVmZmVjdGl2ZWx5IGEgdGVtcGxhdGUgdGhhdCBpcyBhY3R1
YWxpemVkIHdoZW5ldmVyIGEgbmV3IHNjcmlwdCBpcworICAgICAgICBwYXJzZWQgdGhhdCBtYXRj
aGVzIHRoZSBVUkwgb2YgdGhlIGBQcm90b2NvbEJyZWFrcG9pbnRgIHRvIGNyZWF0ZSBhIGBKU0M6
OkJyZWFrcG9pbnRgIHRoYXQKKyAgICAgICAgaXMgdXNlZCBieSB0aGUgYEpTQzo6RGVidWdnZXJg
LiBgUHJvdG9jb2xCcmVha3BvaW50YCBhbHNvIHBhcnNlcyBicmVha3BvaW50IGNvbmZpZ3VyYXRp
b25zLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChJbnNwZWN0
b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFjaERlYnVnZ2VyKToKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZl
bnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
QXVkaXRBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bik6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHA6CisgICAg
ICAgIChJbnNwZWN0b3I6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25Pbik6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyk6CisgICAgICAgIChJ
bnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyk6CisgICAgICAg
IChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFibGVQcm9wZXJ0
aWVzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVy
QWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50Lmg6CisgICAgICAgIFJlcGxhY2UgYEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2
ZXJgIHdpdGggYEpTQzo6RGVidWdnZXJgLgorCisgICAgICAgICogcnVudGltZS9KU01pY3JvdGFz
ay5jcHA6CisgICAgICAgIChKU0M6OkpTTWljcm90YXNrOjpydW4pOgorICAgICAgICBEcml2ZS1i
eTogcjI0ODg5NCBtaXN0YWtlbmx5IG9taXR0ZWQgdGhlIGNhbGwgdG8gbm90aWZ5IHRoZSBkZWJ1
Z2dlciB0aGF0IHRoZSBtaWNyb3Rhc2sgcmFuLgorCisgICAgICAgICogaW5zcGVjdG9yL1Njcmlw
dEJyZWFrcG9pbnQuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdM
aXN0ZW5lci5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZl
ci5oOiBSZW1vdmVkLgorICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHA6
IFJlbW92ZWQuCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoK
KwogMjAyMC0wOC0xNyAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBIYXZlIGFuIE9PQitTYW5lQ2hhaW4gQXJyYXk6OlNwZWN1bGF0aW9uCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjE1NjY5YjliMTlmNzBjOTFmNTZkZDFkYjJhZmQxZmM3YzAxMGY3ZC4uYjkxNzRkYWM3Y2JlZjky
NWVlNmI0M2RjNzNlZGQwYzJhMjc3YWMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNyBAQAor
MjAyMC0wOC0xOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBhbGxv
d3MgZGV2ZWxvcGVycyB0byBkbyB0aGluZ3MgbGlrZToKKyAgICAgICAgIC0gb25seSBwYXVzZSB3
aGVuIGB3aW5kb3cuZXZlbnQudHlwZWAgaXMgYSBjZXJ0YWluIHZhbHVlCisgICAgICAgICAtIGln
bm9yZSB0aGUgZmlyc3QgTiBwYXVzZXMKKyAgICAgICAgIC0gZXZhbHVhdGUgSmF2YVNjcmlwdCB3
aGVuZXZlciBhbiBldmVudCBsaXN0ZW5lciBpcyBpbnZva2VkIHdpdGhvdXQgcGF1c2luZworCisg
ICAgICAgIFRlc3RzOiBpbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVy
Lmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0
aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbAorICAgICAgICAgICAgICAg
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sCisg
ICAgICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtw
b2ludHMuaHRtbAorCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9y
Tm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZl
bnRMaXN0ZW5lcik6IERlbGV0ZWQuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVFdmVudEJyZWFrcG9pbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEhh
bmRsZUV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
OndpbGxGaXJlVGltZXIpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudDo6ZGlkRmlyZVRpbWVyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURPTURlYnVnZ2VyQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFn
ZURPTURlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2Vy
QWdlbnQ6OmRpc2FibGUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6
Om1haW5GcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVidWdnZXJB
Z2VudDo6d2lsbEZpcmVBbmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9N
RGVidWdnZXJBZ2VudDo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludCk6CisgICAgICAgIEtlZXAgYSBgSlNDOjpCcmVha3BvaW50YCBm
b3IgZWFjaCBldmVudCBicmVha3BvaW50IGluc3RlYWQgb2YgYSBzaW1wbGUgYGJvb2xgLCBhbGxv
d2luZyBmb3IKKyAgICAgICAgY29uZmlndXJhdGlvbiB3aGVuIHRoZSBicmVha3BvaW50IGlzIGZp
cnN0IHNldC4gV2hlbiBhbnkgb2YgdGhlc2UgYnJlYWtwb2ludHMgYXJlIGhpdCwgcGFzcworICAg
ICAgICBpdCB0byB0aGUgYEpTQzo6RGVidWdnZXJgIGFzIGEgInNwZWNpYWwgYnJlYWtwb2ludCIs
IHdoaWNoIGJlaGF2ZXMgdGhlIHNhbWUgYXMgInBhdXNlIEFTQVAiCisgICAgICAgIGJ1dCBhbHNv
IHN1cHBvcnRzIGEgY29uZGl0aW9uLCBhbiBpZ25vcmUgY291bnQsIGFjdGlvbnMsIGFuZCBhdXRv
LWNvbnRpbnVlLiBSZXNldCB0aGUgaGl0CisgICAgICAgIGNvdW50IGZvciBhbnkgb2YgdGhlc2Ug
InNwZWNpYWwgYnJlYWtwb2ludHMiIHRoYXQgcGVyc2lzdCBhY3Jvc3MgV2ViIEluc3BlY3RvciBz
ZXNzaW9ucworICAgICAgICB3aGVuIHRoZSBtYWluIGZyYW1lIG5hdmlnYXRlcy4KKworICAgICAg
ICAqIGluc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6UGFnZVNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFBhdXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2Vk
SW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjppc0Nv
bnRlbnRTY3JpcHQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNjcmlwdERlYnVnU2Vy
dmVyOjpyZXBvcnRFeGNlcHRpb24gY29uc3QpOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJT
Y3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6
V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0
RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNj
cmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3Jr
ZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlcG9ydEV4Y2VwdGlvbiBjb25zdCk6
CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6Cisg
ICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQp
OgorICAgICAgICBSZXBsYWNlIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB3aXRoIGBK
U0M6OkRlYnVnZ2VyYC4KKworICAgICAgICAqIGluc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3Rv
cnkuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3JlYXRlUHJvYmVTYW1wbGVE
YXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
aDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0
b3ApOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2lu
dEFjdGlvblByb2JlKToKKyAgICAgICAgUmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3Bv
aW50YCB3aXRoIGBKU0M6OkJyZWFrcG9pbnRgLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lckltcGwpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbCk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVBbmltYXRpb25GcmFt
ZUltcGwpOgorCisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50VGFyZ2V0Ojppbm5lckludm9rZUV2ZW50TGlzdGVuZXJzKToKKyAgICAgICAgKiBw
YWdlL0RPTVRpbWVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVRpbWVyOjpmaXJlZCk6Cisg
ICAgICAgIFdoZW4gbm90aWZ5aW5nIFdlYiBJbnNwZWN0b3IgdGhhdCBhY3Rpdml0eSBkaWQgb2Nj
dXIsIGluY2x1ZGUgYWxsIGluZm9ybWF0aW9uIHByZXZpb3VzbHkKKyAgICAgICAgaW5jbHVkZWQg
d2hlbiBub3RpZnlpbmcgV2ViIEluc3BlY3RvciB0aGF0IHRoYXQgYWN0aXZpdHkgd2FzIGFib3V0
IHRvIG9jY3VyIHNvIHRoYXQgV2ViCisgICAgICAgIEluc3BlY3RvciBjYW4ga25vdyB3aGV0aGVy
IGEgcGF1c2UgZm9yIHRoZSAic3BlY2lhbCBicmVha3BvaW50IiBmb3IgdGhhdCBhY3Rpdml0eSBp
cyBzdGlsbAorICAgICAgICBzY2hlZHVsZWQgYW5kIGlmIHNvIGNhbmNlbCBpdC4KKwogMjAyMC0w
OC0xNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIEF1ZGlvQ29u
dGV4dC5nZXRPdXRwdXRUaW1lc3RhbXAoKSBpcyBtaXNzaW5nCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxv
ZwppbmRleCBkNTUzYjk5NDNiZDJhYmJlN2E0YWQ4Mzc4OTA5NDU4MWIzMDkxOGM0Li5hZTUyOGM2
YzRkMmZmMmQyN2ViMjAzYzNkNmUxOWI4MDY2MTQ2NjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNjggQEAKKzIwMjAtMDgtMTggIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGFsbG93IGV2ZW50IGJyZWFrcG9p
bnRzIHRvIGJlIGNvbmZpZ3VyZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIxNTM2MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3BlcnMgdG8gZG8gdGhpbmdzIGxpa2U6Cisg
ICAgICAgICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFp
biB2YWx1ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZpcnN0IE4gcGF1c2VzCisgICAgICAgICAt
IGV2YWx1YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4gZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tl
ZCB3aXRob3V0IHBhdXNpbmcKKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFr
cG9pbnQuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkJyZWFrcG9p
bnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5n
ZXQgZ2xvYmFsKTogQWRkZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQg
cmVtb3ZhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQg
ZWRpdGFibGUpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBj
b25kaXRpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGlnbm9yZUNv
dW50KToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBpZ25vcmVDb3VudCk6
CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgYXV0b0NvbnRpbnVlKToKKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBhdXRvQ29udGludWUpOgorICAgICAg
ICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGFjdGlvbnMpOgorICAgICAgICAoV0kuQnJl
YWtwb2ludC5wcm90b3R5cGUuZ2V0IHByb2JlQWN0aW9ucyk6CisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5jeWNsZVRvTmV4dE1vZGUpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5w
cm90b3R5cGUuY3JlYXRlQWN0aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBl
LnJlY3JlYXRlQWN0aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92
ZUFjdGlvbik6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5jbGVhckFjdGlvbnMp
OgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAg
ICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5vcHRpb25zVG9Qcm90b2NvbCk6IEFkZGVkLgor
ICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuYnJlYWtwb2ludEFjdGlvbkRpZENoYW5n
ZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50LmZyb21KU09OKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBzb3VyY2VDb2RlTG9jYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGNvbnRlbnRJZGVudGlmaWVy
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBzY3JpcHRJ
ZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdl
dCB0YXJnZXQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0
IGlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUu
c2V0IGlkZW50aWZpZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IHJlc29sdmVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLnNldCByZXNvbHZlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3Rv
dHlwZS5zYXZlSWRlbnRpdHlUb0Nvb2tpZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5faXNTcGVjaWFsKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9p
bnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQpOiBEZWxldGVk
LgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuX3NvdXJjZUNvZGVMb2NhdGlvbkRp
c3BsYXlMb2NhdGlvbkNoYW5nZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
TW9kZWxzL0RPTUJyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50KToKKyAg
ICAgICAgKFdJLkRPTUJyZWFrcG9pbnQuZnJvbUpTT04pOiBBZGRlZC4KKyAgICAgICAgKFdJLkRP
TUJyZWFrcG9pbnQucHJvdG90eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NQnJl
YWtwb2ludC5wcm90b3R5cGUudG9KU09OKToKKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQuZGVz
ZXJpYWxpemUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludC5wcm90b3R5cGUu
Z2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJvdG90
eXBlLnNldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2Rl
bHMvRXZlbnRCcmVha3BvaW50LmpzOgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50KToKKyAg
ICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5mcm9tSlNPTik6IEFkZGVkLgorICAgICAgICAoV0ku
RXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZ2xvYmFsKTogQWRkZWQuCisgICAgICAgIChX
SS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBlZGl0YWJsZSk6IEFkZGVkLgorICAgICAg
ICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOgorICAg
ICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS50b0pTT04pOgorICAgICAgICAoV0ku
RXZlbnRCcmVha3BvaW50LmRlc2VyaWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qczogQ29waWVk
IGZyb20gVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcy4KKyAgICAgICAgKFdJLkph
dmFTY3JpcHRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZy
b21KU09OKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS50b0pT
T04pOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBzb3Vy
Y2VDb2RlTG9jYXRpb24pOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90
eXBlLmdldCBjb250ZW50SWRlbnRpZmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5wcm90b3R5cGUuZ2V0IHNjcmlwdElkZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCB0YXJnZXQpOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBnbG9iYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgcmVtb3ZhYmxlKTogQWRkZWQuCisg
ICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTog
QWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGlk
ZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnNl
dCBpZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5nZXQgcmVzb2x2ZWQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90
eXBlLnNldCByZXNvbHZlZCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90
b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5w
cm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQucHJvdG90eXBlLl9pc1NwZWNpYWwpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQpOgor
ICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9j
YXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01v
ZGVscy9VUkxCcmVha3BvaW50LmpzOgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludCk6CisgICAg
ICAgIChXSS5VUkxCcmVha3BvaW50LmZyb21KU09OKTogQWRkZWQuCisgICAgICAgIChXSS5VUkxC
cmVha3BvaW50LnByb3RvdHlwZS5nZXQgZ2xvYmFsKTogQWRkZWQuCisgICAgICAgIChXSS5VUkxC
cmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBBZGRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LmRlc2Vy
aWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnQucHJvdG90eXBlLmdl
dCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlw
ZS5zZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICBSZW5hbWUgYFdJLkJyZWFrcG9pbnRg
IHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAgYW5kIHVzZSBgV0kuQnJlYWtwb2ludGAgYXMg
YSBuZXcgY29tbW9uCisgICAgICAgIGJhc2UgY2xhc3MgZm9yIGFsbCBicmVha3BvaW50IHR5cGVz
LCBhbGxvd2luZyBtb3JlIGxvZ2ljIHRvIGJlIHNoYXJlZCAoZS5nLiBkaXNhYmxlZCBzdGF0ZSku
CisgICAgICAgIEFkZGl0aW9uYWxseSwgYnJlYWtwb2ludHMgYXJlIG5vdyBhYmxlIHRvCisgICAg
ICAgICAtIGRldGVybWluZSB3aGV0aGVyIG9yIG5vdCB0aGV5J3JlCisgICAgICAgICAgICAtIGds
b2JhbCAoaS5lLiBzcGVjaWFsKQorICAgICAgICAgICAgLSByZW1vdmFibGUKKyAgICAgICAgICAg
IC0gZWRpdGFibGUgKGkuZS4gY29uZmlndXJhYmxlKQorICAgICAgICAgLSByZW1vdmUgdGhlbXNl
bHZlcworICAgICAgICB3aXRob3V0IHRoZSBjYWxsZXIgbmVlZGluZyB0byBrbm93IHdoYXQgbWFu
YWdlciB0byBjb25zdWx0IHdpdGguCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RPTU1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01NYW5hZ2VyKToKKyAgICAgICAgKFdJ
LkRPTU1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludENvbmZpZ3VyYXRpb24p
OiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLnNldEJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLnJlbW92
ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJv
dG90eXBlLl9zZXRFdmVudEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTU1hbmFn
ZXIucHJvdG90eXBlLl9yZW1vdmVFdmVudEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkRPTU1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3Bl
cnR5Q2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX2hh
bmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5E
T01NYW5hZ2VyLnByb3RvdHlwZS5fdXBkYXRlRXZlbnRCcmVha3BvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgS2VlcCB0cmFjayBvZiBjb25maWd1cmF0aW9uIGNoYW5nZXMgZm9yIHNwZWNpZmljIGxp
c3RlbmVyIGJyZWFrcG9pbnRzLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9ET01EZWJ1Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIp
OgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pbml0aWFsaXplVGFy
Z2V0KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkRE9NQnJl
YWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92
ZURPTUJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS5hZGRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5yZW1vdmVFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnByb3RvdHlwZS5hZGRVUkxCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5E
T01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9jb21tYW5kQXJndW1lbnRzRm9yRXZlbnRCcmVh
a3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
Ll9zZXRFdmVudEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuX3JlbW92ZUV2ZW50QnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAo
V0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlz
YWJsZWRTdGF0ZUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdl
ci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2Vk
KTogQWRkZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5k
bGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pc0JyZWFrcG9pbnRTcGVjaWFsKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3VwZGF0ZUV2ZW50QnJl
YWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIEtlZXAgdHJhY2sgb2YgY29uZmlndXJhdGlvbiBj
aGFuZ2VzIGZvciBnbG9iYWwgZXZlbnQgYnJlYWtwb2ludHMuCisgICAgICAgIFN0b3JlIHNwZWNp
YWwgZ2xvYmFsIGV2ZW50IGJyZWFrcG9pbnRzIGluc2lkZSBgV0kub2JqZWN0U3RvcmVzLmV2ZW50
QnJlYWtwb2ludHNgLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1
Z2dlck1hbmFnZXIuanM6CisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIpOgorICAgICAgICAo
V0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5hZGRCcmVha3BvaW50KToKKyAgICAgICAgKFdJ
LkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgIChX
SS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFByb2Jlc0ZvckJyZWFrcG9pbnQpOiBBZGRl
ZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUucmVtb3ZlUHJvYmVzRm9y
QnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlw
ZS51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dl
ck1hbmFnZXIucHJvdG90eXBlLl9zZXRCcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRlYnVnZ2Vy
TWFuYWdlci5wcm90b3R5cGUuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlKToK
KyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUJyZWFrcG9pbnRB
Y3Rpb25zRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUu
aXNCcmVha3BvaW50UmVtb3ZhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50U3BlY2lhbCk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludEVkaXRhYmxlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2RlYnVnZ2VyQnJlYWtw
b2ludEFjdGlvblR5cGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5fZGVidWdnZXJCcmVha3BvaW50T3B0aW9ucyk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9hZGRQcm9iZXNGb3JCcmVha3BvaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZVByb2Jl
c0ZvckJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5fdXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIFJl
cGxhY2UgYFdJLkJyZWFrcG9pbnRgIHdpdGggYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKyAg
ICAgICAgUHJvYmVzIG5vdyBzdXBwb3J0IGBXSS5FdmVudEJyZWFrcG9pbnRgIGluIGFkZGl0aW9u
IHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qczoKKyAgICAgICAgKFdJ
LkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5wcm90b3R5cGUuYXBwZW5kQ29udGV4dE1lbnVJ
dGVtcyk6CisgICAgICAgIChXSS5CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIucHJvdG90eXBl
Ll9jcmVhdGVQb3BvdmVyQ29udGVudCk6CisgICAgICAgIEFsbG93IGFueSBicmVha3BvaW50IGlu
c3RlYWQgb2Ygb25seSBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRgLgorICAgICAgICBEcml2ZS1i
eTogdGhlIGV4aXN0aW5nIGBpZ25vcmVDb3VudGAgdmFsdWUgd2Fzbid0IGJlaW5nIHVzZWQgdG8g
cG9wdWxhdGUgdGhlIGA8aW5wdXQ+YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50LnByb3RvdHlwZS5vbmRlbGV0ZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1l
bnQucHJvdG90eXBlLmdldCBsaXN0ZW5lclNldCk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOiBBZGRlZC4KKyAgICAgICAg
KFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0bGVzKTogQWRkZWQu
CisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLmdldCBicmVha3Bv
aW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUuZ2V0IGZpbHRlcmFibGVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVRpdGxlcyk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOiBEZWxldGVk
LgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fYnJlYWtwb2lu
dExvY2F0aW9uRGlkQ2hhbmdlKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICguaXRlbS5icmVha3BvaW50
IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlKToKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQucGF1
c2VkIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSAuaXRlbS5icmVha3BvaW50LnBhdXNlZCAuaWNvbik6IEFkZGVkLgorICAgICAgICAo
Lml0ZW0uYnJlYWtwb2ludCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6IERlbGV0
ZWQuCisgICAgICAgIChib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1p
bmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5zZWxl
Y3RlZCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5yZXNvbHZlZCk6IERlbGV0ZWQuCisgICAgICAg
ICguaXRlbS5icmVha3BvaW50IC5zdWJ0aXRsZS5mb3JtYXR0ZWQtbG9jYXRpb24pOiBEZWxldGVk
LgorICAgICAgICAoLmJyZWFrcG9pbnQtZGVidWdnZXItc3RhdGVtZW50LWljb24gLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24pOiBEZWxl
dGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24pOiBEZWxldGVk
LgorICAgICAgICAoLmJyZWFrcG9pbnQtbWljcm90YXNrLWljb24gLmljb24pOiBEZWxldGVkLgor
ICAgICAgICAoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAg
ICAoLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAg
ICAoLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gPiBzcGFuKTogRGVsZXRlZC4K
KyAgICAgICAgKC5kYXRhLXVwZGF0ZWQuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNv
biA+IHNwYW4pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVt
ZTogZGFyaykgLmJyZWFrcG9pbnQtZGVidWdnZXItc3RhdGVtZW50LWljb24gLmljb24pOiBEZWxl
dGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFr
cG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmlj
b24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLmJyZWFrcG9pbnQtbWljcm90YXNrLWljb24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAo
QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQtcGF1c2VkLWlj
b24gLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVt
ZTogZGFyaykgLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24pOiBEZWxldGVkLgor
ICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
OgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkRP
TUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRldGFjaCk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9u
ZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5w
cm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1
c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2lu
dFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0
dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtw
b2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdG9nZ2xlQnJlYWtwb2ludCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0
dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2lu
dFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRyZWUt
bW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVh
a3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQu
CisgICAgICAgICguaXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQp
IC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBk
YXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAu
aWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLml0ZW0uYnJlYWtwb2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAu
aWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1yZW1vdmVkOm5vdCgucGF1c2VkKSAuaWNvbik6
IEFkZGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRyZWUt
bW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1vZGlmaWVk
Om5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAo
LmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9p
bnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1zdWJ0
cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVk
LgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9p
bnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQt
cGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJl
bW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAg
ICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qczoK
KyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAgICAgKFdJLkV2
ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRhY2gp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRN
ZW51KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnBy
b3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVu
dEZvY3VzZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1l
bnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxldGVkLgorICAg
ICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl90b2dnbGVCcmVh
a3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fdXBkYXRlU3RhdHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVt
LmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNvbik6IEFk
ZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNl
ZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQubGlzdGVu
ZXI6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50
LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVk
aWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5p
bWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlh
KHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVy
dmFsOm5vdCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgu
cGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmV2ZW50LnRpbWVvdXQ6bm90KC5wYXVzZWQpIC5p
Y29uKTogQWRkZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1h
bmltYXRpb24tZnJhbWU6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0
ZWQuCisgICAgICAgICguYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1pbnRlcnZhbDpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKC5i
cmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJlYWtwb2ludC1w
YXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoLmJyZWFrcG9pbnQuZXZlbnQu
YnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29u
KTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykg
LmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItYW5pbWF0aW9uLWZyYW1lOm5vdCguYnJl
YWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhKHBy
ZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZv
ci1pbnRlcnZhbDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4K
KyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQu
ZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29u
KSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6
IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVh
a3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzOiBDb3BpZWQgZnJv
bSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJl
ZUVsZW1lbnQuanMuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50
KToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBl
LmdldCBmaWx0ZXJhYmxlRGF0YSk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRy
ZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVTdGF0dXMpOiBBZGRlZC4KKyAgICAgICAgKFdJLkph
dmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZVRpdGxlcyk6IEFk
ZGVkLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk6CisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczogQ29waWVkIGZyb20g
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVF
bGVtZW50LmNzcy4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVz
ID4gLnN0YXR1cy1pbWFnZSk6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZh
c2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkKTogQWRkZWQuCisgICAgICAg
IChib2R5Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRy
ZWUtb3V0bGluZTpmb2N1cy13aXRoaW4gLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LnNlbGVj
dGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkKTogQWRkZWQuCisgICAgICAgICgu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbik6
IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24p
OiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29u
ID4gc3Bhbik6IEFkZGVkLgorICAgICAgICAoLmRhdGEtdXBkYXRlZC5pdGVtLmJyZWFrcG9pbnQu
amF2YXNjcmlwdC5saW5lIC5pY29uID4gc3Bhbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJl
YWtwb2ludC5qYXZhc2NyaXB0LmRlYnVnZ2VyLXN0YXRlbWVudCAuaWNvbik6IEFkZGVkLgorICAg
ICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmV4Y2VwdGlvbiAuaWNvbik6IEFkZGVk
LgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFzc2VydGlvbiAuaWNvbik6
IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAu
aWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24pOiBBZGRlZC4KKyAgICAg
ICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQu
amF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBt
ZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5leGNlcHRpb24gLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5hc3NlcnRpb24g
Lmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRh
cmspIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmljb24pOiBBZGRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
czoKKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCk6CisgICAgICAgIChXSS5V
UkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25kZXRhY2gpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5v
bmRlbGV0ZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQu
cHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LnByb3RvdHlwZS5vbnNwYWNlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUucG9wdWxhdGVDb250ZXh0TWVudSk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9p
bnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3Rh
dHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3RvZ2dsZUJyZWFrcG9pbnQpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlU3Rh
dHVzKTogRGVsZXRlZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9p
bnRUcmVlRWxlbWVudC5jc3M6CisgICAgICAgICguaXRlbS5icmVha3BvaW50LnVybCAuc3VidGl0
bGUpOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQudXJsOm5vdCgucGF1c2VkKSAu
aWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFy
aykgLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAg
ICAgICguYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlKTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVh
a3BvaW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4K
KyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50
LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAg
ICAgUmVuYW1lIGBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnRgIHRvIGBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludFRyZWVFbGVtZW50YCBhbmQgdXNlCisgICAgICAgIGBXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnRgIGFzIGEgbmV3IGNvbW1vbiBiYXNlIGNsYXNzIGZvciBhbGwgYnJlYWtwb2ludCB0cmVl
IGVsZW1lbnRzLAorICAgICAgICBhbGxvd2luZyBtb3JlIGxvZ2ljIGFuZCBzdHlsZXMgdG8gYmUg
c2hhcmVkIChlLmcuIGRpc2FibGVkIHN0YXRlKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbC5wcm90b3R5cGUuY2xvc2VkKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5faW5zZXJ0RGVidWdnZXJUcmVlRWxlbWVudCk6
CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2Nv
bXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50cyk6IEFkZGVkLgorICAgICAgICAo
V0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9hZGRCcmVha3BvaW50
KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
cmVtb3ZlQWxsQnJlYWtwb2ludHMpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwucHJvdG90eXBlLl9icmVha3BvaW50c0JlbmVhdGhUcmVlRWxlbWVudCk6CisgICAg
ICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZElzc3Vl
KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
dXBkYXRlUGF1c2VSZWFzb25TZWN0aW9uKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5faGFuZGxlVHJlZVNlbGVjdGlvbkRpZENoYW5nZSk6Cisg
ICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRs
ZUJyZWFrcG9pbnRFbGVtZW50QWRkZWRPclJlbW92ZWQpOgorICAgICAgICAoV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9wb3B1bGF0ZUNyZWF0ZUJyZWFrcG9pbnRD
b250ZXh0TWVudS5hZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAg
KFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fcG9wdWxhdGVDcmVh
dGVCcmVha3BvaW50Q29udGV4dE1lbnUpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlv
bkRpZENoYW5nZSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5w
cm90b3R5cGUuX2NvbXBhcmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKTogRGVsZXRlZC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzOgorICAgICAgICAoV0kuUHJv
YmVTZXQpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBlLmNyZWF0ZVByb2JlKToKKyAg
ICAgICAgKFdJLlByb2JlU2V0LnByb3RvdHlwZS53aWxsUmVtb3ZlKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qczoKKyAgICAgICAgKFdJLlRp
bWVsaW5lTWFuYWdlci5wcm90b3R5cGUuX3Byb2Nlc3NSZWNvcmQpOgorICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qczoKKyAgICAgICAgKFdJLlBy
b2JlU2V0RGV0YWlsc1NlY3Rpb24pOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUHJv
YmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuUHJvYmVEZXRhaWxzU2lkZWJh
clBhbmVsLnByb3RvdHlwZS5pbnNwZWN0KToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0
b3IpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLmNsb3NlKToK
KyAgICAgICAgKFdJLlNvdXJjZUNvZGVUZXh0RWRpdG9yLnByb3RvdHlwZS50ZXh0RWRpdG9yQnJl
YWtwb2ludEFkZGVkKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJj
ZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcucHJv
dG90eXBlLmdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHMpOgorICAgICAgICAoV0ku
VGV4dFJlc291cmNlQ29udGVudFZpZXcucHJvdG90eXBlLl9wcm9iZVNldHNDaGFuZ2VkKToKKyAg
ICAgICAgUHJvYmVzIG5vdyBzdXBwb3J0IGBXSS5FdmVudEJyZWFrcG9pbnRgIGluIGFkZGl0aW9u
IHRvIGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuQ29udGVudFZpZXcuY3JlYXRlRnJv
bVJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdJLkNvbnRlbnRWaWV3LnJlc29sdmVkUmVw
cmVzZW50ZWRPYmplY3RGb3JSZXByZXNlbnRlZE9iamVjdCk6CisgICAgICAgIChXSS5Db250ZW50
Vmlldy5pc1ZpZXdhYmxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRN
ZW51VXRpbGl0aWVzLmpzOgorICAgICAgICAoV0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvclNv
dXJjZUNvZGUpOgorICAgICAgICBSZXBsYWNlIGBXSS5CcmVha3BvaW50YCB3aXRoIGBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRy
ZWVDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkRPTVRyZWVDb250ZW50Vmlldyk6CisgICAg
ICAgIFJlcGxhY2UgYFdJLkRPTUJyZWFrcG9pbnRgIHdpdGggYFdJLkJyZWFrcG9pbnRgLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpz
OgorICAgICAgICAoV0kuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCk6CisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzczoKKyAgICAgICAg
KC5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2tib3gi
XSArIC5nby10by1hcnJvdyk6IEFkZGVkLgorICAgICAgICAoLmV2ZW50LWxpc3RlbmVyLXNlY3Rp
b24gPiAuY29udGVudCBpbnB1dFt0eXBlPSJjaGVja2JveCJdOm5vdCg6Y2hlY2tlZCkgKyAuZ28t
dG8tYXJyb3cpOiBBZGRlZC4KKyAgICAgICAgQWRkIGEgZ28tdG8gYXJyb3cgbmV4dCB0byB0aGUg
QnJlYWtwb2ludCBjaGVja2JveCB0aGF0IHJldmVhbHMgdGhlIGBXSS5FdmVudEJyZWFrcG9pbnRg
IGluCisgICAgICAgIHRoZSBTb3VyY2VzIFRhYi4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50QWN0
aW9uVmlldy5wcm90b3R5cGUuX2FwcGVuZEFjdGlvbkJ1dHRvbkNsaWNrZWQpOgorICAgICAgICBE
cml2ZS1ieTogbWlub3IgY29kZSBjbGVhbnVwLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qczoKKyAgICAgICAgKFdJLkNhbGxGcmFtZVRyZWVF
bGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51KToKKyAgICAgICAgRHJpdmUtYnk6
IGluY2x1ZGUgc291cmNlIGNvZGUgbG9jYXRpb24gY29udGV4dCBtZW51IGl0ZW1zLgorCisgICAg
ICAgICogVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanM6CisgICAgICAgICogVXNlckludGVy
ZmFjZS9NYWluLmh0bWw6CisgICAgICAgICogVXNlckludGVyZmFjZS9UZXN0Lmh0bWw6CisKIDIw
MjAtMDgtMTQgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IEFzc2VydGlvbiBGYWlsZWQ6IEFwcGVuZGVkIGEgc3RyaW5nIHdpdGggbmV3
bGluZXMuIFRoaXMgYnJlYWtzIHRoZSBzb3VyY2UgbWFwLgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtl
TGlzdHMudHh0CmluZGV4IGE4NjI4OGIyZTc3NzBlODgxN2EwZThkYjJiNDhkNzI2Mzc3OGRjMTUu
LmUwMGQ4MDQ5ZWI1Zjg3MzgwZjBkZGZkNzk2YjQ2YTFlNTUzNjUyYTMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTY4NSwxMiArNjg1LDkgQEAgc2V0KEphdmFTY3JpcHRD
b3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yVGFy
Z2V0LmgKICAgICBpbnNwZWN0b3IvUGVyR2xvYmFsT2JqZWN0V3JhcHBlcldvcmxkLmgKICAgICBp
bnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmgKLSAgICBpbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2lu
dC5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5oCiAgICAgaW5zcGVjdG9yL1Njcmlw
dENhbGxTdGFjay5oCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaAotICAg
IGluc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmgKLSAgICBpbnNwZWN0b3IvU2NyaXB0RGVi
dWdTZXJ2ZXIuaAogCiAgICAgaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oCiAgICAg
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmgKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKaW5kZXggYTI4ZjU1ODkzODBlZGViMzgzN2U3YjhiZTMwMzQyZDk5ZDI5Yjc3Ni4u
ZTlkODJjZjkwNWFmYmJlN2Y3NmQyNmNiNGI4OGE0YjdmODAxOTQ4MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTEzOTMsOSArMTM5Myw2IEBACiAJCUEzRkY5QkM3MjIzNDc0OTEw
MEIxQTlBQiAvKiBZYXJyRmxhZ3MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEEzRkY5QkM1MjIzNDc0NjYwMEIxQTlBQiAvKiBZYXJyRmxhZ3MuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTAzRkExQTE4
OEUwRkIwMDAxMTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTQxODhFMEZBRjAwMTEwRjE0IC8q
IEphdmFTY3JpcHRDYWxsRnJhbWUuaCAqLzsgfTsKIAkJQTUwM0ZBMUUxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovOyB9OwotCQlBNTAzRkEyMTE4OEVGRjY4
MDAxMTBGMTQgLyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJy
ZWFrcG9pbnQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwotCQlBNTAzRkEyMjE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjAxODhF
RkY2ODAwMTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQlBNTAzRkEyNjE4OEVGRkZEMDAxMTBGMTQg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZl
ci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
MDNGQTJBMTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEy
ODE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICov
OyB9OwogCQlBNTA5OEIwNDFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrIGlu
IEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwOThCMDMx
QzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3VyaXR5LmZyYW1ld29yayAqLzsgfTsKIAkJQTUwRTRCNjIx
ODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwRTRCNUUxODgwOURENTAwNjhBNDZE
IC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC00MjM1LDYgKzQyMzIsNyBAQAogCQk5MThFMTVCRDI0NDdC
MjI2MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJOTE4RTE1QkUyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVy
cm9yUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFn
Z3JlZ2F0ZUVycm9yUHJvdG90eXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
OTE4RTE1QkYyNDQ3QjIyNzAwNDQ3QTU2IC8qIEFnZ3JlZ2F0ZUVycm9yQ29uc3RydWN0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQWdncmVnYXRlRXJyb3JDb25zdHJ1Y3Rv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5MUQxNTc4QzI0RTBCRTM1MDAxRjRD
RUQgLyogQnJlYWtwb2ludC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBCcmVha3BvaW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwNTJDMzIw
RkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFBhcnNlckFyZW5hLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJOTMwNTJDMzMwRkI3OTIxOTAwNDhGREMzIC8qIFBhcnNlckFyZW5hLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBhcnNlckFyZW5hLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTkzMERBRDAzMEZCMUVCMUEwMDgyRDIwNSAvKiBOb2RlQ29uc3RydWN0b3Jz
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5vZGVDb25zdHJ1Y3RvcnMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTQzNzMsMTAgKzQzNzEsNiBAQAogCQlBNTAz
RkExNjE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZS5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkExNzE4OEUwRkIwMDAxMTBGMTQgLyogSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTSmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE4MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3Jp
cHRDYWxsRnJhbWVQcm90b3R5cGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCUE1MDNGQTFGMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdEJyZWFrcG9pbnQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJQTUwM0ZBMjAxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlw
dERlYnVnTGlzdGVuZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0
RGVidWdMaXN0ZW5lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyMzE4
OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwotCQlBNTAzRkEyNDE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdT
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RGVidWdTZXJ2
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjcxODhGMTA1OTAwMTEw
RjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTI4MTg4RjEwNTkwMDExMEYx
NCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwOThCMDMxQzE2QUEwMjAwMDg3Nzk3IC8qIFNlY3Vy
aXR5LmZyYW1ld29yayAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHdyYXBwZXIuZnJhbWV3b3JrOyBuYW1lID0gU2VjdXJpdHkuZnJhbWV3b3JrOyBwYXRo
ID0gUGxhdGZvcm1zL01hY09TWC5wbGF0Zm9ybS9EZXZlbG9wZXIvU0RLcy9NYWNPU1gxMC4xMS5z
ZGsvU3lzdGVtL0xpYnJhcnkvRnJhbWV3b3Jrcy9TZWN1cml0eS5mcmFtZXdvcms7IHNvdXJjZVRy
ZWUgPSBERVZFTE9QRVJfRElSOyB9OwpAQCAtNjUxNyw2ICs2NTExLDcgQEAKIAkJMTQ4MERCOUEw
RERDMjIzMTAwM0NGREYyIC8qIGRlYnVnZ2VyICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKKwkJCQk5MUQxNTc4QzI0RTBCRTM1MDAxRjRDRUQgLyogQnJlYWtwb2lu
dC5jcHAgKi8sCiAJCQkJRkVBMDg2MUUxODJCN0EwNDAwRjZEODUxIC8qIEJyZWFrcG9pbnQuaCAq
LywKIAkJCQlGNjkyQTg1ODAyNTU1OTdEMDFGRjYwRjcgLyogRGVidWdnZXIuY3BwICovLAogCQkJ
CUY2OTJBODU5MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5oICovLApAQCAtODY2MiwxNiAr
ODY1NywxMiBAQAogCQkJCUE1QUI0OURCMUJFQzgwNzkwMDcwMjBGQiAvKiBQZXJHbG9iYWxPYmpl
Y3RXcmFwcGVyV29ybGQuaCAqLywKIAkJCQlBNUZEMDA2NTE4OUFGRTlDMDA2MzMyMzEgLyogU2Ny
aXB0QXJndW1lbnRzLmNwcCAqLywKIAkJCQlBNUZEMDA2NjE4OUFGRTlDMDA2MzMyMzEgLyogU2Ny
aXB0QXJndW1lbnRzLmggKi8sCi0JCQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlw
dEJyZWFrcG9pbnQuaCAqLywKIAkJCQlBNUZEMDA2OTE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0
Q2FsbEZyYW1lLmNwcCAqLywKIAkJCQlBNUZEMDA2QTE4OUIwMEE5MDA2MzMyMzEgLyogU2NyaXB0
Q2FsbEZyYW1lLmggKi8sCiAJCQkJQTVGRDAwNkIxODlCMDBBOTAwNjMzMjMxIC8qIFNjcmlwdENh
bGxTdGFjay5jcHAgKi8sCiAJCQkJQTVGRDAwNkMxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENh
bGxTdGFjay5oICovLAogCQkJCUE1RkQwMDdCMTg5QjBCNEMwMDYzMzIzMSAvKiBTY3JpcHRDYWxs
U3RhY2tGYWN0b3J5LmNwcCAqLywKIAkJCQlBNUZEMDA3QzE4OUIwQjRDMDA2MzMyMzEgLyogU2Ny
aXB0Q2FsbFN0YWNrRmFjdG9yeS5oICovLAotCQkJCUE1MDNGQTIwMTg4RUZGNjgwMDExMEYxNCAv
KiBTY3JpcHREZWJ1Z0xpc3RlbmVyLmggKi8sCi0JCQkJQTUwM0ZBMjMxODhFRkZGRDAwMTEwRjE0
IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLywKLQkJCQlBNTAzRkEyNDE4OEVGRkZEMDAxMTBG
MTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLywKIAkJCSk7CiAJCQlwYXRoID0gaW5zcGVjdG9y
OwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTEwMjYzLDEyICsxMDI1NCw5IEBACiAJ
CQkJMEYyNEU1NTIxN0VFMjc0OTAwQUJCMjE3IC8qIFNjcmF0Y2hSZWdpc3RlckFsbG9jYXRvci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMzMxMTFCOEIyMzk3MjU2NTAwQUEzNENFIC8qIFNjcmliYmxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2ODE4OUFGRTlDMDA2MzMyMzEgLyogU2NyaXB0
QXJndW1lbnRzLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTAzRkEyMTE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0QnJlYWtwb2ludC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAwNkUxODlCMDBB
QTAwNjMzMjMxIC8qIFNjcmlwdENhbGxGcmFtZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQTVGRDAw
NzAxODlCMDBBQTAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFjay5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTVGRDAwN0UxODlCMEI0QzAwNjMzMjMxIC8qIFNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCBp
biBIZWFkZXJzICovLAotCQkJCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1
Z0xpc3RlbmVyLmggaW4gSGVhZGVycyAqLywKLQkJCQlBNTAzRkEyNjE4OEVGRkZEMDAxMTBGMTQg
LyogU2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzM0MUNFMURDMDJE
NzkwMEFBMjlCQSAvKiBTY3JpcHRFeGVjdXRhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlDRUFF
N0Q3Qjg4OUI0NzdCQTkzQUJBNkMgLyogU2NyaXB0RmV0Y2hlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJRTMyMDFDMUUxRjhFODI0QzAwNzZBMDMyIC8qIFNjcmlwdEZldGNoUGFyYW1ldGVycy5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKaW5kZXggYzMxMGI5YTRjZGZk
NjFkNDc4MmVmNjY5ZDNhOWIyZDVjZTMxMDJmNi4uNjg3MTQ5OGIwZmVjMTk5ZDg4ZjkyOTIwNDAz
NWVjZjA3MDNjYmI3ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApAQCAtMzAwLDYgKzMw
MCw3IEBAIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKIGJ5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCiBieXRlY29tcGlsZXIvUHJvZmlsZVR5cGVCeXRlY29kZUZsYWcuY3Bw
CiAKK2RlYnVnZ2VyL0JyZWFrcG9pbnQuY3BwCiBkZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKIGRlYnVn
Z2VyL0RlYnVnZ2VyQ2FsbEZyYW1lLmNwcAogZGVidWdnZXIvRGVidWdnZXJMb2NhdGlvbi5jcHAK
QEAgLTU5Myw3ICs1OTQsNiBAQCBpbnNwZWN0b3IvU2NyaXB0QXJndW1lbnRzLmNwcAogaW5zcGVj
dG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2suY3BwCiBp
bnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5jcHAKLWluc3BlY3Rvci9TY3JpcHREZWJ1
Z1NlcnZlci5jcHAKIAogLy8gRGVyaXZlZCBTb3VyY2VzCiBpbnNwZWN0b3IvSW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXJzLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rl
YnVnZ2VyL0JyZWFrcG9pbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0Jy
ZWFrcG9pbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5NjdiZjFkZDExMTQzMmJjNTE2MDRjYTVhNjc2NThj
NGY0Y2I2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvQnJlYWtwb2ludC5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKEMp
IDIwMDgtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJCcmVha3BvaW50LmgiCisKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgorCituYW1lc3BhY2Ug
SlNDIHsKKworQnJlYWtwb2ludDo6QWN0aW9uOjpBY3Rpb24oQnJlYWtwb2ludDo6QWN0aW9uOjpU
eXBlIHR5cGUpCisgICAgOiB0eXBlKHR5cGUpCit7Cit9CisKK1JlZjxCcmVha3BvaW50PiBCcmVh
a3BvaW50OjpjcmVhdGUoQnJlYWtwb2ludElEIGlkLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwg
QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3Jl
Q291bnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQnJlYWtwb2ludChpZCwgY29uZGl0
aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KSk7Cit9CisK
K0JyZWFrcG9pbnQ6OkJyZWFrcG9pbnQoQnJlYWtwb2ludElEIGlkLCBTdHJpbmcgY29uZGl0aW9u
LCBBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25v
cmVDb3VudCkKKyAgICA6IG1faWQoaWQpCisgICAgLCBtX2NvbmRpdGlvbihjb25kaXRpb24pCisg
ICAgLCBtX2FjdGlvbnMoV1RGTW92ZShhY3Rpb25zKSkKKyAgICAsIG1fYXV0b0NvbnRpbnVlKGF1
dG9Db250aW51ZSkKKyAgICAsIG1faWdub3JlQ291bnQoaWdub3JlQ291bnQpCit7Cit9CisKK2Jv
b2wgQnJlYWtwb2ludDo6bGluayhTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJl
ciwgdW5zaWduZWQgY29sdW1uTnVtYmVyKQoreworICAgIEFTU0VSVCghaXNMaW5rZWQoKSk7Cisg
ICAgQVNTRVJUKCFpc1Jlc29sdmVkKCkpOworCisgICAgbV9zb3VyY2VJRCA9IHNvdXJjZUlEOwor
ICAgIG1fbGluZU51bWJlciA9IGxpbmVOdW1iZXI7CisgICAgbV9jb2x1bW5OdW1iZXIgPSBjb2x1
bW5OdW1iZXI7CisgICAgcmV0dXJuIGlzTGlua2VkKCk7Cit9CisKK2Jvb2wgQnJlYWtwb2ludDo6
cmVzb2x2ZSh1bnNpZ25lZCBsaW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpCit7Cisg
ICAgQVNTRVJUKGlzTGlua2VkKCkpOworICAgIEFTU0VSVCghaXNSZXNvbHZlZCgpKTsKKyAgICBB
U1NFUlQobGluZU51bWJlciA+PSBtX2xpbmVOdW1iZXIpOworICAgIEFTU0VSVChjb2x1bW5OdW1i
ZXIgPj0gbV9jb2x1bW5OdW1iZXIpOworCisgICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsK
KyAgICBtX2NvbHVtbk51bWJlciA9IGNvbHVtbk51bWJlcjsKKyAgICBtX3Jlc29sdmVkID0gdHJ1
ZTsKKyAgICByZXR1cm4gaXNSZXNvbHZlZCgpOworfQorCitib29sIEJyZWFrcG9pbnQ6OnNob3Vs
ZFBhdXNlKERlYnVnZ2VyJiBkZWJ1Z2dlciwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
K3sKKyAgICBpZiAoKyttX2hpdENvdW50IDw9IG1faWdub3JlQ291bnQpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKworICAgIHJldHVybiBkZWJ1Z2dlci5ldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRp
b24oKnRoaXMsIGdsb2JhbE9iamVjdCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9CcmVha3BvaW50LmgKaW5kZXggMTQxOGUxNTk4YjMw
YTFiMDU4MTRhYjhmZmFkMTVhMjMzNGNiZDJhZS4uMWZhZmIzMDNjZjhkMmU0ZDg4MzAyNDAzMmQ5
ZTFhZmMwY2Y2NzAwNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2Vy
L0JyZWFrcG9pbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtw
b2ludC5oCkBAIC0yNiw1NCArMjYsODMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRGVi
dWdnZXJQcmltaXRpdmVzLmgiCi0jaW5jbHVkZSA8d3RmL0RvdWJseUxpbmtlZExpc3QuaD4KKyNp
bmNsdWRlIDx3dGYvRmFzdE1hbGxvYy5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgor
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLXN0cnVjdCBCcmVha3BvaW50IDogcHVibGljIERvdWJseUxpbmtlZExp
c3ROb2RlPEJyZWFrcG9pbnQ+IHsKLSAgICBCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgfQorY2xh
c3MgRGVidWdnZXI7CitjbGFzcyBKU0dsb2JhbE9iamVjdDsKIAotICAgIEJyZWFrcG9pbnQoU291
cmNlSUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmUsIHVuc2lnbmVkIGNvbHVtbiwgY29uc3QgU3Ry
aW5nJiBjb25kaXRpb24sIGJvb2wgYXV0b0NvbnRpbnVlLCB1bnNpZ25lZCBpZ25vcmVDb3VudCkK
LSAgICAgICAgOiBzb3VyY2VJRChzb3VyY2VJRCkKLSAgICAgICAgLCBsaW5lKGxpbmUpCi0gICAg
ICAgICwgY29sdW1uKGNvbHVtbikKLSAgICAgICAgLCBjb25kaXRpb24oY29uZGl0aW9uKQotICAg
ICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGludWUpCi0gICAgICAgICwgaWdub3JlQ291bnQo
aWdub3JlQ291bnQpCi0gICAgewotICAgIH0KK2NsYXNzIEJyZWFrcG9pbnQgOiBwdWJsaWMgUmVm
Q291bnRlZDxCcmVha3BvaW50PiB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQnJlYWtwb2lu
dCk7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgc3RydWN0IEFj
dGlvbiB7CisgICAgICAgIGVudW0gY2xhc3MgVHlwZSA6IHVpbnQ4X3QgeworICAgICAgICAgICAg
TG9nLAorICAgICAgICAgICAgRXZhbHVhdGUsCisgICAgICAgICAgICBTb3VuZCwKKyAgICAgICAg
ICAgIFByb2JlLAorICAgICAgICB9OwogCi0gICAgQnJlYWtwb2ludElEIGlkIHsgbm9CcmVha3Bv
aW50SUQgfTsKLSAgICBTb3VyY2VJRCBzb3VyY2VJRCB7IG5vU291cmNlSUQgfTsKLSAgICB1bnNp
Z25lZCBsaW5lIHsgMCB9OwotICAgIHVuc2lnbmVkIGNvbHVtbiB7IDAgfTsKLSAgICBTdHJpbmcg
Y29uZGl0aW9uOwotICAgIGJvb2wgYXV0b0NvbnRpbnVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25l
ZCBpZ25vcmVDb3VudCB7IDAgfTsKLSAgICB1bnNpZ25lZCBoaXRDb3VudCB7IDAgfTsKLSAgICBi
b29sIHJlc29sdmVkIHsgZmFsc2UgfTsKKyAgICAgICAgQWN0aW9uKFR5cGUpOworCisgICAgICAg
IFR5cGUgdHlwZTsKKyAgICAgICAgU3RyaW5nIGRhdGE7CisgICAgICAgIEJyZWFrcG9pbnRBY3Rp
b25JRCBpZCB7IG5vQnJlYWtwb2ludEFjdGlvbklEIH07CisgICAgfTsKKworICAgIHVzaW5nIEFj
dGlvbnNWZWN0b3IgPSBWZWN0b3I8QWN0aW9uPjsKKworICAgIHN0YXRpYyBSZWY8QnJlYWtwb2lu
dD4gY3JlYXRlKEJyZWFrcG9pbnRJRCwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24gPSBudWxsU3Ry
aW5nKCksIEFjdGlvbnNWZWN0b3ImJiA9IHsgfSwgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZSwg
c2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CisKKyAgICBCcmVha3BvaW50SUQgaWQoKSBjb25zdCB7
IHJldHVybiBtX2lkOyB9CisKKyAgICBTb3VyY2VJRCBzb3VyY2VJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fc291cmNlSUQ7IH0KKyAgICB1bnNpZ25lZCBsaW5lTnVtYmVyKCkgY29uc3QgeyByZXR1cm4g
bV9saW5lTnVtYmVyOyB9CisgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyKCkgY29uc3QgeyByZXR1
cm4gbV9jb2x1bW5OdW1iZXI7IH0KKworICAgIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9jb25kaXRpb247IH0KKyAgICBjb25zdCBBY3Rpb25zVmVjdG9yJiBhY3Rp
b25zKCkgY29uc3QgeyByZXR1cm4gbV9hY3Rpb25zOyB9CisgICAgYm9vbCBpc0F1dG9Db250aW51
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYXV0b0NvbnRpbnVlOyB9CisKKyAgICB2b2lkIHJlc2V0SGl0
Q291bnQoKSB7IG1faGl0Q291bnQgPSAwOyB9CisKKyAgICAvLyBBc3NvY2lhdGVzIHRoaXMgYnJl
YWtwb2ludCB3aXRoIGEgcG9zaXRpb24gaW4gYSBzcGVjaWZpYyBzb3VyY2UgY29kZS4KKyAgICBi
b29sIGxpbmsoU291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlcik7CisgICAgYm9vbCBpc0xpbmtlZCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSUQgIT0g
bm9Tb3VyY2VJRDsgfQorCisgICAgLy8gQWRqdXN0IHRoZSBwcmV2aW91c2x5IGFzc29jaWF0ZWQg
cG9zaXRpb24gdG8gdGhlIG5leHQgcGF1c2Ugb3Bwb3J0dW5pdHkuCisgICAgYm9vbCByZXNvbHZl
KHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlcik7CisgICAgYm9vbCBp
c1Jlc29sdmVkKCkgY29uc3QgeyByZXR1cm4gbV9yZXNvbHZlZDsgfQorCisgICAgYm9vbCBzaG91
bGRQYXVzZShEZWJ1Z2dlciYsIEpTR2xvYmFsT2JqZWN0Kik7CiAKIHByaXZhdGU6Ci0gICAgQnJl
YWtwb2ludCogbV9wcmV2OwotICAgIEJyZWFrcG9pbnQqIG1fbmV4dDsKKyAgICBCcmVha3BvaW50
KEJyZWFrcG9pbnRJRCwgU3RyaW5nIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwgQWN0aW9uc1Zl
Y3RvciYmID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291
bnQgPSAwKTsKIAotICAgIGZyaWVuZCBjbGFzcyBXVEY6OkRvdWJseUxpbmtlZExpc3ROb2RlPEJy
ZWFrcG9pbnQ+OworICAgIEJyZWFrcG9pbnRJRCBtX2lkIHsgbm9CcmVha3BvaW50SUQgfTsKKwor
ICAgIFNvdXJjZUlEIG1fc291cmNlSUQgeyBub1NvdXJjZUlEIH07CisKKyAgICAvLyBGSVhNRTog
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3MT4gV2ViIEluc3BlY3RvcjogQWRvcHQgVGV4dFBv
c2l0aW9uIGluIEluc3BlY3RvciB0byBhdm9pZCBvbmVCYXNlZEludC96ZXJvQmFzZWRJbnQgYW1i
aWd1aXR5CisgICAgdW5zaWduZWQgbV9saW5lTnVtYmVyIHsgMCB9OworICAgIHVuc2lnbmVkIG1f
Y29sdW1uTnVtYmVyIHsgMCB9OworCisgICAgYm9vbCBtX3Jlc29sdmVkIHsgZmFsc2UgfTsKKwor
ICAgIFN0cmluZyBtX2NvbmRpdGlvbjsKKyAgICBBY3Rpb25zVmVjdG9yIG1fYWN0aW9uczsKKyAg
ICBib29sIG1fYXV0b0NvbnRpbnVlIHsgZmFsc2UgfTsKKyAgICBzaXplX3QgbV9pZ25vcmVDb3Vu
dCB7IDAgfTsKKyAgICBzaXplX3QgbV9oaXRDb3VudCB7IDAgfTsKIH07CiAKLWNsYXNzIEJyZWFr
cG9pbnRzTGlzdCA6IHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0PEJyZWFrcG9pbnQ+LAotICAgIHB1
YmxpYyBSZWZDb3VudGVkPEJyZWFrcG9pbnRzTGlzdD4gewotcHVibGljOgotICAgIH5CcmVha3Bv
aW50c0xpc3QoKQotICAgIHsKLSAgICAgICAgQnJlYWtwb2ludCogYnJlYWtwb2ludDsKLSAgICAg
ICAgd2hpbGUgKChicmVha3BvaW50ID0gcmVtb3ZlSGVhZCgpKSkKLSAgICAgICAgICAgIGRlbGV0
ZSBicmVha3BvaW50OwotICAgICAgICBBU1NFUlQoaXNFbXB0eSgpKTsKLSAgICB9Ci19OwordXNp
bmcgQnJlYWtwb2ludHNWZWN0b3IgPSBWZWN0b3I8UmVmPEpTQzo6QnJlYWtwb2ludD4+OwogCiB9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1
Z2dlci9EZWJ1Z2dlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXIuY3BwCmluZGV4IGY0YWMzNTY3YTU2OGVjNzZkYzM2ZGQ3OGFiYWJjMGExODhhYzBiNTMuLmM0
YmZhMWE3NzEzNDY0N2FkMGMzMWU3NTE2ODczOWEzOTA3YTc5ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcApAQCAtMjQsMTAgKzI0LDE2IEBACiAKICNp
bmNsdWRlICJDb2RlQmxvY2suaCIKICNpbmNsdWRlICJEZWJ1Z2dlckNhbGxGcmFtZS5oIgorI2lu
Y2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJIZWFwSXRlcmF0aW9uU2NvcGUuaCIK
ICNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2VJbmxpbmVzLmgi
CiAjaW5jbHVkZSAiVk1FbnRyeVNjb3BlLmgiCisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNp
bmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFBvc2l0aW9uLmg+CiAKIG5h
bWVzcGFjZSBKU0MgewogCkBAIC04OSw3ICs5NSw2IEBAIERlYnVnZ2VyOjpEZWJ1Z2dlcihWTSYg
dm0pCiAgICAgLCBtX3JlYXNvbkZvclBhdXNlKE5vdFBhdXNlZCkKICAgICAsIG1fbGFzdEV4ZWN1
dGVkTGluZShVSU5UX01BWCkKICAgICAsIG1fbGFzdEV4ZWN1dGVkU291cmNlSUQobm9Tb3VyY2VJ
RCkKLSAgICAsIG1fdG9wQnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQogICAgICwgbV9wYXVz
aW5nQnJlYWtwb2ludElEKG5vQnJlYWtwb2ludElEKQogewogfQpAQCAtMjA1LDEyICsyMTAsOTYg
QEAgdm9pZCBEZWJ1Z2dlcjo6cmVnaXN0ZXJDb2RlQmxvY2soQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiAgICAgICAgIGNvZGVCbG9jay0+c2V0U3RlcHBpbmdNb2RlKENvZGVCbG9jazo6U3RlcHBpbmdN
b2RlRW5hYmxlZCk7CiB9CiAKK3ZvaWQgRGVidWdnZXI6OmFkZE9ic2VydmVyKE9ic2VydmVyJiBv
YnNlcnZlcikKK3sKKyAgICBib29sIHdhc0VtcHR5ID0gbV9vYnNlcnZlcnMuaXNFbXB0eSgpOwor
CisgICAgbV9vYnNlcnZlcnMuYWRkKCZvYnNlcnZlcik7CisKKyAgICBpZiAod2FzRW1wdHkpCisg
ICAgICAgIGF0dGFjaERlYnVnZ2VyKCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OnJlbW92ZU9ic2Vy
dmVyKE9ic2VydmVyJiBvYnNlcnZlciwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKQoreworICAgIG1f
b2JzZXJ2ZXJzLnJlbW92ZSgmb2JzZXJ2ZXIpOworCisgICAgaWYgKG1fb2JzZXJ2ZXJzLmlzRW1w
dHkoKSkKKyAgICAgICAgZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7Cit9CisKK2Jv
b2wgRGVidWdnZXI6OmNhbkRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycygpIGNvbnN0Cit7Cisg
ICAgcmV0dXJuICFtX2Rpc3BhdGNoaW5nRnVuY3Rpb25Ub09ic2VydmVycyAmJiAhbV9vYnNlcnZl
cnMuaXNFbXB0eSgpOworfQorCit2b2lkIERlYnVnZ2VyOjpkaXNwYXRjaEZ1bmN0aW9uVG9PYnNl
cnZlcnMoRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPiBmdW5jKQoreworICAgIGlmICghY2FuRGlz
cGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFNldEZv
clNjb3BlPGJvb2w+IGNoYW5nZShtX2Rpc3BhdGNoaW5nRnVuY3Rpb25Ub09ic2VydmVycywgdHJ1
ZSk7CisKKyAgICBmb3IgKGF1dG8qIG9ic2VydmVyIDogY29weVRvVmVjdG9yKG1fb2JzZXJ2ZXJz
KSkKKyAgICAgICAgZnVuYygqb2JzZXJ2ZXIpOworfQorCiB2b2lkIERlYnVnZ2VyOjpzZXRQcm9m
aWxpbmdDbGllbnQoUHJvZmlsaW5nQ2xpZW50KiBjbGllbnQpCiB7CiAgICAgQVNTRVJUKCEhbV9w
cm9maWxpbmdDbGllbnQgIT0gISFjbGllbnQpOwogICAgIG1fcHJvZmlsaW5nQ2xpZW50ID0gY2xp
ZW50OwogfQogCit2b2lkIERlYnVnZ2VyOjpzb3VyY2VQYXJzZWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgU291cmNlUHJvdmlkZXIqIHNvdXJjZVByb3ZpZGVyLCBpbnQgZXJyb3JMaW5l
LCBjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSkKK3sKKyAgICAvLyBQcmVlbXB0aXZlbHkgY2hl
Y2sgd2hldGhlciB3ZSBjYW4gZGlzcGF0Y2ggc28gdGhhdCB3ZSBkb24ndCBkbyBhbnkgdW5uZWNl
c3NhcnkgYWxsb2NhdGlvbnMuCisgICAgaWYgKCFjYW5EaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZl
cnMoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGVycm9yTGluZSAhPSAtMSkgeworICAg
ICAgICBhdXRvIHNvdXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkwoKTsKKyAgICAg
ICAgYXV0byBkYXRhID0gc291cmNlUHJvdmlkZXItPnNvdXJjZSgpLnRvU3RyaW5nKCk7CisgICAg
ICAgIGF1dG8gZmlyc3RMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xp
bmUub25lQmFzZWRJbnQoKTsKKyAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsm
XSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgICAgICBvYnNlcnZlci5mYWlsZWRUb1Bh
cnNlU291cmNlKHNvdXJjZVVSTCwgZGF0YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVycm9yTWVz
c2FnZSk7CisgICAgICAgIH0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSlNDOjpT
b3VyY2VJRCBzb3VyY2VJRCA9IHNvdXJjZVByb3ZpZGVyLT5hc0lEKCk7CisKKyAgICAvLyBGSVhN
RTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4gV2ViIEluc3BlY3RvcjogU2ltcGxpZnkg
RGVidWdnZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJvdmlkZXIKKyAgICBEZWJ1Z2dlcjo6U2Ny
aXB0IHNjcmlwdDsKKyAgICBzY3JpcHQuc291cmNlUHJvdmlkZXIgPSBzb3VyY2VQcm92aWRlcjsK
KyAgICBzY3JpcHQudXJsID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgpOworICAgIHNjcmlw
dC5zb3VyY2UgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKKyAgICBzY3Jp
cHQuc3RhcnRMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUuemVy
b0Jhc2VkSW50KCk7CisgICAgc2NyaXB0LnN0YXJ0Q29sdW1uID0gc291cmNlUHJvdmlkZXItPnN0
YXJ0UG9zaXRpb24oKS5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsKKyAgICBzY3JpcHQuaXNDb250
ZW50U2NyaXB0ID0gaXNDb250ZW50U2NyaXB0KGdsb2JhbE9iamVjdCk7CisgICAgc2NyaXB0LnNv
dXJjZVVSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VVUkxEaXJlY3RpdmUoKTsKKyAgICBzY3Jp
cHQuc291cmNlTWFwcGluZ1VSTCA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2VNYXBwaW5nVVJMRGly
ZWN0aXZlKCk7CisKKyAgICBpbnQgc291cmNlTGVuZ3RoID0gc2NyaXB0LnNvdXJjZS5sZW5ndGgo
KTsKKyAgICBpbnQgbGluZUNvdW50ID0gMTsKKyAgICBpbnQgbGFzdExpbmVTdGFydCA9IDA7Cisg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzb3VyY2VMZW5ndGg7ICsraSkgeworICAgICAgICBpZiAo
c2NyaXB0LnNvdXJjZVtpXSA9PSAnXG4nKSB7CisgICAgICAgICAgICBsaW5lQ291bnQgKz0gMTsK
KyAgICAgICAgICAgIGxhc3RMaW5lU3RhcnQgPSBpICsgMTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIHNjcmlwdC5lbmRMaW5lID0gc2NyaXB0LnN0YXJ0TGluZSArIGxpbmVDb3VudCAtIDE7Cisg
ICAgaWYgKGxpbmVDb3VudCA9PSAxKQorICAgICAgICBzY3JpcHQuZW5kQ29sdW1uID0gc2NyaXB0
LnN0YXJ0Q29sdW1uICsgc291cmNlTGVuZ3RoOworICAgIGVsc2UKKyAgICAgICAgc2NyaXB0LmVu
ZENvbHVtbiA9IHNvdXJjZUxlbmd0aCAtIGxhc3RMaW5lU3RhcnQ7CisKKyAgICBkaXNwYXRjaEZ1
bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgb2Jz
ZXJ2ZXIuZGlkUGFyc2VTb3VyY2Uoc291cmNlSUQsIHNjcmlwdCk7CisgICAgfSk7Cit9CisKIFNl
Y29uZHMgRGVidWdnZXI6OndpbGxFdmFsdWF0ZVNjcmlwdCgpCiB7CiAgICAgcmV0dXJuIG1fcHJv
ZmlsaW5nQ2xpZW50LT53aWxsRXZhbHVhdGVTY3JpcHQoKTsKQEAgLTIyMywxMiArMzEyLDEyIEBA
IHZvaWQgRGVidWdnZXI6OmRpZEV2YWx1YXRlU2NyaXB0KFNlY29uZHMgc3RhcnRUaW1lLCBQcm9m
aWxpbmdSZWFzb24gcmVhc29uKQogCiB2b2lkIERlYnVnZ2VyOjp0b2dnbGVCcmVha3BvaW50KENv
ZGVCbG9jayogY29kZUJsb2NrLCBCcmVha3BvaW50JiBicmVha3BvaW50LCBCcmVha3BvaW50U3Rh
dGUgZW5hYmxlZE9yTm90KQogewotICAgIEFTU0VSVChicmVha3BvaW50LnJlc29sdmVkKTsKKyAg
ICBBU1NFUlQoYnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCiAgICAgU2NyaXB0RXhlY3V0YWJs
ZSogZXhlY3V0YWJsZSA9IGNvZGVCbG9jay0+b3duZXJFeGVjdXRhYmxlKCk7CiAKICAgICBTb3Vy
Y2VJRCBzb3VyY2VJRCA9IHN0YXRpY19jYXN0PFNvdXJjZUlEPihleGVjdXRhYmxlLT5zb3VyY2VJ
RCgpKTsKLSAgICBpZiAoYnJlYWtwb2ludC5zb3VyY2VJRCAhPSBzb3VyY2VJRCkKKyAgICBpZiAo
YnJlYWtwb2ludC5zb3VyY2VJRCgpICE9IHNvdXJjZUlEKQogICAgICAgICByZXR1cm47CiAKICAg
ICB1bnNpZ25lZCBzdGFydExpbmUgPSBleGVjdXRhYmxlLT5maXJzdExpbmUoKTsKQEAgLTIzOCwx
MCArMzI3LDEwIEBAIHZvaWQgRGVidWdnZXI6OnRvZ2dsZUJyZWFrcG9pbnQoQ29kZUJsb2NrKiBj
b2RlQmxvY2ssIEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEJyCiAKICAgICAvLyBJbnNwZWN0b3Ig
YnJlYWtwb2ludCBsaW5lIGFuZCBjb2x1bW4gdmFsdWVzIGFyZSB6ZXJvLWJhc2VkIGJ1dCB0aGUg
ZXhlY3V0YWJsZQogICAgIC8vIGFuZCBDb2RlQmxvY2sgbGluZSBhbmQgY29sdW1uIHZhbHVlcyBh
cmUgb25lLWJhc2VkLgotICAgIHVuc2lnbmVkIGxpbmUgPSBicmVha3BvaW50LmxpbmUgKyAxOwor
ICAgIHVuc2lnbmVkIGxpbmUgPSBicmVha3BvaW50LmxpbmVOdW1iZXIoKSArIDE7CiAgICAgT3B0
aW9uYWw8dW5zaWduZWQ+IGNvbHVtbjsKLSAgICBpZiAoYnJlYWtwb2ludC5jb2x1bW4pCi0gICAg
ICAgIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uICsgMTsKKyAgICBpZiAoYnJlYWtwb2ludC5j
b2x1bW5OdW1iZXIoKSkKKyAgICAgICAgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIo
KSArIDE7CiAKICAgICBpZiAobGluZSA8IHN0YXJ0TGluZSB8fCBsaW5lID4gZW5kTGluZSkKICAg
ICAgICAgcmV0dXJuOwpAQCAtMjYzLDkgKzM1Miw4IEBAIHZvaWQgRGVidWdnZXI6OnRvZ2dsZUJy
ZWFrcG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEJy
CiAKIHZvaWQgRGVidWdnZXI6OmFwcGx5QnJlYWtwb2ludHMoQ29kZUJsb2NrKiBjb2RlQmxvY2sp
CiB7Ci0gICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50TWFwJiBicmVha3BvaW50cyA9IG1fYnJl
YWtwb2ludElEVG9CcmVha3BvaW50OwotICAgIGZvciAoYXV0byogYnJlYWtwb2ludCA6IGJyZWFr
cG9pbnRzLnZhbHVlcygpKQotICAgICAgICB0b2dnbGVCcmVha3BvaW50KGNvZGVCbG9jaywgKmJy
ZWFrcG9pbnQsIEJyZWFrcG9pbnRFbmFibGVkKTsKKyAgICBmb3IgKGF1dG8mIGJyZWFrcG9pbnQg
OiBtX2JyZWFrcG9pbnRzKQorICAgICAgICB0b2dnbGVCcmVha3BvaW50KGNvZGVCbG9jaywgYnJl
YWtwb2ludCwgQnJlYWtwb2ludEVuYWJsZWQpOwogfQogCiBjbGFzcyBEZWJ1Z2dlcjo6VG9nZ2xl
QnJlYWtwb2ludEZ1bmN0b3IgewpAQCAtMzE0LDE4OCArNDAyLDE0MyBAQCBEZWJ1Z2dlclBhcnNl
RGF0YSYgRGVidWdnZXI6OmRlYnVnZ2VyUGFyc2VEYXRhKFNvdXJjZUlEIHNvdXJjZUlELCBTb3Vy
Y2VQcm92aWRlcgogICAgIHJldHVybiByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOwogfQogCi12b2lk
IERlYnVnZ2VyOjpyZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50LCBTb3Vy
Y2VQcm92aWRlciogc291cmNlUHJvdmlkZXIpCitib29sIERlYnVnZ2VyOjpyZXNvbHZlQnJlYWtw
b2ludChCcmVha3BvaW50JiBicmVha3BvaW50LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlk
ZXIpCiB7Ci0gICAgUkVMRUFTRV9BU1NFUlQoIWJyZWFrcG9pbnQucmVzb2x2ZWQpOwotICAgIEFT
U0VSVChicmVha3BvaW50LnNvdXJjZUlEICE9IG5vU291cmNlSUQpOworICAgIFJFTEVBU0VfQVNT
RVJUKCFicmVha3BvaW50LmlzUmVzb2x2ZWQoKSk7CisgICAgQVNTRVJUKGJyZWFrcG9pbnQuaXNM
aW5rZWQoKSk7CiAKICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3MT4g
V2ViIEluc3BlY3RvcjogQWRvcHQgVGV4dFBvc2l0aW9uIGluIEluc3BlY3RvciB0byBhdm9pZCBv
bmVCYXNlZEludC96ZXJvQmFzZWRJbnQgYW1iaWd1aXR5CiAgICAgLy8gSW5zcGVjdG9yIGJyZWFr
cG9pbnQgbGluZSBhbmQgY29sdW1uIHZhbHVlcyBhcmUgemVyby1iYXNlZCBidXQgdGhlIGV4ZWN1
dGFibGUKICAgICAvLyBhbmQgQ29kZUJsb2NrIGxpbmUgdmFsdWVzIGFyZSBvbmUtYmFzZWQgd2hp
bGUgY29sdW1uIGlzIHplcm8tYmFzZWQuCi0gICAgaW50IGxpbmUgPSBicmVha3BvaW50LmxpbmUg
KyAxOwotICAgIGludCBjb2x1bW4gPSBicmVha3BvaW50LmNvbHVtbjsKKyAgICBpbnQgbGluZSA9
IGJyZWFrcG9pbnQubGluZU51bWJlcigpICsgMTsKKyAgICBpbnQgY29sdW1uID0gYnJlYWtwb2lu
dC5jb2x1bW5OdW1iZXIoKTsKIAogICAgIC8vIEFjY291bnQgZm9yIGEgPHNjcmlwdD4ncyBzdGFy
dCBwb3NpdGlvbiBvbiB0aGUgZmlyc3QgbGluZSBvbmx5LgogICAgIGludCBwcm92aWRlclN0YXJ0
TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9uZUJhc2VkSW50
KCk7IC8vIE9uZSBiYXNlZCB0byBtYXRjaCB0aGUgYWxyZWFkeSBhZGp1c3RlZCBsaW5lLgogICAg
IGludCBwcm92aWRlclN0YXJ0Q29sdW1uID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24o
KS5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsgLy8gWmVybyBiYXNlZCBzbyBjb2x1bW4gemVybyBp
cyB6ZXJvLgotICAgIGlmIChsaW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQu
Y29sdW1uKSB7CisgICAgaWYgKGxpbmUgPT0gcHJvdmlkZXJTdGFydExpbmUgJiYgYnJlYWtwb2lu
dC5jb2x1bW5OdW1iZXIoKSkgewogICAgICAgICBBU1NFUlQocHJvdmlkZXJTdGFydENvbHVtbiA8
PSBjb2x1bW4pOwogICAgICAgICBpZiAocHJvdmlkZXJTdGFydENvbHVtbikKICAgICAgICAgICAg
IGNvbHVtbiAtPSBwcm92aWRlclN0YXJ0Q29sdW1uOwogICAgIH0KIAotICAgIERlYnVnZ2VyUGFy
c2VEYXRhJiBwYXJzZURhdGEgPSBkZWJ1Z2dlclBhcnNlRGF0YShicmVha3BvaW50LnNvdXJjZUlE
LCBzb3VyY2VQcm92aWRlcik7CisgICAgRGVidWdnZXJQYXJzZURhdGEmIHBhcnNlRGF0YSA9IGRl
YnVnZ2VyUGFyc2VEYXRhKGJyZWFrcG9pbnQuc291cmNlSUQoKSwgc291cmNlUHJvdmlkZXIpOwog
ICAgIE9wdGlvbmFsPEpTVGV4dFBvc2l0aW9uPiByZXNvbHZlZFBvc2l0aW9uID0gcGFyc2VEYXRh
LnBhdXNlUG9zaXRpb25zLmJyZWFrcG9pbnRMb2NhdGlvbkZvckxpbmVDb2x1bW4obGluZSwgY29s
dW1uKTsKICAgICBpZiAoIXJlc29sdmVkUG9zaXRpb24pCi0gICAgICAgIHJldHVybjsKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaW50IHJlc29sdmVkTGluZSA9IHJlc29sdmVkUG9zaXRp
b24tPmxpbmU7CiAgICAgaW50IHJlc29sdmVkQ29sdW1uID0gcmVzb2x2ZWRQb3NpdGlvbi0+Y29s
dW1uKCk7CiAKICAgICAvLyBSZS1hY2NvdW50IGZvciBhIDxzY3JpcHQ+J3Mgc3RhcnQgcG9zaXRp
b24gb24gdGhlIGZpcnN0IGxpbmUgb25seS4KLSAgICBpZiAocmVzb2x2ZWRMaW5lID09IHByb3Zp
ZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uKSB7CisgICAgaWYgKHJlc29sdmVkTGlu
ZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBicmVha3BvaW50LmNvbHVtbk51bWJlcigpKSB7CiAg
ICAgICAgIGlmIChwcm92aWRlclN0YXJ0Q29sdW1uKQogICAgICAgICAgICAgcmVzb2x2ZWRDb2x1
bW4gKz0gcHJvdmlkZXJTdGFydENvbHVtbjsKICAgICB9CiAKLSAgICBicmVha3BvaW50LmxpbmUg
PSByZXNvbHZlZExpbmUgLSAxOwotICAgIGJyZWFrcG9pbnQuY29sdW1uID0gcmVzb2x2ZWRDb2x1
bW47Ci0gICAgYnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CisgICAgcmV0dXJuIGJyZWFrcG9p
bnQucmVzb2x2ZShyZXNvbHZlZExpbmUgLSAxLCByZXNvbHZlZENvbHVtbik7CiB9CiAKLUJyZWFr
cG9pbnRJRCBEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludChCcmVha3BvaW50JiBicmVha3BvaW50LCBi
b29sJiBleGlzdGluZykKK2Jvb2wgRGVidWdnZXI6OnNldEJyZWFrcG9pbnQoQnJlYWtwb2ludCYg
YnJlYWtwb2ludCkKIHsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7Ci0gICAgQVNT
RVJUKGJyZWFrcG9pbnQuc291cmNlSUQgIT0gbm9Tb3VyY2VJRCk7CisgICAgQVNTRVJUKGJyZWFr
cG9pbnQuaXNSZXNvbHZlZCgpKTsKIAotICAgIFNvdXJjZUlEIHNvdXJjZUlEID0gYnJlYWtwb2lu
dC5zb3VyY2VJRDsKLSAgICB1bnNpZ25lZCBsaW5lID0gYnJlYWtwb2ludC5saW5lOwotICAgIHVu
c2lnbmVkIGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uOworICAgIGF1dG8mIGJyZWFrcG9pbnRz
Rm9yTGluZSA9IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5lbnN1cmUoYnJlYWtwb2ludC5zb3Vy
Y2VJRCgpLCBbXSB7CisgICAgICAgIHJldHVybiBMaW5lVG9CcmVha3BvaW50c01hcCgpOworICAg
IH0pLml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01hcDo6aXRl
cmF0b3IgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5maW5kKGJyZWFrcG9pbnQuc291cmNl
SUQpOwotICAgIGlmIChpdCA9PSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5lbmQoKSkKLSAgICAg
ICAgaXQgPSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5zZXQoc291cmNlSUQsIExpbmVUb0JyZWFr
cG9pbnRzTWFwKCkpLml0ZXJhdG9yOworICAgIGF1dG8mIGJyZWFrcG9pbnRzID0gYnJlYWtwb2lu
dHNGb3JMaW5lLmVuc3VyZShicmVha3BvaW50LmxpbmVOdW1iZXIoKSwgW10geworICAgICAgICBy
ZXR1cm4gQnJlYWtwb2ludHNWZWN0b3IoKTsKKyAgICB9KS5pdGVyYXRvci0+dmFsdWU7CiAKLSAg
ICBMaW5lVG9CcmVha3BvaW50c01hcDo6aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+dmFsdWUuZmlu
ZChsaW5lKTsKLSAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnZhbHVlLmVuZCgpKQotICAgICAgICBi
cmVha3NJdCA9IGl0LT52YWx1ZS5zZXQobGluZSwgYWRvcHRSZWYobmV3IEJyZWFrcG9pbnRzTGlz
dCkpLml0ZXJhdG9yOwotCi0gICAgQnJlYWtwb2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpicmVh
a3NJdC0+dmFsdWU7Ci0gICAgZm9yIChCcmVha3BvaW50KiBjdXJyZW50ID0gYnJlYWtwb2ludHMu
aGVhZCgpOyBjdXJyZW50OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7Ci0gICAgICAgIGlm
IChjdXJyZW50LT5jb2x1bW4gPT0gY29sdW1uKSB7CisgICAgZm9yIChhdXRvJiBleGlzdGluZ0Jy
ZWFrcG9pbnQgOiBicmVha3BvaW50cykgeworICAgICAgICBpZiAoZXhpc3RpbmdCcmVha3BvaW50
LT5jb2x1bW5OdW1iZXIoKSA9PSBicmVha3BvaW50LmNvbHVtbk51bWJlcigpKSB7CisgICAgICAg
ICAgICBBU1NFUlQoZXhpc3RpbmdCcmVha3BvaW50LT5pZCgpICE9IGJyZWFrcG9pbnQuaWQoKSk7
CiAgICAgICAgICAgICAvLyBGb3VuZCBleGlzdGluZyBicmVha3BvaW50LiBEbyBub3QgY3JlYXRl
IGEgZHVwbGljYXRlIGF0IHRoaXMgbG9jYXRpb24uCi0gICAgICAgICAgICBleGlzdGluZyA9IHRy
dWU7Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudC0+aWQ7CisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBleGlzdGluZyA9IGZhbHNlOwotICAgIEJy
ZWFrcG9pbnRJRCBpZCA9ICsrbV90b3BCcmVha3BvaW50SUQ7Ci0gICAgUkVMRUFTRV9BU1NFUlQo
aWQgIT0gbm9CcmVha3BvaW50SUQpOworICAgIGJyZWFrcG9pbnRzLmFwcGVuZChtYWtlUmVmKGJy
ZWFrcG9pbnQpKTsKIAotICAgIGJyZWFrcG9pbnQuaWQgPSBpZDsKKyAgICBtX2JyZWFrcG9pbnRz
LmFkZChtYWtlUmVmKGJyZWFrcG9pbnQpKTsKIAotICAgIEJyZWFrcG9pbnQqIG5ld0JyZWFrcG9p
bnQgPSBuZXcgQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICBicmVha3BvaW50cy5hcHBlbmQo
bmV3QnJlYWtwb2ludCk7Ci0gICAgbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQuc2V0KGlkLCBu
ZXdCcmVha3BvaW50KTsKKyAgICB0b2dnbGVCcmVha3BvaW50KGJyZWFrcG9pbnQsIEJyZWFrcG9p
bnRFbmFibGVkKTsKIAotICAgIHRvZ2dsZUJyZWFrcG9pbnQoKm5ld0JyZWFrcG9pbnQsIEJyZWFr
cG9pbnRFbmFibGVkKTsKLQotICAgIHJldHVybiBpZDsKKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
dm9pZCBEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQpCitib29sIERl
YnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCiB7Ci0gICAg
QVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKKyAgICBBU1NFUlQoYnJlYWtwb2ludC5pc1Jl
c29sdmVkKCkpOwogCi0gICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50TWFwOjppdGVyYXRvciBp
ZEl0ID0gbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQuZmluZChpZCk7Ci0gICAgQVNTRVJUKGlk
SXQgIT0gbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQuZW5kKCkpOwotICAgIEJyZWFrcG9pbnQq
IGJyZWFrcG9pbnQgPSBpZEl0LT52YWx1ZTsKKyAgICBhdXRvIGJyZWFrcG9pbnRzRm9yTGluZUl0
ZXJhdG9yID0gbV9icmVha3BvaW50c0ZvclNvdXJjZUlELmZpbmQoYnJlYWtwb2ludC5zb3VyY2VJ
RCgpKTsKKyAgICBpZiAoYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3IgPT0gbV9icmVha3BvaW50
c0ZvclNvdXJjZUlELmVuZCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBTb3VyY2VJ
RCBzb3VyY2VJRCA9IGJyZWFrcG9pbnQtPnNvdXJjZUlEOwotICAgIEFTU0VSVChzb3VyY2VJRCk7
Ci0gICAgU291cmNlSURUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSURU
b0JyZWFrcG9pbnRzLmZpbmQoc291cmNlSUQpOwotICAgIEFTU0VSVChpdCAhPSBtX3NvdXJjZUlE
VG9CcmVha3BvaW50cy5lbmQoKSk7Ci0gICAgTGluZVRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9y
IGJyZWFrc0l0ID0gaXQtPnZhbHVlLmZpbmQoYnJlYWtwb2ludC0+bGluZSk7Ci0gICAgQVNTRVJU
KGJyZWFrc0l0ICE9IGl0LT52YWx1ZS5lbmQoKSk7CisgICAgYXV0byBicmVha3BvaW50c0l0ZXJh
dG9yID0gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmZpbmQoYnJlYWtwb2ludC5s
aW5lTnVtYmVyKCkpOworICAgIGlmIChicmVha3BvaW50c0l0ZXJhdG9yID09IGJyZWFrcG9pbnRz
Rm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgdG9nZ2xlQnJlYWtwb2ludCgqYnJlYWtwb2ludCwgQnJlYWtwb2ludERpc2FibGVkKTsKKyAg
ICB0b2dnbGVCcmVha3BvaW50KGJyZWFrcG9pbnQsIEJyZWFrcG9pbnREaXNhYmxlZCk7CisKKyAg
ICBhdXRvJiBicmVha3BvaW50cyA9IGJyZWFrcG9pbnRzSXRlcmF0b3ItPnZhbHVlOwogCi0gICAg
QnJlYWtwb2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpicmVha3NJdC0+dmFsdWU7CiAjaWYgQVNT
RVJUX0VOQUJMRUQKICAgICBib29sIGZvdW5kID0gZmFsc2U7Ci0gICAgZm9yIChCcmVha3BvaW50
KiBjdXJyZW50ID0gYnJlYWtwb2ludHMuaGVhZCgpOyBjdXJyZW50ICYmICFmb3VuZDsgY3VycmVu
dCA9IGN1cnJlbnQtPm5leHQoKSkgewotICAgICAgICBpZiAoY3VycmVudC0+aWQgPT0gYnJlYWtw
b2ludC0+aWQpCisgICAgZm9yIChhdXRvJiBleGlzdGluZ0JyZWFrcG9pbnQgOiBicmVha3BvaW50
cykgeworICAgICAgICBpZiAoZXhpc3RpbmdCcmVha3BvaW50LT5jb2x1bW5OdW1iZXIoKSA9PSBi
cmVha3BvaW50LmNvbHVtbk51bWJlcigpKSB7CisgICAgICAgICAgICBBU1NFUlQoZXhpc3RpbmdC
cmVha3BvaW50LT5pZCgpID09IGJyZWFrcG9pbnQuaWQoKSk7CisgICAgICAgICAgICBBU1NFUlQo
IWZvdW5kKTsKICAgICAgICAgICAgIGZvdW5kID0gdHJ1ZTsKKyAgICAgICAgfQogICAgIH0KLSAg
ICBBU1NFUlQoZm91bmQpOwogI2VuZGlmIC8vIEFTU0VSVF9FTkFCTEVECiAKLSAgICBtX2JyZWFr
cG9pbnRJRFRvQnJlYWtwb2ludC5yZW1vdmUoaWRJdCk7Ci0gICAgYnJlYWtwb2ludHMucmVtb3Zl
KGJyZWFrcG9pbnQpOwotICAgIGRlbGV0ZSBicmVha3BvaW50OworICAgIGF1dG8gcmVtb3ZlZCA9
IG1fYnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnQpOworICAgIHJlbW92ZWQgfD0gIWJyZWFr
cG9pbnRzLnJlbW92ZUFsbE1hdGNoaW5nKFsmXSAoY29uc3QgUmVmPEJyZWFrcG9pbnQ+JiBleGlz
dGluZ0JyZWFrcG9pbnQpIHsKKyAgICAgICAgcmV0dXJuICZicmVha3BvaW50ID09IGV4aXN0aW5n
QnJlYWtwb2ludC5wdHIoKTsKKyAgICB9KTsKIAogICAgIGlmIChicmVha3BvaW50cy5pc0VtcHR5
KCkpIHsKLSAgICAgICAgaXQtPnZhbHVlLnJlbW92ZShicmVha3NJdCk7Ci0gICAgICAgIGlmIChp
dC0+dmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAgbV9zb3VyY2VJRFRvQnJlYWtwb2ludHMu
cmVtb3ZlKGl0KTsKKyAgICAgICAgYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLnJl
bW92ZShicmVha3BvaW50c0l0ZXJhdG9yKTsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnRzRm9yTGlu
ZUl0ZXJhdG9yLT52YWx1ZS5pc0VtcHR5KCkpCisgICAgICAgICAgICBtX2JyZWFrcG9pbnRzRm9y
U291cmNlSUQucmVtb3ZlKGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yKTsKICAgICB9CisKKyAg
ICByZXR1cm4gcmVtb3ZlZDsKIH0KIAotYm9vbCBEZWJ1Z2dlcjo6aGFzQnJlYWtwb2ludChTb3Vy
Y2VJRCBzb3VyY2VJRCwgY29uc3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbiwgQnJlYWtwb2ludCAq
aGl0QnJlYWtwb2ludCkKK1JlZlB0cjxCcmVha3BvaW50PiBEZWJ1Z2dlcjo6ZGlkSGl0QnJlYWtw
b2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTb3VyY2VJRCBzb3VyY2VJRCwgY29u
c3QgVGV4dFBvc2l0aW9uJiBwb3NpdGlvbikKIHsKICAgICBpZiAoIW1fYnJlYWtwb2ludHNBY3Rp
dmF0ZWQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
LSAgICBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9zb3Vy
Y2VJRFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7Ci0gICAgaWYgKGl0ID09IG1fc291cmNl
SURUb0JyZWFrcG9pbnRzLmVuZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBi
cmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9IG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5maW5k
KHNvdXJjZUlEKTsKKyAgICBpZiAoYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3IgPT0gbV9icmVh
a3BvaW50c0ZvclNvdXJjZUlELmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAg
IHVuc2lnbmVkIGxpbmUgPSBwb3NpdGlvbi5tX2xpbmUuemVyb0Jhc2VkSW50KCk7CiAgICAgdW5z
aWduZWQgY29sdW1uID0gcG9zaXRpb24ubV9jb2x1bW4uemVyb0Jhc2VkSW50KCk7CiAgICAgCi0g
ICAgTGluZVRvQnJlYWtwb2ludHNNYXA6OmNvbnN0X2l0ZXJhdG9yIGJyZWFrc0l0ID0gaXQtPnZh
bHVlLmZpbmQobGluZSk7Ci0gICAgaWYgKGJyZWFrc0l0ID09IGl0LT52YWx1ZS5lbmQoKSkKLSAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgIGF1dG8gYnJlYWtwb2ludHNJdGVyYXRvciA9IGJyZWFr
cG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5maW5kKGxpbmUpOworICAgIGlmIChicmVha3Bv
aW50c0l0ZXJhdG9yID09IGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yLT52YWx1ZS5lbmQoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBmb3IgKGF1dG8mIGJyZWFrcG9pbnQgOiBi
cmVha3BvaW50c0l0ZXJhdG9yLT52YWx1ZSkgeworICAgICAgICB1bnNpZ25lZCBicmVha0xpbmUg
PSBicmVha3BvaW50LT5saW5lTnVtYmVyKCk7CisgICAgICAgIHVuc2lnbmVkIGJyZWFrQ29sdW1u
ID0gYnJlYWtwb2ludC0+Y29sdW1uTnVtYmVyKCk7CiAKLSAgICBib29sIGhpdCA9IGZhbHNlOwot
ICAgIGNvbnN0IEJyZWFrcG9pbnRzTGlzdCYgYnJlYWtwb2ludHMgPSAqYnJlYWtzSXQtPnZhbHVl
OwotICAgIEJyZWFrcG9pbnQqIGJyZWFrcG9pbnQ7Ci0gICAgZm9yIChicmVha3BvaW50ID0gYnJl
YWtwb2ludHMuaGVhZCgpOyBicmVha3BvaW50OyBicmVha3BvaW50ID0gYnJlYWtwb2ludC0+bmV4
dCgpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGJyZWFrTGluZSA9IGJyZWFrcG9pbnQtPmxpbmU7Ci0g
ICAgICAgIHVuc2lnbmVkIGJyZWFrQ29sdW1uID0gYnJlYWtwb2ludC0+Y29sdW1uOwogICAgICAg
ICAvLyBTaW5jZSBmcm9udGVuZCB0cnVuY2F0ZXMgdGhlIGluZGVudCwgdGhlIGZpcnN0IHN0YXRl
bWVudCBpbiBhIGxpbmUgbXVzdCBtYXRjaCB0aGUgYnJlYWtwb2ludCAobGluZSwwKS4KICAgICAg
ICAgQVNTRVJUKHRoaXMgPT0gbV9jdXJyZW50Q2FsbEZyYW1lLT5jb2RlQmxvY2soKS0+Z2xvYmFs
T2JqZWN0KCktPmRlYnVnZ2VyKCkpOwotICAgICAgICBpZiAoKGxpbmUgIT0gbV9sYXN0RXhlY3V0
ZWRMaW5lICYmIGxpbmUgPT0gYnJlYWtMaW5lICYmICFicmVha0NvbHVtbikKLSAgICAgICAgICAg
IHx8IChsaW5lID09IGJyZWFrTGluZSAmJiBjb2x1bW4gPT0gYnJlYWtDb2x1bW4pKSB7Ci0gICAg
ICAgICAgICBoaXQgPSB0cnVlOworICAgICAgICBpZiAoKGxpbmUgIT0gbV9sYXN0RXhlY3V0ZWRM
aW5lICYmIGxpbmUgPT0gYnJlYWtMaW5lICYmICFicmVha0NvbHVtbikgfHwgKGxpbmUgPT0gYnJl
YWtMaW5lICYmIGNvbHVtbiA9PSBicmVha0NvbHVtbikpIHsKKyAgICAgICAgICAgIGlmIChicmVh
a3BvaW50LT5zaG91bGRQYXVzZSgqdGhpcywgZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gYnJlYWtwb2ludC5jb3B5UmVmKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgIH0KLSAgICBpZiAoIWhpdCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAg
aWYgKGhpdEJyZWFrcG9pbnQpCi0gICAgICAgICpoaXRCcmVha3BvaW50ID0gKmJyZWFrcG9pbnQ7
Ci0KLSAgICBicmVha3BvaW50LT5oaXRDb3VudCsrOwotICAgIGlmIChicmVha3BvaW50LT5pZ25v
cmVDb3VudCA+PSBicmVha3BvaW50LT5oaXRDb3VudCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwot
Ci0gICAgaWYgKGJyZWFrcG9pbnQtPmNvbmRpdGlvbi5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVy
biB0cnVlOwotCi0gICAgLy8gV2UgY2Fubm90IHN0b3AgaW4gdGhlIGRlYnVnZ2VyIHdoaWxlIGV4
ZWN1dGluZyBjb25kaXRpb24gY29kZSwKLSAgICAvLyBzbyBtYWtlIGl0IGxvb2tzIGxpa2UgdGhl
IGRlYnVnZ2VyIGlzIGFscmVhZHkgcGF1c2VkLgotICAgIFRlbXBvcmFyeVBhdXNlZFN0YXRlIHBh
dXNlZFN0YXRlKCp0aGlzKTsKLQotICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwot
ICAgIERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dl
ckNhbGxGcmFtZSgpOwotICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51bGxw
dHI7Ci0gICAgSlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhT
Y29wZUV4dGVuc2lvbihicmVha3BvaW50LT5jb25kaXRpb24sIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
LCBleGNlcHRpb24pOwotCi0gICAgLy8gV2UgY2FuIGxvc2UgdGhlIGRlYnVnZ2VyIHdoaWxlIGV4
ZWN1dGluZyBKYXZhU2NyaXB0LgotICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQotICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0KLSAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gbV9j
dXJyZW50Q2FsbEZyYW1lLT5sZXhpY2FsR2xvYmFsT2JqZWN0KG1fdm0pOwotICAgIGlmIChleGNl
cHRpb24pIHsKLSAgICAgICAgLy8gQW4gZXJyb25lb3VzIGNvbmRpdGlvbiBjb3VudHMgYXMgImZh
bHNlIi4KLSAgICAgICAgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKGdsb2Jh
bE9iamVjdCwgZXhjZXB0aW9uKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAg
IHJldHVybiByZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIG51bGxw
dHI7CiB9CiAKIGNsYXNzIERlYnVnZ2VyOjpDbGVhckNvZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNG
dW5jdG9yIHsKQEAgLTUxOSwxNCArNTYyLDkzIEBAIHZvaWQgRGVidWdnZXI6OmNsZWFyQnJlYWtw
b2ludHMoKQogewogICAgIG1fdm0uaGVhcC5jb21wbGV0ZUFsbEpJVFBsYW5zKCk7CiAKLSAgICBt
X3RvcEJyZWFrcG9pbnRJRCA9IG5vQnJlYWtwb2ludElEOwotICAgIG1fYnJlYWtwb2ludElEVG9C
cmVha3BvaW50LmNsZWFyKCk7Ci0gICAgbV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuY2xlYXIoKTsK
KyAgICBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuY2xlYXIoKTsKKyAgICBtX2JyZWFrcG9pbnRz
LmNsZWFyKCk7CisgICAgbV9zcGVjaWFsQnJlYWtwb2ludCA9IG51bGxwdHI7CiAKICAgICBDbGVh
ckNvZGVCbG9ja0RlYnVnZ2VyUmVxdWVzdHNGdW5jdG9yIGZ1bmN0b3IodGhpcyk7CiAgICAgbV92
bS5oZWFwLmZvckVhY2hDb2RlQmxvY2soZnVuY3Rvcik7CiB9CiAKK2Jvb2wgRGVidWdnZXI6OmV2
YWx1YXRlQnJlYWtwb2ludENvbmRpdGlvbihCcmVha3BvaW50JiBicmVha3BvaW50LCBKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uID0g
YnJlYWtwb2ludC5jb25kaXRpb24oKTsKKyAgICBpZiAoY29uZGl0aW9uLmlzRW1wdHkoKSkKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAvLyBXZSBjYW5ub3Qgc3RvcCBpbiB0aGUgZGVidWdn
ZXIgd2hpbGUgZXhlY3V0aW5nIGNvbmRpdGlvbiBjb2RlLAorICAgIC8vIHNvIG1ha2UgaXQgbG9v
a3MgbGlrZSB0aGUgZGVidWdnZXIgaXMgYWxyZWFkeSBwYXVzZWQuCisgICAgVGVtcG9yYXJ5UGF1
c2VkU3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOworCisgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBl
eGNlcHRpb247CisgICAgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3Vy
cmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7CisgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2Jq
ZWN0ID0gbnVsbHB0cjsKKyAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLmV2
YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGNvbmRpdGlvbiwgc2NvcGVFeHRlbnNpb25PYmplY3Qs
IGV4Y2VwdGlvbik7CisKKyAgICAvLyBXZSBjYW4gbG9zZSB0aGUgZGVidWdnZXIgd2hpbGUgZXhl
Y3V0aW5nIEphdmFTY3JpcHQuCisgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGlmIChleGNlcHRpb24pIHsKKyAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQudG9Cb29sZWFuKGdsb2JhbE9iamVjdCk7Cit9CisK
K3ZvaWQgRGVidWdnZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludCYgYnJl
YWtwb2ludCwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKK3sKKyAgICBBU1NFUlQobV9p
c1BhdXNlZCk7CisgICAgQVNTRVJUKGlzQXR0YWNoZWQoZ2xvYmFsT2JqZWN0KSk7CisKKyAgICBt
X2N1cnJlbnRQcm9iZUJhdGNoSWQrKzsKKworICAgIGZvciAoYXV0byYgYWN0aW9uIDogYnJlYWtw
b2ludC5hY3Rpb25zKCkpIHsKKyAgICAgICAgYXV0byYgZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJy
ZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKKworICAgICAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7
CisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpMb2c6CisgICAgICAgICAg
ICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsK
KyAgICAgICAgICAgICAgICBvYnNlcnZlci5icmVha3BvaW50QWN0aW9uTG9nKGRlYnVnZ2VyQ2Fs
bEZyYW1lLmdsb2JhbE9iamVjdCgpLCBhY3Rpb24uZGF0YSk7CisgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9uOjpUeXBl
OjpFdmFsdWF0ZTogeworICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247
CisgICAgICAgICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwor
ICAgICAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24o
YWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAg
ICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZGVidWdn
ZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGV4Y2VwdGlvbik7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpT
b3VuZDoKKyAgICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2Vy
dmVyJiBvYnNlcnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJyZWFrcG9pbnRBY3Rp
b25Tb3VuZChhY3Rpb24uaWQpOworICAgICAgICAgICAgfSk7CisgICAgICAgICAgICBicmVhazsK
KworICAgICAgICBjYXNlIEJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6UHJvYmU6IHsKKyAgICAg
ICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOworICAgICAgICAgICAgSlNPYmpl
Y3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIEpTVmFsdWUg
cmVzdWx0ID0gZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oYWN0
aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICAgICAg
SlNDOjpKU0dsb2JhbE9iamVjdCogZGVidWdnZXJHbG9iYWxPYmplY3QgPSBkZWJ1Z2dlckNhbGxG
cmFtZS5nbG9iYWxPYmplY3QoKTsKKyAgICAgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAg
ICAgICAgICAgcmVwb3J0RXhjZXB0aW9uKGRlYnVnZ2VyR2xvYmFsT2JqZWN0LCBleGNlcHRpb24p
OworCisgICAgICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZl
ciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgICAgICBvYnNlcnZlci5icmVha3BvaW50QWN0aW9u
UHJvYmUoZGVidWdnZXJHbG9iYWxPYmplY3QsIGFjdGlvbi5pZCwgbV9jdXJyZW50UHJvYmVCYXRj
aElkLCBtX25leHRQcm9iZVNhbXBsZUlkKyssIGV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi0+dmFsdWUo
KSA6IHJlc3VsdCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWlzQXR0YWNoZWQoZ2xvYmFsT2JqZWN0KSkK
KyAgICAgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKIGNsYXNzIERlYnVnZ2VyOjpDbGVhckRl
YnVnZ2VyUmVxdWVzdHNGdW5jdG9yIHsKIHB1YmxpYzoKICAgICBDbGVhckRlYnVnZ2VyUmVxdWVz
dHNGdW5jdG9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCkBAIC01NzEsMTEgKzY5Mywz
NSBAQCB2b2lkIERlYnVnZ2VyOjpzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNl
cHRpb25zU3RhdGUgcGF1c2UpCiAgICAgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gcGF1c2U7
CiB9CiAKLXZvaWQgRGVidWdnZXI6OnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGJvb2wgcGF1c2Up
Cit2b2lkIERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKQogewotICAg
IG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IHBhdXNlOwotICAgIGlmIChwYXVzZSkKLSAgICAg
ICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOworICAgIG1fcGF1c2VBdE5l
eHRPcHBvcnR1bml0eSA9IHRydWU7CisKKyAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2Rl
RW5hYmxlZCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5p
dHkoKQoreworICAgIG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSA9IGZhbHNlOworfQorCitib29s
IERlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoQnJlYWtwb2ludCYg
YnJlYWtwb2ludCkKK3sKKyAgICBpZiAobV9zcGVjaWFsQnJlYWtwb2ludCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgbV9zcGVjaWFsQnJlYWtwb2ludCA9IG1ha2VSZWYoYnJlYWtwb2lu
dCk7CisgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOworICAgIHJldHVy
biB0cnVlOworfQorCitib29sIERlYnVnZ2VyOjpjYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3Bv
aW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAgaWYgKCZicmVha3BvaW50ICE9IG1f
c3BlY2lhbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIG1fc3BlY2lh
bEJyZWFrcG9pbnQgPSBudWxscHRyOworICAgIHJldHVybiB0cnVlOwogfQogCiB2b2lkIERlYnVn
Z2VyOjpicmVha1Byb2dyYW0oKQpAQCAtNTk5LDcgKzc0NSw3IEBAIHZvaWQgRGVidWdnZXI6OmNv
bnRpbnVlUHJvZ3JhbSgpCiAgICAgaWYgKCFtX2lzUGF1c2VkKQogICAgICAgICByZXR1cm47CiAK
LSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CisgICAgbV9kb25lUHJv
Y2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dlcjo6c3RlcE5l
eHRFeHByZXNzaW9uKCkKQEAgLTYxMCw3ICs3NTYsNyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwTmV4
dEV4cHJlc3Npb24oKQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFt
ZTsKICAgICBtX3BhdXNlT25TdGVwTmV4dCA9IHRydWU7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0
ZXBwaW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVu
dHMoKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiB2
b2lkIERlYnVnZ2VyOjpzdGVwSW50b1N0YXRlbWVudCgpCkBAIC02MjAsNyArNzY2LDcgQEAgdm9p
ZCBEZWJ1Z2dlcjo6c3RlcEludG9TdGF0ZW1lbnQoKQogCiAgICAgbV9wYXVzZUF0TmV4dE9wcG9y
dHVuaXR5ID0gdHJ1ZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7
Ci0gICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVBy
b2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBP
dmVyU3RhdGVtZW50KCkKQEAgLTYzMCw3ICs3NzYsNyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwT3Zl
clN0YXRlbWVudCgpCiAKICAgICBtX3BhdXNlT25DYWxsRnJhbWUgPSBtX2N1cnJlbnRDYWxsRnJh
bWU7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBwaW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlm
eURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVi
dWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2VyOjpzdGVwT3V0T2ZGdW5jdGlv
bigpCkBAIC02NDIsNyArNzg4LDcgQEAgdm9pZCBEZWJ1Z2dlcjo6c3RlcE91dE9mRnVuY3Rpb24o
KQogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVudENhbGxGcmFtZSA/IG1fY3VycmVu
dENhbGxGcmFtZS0+Y2FsbGVyRnJhbWUodG9wRW50cnlGcmFtZSkgOiBudWxscHRyOwogICAgIG1f
cGF1c2VPblN0ZXBPdXQgPSB0cnVlOwogICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVF
bmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CisgICAg
bV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogc3RhdGljIGlubGlu
ZSBKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZShWTSYgdm0s
IENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtNzAxLDEwICs4NDcsMTcgQEAgdm9pZCBEZWJ1Z2dl
cjo6cGF1c2VJZk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgYm9v
bCBkaWRQYXVzZUZvclN0ZXAgPSBwYXVzZU5vdzsKIAotICAgIEJyZWFrcG9pbnQgYnJlYWtwb2lu
dDsKICAgICBUZXh0UG9zaXRpb24gcG9zaXRpb24gPSBEZWJ1Z2dlckNhbGxGcmFtZTo6cG9zaXRp
b25Gb3JDYWxsRnJhbWUodm0sIG1fY3VycmVudENhbGxGcmFtZSk7Ci0gICAgYm9vbCBkaWRIaXRC
cmVha3BvaW50ID0gaGFzQnJlYWtwb2ludChzb3VyY2VJRCwgcG9zaXRpb24sICZicmVha3BvaW50
KTsKLSAgICBwYXVzZU5vdyB8PSBkaWRIaXRCcmVha3BvaW50OworCisgICAgYXV0byBicmVha3Bv
aW50ID0gZGlkSGl0QnJlYWtwb2ludChnbG9iYWxPYmplY3QsIHNvdXJjZUlELCBwb3NpdGlvbik7
CisgICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgIHBhdXNlTm93ID0gdHJ1ZTsKKworICAgIC8v
IFNwZWNpYWwgYnJlYWtwb2ludHMgYXJlIG9ubHkgZ2l2ZW4gb25lIG9wcG9ydHVuaXR5IHRvIHBh
dXNlLgorICAgIGF1dG8gc3BlY2lhbEJyZWFrcG9pbnQgPSBXVEZNb3ZlKG1fc3BlY2lhbEJyZWFr
cG9pbnQpOworICAgIGlmIChzcGVjaWFsQnJlYWtwb2ludCAmJiBzcGVjaWFsQnJlYWtwb2ludC0+
c2hvdWxkUGF1c2UoKnRoaXMsIGdsb2JhbE9iamVjdCkpCisgICAgICAgIHBhdXNlTm93ID0gdHJ1
ZTsKKwogICAgIG1fbGFzdEV4ZWN1dGVkTGluZSA9IHBvc2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJ
bnQoKTsKICAgICBpZiAoIXBhdXNlTm93KQogICAgICAgICByZXR1cm47CkBAIC03MTYsMjQgKzg2
OSw0NSBAQCB2b2lkIERlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QpCiAgICAgLy8gcmVzZXRpbmcgdGhlIHBhdXNlIHN0YXRlIGJlZm9yZSBleGVjdXRp
bmcgYW55IGJyZWFrcG9pbnQgYWN0aW9ucy4KICAgICBUZW1wb3JhcnlQYXVzZWRTdGF0ZSBwYXVz
ZWRTdGF0ZSgqdGhpcyk7CiAKLSAgICBpZiAoZGlkSGl0QnJlYWtwb2ludCkgewotICAgICAgICBo
YW5kbGVCcmVha3BvaW50SGl0KGdsb2JhbE9iamVjdCwgYnJlYWtwb2ludCk7CisgICAgaWYgKGJy
ZWFrcG9pbnQgfHwgc3BlY2lhbEJyZWFrcG9pbnQpIHsKICAgICAgICAgLy8gTm90ZSB0aGF0IHRo
ZSBhY3Rpb25zIGNhbiBwb3RlbnRpYWxseSBzdG9wIHRoZSBkZWJ1Z2dlciwgc28gd2UgbmVlZCB0
byBjaGVjayB0aGF0CiAgICAgICAgIC8vIHdlIHN0aWxsIGhhdmUgYSBjdXJyZW50IGNhbGwgZnJh
bWUgd2hlbiB3ZSBnZXQgYmFjay4KLSAgICAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUpCi0g
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVl
KSB7CisgICAgICAgIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGJy
ZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbnMoKmJyZWFr
cG9pbnQsIGdsb2JhbE9iamVjdCk7CisKKyAgICAgICAgICAgIGlmICghbV9jdXJyZW50Q2FsbEZy
YW1lKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGJyZWFrcG9p
bnQtPmlzQXV0b0NvbnRpbnVlKCkpCisgICAgICAgICAgICAgICAgYXV0b0NvbnRpbnVlID0gdHJ1
ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzcGVjaWFsQnJlYWtwb2ludCkgeworICAgICAg
ICAgICAgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucygqc3BlY2lhbEJyZWFrcG9pbnQsIGdsb2Jh
bE9iamVjdCk7CisKKyAgICAgICAgICAgIGlmICghbV9jdXJyZW50Q2FsbEZyYW1lKQorICAgICAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgaWYgKHNwZWNpYWxCcmVha3BvaW50LT5p
c0F1dG9Db250aW51ZSgpKQorICAgICAgICAgICAgICAgIGF1dG9Db250aW51ZSA9IHRydWU7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAoYXV0b0NvbnRpbnVlKSB7CiAgICAgICAgICAgICBpZiAo
IWRpZFBhdXNlRm9yU3RlcCkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBk
aWRIaXRCcmVha3BvaW50ID0gZmFsc2U7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgbV9w
YXVzaW5nQnJlYWtwb2ludElEID0gYnJlYWtwb2ludC5pZDsKKworICAgICAgICAgICAgYnJlYWtw
b2ludCA9IG51bGxwdHI7CisgICAgICAgICAgICBzcGVjaWFsQnJlYWtwb2ludCA9IG51bGxwdHI7
CisgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCkKKyAgICAgICAgICAgIG1fcGF1c2luZ0Jy
ZWFrcG9pbnRJRCA9IGJyZWFrcG9pbnQtPmlkKCk7CiAgICAgfQogCiAgICAgaWYgKGJsYWNrYm94
VHlwZUl0ZXJhdG9yICE9IG1fYmxhY2tib3hlZFNjcmlwdHMuZW5kKCkgJiYgYmxhY2tib3hUeXBl
SXRlcmF0b3ItPnZhbHVlID09IEJsYWNrYm94VHlwZTo6RGVmZXJyZWQpIHsKICAgICAgICAgbV9h
ZnRlckJsYWNrYm94ZWRTY3JpcHQgPSB0cnVlOwotICAgICAgICBzZXRQYXVzZU9uTmV4dFN0YXRl
bWVudCh0cnVlKTsKKyAgICAgICAgc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTc0MSw3ICs5MTUsNyBAQCB2b2lkIERlYnVnZ2Vy
OjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAgICAgICAgIGF1
dG8gcmVhc29uID0gbV9yZWFzb25Gb3JQYXVzZTsKICAgICAgICAgaWYgKGFmdGVyQmxhY2tib3hl
ZFNjcmlwdCkKICAgICAgICAgICAgIHJlYXNvbiA9IFBhdXNlZEFmdGVyQmxhY2tib3hlZFNjcmlw
dDsKLSAgICAgICAgZWxzZSBpZiAoZGlkSGl0QnJlYWtwb2ludCkKKyAgICAgICAgZWxzZSBpZiAo
YnJlYWtwb2ludCkKICAgICAgICAgICAgIHJlYXNvbiA9IFBhdXNlZEZvckJyZWFrcG9pbnQ7CiAg
ICAgICAgIFBhdXNlUmVhc29uRGVjbGFyYXRpb24gcmF1c2VSZWFzb25EZWNsYXJhdGlvbigqdGhp
cywgcmVhc29uKTsKIApAQCAtNzUxLDEyICs5MjUsNDUgQEAgdm9pZCBEZWJ1Z2dlcjo6cGF1c2VJ
Zk5lZWRlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiAgICAgbV9wYXVzaW5nQnJl
YWtwb2ludElEID0gbm9CcmVha3BvaW50SUQ7CiAKLSAgICBpZiAoIW1fcGF1c2VBdE5leHRPcHBv
cnR1bml0eSAmJiAhbV9wYXVzZU9uQ2FsbEZyYW1lKSB7CisgICAgaWYgKCFtX3BhdXNlQXROZXh0
T3Bwb3J0dW5pdHkgJiYgIW1fcGF1c2VPbkNhbGxGcmFtZSAmJiAhbV9zcGVjaWFsQnJlYWtwb2lu
dCkgewogICAgICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRGlzYWJsZWQpOwogICAg
ICAgICBtX2N1cnJlbnRDYWxsRnJhbWUgPSBudWxscHRyOwogICAgIH0KIH0KIAordm9pZCBEZWJ1
Z2dlcjo6aGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgUmVhc29uRm9y
UGF1c2UpCit7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXIm
IG9ic2VydmVyKSB7CisgICAgICAgIEFTU0VSVChpc1BhdXNlZCgpKTsKKyAgICAgICAgb2JzZXJ2
ZXIuZGlkUGF1c2UoZ2xvYmFsT2JqZWN0LCBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKSwgZXhj
ZXB0aW9uT3JDYXVnaHRWYWx1ZShnbG9iYWxPYmplY3QpKTsKKyAgICB9KTsKKworICAgIGRpZFBh
dXNlKGdsb2JhbE9iamVjdCk7CisKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMg
PSBmYWxzZTsKKyAgICBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOworCisgICAgZGlkQ29udGlu
dWUoZ2xvYmFsT2JqZWN0KTsKKworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0g
KE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICBvYnNlcnZlci5kaWRDb250aW51ZSgpOwor
ICAgIH0pOworfQorCitKU0M6OkpTVmFsdWUgRGVidWdnZXI6OmV4Y2VwdGlvbk9yQ2F1Z2h0VmFs
dWUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIGlmIChyZWFzb25G
b3JQYXVzZSgpID09IFBhdXNlZEZvckV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIGN1cnJlbnRF
eGNlcHRpb24oKTsKKworICAgIGZvciAoUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBmcmFtZSA9
ICZjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPmNhbGxl
ckZyYW1lKCkpIHsKKyAgICAgICAgRGVidWdnZXJTY29wZSYgc2NvcGUgPSAqZnJhbWUtPnNjb3Bl
KCk7CisgICAgICAgIGlmIChzY29wZS5pc0NhdGNoU2NvcGUoKSkKKyAgICAgICAgICAgIHJldHVy
biBzY29wZS5jYXVnaHRWYWx1ZShnbG9iYWxPYmplY3QpOworICAgIH0KKworICAgIHJldHVybiB7
IH07Cit9CisKIHZvaWQgRGVidWdnZXI6OmV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSwgSlNWYWx1ZSBleGNlcHRpb24sIGJvb2wgaGFz
Q2F0Y2hIYW5kbGVyKQogewogICAgIGlmIChtX2lzUGF1c2VkKQpAQCAtODA3LDggKzEwMTQsOCBA
QCB2b2lkIERlYnVnZ2VyOjphdEV4cHJlc3Npb24oQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBPbmx5IHBhdXNlIGF0IHRoZSBuZXh0IGV4cHJl
c3Npb24gd2l0aCBzdGVwLWluLCBzdGVwLW5leHQsIGFuZCBzdGVwLW91dC4KLSAgICBib29sIHNo
b3VsZEF0dGVtcHRQYXVzZSA9IG1fcGF1c2VBdE5leHRPcHBvcnR1bml0eSB8fCBtX3BhdXNlT25T
dGVwTmV4dCB8fCBtX3BhdXNlT25TdGVwT3V0OworICAgIC8vIE9ubHkgcGF1c2UgYXQgdGhlIG5l
eHQgZXhwcmVzc2lvbiBmb3Igc3RlcC1pbiwgc3RlcC1uZXh0LCBzdGVwLW91dCwgb3Igc3BlY2lh
bCBicmVha3BvaW50cy4KKyAgICBib29sIHNob3VsZEF0dGVtcHRQYXVzZSA9IG1fcGF1c2VBdE5l
eHRPcHBvcnR1bml0eSB8fCBtX3BhdXNlT25TdGVwTmV4dCB8fCBtX3BhdXNlT25TdGVwT3V0IHx8
IG1fc3BlY2lhbEJyZWFrcG9pbnQ7CiAKICAgICBQYXVzZVJlYXNvbkRlY2xhcmF0aW9uIHJlYXNv
bigqdGhpcywgUGF1c2VkQXRFeHByZXNzaW9uKTsKICAgICB1cGRhdGVDYWxsRnJhbWUobGV4aWNh
bEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZShtX3ZtLCBjYWxsRnJhbWUpLCBjYWxsRnJhbWUsIHNo
b3VsZEF0dGVtcHRQYXVzZSA/IEF0dGVtcHRQYXVzZSA6IE5vUGF1c2UpOwpAQCAtOTE3LDYgKzEx
MjQsNyBAQCB2b2lkIERlYnVnZ2VyOjpjbGVhck5leHRQYXVzZVN0YXRlKCkKICAgICBtX3BhdXNl
T25TdGVwTmV4dCA9IGZhbHNlOwogICAgIG1fcGF1c2VPblN0ZXBPdXQgPSBmYWxzZTsKICAgICBt
X2FmdGVyQmxhY2tib3hlZFNjcmlwdCA9IGZhbHNlOworICAgIG1fc3BlY2lhbEJyZWFrcG9pbnQg
PSBudWxscHRyOwogfQogCiB2b2lkIERlYnVnZ2VyOjpkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50
KENhbGxGcmFtZSogY2FsbEZyYW1lKQpAQCAtOTMzLDYgKzExNDEsMjAgQEAgdm9pZCBEZWJ1Z2dl
cjo6ZGlkUmVhY2hEZWJ1Z2dlclN0YXRlbWVudChDYWxsRnJhbWUqIGNhbGxGcmFtZSkKICAgICB1
cGRhdGVDYWxsRnJhbWUobGV4aWNhbEdsb2JhbE9iamVjdEZvckNhbGxGcmFtZShtX3ZtLCBjYWxs
RnJhbWUpLCBjYWxsRnJhbWUsIEF0dGVtcHRQYXVzZSk7CiB9CiAKK3ZvaWQgRGVidWdnZXI6Ondp
bGxSdW5NaWNyb3Rhc2soKQoreworICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0g
KE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICBvYnNlcnZlci53aWxsUnVuTWljcm90YXNr
KCk7CisgICAgfSk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmRpZFJ1bk1pY3JvdGFzaygpCit7Cisg
ICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7
CisgICAgICAgIG9ic2VydmVyLmRpZFJ1bk1pY3JvdGFzaygpOworICAgIH0pOworfQorCiBEZWJ1
Z2dlckNhbGxGcmFtZSYgRGVidWdnZXI6OmN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpCiB7CiAg
ICAgaWYgKCFtX2N1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RlYnVnZ2VyL0RlYnVnZ2VyLmgKaW5kZXggZmJhNDRjNjBjYzZhM2EzYTQ4NDdhMWJkYWVjNjY4
OTEzMmE0ODY4Ny4uY2M5NWU3YzY0YjkwNTJkOTM3MzEyMTE1Nzg5NjJmMWMxYmM2YTg2MyAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmgKQEAgLTI3LDEwICsyNyw3
IEBACiAjaW5jbHVkZSAiRGVidWdnZXJQYXJzZURhdGEuaCIKICNpbmNsdWRlICJEZWJ1Z2dlclBy
aW1pdGl2ZXMuaCIKICNpbmNsdWRlICJKU0NKU1ZhbHVlLmgiCi0jaW5jbHVkZSA8d3RmL0hhc2hN
YXAuaD4KLSNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
LSNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24uaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtNDEsMjYgKzM4LDE0IEBAIGNsYXNzIEpTR2xv
YmFsT2JqZWN0OwogY2xhc3MgU291cmNlUHJvdmlkZXI7CiBjbGFzcyBWTTsKIAotY2xhc3MgSlNf
RVhQT1JUX1BSSVZBVEUgRGVidWdnZXIgeworY2xhc3MgRGVidWdnZXIgewogICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgotICAgIERlYnVnZ2VyKFZNJik7Ci0gICAgdmlydHVh
bCB+RGVidWdnZXIoKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlcihWTSYpOworICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgfkRlYnVnZ2VyKCk7CiAKICAgICBWTSYgdm0oKSB7
IHJldHVybiBtX3ZtOyB9CiAKLSAgICBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1lJiBjdXJyZW50RGVi
dWdnZXJDYWxsRnJhbWUoKTsKLSAgICBib29sIGhhc0hhbmRsZXJGb3JFeGNlcHRpb25DYWxsYmFj
aygpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9yZWFzb25Gb3JQYXVzZSA9PSBQYXVz
ZWRGb3JFeGNlcHRpb24pOwotICAgICAgICByZXR1cm4gbV9oYXNIYW5kbGVyRm9yRXhjZXB0aW9u
Q2FsbGJhY2s7Ci0gICAgfQotICAgIEpTVmFsdWUgY3VycmVudEV4Y2VwdGlvbigpCi0gICAgewot
ICAgICAgICBBU1NFUlQobV9yZWFzb25Gb3JQYXVzZSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pOwot
ICAgICAgICByZXR1cm4gbV9jdXJyZW50RXhjZXB0aW9uOwotICAgIH0KLQogICAgIGJvb2wgbmVl
ZHNFeGNlcHRpb25DYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX2JyZWFrcG9pbnRzQWN0aXZh
dGVkICYmIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSAhPSBEb250UGF1c2VPbkV4Y2VwdGlvbnM7
IH0KICAgICBib29sIGlzSW50ZXJhY3RpdmVseURlYnVnZ2luZygpIGNvbnN0IHsgcmV0dXJuIG1f
YnJlYWtwb2ludHNBY3RpdmF0ZWQ7IH0KIApAQCAtNjgsMjYgKzUzLDMwIEBAIHB1YmxpYzoKICAg
ICAgICAgVGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uLAogICAgICAgICBHbG9iYWxPYmplY3RJ
c0Rlc3RydWN0aW5nCiAgICAgfTsKLSAgICB2b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCopOwot
ICAgIHZvaWQgZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yRGV0YWNoKTsKLSAgICBi
b29sIGlzQXR0YWNoZWQoSlNHbG9iYWxPYmplY3QqKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
b2lkIGF0dGFjaChKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
ZGV0YWNoKEpTR2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yRGV0YWNoKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSBib29sIGlzQXR0YWNoZWQoSlNHbG9iYWxPYmplY3QqKTsKIAotICAgIHZvaWQgcmVz
b2x2ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIFNvdXJjZVByb3ZpZGVyKik7Ci0gICAgQnJlYWtw
b2ludElEIHNldEJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIGJvb2wmIGV4aXN0aW5nKTsKLSAgICB2
b2lkIHJlbW92ZUJyZWFrcG9pbnQoQnJlYWtwb2ludElEKTsKKyAgICBib29sIHJlc29sdmVCcmVh
a3BvaW50KEJyZWFrcG9pbnQmLCBTb3VyY2VQcm92aWRlciopOworICAgIGJvb2wgc2V0QnJlYWtw
b2ludChCcmVha3BvaW50Jik7CisgICAgYm9vbCByZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pbnQm
KTsKICAgICB2b2lkIGNsZWFyQnJlYWtwb2ludHMoKTsKIAogICAgIHZvaWQgYWN0aXZhdGVCcmVh
a3BvaW50cygpIHsgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQodHJ1ZSk7IH0KICAgICB2b2lkIGRl
YWN0aXZhdGVCcmVha3BvaW50cygpIHsgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoZmFsc2UpOyB9
CiAgICAgYm9vbCBicmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2lu
dHNBY3RpdmF0ZWQ7IH0KIAorICAgIC8vIEJyZWFrcG9pbnQgImRlbGVnYXRlIiBmdW5jdGlvbmFs
aXR5LgorICAgIGJvb2wgZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKEJyZWFrcG9pbnQmLCBK
U0dsb2JhbE9iamVjdCopOworICAgIHZvaWQgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyhCcmVh
a3BvaW50JiwgSlNHbG9iYWxPYmplY3QqKTsKKwogICAgIGVudW0gUGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZSB7CiAgICAgICAgIERvbnRQYXVzZU9uRXhjZXB0aW9ucywKICAgICAgICAgUGF1c2VPbkFs
bEV4Y2VwdGlvbnMsCiAgICAgICAgIFBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnMKICAgICB9Owog
ICAgIFBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZTsgfQotICAgIHZvaWQgc2V0UGF1c2VP
bkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKTsKKyAgICBKU19FWFBPUlRf
UFJJVkFURSB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1c2VPbkV4Y2VwdGlvbnNT
dGF0ZSk7CiAKICAgICB2b2lkIHNldFBhdXNlT25EZWJ1Z2dlclN0YXRlbWVudHMoYm9vbCBlbmFi
bGVkKSB7IG1fcGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyA9IGVuYWJsZWQ7IH0KIApAQCAtMTA1
LDcgKzk0LDEwIEBAIHB1YmxpYzoKICAgICBSZWFzb25Gb3JQYXVzZSByZWFzb25Gb3JQYXVzZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcmVhc29uRm9yUGF1c2U7IH0KICAgICBCcmVha3BvaW50SUQgcGF1
c2luZ0JyZWFrcG9pbnRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fcGF1c2luZ0JyZWFrcG9pbnRJRDsg
fQogCi0gICAgdm9pZCBzZXRQYXVzZU9uTmV4dFN0YXRlbWVudChib29sKTsKKyAgICB2b2lkIHNj
aGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOworICAgIHZvaWQgY2FuY2VsUGF1c2VBdE5l
eHRPcHBvcnR1bml0eSgpOworICAgIGJvb2wgc2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3Bv
aW50KEJyZWFrcG9pbnQmKTsKKyAgICBib29sIGNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9p
bnQoQnJlYWtwb2ludCYpOwogICAgIHZvaWQgYnJlYWtQcm9ncmFtKCk7CiAgICAgdm9pZCBjb250
aW51ZVByb2dyYW0oKTsKICAgICB2b2lkIHN0ZXBOZXh0RXhwcmVzc2lvbigpOwpAQCAtMTIzLDkg
KzExNSw3IEBAIHB1YmxpYzoKICAgICBib29sIHN1cHByZXNzQWxsUGF1c2VzKCkgY29uc3QgeyBy
ZXR1cm4gbV9zdXBwcmVzc0FsbFBhdXNlczsgfQogICAgIHZvaWQgc2V0U3VwcHJlc3NBbGxQYXVz
ZXMoYm9vbCBzdXBwcmVzcykgeyBtX3N1cHByZXNzQWxsUGF1c2VzID0gc3VwcHJlc3M7IH0KIAot
ICAgIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNHbG9iYWxPYmplY3QqLCBTb3VyY2VQcm92
aWRlciosIGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1lc3Nh
Z2UpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpIHsgfQotICAgIHZp
cnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2
aXJ0dWFsIHZvaWQgc291cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiwgU291cmNlUHJvdmlkZXIq
LCBpbnQgZXJyb3JMaW5lTnVtYmVyLCBjb25zdCBXVEY6OlN0cmluZyYgZXJyb3JNZXNzYWdlKTsK
IAogICAgIHZvaWQgZXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgQ2FsbEZyYW1lKiwgSlNWYWx1
ZSBleGNlcHRpb25WYWx1ZSwgYm9vbCBoYXNDYXRjaEhhbmRsZXIpOwogICAgIHZvaWQgYXRTdGF0
ZW1lbnQoQ2FsbEZyYW1lKik7CkBAIC0xMzcsMTAgKzEyNyw0NiBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBkaWRFeGVjdXRlUHJvZ3JhbShDYWxsRnJhbWUqKTsKICAgICB2b2lkIGRpZFJlYWNoRGVidWdn
ZXJTdGF0ZW1lbnQoQ2FsbEZyYW1lKik7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoKTsKKyAgICB2b2lkIHdpbGxSdW5NaWNyb3Rhc2soKTsKKyAgICB2b2lkIGRp
ZFJ1bk1pY3JvdGFzaygpOwogCiAgICAgdm9pZCByZWdpc3RlckNvZGVCbG9jayhDb2RlQmxvY2sq
KTsKIAorICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzczPiBXZWIgSW5z
cGVjdG9yOiBTaW1wbGlmeSBEZWJ1Z2dlcjo6U2NyaXB0IHRvIHVzZSBTb3VyY2VQcm92aWRlcgor
ICAgIHN0cnVjdCBTY3JpcHQgeworICAgICAgICBTdHJpbmcgdXJsOworICAgICAgICBTdHJpbmcg
c291cmNlOworICAgICAgICBTdHJpbmcgc291cmNlVVJMOworICAgICAgICBTdHJpbmcgc291cmNl
TWFwcGluZ1VSTDsKKyAgICAgICAgUmVmUHRyPFNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRl
cjsKKyAgICAgICAgaW50IHN0YXJ0TGluZSB7IDAgfTsKKyAgICAgICAgaW50IHN0YXJ0Q29sdW1u
IHsgMCB9OworICAgICAgICBpbnQgZW5kTGluZSB7IDAgfTsKKyAgICAgICAgaW50IGVuZENvbHVt
biB7IDAgfTsKKyAgICAgICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQgeyBmYWxzZSB9OworICAgIH07
CisKKyAgICBjbGFzcyBPYnNlcnZlciB7CisgICAgcHVibGljOgorICAgICAgICB2aXJ0dWFsIH5P
YnNlcnZlcigpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQYXJzZVNvdXJjZShTb3Vy
Y2VJRCwgY29uc3QgRGVidWdnZXI6OlNjcmlwdCYpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIC8qIHVybCAqLywgY29uc3QgU3RyaW5n
JiAvKiBkYXRhICovLCBpbnQgLyogZmlyc3RMaW5lICovLCBpbnQgLyogZXJyb3JMaW5lICovLCBj
b25zdCBTdHJpbmcmIC8qIGVycm9yTWVzc2FnZSAqLykgeyB9CisKKyAgICAgICAgdmlydHVhbCB2
b2lkIHdpbGxSdW5NaWNyb3Rhc2soKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bk1p
Y3JvdGFzaygpIHsgfQorCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0dsb2JhbE9i
amVjdCosIERlYnVnZ2VyQ2FsbEZyYW1lJiwgSlNWYWx1ZSAvKiBleGNlcHRpb25PckNhdWdodFZh
bHVlICovKSB7IH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKCkgeyB9CisKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNHbG9iYWxPYmplY3QqLCBj
b25zdCBTdHJpbmcmIC8qIGRhdGEgKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtw
b2ludEFjdGlvblNvdW5kKEJyZWFrcG9pbnRBY3Rpb25JRCkgeyB9CisgICAgICAgIHZpcnR1YWwg
dm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNHbG9iYWxPYmplY3QqLCBCcmVha3BvaW50QWN0
aW9uSUQsIHVuc2lnbmVkIC8qIGJhdGNoSWQgKi8sIHVuc2lnbmVkIC8qIHNhbXBsZUlkICovLCBK
U1ZhbHVlIC8qIHJlc3VsdCAqLykgeyB9CisgICAgfTsKKworICAgIEpTX0VYUE9SVF9QUklWQVRF
IHZvaWQgYWRkT2JzZXJ2ZXIoT2JzZXJ2ZXImKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lk
IHJlbW92ZU9ic2VydmVyKE9ic2VydmVyJiwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKKwogICAg
IGNsYXNzIFByb2ZpbGluZ0NsaWVudCB7CiAgICAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIH5Q
cm9maWxpbmdDbGllbnQoKTsKQEAgLTE1NiwxNiArMTgyLDQwIEBAIHB1YmxpYzoKICAgICB2b2lk
IGRpZEV2YWx1YXRlU2NyaXB0KFNlY29uZHMgc3RhcnRUaW1lLCBQcm9maWxpbmdSZWFzb24pOwog
CiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZUJyZWFrcG9pbnRIaXQoSlNHbG9i
YWxPYmplY3QqLCBjb25zdCBCcmVha3BvaW50JikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRs
ZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlv
biopIGNvbnN0IHsgfQotICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVj
dCosIFJlYXNvbkZvclBhdXNlKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5RG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cygpIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIEpTQzo6RGVi
dWdnZXJDYWxsRnJhbWUmIGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOworCisgICAgYm9vbCBo
YXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fcmVhc29uRm9yUGF1c2UgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKTsKKyAgICAgICAgcmV0
dXJuIG1faGFzSGFuZGxlckZvckV4Y2VwdGlvbkNhbGxiYWNrOworICAgIH0KKworICAgIEpTVmFs
dWUgY3VycmVudEV4Y2VwdGlvbigpCisgICAgeworICAgICAgICBBU1NFUlQobV9yZWFzb25Gb3JQ
YXVzZSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pOworICAgICAgICByZXR1cm4gbV9jdXJyZW50RXhj
ZXB0aW9uOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIHsgfQor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIC8qIGlzQmVpbmdEZXN0cm95ZWQg
Ki8pIHsgfQorICAgIEpTX0VYUE9SVF9QUklWQVRFIHZpcnR1YWwgdm9pZCByZWNvbXBpbGVBbGxK
U0Z1bmN0aW9ucygpOworCisgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTR2xvYmFsT2JqZWN0
KikgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIGhhbmRsZVBhdXNlKEpT
R2xvYmFsT2JqZWN0KiwgUmVhc29uRm9yUGF1c2UpOworICAgIHZpcnR1YWwgdm9pZCBkaWRDb250
aW51ZShKU0dsb2JhbE9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBydW5FdmVudExvb3BX
aGlsZVBhdXNlZCgpIHsgfQorCisgICAgdmlydHVhbCBib29sIGlzQ29udGVudFNjcmlwdChKU0ds
b2JhbE9iamVjdCopIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyBOT1RFOiBDdXJy
ZW50bHkgYWxsIGV4Y2VwdGlvbnMgYXJlIHJlcG9ydGVkIGF0IHRoZSBBUEkgYm91bmRhcnkgdGhy
b3VnaCByZXBvcnRBUElFeGNlcHRpb24uCisgICAgLy8gVW50aWwgYSB0aW1lIGNvbWVzIHdoZXJl
IGFuIGV4Y2VwdGlvbiBjYW4gYmUgY2F1c2VkIG91dHNpZGUgb2YgdGhlIEFQSSAoZS5nLiBzZXRU
aW1lb3V0CisgICAgLy8gb3Igc29tZSBvdGhlciBhc3luYyBvcGVyYXRpb24gaW4gYSBwdXJlIEpT
Q29udGV4dCkgd2UgY2FuIGlnbm9yZSBleGNlcHRpb25zIHJlcG9ydGVkIGhlcmUuCisgICAgdmly
dHVhbCB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0dsb2JhbE9iamVjdCosIEV4Y2VwdGlvbiopIGNv
bnN0IHsgfQorCisgICAgYm9vbCBkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkgY29uc3Qg
eyByZXR1cm4gbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzOyB9CiAKIHByaXZhdGU6Ci0g
ICAgdHlwZWRlZiBIYXNoTWFwPEJyZWFrcG9pbnRJRCwgQnJlYWtwb2ludCo+IEJyZWFrcG9pbnRJ
RFRvQnJlYWtwb2ludE1hcDsKLQotICAgIHR5cGVkZWYgSGFzaE1hcDx1bnNpZ25lZCwgUmVmUHRy
PEJyZWFrcG9pbnRzTGlzdD4sIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFpl
cm9LZXlIYXNoVHJhaXRzPGludD4+IExpbmVUb0JyZWFrcG9pbnRzTWFwOwotICAgIHR5cGVkZWYg
SGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtwb2ludHNNYXAsIFdURjo6SW50SGFzaDxTb3Vy
Y2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8U291cmNlSUQ+PiBTb3Vy
Y2VJRFRvQnJlYWtwb2ludHNNYXA7CisgICAgSlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVl
KEpTR2xvYmFsT2JqZWN0Kik7CiAKICAgICBjbGFzcyBDbGVhckNvZGVCbG9ja0RlYnVnZ2VyUmVx
dWVzdHNGdW5jdG9yOwogICAgIGNsYXNzIENsZWFyRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3I7CkBA
IC0xODgsNyArMjM4LDcgQEAgcHJpdmF0ZToKICAgICAgICAgRGVidWdnZXImIG1fZGVidWdnZXI7
CiAgICAgfTsKIAotICAgIGJvb2wgaGFzQnJlYWtwb2ludChTb3VyY2VJRCwgY29uc3QgVGV4dFBv
c2l0aW9uJiwgQnJlYWtwb2ludCogaGl0QnJlYWtwb2ludCk7CisgICAgUmVmUHRyPEJyZWFrcG9p
bnQ+IGRpZEhpdEJyZWFrcG9pbnQoSlNHbG9iYWxPYmplY3QqLCBTb3VyY2VJRCwgY29uc3QgVGV4
dFBvc2l0aW9uJik7CiAKICAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgZGVidWdnZXJQYXJzZURhdGEo
U291cmNlSUQsIFNvdXJjZVByb3ZpZGVyKik7CiAKQEAgLTIxNSw3ICsyNjUsNyBAQCBwcml2YXRl
OgogICAgICAgICBCcmVha3BvaW50RGlzYWJsZWQsCiAgICAgICAgIEJyZWFrcG9pbnRFbmFibGVk
CiAgICAgfTsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZhdGVkKGJvb2wpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCk7CiAgICAg
dm9pZCB0b2dnbGVCcmVha3BvaW50KENvZGVCbG9jayosIEJyZWFrcG9pbnQmLCBCcmVha3BvaW50
U3RhdGUpOwogICAgIHZvaWQgYXBwbHlCcmVha3BvaW50cyhDb2RlQmxvY2sqKTsKICAgICB2b2lk
IHRvZ2dsZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIEJyZWFrcG9pbnRTdGF0ZSk7CkBAIC0yMjMs
NiArMjczLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGNsZWFyRGVidWdnZXJSZXF1ZXN0cyhKU0ds
b2JhbE9iamVjdCopOwogICAgIHZvaWQgY2xlYXJQYXJzZWREYXRhKCk7CiAKKyAgICBib29sIGNh
bkRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycygpIGNvbnN0OworICAgIHZvaWQgZGlzcGF0Y2hG
dW5jdGlvblRvT2JzZXJ2ZXJzKEZ1bmN0aW9uPHZvaWQoT2JzZXJ2ZXImKT4pOworCiAgICAgVk0m
IG1fdm07CiAgICAgSGFzaFNldDxKU0dsb2JhbE9iamVjdCo+IG1fZ2xvYmFsT2JqZWN0czsKICAg
ICBIYXNoTWFwPFNvdXJjZUlELCBEZWJ1Z2dlclBhcnNlRGF0YSwgV1RGOjpJbnRIYXNoPFNvdXJj
ZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJRD4+IG1fcGFy
c2VEYXRhTWFwOwpAQCAtMjQ4LDE1ICszMDEsMjQgQEAgcHJpdmF0ZToKICAgICBTb3VyY2VJRCBt
X2xhc3RFeGVjdXRlZFNvdXJjZUlEOwogICAgIGJvb2wgbV9hZnRlckJsYWNrYm94ZWRTY3JpcHQg
eyBmYWxzZSB9OwogCi0gICAgQnJlYWtwb2ludElEIG1fdG9wQnJlYWtwb2ludElEOworICAgIHVz
aW5nIExpbmVUb0JyZWFrcG9pbnRzTWFwID0gSGFzaE1hcDx1bnNpZ25lZCwgQnJlYWtwb2ludHNW
ZWN0b3IsIFdURjo6SW50SGFzaDxpbnQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJh
aXRzPGludD4+OworICAgIEhhc2hNYXA8U291cmNlSUQsIExpbmVUb0JyZWFrcG9pbnRzTWFwLCBX
VEY6OkludEhhc2g8U291cmNlSUQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRz
PFNvdXJjZUlEPj4gbV9icmVha3BvaW50c0ZvclNvdXJjZUlEOworICAgIEhhc2hTZXQ8UmVmPEJy
ZWFrcG9pbnQ+PiBtX2JyZWFrcG9pbnRzOworICAgIFJlZlB0cjxCcmVha3BvaW50PiBtX3NwZWNp
YWxCcmVha3BvaW50OwogICAgIEJyZWFrcG9pbnRJRCBtX3BhdXNpbmdCcmVha3BvaW50SUQ7Ci0g
ICAgQnJlYWtwb2ludElEVG9CcmVha3BvaW50TWFwIG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50
OwotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01hcCBtX3NvdXJjZUlEVG9CcmVha3BvaW50czsK
KworICAgIHVuc2lnbmVkIG1fbmV4dFByb2JlU2FtcGxlSWQgeyAxIH07CisgICAgdW5zaWduZWQg
bV9jdXJyZW50UHJvYmVCYXRjaElkIHsgMCB9OwogCiAgICAgUmVmUHRyPEpTQzo6RGVidWdnZXJD
YWxsRnJhbWU+IG1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lOwogCisgICAgSGFzaFNldDxPYnNl
cnZlcio+IG1fb2JzZXJ2ZXJzOworICAgIGJvb2wgbV9kaXNwYXRjaGluZ0Z1bmN0aW9uVG9PYnNl
cnZlcnMgeyBmYWxzZSB9OworCiAgICAgUHJvZmlsaW5nQ2xpZW50KiBtX3Byb2ZpbGluZ0NsaWVu
dCB7IG51bGxwdHIgfTsKIAorICAgIGJvb2wgbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRz
IHsgdHJ1ZSB9OworCiAgICAgZnJpZW5kIGNsYXNzIERlYnVnZ2VyUGF1c2VkU2NvcGU7CiAgICAg
ZnJpZW5kIGNsYXNzIFRlbXBvcmFyeVBhdXNlZFN0YXRlOwogICAgIGZyaWVuZCBjbGFzcyBMTElu
dE9mZnNldHNFeHRyYWN0b3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvRGVidWdnZXJQcmltaXRpdmVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdn
ZXIvRGVidWdnZXJQcmltaXRpdmVzLmgKaW5kZXggNWZiNmU4YTYzOTYzYTJmZjFmMjZjYzc0NGMw
MmE5MjgwNDYxZGIwNC4uNDI1NjNhY2YzZTJmYmY5ZTMzYzBmNTQwYmFkNTdjMzQzMDU2NjhlZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyUHJpbWl0
aXZlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclByaW1p
dGl2ZXMuaApAQCAtMjksMTAgKzI5LDEzIEBACiAKIG5hbWVzcGFjZSBKU0MgewogCi10eXBlZGVm
IHNpemVfdCBTb3VyY2VJRDsKLXN0YXRpYyBjb25zdGV4cHIgU291cmNlSUQgbm9Tb3VyY2VJRCA9
IDA7Cit1c2luZyBTb3VyY2VJRCA9IHNpemVfdDsKK2NvbnN0ZXhwciBTb3VyY2VJRCBub1NvdXJj
ZUlEID0gMDsKIAotdHlwZWRlZiBzaXplX3QgQnJlYWtwb2ludElEOwotc3RhdGljIGNvbnN0ZXhw
ciBCcmVha3BvaW50SUQgbm9CcmVha3BvaW50SUQgPSAwOwordXNpbmcgQnJlYWtwb2ludElEID0g
c2l6ZV90OworY29uc3RleHByIEJyZWFrcG9pbnRJRCBub0JyZWFrcG9pbnRJRCA9IDA7CisKK3Vz
aW5nIEJyZWFrcG9pbnRBY3Rpb25JRCA9IGludDsKK2NvbnN0ZXhwciBCcmVha3BvaW50QWN0aW9u
SUQgbm9CcmVha3BvaW50QWN0aW9uSUQgPSAwOwogCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1l
bnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1l
bnQuaAppbmRleCAyMTAxOWVkYTFkMGM0Zjc3ODNkZmFjNmRkZTU3NTg2ZTRkNzFmZTZlLi5jNWIx
MjZlODA1NjFmNzA2ZDVmM2M3OGE4MjFkNmVjMWU1YzljNDk4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50LmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oCkBAIC0z
Miw2ICszMiw3IEBAIGNsYXNzIFN0b3B3YXRjaDsKIH0KIAogbmFtZXNwYWNlIEpTQyB7CitjbGFz
cyBEZWJ1Z2dlcjsKIGNsYXNzIEV4Y2VwdGlvbjsKIGNsYXNzIFNvdXJjZUNvZGU7CiBjbGFzcyBW
TTsKQEAgLTM5LDcgKzQwLDYgQEAgY2xhc3MgVk07CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3Igewog
Ci1jbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgSlNDOjpKU1ZhbHVlICgqSW5zcGVj
dG9yRnVuY3Rpb25DYWxsSGFuZGxlcikoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU0M6OkpTVmFsdWUgZnVuY3Rpb25PYmplY3QsIGNvbnN0IEpTQzo6Q2FsbERhdGEmIGNhbGxE
YXRhLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBjb25zdCBKU0M6OkFyZ0xpc3QmIGFyZ3MsIE5h
a2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogdHlwZWRlZiBKU0M6
OkpTVmFsdWUgKCpJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIpKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBKU0M6OlNvdXJjZUNvZGUmLCBKU0M6OkpTVmFsdWUgdGhpc1ZhbHVlLCBOYWtlZFB0
cjxKU0M6OkV4Y2VwdGlvbj4mIHJldHVybmVkRXhjZXB0aW9uKTsKIApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCBJbnNwZWN0b3JFdmFsdWF0ZUhhbmRsZXIgZXZhbHVhdGVI
YW5kbGVyKCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBmcm9udGVuZEluaXRpYWxpemVk
KCkgPSAwOwogICAgIHZpcnR1YWwgV1RGOjpTdG9wd2F0Y2gmIGV4ZWN1dGlvblN0b3B3YXRjaCgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1Z1Nl
cnZlcigpID0gMDsKKyAgICB2aXJ0dWFsIEpTQzo6RGVidWdnZXImIHNjcmlwdERlYnVnU2VydmVy
KCkgPSAwOwogICAgIHZpcnR1YWwgSlNDOjpWTSYgdm0oKSA9IDA7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA0ZmVhNDgxODViNDNiNDJjYzZkYmRhNzQx
OGY1NGVmYmQyNDljZmY0Li5jMmY3MGM3ZDBjYzgyOTlmODZlNTIyYmY3OGE5NTk2YTJmODBkYTA3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKQEAgLTM1LDE4ICszNSwy
MiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAKIEpTR2xv
YmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXIoSlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCkKLSAgICA6IFNjcmlwdERlYnVnU2VydmVy
KGdsb2JhbE9iamVjdC52bSgpKQorICAgIDogRGVidWdnZXIoZ2xvYmFsT2JqZWN0LnZtKCkpCiAg
ICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCiB7CiB9CiAKIHZvaWQgSlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIoKQogeworICAgIEpTQzo6RGVi
dWdnZXI6OmF0dGFjaERlYnVnZ2VyKCk7CisKICAgICBhdHRhY2goJm1fZ2xvYmFsT2JqZWN0KTsK
IH0KIAogdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dl
cihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVi
dWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBkZXRhY2goJm1fZ2xvYmFsT2JqZWN0LCBp
c0JlaW5nRGVzdHJveWVkID8gRGVidWdnZXI6Okdsb2JhbE9iamVjdElzRGVzdHJ1Y3RpbmcgOiBE
ZWJ1Z2dlcjo6VGVybWluYXRpbmdEZWJ1Z2dpbmdTZXNzaW9uKTsKICAgICBpZiAoIWlzQmVpbmdE
ZXN0cm95ZWQpCiAgICAgICAgIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CkBAIC01NCwxMCAr
NTgsMTIgQEAgdm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1
Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAKIHZvaWQgSlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKQogeworICAgIEpTQzo6RGVidWdn
ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKICAgICAvLyBEcm9wIGFsbCBsb2NrcyBz
byBhbm90aGVyIHRocmVhZCBjYW4gd29yayBpbiB0aGUgVk0gd2hpbGUgd2UgYXJlIG5lc3RlZC4K
ICAgICBKU0M6OkpTTG9jazo6RHJvcEFsbExvY2tzIGRyb3BBbGxMb2NrcygmbV9nbG9iYWxPYmpl
Y3Qudm0oKSk7CiAKLSAgICB3aGlsZSAoIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cykg
eworICAgIHdoaWxlICghZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKSB7CiAgICAgICAg
IGlmIChSdW5Mb29wOjpjeWNsZShKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpydW5M
b29wTW9kZSgpKSA9PSBSdW5Mb29wOjpDeWNsZVJlc3VsdDo6U3RvcCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggZGFhYmNm
NzY0ZTE3ZDFlZDZkY2Y3NmNjNTlmYzM5ZTdlYjllNzg1ZS4uNTc3MWExODc5N2RlNzg1ZGMzNWI4
YzI4NTkxNWY4ZTBjM2I5Y2NmMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgK
QEAgLTI1LDEyICsyNSwxMiBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIlNjcmlwdERl
YnVnU2VydmVyLmgiCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlIDx3dGYvUnVuTG9v
cC5oPgogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAotY2xhc3MgSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBTY3JpcHREZWJ1Z1NlcnZlciB7CitjbGFzcyBK
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIEpTQzo6RGVidWdn
ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDIsMTgg
KzQyLDEwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUnVuTG9vcE1vZGUgcnVuTG9vcE1vZGUoKTsK
IAogcHJpdmF0ZToKKyAgICAvLyBKU0M6OkRlYnVnZ2VyCiAgICAgdm9pZCBhdHRhY2hEZWJ1Z2dl
cigpIGZpbmFsOwogICAgIHZvaWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVk
KSBmaW5hbDsKLQotICAgIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopIGZpbmFs
IHsgfQotICAgIHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopIGZpbmFsIHsg
fQogICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKLSAgICBib29sIGlz
Q29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KLQotICAgIC8vIE5PVEU6IEN1cnJlbnRseSBhbGwgZXhjZXB0aW9ucyBhcmUgcmVw
b3J0ZWQgYXQgdGhlIEFQSSBib3VuZGFyeSB0aHJvdWdoIHJlcG9ydEFQSUV4Y2VwdGlvbi4KLSAg
ICAvLyBVbnRpbCBhIHRpbWUgY29tZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNhbiBiZSBjYXVzZWQg
b3V0c2lkZSBvZiB0aGUgQVBJIChlLmcuIHNldFRpbWVvdXQKLSAgICAvLyBvciBzb21lIG90aGVy
IGFzeW5jIG9wZXJhdGlvbiBpbiBhIHB1cmUgSlNDb250ZXh0KSB3ZSBjYW4gaWdub3JlIGV4Y2Vw
dGlvbnMgcmVwb3J0ZWQgaGVyZS4KLSAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xv
YmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbCB7IH0KIAogICAgIEpTQzo6
SlNHbG9iYWxPYmplY3QmIG1fZ2xvYmFsT2JqZWN0OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0QnJlYWtwb2ludC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDU4NjA0MTc5NmE0ZWI3ZGJjYzhjYmI5Nzg0ZGM3MWEyMWEwNDFiMjAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmgKKysrIC9kZXYvbnVsbApAQCAt
MSw5MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUg
b2YgQXBwbGUgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI3ByYWdtYSBvbmNlCi0KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+Ci0KLW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi10eXBlZGVmIGVu
dW0gewotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlTG9nLAotICAgIFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb25UeXBlRXZhbHVhdGUsCi0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVT
b3VuZCwKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2JlCi19IFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb25UeXBlOwotCi1zdHJ1Y3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiB7Ci0gICAg
U2NyaXB0QnJlYWtwb2ludEFjdGlvbihTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0eXBlLCBp
bnQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhKQotICAgICAgICA6IHR5cGUodHlwZSkK
LSAgICAgICAgLCBpZGVudGlmaWVyKGlkZW50aWZpZXIpCi0gICAgICAgICwgZGF0YShkYXRhKQot
ICAgIHsKLSAgICB9Ci0KLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZSB0eXBlOwotICAg
IGludCBpZGVudGlmaWVyOwotICAgIFN0cmluZyBkYXRhOwotfTsKLQotdHlwZWRlZiBWZWN0b3I8
U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4gQnJlYWtwb2ludEFjdGlvbnM7Ci0KLXN0cnVjdCBTY3Jp
cHRCcmVha3BvaW50IHsKLSAgICBTY3JpcHRCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgfQotCi0g
ICAgU2NyaXB0QnJlYWtwb2ludChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29u
c3QgU3RyaW5nJiBjb25kaXRpb24sIGJvb2wgYXV0b0NvbnRpbnVlLCB1bnNpZ25lZCBpZ25vcmVD
b3VudCkKLSAgICAgICAgOiBsaW5lTnVtYmVyKGxpbmVOdW1iZXIpCi0gICAgICAgICwgY29sdW1u
TnVtYmVyKGNvbHVtbk51bWJlcikKLSAgICAgICAgLCBjb25kaXRpb24oY29uZGl0aW9uKQotICAg
ICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29udGludWUpCi0gICAgICAgICwgaWdub3JlQ291bnQo
aWdub3JlQ291bnQpCi0gICAgewotICAgIH0KLQotICAgIFNjcmlwdEJyZWFrcG9pbnQoaW50IGxp
bmVOdW1iZXIsIGludCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBCcmVh
a3BvaW50QWN0aW9ucyYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVkIGlnbm9y
ZUNvdW50KQotICAgICAgICA6IGxpbmVOdW1iZXIobGluZU51bWJlcikKLSAgICAgICAgLCBjb2x1
bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAgICAsIGNvbmRpdGlvbihjb25kaXRpb24pCi0g
ICAgICAgICwgYWN0aW9ucyhhY3Rpb25zKQotICAgICAgICAsIGF1dG9Db250aW51ZShhdXRvQ29u
dGludWUpCi0gICAgICAgICwgaWdub3JlQ291bnQoaWdub3JlQ291bnQpCi0gICAgewotICAgIH0K
LQotICAgIGludCBsaW5lTnVtYmVyIHsgMCB9OwotICAgIGludCBjb2x1bW5OdW1iZXIgeyAwIH07
Ci0gICAgU3RyaW5nIGNvbmRpdGlvbjsKLSAgICBCcmVha3BvaW50QWN0aW9ucyBhY3Rpb25zOwot
ICAgIGJvb2wgYXV0b0NvbnRpbnVlIHsgZmFsc2UgfTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3Vu
dCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z0xpc3RlbmVyLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Q4YmVmNDBlZmJjMmIwN2FhNmU3ZDU2ZGYwOGVlMTU4
ZmQ4YjAxMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAorKysg
L2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAz
LiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVz
IG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFO
WQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRlYnVnZ2Vy
LmgiCi0jaW5jbHVkZSAiU291cmNlUHJvdmlkZXIuaCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZT
dHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXN0cnVjdCBTY3JpcHRCcmVha3Bv
aW50QWN0aW9uOwotCi1jbGFzcyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBz
dHJ1Y3QgU2NyaXB0IHsKLSAgICAgICAgU3RyaW5nIHVybDsKLSAgICAgICAgU3RyaW5nIHNvdXJj
ZTsKLSAgICAgICAgU3RyaW5nIHNvdXJjZVVSTDsKLSAgICAgICAgU3RyaW5nIHNvdXJjZU1hcHBp
bmdVUkw7Ci0gICAgICAgIFJlZlB0cjxKU0M6OlNvdXJjZVByb3ZpZGVyPiBzb3VyY2VQcm92aWRl
cjsKLSAgICAgICAgaW50IHN0YXJ0TGluZSB7MH07Ci0gICAgICAgIGludCBzdGFydENvbHVtbiB7
MH07Ci0gICAgICAgIGludCBlbmRMaW5lIHswfTsKLSAgICAgICAgaW50IGVuZENvbHVtbiB7MH07
Ci0gICAgICAgIGJvb2wgaXNDb250ZW50U2NyaXB0IHtmYWxzZX07Ci0gICAgfTsKLQotICAgIHZp
cnR1YWwgflNjcmlwdERlYnVnTGlzdGVuZXIoKSB7IH0KLQotICAgIHZpcnR1YWwgdm9pZCBkaWRQ
YXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSA9IDA7Ci0gICAgdmlydHVh
bCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29uc3QgU3RyaW5nJiBlcnJv
ck1lc3NhZ2UpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSA9IDA7Ci0KLSAgICB2aXJ0dWFs
IHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBjYWxsRnJh
bWVzLCBKU0M6OkpTVmFsdWUgZXhjZXB0aW9uKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZENv
bnRpbnVlKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlND
OjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
YnJlYWtwb2ludEFjdGlvblNvdW5kKGludCBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcikgPSAw
OwotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBiYXRjaElkLCB1
bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHJlc3VsdCkgPSAwOwotfTsKLQotfSAvLyBu
YW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA4ZGVkMTI5NWY5NDM2ODc4YzczZTljZWRiNjYxMzEyM2U0MjIxZGRlLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzA2ICsw
LDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDksIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMyBVbml2
ZXJzaXR5IG9mIFdhc2hpbmd0b24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3Ig
dGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJ
UyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKLQotI2luY2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1l
LmgiCi0jaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgotI2luY2x1ZGUgIkV4Y2VwdGlvbi5oIgot
I2luY2x1ZGUgIkpTSmF2YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgIkphdmFTY3JpcHRD
YWxsRnJhbWUuaCIKLSNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi9O
ZXZlckRlc3Ryb3llZC5oPgotI2luY2x1ZGUgPHd0Zi9TZXRGb3JTY29wZS5oPgotCi1uYW1lc3Bh
Y2UgSW5zcGVjdG9yIHsKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotU2NyaXB0RGVidWdTZXJ2
ZXI6OlNjcmlwdERlYnVnU2VydmVyKFZNJiB2bSkKLSAgICA6IERlYnVnZ2VyKHZtKQotewotfQot
Ci1TY3JpcHREZWJ1Z1NlcnZlcjo6flNjcmlwdERlYnVnU2VydmVyKCkKLXsKLX0KLQotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0QnJlYWtwb2ludEFjdGlvbnMoQnJlYWtwb2ludElEIGlkLCBj
b25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50KQotewotICAgIEFTU0VSVChp
ZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0gICAgQVNTRVJUKCFtX2JyZWFrcG9pbnRJRFRvQWN0aW9u
cy5jb250YWlucyhpZCkpOwotCi0gICAgbV9icmVha3BvaW50SURUb0FjdGlvbnMuc2V0KGlkLCBz
Y3JpcHRCcmVha3BvaW50LmFjdGlvbnMpOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpy
ZW1vdmVCcmVha3BvaW50QWN0aW9ucyhCcmVha3BvaW50SUQgaWQpCi17Ci0gICAgQVNTRVJUKGlk
ICE9IG5vQnJlYWtwb2ludElEKTsKLQotICAgIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLnJlbW92
ZShpZCk7Ci19Ci0KLWNvbnN0IEJyZWFrcG9pbnRBY3Rpb25zJiBTY3JpcHREZWJ1Z1NlcnZlcjo6
Z2V0QWN0aW9uc0ZvckJyZWFrcG9pbnQoQnJlYWtwb2ludElEIGlkKQotewotICAgIEFTU0VSVChp
ZCAhPSBub0JyZWFrcG9pbnRJRCk7Ci0KLSAgICBhdXRvIGVudHJ5ID0gbV9icmVha3BvaW50SURU
b0FjdGlvbnMuZmluZChpZCk7Ci0gICAgaWYgKGVudHJ5ICE9IG1fYnJlYWtwb2ludElEVG9BY3Rp
b25zLmVuZCgpKQotICAgICAgICByZXR1cm4gZW50cnktPnZhbHVlOwotCi0gICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPEJyZWFrcG9pbnRBY3Rpb25zPiBlbXB0eUFjdGlvblZlY3RvciA9IEJyZWFr
cG9pbnRBY3Rpb25zKCk7Ci0gICAgcmV0dXJuIGVtcHR5QWN0aW9uVmVjdG9yOwotfQotCi12b2lk
IFNjcmlwdERlYnVnU2VydmVyOjpjbGVhckJyZWFrcG9pbnRBY3Rpb25zKCkKLXsKLSAgICBtX2Jy
ZWFrcG9pbnRJRFRvQWN0aW9ucy5jbGVhcigpOwotfQotCi1ib29sIFNjcmlwdERlYnVnU2VydmVy
OjpldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYg
YnJlYWtwb2ludEFjdGlvbikKLXsKLSAgICBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxs
RnJhbWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLQotICAgIHN3aXRjaCAoYnJlYWtw
b2ludEFjdGlvbi50eXBlKSB7Ci0gICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUxv
ZzoKLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdM
aXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgICAgIGxpc3RlbmVyLmJyZWFrcG9pbnRBY3Rp
b25Mb2coZGVidWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGJyZWFrcG9pbnRBY3Rpb24u
ZGF0YSk7Ci0gICAgICAgIH0pOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgU2NyaXB0QnJl
YWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTogewotICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+
IGV4Y2VwdGlvbjsKLSAgICAgICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVs
bHB0cjsKLSAgICAgICAgZGVidWdnZXJDYWxsRnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNp
b24oYnJlYWtwb2ludEFjdGlvbi5kYXRhLCBzY29wZUV4dGVuc2lvbk9iamVjdCwgZXhjZXB0aW9u
KTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlvbihk
ZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKSwgZXhjZXB0aW9uKTsKLSAgICAgICAgYnJl
YWs7Ci0gICAgfQotCi0gICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVNvdW5kOgot
ICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3Rl
bmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAgbGlzdGVuZXIuYnJlYWtwb2ludEFjdGlvblNv
dW5kKGJyZWFrcG9pbnRBY3Rpb24uaWRlbnRpZmllcik7Ci0gICAgICAgIH0pOwotICAgICAgICBi
cmVhazsKLQotICAgIGNhc2UgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVQcm9iZTogewotICAg
ICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4Y2VwdGlvbjsKLSAgICAgICAgSlNPYmplY3QqIHNj
b3BlRXh0ZW5zaW9uT2JqZWN0ID0gbnVsbHB0cjsKLSAgICAgICAgSlNWYWx1ZSByZXN1bHQgPSBk
ZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVuc2lvbihicmVha3BvaW50QWN0
aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBleGNlcHRpb24pOwotICAgICAgICBKU0M6
OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxP
YmplY3QoKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIHJlcG9ydEV4Y2Vw
dGlvbihnbG9iYWxPYmplY3QsIGV4Y2VwdGlvbik7Ci0KLSAgICAgICAgZGlzcGF0Y2hGdW5jdGlv
blRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAg
ICAgICAgIGxpc3RlbmVyLmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShnbG9iYWxPYmplY3QsIGJyZWFr
cG9pbnRBY3Rpb24sIG1fY3VycmVudFByb2JlQmF0Y2hJZCwgbV9uZXh0UHJvYmVTYW1wbGVJZCsr
LCBleGNlcHRpb24gPyBleGNlcHRpb24tPnZhbHVlKCkgOiByZXN1bHQpOwotICAgICAgICB9KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgU2NyaXB0
RGVidWdTZXJ2ZXI6OnNvdXJjZVBhcnNlZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
b3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBlcnJvckxpbmUsIGNvbnN0IFN0cmlu
ZyYgZXJyb3JNZXNzYWdlKQotewotICAgIC8vIFByZWVtcHRpdmVseSBjaGVjayB3aGV0aGVyIHdl
IGNhbiBkaXNwYXRjaCBzbyB0aGF0IHdlIGRvbid0IGRvIGFueSB1bm5lY2Vzc2FyeSBhbGxvY2F0
aW9ucy4KLSAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBpZiAoZXJyb3JMaW5lICE9IC0xKSB7Ci0gICAgICAgIGF1dG8gc291
cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgpOwotICAgICAgICBhdXRvIGRhdGEg
PSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmcoKTsKLSAgICAgICAgYXV0byBmaXJz
dExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fbGluZS5vbmVCYXNlZElu
dCgpOwotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1
Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAgbGlzdGVuZXIuZmFpbGVkVG9QYXJz
ZVNvdXJjZShzb3VyY2VVUkwsIGRhdGEsIGZpcnN0TGluZSwgZXJyb3JMaW5lLCBlcnJvck1lc3Nh
Z2UpOwotICAgICAgICB9KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIEpTQzo6U291
cmNlSUQgc291cmNlSUQgPSBzb3VyY2VQcm92aWRlci0+YXNJRCgpOwotCi0gICAgLy8gRklYTUU6
IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzM+IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IFNj
cmlwdERlYnVnTGlzdGVuZXI6OlNjcmlwdCB0byB1c2UgU291cmNlUHJvdmlkZXIKLSAgICBTY3Jp
cHREZWJ1Z0xpc3RlbmVyOjpTY3JpcHQgc2NyaXB0OwotICAgIHNjcmlwdC5zb3VyY2VQcm92aWRl
ciA9IHNvdXJjZVByb3ZpZGVyOwotICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRlci0+c291
cmNlVVJMKCk7Ci0gICAgc2NyaXB0LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50
b1N0cmluZygpOwotICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQ
b3NpdGlvbigpLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsKLSAgICBzY3JpcHQuc3RhcnRDb2x1bW4g
PSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgp
OwotICAgIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQoZ2xvYmFsT2Jq
ZWN0KTsKLSAgICBzY3JpcHQuc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTERp
cmVjdGl2ZSgpOwotICAgIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlUHJvdmlkZXIt
PnNvdXJjZU1hcHBpbmdVUkxEaXJlY3RpdmUoKTsKLQotICAgIGludCBzb3VyY2VMZW5ndGggPSBz
Y3JpcHQuc291cmNlLmxlbmd0aCgpOwotICAgIGludCBsaW5lQ291bnQgPSAxOwotICAgIGludCBs
YXN0TGluZVN0YXJ0ID0gMDsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsg
KytpKSB7Ci0gICAgICAgIGlmIChzY3JpcHQuc291cmNlW2ldID09ICdcbicpIHsKLSAgICAgICAg
ICAgIGxpbmVDb3VudCArPSAxOwotICAgICAgICAgICAgbGFzdExpbmVTdGFydCA9IGkgKyAxOwot
ICAgICAgICB9Ci0gICAgfQotCi0gICAgc2NyaXB0LmVuZExpbmUgPSBzY3JpcHQuc3RhcnRMaW5l
ICsgbGluZUNvdW50IC0gMTsKLSAgICBpZiAobGluZUNvdW50ID09IDEpCi0gICAgICAgIHNjcmlw
dC5lbmRDb2x1bW4gPSBzY3JpcHQuc3RhcnRDb2x1bW4gKyBzb3VyY2VMZW5ndGg7Ci0gICAgZWxz
ZQotICAgICAgICBzY3JpcHQuZW5kQ29sdW1uID0gc291cmNlTGVuZ3RoIC0gbGFzdExpbmVTdGFy
dDsKLQotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlz
dGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVyLmRpZFBhcnNlU291cmNlKHNvdXJj
ZUlELCBzY3JpcHQpOwotICAgIH0pOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjp3aWxs
UnVuTWljcm90YXNrKCkKLXsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChT
Y3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBsaXN0ZW5lci53aWxsUnVu
TWljcm90YXNrKCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFJ1
bk1pY3JvdGFzaygpCi17Ci0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2Ny
aXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIuZGlkUnVuTWlj
cm90YXNrKCk7Ci0gICAgfSk7Ci19Ci0KLWJvb2wgU2NyaXB0RGVidWdTZXJ2ZXI6OmNhbkRpc3Bh
dGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpIGNvbnN0Ci17Ci0gICAgaWYgKG1fY2FsbGluZ0xpc3Rl
bmVycykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKEZ1bmN0aW9uPHZv
aWQoU2NyaXB0RGVidWdMaXN0ZW5lciYpPiBjYWxsYmFjaykKLXsKLSAgICBpZiAoIWNhbkRpc3Bh
dGNoRnVuY3Rpb25Ub0xpc3RlbmVycygpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBTZXRGb3JT
Y29wZTxib29sPiBjaGFuZ2UobV9jYWxsaW5nTGlzdGVuZXJzLCB0cnVlKTsKLQotICAgIGZvciAo
YXV0byogbGlzdGVuZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQotICAgICAgICBjYWxs
YmFjaygqbGlzdGVuZXIpOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpub3RpZnlEb25l
UHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkKLXsKLSAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgPSB0cnVlOwotfQotCi12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVCcmVh
a3BvaW50SGl0KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgY29uc3QgSlNDOjpC
cmVha3BvaW50JiBicmVha3BvaW50KQotewotICAgIEFTU0VSVChpc0F0dGFjaGVkKGdsb2JhbE9i
amVjdCkpOwotCi0gICAgbV9jdXJyZW50UHJvYmVCYXRjaElkKys7Ci0KLSAgICBhdXRvIGVudHJ5
ID0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZmluZChicmVha3BvaW50LmlkKTsKLSAgICBpZiAo
ZW50cnkgIT0gbV9icmVha3BvaW50SURUb0FjdGlvbnMuZW5kKCkpIHsKLSAgICAgICAgQnJlYWtw
b2ludEFjdGlvbnMgYWN0aW9ucyA9IGVudHJ5LT52YWx1ZTsKLSAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBhY3Rpb25zLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBpZiAoIWV2YWx1
YXRlQnJlYWtwb2ludEFjdGlvbihhY3Rpb25zW2ldKSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICBpZiAoIWlzQXR0YWNoZWQoZ2xvYmFsT2JqZWN0KSkKLSAgICAgICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OmhhbmRsZUV4Y2VwdGlvbkluQnJlYWtwb2ludENvbmRpdGlvbihKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6RXhjZXB0aW9uKiBleGNlcHRpb24pIGNvbnN0Ci17Ci0g
ICAgcmVwb3J0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKLX0KLQotdm9pZCBT
Y3JpcHREZWJ1Z1NlcnZlcjo6aGFuZGxlUGF1c2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgRGVidWdnZXI6OlJlYXNvbkZvclBhdXNlKQotewotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xp
c3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIEFT
U0VSVChpc1BhdXNlZCgpKTsKLSAgICAgICAgYXV0byYgZGVidWdnZXJDYWxsRnJhbWUgPSBjdXJy
ZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKLSAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gZGVi
dWdnZXJDYWxsRnJhbWUuc2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7Ci0gICAgICAgIGF1dG8ganND
YWxsRnJhbWUgPSB0b0pTKGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LCBKYXZhU2NyaXB0Q2Fs
bEZyYW1lOjpjcmVhdGUoZGVidWdnZXJDYWxsRnJhbWUpLnB0cigpKTsKLSAgICAgICAgbGlzdGVu
ZXIuZGlkUGF1c2UoZ2xvYmFsT2JqZWN0LCBqc0NhbGxGcmFtZSwgZXhjZXB0aW9uT3JDYXVnaHRW
YWx1ZShnbG9iYWxPYmplY3QpKTsKLSAgICB9KTsKLQotICAgIGRpZFBhdXNlKGdsb2JhbE9iamVj
dCk7Ci0KLSAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSBmYWxzZTsKLSAgICBy
dW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOwotCi0gICAgZGlkQ29udGludWUoZ2xvYmFsT2JqZWN0
KTsKLQotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERlYnVnTGlz
dGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVyLmRpZENvbnRpbnVlKCk7Ci0gICAg
fSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKFNjcmlwdERlYnVn
TGlzdGVuZXIqIGxpc3RlbmVyKQotewotICAgIEFTU0VSVChsaXN0ZW5lcik7Ci0KLSAgICBib29s
IHdhc0VtcHR5ID0gbV9saXN0ZW5lcnMuaXNFbXB0eSgpOwotICAgIG1fbGlzdGVuZXJzLmFkZChs
aXN0ZW5lcik7Ci0KLSAgICAvLyBGaXJzdCBsaXN0ZW5lci4gQXR0YWNoIHRoZSBkZWJ1Z2dlci4K
LSAgICBpZiAod2FzRW1wdHkpCi0gICAgICAgIGF0dGFjaERlYnVnZ2VyKCk7Ci19Ci0KLXZvaWQg
U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKFNjcmlwdERlYnVnTGlzdGVuZXIqIGxp
c3RlbmVyLCBib29sIGlzQmVpbmdEZXN0cm95ZWQpCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyKTsK
LQotICAgIG1fbGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0KLSAgICAvLyBMYXN0IGxpc3Rl
bmVyLiBEZXRhY2ggdGhlIGRlYnVnZ2VyLgotICAgIGlmIChtX2xpc3RlbmVycy5pc0VtcHR5KCkp
Ci0gICAgICAgIGRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOwotfQotCi1KU0M6OkpT
VmFsdWUgU2NyaXB0RGVidWdTZXJ2ZXI6OmV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUoSlNDOjpKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQotewotICAgIGlmIChyZWFzb25Gb3JQYXVzZSgpID09
IFBhdXNlZEZvckV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIGN1cnJlbnRFeGNlcHRpb24oKTsK
LQotICAgIGZvciAoUmVmUHRyPERlYnVnZ2VyQ2FsbEZyYW1lPiBmcmFtZSA9ICZjdXJyZW50RGVi
dWdnZXJDYWxsRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPmNhbGxlckZyYW1lKCkpIHsK
LSAgICAgICAgRGVidWdnZXJTY29wZSYgc2NvcGUgPSAqZnJhbWUtPnNjb3BlKCk7Ci0gICAgICAg
IGlmIChzY29wZS5pc0NhdGNoU2NvcGUoKSkKLSAgICAgICAgICAgIHJldHVybiBzY29wZS5jYXVn
aHRWYWx1ZShnbG9iYWxPYmplY3QpOwotICAgIH0KLQotICAgIHJldHVybiB7IH07Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIEluc3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxN2MxMTBkNzRjMTEzM2FiNGZjZjMxZmZjNGIyNTI4MGZlZDkyYmM3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCww
IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4LCAyMDEzLCAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykgMjAxMC0yMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCi0jaW5jbHVk
ZSAiU2NyaXB0QnJlYWtwb2ludC5oIgotI2luY2x1ZGUgIlNjcmlwdERlYnVnTGlzdGVuZXIuaCIK
LSNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KLSNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+Ci0K
LW5hbWVzcGFjZSBKU0MgewotY2xhc3MgQ2FsbEZyYW1lOwotY2xhc3MgSlNHbG9iYWxPYmplY3Q7
Ci1jbGFzcyBWTTsKLX0KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLWNsYXNzIEpTX0VYUE9S
VF9QUklWQVRFIFNjcmlwdERlYnVnU2VydmVyIDogcHVibGljIEpTQzo6RGVidWdnZXIgewotICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFNjcmlwdERlYnVnU2VydmVyKTsKLSAgICBXVEZfTUFLRV9G
QVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLQotICAgIC8vIEZJWE1FOiBNb3ZlIEJyZWFrcG9pbnRB
Y3Rpb24gaGFuZGxpbmcgaW50byBKU0M6OkRlYnVnZ2VyIG9yIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuCi0gICAgdm9pZCBzZXRCcmVha3BvaW50QWN0aW9ucyhKU0M6OkJyZWFrcG9pbnRJRCwgY29u
c3QgU2NyaXB0QnJlYWtwb2ludCYpOwotICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludEFjdGlvbnMo
SlNDOjpCcmVha3BvaW50SUQpOwotICAgIHZvaWQgY2xlYXJCcmVha3BvaW50QWN0aW9ucygpOwot
Ci0gICAgY29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIGdldEFjdGlvbnNGb3JCcmVha3BvaW50KEpT
Qzo6QnJlYWtwb2ludElEKTsKLQotICAgIHZvaWQgYWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciopOwotICAgIHZvaWQgcmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciosIGJv
b2wgaXNCZWluZ0Rlc3Ryb3llZCk7Ci0KLXByb3RlY3RlZDoKLSAgICBTY3JpcHREZWJ1Z1NlcnZl
cihKU0M6OlZNJik7Ci0gICAgflNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7Ci0KLSAgICB2
aXJ0dWFsIHZvaWQgYXR0YWNoRGVidWdnZXIoKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRldGFj
aERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lk
IGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRp
ZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHJ1
bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgPSAwOwotICAgIHZpcnR1YWwgYm9vbCBpc0NvbnRlbnRT
Y3JpcHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNv
bnN0ID0gMDsKLQotICAgIGJvb2wgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlw
dEJyZWFrcG9pbnRBY3Rpb24mKTsKLQotICAgIGJvb2wgY2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlz
dGVuZXJzKCkgY29uc3Q7Ci0gICAgdm9pZCBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoRnVu
Y3Rpb248dm9pZChTY3JpcHREZWJ1Z0xpc3RlbmVyJik+IGNhbGxiYWNrKTsKLQotICAgIGJvb2wg
bV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzIHsgdHJ1ZSB9OwotCi1wcml2YXRlOgotICAg
IHR5cGVkZWYgSGFzaE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgQnJlYWtwb2ludEFjdGlvbnM+IEJy
ZWFrcG9pbnRJRFRvQWN0aW9uc01hcDsKLQotICAgIHZvaWQgc291cmNlUGFyc2VkKEpTQzo6SlNH
bG9iYWxPYmplY3QqLCBKU0M6OlNvdXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZSwgY29uc3Qg
U3RyaW5nJiBlcnJvck1zZykgZmluYWw7Ci0gICAgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgZmlu
YWw7Ci0gICAgdm9pZCBkaWRSdW5NaWNyb3Rhc2soKSBmaW5hbDsKLSAgICB2b2lkIGhhbmRsZUJy
ZWFrcG9pbnRIaXQoSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IEpTQzo6QnJlYWtwb2ludCYp
IGZpbmFsOwotICAgIHZvaWQgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsOwotICAgIHZv
aWQgaGFuZGxlUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RGVidWdnZXI6OlJlYXNv
bkZvclBhdXNlKSBmaW5hbDsKLSAgICB2b2lkIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJF
dmVudHMoKSBmaW5hbDsKLQotICAgIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVl
KEpTQzo6SlNHbG9iYWxPYmplY3QqKTsKLQotICAgIEJyZWFrcG9pbnRJRFRvQWN0aW9uc01hcCBt
X2JyZWFrcG9pbnRJRFRvQWN0aW9uczsKLSAgICBIYXNoU2V0PFNjcmlwdERlYnVnTGlzdGVuZXIq
PiBtX2xpc3RlbmVyczsKLSAgICBib29sIG1fY2FsbGluZ0xpc3RlbmVycyB7IGZhbHNlIH07Ci0g
ICAgdW5zaWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJZCB7IDEgfTsKLSAgICB1bnNpZ25lZCBtX2N1
cnJlbnRQcm9iZUJhdGNoSWQgeyAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckF1ZGl0QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKaW5kZXggYmZkNzc3NGNmM2Q3MzVjZGVhZTdlYjE5
ZDFhZTQ1MjQxNjVlMzVjNi4uOTdjZWE5NGJkNWFmYWE2NWFlNDAzYTNkMDk1MDUyZWQ3OTkyOTI5
OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yQXVkaXRBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAKQEAgLTI2LDEwICsyNiwxMCBAQAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckF1ZGl0QWdlbnQuaCIKIAorI2lu
Y2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJKU0xvY2suaCIKICNpbmNsdWRlICJPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlNj
cmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0
Zi9WZWN0b3IuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CkBAIC0xMDUs
OSArMTA1LDkgQEAgdm9pZCBJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4oRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRlc3QsIGNvbnMKIAogICAgIE9wdGlvbmFsPGludD4g
c2F2ZWRSZXN1bHRJbmRleDsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IG1fc2NyaXB0RGVidWdT
ZXJ2ZXIucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOworICAgIGF1dG8gcHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUoU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgbV9zY3Jp
cHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKERlYnVnZ2VyOjpEb250UGF1
c2VPbkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlw
dC5leGVjdXRlKGVycm9yU3RyaW5nLCBmdW5jdGlvblN0cmluZy50b1N0cmluZygpLCBXVEZNb3Zl
KG9wdGlvbnMpLCByZXN1bHQsIHdhc1Rocm93biwgc2F2ZWRSZXN1bHRJbmRleCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRp
dEFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmgKaW5kZXggODNiY2NhNjI5NzU0OGRlM2Y2ODAxOWRlNWZmNTMxM2VmNzRh
MjY4Yy4uMDZiMWE4M2ZkODIzNTM2MDgwMjY1ZjliOWIyMmYwNjU2OTBjZWM0MSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yQXVkaXRB
Z2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckF1ZGl0QWdlbnQuaApAQCAtMzIsMTEgKzMyLDE0IEBACiAjaW5jbHVkZSA8d3RmL0Zvcndh
cmQuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KIAorbmFtZXNwYWNlIEpTQyB7Citj
bGFzcyBEZWJ1Z2dlcjsKK30KKwogbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIEluamVj
dGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2NyaXB0RGVi
dWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSlNfRVhQT1JU
X1BSSVZBVEUgSW5zcGVjdG9yQXVkaXRBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2Us
IHB1YmxpYyBBdWRpdEJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CkBAIC03MSw3ICs3NCw3IEBA
IHByb3RlY3RlZDoKIHByaXZhdGU6CiAgICAgUmVmUHRyPEF1ZGl0QmFja2VuZERpc3BhdGNoZXI+
IG1fYmFja2VuZERpc3BhdGNoZXI7CiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOwogCiAgICAgSlND
OjpTdHJvbmc8SlNDOjpKU09iamVjdD4gbV9pbmplY3RlZFdlYkluc3BlY3RvckF1ZGl0VmFsdWU7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCAyOWMxMzBiOTY1Y2Ey
NjU2NDFjNDBmNzUwOTljZjZlYmQyNjQwMDcyLi4yYTRhOWQ0OTc1ZGUwZDZiNTU0YTU2ODczZDY2
ZDIwOWEwNTkzZjQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMzIs
MTIgKzMyLDE2IEBACiAKICNpbmNsdWRlICJBc3luY1N0YWNrVHJhY2UuaCIKICNpbmNsdWRlICJD
b250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKKyNpbmNsdWRl
ICJEZWJ1Z2dlclNjb3BlLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNsdWRl
ICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJKU0phdmFTY3JpcHRDYWxsRnJh
bWUuaCIKKyNpbmNsdWRlICJKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCiAjaW5jbHVkZSAiUmVndWxh
ckV4cHJlc3Npb24uaCIKICNpbmNsdWRlICJTY3JpcHRDYWxsU3RhY2suaCIKICNpbmNsdWRlICJT
Y3JpcHRDYWxsU3RhY2tGYWN0b3J5LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgog
I2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KQEAgLTUwLDkgKzU0LDkgQEAgY29uc3QgY2hhciogY29uc3QgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXAgPSAiYmFja3RyYWNlIjsKIC8vIGFjY29yZGluZyB0
byB0aGUgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllciBhc3NpZ25lZCBieSB0aGUgZnJvbnRl
bmQuIEEgYnJlYWtwb2ludCBtYXkKIC8vIGhhdmUgc2V2ZXJhbCBvYmplY3QgZ3JvdXBzLCBhbmQg
b2JqZWN0cyBmcm9tIHNldmVyYWwgYmFja2VuZCBicmVha3BvaW50IGFjdGlvbiBpbnN0YW5jZXMg
bWF5CiAvLyBjcmVhdGUgb2JqZWN0cyBpbiB0aGUgc2FtZSBncm91cC4KLXN0YXRpYyBTdHJpbmcg
b2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b24mIGFjdGlvbikKK3N0YXRpYyBTdHJpbmcgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9u
KEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGlkKQogewotICAgIHJldHVybiBtYWtlU3RyaW5nKCJi
cmVha3BvaW50LWFjdGlvbi0iLCBhY3Rpb24uaWRlbnRpZmllcik7CisgICAgcmV0dXJuIG1ha2VT
dHJpbmcoImJyZWFrcG9pbnQtYWN0aW9uLSIsIGlkKTsKIH0KIAogc3RhdGljIGJvb2wgaXNXZWJL
aXRJbmplY3RlZFNjcmlwdChjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKQEAgLTYwLDYgKzY0LDE1
NiBAQCBzdGF0aWMgYm9vbCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKQogICAgIHJldHVybiBzb3VyY2VVUkwuc3RhcnRzV2l0aCgiX19JbmplY3RlZFNjcmlw
dF8iKSAmJiBzb3VyY2VVUkwuZW5kc1dpdGgoIi5qcyIpOwogfQogCitzdGF0aWMgT3B0aW9uYWw8
SlNDOjpCcmVha3BvaW50OjpBY3Rpb246OlR5cGU+IGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3Ry
aW5nKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nKQor
eworICAgIGF1dG8gdHlwZSA9IEluc3BlY3Rvcjo6UHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6
OnBhcnNlRW51bVZhbHVlRnJvbVN0cmluZzxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
QnJlYWtwb2ludEFjdGlvbjo6VHlwZT4odHlwZVN0cmluZyk7CisgICAgaWYgKCF0eXBlKSB7Cisg
ICAgICAgIGVycm9yU3RyaW5nID0gbWFrZVN0cmluZygiVW5rbm93biBicmVha3BvaW50IGFjdGlv
biB0eXBlOiAiX3MsIHR5cGVTdHJpbmcpOworICAgICAgICByZXR1cm4gV1RGOjpudWxsb3B0Owor
ICAgIH0KKworICAgIHN3aXRjaCAoKnR5cGUpIHsKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpMb2c6CisgICAgICAgIHJldHVy
biBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6TG9nOworCisgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6RXZhbHVhdGU6
CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6RXZhbHVhdGU7
CisKKyAgICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0
aW9uOjpUeXBlOjpTb3VuZDoKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9u
OjpUeXBlOjpTb3VuZDsKKworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlByb2JlOgorICAgICAgICByZXR1cm4gSlNDOjpCcmVh
a3BvaW50OjpBY3Rpb246OlR5cGU6OlByb2JlOworICAgIH0KKworICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBUPgorc3RhdGljIFQgcGFyc2VCcmVha3BvaW50T3B0aW9ucyhFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQsIEZ1bmN0aW9uPFQoY29u
c3QgU3RyaW5nJiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYsIGJvb2wsIHNpemVf
dCk+IGNhbGxiYWNrKQoreworICAgIFN0cmluZyBjb25kaXRpb247CisgICAgSlNDOjpCcmVha3Bv
aW50OjpBY3Rpb25zVmVjdG9yIGFjdGlvbnM7CisgICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxz
ZTsKKyAgICBzaXplX3QgaWdub3JlQ291bnQgPSAwOworCisgICAgaWYgKG9wdGlvbnNQYXlsb2Fk
KSB7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5nZXRTdHJpbmcoImNvbmRpdGlvbiJfcywgY29u
ZGl0aW9uKTsKKworICAgICAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFjdGlvbnNQYXlsb2FkOwor
ICAgICAgICBvcHRpb25zUGF5bG9hZC0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnNQYXls
b2FkKTsKKyAgICAgICAgaWYgKGF1dG8gY291bnQgPSBhY3Rpb25zUGF5bG9hZCA/IGFjdGlvbnNQ
YXlsb2FkLT5sZW5ndGgoKSA6IDApIHsKKyAgICAgICAgICAgIGFjdGlvbnMucmVzZXJ2ZUNhcGFj
aXR5KGNvdW50KTsKKworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGNvdW50
OyArK2kpIHsKKyAgICAgICAgICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBhY3Rpb25PYmpl
Y3Q7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25zUGF5bG9hZC0+Z2V0KGkpLT5hc09iamVj
dChhY3Rpb25PYmplY3QpKSB7CisgICAgICAgICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVu
ZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAg
ICAgU3RyaW5nIGFjdGlvblR5cGVTdHJpbmc7CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25P
YmplY3QtPmdldFN0cmluZygidHlwZSJfcywgYWN0aW9uVHlwZVN0cmluZykpIHsKKyAgICAgICAg
ICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiTWlzc2luZyB0eXBlIGZvciBpdGVtIGluIGdpdmVu
IGFjdGlvbnMiX3M7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byBhY3Rpb25UeXBlID0gYnJlYWtwb2ludEFj
dGlvblR5cGVGb3JTdHJpbmcoZXJyb3JTdHJpbmcsIGFjdGlvblR5cGVTdHJpbmcpOworICAgICAg
ICAgICAgICAgIGlmICghYWN0aW9uVHlwZSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgICAgICAgICAgICAgIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uIGFjdGlvbigqYWN0
aW9uVHlwZSk7CisKKyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3QtPmdldFN0cmluZygiZGF0
YSJfcywgYWN0aW9uLmRhdGEpOworCisgICAgICAgICAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBp
ZGVudGlmaWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBz
YW1wbGVzCisgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBs
ZSBiYWNrZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgorICAg
ICAgICAgICAgICAgIGFjdGlvbk9iamVjdC0+Z2V0SW50ZWdlcigiaWQiX3MsIGFjdGlvbi5pZCk7
CisKKyAgICAgICAgICAgICAgICBhY3Rpb25zLmFwcGVuZChXVEZNb3ZlKGFjdGlvbikpOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgb3B0aW9uc1BheWxvYWQtPmdldEJvb2xl
YW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKKyAgICAgICAgb3B0aW9uc1BheWxv
YWQtPmdldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3VudCk7CisgICAgfQorCisg
ICAgcmV0dXJuIGNhbGxiYWNrKGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRp
bnVlLCBpZ25vcmVDb3VudCk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OlByb3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVh
a3BvaW50Ojpmcm9tUGF5bG9hZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEpTQzo6U291cmNl
SUQgc291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwg
Y29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKK3sKKyAgICByZXR1cm4gcGFyc2VC
cmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+PihlcnJvclN0cmlu
Zywgb3B0aW9uc1BheWxvYWQsIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpTQzo6QnJl
YWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVlLCBzaXpl
X3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4geworICAgICAg
ICByZXR1cm4gUHJvdG9jb2xCcmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVD
b3VudCk7CisgICAgfSk7Cit9CisKK09wdGlvbmFsPEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlBy
b3RvY29sQnJlYWtwb2ludD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3Bv
aW50Ojpmcm9tUGF5bG9hZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
dXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51
bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKK3sKKyAgICByZXR1cm4g
cGFyc2VCcmVha3BvaW50T3B0aW9uczxPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+PihlcnJv
clN0cmluZywgb3B0aW9uc1BheWxvYWQsIFsmXSAoY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIEpT
Qzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0NvbnRpbnVl
LCBzaXplX3QgaWdub3JlQ291bnQpIC0+IE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4gewor
ICAgICAgICByZXR1cm4gUHJvdG9jb2xCcmVha3BvaW50KHVybCwgaXNSZWdleCwgbGluZU51bWJl
ciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51
ZSwgaWdub3JlQ291bnQpOworICAgIH0pOworfQorCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQ
cm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJlYWtwb2ludCgpID0gZGVmYXVsdDsKKworSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50OjpQcm90b2NvbEJyZWFrcG9p
bnQoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgSlNDOjpCcmVha3BvaW50OjpB
Y3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVfdCBpZ25vcmVD
b3VudCkKKyAgICA6IG1faWQobWFrZVN0cmluZyhzb3VyY2VJRCwgJzonLCBsaW5lTnVtYmVyLCAn
OicsIGNvbHVtbk51bWJlcikpCisjaWYgQVNTRVJUX0VOQUJMRUQKKyAgICAsIG1fc291cmNlSUQo
c291cmNlSUQpCisjZW5kaWYKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICwg
bV9jb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQorICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9u
KQorICAgICwgbV9hY3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgLCBtX2F1dG9Db250aW51
ZShhdXRvQ29udGludWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGlnbm9yZUNvdW50KQoreworfQor
CitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29sQnJl
YWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBsaW5lTnVt
YmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwg
c2l6ZV90IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChtYWtlU3RyaW5nKGlzUmVnZXggPyAiLyIg
OiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi8iIDogIiIsICc6JywgbGluZU51bWJlciwgJzonLCBjb2x1
bW5OdW1iZXIpKQorICAgICwgbV91cmwodXJsKQorICAgICwgbV9pc1JlZ2V4KGlzUmVnZXgpCisg
ICAgLCBtX2xpbmVOdW1iZXIobGluZU51bWJlcikKKyAgICAsIG1fY29sdW1uTnVtYmVyKGNvbHVt
bk51bWJlcikKKyAgICAsIG1fY29uZGl0aW9uKGNvbmRpdGlvbikKKyAgICAsIG1fYWN0aW9ucyhX
VEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRvQ29udGludWUoYXV0b0NvbnRpbnVlKQorICAg
ICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkKK3sKK30KKworUmVmPEpTQzo6QnJlYWtwb2lu
dD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50OjpjcmVhdGVEZWJ1
Z2dlckJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50SUQgZGVidWdnZXJCcmVha3BvaW50SUQsIEpT
Qzo6U291cmNlSUQgc291cmNlSUQpIGNvbnN0Cit7CisgICAgQVNTRVJUKGRlYnVnZ2VyQnJlYWtw
b2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpOworICAgIEFTU0VSVChzb3VyY2VJRCAhPSBK
U0M6Om5vU291cmNlSUQpOworICAgIEFTU0VSVChzb3VyY2VJRCA9PSBtX3NvdXJjZUlEIHx8IG1f
c291cmNlSUQgPT0gSlNDOjpub1NvdXJjZUlEKTsKKworICAgIGF1dG8gZGVidWdnZXJCcmVha3Bv
aW50ID0gSlNDOjpCcmVha3BvaW50OjpjcmVhdGUoZGVidWdnZXJCcmVha3BvaW50SUQsIG1fY29u
ZGl0aW9uLCBjb3B5VG9WZWN0b3IobV9hY3Rpb25zKSwgbV9hdXRvQ29udGludWUsIG1faWdub3Jl
Q291bnQpOworICAgIGRlYnVnZ2VyQnJlYWtwb2ludC0+bGluayhzb3VyY2VJRCwgbV9saW5lTnVt
YmVyLCBtX2NvbHVtbk51bWJlcik7CisgICAgcmV0dXJuIGRlYnVnZ2VyQnJlYWtwb2ludDsKK30K
KworYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6Om1hdGNo
ZXNTY3JpcHRVUkwoY29uc3QgU3RyaW5nJiBzY3JpcHRVUkwpIGNvbnN0Cit7CisgICAgQVNTRVJU
KG1fc291cmNlSUQgPT0gSlNDOjpub1NvdXJjZUlEKTsKKworICAgIGlmIChtX2lzUmVnZXgpIHsK
KyAgICAgICAgSlNDOjpZYXJyOjpSZWd1bGFyRXhwcmVzc2lvbiByZWdleChtX3VybCk7CisgICAg
ICAgIHJldHVybiByZWdleC5tYXRjaChzY3JpcHRVUkwpICE9IC0xOworICAgIH0KKyAgICByZXR1
cm4gbV91cmwgPT0gc2NyaXB0VVJMOworfQorCitSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5bG9hZChFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpCit7
CisgICAgcmV0dXJuIHBhcnNlQnJlYWtwb2ludE9wdGlvbnM8UmVmUHRyPEpTQzo6QnJlYWtwb2lu
dD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgW10gKGNvbnN0IFN0cmluZyYgY29uZGl0
aW9uLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9D
b250aW51ZSwgc2l6ZV90IGlnbm9yZUNvdW50KSB7CisgICAgICAgIHJldHVybiBKU0M6OkJyZWFr
cG9pbnQ6OmNyZWF0ZShKU0M6Om5vQnJlYWtwb2ludElELCBjb25kaXRpb24sIFdURk1vdmUoYWN0
aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOworICAgIH0pOworfQorCiBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEFnZW50Q29udGV4dCYgY29u
dGV4dCkKICAgICA6IEluc3BlY3RvckFnZW50QmFzZSgiRGVidWdnZXIiX3MpCiAgICAgLCBtX2Zy
b250ZW5kRGlzcGF0Y2hlcihtYWtlVW5pcXVlPERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihj
b250ZXh0LmZyb250ZW5kUm91dGVyKSkKQEAgLTg3LDcgKzI0MSw3IEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKICAgICBtX2VuYWJsZWQgPSB0cnVlOwogCi0gICAg
bV9zY3JpcHREZWJ1Z1NlcnZlci5hZGRMaXN0ZW5lcih0aGlzKTsKKyAgICBtX3NjcmlwdERlYnVn
U2VydmVyLmFkZE9ic2VydmVyKCp0aGlzKTsKIAogICAgIGZvciAoYXV0byogbGlzdGVuZXIgOiBj
b3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+ZGVidWdnZXJXYXNF
bmFibGVkKCk7CkBAIC0xMDgsMTUgKzI2MiwxMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogICAgIGZvciAoYXV0byogbGlzdGVu
ZXIgOiBjb3B5VG9WZWN0b3IobV9saXN0ZW5lcnMpKQogICAgICAgICBsaXN0ZW5lci0+ZGVidWdn
ZXJXYXNEaXNhYmxlZCgpOwogCi0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVMaXN0ZW5l
cih0aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKKyAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92
ZU9ic2VydmVyKCp0aGlzLCBpc0JlaW5nRGVzdHJveWVkKTsKIAogICAgIGNsZWFySW5zcGVjdG9y
QnJlYWtwb2ludFN0YXRlKCk7CiAKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCiAgICAgICAg
IG1fc2NyaXB0RGVidWdTZXJ2ZXIuZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCk7CiAKLSAgICBBU1NF
UlQobV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuaXNFbXB0eSgpKTsKLQogICAgIGNsZWFyQXN5bmNT
dGFja1RyYWNlRGF0YSgpOwogCiAgICAgbV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMgPSBmYWxz
ZTsKQEAgLTIwNiwxNyArMzU4LDIyIEBAIHN0YXRpYyBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWls
ZENTUFZpb2xhdGlvblBhdXNlUmVhc29uKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlCiAgICAgcmV0
dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOwogfQogCi1SZWZQdHI8SlNPTjo6T2JqZWN0PiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihKU0M6OkJy
ZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyKQorUmVmUHRyPEpTT046Ok9i
amVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24o
SlNDOjpCcmVha3BvaW50SUQgZGVidWdnZXJCcmVha3BvaW50SUQpCiB7Ci0gICAgQVNTRVJUKGRl
YnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7Ci0gICAg
YXV0byBpdCA9IG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtw
b2ludElkZW50aWZpZXIuZmluZChkZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyKTsKLSAgICBp
ZiAoaXQgPT0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3Bv
aW50SWRlbnRpZmllci5lbmQoKSkKLSAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgQVNTRVJU
KGRlYnVnZ2VyQnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpOwogCi0gICAgYXV0
byByZWFzb24gPSBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3Jl
YXRlKCkKLSAgICAgICAgLnNldEJyZWFrcG9pbnRJZChpdC0+dmFsdWUpCi0gICAgICAgIC5yZWxl
YXNlKCk7Ci0gICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOworICAgIGZvciAoYXV0
byYgW3Byb3RvY29sQnJlYWtwb2ludElELCBkZWJ1Z2dlckJyZWFrcG9pbnRzXSA6IG1fZGVidWdn
ZXJCcmVha3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElEKSB7CisgICAgICAgIGZvciAoYXV0
byYgZGVidWdnZXJCcmVha3BvaW50IDogZGVidWdnZXJCcmVha3BvaW50cykgeworICAgICAgICAg
ICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludC0+aWQoKSA9PSBkZWJ1Z2dlckJyZWFrcG9pbnRJRCkg
eworICAgICAgICAgICAgICAgIGF1dG8gcmVhc29uID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVh
a3BvaW50UGF1c2VSZWFzb246OmNyZWF0ZSgpCisgICAgICAgICAgICAgICAgICAgIC5zZXRCcmVh
a3BvaW50SWQocHJvdG9jb2xCcmVha3BvaW50SUQpCisgICAgICAgICAgICAgICAgICAgIC5yZWxl
YXNlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHJlYXNvbi0+b3BlbkFjY2Vzc29ycygpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKIFJlZlB0cjxKU09OOjpPYmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhj
ZXB0aW9uUGF1c2VSZWFzb24oSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgSW5qZWN0ZWRT
Y3JpcHQmIGluamVjdGVkU2NyaXB0KQpAQCAtMjM0LDcgKzM5MSw3IEBAIFJlZlB0cjxKU09OOjpP
YmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24o
SlNDOjpKU1ZhCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFz
c2VydChjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2Vy
dmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uQXNzZXJ0aW9uRmFpbHVyZXMpCkBA
IC0yNTEsNyArNDA4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTY2hlZHVs
ZUFzeW5jQ2FsbChKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmoKICAgICBpZiAoIW1fYXN5
bmNTdGFja1RyYWNlRGVwdGgpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICghbV9zY3JpcHRE
ZWJ1Z1NlcnZlci5icmVha3BvaW50c0FjdGl2ZSgpKQorICAgIGlmICghYnJlYWtwb2ludHNBY3Rp
dmUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0
YWNrID0gY3JlYXRlU2NyaXB0Q2FsbFN0YWNrKGdsb2JhbE9iamVjdCwgbV9hc3luY1N0YWNrVHJh
Y2VEZXB0aCk7CkBAIC0zMzMsMTA3ICs0OTAsMTUgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpkaWREaXNwYXRjaEFzeW5jQ2FsbCgpCiAgICAgICAgIG1fcGVuZGluZ0FzeW5jQ2FsbHMu
cmVtb3ZlKGlkZW50aWZpZXIpOwogfQogCi1zdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gYnVpbGRP
YmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIFJlZlB0cjxKU09O
OjpBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdleCwgYm9vbCBhdXRvQ29udGludWUsIHVuc2ln
bmVkIGlnbm9yZUNvdW50KQorc3RhdGljIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0
aW9uPiBidWlsZERlYnVnZ2VyTG9jYXRpb24oY29uc3QgSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dl
ckJyZWFrcG9pbnQpCiB7Ci0gICAgUmVmPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9
IEpTT046Ok9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0U3RyaW5n
KCJ1cmwiX3MsIHVybCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcigibGluZU51
bWJlciJfcywgbGluZU51bWJlcik7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0SW50ZWdlcigi
Y29sdW1uTnVtYmVyIl9zLCBjb2x1bW5OdW1iZXIpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNl
dFN0cmluZygiY29uZGl0aW9uIl9zLCBjb25kaXRpb24pOwotICAgIGJyZWFrcG9pbnRPYmplY3Qt
PnNldEJvb2xlYW4oImlzUmVnZXgiX3MsIGlzUmVnZXgpOwotICAgIGJyZWFrcG9pbnRPYmplY3Qt
PnNldEJvb2xlYW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICBicmVha3Bv
aW50T2JqZWN0LT5zZXRJbnRlZ2VyKCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotCi0g
ICAgaWYgKGFjdGlvbnMpCi0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEFycmF5KCJhY3Rp
b25zIl9zLCBhY3Rpb25zKTsKLQotICAgIHJldHVybiBicmVha3BvaW50T2JqZWN0OwotfQotCi1z
dGF0aWMgYm9vbCBtYXRjaGVzKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHBhdHRl
cm4sIGJvb2wgaXNSZWdleCkKLXsKLSAgICBpZiAoaXNSZWdleCkgewotICAgICAgICBKU0M6Ollh
cnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KHBhdHRlcm4pOwotICAgICAgICByZXR1cm4gcmVn
ZXgubWF0Y2godXJsKSAhPSAtMTsKLSAgICB9Ci0gICAgcmV0dXJuIHVybCA9PSBwYXR0ZXJuOwot
fQotCi1zdGF0aWMgYm9vbCBicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhjb25zdCBTdHJp
bmcmIHR5cGVTdHJpbmcsIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlKiBvdXRwdXQpCi17Ci0g
ICAgaWYgKHR5cGVTdHJpbmcgPT0gUHJvdG9jb2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1D
b25zdGFudFZhbHVlKFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6
TG9nKSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2c7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90
b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpFdmFsdWF0ZSkpIHsKLSAgICAgICAgKm91
dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlRXZhbHVhdGU7Ci0gICAgICAgIHJldHVy
biB0cnVlOwotICAgIH0KLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9y
SGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50QWN0aW9uOjpUeXBlOjpTb3VuZCkpIHsKLSAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFr
cG9pbnRBY3Rpb25UeXBlU291bmQ7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBp
ZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0
YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpQcm9i
ZSkpIHsKLSAgICAgICAgKm91dHB1dCA9IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmU7
Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHJldHVybiBmYWxzZTsKLX0KLQot
Ym9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2Nv
bChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU09OOjpBcnJheT4mIGFjdGlvbnMs
IEJyZWFrcG9pbnRBY3Rpb25zKiByZXN1bHQpCi17Ci0gICAgaWYgKCFhY3Rpb25zKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLQotICAgIHVuc2lnbmVkIGFjdGlvbnNMZW5ndGggPSBhY3Rpb25zLT5s
ZW5ndGgoKTsKLSAgICBpZiAoIWFjdGlvbnNMZW5ndGgpCi0gICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgcmVzdWx0LT5yZXNlcnZlQ2FwYWNpdHkoYWN0aW9uc0xlbmd0aCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGFjdGlvbnNMZW5ndGg7ICsraSkgewotICAgICAgICBSZWZQdHI8
SlNPTjo6VmFsdWU+IHZhbHVlID0gYWN0aW9ucy0+Z2V0KGkpOwotICAgICAgICBSZWZQdHI8SlNP
Tjo6T2JqZWN0PiBvYmplY3Q7Ci0gICAgICAgIGlmICghdmFsdWUtPmFzT2JqZWN0KG9iamVjdCkp
IHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIlVuZXhwZWN0ZWQgbm9uLW9iamVjdCBpdGVt
IGluIGdpdmVuIGFjdGlvbnMiX3M7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
IH0KLQotICAgICAgICBTdHJpbmcgdHlwZVN0cmluZzsKLSAgICAgICAgaWYgKCFvYmplY3QtPmdl
dFN0cmluZygidHlwZSJfcywgdHlwZVN0cmluZykpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5n
ID0gIk1pc3NpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOwotICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludEFj
dGlvblR5cGUgdHlwZTsKLSAgICAgICAgaWYgKCFicmVha3BvaW50QWN0aW9uVHlwZUZvclN0cmlu
Zyh0eXBlU3RyaW5nLCAmdHlwZSkpIHsKLSAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIk5vbi1z
dHJpbmcgdHlwZSBmb3IgaXRlbSBpbiBnaXZlbiBhY3Rpb25zIl9zOwotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3BlY2lmeWluZyBhbiBpZGVudGlm
aWVyIGlzIG9wdGlvbmFsLiBUaGV5IGFyZSB1c2VkIHRvIGNvcnJlbGF0ZSBwcm9iZSBzYW1wbGVz
Ci0gICAgICAgIC8vIGluIHRoZSBmcm9udGVuZCBhY3Jvc3MgbXVsdGlwbGUgYmFja2VuZCBwcm9i
ZSBhY3Rpb25zIGFuZCBzZWdyZWdhdGUgb2JqZWN0IGdyb3Vwcy4KLSAgICAgICAgaW50IGlkZW50
aWZpZXIgPSAwOwotICAgICAgICBvYmplY3QtPmdldEludGVnZXIoImlkIl9zLCBpZGVudGlmaWVy
KTsKLQotICAgICAgICBTdHJpbmcgZGF0YTsKLSAgICAgICAgb2JqZWN0LT5nZXRTdHJpbmcoImRh
dGEiX3MsIGRhdGEpOwotCi0gICAgICAgIHJlc3VsdC0+YXBwZW5kKFNjcmlwdEJyZWFrcG9pbnRB
Y3Rpb24odHlwZSwgaWRlbnRpZmllciwgZGF0YSkpOwotICAgIH0KLQotICAgIHJldHVybiB0cnVl
OwotfQotCi1zdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+IGJ1aWxk
RGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCi17Ci0g
ICAgQVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2ZWQpOworICAgIEFTU0VSVChkZWJ1Z2dlckJyZWFr
cG9pbnQuaXNSZXNvbHZlZCgpKTsKIAogICAgIGF1dG8gbG9jYXRpb24gPSBQcm90b2NvbDo6RGVi
dWdnZXI6OkxvY2F0aW9uOjpjcmVhdGUoKQotICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpu
dW1iZXIoYnJlYWtwb2ludC5zb3VyY2VJRCkpCi0gICAgICAgIC5zZXRMaW5lTnVtYmVyKGJyZWFr
cG9pbnQubGluZSkKKyAgICAgICAgLnNldFNjcmlwdElkKFN0cmluZzo6bnVtYmVyKGRlYnVnZ2Vy
QnJlYWtwb2ludC5zb3VyY2VJRCgpKSkKKyAgICAgICAgLnNldExpbmVOdW1iZXIoZGVidWdnZXJC
cmVha3BvaW50LmxpbmVOdW1iZXIoKSkKICAgICAgICAgLnJlbGVhc2UoKTsKLSAgICBsb2NhdGlv
bi0+c2V0Q29sdW1uTnVtYmVyKGJyZWFrcG9pbnQuY29sdW1uKTsKKyAgICBsb2NhdGlvbi0+c2V0
Q29sdW1uTnVtYmVyKGRlYnVnZ2VyQnJlYWtwb2ludC5jb2x1bW5OdW1iZXIoKSk7CiAKICAgICBy
ZXR1cm4gbG9jYXRpb247CiB9CkBAIC00NTksNjggKzUyNCw0OCBAQCBzdGF0aWMgYm9vbCBwYXJz
ZUxvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBs
b2NhdGlvbgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9i
amVjdCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFr
cG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6
OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIs
IGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdl
eCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBv
cHRpb25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFr
cG9pbnRJZCwgUmVmUHRyPEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4+JiBvdXRMb2NhdGlvbnMpCiB7Ci0gICAgbG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVS
TCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewogICAgICAgICBlcnJvclN0cmluZyA9ICJFaXRoZXIg
dXJsIG9yIHVybFJlZ2V4IG11c3QgYmUgc3BlY2lmaWVkIl9zOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgU3RyaW5nIHVybCA9IG9wdGlvbmFsVVJMID8gKm9wdGlvbmFsVVJMIDogKm9w
dGlvbmFsVVJMUmVnZXg7Ci0gICAgaW50IGNvbHVtbk51bWJlciA9IG9wdGlvbmFsQ29sdW1uTnVt
YmVyID8gKm9wdGlvbmFsQ29sdW1uTnVtYmVyIDogMDsKLSAgICBib29sIGlzUmVnZXggPSBvcHRp
b25hbFVSTFJlZ2V4OworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVh
a3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uYWxVUkwgPyAqb3B0aW9uYWxV
UkwgOiAqb3B0aW9uYWxVUkxSZWdleCwgISFvcHRpb25hbFVSTFJlZ2V4LCBsaW5lTnVtYmVyLCBv
cHRpb25hbENvbHVtbk51bWJlciA/ICpvcHRpb25hbENvbHVtbk51bWJlciA6IDAsIG9wdGlvbnNQ
YXlsb2FkKTsKKyAgICBpZiAoIXByb3RvY29sQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOwog
Ci0gICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVyID0gbWFrZVN0cmluZyhpc1JlZ2V4ID8g
Ii8iIDogIiIsIHVybCwgaXNSZWdleCA/ICIvOiIgOiAiOiIsIGxpbmVOdW1iZXIsICc6JywgY29s
dW1uTnVtYmVyKTsKLSAgICBpZiAobV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuY29udGFpbnMoYnJl
YWtwb2ludElkZW50aWZpZXIpKSB7CisgICAgaWYgKG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJv
dG9jb2xCcmVha3BvaW50SUQuY29udGFpbnMocHJvdG9jb2xCcmVha3BvaW50LT5pZCgpKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJl
YWR5IGV4aXN0cy4iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29u
ZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlOwot
ICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsKLSAgICBSZWZQdHI8SlNPTjo6QXJyYXk+IGFj
dGlvbnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgb3B0aW9ucy0+Z2V0U3RyaW5nKCJj
b25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgICAgIG9wdGlvbnMtPmdldEJvb2xlYW4oImF1
dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0QXJyYXko
ImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBvcHRpb25zLT5nZXRJbnRlZ2VyKCJpZ25v
cmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotICAgIH0KKyAgICBtX3Byb3RvY29sQnJlYWtwb2lu
dEZvclByb3RvY29sQnJlYWtwb2ludElELnNldChwcm90b2NvbEJyZWFrcG9pbnQtPmlkKCksICpw
cm90b2NvbEJyZWFrcG9pbnQpOwogCi0gICAgQnJlYWtwb2ludEFjdGlvbnMgYnJlYWtwb2ludEFj
dGlvbnM7Ci0gICAgaWYgKCFicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChlcnJvclN0cmlu
ZywgYWN0aW9ucywgJmJyZWFrcG9pbnRBY3Rpb25zKSkKLSAgICAgICAgcmV0dXJuOworICAgIG91
dExvY2F0aW9ucyA9IEpTT046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46
OmNyZWF0ZSgpOwogCi0gICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMuc2V0KGJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUodXJsLCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYWN0aW9ucywgaXNSZWdleCwgYXV0b0NvbnRpbnVl
LCBpZ25vcmVDb3VudCkpOwotCi0gICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fc2NyaXB0cykgewot
ICAgICAgICBTY3JpcHQmIHNjcmlwdCA9IGVudHJ5LnZhbHVlOworICAgIGZvciAoYXV0byYgW3Nv
dXJjZUlELCBzY3JpcHRdIDogbV9zY3JpcHRzKSB7CiAgICAgICAgIFN0cmluZyBzY3JpcHRVUkxG
b3JCcmVha3BvaW50cyA9ICFzY3JpcHQuc291cmNlVVJMLmlzRW1wdHkoKSA/IHNjcmlwdC5zb3Vy
Y2VVUkwgOiBzY3JpcHQudXJsOwotICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMRm9yQnJl
YWtwb2ludHMsIHVybCwgaXNSZWdleCkpCisgICAgICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50
LT5tYXRjaGVzU2NyaXB0VVJMKHNjcmlwdFVSTEZvckJyZWFrcG9pbnRzKSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQgPSBlbnRyeS5rZXk7
Ci0gICAgICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVy
LCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0g
ICAgICAgIHJlc29sdmVCcmVha3BvaW50KHNjcmlwdCwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGlm
ICghYnJlYWtwb2ludC5yZXNvbHZlZCkKKyAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnQg
PSBwcm90b2NvbEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1
Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICAgICAgaWYgKCFyZXNvbHZlQnJl
YWtwb2ludChzY3JpcHQsIGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICBib29sIGV4aXN0aW5nOwotICAgICAgICBzZXRCcmVha3BvaW50KGJyZWFr
cG9pbnQsIGV4aXN0aW5nKTsKLSAgICAgICAgaWYgKGV4aXN0aW5nKQorICAgICAgICBpZiAoIXNl
dEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
Ci0gICAgICAgIFNjcmlwdEJyZWFrcG9pbnQgc2NyaXB0QnJlYWtwb2ludChicmVha3BvaW50Lmxp
bmUsIGJyZWFrcG9pbnQuY29sdW1uLCBjb25kaXRpb24sIGJyZWFrcG9pbnRBY3Rpb25zLCBhdXRv
Q29udGludWUsIGlnbm9yZUNvdW50KTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2ludChicmVha3Bv
aW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGRp
ZFNldEJyZWFrcG9pbnQoKnByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsK
IAotICAgICAgICBsb2NhdGlvbnMtPmFkZEl0ZW0oYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGJyZWFr
cG9pbnQpKTsKKyAgICAgICAgb3V0TG9jYXRpb25zLT5hZGRJdGVtKGJ1aWxkRGVidWdnZXJMb2Nh
dGlvbihkZWJ1Z2dlckJyZWFrcG9pbnQpKTsKICAgICB9CiAKLSAgICAqb3V0QnJlYWtwb2ludElk
ZW50aWZpZXIgPSBicmVha3BvaW50SWRlbnRpZmllcjsKKyAgICAqb3V0QnJlYWtwb2ludElkID0g
cHJvdG9jb2xCcmVha3BvaW50LT5pZCgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpP
YmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPFBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9u
c1BheWxvYWQsIFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50
SWQsIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgb3V0QWN0dWFsTG9jYXRp
b24pCiB7CiAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25lZCBsaW5lTnVt
YmVyOwpAQCAtNTI4LDkxICs1NzMsNzEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjoKICAgICBp
ZiAoIXBhcnNlTG9jYXRpb24oZXJyb3JTdHJpbmcsIGxvY2F0aW9uLCBzb3VyY2VJRCwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU3RyaW5nIGNvbmRp
dGlvbiA9IGVtcHR5U3RyaW5nKCk7Ci0gICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKLSAg
ICB1bnNpZ25lZCBpZ25vcmVDb3VudCA9IDA7Ci0gICAgUmVmUHRyPEpTT046OkFycmF5PiBhY3Rp
b25zOwotICAgIGlmIChvcHRpb25zKSB7Ci0gICAgICAgIG9wdGlvbnMtPmdldFN0cmluZygiY29u
ZGl0aW9uIl9zLCBjb25kaXRpb24pOwotICAgICAgICBvcHRpb25zLT5nZXRCb29sZWFuKCJhdXRv
Q29udGludWUiX3MsIGF1dG9Db250aW51ZSk7Ci0gICAgICAgIG9wdGlvbnMtPmdldEFycmF5KCJh
Y3Rpb25zIl9zLCBhY3Rpb25zKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0SW50ZWdlcigiaWdub3Jl
Q291bnQiX3MsIGlnbm9yZUNvdW50KTsKLSAgICB9Ci0KLSAgICBCcmVha3BvaW50QWN0aW9ucyBi
cmVha3BvaW50QWN0aW9uczsKLSAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29s
KGVycm9yU3RyaW5nLCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQotICAgICAgICByZXR1
cm47Ci0KICAgICBhdXRvIHNjcmlwdEl0ZXJhdG9yID0gbV9zY3JpcHRzLmZpbmQoc291cmNlSUQp
OwogICAgIGlmIChzY3JpcHRJdGVyYXRvciA9PSBtX3NjcmlwdHMuZW5kKCkpIHsKICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiTWlzc2luZyBzY3JpcHQgZm9yIHNjcmlwdElkIGluIGdpdmVuIGxvY2F0
aW9uIl9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2NyaXB0JiBzY3JpcHQgPSBz
Y3JpcHRJdGVyYXRvci0+dmFsdWU7Ci0gICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUs
IGlnbm9yZUNvdW50KTsKLSAgICByZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGJyZWFrcG9pbnQp
OwotICAgIGlmICghYnJlYWtwb2ludC5yZXNvbHZlZCkgeworICAgIGF1dG8gcHJvdG9jb2xCcmVh
a3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgc291
cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlciwgb3B0aW9uc1BheWxvYWQpOworICAgIGlm
ICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBEb24ndCBz
YXZlIGBwcm90b2NvbEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3Rv
Y29sQnJlYWtwb2ludElEYCBiZWNhdXNlIGl0CisgICAgLy8gd2FzIHNldCBzcGVjaWZpY2FsbHkg
Zm9yIHRoZSBnaXZlbiBgc291cmNlSURgLCB3aGljaCBpcyB1bmlxdWUsIG1lYW5pbmcgdGhhdCBp
dCB3aWxsIG5ldmVyCisgICAgLy8gYmUgdXNlZCBpbnNpZGUgYEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpZFBhcnNlU291cmNlYC4KKworICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJv
dG9jb2xCcmVha3BvaW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJC
cmVha3BvaW50SUQrKywgc291cmNlSUQpOworCisgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChz
Y3JpcHRJdGVyYXRvci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgZXJy
b3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludCJfczsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgc2V0QnJlYWtwb2ludChicmVh
a3BvaW50LCBleGlzdGluZyk7Ci0gICAgaWYgKGV4aXN0aW5nKSB7CisgICAgaWYgKCFzZXRCcmVh
a3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQnJl
YWtwb2ludCBmb3IgZ2l2ZW4gbG9jYXRpb24gYWxyZWFkeSBleGlzdHMiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBtYWtlU3Ry
aW5nKHNvdXJjZUlELCAnOicsIGJyZWFrcG9pbnQubGluZSwgJzonLCBicmVha3BvaW50LmNvbHVt
bik7Ci0gICAgU2NyaXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50KGJyZWFrcG9pbnQubGlu
ZSwgYnJlYWtwb2ludC5jb2x1bW4sIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlvbnMsIGF1dG9D
b250aW51ZSwgaWdub3JlQ291bnQpOwotICAgIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
YnJlYWtwb2ludElkZW50aWZpZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgIGRpZFNldEJyZWFr
cG9pbnQoKnByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsKIAotICAgIGFj
dHVhbExvY2F0aW9uID0gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGJyZWFrcG9pbnQpOwotICAgICpv
dXRCcmVha3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOworICAgIG91dEFj
dHVhbExvY2F0aW9uID0gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGRlYnVnZ2VyQnJlYWtwb2ludCk7
CisgICAgKm91dEJyZWFrcG9pbnRJZCA9IHByb3RvY29sQnJlYWtwb2ludC0+aWQoKTsKIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KGNvbnN0IEpTQzo6
QnJlYWtwb2ludCYgYnJlYWtwb2ludCwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmll
ciwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYgc2NyaXB0QnJlYWtwb2ludCkKK3ZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkU2V0QnJlYWtwb2ludChQcm90b2NvbEJyZWFrcG9pbnQmIHBy
b3RvY29sQnJlYWtwb2ludCwgSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7
Ci0gICAgSlNDOjpCcmVha3BvaW50SUQgaWQgPSBicmVha3BvaW50LmlkOwotICAgIG1fc2NyaXB0
RGVidWdTZXJ2ZXIuc2V0QnJlYWtwb2ludEFjdGlvbnMoaWQsIHNjcmlwdEJyZWFrcG9pbnQpOwor
ICAgIGF1dG8mIGRlYnVnZ2VyQnJlYWtwb2ludHMgPSBtX2RlYnVnZ2VyQnJlYWtwb2ludHNGb3JQ
cm90b2NvbEJyZWFrcG9pbnRJRC5lbnN1cmUocHJvdG9jb2xCcmVha3BvaW50LmlkKCksIFtdIHsK
KyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludHNWZWN0b3IoKTsKKyAgICB9KS5pdGVyYXRv
ci0+dmFsdWU7CiAKLSAgICBhdXRvIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yID0g
bV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmZpbmQoYnJl
YWtwb2ludElkZW50aWZpZXIpOwotICAgIGlmIChkZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVy
YXRvciA9PSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMu
ZW5kKCkpCi0gICAgICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yID0gbV9icmVh
a3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLnNldChicmVha3BvaW50
SWRlbnRpZmllciwgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPigpKS5pdGVyYXRvcjsKLSAgICBk
ZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNJdGVyYXRvci0+dmFsdWUuYXBwZW5kKGlkKTsKLQotICAg
IG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElkZW50
aWZpZXIuc2V0KGlkLCBicmVha3BvaW50SWRlbnRpZmllcik7CisgICAgZGVidWdnZXJCcmVha3Bv
aW50cy5hcHBlbmQoZGVidWdnZXJCcmVha3BvaW50KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpyZXNvbHZlQnJlYWtwb2ludChjb25zdCBTY3JpcHQmIHNjcmlwdCwgSlNDOjpC
cmVha3BvaW50JiBicmVha3BvaW50KQorYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXNv
bHZlQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmIHNjcmlwdCwgSlNDOjpC
cmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7Ci0gICAgaWYgKGJyZWFrcG9pbnQubGlu
ZSA8IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuc3RhcnRMaW5lKSB8fCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oc2NyaXB0LmVuZExpbmUpIDwgYnJlYWtwb2ludC5saW5lKQotICAgICAgICBy
ZXR1cm47CisgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludC5saW5lTnVtYmVyKCkgPCBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc2NyaXB0LnN0YXJ0TGluZSkgfHwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KHNjcmlwdC5lbmRMaW5lKSA8IGRlYnVnZ2VyQnJlYWtwb2ludC5saW5lTnVtYmVyKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVzb2x2ZUJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsKKyAgICByZXR1
cm4gbV9zY3JpcHREZWJ1Z1NlcnZlci5yZXNvbHZlQnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9p
bnQsIHNjcmlwdC5zb3VyY2VQcm92aWRlci5nZXQoKSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIGJv
b2wmIGV4aXN0aW5nKQorYm9vbCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50
KEpTQzo6QnJlYWtwb2ludCYgZGVidWdnZXJCcmVha3BvaW50KQogewogICAgIEpTQzo6SlNMb2Nr
SG9sZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOwotICAgIG1fc2NyaXB0RGVi
dWdTZXJ2ZXIuc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7CisgICAgcmV0dXJu
IG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpOwog
fQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpyZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCYgcHJvdG9jb2xCcmVha3Bv
aW50SUQpCiB7Ci0gICAgbV9qYXZhU2NyaXB0QnJlYWtwb2ludHMucmVtb3ZlKGJyZWFrcG9pbnRJ
ZGVudGlmaWVyKTsKKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3RvY29sQnJlYWtwb2lu
dElELnJlbW92ZShwcm90b2NvbEJyZWFrcG9pbnRJRCk7CiAKLSAgICBmb3IgKEpTQzo6QnJlYWtw
b2ludElEIGJyZWFrcG9pbnRJRCA6IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVy
QnJlYWtwb2ludElEcy50YWtlKGJyZWFrcG9pbnRJZGVudGlmaWVyKSkgewotICAgICAgICBtX2Rl
YnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVy
LnJlbW92ZShicmVha3BvaW50SUQpOwotCi0gICAgICAgIGNvbnN0IEJyZWFrcG9pbnRBY3Rpb25z
JiBicmVha3BvaW50QWN0aW9ucyA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIuZ2V0QWN0aW9uc0ZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludElEKTsKLSAgICAgICAgZm9yIChhdXRvJiBhY3Rpb24gOiBicmVh
a3BvaW50QWN0aW9ucykKLSAgICAgICAgICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLnJlbGVh
c2VPYmplY3RHcm91cChvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oYWN0aW9uKSk7Cisg
ICAgZm9yIChhdXRvJiBkZWJ1Z2dlckJyZWFrcG9pbnQgOiBtX2RlYnVnZ2VyQnJlYWtwb2ludHNG
b3JQcm90b2NvbEJyZWFrcG9pbnRJRC50YWtlKHByb3RvY29sQnJlYWtwb2ludElEKSkgeworICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIGFjdGlvbiA6IGRlYnVnZ2VyQnJlYWtwb2ludC0+YWN0aW9u
cygpKQorICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIucmVsZWFzZU9iamVjdEdy
b3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb24uaWQpKTsKIAogICAgICAg
ICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKLSAg
ICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50QWN0aW9ucyhicmVha3Bv
aW50SUQpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoYnJl
YWtwb2ludElEKTsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3BvaW50
KGRlYnVnZ2VyQnJlYWtwb2ludCk7CiAgICAgfQogfQogCkBAIC02MzMsOSArNjU4LDkgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdAogICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9yU3RyaW5nKSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2lu
dElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpIHsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZl
ci5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKLSAg
ICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2lu
dElEOworICAgIGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgewor
ICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVU
b0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51ZVRvTG9jYXRp
b25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBudWxscHRyOwogICAgIH0KIAogICAgIEpTQzo6U291cmNl
SUQgc291cmNlSUQ7CkBAIC02NTIsMjIgKzY3NywyMyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIGJv
b2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgPSAwOwot
ICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1
bW5OdW1iZXIsIGNvbmRpdGlvbiwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgU2Ny
aXB0JiBzY3JpcHQgPSBzY3JpcHRJdGVyYXRvci0+dmFsdWU7Ci0gICAgcmVzb2x2ZUJyZWFrcG9p
bnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2ZWQpIHsK
KyAgICBhdXRvIHByb3RvY29sQnJlYWtwb2ludCA9IFByb3RvY29sQnJlYWtwb2ludDo6ZnJvbVBh
eWxvYWQoZXJyb3JTdHJpbmcsIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwor
ICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBE
b24ndCBzYXZlIGBwcm90b2NvbEJyZWFrcG9pbnRgIGluIGBtX3Byb3RvY29sQnJlYWtwb2ludEZv
clByb3RvY29sQnJlYWtwb2ludElEYCBiZWNhdXNlIGl0CisgICAgLy8gaXMgYSB0ZW1wb3Jhcnkg
YnJlYWtwb2ludCB0aGF0IHdpbGwgYmUgcmVtb3ZlZCBhcyBzb29uIGFzIGBsb2NhdGlvbmAgaXMg
cmVhY2hlZC4KKworICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xCcmVha3Bv
aW50LT5jcmVhdGVEZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQr
Kywgc291cmNlSUQpOworCisgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHRJdGVyYXRv
ci0+dmFsdWUsIGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJl
c3VtZWQoKTsKICAgICAgICAgZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUgYnJlYWtw
b2ludCJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJvb2wgZXhpc3Rpbmc7Ci0g
ICAgc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgaWYgKGV4aXN0aW5n
KSB7CisgICAgaWYgKCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpIHsKICAgICAg
ICAgLy8gVGhlcmUgaXMgYW4gZXhpc3RpbmcgYnJlYWtwb2ludCBhdCB0aGlzIGxvY2F0aW9uLiBJ
bnN0ZWFkIG9mCiAgICAgICAgIC8vIGFjdGluZyBsaWtlIGEgc2VyaWVzIG9mIHN0ZXBzLCBqdXN0
IHJlc3VtZSBhbmQgd2Ugd2lsbCBlaXRoZXIKICAgICAgICAgLy8gaGl0IHRoaXMgbmV3IGJyZWFr
cG9pbnQgb3Igbm90LgpAQCAtNjc2LDcgKzcwMiw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElEID0gYnJlYWtwb2ludC5pZDsKKyAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2Vy
QnJlYWtwb2ludCA9IFdURk1vdmUoZGVidWdnZXJCcmVha3BvaW50KTsKIAogICAgIC8vIFRyZWF0
IHRoaXMgYXMgYSBzZXJpZXMgb2Ygc3RlcHMgdW50aWwgcmVhY2hpbmcgdGhlIG5ldyBicmVha3Bv
aW50LgogICAgIC8vIFNvIGRvbid0IGlzc3VlIGEgcmVzdW1lZCBldmVudCB1bmxlc3Mgd2UgZXhp
dCB0aGUgVk0gd2l0aG91dCBwYXVzaW5nLgpAQCAtNzE5LDcgKzc0NSw3IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgY29uc3QKICAgICBpbmplY3RlZFNjcmlwdC5nZXRGdW5jdGlvbkRldGFpbHMoZXJyb3JT
dHJpbmcsIGZ1bmN0aW9uSWQsIGRldGFpbHMpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3ZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gcmVhc29uLCBSZWZQdHI8SlNPTjo6T2Jq
ZWN0PiYmIGRhdGEpCiB7CiAgICAgaWYgKG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkKQogICAg
ICAgICByZXR1cm47CkBAIC03MjksMTAgKzc1NSwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3Bh
dAogICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24sIFdURk1vdmUoZGF0YSkpOwog
CiAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7
Ci0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudCh0cnVlKTsK
KyAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgp
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3Rh
dGVtZW50KCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VBdE5leHRP
cHBvcnR1bml0eSgpCiB7CiAgICAgaWYgKCFtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAg
ICAgICAgcmV0dXJuOwpAQCAtNzQwLDEzICs3NjYsMzMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpCiAgICAgbV9qYXZhU2NyaXB0UGF1
c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAogICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7Ci0gICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudChmYWxzZSk7CisgICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5jYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgbV9l
bmFibGVQYXVzZVdoZW5JZGxlID0gZmFsc2U7CiB9CiAKK2Jvb2wgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2NoZWR1bGVQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYg
YnJlYWtwb2ludCwgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJl
ZlB0cjxKU09OOjpPYmplY3Q+JiYgZGF0YSkKK3sKKyAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2Nr
ZXIobV9zY3JpcHREZWJ1Z1NlcnZlci52bSgpKTsKKworICAgIGlmICghbV9zY3JpcHREZWJ1Z1Nl
cnZlci5zY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHVwZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShyZWFzb24s
IFdURk1vdmUoZGF0YSkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3Bv
aW50JiBicmVha3BvaW50KQoreworICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5jYW5jZWxQ
YXVzZUZvclNwZWNpYWxCcmVha3BvaW50KGJyZWFrcG9pbnQpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBjbGVhclBhdXNlRGV0YWlscygpOworICAgIHJldHVybiB0cnVlOworfQorCiB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nJikKIHsKLSAgICBz
Y2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpS
ZWFzb246OlBhdXNlT25OZXh0U3RhdGVtZW50LCBudWxscHRyKTsKKyAgICBzY2hlZHVsZVBhdXNl
QXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6UGF1
c2VPbk5leHRTdGF0ZW1lbnQpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJl
c3VtZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcpCkBAIC03NTYsNyArODAyLDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQo
KTsKKyAgICBjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgbV9zY3JpcHREZWJ1
Z1NlcnZlci5jb250aW51ZVByb2dyYW0oKTsKICAgICBtX2NvbmRpdGlvblRvRGlzcGF0Y2hSZXN1
bWVkID0gU2hvdWxkRGlzcGF0Y2hSZXN1bWVkOjpXaGVuQ29udGludWVkOwogfQpAQCAtODIyLDcg
Kzg2OCw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQmVjb21lSWRsZSgpCiAg
ICAgbV9yZWdpc3RlcmVkSWRsZUNhbGxiYWNrID0gZmFsc2U7CiAKICAgICBpZiAobV9jb25kaXRp
b25Ub0Rpc3BhdGNoUmVzdW1lZCA9PSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5JZGxlKSB7
Ci0gICAgICAgIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgICAgIGNhbmNlbFBh
dXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jb250
aW51ZVByb2dyYW0oKTsKICAgICAgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnJlc3VtZWQoKTsK
ICAgICB9CkBAIC05NTgsNyArMTAwNCw3IEBAIFJlZjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpE
ZWJ1Z2dlcjo6Q2FsbEZyYW1lPj4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y3VycmVuCiAgICAg
cmV0dXJuIGluamVjdGVkU2NyaXB0LndyYXBDYWxsRnJhbWVzKG1fY3VycmVudENhbGxTdGFjay5n
ZXQoKSk7CiB9CiAKLVN0cmluZyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxG
b3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYg
c2NyaXB0KQogewogICAgIHJldHVybiBzY3JpcHQuc291cmNlTWFwcGluZ1VSTDsKIH0KQEAgLTk3
OCw3ICsxMDI0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZUZvcklu
dGVybmFsU2NyaXB0cyhFcnJvclN0cmluZyYsIGJvb2wgc2hvdWwKICAgICB9CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3Vy
Y2VJRCwgY29uc3QgU2NyaXB0JiBzY3JpcHQpCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQsIGNvbnN0IEpTQzo6RGVidWdn
ZXI6OlNjcmlwdCYgc2NyaXB0KQogewogICAgIFN0cmluZyBzY3JpcHRJRFN0ciA9IFN0cmluZzo6
bnVtYmVyKHNvdXJjZUlEKTsKICAgICBib29sIGhhc1NvdXJjZVVSTCA9ICFzY3JpcHQuc291cmNl
VVJMLmlzRW1wdHkoKTsKQEAgLTEwMDQsNDQgKzEwNTAsMjEgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBT
Y3JpcHQKICAgICBpZiAoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9qYXZhU2NyaXB0QnJlYWtwb2lu
dHMpIHsKLSAgICAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9IGVu
dHJ5LnZhbHVlOwotCi0gICAgICAgIGJvb2wgaXNSZWdleDsKLSAgICAgICAgU3RyaW5nIHVybDsK
LSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbigiaXNSZWdleCJfcywgaXNSZWdl
eCk7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldFN0cmluZygidXJsIl9zLCB1cmwpOwot
ICAgICAgICBpZiAoIW1hdGNoZXMoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMsIHVybCwgaXNSZWdl
eCkpCisgICAgZm9yIChhdXRvJiBwcm90b2NvbEJyZWFrcG9pbnQgOiBtX3Byb3RvY29sQnJlYWtw
b2ludEZvclByb3RvY29sQnJlYWtwb2ludElELnZhbHVlcygpKSB7CisgICAgICAgIGlmICghcHJv
dG9jb2xCcmVha3BvaW50Lm1hdGNoZXNTY3JpcHRVUkwoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBzY3Jp
cHRCcmVha3BvaW50OwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRJbnRlZ2VyKCJsaW5l
TnVtYmVyIl9zLCBzY3JpcHRCcmVha3BvaW50LmxpbmVOdW1iZXIpOwotICAgICAgICBicmVha3Bv
aW50T2JqZWN0LT5nZXRJbnRlZ2VyKCJjb2x1bW5OdW1iZXIiX3MsIHNjcmlwdEJyZWFrcG9pbnQu
Y29sdW1uTnVtYmVyKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJjb25k
aXRpb24iX3MsIHNjcmlwdEJyZWFrcG9pbnQuY29uZGl0aW9uKTsKLSAgICAgICAgYnJlYWtwb2lu
dE9iamVjdC0+Z2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBzY3JpcHRCcmVha3BvaW50LmF1
dG9Db250aW51ZSk7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoImlnbm9y
ZUNvdW50Il9zLCBzY3JpcHRCcmVha3BvaW50Lmlnbm9yZUNvdW50KTsKLSAgICAgICAgRXJyb3JT
dHJpbmcgZXJyb3JTdHJpbmc7Ci0gICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYWN0aW9uczsK
LSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMp
OwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVycm9yU3RyaW5n
LCBhY3Rpb25zLCAmc2NyaXB0QnJlYWtwb2ludC5hY3Rpb25zKSkgewotICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAg
ICAgICBhdXRvIGRlYnVnZ2VyQnJlYWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC5jcmVhdGVE
ZWJ1Z2dlckJyZWFrcG9pbnQobV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQrKywgc291cmNlSUQp
OwogCi0gICAgICAgIEpTQzo6QnJlYWtwb2ludCBicmVha3BvaW50KHNvdXJjZUlELCBzY3JpcHRC
cmVha3BvaW50LmxpbmVOdW1iZXIsIHNjcmlwdEJyZWFrcG9pbnQuY29sdW1uTnVtYmVyLCBzY3Jp
cHRCcmVha3BvaW50LmNvbmRpdGlvbiwgc2NyaXB0QnJlYWtwb2ludC5hdXRvQ29udGludWUsIHNj
cmlwdEJyZWFrcG9pbnQuaWdub3JlQ291bnQpOwotICAgICAgICByZXNvbHZlQnJlYWtwb2ludChz
Y3JpcHQsIGJyZWFrcG9pbnQpOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnQucmVzb2x2ZWQpCisg
ICAgICAgIGlmICghcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBkZWJ1Z2dlckJyZWFrcG9pbnQp
KQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgYm9vbCBleGlzdGluZzsKLSAgICAg
ICAgc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBleGlzdGluZyk7Ci0gICAgICAgIGlmIChleGlz
dGluZykKKyAgICAgICAgaWYgKCFzZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtwb2ludCkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZp
ZXIgPSBlbnRyeS5rZXk7Ci0gICAgICAgIGRpZFNldEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgYnJl
YWtwb2ludElkZW50aWZpZXIsIHNjcmlwdEJyZWFrcG9pbnQpOworICAgICAgICBkaWRTZXRCcmVh
a3BvaW50KHByb3RvY29sQnJlYWtwb2ludCwgZGVidWdnZXJCcmVha3BvaW50KTsKIAotICAgICAg
ICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+YnJlYWtwb2ludFJlc29sdmVkKGJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBidWlsZERlYnVnZ2VyTG9jYXRpb24oYnJlYWtwb2ludCkpOworICAgICAgICBtX2Zy
b250ZW5kRGlzcGF0Y2hlci0+YnJlYWtwb2ludFJlc29sdmVkKHByb3RvY29sQnJlYWtwb2ludC5p
ZCgpLCBidWlsZERlYnVnZ2VyTG9jYXRpb24oZGVidWdnZXJCcmVha3BvaW50KSk7CiAgICAgfQog
fQogCkBAIC0xMDUyLDM2ICsxMDc1LDM4IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nCiAKIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6d2lsbFJ1bk1pY3JvdGFzaygpCiB7Ci0gICAgaWYg
KCFtX3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVh
a3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uTWlj
cm90YXNrcykKLSAgICAgICAgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpNaWNyb3Rhc2ssIG51bGxwdHIpOworICAgICAgICBz
Y2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6TWljcm90YXNrKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpk
aWRSdW5NaWNyb3Rhc2soKQogewotICAgIGlmICghbV9zY3JpcHREZWJ1Z1NlcnZlci5icmVha3Bv
aW50c0FjdGl2ZSgpKQorICAgIGlmICghYnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgaWYgKG1fcGF1c2VPbk1pY3JvdGFza3MpCi0gICAgICAgIGNhbmNlbFBhdXNl
T25OZXh0U3RhdGVtZW50KCk7CisgICAgICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHko
KTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBKU0M6OkpT
VmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkRlYnVn
Z2VyQ2FsbEZyYW1lJiBkZWJ1Z2dlckNhbGxGcmFtZSwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9y
Q2F1Z2h0VmFsdWUpCiB7CiAgICAgQVNTRVJUKCFtX3BhdXNlZEdsb2JhbE9iamVjdCk7CiAgICAg
bV9wYXVzZWRHbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3Q7Ci0gICAgbV9jdXJyZW50Q2FsbFN0
YWNrID0geyBnbG9iYWxPYmplY3QtPnZtKCksIGNhbGxGcmFtZXMgfTsKIAotICAgIEluamVjdGVk
U2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRT
Y3JpcHRGb3IoZ2xvYmFsT2JqZWN0KTsKKyAgICBhdXRvKiBkZWJ1Z2dlckdsb2JhbE9iamVjdCA9
IGRlYnVnZ2VyQ2FsbEZyYW1lLnNjb3BlKCktPmdsb2JhbE9iamVjdCgpOworICAgIG1fY3VycmVu
dENhbGxTdGFjayA9IHsgbV9wYXVzZWRHbG9iYWxPYmplY3QtPnZtKCksIHRvSlMoZGVidWdnZXJH
bG9iYWxPYmplY3QsIGRlYnVnZ2VyR2xvYmFsT2JqZWN0LCBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpj
cmVhdGUoZGVidWdnZXJDYWxsRnJhbWUpLnB0cigpKSB9OworCisgICAgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZv
cihtX3BhdXNlZEdsb2JhbE9iamVjdCk7CiAKICAgICAvLyBJZiBhIGhpZ2ggbGV2ZWwgcGF1c2Ug
cGF1c2UgcmVhc29uIGlzIG5vdCBhbHJlYWR5IHNldCwgdHJ5IHRvIGluZmVyIGEgcmVhc29uIGZy
b20gdGhlIGRlYnVnZ2VyLgogICAgIGlmIChtX3BhdXNlUmVhc29uID09IERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246Ok90aGVyKSB7CiAgICAgICAgIHN3aXRjaCAobV9zY3JpcHRE
ZWJ1Z1NlcnZlci5yZWFzb25Gb3JQYXVzZSgpKSB7CiAgICAgICAgIGNhc2UgSlNDOjpEZWJ1Z2dl
cjo6UGF1c2VkRm9yQnJlYWtwb2ludDogewogICAgICAgICAgICAgYXV0byBkZWJ1Z2dlckJyZWFr
cG9pbnRJZCA9IG1fc2NyaXB0RGVidWdTZXJ2ZXIucGF1c2luZ0JyZWFrcG9pbnRJRCgpOwotICAg
ICAgICAgICAgaWYgKGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9u
QnJlYWtwb2ludElEKQorICAgICAgICAgICAgaWYgKCFtX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVn
Z2VyQnJlYWtwb2ludCB8fCBkZWJ1Z2dlckJyZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9Mb2Nh
dGlvbkRlYnVnZ2VyQnJlYWtwb2ludC0+aWQoKSkKICAgICAgICAgICAgICAgICB1cGRhdGVQYXVz
ZVJlYXNvbkFuZERhdGEoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtw
b2ludCwgYnVpbGRCcmVha3BvaW50UGF1c2VSZWFzb24oZGVidWdnZXJCcmVha3BvaW50SWQpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTE5LDcgKzExNDQsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNDOjpKUwogCiAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGRhdGE7
CiAgICAgICAgIGlmIChhdXRvIGRlYnVnZ2VyQnJlYWtwb2ludElkID0gbV9zY3JpcHREZWJ1Z1Nl
cnZlci5wYXVzaW5nQnJlYWtwb2ludElEKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVChkZWJ1Z2dl
ckJyZWFrcG9pbnRJZCAhPSBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7CisgICAg
ICAgICAgICBBU1NFUlQoIW1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50IHx8
IGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVh
a3BvaW50LT5pZCgpKTsKICAgICAgICAgICAgIGRhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgp
OwogICAgICAgICAgICAgZGF0YS0+c2V0U3RyaW5nKCJvcmlnaW5hbFJlYXNvbiJfcywgUHJvdG9j
b2w6Okluc3BlY3RvckhlbHBlcnM6OmdldEVudW1Db25zdGFudFZhbHVlKERlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgIGRhdGEtPnNl
dFZhbHVlKCJvcmlnaW5hbERhdGEiX3MsIGJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKGRlYnVn
Z2VyQnJlYWtwb2ludElkKSk7CkBAIC0xMTUxLDkgKzExNzYsOSBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNDOjpKUwogCiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxzZTsKIAotICAg
IGlmIChtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCAhPSBKU0M6Om5vQnJlYWtwb2lu
dElEKSB7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludChtX2Nv
bnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7Ci0gICAgICAgIG1fY29udGludWVUb0xvY2F0
aW9uQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRDsKKyAgICBpZiAobV9jb250aW51
ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpIHsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1Nl
cnZlci5yZW1vdmVCcmVha3BvaW50KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtw
b2ludCk7CisgICAgICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0g
bnVsbHB0cjsKICAgICB9CiAKICAgICBhdXRvJiBzdG9wd2F0Y2ggPSBtX2luamVjdGVkU2NyaXB0
TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlvblN0b3B3YXRjaCgpOwpAQCAt
MTE2MywxNyArMTE4OCwxNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNl
KEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKUwogICAgIH0KIH0KIAot
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJy
ZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50QWN0aW9uU291bmQoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgaWQpCiB7Ci0gICAg
bV9mcm9udGVuZERpc3BhdGNoZXItPnBsYXlCcmVha3BvaW50QWN0aW9uU291bmQoYnJlYWtwb2lu
dEFjdGlvbklkZW50aWZpZXIpOworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5wbGF5QnJlYWtw
b2ludEFjdGlvblNvdW5kKGlkKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpi
cmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBj
b25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24sIHVuc2lnbmVkIGJhdGNoSWQsIHVu
c2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBhY3Rpb25JRCwgdW5zaWduZWQgYmF0
Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBzYW1wbGUpCiB7CiAgICAgSW5q
ZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmpl
Y3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QpOwotICAgIGF1dG8gcGF5bG9hZCA9IGluamVjdGVk
U2NyaXB0LndyYXBPYmplY3Qoc2FtcGxlLCBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24o
YWN0aW9uKSwgdHJ1ZSk7CisgICAgYXV0byBwYXlsb2FkID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9i
amVjdChzYW1wbGUsIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rpb25JRCksIHRy
dWUpOwogICAgIGF1dG8gcmVzdWx0ID0gUHJvdG9jb2w6OkRlYnVnZ2VyOjpQcm9iZVNhbXBsZTo6
Y3JlYXRlKCkKLSAgICAgICAgLnNldFByb2JlSWQoYWN0aW9uLmlkZW50aWZpZXIpCisgICAgICAg
IC5zZXRQcm9iZUlkKGFjdGlvbklEKQogICAgICAgICAuc2V0QmF0Y2hJZChiYXRjaElkKQogICAg
ICAgICAuc2V0U2FtcGxlSWQoc2FtcGxlSWQpCiAgICAgICAgIC5zZXRUaW1lc3RhbXAobV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXIuaW5zcGVjdG9yRW52aXJvbm1lbnQoKS5leGVjdXRpb25TdG9wd2F0
Y2goKS5lbGFwc2VkVGltZSgpLnNlY29uZHMoKSkKQEAgLTEyMDksMTAgKzEyMzQsMTUgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha1Byb2dyYW0oRGVidWdnZXJGcm9udGVuZERp
c3BhdGNoZXI6OlJlYXNvbiByZWEKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJJ
bnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKQogewogICAgIEVycm9yU3RyaW5nIGlnbm9yZWQ7Ci0g
ICAgZm9yIChjb25zdCBTdHJpbmcmIGlkZW50aWZpZXIgOiBjb3B5VG9WZWN0b3IobV9icmVha3Bv
aW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmtleXMoKSkpCi0gICAgICAg
IHJlbW92ZUJyZWFrcG9pbnQoaWdub3JlZCwgaWRlbnRpZmllcik7CisgICAgZm9yIChhdXRvJiBw
cm90b2NvbEJyZWFrcG9pbnRJRCA6IGNvcHlUb1ZlY3RvcihtX2RlYnVnZ2VyQnJlYWtwb2ludHNG
b3JQcm90b2NvbEJyZWFrcG9pbnRJRC5rZXlzKCkpKQorICAgICAgICByZW1vdmVCcmVha3BvaW50
KGlnbm9yZWQsIHByb3RvY29sQnJlYWtwb2ludElEKTsKIAotICAgIG1famF2YVNjcmlwdEJyZWFr
cG9pbnRzLmNsZWFyKCk7CisgICAgbV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2NvbEJyZWFr
cG9pbnRJRC5jbGVhcigpOworCisgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJC
cmVha3BvaW50KSB7CisgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2lu
dCgqbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2Nv
bnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgfQogCiAg
ICAgY2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpOwogfQpAQCAtMTIyMSw3ICsxMjUxLDYg
QEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0
YXRlKCkKIHsKICAgICB7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGhvbGRlcihtX3Njcmlw
dERlYnVnU2VydmVyLnZtKCkpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNsZWFyQnJl
YWtwb2ludEFjdGlvbnMoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJyZWFr
cG9pbnRzKCk7CiAgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuY2xlYXJCbGFja2JveCgpOwog
ICAgIH0KQEAgLTEyMjksOSArMTI1OCwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNsZWFyRGVidWdnZXJCcmVha3BvaW50U3RhdGUoKQogICAgIG1fcGF1c2VkR2xvYmFsT2JqZWN0
ID0gbnVsbHB0cjsKICAgICBtX2N1cnJlbnRDYWxsU3RhY2sgPSB7IH07CiAgICAgbV9zY3JpcHRz
LmNsZWFyKCk7Ci0gICAgbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3Bv
aW50SURzLmNsZWFyKCk7Ci0gICAgbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNw
ZWN0b3JCcmVha3BvaW50SWRlbnRpZmllci5jbGVhcigpOwotICAgIG1fY29udGludWVUb0xvY2F0
aW9uQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRDsKKyAgICBtX3Byb3RvY29sQnJl
YWtwb2ludEZvclByb3RvY29sQnJlYWtwb2ludElELmNsZWFyKCk7CisgICAgbV9kZWJ1Z2dlckJy
ZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY2xlYXIoKTsKKyAgICBtX25leHREZWJ1
Z2dlckJyZWFrcG9pbnRJRCA9IEpTQzo6bm9CcmVha3BvaW50SUQgKyAxOworICAgIG1fY29udGlu
dWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICBjbGVhclBhdXNl
RGV0YWlscygpOwogICAgIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkID0gZmFsc2U7CiAgICAg
bV9oYXNFeGNlcHRpb25WYWx1ZSA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
CmluZGV4IDM1YWYxNmQyN2Q2ZmY5ZTRkZDZiZTVlMzI3ZmQ4ZDY4MjI4YTdjMTcuLmRiMzAwYmQ5
ZjUzMjIxM2ZlNGFjNTg3MmQzN2VlODE4NDU0NjhjZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKQEAgLTI5LDE2ICsyOSwxOCBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUg
IkJyZWFrcG9pbnQuaCIKICNpbmNsdWRlICJEZWJ1Z2dlci5oIgorI2luY2x1ZGUgIkRlYnVnZ2Vy
UHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckFnZW50QmFzZS5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250
ZW5kRGlzcGF0Y2hlcnMuaCIKLSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVk
ZSAiU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5j
bHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUg
PHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgorI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBJbnNw
ZWN0b3IgewpAQCAtNDYsMTUgKzQ4LDE2IEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogY2xhc3Mg
QXN5bmNTdGFja1RyYWNlOwogY2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNj
cmlwdE1hbmFnZXI7Ci1jbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVy
cm9yU3RyaW5nOwogCi1jbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERp
c3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciB7CitjbGFzcyBKU19F
WFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyLCBwdWJsaWMg
SlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGlj
OgogICAgIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkgb3ZlcnJpZGU7CiAKKyAgICBzdGF0aWMg
UmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gZGVidWdnZXJCcmVha3BvaW50RnJvbVBheWxvYWQoRXJy
b3JTdHJpbmcmLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKTsKKwogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBjb25zdCBiYWNrdHJhY2VPYmplY3RHcm91cDsKIAogICAgIC8vIElu
c3BlY3RvckFnZW50QmFzZQpAQCAtNjgsNyArNzEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRB
c3luY1N0YWNrVHJhY2VEZXB0aChFcnJvclN0cmluZyYsIGludCBkZXB0aCkgZmluYWw7CiAgICAg
dm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmluZyYsIGJvb2wgYWN0aXZlKSBmaW5h
bDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5lTnVt
YmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJM
UmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEpTT046Ok9iamVj
dCogb3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SlNP
Tjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykgZmlu
YWw7Ci0gICAgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2Jq
ZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pIGZpbmFsOworICAgIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCog
b3B0aW9ucywgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1YWxMb2NhdGlv
bikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikgZmluYWw7CiAgICAgdm9pZCBjb250aW51ZVVu
dGlsTmV4dFJ1bkxvb3AoRXJyb3JTdHJpbmcmKSBmaW5hbDsKICAgICB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCYgbG9jYXRpb24pIGZpbmFs
OwpAQCAtODksMTUgKzkyLDE1IEBAIHB1YmxpYzoKICAgICB2b2lkIGV2YWx1YXRlT25DYWxsRnJh
bWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1
ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0
ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wqIGVtdWxhdGVVc2Vy
R2VzdHVyZSwgUmVmUHRyPFByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQs
IE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4mIHNhdmVkUmVzdWx0SW5k
ZXgpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0U2hvdWxkQmxhY2tib3hVUkwoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBzaG91bGRCbGFja2JveCwgY29uc3QgYm9vbCogY2Fz
ZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogaXNSZWdleCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHRE
ZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25z
dCBTY3JpcHQmKSBmaW5hbDsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZv
aWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2Ny
aXB0JikgZmluYWw7CiAgICAgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBlcnJvckxpbmUsIGNv
bnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBmaW5hbDsKICAgICB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSBmaW5hbDsKICAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQg
ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSBjYWxsRnJhbWVzLCBK
U0M6OkpTVmFsdWUgZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSkgZmluYWw7CisgICAgdm9pZCBkaWRQ
YXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYsIEpTQzo6
SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKSBmaW5hbDsKICAgICB2b2lkIGRpZENvbnRp
bnVlKCkgZmluYWw7Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9p
bnRBY3Rpb25JZGVudGlmaWVyKSBmaW5hbDsKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9i
ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVu
c2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKSBm
aW5hbDsKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rp
b25JRCkgZmluYWw7CisgICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIEpTQzo6QnJlYWtwb2ludEFjdGlvbklELCB1bnNpZ25lZCBiYXRjaElkLCB1bnNp
Z25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkgZmluYWw7CiAKICAgICBib29sIGlz
UGF1c2VkKCkgY29uc3Q7CiAgICAgYm9vbCBicmVha3BvaW50c0FjdGl2ZSgpIGNvbnN0OwpAQCAt
MTE4LDEwICsxMjEsMTMgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbERpc3BhdGNoQXN5bmNDYWxs
KEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkKTsKICAgICB2b2lkIGRpZERpc3BhdGNoQXN5
bmNDYWxsKCk7CiAKLSAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KTsKLSAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCk7CisgICAgdm9pZCBzY2hl
ZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgdm9pZCBj
YW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CiAgICAgYm9vbCBwYXVzZU9uTmV4dFN0YXRl
bWVudEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsg
fQogCisgICAgYm9vbCBzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVh
a3BvaW50JiwgRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046
Ok9iamVjdD4mJiBkYXRhID0gbnVsbHB0cik7CisgICAgYm9vbCBjYW5jZWxQYXVzZUZvclNwZWNp
YWxCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYpOworCiAgICAgdm9pZCBicmVha1Byb2dyYW0o
RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4m
JiBkYXRhKTsKICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJp
bmcmIGRpcmVjdGl2ZVRleHQpOwogCkBAIC0xNDIsMTIgKzE0OCwxMiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25zdCB7
IHJldHVybiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQogICAgIHZpcnR1YWwgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVj
dXRpb25Db250ZXh0SWQpID0gMDsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyJiBzY3JpcHREZWJ1
Z1NlcnZlcigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0KKyAgICBKU0M6OkRlYnVn
Z2VyJiBzY3JpcHREZWJ1Z1NlcnZlcigpIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0K
IAogICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQg
dW5tdXRlQ29uc29sZSgpID0gMDsKIAotICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZU1hcFVSTEZv
clNjcmlwdChjb25zdCBTY3JpcHQmKTsKKyAgICB2aXJ0dWFsIFN0cmluZyBzb3VyY2VNYXBVUkxG
b3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0Jik7CiAKICAgICB2b2lkIGRpZENs
ZWFyR2xvYmFsT2JqZWN0KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpZENsZWFyQXN5bmNTdGFja1Ry
YWNlRGF0YSgpIHsgfQpAQCAtMTU3LDkgKzE2Myw0NCBAQCBwcml2YXRlOgogCiAgICAgUmVmPEpT
T046OkFycmF5T2Y8UHJvdG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBjdXJyZW50Q2FsbEZy
YW1lcyhjb25zdCBJbmplY3RlZFNjcmlwdCYpOwogCi0gICAgdm9pZCByZXNvbHZlQnJlYWtwb2lu
dChjb25zdCBTY3JpcHQmLCBKU0M6OkJyZWFrcG9pbnQmKTsKLSAgICB2b2lkIHNldEJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50JiwgYm9vbCYgZXhpc3RpbmcpOwotICAgIHZvaWQgZGlkU2V0QnJl
YWtwb2ludChjb25zdCBKU0M6OkJyZWFrcG9pbnQmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTY3Jp
cHRCcmVha3BvaW50Jik7CisgICAgY2xhc3MgUHJvdG9jb2xCcmVha3BvaW50IHsKKyAgICAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBzdGF0aWMgT3B0
aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYsIEpTQzo6
U291cmNlSUQsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29u
c3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9IG51bGxwdHIpOworICAgICAgICBzdGF0
aWMgT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiBmcm9tUGF5bG9hZChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVu
c2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCA9
IG51bGxwdHIpOworCisgICAgICAgIFByb3RvY29sQnJlYWtwb2ludCgpOworICAgICAgICBQcm90
b2NvbEJyZWFrcG9pbnQoSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWdu
ZWQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9IG51bGxTdHJpbmcoKSwg
SlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucyA9IHsgfSwgYm9vbCBhdXRv
Q29udGludWUgPSBmYWxzZSwgc2l6ZV90IGlnbm9yZUNvdW50ID0gMCk7CisgICAgICAgIFByb3Rv
Y29sQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIHVybCwgYm9vbCBpc1JlZ2V4LCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9u
ID0gbnVsbFN0cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25z
ID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAw
KTsKKworICAgICAgICBSZWY8SlNDOjpCcmVha3BvaW50PiBjcmVhdGVEZWJ1Z2dlckJyZWFrcG9p
bnQoSlNDOjpCcmVha3BvaW50SUQsIEpTQzo6U291cmNlSUQpIGNvbnN0OworCisgICAgICAgIGNv
bnN0IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQmIGlkKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorCisgICAgICAgIGJvb2wgbWF0Y2hlc1NjcmlwdFVSTChjb25z
dCBTdHJpbmcmKSBjb25zdDsKKworICAgIHByaXZhdGU6CisgICAgICAgIEluc3BlY3Rvcjo6UHJv
dG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQgbV9pZDsKKworI2lmIEFTU0VSVF9FTkFCTEVE
CisgICAgICAgIEpTQzo6U291cmNlSUQgbV9zb3VyY2VJRCB7IEpTQzo6bm9Tb3VyY2VJRCB9Owor
I2VuZGlmCisgICAgICAgIFN0cmluZyBtX3VybDsKKyAgICAgICAgYm9vbCBtX2lzUmVnZXggeyBm
YWxzZSB9OworCisgICAgICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzcx
PiBXZWIgSW5zcGVjdG9yOiBBZG9wdCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRvIGF2b2lk
IG9uZUJhc2VkSW50L3plcm9CYXNlZEludCBhbWJpZ3VpdHkKKyAgICAgICAgdW5zaWduZWQgbV9s
aW5lTnVtYmVyIHsgMCB9OworICAgICAgICB1bnNpZ25lZCBtX2NvbHVtbk51bWJlciB7IDAgfTsK
KworICAgICAgICBTdHJpbmcgbV9jb25kaXRpb247CisgICAgICAgIEpTQzo6QnJlYWtwb2ludDo6
QWN0aW9uc1ZlY3RvciBtX2FjdGlvbnM7CisgICAgICAgIGJvb2wgbV9hdXRvQ29udGludWUgeyBm
YWxzZSB9OworICAgICAgICBzaXplX3QgbV9pZ25vcmVDb3VudCB7IDAgfTsKKyAgICB9OworCisg
ICAgYm9vbCByZXNvbHZlQnJlYWtwb2ludChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmLCBK
U0M6OkJyZWFrcG9pbnQmKTsKKyAgICBib29sIHNldEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50
Jik7CisgICAgdm9pZCBkaWRTZXRCcmVha3BvaW50KFByb3RvY29sQnJlYWtwb2ludCYsIEpTQzo6
QnJlYWtwb2ludCYpOwogCiAgICAgYm9vbCBhc3NlcnRQYXVzZWQoRXJyb3JTdHJpbmcmKTsKICAg
ICB2b2lkIGNsZWFyRGVidWdnZXJCcmVha3BvaW50U3RhdGUoKTsKQEAgLTE3OCwxNyArMjE5LDE1
IEBAIHByaXZhdGU6CiAgICAgUmVmUHRyPEpTT046Ok9iamVjdD4gYnVpbGRCcmVha3BvaW50UGF1
c2VSZWFzb24oSlNDOjpCcmVha3BvaW50SUQpOwogICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGJ1
aWxkRXhjZXB0aW9uUGF1c2VSZWFzb24oSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbiwgY29uc3QgSW5q
ZWN0ZWRTY3JpcHQmKTsKIAotICAgIGJvb2wgYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2wo
RXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNPTjo6QXJyYXk+JiBhY3Rpb25zLCBCcmVha3BvaW50QWN0
aW9ucyogcmVzdWx0KTsKLQogICAgIHR5cGVkZWYgc3RkOjpwYWlyPHVuc2lnbmVkLCBpbnQ+IEFz
eW5jQ2FsbElkZW50aWZpZXI7CiAgICAgc3RhdGljIEFzeW5jQ2FsbElkZW50aWZpZXIgYXN5bmND
YWxsSWRlbnRpZmllcihBc3luY0NhbGxUeXBlLCBpbnQgY2FsbGJhY2tJZCk7CiAKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8RGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwogICAgIFJlZlB0cjxEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNw
YXRjaGVyOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Cisg
ICAgSlNDOjpEZWJ1Z2dlciYgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKICAgICBJbmplY3RlZFNjcmlw
dE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIEhhc2hNYXA8SlNDOjpTb3Vy
Y2VJRCwgU2NyaXB0PiBtX3NjcmlwdHM7CisgICAgSGFzaE1hcDxKU0M6OlNvdXJjZUlELCBKU0M6
OkRlYnVnZ2VyOjpTY3JpcHQ+IG1fc2NyaXB0czsKIAogICAgIHN0cnVjdCBCbGFja2JveENvbmZp
ZyB7CiAgICAgICAgIFN0cmluZyB1cmw7CkBAIC0yMDksMTAgKzI0OCwxMiBAQCBwcml2YXRlOgog
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIG1fcGF1c2VkR2xvYmFsT2JqZWN0IHsgbnVsbHB0ciB9
OwogICAgIEpTQzo6U3Ryb25nPEpTQzo6VW5rbm93bj4gbV9jdXJyZW50Q2FsbFN0YWNrOwogCi0g
ICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxKU0M6OkJyZWFrcG9pbnRJRD4+IG1fYnJlYWtwb2lu
dElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEczsKLSAgICBIYXNoTWFwPFN0cmlu
ZywgUmVmUHRyPEpTT046Ok9iamVjdD4+IG1famF2YVNjcmlwdEJyZWFrcG9pbnRzOwotICAgIEhh
c2hNYXA8SlNDOjpCcmVha3BvaW50SUQsIFN0cmluZz4gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVu
dGlmaWVyVG9JbnNwZWN0b3JCcmVha3BvaW50SWRlbnRpZmllcjsKLSAgICBKU0M6OkJyZWFrcG9p
bnRJRCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCB7IEpTQzo6bm9CcmVha3BvaW50
SUQgfTsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3Bv
aW50SWQsIFByb3RvY29sQnJlYWtwb2ludD4gbV9wcm90b2NvbEJyZWFrcG9pbnRGb3JQcm90b2Nv
bEJyZWFrcG9pbnRJRDsKKyAgICBIYXNoTWFwPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50SWQsIEpTQzo6QnJlYWtwb2ludHNWZWN0b3I+IG1fZGVidWdnZXJCcmVha3Bv
aW50c0ZvclByb3RvY29sQnJlYWtwb2ludElEOworICAgIEpTQzo6QnJlYWtwb2ludElEIG1fbmV4
dERlYnVnZ2VyQnJlYWtwb2ludElEIHsgSlNDOjpub0JyZWFrcG9pbnRJRCArIDEgfTsKKworICAg
IFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVh
a3BvaW50OworCiAgICAgU2hvdWxkRGlzcGF0Y2hSZXN1bWVkIG1fY29uZGl0aW9uVG9EaXNwYXRj
aFJlc3VtZWQgeyBTaG91bGREaXNwYXRjaFJlc3VtZWQ6Ok5vIH07CiAKICAgICBEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIG1fcGF1c2VSZWFzb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50LmNwcAppbmRleCAyZmNiMmU3Yjg3NWZkNDc5YzRkZjYwYzRlM2NjYWM0NTQzY2Zk
MmI5Li4zZWEwZGEzM2Q4MGQ1MWM3OTE2YzY1MDY4NzhhYWUyYjAxYjAwNjc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAgLTM0LDEyICszNCwxMiBAQAogCiAjaW5jbHVkZSAi
Q29tcGxldGlvbi5oIgogI2luY2x1ZGUgIkNvbnRyb2xGbG93UHJvZmlsZXIuaCIKKyNpbmNsdWRl
ICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgIkluamVjdGVkU2NyaXB0LmgiCiAjaW5jbHVkZSAiSW5q
ZWN0ZWRTY3JpcHRIb3N0LmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiUGFyc2VyRXJyb3IuaCIKLSNpbmNsdWRlICJT
Y3JpcHREZWJ1Z1NlcnZlci5oIgogI2luY2x1ZGUgIlNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJU
eXBlUHJvZmlsZXIuaCIKICNpbmNsdWRlICJUeXBlUHJvZmlsZXJMb2cuaCIKQEAgLTczLDcgKzcz
LDcgQEAgSW5zcGVjdG9yUnVudGltZUFnZW50Ojp+SW5zcGVjdG9yUnVudGltZUFnZW50KCkKIHsK
IH0KIAotc3RhdGljIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNl
dFBhdXNlT25FeGNlcHRpb25zU3RhdGUoU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2Vy
dmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBuZXdTdGF0ZSkK
K3N0YXRpYyBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHNldFBhdXNlT25F
eGNlcHRpb25zU3RhdGUoSlNDOjpEZWJ1Z2dlciYgc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVi
dWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgbmV3U3RhdGUpCiB7CiAgICAgYXV0byBwcmVz
ZW50U3RhdGUgPSBzY3JpcHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CiAg
ICAgaWYgKHByZXNlbnRTdGF0ZSAhPSBuZXdTdGF0ZSkKQEAgLTEyMyw5ICsxMjMsOSBAQCB2b2lk
IEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBTdHJpbmcmIGV4cAogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IFNjcmlwdERlYnVnU2Vy
dmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnM7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNl
cHRpb25zU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnM7CiAgICAg
aWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKQotICAgICAg
ICBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4
Y2VwdGlvbnMpOworICAgICAgICBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUpKQogICAgICAgICBtdXRlQ29uc29sZSgpOwogCkBAIC0xNjUs
OSArMTY1LDkgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW4KICAgICBpZiAob3B0aW9uYWxBcmd1
bWVudHMpCiAgICAgICAgIGFyZ3VtZW50cyA9IG9wdGlvbmFsQXJndW1lbnRzLT50b0pTT05TdHJp
bmcoKTsKIAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1
c2VPbkV4Y2VwdGlvbnM7CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUg
PSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnM7CiAgICAgaWYgKGFzQm9vbChk
b05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUpKQotICAgICAgICBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0
RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwor
ICAgICAgICBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9u
RXhjZXB0aW9ucyk7CiAgICAgaWYgKGFzQm9vbChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUpKQogICAgICAgICBtdXRlQ29uc29sZSgpOwogCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFByZXZpZXcoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIG8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFNj
cmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4
Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1Nl
cnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CisgICAgYXV0
byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0
aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0LmdldFByZXZp
ZXcoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBwcmV2aWV3KTsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2
b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJvcGVydGllcyhFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgU2Ny
aXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2Vy
dmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAgICBhdXRv
IHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3Rh
dGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRp
b25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0UHJvcGVy
dGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIGFzQm9vbChvd25Qcm9wZXJ0aWVzKSwgc3RhcnQs
IGNvdW50LCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgcHJvcGVydGllcyk7CkBAIC0yNDksNyAr
MjQ5LDcgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVy
dGllcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGMKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3Vz
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3Jp
cHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7
CisgICAgYXV0byBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKG1fc2NyaXB0RGVidWdTZXJ2ZXIsIEpTQzo6RGVidWdnZXI6OkRvbnRQYXVz
ZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVjdGVkU2NyaXB0
LmdldERpc3BsYXlhYmxlUHJvcGVydGllcyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHN0YXJ0LCBj
b3VudCwgYXNCb29sKGdlbmVyYXRlUHJldmlldyksIHByb3BlcnRpZXMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFn
ZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaAppbmRleCBlM2NiNjI0NTZjMmNmY2Y3ZjM4YzU4NzVlMGQ2ZTgzYzllNDQz
MGZmLi45ZDc2NWQ5NjA3YWE5ZjY4NjJiMDc2YWIzOWM2Y2JkMjg1NGQ2ZDY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1l
QWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgPHd0Zi9Ob25j
b3B5YWJsZS5oPgogCiBuYW1lc3BhY2UgSlNDIHsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3MgVk07
CiB9CiAKQEAgLTQ0LDcgKzQ1LDYgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNsYXNzIElu
amVjdGVkU2NyaXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotY2xhc3MgU2NyaXB0
RGVidWdTZXJ2ZXI7CiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKIAogY2xhc3MgSlNfRVhQ
T1JUX1BSSVZBVEUgSW5zcGVjdG9yUnVudGltZUFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSwgcHVibGljIFJ1bnRpbWVCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewpAQCAtOTQsNyAr
OTQsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q29udHJvbEZsb3dQcm9maWxlckVuYWJsZWRT
dGF0ZShib29sKTsKIAogICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7Cisg
ICAgSlNDOjpEZWJ1Z2dlciYgbV9zY3JpcHREZWJ1Z1NlcnZlcjsKICAgICBKU0M6OlZNJiBtX3Zt
OwogICAgIGJvb2wgbV9lbmFibGVkIHtmYWxzZX07CiAgICAgYm9vbCBtX2lzVHlwZVByb2ZpbGlu
Z0VuYWJsZWQge2ZhbHNlfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2Vu
dC5jcHAKaW5kZXggOTdjYzkxZmY1ZTIyYzk5ODEzOTNiNGRmYzU0ODljMjE4Mzg4MGZhOS4uYzEy
ZWM2OWEwMTVmNWFkYjYxN2Y4N2FkMTI5ZjdkOTVmZWVlYjJhMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAKQEAgLTI2LDExICsyNiwxMSBAQAogI2luY2x1
ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkluc3BlY3RvclNjcmlwdFByb2ZpbGVyQWdlbnQuaCIK
IAorI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiRGVmZXJHQy5oIgogI2luY2x1ZGUg
IkhlYXBJbmxpbmVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRW52aXJvbm1lbnQuaCIKICNpbmNs
dWRlICJTYW1wbGluZ1Byb2ZpbGVyLmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
ICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAppbmRleCAzYjg4ZGVhYjc3NTNlYTVk
YTFhYTczZmMwMmIyYTNlMjcxYzNlMDM0Li42Zjc5Mjc4ZDUzMzE3MWUxZmRkMGFlZmU5ZGQyOWIz
M2JmZDFmZTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaApAQCAt
MzgsOCArMzgsOCBAQCBwdWJsaWM6CiAgICAgSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KEpT
QWdlbnRDb250ZXh0JiwgSW5zcGVjdG9yQ29uc29sZUFnZW50Kik7CiAgICAgfkpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudCgpIGZpbmFsOwogCi0gICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgot
ICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJikgZmluYWw7CisgICAgLy8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAgICB2b2lk
IGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYg
ZGF0YSkgZmluYWw7CiAKIHByaXZhdGU6CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3Jp
cHRGb3JFdmFsKEVycm9yU3RyaW5nJiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpIGZp
bmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9ET00uanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9N
Lmpzb24KaW5kZXggZjNhNzc1MzcwMjk5NWViYzU0MzEyZWFkMGIwYzAyOGE1OGJiMTliOS4uOTk4
YmM0YWZlNjhlYzcwNTAyYTAwOWI3YmY1ZWQxZGU5NzU4YWIzMSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbgorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCkBAIC0zMTYsNyArMzE2
LDggQEAKICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJTZXQgYSBicmVha3BvaW50IG9uIHRo
ZSBnaXZlbiBldmVudCBsaXN0ZW5lci4iLAogICAgICAgICAgICAgInRhcmdldFR5cGVzIjogWyJw
YWdlIl0sCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKLSAgICAgICAgICAgICAgICB7ICJu
YW1lIjogImV2ZW50TGlzdGVuZXJJZCIsICIkcmVmIjogIkV2ZW50TGlzdGVuZXJJZCIgfQorICAg
ICAgICAgICAgICAgIHsgIm5hbWUiOiAiZXZlbnRMaXN0ZW5lcklkIiwgIiRyZWYiOiAiRXZlbnRM
aXN0ZW5lcklkIiB9LAorICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAib3B0aW9ucyIsICIkcmVm
IjogIkRlYnVnZ2VyLkJyZWFrcG9pbnRPcHRpb25zIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2Ny
aXB0aW9uIjogIk9wdGlvbnMgdG8gYXBwbHkgdG8gdGhpcyBicmVha3BvaW50IHRvIG1vZGlmeSBp
dHMgYmVoYXZpb3IuIiB9CiAgICAgICAgICAgICBdCiAgICAgICAgIH0sCiAgICAgICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVi
dWdnZXIuanNvbiBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9N
RGVidWdnZXIuanNvbgppbmRleCA1YTE4OTc2MjgyNDQ3ZjdkZWViMDZmZGZkZTMyODhlM2JhMzY5
ZTgxLi5lZWZhOTMzZjlmNWQyYzFmNGZjNGRlNzU2NTc1NzQ5NGJiZWI5M2UyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTURlYnVnZ2VyLmpz
b24KKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2NvbC9ET01EZWJ1
Z2dlci5qc29uCkBAIC0zOSw3ICszOSw4IEBACiAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
U2V0cyBicmVha3BvaW50IG9uIHBhcnRpY3VsYXIgZXZlbnQgb2YgZ2l2ZW4gdHlwZS4iLAogICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCiAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJicmVh
a3BvaW50VHlwZSIsICIkcmVmIjogIkV2ZW50QnJlYWtwb2ludFR5cGUiIH0sCi0gICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJldmVudE5hbWUiLCAidHlwZSI6ICJzdHJpbmciLCAib3B0aW9uYWwi
OiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5hbWUgb2YgdGhlIHNwZWNpZmljIGV2ZW50IHRv
IHN0b3Agb24uIiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJldmVudE5hbWUiLCAidHlw
ZSI6ICJzdHJpbmciLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIG5hbWUg
b2YgdGhlIHNwZWNpZmljIGV2ZW50IHRvIHN0b3Agb24uIiB9LAorICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAib3B0aW9ucyIsICIkcmVmIjogIkRlYnVnZ2VyLkJyZWFrcG9pbnRPcHRpb25zIiwg
Im9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9wdGlvbnMgdG8gYXBwbHkgdG8gdGhp
cyBicmVha3BvaW50IHRvIG1vZGlmeSBpdHMgYmVoYXZpb3IuIiB9CiAgICAgICAgICAgICBdCiAg
ICAgICAgIH0sCiAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTTWljcm90YXNrLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
TWljcm90YXNrLmNwcAppbmRleCAwM2VlNjBiMzY1OTZhYjgyODVkZmE4YjQzNzFkOTlmZDQ0ZTk5
NjE0Li40NGI4OTQ1NjczMGJlZTM2M2VkYzE1ZTE4MjJjMzk4MGUxYmJhYjU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwCkBAIC05MSw2ICs5MSw5
IEBAIHZvaWQgSlNNaWNyb3Rhc2s6OnJ1bihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQog
CiAgICAgcHJvZmlsZWRDYWxsKGdsb2JhbE9iamVjdCwgUHJvZmlsaW5nUmVhc29uOjpNaWNyb3Rh
c2ssIG1fam9iLmdldCgpLCBoYW5kbGVyQ2FsbERhdGEsIGpzVW5kZWZpbmVkKCksIGhhbmRsZXJB
cmd1bWVudHMpOwogICAgIHNjb3BlLmNsZWFyRXhjZXB0aW9uKCk7CisKKyAgICBpZiAoVU5MSUtF
TFkoZ2xvYmFsT2JqZWN0LT5oYXNEZWJ1Z2dlcigpKSkKKyAgICAgICAgZ2xvYmFsT2JqZWN0LT5k
ZWJ1Z2dlcigpLT5kaWRSdW5NaWNyb3Rhc2soKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcAppbmRleCAxZGFjMzU0MjZlOTZkMmZmZWRiOWExOGU4
NDE1MzA5YzAzOTA4NzU4Li4zNTRiZWU5OTg5MWI0OGFkZTdkZWRlMmNkYWQ5OTFiYjlhZGZmNGQ1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKQEAgLTMzMCw3ICszMzAsNyBAQCB2b2lk
IEV2ZW50VGFyZ2V0Ojppbm5lckludm9rZUV2ZW50TGlzdGVuZXJzKEV2ZW50JiBldmVudCwgRXZl
bnRMaXN0ZW5lclZlY3RvciBsaQogCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
d2lsbEhhbmRsZUV2ZW50KGNvbnRleHQsIGV2ZW50LCAqcmVnaXN0ZXJlZExpc3RlbmVyKTsKICAg
ICAgICAgcmVnaXN0ZXJlZExpc3RlbmVyLT5jYWxsYmFjaygpLmhhbmRsZUV2ZW50KGNvbnRleHQs
IGV2ZW50KTsKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVu
dChjb250ZXh0KTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVF
dmVudChjb250ZXh0LCBldmVudCwgKnJlZ2lzdGVyZWRMaXN0ZW5lcik7CiAKICAgICAgICAgaWYg
KHJlZ2lzdGVyZWRMaXN0ZW5lci0+aXNQYXNzaXZlKCkpCiAgICAgICAgICAgICBldmVudC5zZXRJ
blBhc3NpdmVMaXN0ZW5lcihmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCmluZGV4IDE5MWNmOGQwZTI1NjJjNDFk
MDNjNTgzMGM4ZWUwNmIyMzlhOGZlODkuLjBhMDgxODA3OThmYzlkZGNjNWRhNzVjZmUwMzVmNTZk
NzZlMTA4NDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC00MTgsMTMgKzQxOCwxMyBAQCB2b2lkIEluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZQogICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT53aWxsSGFuZGxlRXZlbnQoZXZl
bnQsIGxpc3RlbmVyKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhh
bmRsZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzKQor
dm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5nQWdlbnRzLCBFdmVudCYgZXZlbnQsIGNvbnN0IFJl
Z2lzdGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKIHsKICAgICBpZiAoYXV0byogd2ViRGVi
dWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQo
KSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKIAog
ICAgIGlmIChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFi
bGVkRE9NRGVidWdnZXJBZ2VudCgpKQotICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRIYW5k
bGVFdmVudCgpOworICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5kaWRIYW5kbGVFdmVudChldmVu
dCwgbGlzdGVuZXIpOwogfQogCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRGlz
cGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
Y29uc3QgRXZlbnQmIGV2ZW50KQpAQCAtNDczLDEwICs0NzMsMTIgQEAgdm9pZCBJbnNwZWN0b3JJ
bnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXJJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGlu
c3RydW1lbnQKICAgICAgICAgdGltZWxpbmVBZ2VudC0+d2lsbEZpcmVUaW1lcih0aW1lcklkLCBm
cmFtZUZvclNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoY29udGV4dCkpOwogfQogCi12b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiBpbnN0cnVtZW50aW5nQWdlbnRzKQordm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYgaW5zdHJ1bWVudGluZ0FnZW50cywg
aW50IC8qIHRpbWVySWQgKi8sIGJvb2wgb25lU2hvdCkKIHsKICAgICBpZiAoYXV0byogd2ViRGVi
dWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZFdlYkRlYnVnZ2VyQWdlbnQo
KSkKICAgICAgICAgd2ViRGVidWdnZXJBZ2VudC0+ZGlkRGlzcGF0Y2hBc3luY0NhbGwoKTsKKyAg
ICBpZiAoYXV0byogZG9tRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZERPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+ZGlkRmlyZVRp
bWVyKG9uZVNob3QpOwogICAgIGlmIChhdXRvKiB0aW1lbGluZUFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAgICAgdGltZWxpbmVBZ2VudC0+
ZGlkRmlyZVRpbWVyKCk7CiB9CkBAIC03MTYsNiArNzE4LDkgQEAgdm9pZCBJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb246OmRpZENvbW1pdExvYWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3Ry
dW1lbnQKICAgICAgICAgaWYgKGF1dG8qIHBhZ2VEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGlu
Z0FnZW50cy5lbmFibGVkUGFnZURlYnVnZ2VyQWdlbnQoKSkKICAgICAgICAgICAgIHBhZ2VEZWJ1
Z2dlckFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKIAorICAgICAgICBpZiAoYXV0byogZG9t
RGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxlZERPTURlYnVnZ2VyQWdl
bnQoKSkKKyAgICAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgp
OworCiAgICAgICAgIGlmIChhdXRvKiBlbmFibGVkUGFnZUhlYXBBZ2VudCA9IGluc3RydW1lbnRp
bmdBZ2VudHMuZW5hYmxlZFBhZ2VIZWFwQWdlbnQoKSkKICAgICAgICAgICAgIGVuYWJsZWRQYWdl
SGVhcEFnZW50LT5tYWluRnJhbWVOYXZpZ2F0ZWQoKTsKICAgICB9CkBAIC0xMjYyLDYgKzEyNjcs
OCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZUFuaW1hdGlvbkZyYW1l
SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbgogewogICAgIGlmIChhdXRvKiB3ZWJEZWJ1Z2dl
ckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdnZXJBZ2VudCgpKQog
ICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2FsbCgpOworICAgIGlm
IChhdXRvKiBwYWdlRE9NRGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMuZW5hYmxl
ZFBhZ2VET01EZWJ1Z2dlckFnZW50KCkpCisgICAgICAgIHBhZ2VET01EZWJ1Z2dlckFnZW50LT5k
aWRGaXJlQW5pbWF0aW9uRnJhbWUoKTsKICAgICBpZiAoYXV0byogdGltZWxpbmVBZ2VudCA9IGlu
c3RydW1lbnRpbmdBZ2VudHMudHJhY2tpbmdUaW1lbGluZUFnZW50KCkpCiAgICAgICAgIHRpbWVs
aW5lQWdlbnQtPmRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCmluZGV4IDczMGYzMzI1
MWRkMDI3NDQwNGFkZWY4ZjZmM2ZiNmUwOWNkNmZlMjkuLjVhZDc5ZTBkMTZhOTUzMmI4MWM4YjVh
ZjgwYWFjYWNlNTk4NjlkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKQEAgLTE3MSwxNCArMTcxLDE0IEBAIHB1YmxpYzoK
ICAgICBzdGF0aWMgdm9pZCB3aWxsRGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2ZW50
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudChEb2N1bWVudCYsIGNvbnN0IEV2
ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7Ci0gICAgc3Rh
dGljIHZvaWQgZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYpOworICAgIHN0
YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBFdmVudCYs
IGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbERp
c3BhdGNoRXZlbnRPbldpbmRvdyhGcmFtZSosIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93Jik7CiAg
ICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZl
bnQmKTsKICAgICBzdGF0aWMgdm9pZCBldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBF
dmVudCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVNjcmlwdChGcmFtZSYsIGNvbnN0
IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlcik7CiAgICAgc3Rh
dGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQoRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxs
RmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVT
aG90KTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpOworICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCk7CiAgICAgc3RhdGljIHZvaWQgZGlkSW52YWxp
ZGF0ZUxheW91dChGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxMYXlvdXQoRnJhbWUmKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXQoRnJhbWUmLCBSZW5kZXJPYmplY3QmKTsKQEAgLTM5
NCw3ICszOTQsNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBib29sIGlzRXZlbnRMaXN0ZW5lckRp
c2FibGVkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9t
U3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwogICAgIHN0
YXRpYyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRG9j
dW1lbnQmLCBjb25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxIYW5kbGVFdmVudElt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlz
dGVuZXImKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudEltcGwoSW5zdHJ1bWVudGlu
Z0FnZW50cyYpOworICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50SW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBj
b25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3dJ
bXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBjb25zdCBFdmVudCYsIERPTVdpbmRvdyYpOwogICAg
IHN0YXRpYyB2b2lkIGRpZERpc3BhdGNoRXZlbnRPbldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IEV2ZW50Jik7CkBAIC00MDIsNyArNDAyLDcgQEAgcHJpdmF0ZToKICAgICBz
dGF0aWMgdm9pZCB3aWxsRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBG
cmFtZSYsIGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJl
cik7CiAgICAgc3RhdGljIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBGcmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIHdpbGxGaXJlVGltZXJJbXBsKEluc3Ry
dW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90LCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7Ci0gICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50
aW5nQWdlbnRzJiwgaW50IHRpbWVySWQsIGJvb2wgb25lU2hvdCk7CiAgICAgc3RhdGljIHZvaWQg
ZGlkSW52YWxpZGF0ZUxheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAg
ICAgc3RhdGljIHZvaWQgd2lsbExheW91dEltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIEZyYW1l
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwg
UmVuZGVyT2JqZWN0Jik7CkBAIC04OTIsMTEgKzg5MiwxMSBAQCBpbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiBjbwogICAgICAgICByZXR1cm4gd2lsbEhhbmRsZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgZXZlbnQsIGxpc3RlbmVyKTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0
KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRIYW5kbGVFdmVudChT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBFdmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyJiBsaXN0ZW5lcikKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19G
Uk9OVEVORFModm9pZCgpKTsKICAgICBpZiAoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVu
dGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2VudHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAg
ICAgICByZXR1cm4gZGlkSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdlbnRzKTsKKyAg
ICAgICAgcmV0dXJuIGRpZEhhbmRsZUV2ZW50SW1wbCgqaW5zdHJ1bWVudGluZ0FnZW50cywgZXZl
bnQsIGxpc3RlbmVyKTsKIH0KIAogaW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
Ojp3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRXZlbnQmIGV2
ZW50LCBET01XaW5kb3cmIHdpbmRvdykKQEAgLTk0NiwxMSArOTQ2LDExIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250CiAgICAgICAgIHdpbGxGaXJlVGltZXJJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCB0aW1lcklkLCBvbmVTaG90LCBjb250ZXh0KTsKIH0KIAotaW5saW5lIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkKK2lubGluZSB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRp
bWVyKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGludCB0aW1lcklkLCBib29sIG9u
ZVNob3QpCiB7CiAgICAgRkFTVF9SRVRVUk5fSUZfTk9fRlJPTlRFTkRTKHZvaWQoKSk7CiAgICAg
aWYgKGF1dG8qIGluc3RydW1lbnRpbmdBZ2VudHMgPSBpbnN0cnVtZW50aW5nQWdlbnRzRm9yQ29u
dGV4dChjb250ZXh0KSkKLSAgICAgICAgZGlkRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cyk7CisgICAgICAgIGRpZEZpcmVUaW1lckltcGwoKmluc3RydW1lbnRpbmdBZ2VudHMsIHRp
bWVySWQsIG9uZVNob3QpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEludmFsaWRhdGVMYXlvdXQoRnJhbWUmIGZyYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCAxN2E2NmYxMGMx
YTIyNjFhZjFkOGQxZTdlYWJhMmU1OGExOWUyNGRhLi4wNWZlZmJjYmVjNmQ1NjI0NmU3MjhmNjE5
MDU3Zjg3NjY5MTY2NzIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFn
ZVNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNTQsMTggKzU0LDIyIEBAIHVzaW5nIG5hbWVzcGFj
ZSBKU0M7CiB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcihQYWdlJiBwYWdlKQotICAgIDogU2NyaXB0RGVidWdT
ZXJ2ZXIoV2ViQ29yZTo6Y29tbW9uVk0oKSkKKyAgICA6IERlYnVnZ2VyKFdlYkNvcmU6OmNvbW1v
blZNKCkpCiAgICAgLCBtX3BhZ2UocGFnZSkKIHsKIH0KIAogdm9pZCBQYWdlU2NyaXB0RGVidWdT
ZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjphdHRhY2hEZWJ1
Z2dlcigpOworCiAgICAgbV9wYWdlLnNldERlYnVnZ2VyKHRoaXMpOwogfQogCiB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQog
eworICAgIEpTQzo6RGVidWdnZXI6OmRldGFjaERlYnVnZ2VyKGlzQmVpbmdEZXN0cm95ZWQpOwor
CiAgICAgbV9wYWdlLnNldERlYnVnZ2VyKG51bGxwdHIpOwogICAgIGlmICghaXNCZWluZ0Rlc3Ry
b3llZCkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKQEAgLTc3LDE4ICs4MSwy
NCBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMo
KQogICAgIERlYnVnZ2VyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwogfQogCi12b2lkIFBh
Z2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqKQordm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpZFBhdXNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qp
CiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGlkUGF1c2UoZ2xvYmFsT2JqZWN0KTsKKwogICAgIHNl
dEphdmFTY3JpcHRQYXVzZWQobV9wYWdlLmdyb3VwKCksIHRydWUpOwogfQogCi12b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3QqKQordm9pZCBQYWdl
U2NyaXB0RGVidWdTZXJ2ZXI6OmRpZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGlkQ29udGludWUoZ2xvYmFsT2JqZWN0KTsKKwog
ICAgIHNldEphdmFTY3JpcHRQYXVzZWQobV9wYWdlLmdyb3VwKCksIGZhbHNlKTsKIH0KIAogdm9p
ZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKIHsKKyAg
ICBKU0M6OkRlYnVnZ2VyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpOworCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAvLyBPbiBpT1MsIHJ1bm5pbmcgYW4gRXZlbnRMb29wIGNhdXNl
cyB1cyB0byBydW4gYSBuZXN0ZWQgV2ViUnVuTG9vcC4KICAgICAvLyBTaW5jZSB0aGUgV2ViVGhy
ZWFkIGlzIGF1dG9yZWxlYXNlZCBhdCB0aGUgZW5kIG9mIHJ1biBsb29wIGl0ZXJhdGlvbnMKQEAg
LTExNSw3ICsxMjUsNyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29w
V2hpbGVQYXVzZWRJbnRlcm5hbCgpCiAKICAgICBtX3BhZ2UuaW5jcmVtZW50TmVzdGVkUnVuTG9v
cENvdW50KCk7CiAKLSAgICB3aGlsZSAoIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cykg
eworICAgIHdoaWxlICghZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpKSB7CiAgICAgICAg
IGlmICghcGxhdGZvcm1TaG91bGRDb250aW51ZVJ1bm5pbmdFdmVudExvb3BXaGlsZVBhdXNlZCgp
KQogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI1LDExICsxMzUsMTMgQEAgdm9pZCBQ
YWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKQog
CiBib29sIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6aXNDb250ZW50U2NyaXB0KEpTR2xvYmFsT2Jq
ZWN0KiBzdGF0ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gJmN1cnJlbnRXb3JsZCgqc3RhdGUpICE9
ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKTsKKyAgICByZXR1cm4gJmN1cnJlbnRXb3JsZCgqc3Rh
dGUpICE9ICZtYWluVGhyZWFkTm9ybWFsV29ybGQoKSB8fCBKU0M6OkRlYnVnZ2VyOjppc0NvbnRl
bnRTY3JpcHQoc3RhdGUpOwogfQogCiB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVwb3J0
RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiBzdGF0ZSwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlv
bikgY29uc3QKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpyZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4
Y2VwdGlvbik7CisKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oc3RhdGUsIGV4Y2VwdGlv
bik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0
RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdT
ZXJ2ZXIuaAppbmRleCAyMmQ4Y2Y3ODlkOTViOGQ3OGZlYWUzYTQ5YTBhMGU1ZGFjMzlmZTA2Li5m
ZjM4MTlkYjQ4NWQ0MzA3NDZkYzZmYzlkYWE1NWNkYTZhYTcyY2QxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0yNiw3ICsyNiw3
IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0RGVi
dWdTZXJ2ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlci5oPgogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM0LDcgKzM0LDcgQEAgY2xhc3MgRnJhbWU7CiBjbGFzcyBQ
YWdlOwogY2xhc3MgUGFnZUdyb3VwOwogCi1jbGFzcyBQYWdlU2NyaXB0RGVidWdTZXJ2ZXIgZmlu
YWwgOiBwdWJsaWMgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlciB7CitjbGFzcyBQYWdlU2Ny
aXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01B
S0VfTk9OQ09QWUFCTEUoUGFnZVNjcmlwdERlYnVnU2VydmVyKTsKICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTQ0LDE0ICs0NCwxNCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpIG92ZXJyaWRlOwogCiBwcml2YXRlOgotICAgIHZv
aWQgYXR0YWNoRGVidWdnZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJv
b2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lkIGRpZFBhdXNlKEpTQzo6
SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBvdmVycmlkZTsKLSAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2Vk
KCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQoSlNDOjpKU0dsb2JhbE9iamVj
dCopIGNvbnN0IG92ZXJyaWRlOwotICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9i
YWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IG92ZXJyaWRlOworICAgIC8vIEpTQzo6
RGVidWdnZXIKKyAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgZmluYWw7CisgICAgdm9pZCBkZXRh
Y2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIGZpbmFsOworICAgIHZvaWQgZGlkUGF1
c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopIGZpbmFsOworICAgIHZvaWQgZGlkQ29udGludWUoSlND
OjpKU0dsb2JhbE9iamVjdCopIGZpbmFsOworICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVz
ZWQoKSBmaW5hbDsKKyAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0
KikgY29uc3QgZmluYWw7CisgICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9i
amVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJ1bkV2ZW50
TG9vcFdoaWxlUGF1c2VkSW50ZXJuYWwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcAppbmRleCBjYzQ1YjFmNGMyYjExMjZkYWEx
ZTIwZGUxNmI4N2EyYzY2Yjc5MmNjLi5lZWRlZDhmNDgyOWNlODQzMDY0MzMyMDc3ZDgzMDJjMzFk
ZGE5YjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmNwcApAQCAtMzYsNyArMzYsNiBAQAogI2luY2x1ZGUgIkZsb2F0UXVhZC5oIgog
I2luY2x1ZGUgIkpTRXhlY1N0YXRlLmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVj
dG9yUHJvdG9jb2xPYmplY3RzLmg+Ci0jaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QnJl
YWtwb2ludC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFjay5oPgog
I2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuaD4KIApAQCAt
NzMsMTAgKzcyLDEwIEBAIFJlZjxKU09OOjpPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6
Y3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKGNvbnN0IFN0cmluZyYKICAgICByZXR1cm4gZGF0YTsK
IH0KIAotUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0b3J5OjpjcmVhdGVQcm9i
ZVNhbXBsZURhdGEoY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0aW9uLCB1bnNpZ25l
ZCBzYW1wbGVJZCkKK1JlZjxKU09OOjpPYmplY3Q+IFRpbWVsaW5lUmVjb3JkRmFjdG9yeTo6Y3Jl
YXRlUHJvYmVTYW1wbGVEYXRhKEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklELCB1bnNp
Z25lZCBzYW1wbGVJZCkKIHsKICAgICBSZWY8SlNPTjo6T2JqZWN0PiBkYXRhID0gSlNPTjo6T2Jq
ZWN0OjpjcmVhdGUoKTsKLSAgICBkYXRhLT5zZXRJbnRlZ2VyKCJwcm9iZUlkIl9zLCBhY3Rpb24u
aWRlbnRpZmllcik7CisgICAgZGF0YS0+c2V0SW50ZWdlcigicHJvYmVJZCJfcywgYWN0aW9uSUQp
OwogICAgIGRhdGEtPnNldEludGVnZXIoInNhbXBsZUlkIl9zLCBzYW1wbGVJZCk7CiAgICAgcmV0
dXJuIGRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxp
bmVSZWNvcmRGYWN0b3J5LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNv
cmRGYWN0b3J5LmgKaW5kZXggNTMwNzU1ODc1OWEzODM4NWJiOGI4NWU5YjljZGQxNzBiMTNkODI4
MS4uNDFiNmRkNjQ1MDlkMDRmNzYxZmFjMzk2NGY3ODdkMzI4OTRlMTE0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaApAQCAtMzEsMTUg
KzMxLDEyIEBACiAgCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Rl
YnVnZ2VyUHJpbWl0aXZlcy5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvU2Vjb25kcy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgogCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLXN0cnVjdCBTY3Jp
cHRCcmVha3BvaW50QWN0aW9uOwotfQotCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEV2
ZW50OwpAQCAtNTEsNyArNDgsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPEpTT046Ok9i
amVjdD4gY3JlYXRlRnVuY3Rpb25DYWxsRGF0YShjb25zdCBTdHJpbmcmIHNjcmlwdE5hbWUsIGlu
dCBzY3JpcHRMaW5lLCBpbnQgc2NyaXB0Q29sdW1uKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9i
amVjdD4gY3JlYXRlQ29uc29sZVByb2ZpbGVEYXRhKGNvbnN0IFN0cmluZyYgdGl0bGUpOwotICAg
IHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVQcm9iZVNhbXBsZURhdGEoY29uc3QgSW5z
cGVjdG9yOjpTY3JpcHRCcmVha3BvaW50QWN0aW9uJiwgdW5zaWduZWQgc2FtcGxlSWQpOworICAg
IHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVQcm9iZVNhbXBsZURhdGEoSlNDOjpCcmVh
a3BvaW50QWN0aW9uSUQsIHVuc2lnbmVkIHNhbXBsZUlkKTsKICAgICBzdGF0aWMgUmVmPEpTT046
Ok9iamVjdD4gY3JlYXRlRXZlbnREaXNwYXRjaERhdGEoY29uc3QgRXZlbnQmKTsKICAgICBzdGF0
aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlR2VuZXJpY1RpbWVyRGF0YShpbnQgdGltZXJJZCk7
CiAgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZVRpbWVySW5zdGFsbERhdGEoaW50
IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5nbGVTaG90KTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4
IDRhNjkxOTY5N2NiYzJmZThkOTM5MTJjNTE3ZGVlZjVhMjQ4ODlkZTYuLjM2MWRiMTZjNGQ0YTRl
MTkzOTQ0OTc4MDllNGJmMWMzYmM5YjRlMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNDQsMTggKzQ0LDIyIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFdvcmtl
clNjcmlwdERlYnVnU2VydmVyOjpXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxT
Y29wZSYgY29udGV4dCkKLSAgICA6IFNjcmlwdERlYnVnU2VydmVyKGNvbnRleHQuc2NyaXB0KCkt
PnZtKCkpCisgICAgOiBEZWJ1Z2dlcihjb250ZXh0LnNjcmlwdCgpLT52bSgpKQogICAgICwgbV93
b3JrZXJHbG9iYWxTY29wZShjb250ZXh0KQogewogfQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVn
U2VydmVyOjphdHRhY2hEZWJ1Z2dlcigpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVi
dWdnZXIoKTsKKwogICAgIG1fd29ya2VyR2xvYmFsU2NvcGUuc2NyaXB0KCktPmF0dGFjaERlYnVn
Z2VyKHRoaXMpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1
Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNo
RGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7CisKICAgICBpZiAobV93b3JrZXJHbG9iYWxTY29w
ZS5zY3JpcHQoKSkKICAgICAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+ZGV0YWNo
RGVidWdnZXIodGhpcyk7CiAgICAgaWYgKCFpc0JlaW5nRGVzdHJveWVkKQpAQCAtNzAsMTYgKzc0
LDIwIEBAIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rp
b25zKCkKIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKQogeworICAgIEpTQzo6RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7
CisKICAgICBUaW1lckJhc2U6OmZpcmVUaW1lcnNJbk5lc3RlZEV2ZW50TG9vcCgpOwogCiAgICAg
TWVzc2FnZVF1ZXVlV2FpdFJlc3VsdCByZXN1bHQ7CiAgICAgZG8gewogICAgICAgICByZXN1bHQg
PSBtX3dvcmtlckdsb2JhbFNjb3BlLnRocmVhZCgpLnJ1bkxvb3AoKS5ydW5JbkRlYnVnZ2VyTW9k
ZShtX3dvcmtlckdsb2JhbFNjb3BlKTsKLSAgICB9IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZCAmJiAhbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKTsKKyAgICB9
IHdoaWxlIChyZXN1bHQgIT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCAmJiAhZG9uZVByb2Nlc3Np
bmdEZWJ1Z2dlckV2ZW50cygpKTsKIH0KIAogdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6
cmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqIGV4ZWMsIEpTQzo6RXhjZXB0aW9u
KiBleGNlcHRpb24pIGNvbnN0CiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cmVwb3J0RXhjZXB0aW9u
KGV4ZWMsIGV4Y2VwdGlvbik7CisKICAgICBXZWJDb3JlOjpyZXBvcnRFeGNlcHRpb24oZXhlYywg
ZXhjZXB0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dv
cmtlclNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRleCBlYTcxZjFkZTg4ZDI2MDNlNTY2YjBkMDk0MmIzMmVh
ZmE2NGJiYTkwLi5jOGJhMzJlNDM3Y2Q4ZmYzY2VhMzJiZjdjODQwNjdjOTlkNThjYjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIu
aApAQCAtMzEsMzAgKzMxLDI3IEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvU2NyaXB0RGVidWdTZXJ2ZXIuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9E
ZWJ1Z2dlci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdvcmtlckdsb2JhbFNj
b3BlOwogCi1jbGFzcyBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBJbnNw
ZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyIHsKK2NsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVy
IGZpbmFsIDogcHVibGljIEpTQzo6RGVidWdnZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KFdvcmtlclNjcmlwdERlYnVnU2VydmVyKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKICAgICBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcihXb3JrZXJHbG9iYWxTY29wZSYp
OwogICAgIH5Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlID0gZGVmYXVsdDsKIAot
ICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
LSAgICB2b2lkIGF0dGFjaERlYnVnZ2VyKCkgb3ZlcnJpZGU7Ci0gICAgdm9pZCBkZXRhY2hEZWJ1
Z2dlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwotCi0gICAgdm9pZCBkaWRQYXVz
ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBkaWRDb250aW51
ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBydW5FdmVudExv
b3BXaGlsZVBhdXNlZCgpIG92ZXJyaWRlOwotICAgIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6
SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsgfQotICAgIHZv
aWQgcmVwb3J0RXhjZXB0aW9uKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiop
IGNvbnN0IG92ZXJyaWRlOworICAgIC8vIEpTQzo6RGVidWdnZXIKKyAgICB2b2lkIGF0dGFjaERl
YnVnZ2VyKCkgZmluYWw7CisgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0
cm95ZWQpIGZpbmFsOworICAgIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBmaW5hbDsK
KyAgICB2b2lkIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgZmluYWw7CisgICAgdm9pZCByZXBv
cnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3Qg
ZmluYWw7CiAKICAgICBXb3JrZXJHbG9iYWxTY29wZSYgbV93b3JrZXJHbG9iYWxTY29wZTsKIH07
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRP
TUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCmluZGV4IDM0ZGE5NTgwYWU0YTg2ZjQ5YmM4OWI1Njc4ZWE2M2MxOTk4Y2YzZDYu
LjgzOWE1OGI1NDg4NTRkZTc1NzcwZDI2MzNkOGQ1OWFmNTlmMjQxMTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBA
IC0xMTIsNiArMTEyLDcgQEAKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JZGVudGlmaWVyc0Zh
Y3RvcnkuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbmplY3RlZFNjcmlwdC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDxKYXZh
U2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+CiAjaW5jbHVkZSA8cGFsL2NyeXB0by9DcnlwdG9EaWdl
c3QuaD4KICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KQEAgLTkzMSwxMyArOTMyLDEzIEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBuCiAgICAgYXV0byBhZGRMaXN0ZW5lciA9IFsmXSAoUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyLCBjb25zdCBFdmVudExpc3RlbmVySW5mbyYgaW5m
bykgewogICAgICAgICBpbnQgaWRlbnRpZmllciA9IDA7CiAgICAgICAgIGJvb2wgZGlzYWJsZWQg
PSBmYWxzZTsKLSAgICAgICAgYm9vbCBoYXNCcmVha3BvaW50ID0gZmFsc2U7CisgICAgICAgIFJl
ZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IGJyZWFrcG9pbnQ7CiAKICAgICAgICAgZm9yIChhdXRvJiBp
bnNwZWN0b3JFdmVudExpc3RlbmVyIDogbV9ldmVudExpc3RlbmVyRW50cmllcy52YWx1ZXMoKSkg
ewogICAgICAgICAgICAgaWYgKGluc3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcygqaW5mby5l
dmVudFRhcmdldCwgaW5mby5ldmVudFR5cGUsIGxpc3RlbmVyLmNhbGxiYWNrKCksIGxpc3RlbmVy
LnVzZUNhcHR1cmUoKSkpIHsKICAgICAgICAgICAgICAgICBpZGVudGlmaWVyID0gaW5zcGVjdG9y
RXZlbnRMaXN0ZW5lci5pZGVudGlmaWVyOwogICAgICAgICAgICAgICAgIGRpc2FibGVkID0gaW5z
cGVjdG9yRXZlbnRMaXN0ZW5lci5kaXNhYmxlZDsKLSAgICAgICAgICAgICAgICBoYXNCcmVha3Bv
aW50ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAgICAgICAg
ICAgIGJyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmJyZWFrcG9pbnQ7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk0NywxMiAr
OTQ4LDEyIEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBuCiAKICAgICAgICAgICAgIGlkZW50aWZp
ZXIgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmlkZW50aWZpZXI7CiAgICAgICAgICAgICBkaXNh
YmxlZCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuZGlzYWJsZWQ7Ci0gICAgICAgICAgICBoYXNC
cmVha3BvaW50ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50OworICAgICAg
ICAgICAgYnJlYWtwb2ludCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuYnJlYWtwb2ludDsKIAog
ICAgICAgICAgICAgbV9ldmVudExpc3RlbmVyRW50cmllcy5hZGQoaWRlbnRpZmllciwgaW5zcGVj
dG9yRXZlbnRMaXN0ZW5lcik7CiAgICAgICAgIH0KIAotICAgICAgICBsaXN0ZW5lcnNBcnJheS0+
YWRkSXRlbShidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlkZW50aWZpZXIs
ICppbmZvLmV2ZW50VGFyZ2V0LCBpbmZvLmV2ZW50VHlwZSwgZGlzYWJsZWQsIGhhc0JyZWFrcG9p
bnQpKTsKKyAgICAgICAgbGlzdGVuZXJzQXJyYXktPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGxpc3RlbmVyLCBpZGVudGlmaWVyLCAqaW5mby5ldmVudFRhcmdldCwgaW5mby5l
dmVudFR5cGUsIGRpc2FibGVkLCBicmVha3BvaW50KSk7CiAgICAgfTsKIAogICAgIC8vIEdldCBD
YXB0dXJpbmcgTGlzdGVuZXJzIChpbiB0aGlzIG9yZGVyKQpAQCAtOTg4LDcgKzk4OSw3IEBAIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEV2ZW50TGlzdGVuZXJEaXNhYmxlZChFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGludCBlCiAgICAgaXQtPnZhbHVlLmRpc2FibGVkID0gZGlzYWJsZWQ7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3Rl
bmVyKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGV2ZW50TGlzdGVuZXJJZCkKK3ZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgaW50IGV2ZW50TGlzdGVuZXJJZCwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zUGF5bG9hZCkKIHsKICAgICBhdXRvIGl0ID0gbV9ldmVudExpc3RlbmVyRW50cmll
cy5maW5kKGV2ZW50TGlzdGVuZXJJZCk7CiAgICAgaWYgKGl0ID09IG1fZXZlbnRMaXN0ZW5lckVu
dHJpZXMuZW5kKCkpIHsKQEAgLTk5Niw3ICs5OTcsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaXQtPnZhbHVlLmhhc0JyZWFrcG9pbnQg
PSB0cnVlOworICAgIGlmIChpdC0+dmFsdWUuYnJlYWtwb2ludCkgeworICAgICAgICBlcnJvclN0
cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBldmVudExpc3RlbmVySWQgYWxyZWFkeSBleGlz
dHMiX3M7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpdC0+dmFsdWUuYnJlYWtwb2lu
dCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXlsb2Fk
KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiBlcnJvclN0
cmluZywgaW50IGV2ZW50TGlzdGVuZXJJZCkKQEAgLTEwMDcsNyArMTAxMywxMCBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaXQtPnZhbHVl
Lmhhc0JyZWFrcG9pbnQgPSBmYWxzZTsKKyAgICBpZiAoIWl0LT52YWx1ZS5icmVha3BvaW50KQor
ICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBldmVudExpc3RlbmVy
SWQgbWlzc2luZyJfczsKKworICAgIGl0LT52YWx1ZS5icmVha3BvaW50ID0gbnVsbHB0cjsKIH0K
IAogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JO
b2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVByb3BlcnRpZXM+JiBheFByb3BlcnRpZXMp
CkBAIC0xNzUxLDcgKzE3NjAsNyBAQCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006Ok5vZGU+PiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRBcgogICAgIHJldHVy
biBwc2V1ZG9FbGVtZW50czsKIH0KIAotUmVmPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZl
bnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5l
cihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIs
IGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYgZXZlbnRUYXJnZXQsIGNvbnN0IEF0b21TdHJp
bmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgYm9vbCBoYXNCcmVha3BvaW50KQorUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gSW5zcGVjdG9yRE9NQWdlbnQ6
OmJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5l
ciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIsIGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYg
ZXZlbnRUYXJnZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwg
Y29uc3QgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mIGJyZWFrcG9pbnQpCiB7CiAgICAgUmVmPEV2
ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIgPSByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxs
YmFjaygpOwogCkBAIC0xODM5LDggKzE4NDgsOCBAQCBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdgog
ICAgICAgICB2YWx1ZS0+c2V0T25jZSh0cnVlKTsKICAgICBpZiAoZGlzYWJsZWQpCiAgICAgICAg
IHZhbHVlLT5zZXREaXNhYmxlZChkaXNhYmxlZCk7Ci0gICAgaWYgKGhhc0JyZWFrcG9pbnQpCi0g
ICAgICAgIHZhbHVlLT5zZXRIYXNCcmVha3BvaW50KGhhc0JyZWFrcG9pbnQpOworICAgIGlmIChi
cmVha3BvaW50KQorICAgICAgICB2YWx1ZS0+c2V0SGFzQnJlYWtwb2ludChicmVha3BvaW50KTsK
ICAgICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTI1NDgsMTMgKzI1NTcsMTMgQEAgdm9pZCBJbnNw
ZWN0b3JET01BZ2VudDo6ZXZlbnREaWRSZXNldEFmdGVyRGlzcGF0Y2goY29uc3QgRXZlbnQmIGV2
ZW50KQogICAgIG1fZGlzcGF0Y2hlZEV2ZW50cy5yZW1vdmUoJmV2ZW50KTsKIH0KIAotYm9vbCBJ
bnNwZWN0b3JET01BZ2VudDo6aGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgYm9vbCBjYXB0dXJlKQorUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gSW5zcGVjdG9y
RE9NQWdlbnQ6OmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJnZXQs
IGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGJv
b2wgY2FwdHVyZSkKIHsKICAgICBmb3IgKGF1dG8mIGluc3BlY3RvckV2ZW50TGlzdGVuZXIgOiBt
X2V2ZW50TGlzdGVuZXJFbnRyaWVzLnZhbHVlcygpKSB7CiAgICAgICAgIGlmIChpbnNwZWN0b3JF
dmVudExpc3RlbmVyLm1hdGNoZXModGFyZ2V0LCBldmVudFR5cGUsIGxpc3RlbmVyLCBjYXB0dXJl
KSkKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9p
bnQ7CisgICAgICAgICAgICByZXR1cm4gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5icmVha3BvaW50
OwogICAgIH0KLSAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKIGlu
dCBJbnNwZWN0b3JET01BZ2VudDo6aWRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0JiB0YXJn
ZXQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIs
IGJvb2wgY2FwdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRE9NQWdlbnQuaAppbmRleCA3ZTZkM2Y2OGQzZDYwY2FmM2QzYTAxYWNjMzgwYTI2
MDVmNDJkNmUzLi4zZTM3NzA3YWZlY2Y3OGY0MjE4YWE4MzAxZTFlYTJkNDFjNzI1MTcyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5oCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRl
ICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgorI2luY2x1ZGUg
PEphdmFTY3JpcHRDb3JlL0JyZWFrcG9pbnQuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9J
bnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
QEAgLTEyNSw3ICsxMjYsNyBAQCBwdWJsaWM6CiAjZW5kaWYKICAgICB2b2lkIGdldEV2ZW50TGlz
dGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxKU09OOjpBcnJh
eU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNB
cnJheSkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRFdmVudExpc3RlbmVyRGlzYWJsZWQoRXJyb3JT
dHJpbmcmLCBpbnQgZXZlbnRMaXN0ZW5lcklkLCBib29sIGRpc2FibGVkKSBvdmVycmlkZTsKLSAg
ICB2b2lkIHNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2
ZW50TGlzdGVuZXJJZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lcihFcnJvclN0cmluZyYsIGludCBldmVudExpc3RlbmVySWQsIGNvbnN0IEpTT046Ok9i
amVjdCogb3B0aW9ucykgZmluYWw7CiAgICAgdm9pZCByZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lcihFcnJvclN0cmluZyYsIGludCBldmVudExpc3RlbmVySWQpIG92ZXJyaWRlOwogICAg
IHZvaWQgZ2V0QWNjZXNzaWJpbGl0eVByb3BlcnRpZXNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50
IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM+JiBheFByb3BlcnRpZXMpIG92ZXJyaWRlOwogICAgIHZvaWQgcGVyZm9ybVNlYXJj
aChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IEpTT046OkFycmF5KiBu
b2RlSWRzLCBjb25zdCBib29sKiBjYXNlU2Vuc2l0aXZlLCBTdHJpbmcqIHNlYXJjaElkLCBpbnQq
IHJlc3VsdENvdW50KSBvdmVycmlkZTsKQEAgLTIwNSw3ICsyMDYsNyBAQCBwdWJsaWM6CiAgICAg
RWxlbWVudCogYXNzZXJ0RWxlbWVudChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOwogICAgIERv
Y3VtZW50KiBhc3NlcnREb2N1bWVudChFcnJvclN0cmluZyYsIGludCBub2RlSWQpOwogCi0gICAg
Ym9vbCBoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7CisgICAg
UmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZlbnRU
YXJnZXQmLCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29s
IGNhcHR1cmUpOwogICAgIGludCBpZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQmLCBjb25z
dCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXImLCBib29sIGNhcHR1cmUpOwog
CiBwcml2YXRlOgpAQCAtMjMxLDcgKzIzMiw3IEBAIHByaXZhdGU6CiAgICAgUmVmPEpTT046OkFy
cmF5T2Y8U3RyaW5nPj4gYnVpbGRBcnJheUZvckVsZW1lbnRBdHRyaWJ1dGVzKEVsZW1lbnQqKTsK
ICAgICBSZWY8SlNPTjo6QXJyYXlPZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBi
dWlsZEFycmF5Rm9yQ29udGFpbmVyQ2hpbGRyZW4oTm9kZSogY29udGFpbmVyLCBpbnQgZGVwdGgs
IE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7CiAgICAgUmVmUHRyPEpTT046OkFycmF5T2Y8SW5zcGVj
dG9yOjpQcm90b2NvbDo6RE9NOjpOb2RlPj4gYnVpbGRBcnJheUZvclBzZXVkb0VsZW1lbnRzKGNv
bnN0IEVsZW1lbnQmLCBOb2RlVG9JZE1hcCogbm9kZXNNYXApOwotICAgIFJlZjxJbnNwZWN0b3I6
OlByb3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5l
cihjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVudGlmaWVyLCBFdmVudFRh
cmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgYm9vbCBo
YXNCcmVha3BvaW50KTsKKyAgICBSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExp
c3RlbmVyPiBidWlsZE9iamVjdEZvckV2ZW50TGlzdGVuZXIoY29uc3QgUmVnaXN0ZXJlZEV2ZW50
TGlzdGVuZXImLCBpbnQgaWRlbnRpZmllciwgRXZlbnRUYXJnZXQmLCBjb25zdCBBdG9tU3RyaW5n
JiBldmVudFR5cGUsIGJvb2wgZGlzYWJsZWQsIGNvbnN0IFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+
Jik7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6QWNjZXNzaWJpbGl0eVBy
b3BlcnRpZXM+IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMoTm9kZSopOwog
ICAgIHZvaWQgcHJvY2Vzc0FjY2Vzc2liaWxpdHlDaGlsZHJlbihBWENvcmVPYmplY3QmLCBKU09O
OjpBcnJheU9mPGludD4mKTsKICAgICAKQEAgLTI5MCw3ICsyOTEsNyBAQCBwcml2YXRlOgogICAg
ICAgICBBdG9tU3RyaW5nIGV2ZW50VHlwZTsKICAgICAgICAgYm9vbCB1c2VDYXB0dXJlIHsgZmFs
c2UgfTsKICAgICAgICAgYm9vbCBkaXNhYmxlZCB7IGZhbHNlIH07Ci0gICAgICAgIGJvb2wgaGFz
QnJlYWtwb2ludCB7IGZhbHNlIH07CisgICAgICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IGJy
ZWFrcG9pbnQ7CiAKICAgICAgICAgSW5zcGVjdG9yRXZlbnRMaXN0ZW5lcigpIHsgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCAzNTJjMTMzMzc2NDY5YWJlYmFkZDE5NjEyMzYzODg5
NmQzMGZjNDMxLi5lZjk1NDU2NDFkNDQ3MzlhNzE0ZDA2OGQ3N2UzNTRkNjZlMjdiNzkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTc2LDEwICs3NiwxMSBAQCB2b2lkIEluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5z
ZXRFbmFibGVkRE9NRGVidWdnZXJBZ2VudChudWxscHRyKTsKIAogICAgIG1fbGlzdGVuZXJCcmVh
a3BvaW50cy5jbGVhcigpOworICAgIG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQgPSBu
dWxscHRyOworICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBudWxscHRyOwor
ICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCA9IG51bGxwdHI7CisKICAgICBtX3Vy
bEJyZWFrcG9pbnRzLmNsZWFyKCk7Ci0gICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9
IGZhbHNlOwotICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQgPSBmYWxzZTsKLSAgICBt
X3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSBmYWxzZTsKICAgICBtX3BhdXNlT25BbGxVUkxz
RW5hYmxlZCA9IGZhbHNlOwogfQogCkBAIC0xMTEsNyArMTEyLDIyIEBAIHZvaWQgSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudDo6ZGlzY2FyZEFnZW50KCkKICAgICBtX2RlYnVnZ2VyQWdlbnQgPSBu
dWxscHRyOwogfQogCi12b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJl
YWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dFR5cGVTdHJpbmcsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lKQordm9pZCBJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoKQoreworICAgIGZvciAoYXV0byYgYnJl
YWtwb2ludCA6IG1fbGlzdGVuZXJCcmVha3BvaW50cy52YWx1ZXMoKSkKKyAgICAgICAgYnJlYWtw
b2ludC0+cmVzZXRIaXRDb3VudCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbEludGVydmFsc0Jy
ZWFrcG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQtPnJlc2V0
SGl0Q291bnQoKTsKKworICAgIGlmIChtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50KQor
ICAgICAgICBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7
CisKKyAgICBpZiAobV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50KQorICAgICAgICBtX3Bh
dXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQtPnJlc2V0SGl0Q291bnQoKTsKK30KKwordm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlU3RyaW5nLCBjb25zdCBT
dHJpbmcqIGV2ZW50TmFtZSwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCkKIHsK
ICAgICBpZiAoYnJlYWtwb2ludFR5cGVTdHJpbmcuaXNFbXB0eSgpKSB7CiAgICAgICAgIGVycm9y
U3RyaW5nID0gImJyZWFrcG9pbnRUeXBlIGlzIGVtcHR5Il9zOwpAQCAtMTI0LDkgKzE0MCwxMyBA
QCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAg
YXV0byBicmVha3BvaW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJCcmVha3Bv
aW50RnJvbVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKKyAgICBpZiAoIWJy
ZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChldmVudE5hbWUgJiYgIWV2ZW50
TmFtZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgIGlmIChicmVha3BvaW50VHlwZS52YWx1ZSgpID09
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpM
aXN0ZW5lcikgewotICAgICAgICAgICAgaWYgKCFtX2xpc3RlbmVyQnJlYWtwb2ludHMuYWRkKCpl
dmVudE5hbWUpKQorICAgICAgICAgICAgaWYgKCFtX2xpc3RlbmVyQnJlYWtwb2ludHMuYWRkKCpl
dmVudE5hbWUsIGJyZWFrcG9pbnQucmVsZWFzZU5vbk51bGwoKSkpCiAgICAgICAgICAgICAgICAg
ZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCB3aXRoIGV2ZW50TmFtZSBhbHJlYWR5IGV4aXN0cyJf
czsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMTM3LDI1ICsxNTcsMjggQEAg
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb24KIAogICAgIHN3aXRjaCAoYnJlYWtwb2ludFR5cGUudmFs
dWUoKSkgewogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50
QnJlYWtwb2ludFR5cGU6OkFuaW1hdGlvbkZyYW1lOgotICAgICAgICBzZXRBbmltYXRpb25GcmFt
ZUJyZWFrcG9pbnQoZXJyb3JTdHJpbmcsIHRydWUpOworICAgICAgICBzZXRBbmltYXRpb25GcmFt
ZUJyZWFrcG9pbnQoZXJyb3JTdHJpbmcsIFdURk1vdmUoYnJlYWtwb2ludCkpOwogICAgICAgICBi
cmVhazsKIAogICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50
QnJlYWtwb2ludFR5cGU6OkludGVydmFsOgotICAgICAgICBpZiAobV9wYXVzZU9uQWxsSW50ZXJ2
YWxzRW5hYmxlZCkKKyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50
KQorICAgICAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA9IFdURk1vdmUo
YnJlYWtwb2ludCk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJy
ZWFrcG9pbnQgZm9yIEludGVydmFsIGFscmVhZHkgZXhpc3RzIl9zOwotICAgICAgICBtX3BhdXNl
T25BbGxJbnRlcnZhbHNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpM
aXN0ZW5lcjoKLSAgICAgICAgaWYgKG1fcGF1c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQpCisgICAg
ICAgIGlmICghbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIG1f
cGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOworICAg
ICAgICBlbHNlCiAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBMaXN0
ZW5lciBhbHJlYWR5IGV4aXN0cyJfczsKLSAgICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5h
YmxlZCA9IHRydWU7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6VGltZW91dDoKLSAgICAgICAg
aWYgKG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCkKKyAgICAgICAgaWYgKCFtX3BhdXNlT25B
bGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQgPSBXVEZNb3ZlKGJyZWFrcG9pbnQpOworICAgICAgICBlbHNlCiAgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBUaW1lb3V0IGFscmVhZHkgZXhpc3RzIl9z
OwotICAgICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSB0cnVlOwogICAgICAgICBi
cmVhazsKICAgICB9CiB9CkBAIC0xODYsNTEgKzIwOSw1NyBAQCB2b2lkIEluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQ6OnJlbW92ZUV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsCiAKICAgICBzd2l0Y2ggKGJyZWFrcG9pbnRUeXBlLnZhbHVlKCkpIHsKICAgICBjYXNlIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpBbmlt
YXRpb25GcmFtZToKLSAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KGVycm9yU3Ry
aW5nLCBmYWxzZSk7CisgICAgICAgIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0
cmluZywgbnVsbHB0cik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlBy
b3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6SW50ZXJ2YWw6Ci0gICAg
ICAgIGlmICghbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCkKKyAgICAgICAgaWYgKCFtX3Bh
dXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50KQogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAi
QnJlYWtwb2ludCBmb3IgSW50ZXJ2YWxzIG1pc3NpbmciX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFs
bEludGVydmFsc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxz
QnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0
b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6TGlzdGVuZXI6
Ci0gICAgICAgIGlmICghbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCkKKyAgICAgICAgaWYg
KCFtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50KQogICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiQnJlYWtwb2ludCBmb3IgTGlzdGVuZXJzIG1pc3NpbmciX3M7Ci0gICAgICAgIG1fcGF1
c2VPbkFsbExpc3RlbmVyc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wYXVzZU9uQWxsTGlz
dGVuZXJzQnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dlcjo6RXZlbnRCcmVha3BvaW50VHlwZTo6VGlt
ZW91dDoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQpCisgICAgICAg
IGlmICghbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50KQogICAgICAgICAgICAgZXJyb3JT
dHJpbmcgPSAiQnJlYWtwb2ludCBmb3IgVGltZW91dHMgbWlzc2luZyJfczsKLSAgICAgICAgbV9w
YXVzZU9uQWxsVGltZW91dHNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIG1fcGF1c2VPbkFsbFRp
bWVvdXRzQnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KIH0KIAog
dm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQoRXZlbnQmIGV2
ZW50LCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVu
ZXIpCiB7Ci0gICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCi0g
ICAgICAgIHJldHVybjsKLQogICAgIGF1dG8gc3RhdGUgPSBldmVudC50YXJnZXQoKS0+c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpLT5leGVjU3RhdGUoKTsKICAgICBhdXRvIGluamVjdGVkU2NyaXB0
ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRTY3JpcHRGb3Ioc3RhdGUpOwogICAg
IGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCiAgICAgICAgIHJldHVybjsKIAorICAg
IC8vIFNldCBXZWIgSW5zcGVjdG9yIGNvbnNvbGUgY29tbWFuZCBsaW5lIGAkZXZlbnRgIGdldHRl
ci4KICAgICB7CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2soc3RhdGUpOwogCiAgICAg
ICAgIGluamVjdGVkU2NyaXB0LnNldEV2ZW50VmFsdWUodG9KUyhzdGF0ZSwgZGVwcmVjYXRlZEds
b2JhbE9iamVjdEZvclByb3RvdHlwZShzdGF0ZSksIGV2ZW50KSk7CiAgICAgfQogCisgICAgaWYg
KCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsK
KwogICAgIGF1dG8qIGRvbUFnZW50ID0gbV9pbnN0cnVtZW50aW5nQWdlbnRzLnBlcnNpc3RlbnRE
T01BZ2VudCgpOwogCi0gICAgYm9vbCBzaG91bGRQYXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+cGF1
c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxl
ZCB8fCBtX2xpc3RlbmVyQnJlYWtwb2ludHMuY29udGFpbnMoZXZlbnQudHlwZSgpKTsKLSAgICBp
ZiAoIXNob3VsZFBhdXNlICYmIGRvbUFnZW50KQotICAgICAgICBzaG91bGRQYXVzZSA9IGRvbUFn
ZW50LT5oYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcigqZXZlbnQuY3VycmVudFRhcmdldCgp
LCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lz
dGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7Ci0gICAgaWYgKCFzaG91bGRQYXVzZSkK
KyAgICBhdXRvIGJyZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50Owor
ICAgIGlmICghYnJlYWtwb2ludCkgeworICAgICAgICBhdXRvIGl0ID0gbV9saXN0ZW5lckJyZWFr
cG9pbnRzLmZpbmQoZXZlbnQudHlwZSgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1fbGlzdGVuZXJC
cmVha3BvaW50cy5lbmQoKSkKKyAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBpdC0+dmFsdWUuY29w
eVJlZigpOworICAgIH0KKyAgICBpZiAoIWJyZWFrcG9pbnQgJiYgZG9tQWdlbnQpCisgICAgICAg
IGJyZWFrcG9pbnQgPSBkb21BZ2VudC0+YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50
LmN1cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5j
YWxsYmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOworICAgIGlm
ICghYnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgUmVmPEpTT046Ok9iamVjdD4g
ZXZlbnREYXRhID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKQEAgLTI0MSwxMiArMjcwLDM3IEBA
IHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEhhbmRsZUV2ZW50KEV2ZW50JiBl
dmVudCwgY29uc3QgUmVnaXN0ZXJlZEV2CiAgICAgICAgICAgICBldmVudERhdGEtPnNldEludGVn
ZXIoImV2ZW50TGlzdGVuZXJJZCJfcywgZXZlbnRMaXN0ZW5lcklkKTsKICAgICB9CiAKLSAgICBt
X2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpMaXN0ZW5lciwgV1RGTW92ZShldmVu
dERhdGEpKTsKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJl
YWtwb2ludCgqYnJlYWtwb2ludCwgSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hl
cjo6UmVhc29uOjpMaXN0ZW5lciwgV1RGTW92ZShldmVudERhdGEpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRIYW5kbGVFdmVudCgpCit2b2lkIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KEV2ZW50JiBldmVudCwgY29uc3QgUmVnaXN0
ZXJlZEV2ZW50TGlzdGVuZXImIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyKQogewotICAgIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmNsZWFyRXZlbnRWYWx1ZSgpOworICAgIGF1dG8gc3RhdGUgPSBl
dmVudC50YXJnZXQoKS0+c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5leGVjU3RhdGUoKTsKKyAg
ICBhdXRvIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuaW5qZWN0ZWRT
Y3JpcHRGb3Ioc3RhdGUpOworICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIENsZWFyIFdlYiBJbnNwZWN0b3IgY29uc29sZSBjb21t
YW5kIGxpbmUgYCRldmVudGAgZ2V0dGVyLgorICAgIHsKKyAgICAgICAgSlNDOjpKU0xvY2tIb2xk
ZXIgbG9jayhzdGF0ZSk7CisKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQuY2xlYXJFdmVudFZhbHVl
KCk7CisgICAgfQorCisgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZl
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFs
bExpc3RlbmVyc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICBicmVh
a3BvaW50ID0gbV9saXN0ZW5lckJyZWFrcG9pbnRzLmdldChldmVudC50eXBlKCkpOworICAgIGlm
ICghYnJlYWtwb2ludCkgeworICAgICAgICBpZiAoYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1l
bnRpbmdBZ2VudHMucGVyc2lzdGVudERPTUFnZW50KCkpCisgICAgICAgICAgICBicmVha3BvaW50
ID0gZG9tQWdlbnQtPmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50VGFy
Z2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2soKSwg
cmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKKyAgICB9CisgICAgaWYgKCFi
cmVha3BvaW50KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmNhbmNl
bFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KQpAQCAtMjU0
LDEyICszMDgsMjQgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZVRp
bWVyKGJvb2wgb25lU2hvdCkKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNB
Y3RpdmUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRQYXVzZSA9IG1fZGVi
dWdnZXJBZ2VudC0+cGF1c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwgKG9uZVNob3QgPyBt
X3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgOiBtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVk
KTsKLSAgICBpZiAoIXNob3VsZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG9uZVNob3Qg
PyBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQgOiBtX3BhdXNlT25BbGxJbnRlcnZhbHNC
cmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgcmV0dXJuOwogCiAgICAg
YXV0byBicmVha1JlYXNvbiA9IG9uZVNob3QgPyBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OlRpbWVvdXQgOiBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246OkludGVydmFsOwotICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudChicmVha1JlYXNvbiwgbnVsbHB0cik7CisgICAgbV9kZWJ1
Z2dlckFnZW50LT5zY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQs
IGJyZWFrUmVhc29uKTsKK30KKwordm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRG
aXJlVGltZXIoYm9vbCBvbmVTaG90KQoreworICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVh
a3BvaW50c0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvIGJyZWFrcG9pbnQg
PSBvbmVTaG90ID8gbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50IDogbV9wYXVzZU9uQWxs
SW50ZXJ2YWxzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJldHVy
bjsKKworICAgIG1fZGVidWdnZXJBZ2VudC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2lu
dCgqYnJlYWtwb2ludCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCmluZGV4
IDAxZTNiZGNmMDA0YWU2NDBkZmE5NjNmZjlhNTRjMzVkMmFlY2QwNTIuLjlmNmU2MzhlMzNlZTAz
MDk0OTllNjcyNjAyMWJkMGMwODE5NGU4NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0z
MiwxMCArMzIsMTMgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSW5zcGVjdG9yV2ViQWdl
bnRCYXNlLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0pT
T05WYWx1ZXMuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQv
V1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewpAQCAtNjQsNyArNjcsNyBAQCBw
dWJsaWM6CiAgICAgLy8gRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICB2
b2lkIHNldFVSTEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4KSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZVVSTEJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHVybCkgZmluYWw7Ci0gICAgdm9pZCBz
ZXRFdmVudEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRU
eXBlLCBjb25zdCBTdHJpbmcqIGV2ZW50TmFtZSkgZmluYWw7CisgICAgdm9pZCBzZXRFdmVudEJy
ZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRUeXBlLCBjb25z
dCBTdHJpbmcqIGV2ZW50TmFtZSwgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsK
ICAgICB2b2lkIHJlbW92ZUV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgYnJlYWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lKSBmaW5hbDsKIAogICAg
IC8vIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okxpc3RlbmVyCkBAIC03MiwxOCArNzUsMjAgQEAg
cHVibGljOgogICAgIHZvaWQgZGVidWdnZXJXYXNEaXNhYmxlZCgpIG92ZXJyaWRlOwogCiAgICAg
Ly8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCisgICAgdmlydHVhbCB2b2lkIG1haW5GcmFtZU5h
dmlnYXRlZCgpOwogICAgIHZvaWQgd2lsbFNlbmRYTUxIdHRwUmVxdWVzdChjb25zdCBTdHJpbmcm
IHVybCk7CiAgICAgdm9pZCB3aWxsRmV0Y2goY29uc3QgU3RyaW5nJiB1cmwpOwogICAgIHZvaWQg
d2lsbEhhbmRsZUV2ZW50KEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsK
LSAgICB2b2lkIGRpZEhhbmRsZUV2ZW50KCk7CisgICAgdm9pZCBkaWRIYW5kbGVFdmVudChFdmVu
dCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJik7CiAgICAgdm9pZCB3aWxsRmlyZVRp
bWVyKGJvb2wgb25lU2hvdCk7CisgICAgdm9pZCBkaWRGaXJlVGltZXIoYm9vbCBvbmVTaG90KTsK
IAogcHJvdGVjdGVkOgogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoV2ViQWdlbnRDb250
ZXh0JiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVhbCB2
b2lkIGVuYWJsZSgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKCk7CiAKLSAgICB2aXJ0dWFs
IHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgYm9vbCBlbmFi
bGVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChF
cnJvclN0cmluZyYsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYpID0gMDsKIAogICAgIEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50IHsgbnVsbHB0ciB9
OwogCkBAIC05NCwxNCArOTksMTMgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpE
T01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIElu
c3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsK
IAotICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2xpc3RlbmVyQnJlYWtwb2ludHM7CisgICAgSGFzaE1h
cDxTdHJpbmcsIFJlZjxKU0M6OkJyZWFrcG9pbnQ+PiBtX2xpc3RlbmVyQnJlYWtwb2ludHM7Cisg
ICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dDsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVh
a3BvaW50OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbFRpbWVvdXRz
QnJlYWtwb2ludDsKIAogICAgIGVudW0gY2xhc3MgVVJMQnJlYWtwb2ludFR5cGUgeyBSZWd1bGFy
RXhwcmVzc2lvbiwgVGV4dCB9OwogICAgIEhhc2hNYXA8U3RyaW5nLCBVUkxCcmVha3BvaW50VHlw
ZT4gbV91cmxCcmVha3BvaW50czsKLQotICAgIGJvb2wgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzRW5h
YmxlZCB7IGZhbHNlIH07Ci0gICAgYm9vbCBtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkIHsg
ZmFsc2UgfTsKLSAgICBib29sIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCB7IGZhbHNlIH07
CiAgICAgYm9vbCBtX3BhdXNlT25BbGxVUkxzRW5hYmxlZCB7IGZhbHNlIH07CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5l
QWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1l
bGluZUFnZW50LmNwcAppbmRleCAxNDBlMTU3OGM1ZjA5NmU0NDRlZDE0OTIwNzcxOGVlN2Y4NjQ1
NTI2Li4zMDFlZjk1MjU2NDliYTAwZGIyMjkzMzQ4NTI2MTczY2QxMTkyN2FjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKQEAgLTUxLDkgKzUxLDkgQEAKICNpbmNsdWRlICJUaW1lbGluZVJlY29yZEZh
Y3RvcnkuaCIKICNpbmNsdWRlICJXZWJDb25zb2xlQWdlbnQuaCIKICNpbmNsdWRlICJXZWJEZWJ1
Z2dlckFnZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5oPgotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL1NjcmlwdEJyZWFrcG9pbnQuaD4KICNpbmNsdWRlIDx3dGYvU3RvcHdhdGNoLmg+
CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtMTg3LDcgKzE4Nyw3IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdGFydChjb25zdCBpbnQqIG1heENhbGxTdGFj
a0RlcHRoKQogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLnNldFRyYWNraW5nVGltZWxpbmVB
Z2VudCh0aGlzKTsKIAotICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5hZGRM
aXN0ZW5lcih0aGlzKTsKKyAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkuYWRk
T2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgbV90cmFja2luZyA9IHRydWU7CiAKQEAgLTI0MSw3ICsy
NDEsNyBAQCB2b2lkIEluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RvcCgpCiAKICAg
ICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdUaW1lbGluZUFnZW50KG51bGxwdHIp
OwogCi0gICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZlcigpLnJlbW92ZUxpc3RlbmVy
KHRoaXMsIHRydWUpOworICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1v
dmVPYnNlcnZlcigqdGhpcywgdHJ1ZSk7CiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBtX2Zy
YW1lU3RhcnRPYnNlcnZlciA9IG51bGxwdHI7CkBAIC02NjksMTEgKzY2OSw5IEBAIHZvaWQgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudDo6ZGlkRmlyZU9ic2VydmVyQ2FsbGJhY2soKQogICAgIGRpZENv
bXBsZXRlQ3VycmVudFJlY29yZChUaW1lbGluZVJlY29yZFR5cGU6Ok9ic2VydmVyQ2FsbGJhY2sp
OwogfQogCi0vLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0KLXZvaWQgSW5zcGVjdG9yVGltZWxpbmVB
Z2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYgYWN0
aW9uLCB1bnNpZ25lZCAvKmJhdGNoSWQqLywgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1
ZSkKK3ZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6YnJlYWtwb2ludEFjdGlvblByb2JlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6QnJlYWtwb2ludEFj
dGlvbklEIGFjdGlvbklELCB1bnNpZ25lZCAvKmJhdGNoSWQqLywgdW5zaWduZWQgc2FtcGxlSWQs
IEpTQzo6SlNWYWx1ZSkKIHsKLSAgICBhcHBlbmRSZWNvcmQoVGltZWxpbmVSZWNvcmRGYWN0b3J5
OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoYWN0aW9uLCBzYW1wbGVJZCksIFRpbWVsaW5lUmVjb3Jk
VHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUobGV4aWNhbEdsb2Jh
bE9iamVjdCkpOworICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0
ZVByb2JlU2FtcGxlRGF0YShhY3Rpb25JRCwgc2FtcGxlSWQpLCBUaW1lbGluZVJlY29yZFR5cGU6
OlByb2JlU2FtcGxlLCBmYWxzZSwgZnJhbWVGcm9tRXhlY1N0YXRlKGxleGljYWxHbG9iYWxPYmpl
Y3QpKTsKIH0KIAogc3RhdGljIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlRpbWVsaW5lOjpFdmVudFR5
cGUgdG9Qcm90b2NvbChUaW1lbGluZVJlY29yZFR5cGUgdHlwZSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxpbmVBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKaW5k
ZXggMzBmYzk3OTUyNGE5NGJlMGQzNDE1NTFlMWZlOGVkY2Y5YTRmN2IzYi4uOTVhOGUzZWQ3MmQy
ZmI0NDUxNGEzMTNhMTQxYzFhOWE3OTg5Mzg1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmgKQEAgLTM0LDkg
KzM0LDEwIEBACiAKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRl
ICJMYXlvdXRSZWN0LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvRGVidWdnZXIuaD4KKyNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dlclByaW1pdGl2ZXMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JGcm9udGVuZERpc3BhdGNoZXJzLmg+Ci0jaW5jbHVkZSA8
SmF2YVNjcmlwdENvcmUvU2NyaXB0RGVidWdMaXN0ZW5lci5oPgogI2luY2x1ZGUgPHd0Zi9KU09O
VmFsdWVzLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCkBAIC04MSw3ICs4Miw3IEBAIGVu
dW0gY2xhc3MgVGltZWxpbmVSZWNvcmRUeXBlIHsKICAgICBPYnNlcnZlckNhbGxiYWNrLAogfTsK
IAotY2xhc3MgSW5zcGVjdG9yVGltZWxpbmVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JB
Z2VudEJhc2UgLCBwdWJsaWMgSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFu
ZGxlciAsIHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnTGlzdGVuZXIgeworY2xhc3MgSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2VudEJhc2UgLCBw
dWJsaWMgSW5zcGVjdG9yOjpUaW1lbGluZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciAsIHB1Ymxp
YyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5z
cGVjdG9yVGltZWxpbmVBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC0xMDAsMTYgKzEwMSw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEF1dG9DYXB0dXJl
RW5hYmxlZChFcnJvclN0cmluZyYsIGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0SW5zdHJ1
bWVudHMoRXJyb3JTdHJpbmcmLCBjb25zdCBKU09OOjpBcnJheSYpIG92ZXJyaWRlOwogCi0gICAg
Ly8gU2NyaXB0RGVidWdMaXN0ZW5lcgotICAgIHZvaWQgZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3Vy
Y2VJRCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBmYWlsZWRUb1BhcnNl
U291cmNlKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGludCwgaW50LCBjb25zdCBTdHJp
bmcmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHdpbGxSdW5NaWNyb3Rhc2soKSBvdmVycmlkZSB7
IH0KLSAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlk
UGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6SlNWYWx1ZSwgSlNDOjpKU1ZhbHVlKSBv
dmVycmlkZSB7IH0KLSAgICB2b2lkIGRpZENvbnRpbnVlKCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9p
ZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcm
KSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQpIG92ZXJy
aWRlIHsgfQotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBi
YXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHJlc3VsdCkgb3ZlcnJpZGU7
CisgICAgLy8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rp
b25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpCcmVha3BvaW50QWN0aW9uSUQsIHVu
c2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgcmVzdWx0KSBm
aW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbgogICAgIHZvaWQgZGlkSW5z
dGFsbFRpbWVyKGludCB0aW1lcklkLCBTZWNvbmRzIHRpbWVvdXQsIGJvb2wgc2luZ2xlU2hvdCwg
RnJhbWUqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDEzOWJiYzVlMzAyMTA2NjUy
NDc0NTU3MzkzNTVmOGNkZTc0YzIxOTAuLjdmNDg3NTRhZjE2YTg0Yzg2ZDM0ZDJkYjJjNmUxN2Fk
N2ZhYWJkMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFn
ZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtOTQsNyArOTQsOCBAQCB2
b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaXNhYmxlKCkKICAgICBtX2luc3RydW1lbnRpbmdB
Z2VudHMuc2V0RW5hYmxlZFBhZ2VET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAgbV9k
b21CcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0Vu
YWJsZWQgPSBmYWxzZTsKKworICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQgPSBudWxscHRyOwogCiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgp
OwogfQpAQCAtMTUyLDYgKzE1MywxNCBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpyZW1v
dmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG5vZAogICAgIH0K
IH0KIAordm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6bWFpbkZyYW1lTmF2aWdhdGVkKCkKK3sK
KyAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0ZWQoKTsKKwor
ICAgIGlmIChtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICBt
X3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7Cit9
CisKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1l
JiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lLmlzTWFpbkZyYW1lKCkpCkBAIC0yNTIsMTEgKzI2
MSwyMyBAQCB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZUFuaW1hdGlvbkZyYW1l
KCkKICAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYm9vbCBzaG91bGRQYXVzZSA9IG1fZGVidWdnZXJBZ2VudC0+cGF1
c2VPbk5leHRTdGF0ZW1lbnRFbmFibGVkKCkgfHwgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVz
RW5hYmxlZDsKLSAgICBpZiAoIXNob3VsZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG1f
cGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VP
bk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpBbmltYXRpb25GcmFtZSwgbnVsbHB0cik7CisgICAgbV9kZWJ1Z2dlckFnZW50LT5zY2hl
ZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoKmJyZWFrcG9pbnQsIEluc3BlY3Rvcjo6RGVi
dWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QW5pbWF0aW9uRnJhbWUpOworfQorCit2
b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaWRGaXJlQW5pbWF0aW9uRnJhbWUoKQoreworICAg
IGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCisgICAg
bV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZUZvclNwZWNpYWxCcmVha3BvaW50KCpicmVha3Bv
aW50KTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHls
ZUF0dHIoRWxlbWVudCYgZWxlbWVudCkKQEAgLTI3MSwxMiArMjkyLDE0IEBAIHZvaWQgUGFnZURP
TURlYnVnZ2VyQWdlbnQ6OndpbGxJbnZhbGlkYXRlU3R5bGVBdHRyKEVsZW1lbnQmIGVsZW1lbnQp
CiAgICAgfQogfQogCi12b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFt
ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQpCit2b2lk
IFBhZ2VET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmIGJyZWFrcG9pbnQp
CiB7Ci0gICAgaWYgKG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0VuYWJsZWQgPT0gZW5hYmxl
ZCkKLSAgICAgICAgZXJyb3JTdHJpbmcgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFi
bGVkID8gIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIGFscmVhZHkgZXhpc3RzIl9zIDog
IkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIG1pc3NpbmciX3M7CisgICAgaWYgKCFtX3Bh
dXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID09ICFicmVha3BvaW50KSB7CisgICAg
ICAgIGVycm9yU3RyaW5nID0gbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA/
ICJCcmVha3BvaW50IGZvciBBbmltYXRpb25GcmFtZSBhbHJlYWR5IGV4aXN0cyJfcyA6ICJCcmVh
a3BvaW50IGZvciBBbmltYXRpb25GcmFtZSBtaXNzaW5nIl9zOworICAgICAgICByZXR1cm47Cisg
ICAgfQogCi0gICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCA9IGVuYWJsZWQ7
CisgICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJl
YWtwb2ludCk7CiB9CiAKIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRlc2NyaXB0aW9uRm9y
RE9NRXZlbnQoTm9kZSYgdGFyZ2V0LCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9u
LCBKU09OOjpPYmplY3QmIGRlc2NyaXB0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaAppbmRleCA3
ZGRmNDUzYjk0MTlkMjBmYTkxNDZjMTE3ZmFhYmZhNTFmZjM0NjA0Li5iYTRlZjYwMjNkYWIzMDhi
MWFkNTFiZDg2MjQ5MGJhYjU3MGExYTJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaApAQCAtMjYs
NiArMjYsOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00Nyw2ICs0OSw3
IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBjb25zdCBTdHJpbmcmIHR5cGUpIG92ZXJyaWRlOwogCiAgICAgLy8gSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uCisgICAgdm9pZCBtYWluRnJhbWVOYXZpZ2F0ZWQoKSBmaW5hbDsK
ICAgICB2b2lkIGZyYW1lRG9jdW1lbnRVcGRhdGVkKEZyYW1lJik7CiAgICAgdm9pZCB3aWxsSW5z
ZXJ0RE9NTm9kZShOb2RlJiBwYXJlbnQpOwogICAgIHZvaWQgZGlkSW5zZXJ0RE9NTm9kZShOb2Rl
Jik7CkBAIC01NSwxMiArNTgsMTMgQEAgcHVibGljOgogICAgIHZvaWQgd2lsbE1vZGlmeURPTUF0
dHIoRWxlbWVudCYpOwogICAgIHZvaWQgd2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYp
OwogICAgIHZvaWQgd2lsbEZpcmVBbmltYXRpb25GcmFtZSgpOworICAgIHZvaWQgZGlkRmlyZUFu
aW1hdGlvbkZyYW1lKCk7CiAKIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsK
ICAgICB2b2lkIGRpc2FibGUoKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2V0QW5pbWF0aW9uRnJh
bWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkKSBvdmVycmlkZTsKKyAgICB2
b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYsIFJlZlB0cjxKU0M6
OkJyZWFrcG9pbnQ+JiYpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXNjcmlwdGlvbkZvckRPTUV2
ZW50KE5vZGUmLCBpbnQgYnJlYWtwb2ludFR5cGUsIGJvb2wgaW5zZXJ0aW9uLCBKU09OOjpPYmpl
Y3QmIGRlc2NyaXB0aW9uKTsKICAgICB2b2lkIHVwZGF0ZVN1YnRyZWVCcmVha3BvaW50cyhOb2Rl
KiwgdWludDMyX3Qgcm9vdE1hc2ssIGJvb2wgc2V0KTsKQEAgLTY4LDcgKzcyLDggQEAgcHJpdmF0
ZToKICAgICBib29sIGhhc0JyZWFrcG9pbnQoTm9kZSosIGludCB0eXBlKTsKIAogICAgIEhhc2hN
YXA8Tm9kZSosIHVpbnQzMl90PiBtX2RvbUJyZWFrcG9pbnRzOwotICAgIGJvb2wgbV9wYXVzZU9u
QWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCB7IGZhbHNlIH07CisKKyAgICBSZWZQdHI8SlNDOjpC
cmVha3BvaW50PiBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OwogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNTBjYzk4YjNm
YTMwZTNkYTFmNmU1ZWRkMjkxYzljYzY2MzE2NmU3MS4uMjE3Y2I1NWU2YzBlZDc2YzllNjc0MThh
OGMzMzRhMDQxOGZjZTJkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC05MCw3ICs5MCw3IEBA
IHZvaWQgUGFnZURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQog
ICAgIFdlYkRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ryb3llZCk7CiB9CiAKLVN0
cmluZyBQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlw
dCYgc2NyaXB0KQorU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3Jp
cHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgc3RhdGljIE5l
dmVyRGVzdHJveWVkPFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlcihNQUtFX1NUQVRJQ19TVFJJ
TkdfSU1QTCgiU291cmNlTWFwIikpOwogICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxTdHJpbmc+
IHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKE1BS0VfU1RBVElDX1NUUklOR19JTVBMKCJY
LVNvdXJjZU1hcCIpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggZDEzOTEwOGJmYjk4ODM0OTM5YWQw
MjljNjdjOTZhOGZlMTljNzYzYS4uNGMyN2RkMWM3NGIxMmU4NTdiNmNmNjUxMGY4OTk3NjA3YTE2
NjIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1Bh
Z2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9w
YWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTUxLDggKzUxLDggQEAgcHVibGljOgogICAgIC8v
IERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyCiAgICAgdm9pZCBldmFsdWF0ZU9uQ2Fs
bEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2Vu
ZXJhdGVQcmV2aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBjb25zdCBib29sKiBlbXVsYXRl
VXNlckdlc3R1cmUsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+JiByZXN1bHQsIE9wdGlvbmFsPGJvb2w+JiB3YXNUaHJvd24sIE9wdGlvbmFsPGludD4m
IHNhdmVkUmVzdWx0SW5kZXgpIG92ZXJyaWRlOwogCi0gICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5l
cgotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgLy8gSlNDOjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAg
ICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0IFN0
cmluZyYgZGF0YSkgZmluYWw7CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KICAg
ICB2b2lkIGRpZENsZWFyV2luZG93T2JqZWN0SW5Xb3JsZChGcmFtZSYsIERPTVdyYXBwZXJXb3Js
ZCYpOwpAQCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW5hYmxlKCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7CiAK
LSAgICBTdHJpbmcgc291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYpIG92ZXJyaWRl
OworICAgIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6
U2NyaXB0Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIG11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CiAg
ICAgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IGFkODNmNmQzN2JkNjRiY2UyMjFlM2RhY2Q3YTIyOTkzMTEyYThmNjIu
LjE0NzZmYmM4MTk2MzU3ZDkxMmJjODJhM2MzNTRlODNhOTRhNDYxNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtl
ckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHZvaWQgV29ya2VyRE9NRGVi
dWdnZXJBZ2VudDo6cmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCAvCiAgICAgZXJyb3JTdHJpbmcgPSAiTm90IHN1cHBvcnRlZCJfczsKIH0KIAotdm9pZCBX
b3JrZXJET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBib29sIC8qIGVuYWJsZWQgKi8pCit2b2lkIFdvcmtlckRPTURl
YnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYpCiB7CiAgICAgZXJyb3JTdHJpbmcg
PSAiTm90IHN1cHBvcnRlZCJfczsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaAppbmRl
eCBiMTEyODVlMDQ2MmRhMjExMGY4OTU2Njg2N2Q1ZjAyOTYxNzMyZWIwLi5kYWQxOGY1YzBlYzhh
YTNiYzhiNGY3OGFkZmY0ZTkwOGZkZDgzZGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2Vu
dC5oCkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAg
LTQxLDcgKzQzLDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBib29sIGVuYWJsZWQpIG92ZXJyaWRlOworICAgIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikgb3ZlcnJpZGU7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKaW5k
ZXggMzE5MTY3NjYzYzdkNjc4YzQwYTJkZmZlNDE0NjVkNTViM2VlMzVhMy4uNGFjMDdkNmNjMzdj
MjI4MDMzMzhlYjgwZDM0MjE5NTIxYjk2ZjNkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaApA
QCAtMzgsOCArMzgsOCBAQCBwdWJsaWM6CiAgICAgV29ya2VyRGVidWdnZXJBZ2VudChXb3JrZXJB
Z2VudENvbnRleHQmKTsKICAgICB+V29ya2VyRGVidWdnZXJBZ2VudCgpIG92ZXJyaWRlOwogCi0g
ICAgLy8gU2NyaXB0RGVidWdMaXN0ZW5lcgotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgLy8gSlND
OjpEZWJ1Z2dlcjo6T2JzZXJ2ZXIKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpK
U0dsb2JhbE9iamVjdCosIGNvbnN0IFN0cmluZyYgZGF0YSkgZmluYWw7CiAKIHByaXZhdGU6CiAg
ICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBtdXRlIGNvbnNvbGUgZm9yIHdvcmtlcnMuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVRpbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NVGltZXIuY3BwCmluZGV4IDViOTMxZWZhMWYwM2FiYTlmNjc5Zjc5NTJkZDlhZGY3M2M4
MTYxYzguLjg2NTQwOGRiZmE1MDM2MjFmYWM0MWYyMGY2Y2ZmYmY0NDM1OGE2MGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRE9NVGltZXIuY3BwCkBAIC0yODQsNiArMjg0LDggQEAgdm9pZCBET01UaW1lcjo6Zmly
ZWQoKQogICAgIC8vIHdhaXQgdW5pdCB0aGUgZW5kIG9mIHRoaXMgZnVuY3Rpb24gdG8gZGVsZXRl
IERPTVRpbWVyLgogICAgIFJlZjxET01UaW1lcj4gcHJvdGVjdGVkVGhpcygqdGhpcyk7CiAKKyAg
ICBib29sIG9uZVNob3QgPSAhcmVwZWF0SW50ZXJ2YWwoKTsKKwogICAgIEFTU0VSVChzY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQg
PSAqc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOwogCkBAIC0yOTEsNyArMjkzLDcgQEAgdm9pZCBE
T01UaW1lcjo6ZmlyZWQoKQogICAgIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpIHsKICAgICAg
ICAgYXV0byYgZG9jdW1lbnQgPSBkb3duY2FzdDxEb2N1bWVudD4oY29udGV4dCk7CiAgICAgICAg
IGlmIChhdXRvKiBob2xkaW5nVGFuayA9IGRvY3VtZW50LmRvbVRpbWVySG9sZGluZ1RhbmtJZkV4
aXN0cygpOyBob2xkaW5nVGFuayAmJiBob2xkaW5nVGFuay0+Y29udGFpbnMoKnRoaXMpKSB7Ci0g
ICAgICAgICAgICBpZiAoIXJlcGVhdEludGVydmFsKCkpCisgICAgICAgICAgICBpZiAob25lU2hv
dCkKICAgICAgICAgICAgICAgICBzdGFydE9uZVNob3QoMF9zKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzA5LDcgKzMxMSw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkK
ICAgICAvLyBPbmx5IHRoZSBmaXJzdCBleGVjdXRpb24gb2YgYSBtdWx0aS1zaG90IHRpbWVyIHNo
b3VsZCBnZXQgYW4gYWZmaXJtYXRpdmUgdXNlciBnZXN0dXJlIGluZGljYXRvci4KICAgICBtX3Vz
ZXJHZXN0dXJlVG9rZW5Ub0ZvcndhcmQgPSBudWxscHRyOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCAhcmVwZWF0SW50
ZXJ2YWwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKGNv
bnRleHQsIG1fdGltZW91dElkLCBvbmVTaG90KTsKIAogICAgIC8vIFNpbXBsZSBjYXNlIGZvciBu
b24tb25lLXNob3QgdGltZXJzLgogICAgIGlmIChpc0FjdGl2ZSgpKSB7CkBAIC0zMjAsNyArMzIy
LDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogCiAgICAgICAgIG1fYWN0aW9uLT5leGVjdXRl
KGNvbnRleHQpOwogCi0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkRmlyZVRp
bWVyKGNvbnRleHQpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVU
aW1lcihjb250ZXh0LCBtX3RpbWVvdXRJZCwgb25lU2hvdCk7CiAKICAgICAgICAgdXBkYXRlVGhy
b3R0bGluZ1N0YXRlSWZOZWNlc3NhcnkoZmlyZVN0YXRlKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MzM4LDcgKzM0MCw3IEBAIHZvaWQgRE9NVGltZXI6OmZpcmVkKCkKICNlbmRpZgogICAgIG1fYWN0
aW9uLT5leGVjdXRlKGNvbnRleHQpOwogCi0gICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXIoY29udGV4dCk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRG
aXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsIG9uZVNob3QpOwogCiAgICAgLy8gQ2hlY2sg
aWYgd2Ugc2hvdWxkIHRocm90dGxlIG5lc3RlZCBzaW5nbGUtc2hvdCB0aW1lcnMuCiAgICAgaWYg
KG5lc3RlZFRpbWVycykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQmFzZS9TZXR0aW5nLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvQmFzZS9TZXR0aW5nLmpzCmluZGV4IDNiMTk5ZmE2ODhmYjU2OTYzMjgxNTc0M2YzMDRh
ZjhjNDU3YWY2ZmQuLmVkNWFiMDA5NmIyZDEwNjY3OGZhOTk4Mjg1MmVjOThiNmYzMjE1OGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGlu
Zy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRp
bmcuanMKQEAgLTE5NywxMiArMTk3LDggQEAgV0kuc2V0dGluZ3MgPSB7CiAgICAgc2VhcmNoUmVn
dWxhckV4cHJlc3Npb246IG5ldyBXSS5TZXR0aW5nKCJzZWFyY2gtcmVndWxhci1leHByZXNzaW9u
IiwgZmFsc2UpLAogICAgIHNlbGVjdGVkTmV0d29ya0RldGFpbENvbnRlbnRWaWV3SWRlbnRpZmll
cjogbmV3IFdJLlNldHRpbmcoIm5ldHdvcmstZGV0YWlsLWNvbnRlbnQtdmlldy1pZGVudGlmaWVy
IiwgInByZXZpZXciKSwKICAgICBzb3VyY2VNYXBzRW5hYmxlZDogbmV3IFdJLlNldHRpbmcoInNv
dXJjZS1tYXBzLWVuYWJsZWQiLCB0cnVlKSwKLSAgICBzaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxsLWFuaW1hdGlvbi1mcmFtZXMtYnJlYWtw
b2ludCIsIGZhbHNlKSwKLSAgICBzaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludDogbmV3IFdJLlNl
dHRpbmcoInNob3ctYWxsLWludGV2ZXJhbHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKLSAgICBzaG93
QWxsTGlzdGVuZXJzQnJlYWtwb2ludDogbmV3IFdJLlNldHRpbmcoInNob3ctYWxsLWxpc3RlbmVy
cy1icmVha3BvaW50IiwgZmFsc2UpLAogICAgIHNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDog
bmV3IFdJLlNldHRpbmcoInNob3ctYWxsLW1pY3JvdGFza3MtYnJlYWtwb2ludCIsIGZhbHNlKSwK
ICAgICBzaG93QWxsUmVxdWVzdHNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwt
cmVxdWVzdHMtYnJlYWtwb2ludCIsIGZhbHNlKSwKLSAgICBzaG93QWxsVGltZW91dHNCcmVha3Bv
aW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtdGltZW91dHMtYnJlYWtwb2ludCIsIGZhbHNl
KSwKICAgICBzaG93QXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygi
c2hvdy1hc3NlcnRpb24tZmFpbHVyZXMtYnJlYWtwb2ludCIsIHRydWUpLAogICAgIHNob3dDYW52
YXNQYXRoOiBuZXcgV0kuU2V0dGluZygic2hvdy1jYW52YXMtcGF0aCIsIGZhbHNlKSwKICAgICBz
aG93SW1hZ2VHcmlkOiBuZXcgV0kuU2V0dGluZygic2hvdy1pbWFnZS1ncmlkIiwgdHJ1ZSksCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9wb3ZlckNvbnRyb2xsZXIuanMK
aW5kZXggYWU0Y2M0N2M1MWNjZDc4MzA4OTZhZWE4YzMzYzI0MWI4ODk0MWMzNS4uMDk4Y2EyZGZj
Y2JiYTZiMWQ3YWNjYjk2NGQxMzg1YjdiYTRiYzgxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250
cm9sbGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRy
b2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcwpAQCAtNDAsNjAgKzQwLDU5IEBA
IFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciA9IGNsYXNzIEJyZWFrcG9pbnRQb3BvdmVy
Q29udHJvbGxlciBleHRlbmRzIFdJLk9iCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChk
b2N1bWVudC5ib2R5LmNvbnRhaW5zKGJyZWFrcG9pbnREaXNwbGF5RWxlbWVudCksICJCcmVha3Bv
aW50IHBvcG92ZXIgZGlzcGxheSBlbGVtZW50IG11c3QgYmUgaW4gdGhlIERPTS4iKTsKIAotICAg
ICAgICBjb25zdCBlZGl0QnJlYWtwb2ludCA9ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9wb3BvdmVyLCAiQnJlYWtwb2ludCBwb3BvdmVyIGFscmVhZHkgZXhpc3Rz
LiIpOwotICAgICAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSkgeworICAgICAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRWRpdCBCcmVha3BvaW50XHUyMDI2Iiks
ICgpID0+IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcG9wb3Zlciwg
IkJyZWFrcG9pbnQgcG9wb3ZlciBhbHJlYWR5IGV4aXN0cy4iKTsKKyAgICAgICAgICAgICAgICBp
ZiAodGhpcy5fcG9wb3ZlcikKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
ICAgICB0aGlzLl9jcmVhdGVQb3BvdmVyQ29udGVudChicmVha3BvaW50KTsKLSAgICAgICAgICAg
IHRoaXMuX3BvcG92ZXIgPSBuZXcgV0kuUG9wb3Zlcih0aGlzKTsKLSAgICAgICAgICAgIHRoaXMu
X3BvcG92ZXIuY29udGVudCA9IHRoaXMuX3BvcG92ZXJDb250ZW50RWxlbWVudDsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9jcmVhdGVQb3BvdmVyQ29udGVudChicmVha3BvaW50KTsKKyAgICAgICAg
ICAgICAgICB0aGlzLl9wb3BvdmVyID0gbmV3IFdJLlBvcG92ZXIodGhpcyk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50
OwogCi0gICAgICAgICAgICBsZXQgYm91bmRzID0gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJlY3Qo
YnJlYWtwb2ludERpc3BsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKLSAgICAg
ICAgICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAxOyAvLyBNb3ZlIHRoZSBhbmNob3IgbGVmdCBvbmUg
cGl4ZWwgc28gaXQgbG9va3MgbW9yZSBjZW50ZXJlZC4KLSAgICAgICAgICAgIHRoaXMuX3BvcG92
ZXIucHJlc2VudChib3VuZHMucGFkKDIpLCBbV0kuUmVjdEVkZ2UuTUFYX1ldKTsKLSAgICAgICAg
fTsKKyAgICAgICAgICAgICAgICBsZXQgYm91bmRzID0gV0kuUmVjdC5yZWN0RnJvbUNsaWVudFJl
Y3QoYnJlYWtwb2ludERpc3BsYXlFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTsKKyAg
ICAgICAgICAgICAgICBib3VuZHMub3JpZ2luLnggLT0gMTsgLy8gTW92ZSB0aGUgYW5jaG9yIGxl
ZnQgb25lIHBpeGVsIHNvIGl0IGxvb2tzIG1vcmUgY2VudGVyZWQuCisgICAgICAgICAgICAgICAg
dGhpcy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXSS5SZWN0RWRnZS5NQVhfWV0p
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgICAgICBjb25zdCByZW1vdmVCcmVh
a3BvaW50ID0gKCkgPT4gewotICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIH07CisgICAgICAgIGlmICghYnJlYWtwb2lu
dC5kaXNhYmxlZCkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0
cmluZygiRGlzYWJsZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVh
a3BvaW50LmRpc2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7CisgICAgICAgICAgICB9KTsK
IAotICAgICAgICBjb25zdCB0b2dnbGVCcmVha3BvaW50ID0gKCkgPT4gewotICAgICAgICAgICAg
YnJlYWtwb2ludC5kaXNhYmxlZCA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICB9Owor
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZWRpdGFibGUgJiYgYnJlYWtwb2ludC5hdXRvQ29u
dGludWUpIHsKKyAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3Ry
aW5nKCJDYW5jZWwgQXV0b21hdGljIENvbnRpbnVlIiksICgpID0+IHsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSAhYnJlYWtwb2ludC5hdXRvQ29udGludWU7
CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7Cisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFbmFibGUgQnJl
YWtwb2ludCIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9
ICFicmVha3BvaW50LmRpc2FibGVkOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAg
ICAgICBjb25zdCB0b2dnbGVBdXRvQ29udGludWUgPSAoKSA9PiB7Ci0gICAgICAgICAgICBicmVh
a3BvaW50LmF1dG9Db250aW51ZSA9ICFicmVha3BvaW50LmF1dG9Db250aW51ZTsKLSAgICAgICAg
fTsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZWRpdGFibGUgJiYgIWJyZWFrcG9pbnQuYXV0b0Nv
bnRpbnVlICYmICFicmVha3BvaW50LmRpc2FibGVkICYmIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5n
dGgpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlNl
dCB0byBBdXRvbWF0aWNhbGx5IENvbnRpbnVlIiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBi
cmVha3BvaW50LmF1dG9Db250aW51ZSA9ICFicmVha3BvaW50LmF1dG9Db250aW51ZTsKKyAgICAg
ICAgICAgIH0pOworICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgcmV2ZWFsT3JpZ2luYWxTb3Vy
Y2VDb2RlTG9jYXRpb24gPSAoKSA9PiB7Ci0gICAgICAgICAgICBjb25zdCBvcHRpb25zID0gewot
ICAgICAgICAgICAgICAgIGlnbm9yZU5ldHdvcmtUYWI6IHRydWUsCi0gICAgICAgICAgICAgICAg
aWdub3JlU2VhcmNoVGFiOiB0cnVlLAotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIFdJLnNo
b3dPcmlnaW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uLCBvcHRpb25zKTsKLSAgICAgICAgfTsKKyAgICAgICAgaWYgKGJyZWFrcG9p
bnQucmVtb3ZhYmxlKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJ
U3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7CisgICAgICAgICAgICAgICAgYnJl
YWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CiAKLSAgICAgICAg
aWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRFZGl0YWJsZShicmVha3BvaW50KSkK
LSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkVkaXQgQnJl
YWtwb2ludFx1MjAyNiIpLCBlZGl0QnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9p
bnQuYXV0b0NvbnRpbnVlICYmICFicmVha3BvaW50LmRpc2FibGVkKSB7Ci0gICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwg
dG9nZ2xlQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJ
LlVJU3RyaW5nKCJDYW5jZWwgQXV0b21hdGljIENvbnRpbnVlIiksIHRvZ2dsZUF1dG9Db250aW51
ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAg
ICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQi
KSwgdG9nZ2xlQnJlYWtwb2ludCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IiksIHRvZ2dsZUJy
ZWFrcG9pbnQpOwotCi0gICAgICAgIGlmICghYnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJy
ZWFrcG9pbnQuZGlzYWJsZWQgJiYgYnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCkKLSAgICAgICAg
ICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlNldCB0byBBdXRvbWF0aWNh
bGx5IENvbnRpbnVlIiksIHRvZ2dsZUF1dG9Db250aW51ZSk7Ci0KLSAgICAgICAgaWYgKFdJLmRl
YnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkpCi0gICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2lu
dCIpLCByZW1vdmVCcmVha3BvaW50KTsKLQotICAgICAgICBpZiAoYnJlYWtwb2ludC5fc291cmNl
Q29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCAmJiBicmVha3BvaW50LnNvdXJj
ZUNvZGVMb2NhdGlvbi5oYXNNYXBwZWRMb2NhdGlvbigpKSB7CiAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJjZSIpLCByZXZlYWxPcmln
aW5hbFNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdJLlVJU3RyaW5nKCJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiKSwgKCkgPT4gewor
ICAgICAgICAgICAgICAgIGNvbnN0IG9wdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgICAgIGln
bm9yZU5ldHdvcmtUYWI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgIGlnbm9yZVNlYXJjaFRh
YjogdHJ1ZSwKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgIFdJLnNob3dPcmln
aW5hbE9yRm9ybWF0dGVkU291cmNlQ29kZUxvY2F0aW9uKGJyZWFrcG9pbnQuc291cmNlQ29kZUxv
Y2F0aW9uLCBvcHRpb25zKTsKKyAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQogCkBA
IC0xMjQsNyArMTIzLDIyIEBAIFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciA9IGNsYXNz
IEJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciBleHRlbmRzIFdJLk9iCiAgICAgICAgIGxldCBj
aGVja2JveExhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGFiZWwiKTsKICAgICAgICAg
Y2hlY2tib3hMYWJlbC5jbGFzc05hbWUgPSAidG9nZ2xlIjsKICAgICAgICAgY2hlY2tib3hMYWJl
bC5hcHBlbmRDaGlsZChjaGVja2JveEVsZW1lbnQpOwotICAgICAgICBjaGVja2JveExhYmVsLmFw
cGVuZCh0aGlzLl9icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5TG9jYXRpb25T
dHJpbmcoKSk7CisgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQpCisgICAgICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZCh0aGlz
Ll9icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5TG9jYXRpb25TdHJpbmcoKSk7
CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2JyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5FdmVudEJy
ZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGxldCBkaXNwbGF5TmFtZTsKKyAgICAgICAgICAgIGlm
IChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVz
QnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJB
bGwgQW5pbWF0aW9uIEZyYW1lcyIpOworICAgICAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludCA9
PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAg
ICAgICAgICAgZGlzcGxheU5hbWUgPSBXSS5VSVN0cmluZygiQWxsIEludGVydmFscyIpOworICAg
ICAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgZGlzcGxheU5hbWUgPSBXSS5V
SVN0cmluZygiQWxsIEV2ZW50cyIpOworICAgICAgICAgICAgZWxzZSBpZiAoYnJlYWtwb2ludCA9
PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJBbGwgVGltZW91dHMiKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IGJyZWFrcG9pbnQuZXZl
bnROYW1lOworICAgICAgICAgICAgY2hlY2tib3hMYWJlbC5hcHBlbmRDaGlsZChkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShkaXNwbGF5TmFtZSkpOworICAgICAgICB9CiAKICAgICAgICAgbGV0IHRh
YmxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgidGFibGUiKTsKIApAQCAtMTc2LDcgKzE5MCw3
IEBAIFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlciA9IGNsYXNzIEJyZWFrcG9pbnRQb3Bv
dmVyQ29udHJvbGxlciBleHRlbmRzIFdJLk9iCiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5w
dXQuaWQgPSAiZWRpdC1icmVha3BvaW50LXBvcG92ZXItaWdub3JlIjsKICAgICAgICAgdGhpcy5f
aWdub3JlQ291bnRJbnB1dC50eXBlID0gIm51bWJlciI7CiAgICAgICAgIHRoaXMuX2lnbm9yZUNv
dW50SW5wdXQubWluID0gMDsKLSAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC52YWx1ZSA9
IDA7CisgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5wdXQudmFsdWUgPSBicmVha3BvaW50Lmln
bm9yZUNvdW50OwogICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0LmFkZEV2ZW50TGlzdGVu
ZXIoImNoYW5nZSIsIHRoaXMuX3BvcG92ZXJJZ25vcmVJbnB1dENoYW5nZWQuYmluZCh0aGlzKSk7
CiAKICAgICAgICAgaWdub3JlQ291bnRMYWJlbC5zZXRBdHRyaWJ1dGUoImZvciIsIHRoaXMuX2ln
bm9yZUNvdW50SW5wdXQuaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2VyLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdnZXJNYW5hZ2Vy
LmpzCmluZGV4IGQyOWNkYjg0OWJmMWM2ZjljNWY5MjkwMmRmZTIwNDA5MDdhYWE1MTguLjc5ZmY3
MzE1NTExY2IyMTQ4YWFmMWFhMTkzMmNhYjliYzVhMDE5MDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdl
ci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9ET01EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTMzLDM2ICszMywyNyBAQCBXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgdGhpcy5fZG9tQnJlYWtwb2ludEZyYW1lSWRlbnRpZmllck1hcCA9IG5ldyBNYXA7CiAK
ICAgICAgICAgdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cyA9IFtdOworICAgICAgICB0aGlzLl9h
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsSW50
ZXJ2YWxzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFr
cG9pbnQgPSBudWxsOworICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBudWxs
OworCiAgICAgICAgIHRoaXMuX3VybEJyZWFrcG9pbnRzID0gW107CiAKLSAgICAgICAgdGhpcy5f
YWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRp
bmcoImJyZWFrLW9uLWFsbC1hbmltYXRpb24tZnJhbWVzIiwgZmFsc2UpOwotICAgICAgICB0aGlz
Ll9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZSwgewotICAgICAgICAgICAgZGlz
YWJsZWQ6ICF0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcu
dmFsdWUsCi0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9p
bnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtaW50ZXJ2YWxz
IiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbmV3IFdJ
LkV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCwgewotICAg
ICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50RW5hYmxlZFNl
dHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0Jy
ZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtbGlz
dGVuZXJzIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0g
bmV3IFdJLkV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwg
ewotICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50RW5h
YmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotCi0gICAgICAgIHRoaXMuX2FsbFRpbWVv
dXRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFs
bC10aW1lb3V0cyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50
ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0
LCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludEVu
YWJsZWRTZXR0aW5nLnZhbHVlLAotICAgICAgICB9KTsKLQogICAgICAgICB0aGlzLl9hbGxSZXF1
ZXN0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1h
bGwtcmVxdWVzdHMiLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2lu
dCA9IG5ldyBXSS5VUkxCcmVha3BvaW50KFdJLlVSTEJyZWFrcG9pbnQuVHlwZS5UZXh0LCAiIiwg
ewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnRFbmFi
bGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAKLSAgICAgICAgV0kuRE9NQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNo
YW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhp
cyk7Ci0gICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkV2ZW50
QnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRXZlbnRC
cmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwotICAgICAgICBXSS5VUkxCcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuVVJMQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0
YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlVVJMQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2Vk
LCB0aGlzKTsKKyAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRE9NQnJl
YWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKworICAgICAgICBXSS5FdmVudEJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3Rh
dGVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFu
Z2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50
QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZl
bnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVD
b3VudERpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0
eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5faGFu
ZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAg
ICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LkFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFu
Z2VkLCB0aGlzKTsKKworICAgICAgICBXSS5VUkxCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVV
UkxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCiAgICAgICAgIFdJLmRv
bU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVSZW1vdmVk
LCB0aGlzLl9ub2RlUmVtb3ZlZCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbU1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXSS5ET01NYW5hZ2VyLkV2ZW50Lk5vZGVJbnNlcnRlZCwgdGhpcy5fbm9kZUlu
c2VydGVkLCB0aGlzKTsKQEAgLTc4LDcgKzY5LDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0g
Y2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAg
ICAgICAgIGxldCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50cyA9IFdJLlNldHRpbmcubWln
cmF0ZVZhbHVlKGtleSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1NlcmlhbGl6
ZWRCcmVha3BvaW50cykgewogICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgZXhpc3Rp
bmdTZXJpYWxpemVkQnJlYWtwb2ludCBvZiBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50cykK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBvYmplY3RTdG9yZS5wdXRPYmplY3Qo
Y29uc3RydWN0b3IuZGVzZXJpYWxpemUoZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludCkpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG9iamVjdFN0b3JlLnB1dE9iamVjdChj
b25zdHJ1Y3Rvci5mcm9tSlNPTihleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKQEAgLTg2LDcgKzc3LDcgQEAg
V0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICAgICAgICAgICAgICB0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyA9
IHRydWU7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgc2VyaWFsaXplZEJyZWFrcG9pbnQgb2Yg
c2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gY29uc3RydWN0b3IuZGVzZXJpYWxpemUoc2VyaWFsaXplZEJyZWFrcG9pbnQpOworICAg
ICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGNvbnN0cnVjdG9yLmZyb21KU09OKHNl
cmlhbGl6ZWRCcmVha3BvaW50KTsKIAogICAgICAgICAgICAgICAgICAgICBjb25zdCBrZXkgPSBu
dWxsOwogICAgICAgICAgICAgICAgICAgICBvYmplY3RTdG9yZS5hc3NvY2lhdGVPYmplY3QoYnJl
YWtwb2ludCwga2V5LCBzZXJpYWxpemVkQnJlYWtwb2ludCk7CkBAIC0xMDUsNDIgKzk2LDIxIEBA
IFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogCiAgICAgICAgIGlmIChET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVu
dEJyZWFrcG9pbnRzKCkgfHwgRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnRzKCkpIHsKICAgICAgICAgICAgIGxvYWRCcmVha3BvaW50cyhXSS5FdmVudEJy
ZWFrcG9pbnQsIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLCBbImV2ZW50LWJyZWFr
cG9pbnRzIl0sIChicmVha3BvaW50KSA9PiB7Ci0gICAgICAgICAgICAgICAgLy8gTWlncmF0ZSBg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lYCwgYHNldFRpbWVvdXRgLCBhbmQgYHNldEludGVydmFsYCBn
bG9iYWwgYnJlYWtwb2ludHMuCi0gICAgICAgICAgICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5
cGUpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1h
dGlvbkZyYW1lOgotICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50LmRpc2FibGVkID0gYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52
YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3Muc2hvd0FsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQudmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAg
ICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgV0kub2Jq
ZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFrcG9pbnQpOwotICAg
ICAgICAgICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgICAgICAgICBjYXNlIFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLlRpbWVyOgotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyZWFr
cG9pbnQuZXZlbnROYW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgInNldFRpbWVvdXQi
OgotICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LmRp
c2FibGVkID0gYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICghV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52YWx1ZSkgewotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFdJLnNldHRpbmdzLnNob3dBbGxUaW1lb3V0c0JyZWFrcG9p
bnQudmFsdWUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZl
bnRCcmVha3BvaW50KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAg
ICAgICAgICAgICBjYXNlICJzZXRJbnRlcnZhbCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0
aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LmRpc2FibGVkID0gYnJlYWtwb2ludC5kaXNhYmxl
ZDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICghV0kuc2V0dGluZ3Muc2hvd0FsbEludGVy
dmFsc0JyZWFrcG9pbnQudmFsdWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSS5z
ZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsSW50
ZXJ2YWxzQnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAg
ICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChi
cmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAg
IH0KLQogICAgICAgICAgICAgICAgIHRoaXMuYWRkRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBsb2FkTGVnYWN5R2xvYmFsRXZl
bnRCcmVha3BvaW50ID0gKHR5cGUsIHNob3duU2V0dGluZ3NLZXksIGVuYWJsZWRTZXR0aW5nc0tl
eSkgPT4geworICAgICAgICAgICAgICAgIGlmICghV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoc2hv
d25TZXR0aW5nc0tleSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAg
ICAgICAgIHJldHVybiBuZXcgV0kuRXZlbnRCcmVha3BvaW50KHR5cGUsIHsKKyAgICAgICAgICAg
ICAgICAgICAgZGlzYWJsZWQ6ICFXSS5TZXR0aW5nLm1pZ3JhdGVWYWx1ZShlbmFibGVkU2V0dGlu
Z3NLZXkpLAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAg
IHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPz89IGxvYWRMZWdhY3lHbG9iYWxF
dmVudEJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUsICJz
aG93LWFsbC1hbmltYXRpb24tZnJhbWVzLWJyZWFrcG9pbnQiLCAiYnJlYWstb24tYWxsLWFuaW1h
dGlvbi1mcmFtZXMiKTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQg
Pz89IGxvYWRMZWdhY3lHbG9iYWxFdmVudEJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuSW50ZXJ2YWwsICJzaG93LWFsbC1pbnRldmVyYWxzLWJyZWFrcG9pbnQiLCAiYnJlYWstb24t
YWxsLWludGVydmFscyIpOworICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5MaXN0ZW5lciwgInNob3ctYWxsLWxpc3RlbmVycy1icmVha3BvaW50IiwgImJyZWFrLW9u
LWFsbC1saXN0ZW5lcnMiKTsKKyAgICAgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2lu
dCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQu
VHlwZS5UaW1lb3V0LCAic2hvdy1hbGwtdGltZW91dHMtYnJlYWtwb2ludCIsICJicmVhay1vbi1h
bGwtdGltZW91dHMiKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChET01EZWJ1Z2dlck1hbmFn
ZXIuc3VwcG9ydHNVUkxCcmVha3BvaW50cygpIHx8IERPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0
c1hIUkJyZWFrcG9pbnRzKCkpIHsKQEAgLTE2MCwyNCArMTMwLDI0IEBAIFdJLkRPTURlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgaWYgKHRhcmdldCA9PT0gV0kuYXNzdW1pbmdNYWluVGFyZ2V0KCkgJiYgdGFyZ2V0
Lm1haW5SZXNvdXJjZSkKICAgICAgICAgICAgICAgICB0aGlzLl9zcGVjdWxhdGl2ZWx5UmVzb2x2
ZURPTUJyZWFrcG9pbnRzRm9yVVJMKHRhcmdldC5tYWluUmVzb3VyY2UudXJsKTsKIAotICAgICAg
ICAgICAgaWYgKCF0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LmRpc2FibGVkKQot
ICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxBbmlt
YXRpb25GcmFtZXNCcmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgaWYgKHRoaXMuX2Fs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RXZl
bnRCcmVha3BvaW50KHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRhcmdldCk7
CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludC5kaXNhYmxl
ZCkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxJ
bnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX3NldEV2ZW50QnJlYWtw
b2ludCh0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCB0YXJnZXQpOwogCi0gICAgICAgICAg
ICBpZiAoIXRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbExpc3RlbmVyc0JyZWFr
cG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICBpZiAodGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtw
b2ludCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxs
TGlzdGVuZXJzQnJlYWtwb2ludCwgdGFyZ2V0KTsKIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9h
bGxUaW1lb3V0c0JyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBk
YXRlRXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwgdGFyZ2V0KTsK
KyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAg
ICAgICAgdGhpcy5fc2V0RXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2lu
dCwgdGFyZ2V0KTsKIAogICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9p
bnQuZGlzYWJsZWQpCiAgICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlVVJMQnJlYWtwb2ludCh0
aGlzLl9hbGxSZXF1ZXN0c0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKICAgICAgICAgICAgIGZvciAo
bGV0IGJyZWFrcG9pbnQgb2YgdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cykgewogICAgICAgICAg
ICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICAgICAgdGhp
cy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAg
ICAgICAgICAgIHRoaXMuX3NldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRoaXMu
X3VybEJyZWFrcG9pbnRzKSB7CkBAIC0yNzAsMTUgKzI0MCw2IEBAIFdJLkRPTURlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIGdl
dCBsaXN0ZW5lckJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50
czsgfQogICAgIGdldCB1cmxCcmVha3BvaW50cygpIHsgcmV0dXJuIHRoaXMuX3VybEJyZWFrcG9p
bnRzOyB9CiAKLSAgICBpc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpCi0gICAgewotICAg
ICAgICByZXR1cm4gYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTGlzdGVuZXJz
QnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsVGltZW91
dHNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxSZXF1
ZXN0c0JyZWFrcG9pbnQ7Ci0gICAgfQotCiAgICAgZG9tQnJlYWtwb2ludHNGb3JOb2RlKG5vZGUp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChub2RlIGluc3RhbmNlb2YgV0kuRE9NTm9k
ZSk7CkBAIC0zMTksNyArMjgwLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9N
RGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJlYWtwb2lu
dCB8fCAhYnJlYWtwb2ludC51cmwpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJl
YWtwb2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRkZWQsIHticmVh
a3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0MSw3ICszMDIs
NyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkp
IHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICBicmVha3Bv
aW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwg
e2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4MywyNCArMzQ0LDQ0IEBA
IFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50
KSkgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwot
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3Bv
aW50Lmdsb2JhbCwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5
cGUpIHsKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFt
ZToKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50LCB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCBicmVha3BvaW50
KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBicmVh
a3BvaW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5JbnRlcnZhbDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9h
bGxJbnRlcnZhbHNCcmVha3BvaW50LCB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBicmVh
a3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBicmVh
a3BvaW50OworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5MaXN0ZW5lcjoKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TmFt
ZSkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmZpbmQo
KGV4aXN0aW5nKSA9PiBleGlzdGluZy5ldmVudE5hbWUgPT09IGJyZWFrcG9pbnQuZXZlbnROYW1l
KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgICAgICAgICAg
dGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCwgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7
CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IGJyZWFrcG9p
bnQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ6CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCghdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9p
bnQsIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50
ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlw
ZS5MaXN0ZW5lciwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQuZXZlbnROYW1lLCBicmVha3BvaW50KTsKLQotICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJC
cmVha3BvaW50cy5maW5kKChleGlzdGluZykgPT4gZXhpc3RpbmcuZXZlbnROYW1lID09PSBicmVh
a3BvaW50LmV2ZW50TmFtZSkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAg
dGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5wdXNoKGJyZWFrcG9pbnQpOworICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuRXZlbnRCcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAKICAgICAgICAgaWYg
KCFicmVha3BvaW50LmRpc2FibGVkKSB7CiAgICAgICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2Yg
V0kudGFyZ2V0cykKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAgICAgICAgfQogCiAgICAgICAgIGlmICghdGhp
cy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCkBAIC00MTUsMzggKzM5Niw0NiBAQCBXSS5ET01EZWJ1
Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAg
IGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKLSAgICAgICAgICAg
IGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2lu
dFJlbW92ZWQsIHticmVha3BvaW50fSk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8v
IERpc2FibGUgdGhlIGJyZWFrcG9pbnQgZmlyc3QsIHNvIHJlbW92aW5nIGFjdGlvbnMgZG9lc24n
dCByZS1hZGQgdGhlIGJyZWFrcG9pbnQuCisgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0
cnVlOworICAgICAgICBicmVha3BvaW50LmNsZWFyQWN0aW9ucygpOworCisgICAgICAgIHN3aXRj
aCAoYnJlYWtwb2ludC50eXBlKSB7CisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuQW5pbWF0aW9uRnJhbWU6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxB
bmltYXRpb25GcmFtZXNCcmVha3BvaW50LCB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBu
dWxsOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9p
bnQuVHlwZS5JbnRlcnZhbDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbElu
dGVydmFsc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQpOworICAgICAg
ICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICBi
cmVhazsKKworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyOgor
ICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnROYW1lKSB7CisgICAgICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3Bv
aW50KSwgYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9saXN0ZW5lckJy
ZWFrcG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9pbnQpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLnJlbW92ZShi
cmVha3BvaW50KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgdGhpcy5fYWxsTGlzdGVuZXJz
QnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dCA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBj
YXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ6CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydCh0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIHRoaXMuX2FsbFRpbWVvdXRzQnJl
YWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQgPSBudWxs
OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zb2xlLmFzc2Vy
dChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBi
cmVha3BvaW50KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5ldmVudE5hbWUs
IGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2xpc3RlbmVyQnJl
YWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCksIGJyZWFrcG9pbnQpOwotICAgICAgICBpZiAo
IXRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCkpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5yZW1vdmUo
YnJlYWtwb2ludCk7Ci0KICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykK
ICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmRlbGV0ZU9iamVj
dChicmVha3BvaW50KTsKIAorICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlUHJvYmVz
Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZlbnRCcmVha3BvaW50UmVt
b3ZlZCwge2JyZWFrcG9pbnR9KTsKLQotICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkK
LSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFy
Z2V0cykgewotICAgICAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyKTogRE9NRGVidWdn
ZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCi0gICAgICAgICAgICBpZiAo
dGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCIpKQot
ICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50QnJlYWtw
b2ludChicmVha3BvaW50LnR5cGUsIGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKLSAgICAgICAgICAg
IGVsc2UgaWYgKHRhcmdldC5oYXNDb21tYW5kKCJET01EZWJ1Z2dlci5yZW1vdmVFdmVudExpc3Rl
bmVyQnJlYWtwb2ludCIpKSB7Ci0gICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtw
b2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7Ci0gICAgICAg
ICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9CiAg
ICAgfQogCiAgICAgdXJsQnJlYWtwb2ludEZvclVSTCh1cmwpCkBAIC00NjAsNyArNDQ5LDcgQEAg
V0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQp
KSB7CisgICAgICAgIGlmIChicmVha3BvaW50Lmdsb2JhbCkgewogICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlVSTEJy
ZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CkBAIC00OTMsNyArNDgyLDcgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJl
YWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFr
cG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50Lmdsb2Jh
bCkgewogICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuVVJMQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1
cm47CkBAIC02MzIsMjkgKzYyMSw4IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERP
TURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB9CiAgICAgfQogCi0g
ICAgX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCisgICAgX2NvbW1h
bmRBcmd1bWVudHNGb3JFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAg
IC8vIFdvcmtlciB0YXJnZXRzIGRvIG5vdCBzdXBwb3J0IGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVg
IGJyZWFrcG9pbnRzLgotICAgICAgICBpZiAoYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludCAmJiB0YXJnZXQudHlwZSA9PT0gV0kuVGFyZ2V0VHlwZS5Xb3Jr
ZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9T
IDEyKTogRE9NRGVidWdnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCi0g
ICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIuc2V0RXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnQiKSAmJiB0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3ZlRXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnQiKSkgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7Ci0gICAg
ICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50
LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoIXRo
aXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2lu
dHNEaXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIHRhcmdl
dC5ET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQu
ZXZlbnROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNldEV2ZW50
QnJlYWtwb2ludCIpIHx8ICF0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3ZlRXZl
bnRCcmVha3BvaW50IikpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAgICAgICAgbGV0IGNvbW1h
bmRBcmd1bWVudHMgPSB7fTsKIAogICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsKQEAgLTY5
NiwxNiArNjY0LDYwIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zdCBjYWxsYmFjayA9IG51bGw7CisgICAgICAgIHJldHVybiBjb21tYW5k
QXJndW1lbnRzOworICAgIH0KKworICAgIF9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
dGFyZ2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9pbnQuZGlzYWJs
ZWQsIGJyZWFrcG9pbnQpOworCisgICAgICAgIC8vIFdvcmtlciB0YXJnZXRzIGRvIG5vdCBzdXBw
b3J0IGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIGJyZWFrcG9pbnRzLgorICAgICAgICBpZiAoYnJl
YWtwb2ludCA9PT0gdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCAmJiB0YXJnZXQu
dHlwZSA9PT0gV0kuVGFyZ2V0VHlwZS5Xb3JrZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyKTogRE9NRGVidWdnZXIuc2V0RXZlbnRCcmVh
a3BvaW50IGRpZCBub3QgZXhpc3QuCisgICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9N
RGVidWdnZXIuc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQiKSkgeworICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5M
aXN0ZW5lcik7CiAKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAg
ICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFrcG9pbnQuaW52b2tlKGNv
bW1hbmRBcmd1bWVudHMsIGNhbGxiYWNrKTsKLSAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBp
ZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJl
YWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQogICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCi0gICAgICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudEJyZWFrcG9pbnQuaW52b2tlKGNvbW1hbmRBcmd1bWVu
dHMsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldEV2
ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIkRP
TURlYnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCIpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRzID0gdGhpcy5fY29tbWFuZEFyZ3VtZW50c0ZvckV2
ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKKworICAgICAgICBpZiAoIXRoaXMuX3Jlc3Rvcmlu
Z0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNEaXNhYmxlZFRl
bXBvcmFyaWx5KQorICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5h
YmxlZCA9IHRydWU7CisKKyAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5vcHRpb25zID0gYnJlYWtw
b2ludC5vcHRpb25zVG9Qcm90b2NvbCgpOworCisgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFn
ZW50LnNldEV2ZW50QnJlYWtwb2ludC5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7CisgICAgfQor
CisgICAgX3JlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCisgICAgewor
ICAgICAgICAvLyBXb3JrZXIgdGFyZ2V0cyBkbyBub3Qgc3VwcG9ydCBgcmVxdWVzdEFuaW1hdGlv
bkZyYW1lYCBicmVha3BvaW50cy4KKyAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IHRoaXMuX2Fs
bEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgJiYgdGFyZ2V0LnR5cGUgPT09IFdJLlRhcmdldFR5
cGUuV29ya2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIC8vIENPTVBBVElCSUxJ
VFkgKGlPUyAxMik6IERPTURlYnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGV4
aXN0LgorICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpOworICAg
ICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFr
cG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3Zl
RXZlbnRCcmVha3BvaW50IikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IGNv
bW1hbmRBcmd1bWVudHMgPSB0aGlzLl9jb21tYW5kQXJndW1lbnRzRm9yRXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworCisgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2
ZW50QnJlYWtwb2ludC5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7CiAgICAgfQogCiAgICAgX3Vw
ZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQpAQCAtNzU3LDMxICs3NjksNTEg
QEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMp
Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFy
Z2V0KTsKLQotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsKLSAgICAgICAgY2FzZSB0aGlz
Ll9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAgICAgICAgICAgdGhpcy5fYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQu
ZGlzYWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSB0aGlzLl9hbGxJ
bnRlcnZhbHNCcmVha3BvaW50OgotICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50
OgotICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5n
LnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgY2FzZSB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICB0aGlz
Ll9hbGxUaW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50
LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBmb3IgKGxldCB0YXJnZXQg
b2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCisg
ICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRh
cmdldCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RXZlbnRC
cmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAo
IXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVz
LmV2ZW50QnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwogICAgIH0KIAorICAgIF9o
YW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCkKKyAgICB7
CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIC8vIFNw
ZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBET01NYW5h
Z2VyYC4KKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQorICAg
ICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFr
cG9pbnQpOworCisgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CisgICAg
ICAgICAgICAvLyBDbGVhciB0aGUgb2xkIGJyZWFrcG9pbnQgZnJvbSB0aGUgYmFja2VuZCBiZWZv
cmUgc2V0dGluZyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgIHRoaXMuX3JlbW92ZUV2ZW50QnJl
YWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCisgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIF9o
YW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAg
IGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAgICAgIC8vIFNwZWNpZmljIGV2
ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBET01NYW5hZ2VyYC4KKyAg
ICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hh
bmdlZChldmVudCk7CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVwZGF0ZVByb2Jlc0Zv
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgfQorCiAgICAgX2hhbmRsZVVSTEJyZWFrcG9p
bnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gZXZlbnQudGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKaW5kZXggNmYyOTc4
ZDk0NGY2M2Y0ZDlkM2UxZjNhYjQxMjIxYzEzZDk2M2IxMy4uZmY3ZTIxMTczMmU0ZDNjMTNkZWJh
NjU0YTUyYjZmZmRjYWEzZWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpzCkBAIC01MCw3
ICs1MCwxMSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1bWVudCA9IGZhbHNlOwogICAgICAg
ICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0gbnVsbDsKIAotICAgICAg
ICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5FdmVudEJyZWFrcG9pbnQu
RXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludERp
c2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdl
LCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRF
ZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFu
Z2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0
aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJl
YWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJl
YWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRC
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlk
Q2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZCwgdGhpcyk7
CiAKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5GcmFtZS5FdmVudC5NYWlu
UmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcyk7CiAg
ICAgfQpAQCAtMTI2LDYgKzEzMCwxMiBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgJiYgSW5zcGVjdG9yQmFja2VuZC5oYXND
b21tYW5kKCJET00ucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIiKTsKICAgICB9CiAK
KyAgICBzdGF0aWMgc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludENvbmZpZ3VyYXRpb24o
KQorICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0KTogRE9NLnNldEJyZWFr
cG9pbnRGb3JFdmVudExpc3RlbmVyIGRpZCBub3QgaGF2ZSBhbiAib3B0aW9ucyIgcGFyYW1ldGVy
IHlldC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9NLnNl
dEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIiwgIm9wdGlvbnMiKTsKKyAgICB9CisKICAgICBz
dGF0aWMgc3VwcG9ydHNFZGl0aW5nVXNlckFnZW50U2hhZG93VHJlZXMoe2Zyb250ZW5kT25seSwg
dGFyZ2V0fSA9IHt9KQogICAgIHsKICAgICAgICAgdGFyZ2V0ID0gdGFyZ2V0IHx8IEluc3BlY3Rv
ckJhY2tlbmQ7CkBAIC02NjQsOSArNjc0LDExIEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01N
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJ
LnRhcmdldHMpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzRG9tYWluKCJET00iKSkKLSAg
ICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFy
Z2V0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCwgdGFyZ2V0KTsKICAgICAgICAgfQogCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRQ
cm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAgICAgIFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KIApAQCAtNjgw
LDYgKzY5MiwxMiBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgICAgIHRhcmdldC5ET01BZ2VudC5yZW1vdmVCcmVha3BvaW50
Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCk7CiAgICAgICAg
IH0KIAorICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1vdmlu
ZyBhY3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50LgorICAgICAgICBicmVha3Bv
aW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMoKTsK
KworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChi
cmVha3BvaW50KTsKKwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRS
ZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KIApAQCAtNjk5LDE5ICs3MTcsMjggQEAgV0ku
RE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8v
IFByaXZhdGUKIAotICAgIF91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0
KQorICAgIF9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQorICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9pbnQuZGlzYWJsZWQsIGJyZWFrcG9pbnQpOwor
CisgICAgICAgIGxldCBldmVudExpc3RlbmVyID0gYnJlYWtwb2ludC5ldmVudExpc3RlbmVyOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChldmVudExpc3RlbmVyKTsKKworICAgICAgICAgICAgaWYg
KCFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQorICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVl
OworCisgICAgICAgIHRhcmdldC5ET01BZ2VudC5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
ci5pbnZva2UoeworICAgICAgICAgICAgZXZlbnRMaXN0ZW5lcklkOiBldmVudExpc3RlbmVyLmV2
ZW50TGlzdGVuZXJJZCwKKyAgICAgICAgICAgIG9wdGlvbnM6IGJyZWFrcG9pbnQub3B0aW9uc1Rv
UHJvdG9jb2woKSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX3JlbW92ZUV2ZW50QnJlYWtw
b2ludChicmVha3BvaW50LCB0YXJnZXQpCiAgICAgewogICAgICAgICBsZXQgZXZlbnRMaXN0ZW5l
ciA9IGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcjsKICAgICAgICAgY29uc29sZS5hc3NlcnQoZXZl
bnRMaXN0ZW5lcik7CiAKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAg
ICAgICB0YXJnZXQuRE9NQWdlbnQucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoZXZl
bnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAg
IGlmICghV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkK
LSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0g
dHJ1ZTsKLQotICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNldEJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKLSAgICAgICAgfQorICAg
ICAgICB0YXJnZXQuRE9NQWdlbnQucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoZXZl
bnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOwogICAgIH0KIAogICAgIF9oYW5kbGVFdmVudEJy
ZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkKQEAgLTcyMywxMSArNzUwLDQ3IEBA
IFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMp
IHsKLSAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzRG9tYWluKCJET00iKSkKLSAgICAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAg
ICAgICAgICAgIGlmICghdGFyZ2V0Lmhhc0RvbWFpbigiRE9NIikpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQorICAgICAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuX3NldEV2ZW50QnJlYWtw
b2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB9CiAgICAgfQogCisgICAgX2hhbmRs
ZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAg
ICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8gTm9uLXNw
ZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBET01EZWJ1
Z2dlck1hbmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0
cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIG9sZCBicmVha3BvaW50IGZyb20gdGhlIGJh
Y2tlbmQgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyBvbmUuCisgICAgICAgICAgICB0aGlzLl9yZW1v
dmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIHRoaXMu
X3NldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICB9CisgICAg
fQorCisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKGV2ZW50KQorICAg
IHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAgICAgICAgLy8g
Tm9uLXNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBE
T01EZWJ1Z2dlck1hbmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5l
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9oYW5kbGVFdmVudEJyZWFr
cG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCk7CisKKyAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgfQor
CiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7CiAgICAgICAgIGlmICgh
ZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFn
ZXIuanMKaW5kZXggYjQ5YmU1MGFiYTMzYzVlOWIyOGFjNjVhN2Q4MTI5OGE4Y2U4ZmY1Ny4uOTk5
MDI4YzJlY2NhM2E0ZjY5NzY2ZDFkOTA2Yzc5Yzc2OWM5NjgwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5hZ2Vy
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMjksMTIgKzI5LDEyIEBAIFdJLkRlYnVnZ2VyTWFuYWdl
ciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgIHsKICAgICAg
ICAgc3VwZXIoKTsKIAotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9p
bnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hh
bmdlLCB0aGlzLl9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7Ci0gICAg
ICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNv
bmRpdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFu
Z2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJl
YWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRh
YmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRo
aXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAg
V0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9u
c0RpZENoYW5nZSwgdGhpcy5faGFuZGxlQnJlYWtwb2ludEFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMp
OworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERp
c2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hh
bmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxl
UHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hh
bmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVCcmVha3BvaW50QWN0aW9u
c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9u
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlz
KTsKIAogICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UaW1l
bGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVUaW1l
bGluZUNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTU2LDMxICs1NiwzMSBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgY29uc3Qgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiA9IG5ldyBXSS5Tb3Vy
Y2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIEluZmluaXR5KTsKIAogICAgICAgICB0aGlz
Ll9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0
dGluZygiYnJlYWstb24tZGVidWdnZXItc3RhdGVtZW50cyIsIHRydWUpOwotICAgICAgICB0aGlz
Ll9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc3BlY2lh
bEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNC
cmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50
TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fZGVidWdnZXJTdGF0ZW1l
bnRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAogICAgICAgICB9KTsKICAgICAgICAg
dGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAKICAg
ICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBX
SS5TZXR0aW5nKCJicmVhay1vbi1hbGwtZXhjZXB0aW9ucyIsIGZhbHNlKTsKLSAgICAgICAgdGhp
cy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChzcGVjaWFsQnJl
YWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50
ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24s
IHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2FsbEV4Y2Vw
dGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKIAogICAgICAgICB0aGlzLl91bmNhdWdo
dEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJl
YWstb24tdW5jYXVnaHQtZXhjZXB0aW9ucyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5fdW5jYXVn
aHRFeGNlcHRpb25zQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KHNwZWNpYWxCcmVha3Bv
aW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2lu
dCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9u
LCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFr
cG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX3Vu
Y2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVlOwogCiAgICAgICAgIHRo
aXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNl
dHRpbmcoImJyZWFrLW9uLWFzc2VydGlvbi1mYWlsdXJlcyIsIGZhbHNlKTsKLSAgICAgICAgdGhp
cy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc3BlY2lh
bEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRM
b2NhdGlvbiwgewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9hc3NlcnRpb25GYWlsdXJl
c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRo
aXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAKICAgICAg
ICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZyA9IG5ldyBXSS5T
ZXR0aW5nKCJicmVhay1vbi1hbGwtbWljcm90YXNrcyIsIGZhbHNlKTsKLSAgICAgICAgdGhpcy5f
YWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChzcGVjaWFsQnJlYWtw
b2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0g
bmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsK
ICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFi
bGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFz
a3NCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKQEAgLTEyNiwxNCArMTI2LDE0IEBAIFdJLkRl
YnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0kuU2V0dGlu
Zy5taWdyYXRlVmFsdWUoImJyZWFrcG9pbnRzIik7CiAgICAgICAgICAgICBpZiAoZXhpc3RpbmdT
ZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGlu
Z1NlcmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKQot
ICAgICAgICAgICAgICAgICAgICBhd2FpdCBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMucHV0
T2JqZWN0KFdJLkJyZWFrcG9pbnQuZnJvbUpTT04oZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2lu
dCkpOworICAgICAgICAgICAgICAgICAgICBhd2FpdCBXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2lu
dHMucHV0T2JqZWN0KFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZyb21KU09OKGV4aXN0aW5nU2Vy
aWFsaXplZEJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbGV0IHNl
cmlhbGl6ZWRCcmVha3BvaW50cyA9IGF3YWl0IFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5n
ZXRBbGwoKTsKIAogICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMgPSB0cnVl
OwogICAgICAgICAgICAgZm9yIChsZXQgc2VyaWFsaXplZEJyZWFrcG9pbnQgb2Ygc2VyaWFsaXpl
ZEJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5CcmVh
a3BvaW50LmZyb21KU09OKHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZyb21KU09OKHNlcmlhbGl6
ZWRCcmVha3BvaW50KTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGtleSA9IG51bGw7CiAgICAg
ICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmFzc29jaWF0ZU9iamVjdChi
cmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAgLTM0MiwyNSArMzQyLDYg
QEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0ku
T2JqZWN0CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAgIGlzQnJlYWtwb2ludFJl
bW92YWJsZShicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQgIT09
IHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQKLSAgICAgICAgICAgICYmIGJyZWFr
cG9pbnQgIT09IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50Ci0gICAgICAgICAgICAmJiBi
cmVha3BvaW50ICE9PSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50OwotICAgIH0K
LQotICAgIGlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIHJl
dHVybiAhdGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkKLSAgICAgICAgICAg
IHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludAotICAg
ICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQ7
Ci0gICAgfQotCi0gICAgaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkKLSAgICB7Ci0g
ICAgICAgIHJldHVybiAhdGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpOwotICAg
IH0KLQogICAgIGdldCBicmVha3BvaW50c0VuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0dXJu
IHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWU7CkBAIC02NTksMTEgKzY0MCwx
MSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIGFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsK
KyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKSB7CiAgICAgICAgICAgICB0aGlzLmRpc3Bh
dGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFk
ZGVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02
ODIsMjIgKzY2MywyMiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3Bv
aW50cykKICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5wdXRPYmplY3Qo
YnJlYWtwb2ludCk7CiAKLSAgICAgICAgdGhpcy5fYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVh
a3BvaW50KTsKKyAgICAgICAgdGhpcy5hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAgICAgfQogCiAgICAg
cmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQpOworICAgICAgICBjb25zb2xl
LmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOwog
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQodGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkpOwot
ICAgICAgICBpZiAoIXRoaXMuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQpKQorICAg
ICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnJlbW92YWJsZSk7CisgICAgICAgIGlmICgh
YnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYg
KHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJl
YWtwb2ludC5nbG9iYWwpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVl
OwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJN
YW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAg
ICAgcmV0dXJuOwpAQCAtNzIxLDcgKzcwMiw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9p
bnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsKIAotICAgICAgICB0aGlzLl9yZW1vdmVQcm9i
ZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB0aGlzLnJlbW92ZVByb2Jlc0Zv
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9M
aXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJl
YWtwb2ludH0pOwogICAgIH0KQEAgLTczMSw2ICs3MTIsNzcgQEAgV0kuRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVy
biB0aGlzLl9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIrKzsKICAgICB9CiAKKyAgICBh
ZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCisgICAgeworICAgICAgICBpZiAodGhp
cy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMoYnJlYWtwb2ludCkpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJz
Rm9yQnJlYWtwb2ludC5zZXQoYnJlYWtwb2ludCwgbmV3IFNldCk7CisKKyAgICAgICAgdGhpcy51
cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0KKworICAgIHJlbW92
ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQuaGFzKGJyZWFr
cG9pbnQpKTsKKworICAgICAgICB0aGlzLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CisgICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9pbnQu
ZGVsZXRlKGJyZWFrcG9pbnQpOworICAgIH0KKworICAgIHVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9p
bnQoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIGxldCBrbm93blByb2JlSWRlbnRpZmllcnMg
PSB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50LmdldChicmVha3BvaW50
KTsKKyAgICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMpIHsKKyAgICAgICAgICAgIC8v
IFNvbWV0aW1lcyBhY3Rpb25zIGNoYW5nZSBiZWZvcmUgdGhlIGFkZGVkIGJyZWFrcG9pbnQgaXMg
ZnVsbHkgZGlzcGF0Y2hlZC4KKyAgICAgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJlYWtwb2lu
dChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGxldCBzZWVuUHJvYmVJZGVudGlmaWVycyA9IG5ldyBTZXQ7CisKKyAgICAgICAgZm9yIChsZXQg
cHJvYmVBY3Rpb24gb2YgYnJlYWtwb2ludC5wcm9iZUFjdGlvbnMpIHsKKyAgICAgICAgICAgIGxl
dCBwcm9iZUlkZW50aWZpZXIgPSBwcm9iZUFjdGlvbi5pZDsKKyAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHByb2JlSWRlbnRpZmllciwgIlByb2JlIGFkZGVkIHdpdGhvdXQgYnJlYWtwb2ludCBh
Y3Rpb24gaWRlbnRpZmllcjogIiwgYnJlYWtwb2ludCk7CisKKyAgICAgICAgICAgIHNlZW5Qcm9i
ZUlkZW50aWZpZXJzLmFkZChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgaWYgKCFrbm93
blByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgICAg
ICAvLyBOZXcgcHJvYmU7IGZpbmQgb3IgY3JlYXRlIHJlbGV2YW50IHByb2JlIHNldC4KKyAgICAg
ICAgICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIGxldCBuZXdQcm9iZSA9IG5ldyBXSS5Qcm9i
ZShwcm9iZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQsIHByb2JlQWN0aW9uLmRhdGEpOworICAgICAg
ICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5zZXQocHJvYmVJZGVudGlmaWVyLCBu
ZXdQcm9iZSk7CisgICAgICAgICAgICAgICAgcHJvYmVTZXQuYWRkUHJvYmUobmV3UHJvYmUpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQg
cHJvYmUgPSB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZSwgIlByb2JlIGtub3duIGJ1dCBjb3VsZG4n
dCBiZSBmb3VuZCBieSBpZGVudGlmaWVyOiAiLCBwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAg
ICAgLy8gVXBkYXRlIHByb2JlIGV4cHJlc3Npb247IGlmIGl0IGRpZmZlcmVkLCBjaGFuZ2UgZXZl
bnRzIHdpbGwgZmlyZS4KKyAgICAgICAgICAgIHByb2JlLmV4cHJlc3Npb24gPSBwcm9iZUFjdGlv
bi5kYXRhOworICAgICAgICB9CisKKyAgICAgICAgLy8gTG9vayBmb3IgbWlzc2luZyBwcm9iZXMg
YmFzZWQgb24gd2hhdCB3ZSBzYXcgbGFzdC4KKyAgICAgICAgZm9yIChsZXQgcHJvYmVJZGVudGlm
aWVyIG9mIGtub3duUHJvYmVJZGVudGlmaWVycykgeworICAgICAgICAgICAgaWYgKHNlZW5Qcm9i
ZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgIGJyZWFr
OworCisgICAgICAgICAgICAvLyBUaGUgcHJvYmUgaGFzIGdvbmUgbWlzc2luZywgcmVtb3ZlIGl0
LgorICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRGb3JCcmVha3BvaW50
KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVzQnlJZGVu
dGlmaWVyLmdldChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJ
ZGVudGlmaWVyLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAga25vd25Qcm9i
ZUlkZW50aWZpZXJzLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAgcHJvYmVT
ZXQucmVtb3ZlUHJvYmUocHJvYmUpOworCisgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIHByb2Jl
IHNldCBpZiBpdCBoYXMgYmVjb21lIGVtcHR5LgorICAgICAgICAgICAgaWYgKCFwcm9iZVNldC5w
cm9iZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJvYmVTZXRzQnlCcmVha3Bv
aW50LmRlbGV0ZShwcm9iZVNldC5icmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBwcm9iZVNl
dC53aWxsUmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVtb3ZlZCwge3Byb2JlU2V0
fSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyBEZWJ1Z2dlck9i
c2VydmVyCiAKICAgICBicmVha3BvaW50UmVzb2x2ZWQodGFyZ2V0LCBicmVha3BvaW50SWRlbnRp
ZmllciwgbG9jYXRpb24pCkBAIC05OTcsNjAgKzEwNDksNiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIg
PSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJu
IG5ldyBXSS5TY29wZUNoYWluTm9kZSh0eXBlLCBbb2JqZWN0XSwgcGF5bG9hZC5uYW1lLCBwYXls
b2FkLmxvY2F0aW9uLCBwYXlsb2FkLmVtcHR5KTsKICAgICB9CiAKLSAgICBfZGVidWdnZXJCcmVh
a3BvaW50QWN0aW9uVHlwZSh0eXBlKQotICAgIHsKLSAgICAgICAgc3dpdGNoICh0eXBlKSB7Ci0g
ICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZzoKLSAgICAgICAgICAgIHJl
dHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUu
TG9nOwotICAgICAgICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZToKLSAg
ICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2lu
dEFjdGlvblR5cGUuRXZhbHVhdGU7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5U
eXBlLlNvdW5kOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1
Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5Tb3VuZDsKLSAgICAgICAgY2FzZSBXSS5CcmVha3Bv
aW50QWN0aW9uLlR5cGUuUHJvYmU6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2Vu
ZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb25UeXBlLlByb2JlOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UpOwotICAgICAgICAgICAgcmV0
dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5M
b2c7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfZGVidWdnZXJCcmVha3BvaW50T3B0aW9ucyhi
cmVha3BvaW50KQotICAgIHsKLSAgICAgICAgbGV0IGFjdGlvbnMgPSBicmVha3BvaW50LmFjdGlv
bnM7Ci0gICAgICAgIGFjdGlvbnMgPSBhY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24udG9Q
cm90b2NvbCgpKTsKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMuZmlsdGVyKChhY3Rpb24pID0+
IHsKLSAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSAhPT0gV0kuQnJlYWtwb2ludEFjdGlvbi5U
eXBlLkxvZykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgaWYg
KCEvXCRcey4qP1x9Ly50ZXN0KGFjdGlvbi5kYXRhKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKLQotICAgICAgICAgICAgbGV0IGxleGVyID0gbmV3IFdJLkJyZWFrcG9pbnRMb2dNZXNz
YWdlTGV4ZXI7Ci0gICAgICAgICAgICBsZXQgdG9rZW5zID0gbGV4ZXIudG9rZW5pemUoYWN0aW9u
LmRhdGEpOwotICAgICAgICAgICAgaWYgKCF0b2tlbnMpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwotCi0gICAgICAgICAgICBsZXQgdGVtcGxhdGVMaXRlcmFsID0gdG9rZW5zLnJlZHVj
ZSgodGV4dCwgdG9rZW4pID0+IHsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0g
V0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuUGxhaW5UZXh0KQotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gdGV4dCArIHRva2VuLmRhdGEuZXNjYXBlQ2hhcmFjdGVycygi
YFxcIik7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRM
b2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBlLkV4cHJlc3Npb24pCi0gICAgICAgICAgICAgICAgICAg
IHJldHVybiB0ZXh0ICsgIiR7IiArIHRva2VuLmRhdGEgKyAifSI7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICB9LCAiIik7Ci0KLSAgICAgICAgICAgIGFjdGlvbi5k
YXRhID0gImNvbnNvbGUubG9nKGAiICsgdGVtcGxhdGVMaXRlcmFsICsgImApIjsKLSAgICAgICAg
ICAgIGFjdGlvbi50eXBlID0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlOwotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotCi0gICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICBjb25kaXRpb246IGJyZWFrcG9pbnQuY29uZGl0aW9uLAotICAgICAgICAgICAg
aWdub3JlQ291bnQ6IGJyZWFrcG9pbnQuaWdub3JlQ291bnQsCi0gICAgICAgICAgICBhdXRvQ29u
dGludWU6IGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlLAotICAgICAgICAgICAgYWN0aW9ucywKLSAg
ICAgICAgfTsKLSAgICB9Ci0KICAgICBfc2V0QnJlYWtwb2ludChicmVha3BvaW50LCBzcGVjaWZp
Y1RhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50LmRpc2Fi
bGVkKTsKQEAgLTEwODgsMTIgKzEwODYsNiBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBE
ZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFzcGVjaWZpY1Rh
cmdldCkKICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVzb2x2ZWQgPSBmYWxzZTsKIAotICAgICAg
ICAvLyBDb252ZXJ0IEJyZWFrcG9pbnRBY3Rpb24gdHlwZXMgdG8gRGVidWdnZXJBZ2VudCBwcm90
b2NvbCB0eXBlcy4KLSAgICAgICAgLy8gTk9URTogQnJlYWtwb2ludC5vcHRpb25zIHJldHVybnMg
bmV3IG9iamVjdHMgZWFjaCB0aW1lLCBzbyBpdCBpcyBzYWZlIHRvIG1vZGlmeS4KLSAgICAgICAg
bGV0IG9wdGlvbnMgPSB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRPcHRpb25zKGJyZWFrcG9pbnQp
OwotICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2Ygb3B0aW9ucy5hY3Rpb25zKQotICAgICAgICAg
ICAgYWN0aW9uLnR5cGUgPSB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRBY3Rpb25UeXBlKGFjdGlv
bi50eXBlKTsKLQogICAgICAgICBpZiAoYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllcikgewog
ICAgICAgICAgICAgbGV0IHRhcmdldHMgPSBzcGVjaWZpY1RhcmdldCA/IFtzcGVjaWZpY1Rhcmdl
dF0gOiBXSS50YXJnZXRzOwogICAgICAgICAgICAgZm9yIChsZXQgdGFyZ2V0IG9mIHRhcmdldHMp
IHsKQEAgLTExMDIsMTQgKzEwOTQsMTQgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgICAgIHVybDog
YnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllciwKICAgICAgICAgICAgICAgICAgICAgdXJsUmVn
ZXg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgY29sdW1uTnVtYmVyOiBicmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXIsCi0gICAgICAgICAgICAgICAgICAg
IG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25z
VG9Qcm90b2NvbCgpLAogICAgICAgICAgICAgICAgIH0sIGRpZFNldEJyZWFrcG9pbnQuYmluZCh0
aGlzLCB0YXJnZXQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChicmVha3Bv
aW50LnNjcmlwdElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGxldCB0YXJnZXQgPSBicmVha3Bv
aW50LnRhcmdldDsKICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFnZW50LnNldEJyZWFrcG9p
bnQuaW52b2tlKHsKICAgICAgICAgICAgICAgICBsb2NhdGlvbjoge3NjcmlwdElkOiBicmVha3Bv
aW50LnNjcmlwdElkZW50aWZpZXIsIGxpbmVOdW1iZXI6IGJyZWFrcG9pbnQuc291cmNlQ29kZUxv
Y2F0aW9uLmxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9j
YXRpb24uY29sdW1uTnVtYmVyfSwKLSAgICAgICAgICAgICAgICBvcHRpb25zCisgICAgICAgICAg
ICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpLAogICAgICAgICAg
ICAgfSwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMsIHRhcmdldCkpOwogICAgICAgICB9IGVs
c2UKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVua25vd24gc291cmNlIGZv
ciBicmVha3BvaW50LiIpOwpAQCAtMTIzMyw4ICsxMjI1LDggQEAgV0kuRGVidWdnZXJNYW5hZ2Vy
ID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChi
cmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpOwotICAgICAg
ICBpZiAoIXRoaXMuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2ludCkpCisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZWRpdGFibGUpOworICAgICAgICBpZiAoIWJyZWFrcG9p
bnQuZWRpdGFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgLy8gUmVtb3ZlIHRo
ZSBicmVha3BvaW50IHdpdGggaXRzIG9sZCBpZC4KQEAgLTEyNTAsNyArMTI0Miw3IEBAIFdJLkRl
YnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAog
ICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2Uo
ZXZlbnQpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoZXZlbnQu
dGFyZ2V0KTsKKyAgICAgICAgdGhpcy51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGV2ZW50LnRh
cmdldCk7CiAgICAgfQogCiAgICAgX3N0YXJ0RGlzYWJsaW5nQnJlYWtwb2ludHNUZW1wb3Jhcmls
eSgpCkBAIC0xNDEzLDc3ICsxNDA1LDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVi
dWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX2lnbm9yZUJyZWFr
cG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNlOwogICAgIH0KIAotICAg
IF9hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBpZiAo
dGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMoYnJlYWtwb2ludCkp
Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlkZW50aWZp
ZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJlYWtwb2ludCwgbmV3IFNldCk7Ci0KLSAgICAgICAgdGhp
cy5fdXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICB9Ci0KLSAgICBf
cmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMo
YnJlYWtwb2ludCkpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQo
YnJlYWtwb2ludCk7Ci0gICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFr
cG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQpOwotICAgIH0KLQotICAgIF91cGRhdGVQcm9iZXNGb3JC
cmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBsZXQga25vd25Qcm9iZUlkZW50
aWZpZXJzID0gdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5nZXQoYnJl
YWtwb2ludCk7Ci0gICAgICAgIGlmICgha25vd25Qcm9iZUlkZW50aWZpZXJzKSB7Ci0gICAgICAg
ICAgICAvLyBTb21ldGltZXMgYWN0aW9ucyBjaGFuZ2UgYmVmb3JlIHRoZSBhZGRlZCBicmVha3Bv
aW50IGlzIGZ1bGx5IGRpc3BhdGNoZWQuCi0gICAgICAgICAgICB0aGlzLl9hZGRQcm9iZXNGb3JC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0K
LSAgICAgICAgbGV0IHNlZW5Qcm9iZUlkZW50aWZpZXJzID0gbmV3IFNldDsKLQotICAgICAgICBm
b3IgKGxldCBwcm9iZUFjdGlvbiBvZiBicmVha3BvaW50LnByb2JlQWN0aW9ucykgewotICAgICAg
ICAgICAgbGV0IHByb2JlSWRlbnRpZmllciA9IHByb2JlQWN0aW9uLmlkOwotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQocHJvYmVJZGVudGlmaWVyLCAiUHJvYmUgYWRkZWQgd2l0aG91dCBicmVh
a3BvaW50IGFjdGlvbiBpZGVudGlmaWVyOiAiLCBicmVha3BvaW50KTsKLQotICAgICAgICAgICAg
c2VlblByb2JlSWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBp
ZiAoIWtub3duUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlmaWVyKSkgewotICAgICAg
ICAgICAgICAgIC8vIE5ldyBwcm9iZTsgZmluZCBvciBjcmVhdGUgcmVsZXZhbnQgcHJvYmUgc2V0
LgotICAgICAgICAgICAgICAgIGtub3duUHJvYmVJZGVudGlmaWVycy5hZGQocHJvYmVJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNldEZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgbGV0IG5ld1Byb2JlID0gbmV3
IFdJLlByb2JlKHByb2JlSWRlbnRpZmllciwgYnJlYWtwb2ludCwgcHJvYmVBY3Rpb24uZGF0YSk7
Ci0gICAgICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLnNldChwcm9iZUlkZW50
aWZpZXIsIG5ld1Byb2JlKTsKLSAgICAgICAgICAgICAgICBwcm9iZVNldC5hZGRQcm9iZShuZXdQ
cm9iZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAg
ICAgIGxldCBwcm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5nZXQocHJvYmVJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlLCAiUHJvYmUga25vd24gYnV0
IGNvdWxkbid0IGJlIGZvdW5kIGJ5IGlkZW50aWZpZXI6ICIsIHByb2JlSWRlbnRpZmllcik7Ci0g
ICAgICAgICAgICAvLyBVcGRhdGUgcHJvYmUgZXhwcmVzc2lvbjsgaWYgaXQgZGlmZmVyZWQsIGNo
YW5nZSBldmVudHMgd2lsbCBmaXJlLgotICAgICAgICAgICAgcHJvYmUuZXhwcmVzc2lvbiA9IHBy
b2JlQWN0aW9uLmRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBMb29rIGZvciBtaXNzaW5n
IHByb2JlcyBiYXNlZCBvbiB3aGF0IHdlIHNhdyBsYXN0LgotICAgICAgICBmb3IgKGxldCBwcm9i
ZUlkZW50aWZpZXIgb2Yga25vd25Qcm9iZUlkZW50aWZpZXJzKSB7Ci0gICAgICAgICAgICBpZiAo
c2VlblByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBwcm9iZSBoYXMgZ29uZSBtaXNzaW5nLCBy
ZW1vdmUgaXQuCi0gICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9iZVNldEZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9i
ZXNCeUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICB0aGlzLl9w
cm9iZXNCeUlkZW50aWZpZXIuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAgICBr
bm93blByb2JlSWRlbnRpZmllcnMuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7Ci0gICAgICAgICAg
ICBwcm9iZVNldC5yZW1vdmVQcm9iZShwcm9iZSk7Ci0KLSAgICAgICAgICAgIC8vIFJlbW92ZSB0
aGUgcHJvYmUgc2V0IGlmIGl0IGhhcyBiZWNvbWUgZW1wdHkuCi0gICAgICAgICAgICBpZiAoIXBy
b2JlU2V0LnByb2Jlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9wcm9iZVNldHNC
eUJyZWFrcG9pbnQuZGVsZXRlKHByb2JlU2V0LmJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAg
IHByb2JlU2V0LndpbGxSZW1vdmUoKTsKLSAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRSZW1vdmVkLCB7
cHJvYmVTZXR9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIF9wcm9i
ZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAgICAgIGxldCBwcm9iZVNl
dCA9IHRoaXMuX3Byb2JlU2V0c0J5QnJlYWtwb2ludC5nZXQoYnJlYWtwb2ludCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9UaW1l
bGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250
cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggNWY1YzE4NDkxNmRjZTVmNTJmZjViMTU5
YjFkNmVmYWYwY2ExYjc3Zi4uNWY5MGFhZGJjNDk0ZGFmNDY2OGRiM2Y1ZDkxNzBkZWI1Mjk5MWVh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJv
bGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpAQCAtOTUyLDEwICs5NTIs
MTQgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVNYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBj
YXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UaW1lbGluZS5FdmVudFR5cGUuUHJvYmVTYW1wbGU6
CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVsaW5lLkV2ZW50VHlwZS5Q
cm9iZVNhbXBsZTogeworICAgICAgICAgICAgbGV0IHByb2JlID0gV0kuZGVidWdnZXJNYW5hZ2Vy
LnByb2JlRm9ySWRlbnRpZmllcihyZWNvcmRQYXlsb2FkLmRhdGEucHJvYmVJZCk7CisgICAgICAg
ICAgICBpZiAocHJvYmUuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50KQorICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHByb2JlLmJyZWFrcG9p
bnQuc291cmNlQ29kZUxvY2F0aW9uOworCiAgICAgICAgICAgICAvLyBQYXNzIHRoZSBzdGFydFRp
bWUgYXMgdGhlIGVuZFRpbWUgc2luY2UgdGhpcyByZWNvcmQgdHlwZSBoYXMgbm8gZHVyYXRpb24u
Ci0gICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBXSS5kZWJ1Z2dlck1hbmFnZXIucHJv
YmVGb3JJZGVudGlmaWVyKHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlkKS5icmVha3BvaW50LnNv
dXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuU2NyaXB0VGltZWxp
bmVSZWNvcmQoV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBlLlByb2JlU2FtcGxlUmVj
b3JkZWQsIHN0YXJ0VGltZSwgc3RhcnRUaW1lLCBjYWxsRnJhbWVzLCBzb3VyY2VDb2RlTG9jYXRp
b24sIHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlkKTsKKyAgICAgICAgfQogCiAgICAgICAgIGNh
c2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVsaW5lLkV2ZW50VHlwZS5UaW1lckluc3RhbGw6
CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihlbmRUaW1lKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggNWRiMjcxNWViYzIy
ODRjOTZiMWNiNmY5ZjYzNGU1YjQyODdmNmM3NC4uOWExMTU4ZmU2NTQ2Zjk5ZmFiYmRiMDRmZTI5
ZmRjOWZhMTM4MjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01haW4uaHRtbApAQCAtMTI3LDYgKzEyNyw3IEBACiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0
IiBocmVmPSJWaWV3cy9JbmxpbmVTd2F0Y2guY3NzIj4KICAgICA8bGluayByZWw9InN0eWxlc2hl
ZXQiIGhyZWY9IlZpZXdzL0lucHV0UG9wb3Zlci5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5jc3MiPgorICAgIDxsaW5rIHJlbD0i
c3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvTGF5ZXJEZXRhaWxz
U2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3
cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHls
ZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmNzcyI+CkBAIC0zNDksNiAr
MzUwLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtlck9ic2VydmVyLmpzIj48
L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIj48L3Njcmlw
dD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvQ29uc29sZU1lc3NhZ2UuanMiPjwvc2NyaXB0PgpAQCAtMzY5
LDcgKzM3MSw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BcHBsaWNhdGlvbkNhY2hlTWFu
aWZlc3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQmFja0ZvcndhcmRF
bnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Cb3hTaGFkb3cuanMi
Pjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVVRpbWVsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0NQVVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KQEAgLTQx
Niw2ICs0MTcsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlT2Jq
ZWN0U3RvcmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERh
dGFiYXNlT2JqZWN0U3RvcmVJbmRleC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9Jc3N1ZU1lc3NhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMv
SmF2YVNjcmlwdEJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvS2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9MYXllci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlvdXRJbnN0
cnVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTcxNiw2ICs3MTgsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9JbmxpbmVTd2F0Y2guanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9JbnB1dFBvcG92ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Jc3N1
ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvSmF2YVNj
cmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0JyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQnJlYWtwb2ludC5qcwppbmRleCA5YTIwOWU4Mjg2YmJlNWI2ODk1ZmVjNDk5ZTAwYWZkYmJi
ZGRjYzhjLi5mNDA2ODdiY2YzY2MzMzM4MTY4N2NkODhhZGI4ODk3NWQ1NDliMmI1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2lu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJl
YWtwb2ludC5qcwpAQCAtMjUsMTA4ICsyNSw2MyBAQAogCiBXSS5CcmVha3BvaW50ID0gY2xhc3Mg
QnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogewotICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNv
ZGVMb2NhdGlvbiwge2NvbnRlbnRJZGVudGlmaWVyLCBkaXNhYmxlZCwgY29uZGl0aW9uLCBpZ25v
cmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKHtkaXNhYmxlZCwg
Y29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3RhbmNlb2YgV0kuU291cmNl
Q29kZUxvY2F0aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVy
IHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0cmluZyIpOwotICAgICAgICBjb25z
b2xlLmFzc2VydCghZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkID09PSAiYm9vbGVhbiIpOwot
ICAgICAgICBjb25zb2xlLmFzc2VydCghY29uZGl0aW9uIHx8IHR5cGVvZiBjb25kaXRpb24gPT09
ICJzdHJpbmciKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWlnbm9yZUNvdW50IHx8ICFpc05h
TihpZ25vcmVDb3VudCkpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghYXV0b0NvbnRpbnVlIHx8
IHR5cGVvZiBhdXRvQ29udGludWUgPT09ICJib29sZWFuIik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFkaXNhYmxlZCB8fCB0eXBlb2YgZGlzYWJsZWQgPT09ICJib29sZWFuIiwgZGlzYWJsZWQp
OworICAgICAgICBjb25zb2xlLmFzc2VydCghY29uZGl0aW9uIHx8IHR5cGVvZiBjb25kaXRpb24g
PT09ICJzdHJpbmciLCBjb25kaXRpb24pOworICAgICAgICBjb25zb2xlLmFzc2VydCghaWdub3Jl
Q291bnQgfHwgIWlzTmFOKGlnbm9yZUNvdW50KSwgaWdub3JlQ291bnQpOworICAgICAgICBjb25z
b2xlLmFzc2VydCghYXV0b0NvbnRpbnVlIHx8IHR5cGVvZiBhdXRvQ29udGludWUgPT09ICJib29s
ZWFuIiwgYXV0b0NvbnRpbnVlKTsKIAogICAgICAgICBzdXBlcigpOwogCi0gICAgICAgIHRoaXMu
X2lkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uID0gc291cmNlQ29k
ZUxvY2F0aW9uOworICAgICAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgaW5zdGFudGlh
dGVkIGRpcmVjdGx5LiBDcmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBpbnN0ZWFkLgorICAgICAg
ICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXSS5CcmVha3BvaW50ICYmIHRo
aXMgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKIAotICAgICAgICBsZXQgc291cmNlQ29kZSA9
IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOwotICAgICAgICBpZiAoc291cmNl
Q29kZSkgewotICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBzb3VyY2VDb2Rl
LmNvbnRlbnRJZGVudGlmaWVyOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJ
ZGVudGlmaWVyIHx8IGNvbnRlbnRJZGVudGlmaWVyID09PSB0aGlzLl9jb250ZW50SWRlbnRpZmll
ciwgIlRoZSBjb250ZW50IGlkZW50aWZpZXIgZnJvbSB0aGUgc291cmNlIGNvZGUgc2hvdWxkIG1h
dGNoIHRoZSBnaXZlbiB2YWx1ZS4iKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlz
Ll9jb250ZW50SWRlbnRpZmllciA9IGNvbnRlbnRJZGVudGlmaWVyIHx8IG51bGw7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyIHx8IHRoaXMuX2lzU3BlY2lh
bCgpLCAiVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhIGNvbnRlbnQgaWRlbnRpZmllciBmb3IgYSBi
cmVha3BvaW50LiIpOwotCi0gICAgICAgIHRoaXMuX3NjcmlwdElkZW50aWZpZXIgPSBzb3VyY2VD
b2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS5pZCA6IG51bGw7Ci0gICAgICAg
IHRoaXMuX3RhcmdldCA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VD
b2RlLnRhcmdldCA6IG51bGw7CiAgICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwg
ZmFsc2U7CiAgICAgICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlvbiB8fCAiIjsKICAgICAg
ICAgdGhpcy5faWdub3JlQ291bnQgPSBpZ25vcmVDb3VudCB8fCAwOwogICAgICAgICB0aGlzLl9h
dXRvQ29udGludWUgPSBhdXRvQ29udGludWUgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMuX2FjdGlv
bnMgPSBbXTsKLSAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTsKLQotICAgICAgICB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRp
b24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlv
bkNoYW5nZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZl
bnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuRGlzcGxheUxvY2F0aW9uQ2hh
bmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhp
cyk7CiAgICAgfQogCiAgICAgLy8gSW1wb3J0IC8gRXhwb3J0CiAKLSAgICBzdGF0aWMgZnJvbUpT
T04oanNvbikKLSAgICB7Ci0gICAgICAgIGNvbnN0IHNvdXJjZUNvZGUgPSBudWxsOwotICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IG5ldyBCcmVha3BvaW50KG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRp
b24oc291cmNlQ29kZSwganNvbi5saW5lTnVtYmVyIHx8IDAsIGpzb24uY29sdW1uTnVtYmVyIHx8
IDApLCB7Ci0gICAgICAgICAgICAvLyBUaGUgJ3VybCcgZmFsbGJhY2sgaXMgZm9yIHRyYW5zaXRp
b25pbmcgZnJvbSBvbGRlciBmcm9udGVuZHMgYW5kIHNob3VsZCBiZSByZW1vdmVkLgotICAgICAg
ICAgICAgY29udGVudElkZW50aWZpZXI6IGpzb24uY29udGVudElkZW50aWZpZXIgfHwganNvbi51
cmwsCi0gICAgICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKLSAgICAgICAgICAgIGNv
bmRpdGlvbjoganNvbi5jb25kaXRpb24sCi0gICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5p
Z25vcmVDb3VudCwKLSAgICAgICAgICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUs
Ci0gICAgICAgIH0pOwotICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25z
Lm1hcCgoYWN0aW9uSlNPTikgPT4gV0kuQnJlYWtwb2ludEFjdGlvbi5mcm9tSlNPTihhY3Rpb25K
U09OLCBicmVha3BvaW50KSk7Ci0gICAgICAgIHJldHVybiBicmVha3BvaW50OwotICAgIH0KLQog
ICAgIHRvSlNPTihrZXkpCiAgICAgewotICAgICAgICAvLyBUaGUgaWQsIHNjcmlwdElkZW50aWZp
ZXIsIHRhcmdldCwgYW5kIHJlc29sdmVkIHN0YXRlIGFyZSB0aWVkIHRvIHRoZSBjdXJyZW50IHNl
c3Npb24sIHNvIGRvbid0IGluY2x1ZGUgdGhlbSBmb3Igc2VyaWFsaXphdGlvbi4KLSAgICAgICAg
bGV0IGpzb24gPSB7Ci0gICAgICAgICAgICBjb250ZW50SWRlbnRpZmllcjogdGhpcy5fY29udGVu
dElkZW50aWZpZXIsCi0gICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24ubGluZU51bWJlciwKLSAgICAgICAgICAgIGNvbHVtbk51bWJlcjogdGhpcy5fc291cmNl
Q29kZUxvY2F0aW9uLmNvbHVtbk51bWJlciwKLSAgICAgICAgICAgIGRpc2FibGVkOiB0aGlzLl9k
aXNhYmxlZCwKLSAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5fY29uZGl0aW9uLAotICAgICAg
ICAgICAgaWdub3JlQ291bnQ6IHRoaXMuX2lnbm9yZUNvdW50LAotICAgICAgICAgICAgYWN0aW9u
czogdGhpcy5fYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYWN0aW9uLnRvSlNPTigpKSwKLSAgICAg
ICAgICAgIGF1dG9Db250aW51ZTogdGhpcy5fYXV0b0NvbnRpbnVlLAotICAgICAgICB9OwotICAg
ICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCi0gICAgICAgICAg
ICBqc29uW1dJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX2NvbnRl
bnRJZGVudGlmaWVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIg
KyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgICAgICBs
ZXQganNvbiA9IHt9OworICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCisgICAgICAgICAgICBq
c29uLmRpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAgIGlmICh0aGlzLmVkaXRhYmxl
KSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9uKQorICAgICAgICAgICAgICAgIGpz
b24uY29uZGl0aW9uID0gdGhpcy5fY29uZGl0aW9uOworICAgICAgICAgICAgaWYgKHRoaXMuX2ln
bm9yZUNvdW50KQorICAgICAgICAgICAgICAgIGpzb24uaWdub3JlQ291bnQgPSB0aGlzLl9pZ25v
cmVDb3VudDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hY3Rpb25zLmxlbmd0aCkKKyAgICAgICAg
ICAgICAgICBqc29uLmFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rp
b24udG9KU09OKCkpOworICAgICAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSkKKyAgICAg
ICAgICAgICAgICBqc29uLmF1dG9Db250aW51ZSA9IHRoaXMuX2F1dG9Db250aW51ZTsKKyAgICAg
ICAgfQogICAgICAgICByZXR1cm4ganNvbjsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAotICAg
IGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKSB7IHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRp
b247IH0KLSAgICBnZXQgY29udGVudElkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9jb250ZW50
SWRlbnRpZmllcjsgfQotICAgIGdldCBzY3JpcHRJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5f
c2NyaXB0SWRlbnRpZmllcjsgfQotICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlzLl90YXJn
ZXQ7IH0KLQotICAgIGdldCBpZGVudGlmaWVyKCkKKyAgICBnZXQgZ2xvYmFsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9pZDsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFz
c2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHNldCBp
ZGVudGlmaWVyKGlkKQorICAgIGdldCByZW1vdmFibGUoKQogICAgIHsKLSAgICAgICAgdGhpcy5f
aWQgPSBpZCB8fCBudWxsOworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgaWYg
bmVlZGVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBnZXQgcmVzb2x2ZWQo
KQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcmVzb2x2
ZWQ7Ci0gICAgfQotCi0gICAgc2V0IHJlc29sdmVkKHJlc29sdmVkKQotICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX3Jlc29sdmVkID09PSByZXNvbHZlZCkKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICBjb25zb2xlLmFzc2VydCghcmVzb2x2ZWQgfHwgdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uLnNvdXJjZUNvZGUgfHwgdGhpcy5faXNTcGVjaWFsKCksICJCcmVha3BvaW50cyBtdXN0IGhh
dmUgYSBTb3VyY2VDb2RlIHRvIGJlIHJlc29sdmVkLiIsIHRoaXMpOwotCi0gICAgICAgIHRoaXMu
X3Jlc29sdmVkID0gcmVzb2x2ZWQgfHwgZmFsc2U7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
KTsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGdldCBkaXNhYmxlZCgpCkBAIC0xNTEsNiAr
MTA2LDkgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIHNldCBjb25kaXRpb24oY29uZGl0aW9uKQogICAgIHsKKyAgICAgICAgY29uc29s
ZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHR5
cGVvZiBjb25kaXRpb24gPT09ICJzdHJpbmciKTsKKwogICAgICAgICBpZiAodGhpcy5fY29uZGl0
aW9uID09PSBjb25kaXRpb24pCiAgICAgICAgICAgICByZXR1cm47CiAKQEAgLTE2MSwxMSArMTE5
LDE1IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0
CiAKICAgICBnZXQgaWdub3JlQ291bnQoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2lnbm9yZUNvdW50
OwogICAgIH0KIAogICAgIHNldCBpZ25vcmVDb3VudChpZ25vcmVDb3VudCkKICAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGlnbm9yZUNvdW50ID49IDAsICJJZ25vcmUgY291bnQgY2Fubm90IGJlIG5lZ2F0
aXZlLiIpOwogICAgICAgICBpZiAoaWdub3JlQ291bnQgPCAwKQogICAgICAgICAgICAgcmV0dXJu
OwpAQCAtMTgwLDExICsxNDIsMTUgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBhdXRvQ29udGludWUoKQogICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJu
IHRoaXMuX2F1dG9Db250aW51ZTsKICAgICB9CiAKICAgICBzZXQgYXV0b0NvbnRpbnVlKGNvbnQp
CiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwog
ICAgICAgICBpZiAodGhpcy5fYXV0b0NvbnRpbnVlID09PSBjb250KQogICAgICAgICAgICAgcmV0
dXJuOwogCkBAIC0xOTUsMTEgKzE2MSwxNSBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtw
b2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGFjdGlvbnMoKQogICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJu
IHRoaXMuX2FjdGlvbnM7CiAgICAgfQogCiAgICAgZ2V0IHByb2JlQWN0aW9ucygpCiAgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICBy
ZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoZnVuY3Rpb24oYWN0aW9uKSB7CiAgICAgICAgICAg
ICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZTsK
ICAgICAgICAgfSk7CkBAIC0yMDgsMjcgKzE3OCwzNCBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3Mg
QnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgIGN5Y2xlVG9OZXh0TW9kZSgpCiAgICAg
ewogICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgewotICAgICAgICAgICAgLy8gV2hlbiBjeWNs
aW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdoZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFi
bGVkLgotICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSBmYWxzZTsKKyAgICAgICAgICAg
IGlmICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAgICAgICAgICAgLy8gV2hlbiBjeWNsaW5nLCBj
bGVhciBhdXRvLWNvbnRpbnVlIHdoZW4gZ29pbmcgZnJvbSBkaXNhYmxlZCB0byBlbmFibGVkLgor
ICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbnRpbnVlID0gZmFsc2U7CisgICAgICAgICAgICB9
CisKICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLmF1dG9Db250aW51ZSkgewotICAgICAg
ICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmF1
dG9Db250aW51ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5h
Y3Rpb25zLmxlbmd0aCkgewotICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSB0cnVlOwot
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRoaXMuYWN0aW9ucy5sZW5ndGgp
IHsKKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5k
aXNhYmxlZCA9IHRydWU7CiAgICAgfQogCi0gICAgY3JlYXRlQWN0aW9uKHR5cGUsIHByZWNlZGlu
Z0FjdGlvbiwgZGF0YSkKKyAgICBjcmVhdGVBY3Rpb24odHlwZSwge2RhdGEsIHByZWNlZGluZ0Fj
dGlvbn0gPSB7fSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUs
IHRoaXMpOworCiAgICAgICAgIHZhciBuZXdBY3Rpb24gPSBuZXcgV0kuQnJlYWtwb2ludEFjdGlv
bih0aGlzLCB0eXBlLCBkYXRhIHx8IG51bGwpOwogCiAgICAgICAgIGlmICghcHJlY2VkaW5nQWN0
aW9uKQpAQCAtMjQ5LDYgKzIyNiw4IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICByZWNyZWF0ZUFjdGlvbih0eXBlLCBhY3Rpb25Ub1Jl
cGxhY2UpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlz
KTsKKwogICAgICAgICBsZXQgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0aW9uVG9S
ZXBsYWNlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAg
aWYgKGluZGV4ID09PSAtMSkKQEAgLTI2NSw2ICsyNDQsOCBAQCBXSS5CcmVha3BvaW50ID0gY2xh
c3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgcmVtb3ZlQWN0aW9uKGFjdGlv
bikKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOwor
CiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwogICAg
ICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogICAgICAgICBpZiAoaW5kZXggPT09
IC0xKQpAQCAtMjgwLDYgKzI2MSw4IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBjbGVhckFjdGlvbnModHlwZSkKICAgICB7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIGlmICgh
dHlwZSkKICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMgPSBbXTsKICAgICAgICAgZWxzZQpAQCAt
Mjg4LDE3ICsyNzEsNjQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJl
YWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9CiAKLSAgICBzYXZlSWRlbnRp
dHlUb0Nvb2tpZShjb29raWUpCisgICAgcmVtb3ZlKCkKICAgICB7Ci0gICAgICAgIGNvb2tpZVsi
YnJlYWtwb2ludC1jb250ZW50LWlkZW50aWZpZXIiXSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVy
OwotICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtbGluZS1udW1iZXIiXSA9IHRoaXMuX3NvdXJj
ZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOwotICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtY29s
dW1uLW51bWJlciJdID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5yZW1vdmFibGUsIHRoaXMpOworCisgICAgICAgIC8v
IE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgfQorCisgICAgb3B0aW9u
c1RvUHJvdG9jb2woKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJs
ZSwgdGhpcyk7CisKKyAgICAgICAgbGV0IHBheWxvYWQgPSB7fTsKKworICAgICAgICBpZiAodGhp
cy5fY29uZGl0aW9uKQorICAgICAgICAgICAgcGF5bG9hZC5jb25kaXRpb24gPSB0aGlzLl9jb25k
aXRpb247CisKKyAgICAgICAgaWYgKHRoaXMuX2FjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAg
ICBwYXlsb2FkLmFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24u
dG9Qcm90b2NvbCgpKS5maWx0ZXIoKGFjdGlvbikgPT4geworICAgICAgICAgICAgICAgIGlmIChh
Y3Rpb24udHlwZSAhPT0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZykKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBpZiAoIS9cJFx7Lio/XH0v
LnRlc3QoYWN0aW9uLmRhdGEpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKwor
ICAgICAgICAgICAgICAgIGxldCBsZXhlciA9IG5ldyBXSS5CcmVha3BvaW50TG9nTWVzc2FnZUxl
eGVyOworICAgICAgICAgICAgICAgIGxldCB0b2tlbnMgPSBsZXhlci50b2tlbml6ZShhY3Rpb24u
ZGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKCF0b2tlbnMpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGxldCB0ZW1wbGF0ZUxpdGVyYWwgPSB0
b2tlbnMucmVkdWNlKCh0ZXh0LCB0b2tlbikgPT4geworICAgICAgICAgICAgICAgICAgICBpZiAo
dG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuUGxh
aW5UZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQgKyB0b2tlbi5kYXRh
LmVzY2FwZUNoYXJhY3RlcnMoImBcXCIpOworICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4u
dHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuRXhwcmVzc2lv
bikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgIiR7IiArIHRva2VuLmRh
dGEgKyAifSI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0OworICAgICAgICAgICAg
ICAgIH0sICIiKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gImNvbnNvbGUubG9n
KGAiICsgdGVtcGxhdGVMaXRlcmFsICsgImApIjsKKyAgICAgICAgICAgICAgICBhY3Rpb24udHlw
ZSA9IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZTsKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRo
aXMuX2F1dG9Db250aW51ZSkKKyAgICAgICAgICAgIHBheWxvYWQuYXV0b0NvbnRpbnVlID0gdGhp
cy5fYXV0b0NvbnRpbnVlOworCisgICAgICAgIGlmICh0aGlzLl9pZ25vcmVDb3VudCkKKyAgICAg
ICAgICAgIHBheWxvYWQuaWdub3JlQ291bnQgPSB0aGlzLl9pZ25vcmVDb3VudDsKKworICAgICAg
ICByZXR1cm4gIWlzRW1wdHlPYmplY3QocGF5bG9hZCkgPyBwYXlsb2FkIDogdW5kZWZpbmVkOwog
ICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAoQ2FsbGVkIGJ5IEJyZWFrcG9pbnRBY3Rpb24pCiAK
ICAgICBicmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKGFjdGlvbikKICAgICB7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBpbmRleCA9
IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwogICAgICAgICBjb25zb2xlLmFzc2VydChp
bmRleCAhPT0gLTEpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0xKQpAQCAtMzA2LDM0ICszMzYs
MTQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5CcmVha3BvaW50LkV2
ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9p
c1NwZWNpYWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlv
bi5pc0VxdWFsKG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIEluZmlu
aXR5KSk7Ci0gICAgfQotCi0gICAgX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZChl
dmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOwotICAgIH0KLQot
ICAgIF9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKGV2ZW50KQotICAg
IHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5F
dmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOwotICAgIH0KIH07CiAK
IFdJLkJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiYnJlYWtwb2ludCI7CiAKIFdJLkJyZWFr
cG9pbnQuRXZlbnQgPSB7CiAgICAgRGlzYWJsZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQt
ZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCi0gICAgUmVzb2x2ZWRTdGF0ZURpZENoYW5nZTog
ImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIsCiAgICAgQ29uZGl0aW9uRGlk
Q2hhbmdlOiAiYnJlYWtwb2ludC1jb25kaXRpb24tZGlkLWNoYW5nZSIsCiAgICAgSWdub3JlQ291
bnREaWRDaGFuZ2U6ICJicmVha3BvaW50LWlnbm9yZS1jb3VudC1kaWQtY2hhbmdlIiwKICAgICBB
Y3Rpb25zRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1hY3Rpb25zLWRpZC1jaGFuZ2UiLAogICAgIEF1
dG9Db250aW51ZURpZENoYW5nZTogImJyZWFrcG9pbnQtYXV0by1jb250aW51ZS1kaWQtY2hhbmdl
IiwKLSAgICBMb2NhdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtbG9jYXRpb24tZGlkLWNoYW5n
ZSIsCi0gICAgRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1kaXNwbGF5LWxv
Y2F0aW9uLWRpZC1jaGFuZ2UiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKaW5kZXgg
ZDhiZTdmNWQyZThiZDg2YjUzYmJjNTliMjhmYTFmN2JmMDMyMDZkZi4uMzRmYjBhM2Q4YWFlZmU0
NGU1MTMyNjc5MGZkNjYyNGExMjI2NWYyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMK
QEAgLTI3LDggKzI3LDkgQEAgV0kuQnJlYWtwb2ludEFjdGlvbiA9IGNsYXNzIEJyZWFrcG9pbnRB
Y3Rpb24KIHsKICAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB0eXBlLCBkYXRhKQogICAgIHsK
LSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9p
bnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZSkuaW5jbHVkZXModHlwZSkpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlKS5pbmNs
dWRlcyh0eXBlKSwgdHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkYXRhIHx8IHR5cGVv
ZiBkYXRhID09PSAic3RyaW5nIiwgZGF0YSk7CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9
IGJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJyZWFrcG9pbnQuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2lu
dC5qcwppbmRleCA3OTk0NTliN2I2NDFmYzZmZGJhMDc1ZmIyODc5M2Y5N2Q4MDc3ZjZlLi4wNTM3
ZDM2YmJiN2QwZWVlMWFmZmEwYjM2ZGE0YTJmMTVjY2M0NTc4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2ludC5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NQnJlYWtwb2lu
dC5qcwpAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5k
cyBXSS5PYmplY3QKK1dJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVu
ZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNvbnN0cnVjdG9yKGRvbU5vZGVPckluZm8sIHR5cGUs
IHtkaXNhYmxlZH0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGRvbU5vZGVP
ckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlIHx8IHR5cGVvZiBkb21Ob2RlT3JJbmZvID09PSAi
b2JqZWN0IiwgZG9tTm9kZU9ySW5mbyk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52
YWx1ZXMoV0kuRE9NQnJlYWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7CiAKLSAg
ICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkfSk7CiAKICAgICAgICAgaWYg
KGRvbU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlKSB7CiAgICAgICAgICAgICB0aGlz
Ll9kb21Ob2RlSWRlbnRpZmllciA9IGRvbU5vZGVPckluZm8uaWQ7CkBAIC00NCwxNSArNDQsMTQg
QEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwotICAgICAgICB0aGlz
Ll9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwog
Ci0gICAgc3RhdGljIGRlc2VyaWFsaXplKHNlcmlhbGl6ZWRJbmZvKQorICAgIHN0YXRpYyBmcm9t
SlNPTihqc29uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXSS5ET01CcmVha3BvaW50KHNl
cmlhbGl6ZWRJbmZvLCBzZXJpYWxpemVkSW5mby50eXBlLCB7Ci0gICAgICAgICAgICBkaXNhYmxl
ZDogISFzZXJpYWxpemVkSW5mby5kaXNhYmxlZCwKKyAgICAgICAgcmV0dXJuIG5ldyBXSS5ET01C
cmVha3BvaW50KGpzb24sIGpzb24udHlwZSwgeworICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24u
ZGlzYWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNjIsMjEgKzYxLDYgQEAgV0kuRE9N
QnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBn
ZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9CiAgICAgZ2V0IHBhdGgoKSB7IHJldHVybiB0
aGlzLl9wYXRoOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQotICAgIHsKLSAgICAgICAgcmV0dXJu
IHRoaXMuX2Rpc2FibGVkOwotICAgIH0KLQotICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKLSAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PT0gZGlzYWJsZWQpCi0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKLQotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01CcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVDaGFuZ2VkKTsKLSAgICB9Ci0KICAgICBnZXQgZG9tTm9kZUlkZW50aWZpZXIo
KQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGVJZGVudGlmaWVyOwpAQCAtOTYs
NiArODAsMTMgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9N
QnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgZGF0YSk7CiAgICAgfQogCisgICAgcmVt
b3ZlKCkKKyAgICB7CisgICAgICAgIHN1cGVyLnJlbW92ZSgpOworCisgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KHRoaXMpOworICAgIH0KKwogICAgIHNh
dmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAgICAgIGNvb2tpZVsiZG9tLWJy
ZWFrcG9pbnQtdXJsIl0gPSB0aGlzLl91cmw7CkBAIC0xMDUsMTMgKzk2LDEwIEBAIFdJLkRPTUJy
ZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICB0
b0pTT04oa2V5KQogICAgIHsKLSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAgICB1cmw6
IHRoaXMuX3VybCwKLSAgICAgICAgICAgIHBhdGg6IHRoaXMuX3BhdGgsCi0gICAgICAgICAgICB0
eXBlOiB0aGlzLl90eXBlLAotICAgICAgICB9OwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQp
Ci0gICAgICAgICAgICBqc29uLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgbGV0IGpzb24gPSBz
dXBlci50b0pTT04oa2V5KTsKKyAgICAgICAganNvbi51cmwgPSB0aGlzLl91cmw7CisgICAgICAg
IGpzb24ucGF0aCA9IHRoaXMuX3BhdGg7CisgICAgICAgIGpzb24udHlwZSA9IHRoaXMuX3R5cGU7
CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKICAgICAg
ICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmRvbUJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhp
cy5fdXJsICsgIjoiICsgdGhpcy5fcGF0aCArICI6IiArIHRoaXMuX3R5cGU7CiAgICAgICAgIHJl
dHVybiBqc29uOwpAQCAtMTI2LDUgKzExNCw0IEBAIFdJLkRPTUJyZWFrcG9pbnQuVHlwZSA9IHsK
IAogV0kuRE9NQnJlYWtwb2ludC5FdmVudCA9IHsKICAgICBET01Ob2RlQ2hhbmdlZDogImRvbS1i
cmVha3BvaW50LWRvbS1ub2RlLWNoYW5nZWQiLAotICAgIERpc2FibGVkU3RhdGVDaGFuZ2VkOiAi
ZG9tLWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2lu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9FdmVudEJy
ZWFrcG9pbnQuanMKaW5kZXggZmYxZTc5Y2ZlNGRiYTVkNmM0NDI4YWI0N2ZjYWI0OTM1ZmViMDJh
ZS4uY2I1ZjFiZWQ4NmM4NjFiODI2MjVmYTZiZGFjNDc4NmY4NWQ5YWQ4YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2lu
dC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRXZl
bnRCcmVha3BvaW50LmpzCkBAIC0yMywyOCArMjMsNDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJy
ZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLkV2ZW50QnJlYWtwb2ludCA9IGNsYXNzIEV2
ZW50QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKLSAgICBjb25zdHJ1Y3Rvcih0
eXBlLCB7ZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBkaXNhYmxlZH0gPSB7fSkKKyAgICBjb25z
dHJ1Y3Rvcih0eXBlLCB7ZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBkaXNhYmxlZCwgYWN0aW9u
cywgY29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQogICAgIHsKLSAg
ICAgICAgc3VwZXIoKTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEzKTogRE9NRGVi
dWdnZXIuRXZlbnRCcmVha3BvaW50VHlwZXMuVGltZXIgd2FzIHJlbW92ZWQuCisgICAgICAgIGlm
ICh0eXBlID09PSAidGltZXIiKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGV2ZW50TmFtZSkgewor
ICAgICAgICAgICAgY2FzZSAic2V0SW50ZXJ2YWwiOgorICAgICAgICAgICAgICAgIHR5cGUgPSBX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbDsKKyAgICAgICAgICAgICAgICBicmVhazsK
KworICAgICAgICAgICAgY2FzZSAic2V0VGltZW91dCI6CisgICAgICAgICAgICAgICAgdHlwZSA9
IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmFzc2VydChPYmpl
Y3QudmFsdWVzKFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFldmVudE5hbWUgfHwgdHlwZSA9PT0gV0kuRXZlbnRC
cmVha3BvaW50LlR5cGUsIGV2ZW50TmFtZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFldmVu
dExpc3RlbmVyIHx8IHR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLCBldmVudExpc3Rl
bmVyKTsKKworICAgICAgICBzdXBlcih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdu
b3JlQ291bnQsIGF1dG9Db250aW51ZX0pOwogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwog
ICAgICAgICB0aGlzLl9ldmVudE5hbWUgPSBldmVudE5hbWUgfHwgbnVsbDsKICAgICAgICAgdGhp
cy5fZXZlbnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXIgfHwgbnVsbDsKLSAgICAgICAgdGhpcy5f
ZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAot
ICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0aWMgZnJvbUpT
T04oanNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuRXZlbnRCcmVha3BvaW50KHNl
cmlhbGl6ZWRJbmZvLnR5cGUsIHsKLSAgICAgICAgICAgIGV2ZW50TmFtZTogc2VyaWFsaXplZElu
Zm8uZXZlbnROYW1lLAotICAgICAgICAgICAgZGlzYWJsZWQ6ICEhc2VyaWFsaXplZEluZm8uZGlz
YWJsZWQsCisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChq
c29uLnR5cGUsIHsKKyAgICAgICAgICAgIGV2ZW50TmFtZToganNvbi5ldmVudE5hbWUsCisgICAg
ICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKKyAgICAgICAgICAgIGNvbmRpdGlvbjog
anNvbi5jb25kaXRpb24sCisgICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25vcmVDb3Vu
dCwKKyAgICAgICAgICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUsCiAgICAgICAg
IH0pOworICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zPy5tYXAoKGFj
dGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNPTiwgYnJl
YWtwb2ludCkpIHx8IFtdOworICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKICAgICB9CiAKICAg
ICAvLyBQdWJsaWMKQEAgLTUzLDE5ICs3MiwzNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFz
cyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBnZXQgZXZlbnROYW1lKCkg
eyByZXR1cm4gdGhpcy5fZXZlbnROYW1lOyB9CiAgICAgZ2V0IGV2ZW50TGlzdGVuZXIoKSB7IHJl
dHVybiB0aGlzLl9ldmVudExpc3RlbmVyOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQorICAgIGdl
dCBnbG9iYWwoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOworICAgICAg
ICBzd2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
QW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50OgorICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0gICAgc2V0
IGRpc2FibGVkKGRpc2FibGVkKQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICBp
ZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50
TGlzdGVuZXIgZGlkIG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAg
ICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTQpOiBET01EZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9p
bnQgZGlkIG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAgICByZXR1
cm4gdGhpcy5fZXZlbnRMaXN0ZW5lciA/IEluc3BlY3RvckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9N
LnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIiwgIm9wdGlvbnMiKSA6IEluc3BlY3RvckJh
Y2tlbmQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIuc2V0RXZlbnRCcmVha3BvaW50IiwgIm9wdGlv
bnMiKTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZDsKKyAgICBy
ZW1vdmUoKQorICAgIHsKKyAgICAgICAgc3VwZXIucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVk
U3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgaWYgKHRoaXMuX2V2ZW50TGlzdGVuZXIpCisgICAgICAg
ICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKHRoaXMu
X2V2ZW50TGlzdGVuZXIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KHRoaXMpOwogICAgIH0KIAogICAgIHNhdmVJ
ZGVudGl0eVRvQ29va2llKGNvb2tpZSkKQEAgLTc1LDE5ICsxMDksMTQgQEAgV0kuRXZlbnRCcmVh
a3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICBjb29raWVbImV2ZW50LWJyZWFrcG9pbnQtZXZlbnQtbmFtZSJdID0gdGhpcy5fZXZlbnRO
YW1lOwogICAgICAgICBpZiAodGhpcy5fZXZlbnRMaXN0ZW5lcikKICAgICAgICAgICAgIGNvb2tp
ZVsiZXZlbnQtYnJlYWtwb2ludC1ldmVudC1saXN0ZW5lciJdID0gdGhpcy5fZXZlbnRMaXN0ZW5l
ci5ldmVudExpc3RlbmVySWQ7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKLSAgICAgICAg
ICAgIGNvb2tpZVsiZXZlbnQtYnJlYWtwb2ludC1kaXNhYmxlZCJdID0gdGhpcy5fZGlzYWJsZWQ7
CiAgICAgfQogCiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBqc29uID0gewot
ICAgICAgICAgICAgdHlwZTogdGhpcy5fdHlwZSwKLSAgICAgICAgfTsKKyAgICAgICAgbGV0IGpz
b24gPSBzdXBlci50b0pTT04oa2V5KTsKKyAgICAgICAganNvbi50eXBlID0gdGhpcy5fdHlwZTsK
ICAgICAgICAgaWYgKHRoaXMuX2V2ZW50TmFtZSkKICAgICAgICAgICAgIGpzb24uZXZlbnROYW1l
ID0gdGhpcy5fZXZlbnROYW1lOwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0gICAgICAg
ICAgICBqc29uLmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgaWYgKGtleSA9PT0gV0kuT2JqZWN0
U3RvcmUudG9KU09OU3ltYm9sKQogICAgICAgICAgICAganNvbltXSS5vYmplY3RTdG9yZXMuZXZl
bnRCcmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX3R5cGUgKyAodGhpcy5fZXZlbnROYW1lID8g
IjoiICsgdGhpcy5fZXZlbnROYW1lIDogIiIpOwogICAgICAgICByZXR1cm4ganNvbjsKQEAgLTk5
LDExICsxMjgsNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZSA9IHsKICAgICBJbnRlcnZhbDog
ImludGVydmFsIiwKICAgICBMaXN0ZW5lcjogImxpc3RlbmVyIiwKICAgICBUaW1lb3V0OiAidGlt
ZW91dCIsCi0KLSAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTMpOiBET01EZWJ1Z2dlci5FdmVu
dEJyZWFrcG9pbnRUeXBlcy5UaW1lciB3YXMgcmVtb3ZlZC4KLSAgICBUaW1lcjogInRpbWVyIiwK
LX07Ci0KLVdJLkV2ZW50QnJlYWtwb2ludC5FdmVudCA9IHsKLSAgICBEaXNhYmxlZFN0YXRlQ2hh
bmdlZDogImV2ZW50LWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFT
Y3JpcHRCcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0phdmFTY3JpcHRCcmVha3BvaW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIxZjExOTc4OTU2ZjUz
ZjlkMzZhNjdlYjM2NjJiMTM0YTVjNGUwNTkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMK
QEAgLTAsMCArMSwxOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludCA9IGNsYXNzIEphdmFTY3JpcHRCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAor
eworICAgIGNvbnN0cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbiwge2NvbnRlbnRJZGVudGlmaWVy
LCBkaXNhYmxlZCwgY29uZGl0aW9uLCBhY3Rpb25zLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVl
fSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9u
IGluc3RhbmNlb2YgV0kuU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoIWNvbnRlbnRJZGVudGlmaWVyIHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0
cmluZyIpOworCisgICAgICAgIHN1cGVyKHtkaXNhYmxlZCwgY29uZGl0aW9uLCBhY3Rpb25zLCBp
Z25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSk7CisKKyAgICAgICAgdGhpcy5faWQgPSBudWxsOwor
ICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb247CisK
KyAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uc291cmNl
Q29kZTsKKyAgICAgICAgaWYgKHNvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRl
bnRJZGVudGlmaWVyID0gc291cmNlQ29kZS5jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KCFjb250ZW50SWRlbnRpZmllciB8fCBjb250ZW50SWRlbnRpZmllciA9
PT0gdGhpcy5fY29udGVudElkZW50aWZpZXIsICJUaGUgY29udGVudCBpZGVudGlmaWVyIGZyb20g
dGhlIHNvdXJjZSBjb2RlIHNob3VsZCBtYXRjaCB0aGUgZ2l2ZW4gdmFsdWUuIik7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBjb250ZW50SWRl
bnRpZmllciB8fCBudWxsOworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9jb250ZW50SWRl
bnRpZmllciB8fCB0aGlzLl9pc1NwZWNpYWwoKSwgIlRoZXJlIHNob3VsZCBhbHdheXMgYmUgYSBj
b250ZW50IGlkZW50aWZpZXIgZm9yIGEgYnJlYWtwb2ludC4iKTsKKworICAgICAgICB0aGlzLl9z
Y3JpcHRJZGVudGlmaWVyID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJLlNjcmlwdCA/IHNvdXJj
ZUNvZGUuaWQgOiBudWxsOworICAgICAgICB0aGlzLl90YXJnZXQgPSBzb3VyY2VDb2RlIGluc3Rh
bmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS50YXJnZXQgOiBudWxsOworICAgICAgICB0aGlz
Ll9yZXNvbHZlZCA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5h
ZGRFdmVudExpc3RlbmVyKFdJLlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5Mb2NhdGlvbkNoYW5n
ZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7CisgICAg
ICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdJLlNvdXJjZUNv
ZGVMb2NhdGlvbi5FdmVudC5EaXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKKyAgICB9CisKKyAgICAvLyBJ
bXBvcnQgLyBFeHBvcnQKKworICAgIHN0YXRpYyBmcm9tSlNPTihqc29uKQorICAgIHsKKyAgICAg
ICAgY29uc3Qgc291cmNlQ29kZSA9IG51bGw7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24oc291cmNl
Q29kZSwganNvbi5saW5lTnVtYmVyIHx8IDAsIGpzb24uY29sdW1uTnVtYmVyIHx8IDApLCB7Cisg
ICAgICAgICAgICAvLyBUaGUgJ3VybCcgZmFsbGJhY2sgaXMgZm9yIHRyYW5zaXRpb25pbmcgZnJv
bSBvbGRlciBmcm9udGVuZHMgYW5kIHNob3VsZCBiZSByZW1vdmVkLgorICAgICAgICAgICAgY29u
dGVudElkZW50aWZpZXI6IGpzb24uY29udGVudElkZW50aWZpZXIgfHwganNvbi51cmwsCisgICAg
ICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwKKyAgICAgICAgICAgIGNvbmRpdGlvbjog
anNvbi5jb25kaXRpb24sCisgICAgICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25vcmVDb3Vu
dCwKKyAgICAgICAgICAgIGF1dG9Db250aW51ZToganNvbi5hdXRvQ29udGludWUsCisgICAgICAg
IH0pOworICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zPy5tYXAoKGFj
dGlvbkpTT04pID0+IFdJLkJyZWFrcG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNPTiwgYnJl
YWtwb2ludCkpIHx8IFtdOworICAgICAgICByZXR1cm4gYnJlYWtwb2ludDsKKyAgICB9CisKKyAg
ICB0b0pTT04oa2V5KQorICAgIHsKKyAgICAgICAgLy8gVGhlIGlkLCBzY3JpcHRJZGVudGlmaWVy
LCB0YXJnZXQsIGFuZCByZXNvbHZlZCBzdGF0ZSBhcmUgdGllZCB0byB0aGUgY3VycmVudCBzZXNz
aW9uLCBzbyBkb24ndCBpbmNsdWRlIHRoZW0gZm9yIHNlcmlhbGl6YXRpb24uCisgICAgICAgIGxl
dCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpzb24uY29udGVudElkZW50aWZp
ZXIgPSB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsKKyAgICAgICAganNvbi5saW5lTnVtYmVyID0g
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGpzb24uY29sdW1u
TnVtYmVyID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAg
aWYgKGtleSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQorICAgICAgICAgICAganNv
bltXSS5vYmplY3RTdG9yZXMuYnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl9jb250ZW50SWRl
bnRpZmllciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyICsgIjoi
ICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsKKyAgICAgICAgcmV0dXJu
IGpzb247CisgICAgfQorCisgICAgLy8gUHVibGljCisKKyAgICBnZXQgc291cmNlQ29kZUxvY2F0
aW9uKCkgeyByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uOyB9CisgICAgZ2V0IGNvbnRl
bnRJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5fY29udGVudElkZW50aWZpZXI7IH0KKyAgICBn
ZXQgc2NyaXB0SWRlbnRpZmllcigpIHsgcmV0dXJuIHRoaXMuX3NjcmlwdElkZW50aWZpZXI7IH0K
KyAgICBnZXQgdGFyZ2V0KCkgeyByZXR1cm4gdGhpcy5fdGFyZ2V0OyB9CisKKyAgICBnZXQgZ2xv
YmFsKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRl
YnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNl
IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2Fz
ZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAg
ICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50Ogor
ICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDoK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGdldCByZW1vdmFibGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNo
ICh0aGlzKSB7CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVt
ZW50c0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2Vw
dGlvbnNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdo
dEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICB9CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZ2V0IGVkaXRhYmxlKCkK
KyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRlYnVnZ2Vy
TWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRl
YnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5k
ZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2Fz
ZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OgorICAgICAg
ICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDoKKyAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOwor
ICAgIH0KKworICAgIGdldCBpZGVudGlmaWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll9pZDsKKyAgICB9CisKKyAgICBzZXQgaWRlbnRpZmllcihpZCkKKyAgICB7CisgICAgICAgIHRo
aXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICB9CisKKyAgICBnZXQgcmVzb2x2ZWQoKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc29sdmVkOworICAgIH0KKworICAgIHNldCByZXNvbHZl
ZChyZXNvbHZlZCkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCA9PT0gcmVzb2x2
ZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlc29s
dmVkIHx8IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlIHx8IHRoaXMuX2lzU3Bl
Y2lhbCgpLCAiQnJlYWtwb2ludHMgbXVzdCBoYXZlIGEgU291cmNlQ29kZSB0byBiZSByZXNvbHZl
ZC4iLCB0aGlzKTsKKworICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHJlc29sdmVkIHx8IGZhbHNl
OworCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFTY3JpcHRC
cmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UpOworICAgIH0KKworICAgIHJl
bW92ZSgpCisgICAgeworICAgICAgICBzdXBlci5yZW1vdmUoKTsKKworICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzKTsKKyAgICB9CisKKyAgICBzYXZlSWRl
bnRpdHlUb0Nvb2tpZShjb29raWUpCisgICAgeworICAgICAgICBjb29raWVbImphdmFzY3JpcHQt
YnJlYWtwb2ludC1jb250ZW50LWlkZW50aWZpZXIiXSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVy
OworICAgICAgICBjb29raWVbImphdmFzY3JpcHQtYnJlYWtwb2ludC1saW5lLW51bWJlciJdID0g
dGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGNvb2tpZVsiamF2
YXNjcmlwdC1icmVha3BvaW50LWNvbHVtbi1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2Nh
dGlvbi5jb2x1bW5OdW1iZXI7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2lzU3Bl
Y2lhbCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmlz
RXF1YWwobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkp
KTsKKyAgICB9CisKKyAgICBfc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOworICAg
IH0KKworICAgIF9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKGV2ZW50
KQorICAgIHsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRh
KTsKKyAgICB9Cit9OworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5UeXBlSWRlbnRpZmllciA9
ICJqYXZhc2NyaXB0LWJyZWFrcG9pbnQiOworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVu
dCA9IHsKKyAgICBSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlOiAiamF2YXNjcmlwdC1icmVha3BvaW50
LXJlc29sdmVkLXN0YXRlLWRpZC1jaGFuZ2UiLAorICAgIExvY2F0aW9uRGlkQ2hhbmdlOiAiamF2
YXNjcmlwdC1icmVha3BvaW50LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAorICAgIERpc3BsYXlMb2Nh
dGlvbkRpZENoYW5nZTogImphdmFzY3JpcHQtYnJlYWtwb2ludC1kaXNwbGF5LWxvY2F0aW9uLWRp
ZC1jaGFuZ2UiLAorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcwppbmRleCBhNTEzY2UzMThhNmZiMzkyYjU0MjI3OWVm
NWVlNDk5ODkxZmU3ZjM4Li45YjYyN2U1OTg4OTk4YjJjYzMwMGFmZTZmMjY0Zjk0ZjBmYmU1MWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UHJvYmVTZXQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1Byb2JlU2V0LmpzCkBAIC00Miw3ICs0Miw3IEBAIFdJLlByb2JlU2V0ID0gY2xhc3MgUHJv
YmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3Rl
bmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291
cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdJLlByb2JlLmFkZEV2ZW50TGlzdGVuZXIoV0ku
UHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7Ci0g
ICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlk
Q2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hh
bmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAg
fQogCiAgICAgLy8gUHVibGljCkBAIC02OCw3ICs2OCw3IEBAIFdJLlByb2JlU2V0ID0gY2xhc3Mg
UHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGNyZWF0ZVByb2JlKGV4cHJlc3Npb24p
CiAgICAgewotICAgICAgICB0aGlzLmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9p
bnRBY3Rpb24uVHlwZS5Qcm9iZSwgbnVsbCwgZXhwcmVzc2lvbik7CisgICAgICAgIHRoaXMuYnJl
YWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlLCB7ZGF0
YTogZXhwcmVzc2lvbn0pOwogICAgIH0KIAogICAgIGFkZFByb2JlKHByb2JlKQpAQCAtMTAxLDcg
KzEwMSw3IEBAIFdJLlByb2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgICAgICBXSS5GcmFtZS5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAg
ICAgICAgIFdJLlByb2JlLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuUHJvYmUuRXZlbnQuU2FtcGxl
QWRkZWQsIHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLkJyZWFrcG9p
bnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVE
aWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsK
KyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9i
cmVha3BvaW50UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8g
UHJpdmF0ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL1VSTEJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcwppbmRleCA0N2VlZjY0ZTNkY2RmMTY3NDI5ODk2
MTJjYTVmOGQ3ZmJkODU2OWIzLi5mNWJjOTVlZDJhODBkMjc0YmJlYjIyZjU0Yjg4ZTM0ODJjNjhl
NjBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvVVJMQnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcwpAQCAtMjMsMjYgKzIzLDI1IEBACiAgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuVVJMQnJlYWtwb2ludCA9IGNs
YXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLlVSTEJyZWFrcG9pbnQgPSBj
bGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNvbnN0cnVj
dG9yKHR5cGUsIHVybCwge2Rpc2FibGVkfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5VUkxCcmVha3BvaW50LlR5cGUpLmluY2x1ZGVzKHR5cGUp
LCB0eXBlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQodHlwZW9mIHVybCA9PT0gInN0cmluZyIs
IHVybCk7CiAKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkfSk7CiAK
ICAgICAgICAgdGhpcy5fdHlwZSA9IHR5cGU7CiAgICAgICAgIHRoaXMuX3VybCA9IHVybDsKLSAg
ICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAv
LyBTdGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBz
dGF0aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuVVJMQnJl
YWtwb2ludChzZXJpYWxpemVkSW5mby50eXBlLCBzZXJpYWxpemVkSW5mby51cmwsIHsKLSAgICAg
ICAgICAgIGRpc2FibGVkOiAhIXNlcmlhbGl6ZWRJbmZvLmRpc2FibGVkLAorICAgICAgICByZXR1
cm4gbmV3IFdJLlVSTEJyZWFrcG9pbnQoanNvbi50eXBlLCBqc29uLnVybCwgeworICAgICAgICAg
ICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNTEs
MTkgKzUwLDE2IEBAIFdJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgZ2V0IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CiAgICAg
Z2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkKKyAg
ICBnZXQgZ2xvYmFsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAg
ICAgICAgcmV0dXJuIHRoaXMgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0Jy
ZWFrcG9pbnQ7CiAgICAgfQogCi0gICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKQorICAgIHJlbW92
ZSgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2FibGVkKQotICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBzdXBlci5yZW1vdmUoKTsKIAotICAgICAgICB0aGlz
Ll9kaXNhYmxlZCA9IGRpc2FibGVkOwotCi0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLlVSTEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQpOworICAg
ICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlVVJMQnJlYWtwb2ludCh0aGlzKTsKICAg
ICB9CiAKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCkBAIC03NCwyMiArNzAsMTUg
QEAgV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIHRvSlNPTihrZXkpCiAgICAgewotICAgICAgICBsZXQganNvbiA9IHsKLSAgICAg
ICAgICAgIHR5cGU6IHRoaXMuX3R5cGUsCi0gICAgICAgICAgICB1cmw6IHRoaXMuX3VybCwKLSAg
ICAgICAgfTsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAganNvbi5k
aXNhYmxlZCA9IHRydWU7CisgICAgICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7Cisg
ICAgICAgIGpzb24udHlwZSA9IHRoaXMuX3R5cGU7CisgICAgICAgIGpzb24udXJsID0gdGhpcy5f
dXJsOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCiAg
ICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy51cmxCcmVha3BvaW50cy5rZXlQYXRoXSA9
IHRoaXMuX3R5cGUgKyAiOiIgKyB0aGlzLl91cmw7CiAgICAgICAgIHJldHVybiBqc29uOwogICAg
IH0KIH07CiAKLVdJLlVSTEJyZWFrcG9pbnQuRXZlbnQgPSB7Ci0gICAgRGlzYWJsZWRTdGF0ZUNo
YW5nZWQ6ICJ1cmwtYnJlYWtwb2ludC1kaXNhYmxlZC1zdGF0ZS1jaGFuZ2VkIiwKLX07Ci0KIFdJ
LlVSTEJyZWFrcG9pbnQuVHlwZSA9IHsKICAgICBUZXh0OiAidGV4dCIsCiAgICAgUmVndWxhckV4
cHJlc3Npb246ICJyZWdleCIsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9UZXN0Lmh0bWwKaW5kZXggMWZhOWM5ZTRiODVkYTBmMTk5NzA2ZDYwNWQwOTYwMjMyNWYwYmI0
ZC4uZWVkYThlYjEzNTJiNzcyMGY3MTIxYzY1MDU4ZDM4NmZiZTI3ZGRjYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbApAQCAtMTA4LDYgKzEwOCw3
IEBACiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1RpbWVsaW5lT2JzZXJ2ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Xb3JrZXJPYnNlcnZlci5qcyI+PC9zY3Jp
cHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnQuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2Ny
aXB0IHNyYz0iTW9kZWxzL0NvbnNvbGVNZXNzYWdlLmpzIj48L3NjcmlwdD4KQEAgLTEyNiw3ICsx
MjcsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQW5pbWF0aW9uLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0FuaW1hdGlvbkNvbGxlY3Rpb24uanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQm94U2hhZG93LmpzIj48L3NjcmlwdD4KLSAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJNb2RlbHMvQ1BVSW5zdHJ1bWVudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9DUFVUaW1lbGluZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9DUFVUaW1lbGluZVJlY29yZC5qcyI+PC9zY3JpcHQ+CkBAIC0xNjksNiArMTY5LDcgQEAKICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3JlLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0luZGV4ZWREYXRhYmFzZU9iamVjdFN0b3Jl
SW5kZXguanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSXNzdWVNZXNzYWdl
LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0phdmFTY3JpcHRCcmVha3Bv
aW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheWVyLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0xheW91dEluc3RydW1lbnQuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5b3V0VGltZWxpbmVSZWNvcmQuanMiPjwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcwppbmRleCAwM2Y2YzY5NzFh
YTI2ODQ5ZmFjMzA4NzM5NDhjZmYzMjM4NTlkYzY5Li42MWNiMDBhMzJhMDQzZTA1NjY1MDM2NWI3
ZTUyZDBhYjZlZGQ2NzJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcwpAQCAt
MTE1LDcgKzExNSw3IEBAIFdJLkJyZWFrcG9pbnRBY3Rpb25WaWV3ID0gY2xhc3MgQnJlYWtwb2lu
dEFjdGlvblZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIF9hcHBlbmRBY3Rpb25CdXR0b25D
bGlja2VkKGV2ZW50KQogICAgIHsKLSAgICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMuX2FjdGlv
bi5icmVha3BvaW50LmNyZWF0ZUFjdGlvbih0aGlzLl9hY3Rpb24udHlwZSwgdGhpcy5fYWN0aW9u
KTsKKyAgICAgICAgdmFyIG5ld0FjdGlvbiA9IHRoaXMuX2FjdGlvbi5icmVha3BvaW50LmNyZWF0
ZUFjdGlvbih0aGlzLl9hY3Rpb24udHlwZSwge3ByZWNlZWRpbmdBY3Rpb246IHRoaXMuX2FjdGlv
bn0pOwogICAgICAgICB0aGlzLl9kZWxlZ2F0ZS5icmVha3BvaW50QWN0aW9uVmlld0FwcGVuZEFj
dGlvblZpZXcodGhpcywgbmV3QWN0aW9uKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5j
c3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50
VHJlZUVsZW1lbnQuY3NzCmluZGV4IDA1YWM1ZmRmZWZhODgyYThiNGQ1Yjg2OGM2YzVkZDQxM2I3
NjRlODkuLmMzNGUyNTMxMzQ1ZjAxNmU1NTIzOTQxMTg3ZjBlNjg1M2NhOGRlZWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRU
cmVlRWxlbWVudC5jc3MKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpAQCAtMzQsMTUgKzM0LDYgQEAKIAogICAg
IGZpbGw6IHZhcigtLWJyZWFrcG9pbnQtY29sb3IpOwogICAgIHN0cm9rZTogaHNsYSgwLCAwJSwg
MTAlLCAwLjMpOwotICAgIGZpbHRlcjogZ3JheXNjYWxlKCk7Ci19Ci0KLS5pdGVtLmJyZWFrcG9p
bnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQgewotICAgIGZpbHRlcjogbm9uZTsK
LX0KLQotYm9keTpub3QoLndpbmRvdy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUp
IC50cmVlLW91dGxpbmU6Zm9jdXMtd2l0aGluIC5pdGVtLmJyZWFrcG9pbnQuc2VsZWN0ZWQgLnN0
YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQgewotICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0
ZWQtZm9yZWdyb3VuZC1jb2xvcik7CiB9CiAKIC5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+IC5z
dGF0dXMtaW1hZ2UuYXV0by1jb250aW51ZTo6YWZ0ZXIgewpAQCAtNTksODAgKzUwLDEyIEBAIGJv
ZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1v
dXRsaW5lOmZvY3VzLXdpdGhpbiAuCiAgICAgZmlsbDogdmFyKC0tYnJlYWtwb2ludC1jb2xvci1k
aXNhYmxlZCk7CiB9CiAKLS5pdGVtLmJyZWFrcG9pbnQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2Nh
dGlvbiB7Ci0gICAgZm9udC1zdHlsZTogaXRhbGljOwotfQotCi0uYnJlYWtwb2ludC1kZWJ1Z2dl
ci1zdGF0ZW1lbnQtaWNvbiAuaWNvbiB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBl
SWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVtZW50LWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9pbnQtZXhj
ZXB0aW9uLWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNFeGNlcHRpb24tbGlnaHQpOwotfQotCi0uYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiAu
aWNvbiB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlv
bi1saWdodCk7Ci19Ci0KLS5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsKLSAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjTWljcm90YXNrLWxpZ2h0KTsKLX0K
LQotLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24geworLml0ZW0uYnJlYWtwb2ludC5wYXVz
ZWQgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNQYXVz
ZWRCcmVha3BvaW50LWxpZ2h0KTsKIH0KIAotLyogV2hlbiBhbmltYXRpbmcgYSBsYXllciBvbiB0
b3Agb2YgYSB0cmVlIGVsZW1lbnQncyBpY29uLCBtb3ZlIHRoZSBtYWluCi1pY29uIHRvIHRoZSBp
Y29uIGVsZW1lbnQncyBiYWNrZ3JvdW5kIHNvIGFuaW1hdGlvbnMgYXJlIGxheWVyZWQgb24gdG9w
LiAqLwotLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gewotICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWxpZ2h0KTsK
LSAgICBjb250ZW50OiAnJzsKLX0KLQotLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmlj
b24gPiBzcGFuIHsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJp
Z2h0OiAwOwotICAgIGJvdHRvbTogMDsKLSAgICBsZWZ0OiAwOwotCi0gICAgYm9yZGVyLXJhZGl1
czogNTAlOwotICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7Ci0gICAgdHJhbnNpdGlvbjogbm9uZTsK
LSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2woMjE2LCAzMCUsIDQyJSk7Ci19Ci0KLS5kYXRhLXVw
ZGF0ZWQuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4gewotICAgIGJv
cmRlci1yYWRpdXM6IDA7Ci0gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjg1KTsKLSAgICB0cmFuc2l0
aW9uOiBhbGwgLjRzIGVhc2Utb3V0OwotICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMjE2LCAz
MCUsIDQyJSwgMC4xKTsKLX0KLQogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykg
ewotICAgIC5icmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1pY29uIC5pY29uIHsKLSAgICAg
ICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVtZW50
LWRhcmspOwotICAgIH0KLSAgICAKLSAgICAuYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNv
biB7Ci0gICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRp
b24tZGFyayk7Ci0gICAgfQotCi0gICAgLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24g
ewotICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9u
LWRhcmspOwotICAgIH0KLQotICAgIC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsK
LSAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1k
YXJrKTsKLSAgICB9Ci0KLSAgICAuYnJlYWtwb2ludC1wYXVzZWQtaWNvbiAuaWNvbiB7CisgICAg
Lml0ZW0uYnJlYWtwb2ludC5wYXVzZWQgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4v
SW1hZ2VzL1R5cGVJY29ucy5zdmcjUGF1c2VkQnJlYWtwb2ludC1kYXJrKTsKICAgICB9Ci0KLSAg
ICAuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiB7Ci0gICAgICAgIGJhY2tncm91
bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRhcmspOwot
ICAgIH0KLSAgICAKLX0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJl
ZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9C
cmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5kZXggMjYzZjA3YzI4ZTdmOWRiZWMwODdjYWIzYWU3
NTk2NDEwYjVlZmZkNS4uY2YyZTA2ZWU4ZjU2ZDA2N2FhNmRjMDU5MmE2YTYxOTJkMDg4OWRkZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjUsMjYgKzI1LDI2IEBA
CiAKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9yKGJyZWFr
cG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9p
bnQsIHtjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGV9ID0ge30pCiAgICAgewogICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7CiAKLSAg
ICAgICAgaWYgKCFjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWUgPSBXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuR2VuZXJpY0xpbmVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGlm
ICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBb
XTsKKyAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJicmVha3BvaW50Iik7CiAKLSAgICAgICAgY29u
c3Qgc3VidGl0bGUgPSBudWxsOwotICAgICAgICBzdXBlcihbImJyZWFrcG9pbnQiLCBjbGFzc05h
bWVdLCB0aXRsZSwgc3VidGl0bGUsIGJyZWFrcG9pbnQpOworICAgICAgICBzdXBlcihjbGFzc05h
bWVzLCB0aXRsZSwgc3VidGl0bGUsIGJyZWFrcG9pbnQpOworCisgICAgICAgIC8vIFRoaXMgY2xh
c3Mgc2hvdWxkIG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIENyZWF0ZSBhIGNvbmNyZXRl
IHN1YmNsYXNzIGluc3RlYWQuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0
b3IgIT09IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCAmJiB0aGlzIGluc3RhbmNlb2YgV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50KTsKIAogICAgICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtw
b2ludDsKICAgICAgICAgdGhpcy5fcHJvYmVTZXQgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2xp
c3RlbmVyU2V0ID0gbmV3IFdJLkV2ZW50TGlzdGVuZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVl
RWxlbWVudCBsaXN0ZW5lcnMiKTsKLSAgICAgICAgaWYgKCF0aXRsZSkKLSAgICAgICAgICAgIHRo
aXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQu
TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk7Ci0g
ICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9p
bnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAg
ICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwgV0kuQnJlYWtwb2lu
dC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQu
RXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICAg
ICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLl91cGRh
dGVTdGF0dXMpOworICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50
LCBXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMudXBkYXRl
U3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwg
V0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMudXBkYXRlU3Rh
dHVzKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5h
Z2VyLCBXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdl
LCB0aGlzLnVwZGF0ZVN0YXR1cyk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVy
KFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2JlU2V0QWRk
ZWQsIHRoaXMuX3Byb2JlU2V0QWRkZWQpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdp
c3RlcihXSS5kZWJ1Z2dlck1hbmFnZXIsIFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Qcm9iZVNl
dFJlbW92ZWQsIHRoaXMuX3Byb2JlU2V0UmVtb3ZlZCk7CiAKQEAgLTU1LDggKzU1LDggQEAgV0ku
QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVu
ZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIo
dGhpcy5zdGF0dXMsICJjbGljayIsIHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwog
CiAgICAgICAgIGlmICghdGl0bGUpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsK
LSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZVRp
dGxlcygpOworICAgICAgICB0aGlzLnVwZGF0ZVN0YXR1cygpOwogCiAgICAgICAgIHRoaXMuX2lj
b25BbmltYXRpb25MYXllckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7
CiAgICAgICAgIHRoaXMuaWNvbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkFuaW1hdGlv
bkxheWVyRWxlbWVudCk7CkBAIC03MCwxMSArNzAsNiBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1l
bnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVs
ZQogICAgICAgICByZXR1cm4gdGhpcy5fYnJlYWtwb2ludDsKICAgICB9CiAKLSAgICBnZXQgZmls
dGVyYWJsZURhdGEoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5icmVha3Bv
aW50LmNvbnRlbnRJZGVudGlmaWVyXX07Ci0gICAgfQotCiAgICAgb25kZWxldGUoKQogICAgIHsK
ICAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdp
bGwgcmVtb3ZlIHRoaXMKQEAgLTgyLDggKzc3LDggQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUK
ICAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQgKGUu
Zy4gVGV4dEVkaXRvcikuCiAgICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9hcmRT
aG9ydGN1dCA9IHRydWU7CiAKLSAgICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFr
cG9pbnRSZW1vdmFibGUodGhpcy5fYnJlYWtwb2ludCkpIHsKLSAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZW1vdmVCcmVha3BvaW50KHRoaXMuX2JyZWFrcG9pbnQpOworICAgICAgICBp
ZiAodGhpcy5fYnJlYWtwb2ludC5yZW1vdmFibGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnQucmVtb3ZlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBA
IC0xMzQsNDEgKzEyOSwyNyBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVh
a3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgICAgICBzdXBl
ci5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7CiAgICAgfQogCi0gICAg
Ly8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX3VwZGF0ZVRpdGxlcygpCi0gICAg
ewotICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5zb3Vy
Y2VDb2RlTG9jYXRpb247CisgICAgZ2V0IGxpc3RlbmVyU2V0KCkgeyByZXR1cm4gdGhpcy5fbGlz
dGVuZXJTZXQ7IH0KIAotICAgICAgICB2YXIgZGlzcGxheUxpbmVOdW1iZXIgPSBzb3VyY2VDb2Rl
TG9jYXRpb24uZGlzcGxheUxpbmVOdW1iZXI7Ci0gICAgICAgIHZhciBkaXNwbGF5Q29sdW1uTnVt
YmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7Ci0gICAgICAgIGlm
IChkaXNwbGF5Q29sdW1uTnVtYmVyID4gMCkKLSAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0g
V0kuVUlTdHJpbmcoIkxpbmUgJWQ6JWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxLCBk
aXNwbGF5Q29sdW1uTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBhbmQgY29s
dW1uIG51bWJlcnMgYXJlIDEtYmFzZWQuCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMu
bWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1i
ZXIgKyAxKTsgLy8gVGhlIHVzZXIgdmlzaWJsZSBsaW5lIG51bWJlciBpcyAxLWJhc2VkLgotCi0g
ICAgICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgewotICAg
ICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHNvdXJjZUNvZGVMb2NhdGlvbi5mb3JtYXR0ZWRMb2Nh
dGlvblN0cmluZygpOwotCi0gICAgICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc0Zv
cm1hdHRlZExvY2F0aW9uKCkpCi0gICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQu
Y2xhc3NMaXN0LmFkZChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25T
dHlsZUNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5z
dWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQu
Rm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgICAgIHRoaXMudG9v
bHRpcCA9IHRoaXMubWFpblRpdGxlICsgIiBcdTIwMTQgIiArIFdJLlVJU3RyaW5nKCJvcmlnaW5h
bGx5ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5n
KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0YXR1cygpCisgICAgdXBkYXRl
U3RhdHVzKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5zdGF0dXMpCiAgICAgICAgICAgICBy
ZXR1cm47CiAKICAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9i
cmVha3BvaW50LmRpc2FibGVkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2ds
ZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHlsZUNs
YXNzTmFtZSwgdGhpcy5fYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwotICAgICAgICB0aGlzLnN0
YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFn
ZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQucmVzb2x2ZWQgJiYgV0ku
ZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCk7CisgICAgICAgIGlmICh0aGlzLl9i
cmVha3BvaW50LmVkaXRhYmxlKQorICAgICAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRv
Z2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHls
ZUNsYXNzTmFtZSwgdGhpcy5fYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAgIH0KIAorICAg
IHVwZGF0ZVRpdGxlcygpCisgICAgeworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNz
ZXMgaWYgbmVlZGVkLgorICAgIH0KKworICAgIC8vIFByaXZhdGUKKwogICAgIF9hZGRQcm9iZVNl
dChwcm9iZVNldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3Rh
bmNlb2YgV0kuUHJvYmVTZXQpOwpAQCAtMjMwLDE3ICsyMTEsNiBAQCBXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFs
VHJlZUVsZQogICAgICAgICB9LCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBk
YXRlZEFuaW1hdGlvbkR1cmF0aW9uKTsKICAgICB9CiAKLSAgICBfYnJlYWtwb2ludExvY2F0aW9u
RGlkQ2hhbmdlKGV2ZW50KQotICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFy
Z2V0ID09PSB0aGlzLl9icmVha3BvaW50KTsKLQotICAgICAgICAvLyBUaGUgQnJlYWtwb2ludCBo
YXMgYSBuZXcgZGlzcGxheSBTb3VyY2VDb2RlLiBUaGUgc2lkZWJhciB3aWxsIHJlbW92ZSB1cywg
YW5kIG9uZGV0YWNoKCkgd2lsbCBjbGVhciBsaXN0ZW5lcnMuCi0gICAgICAgIGlmIChldmVudC5k
YXRhLm9sZERpc3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLl9icmVha3BvaW50LmRpc3BsYXlTb3Vy
Y2VDb2RlKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxl
cygpOwotICAgIH0KLQogICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCiAg
ICAgewogICAgICAgICAvLyBUbyBwcmV2ZW50IHRoZSB0cmVlIGVsZW1lbnQgZnJvbSBzZWxlY3Rp
bmcuCkBAIC0yNTMsMTIgKzIyMyw5IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNz
IEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgfQog
fTsKIAotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NO
YW1lID0gImJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24iOwogV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50LlN0YXR1c0ltYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lID0gInN0YXR1cy1pbWFnZSI7
Ci1XSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NO
YW1lID0gInJlc29sdmVkIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUF1
dG9Db250aW51ZVN0eWxlQ2xhc3NOYW1lID0gImF1dG8tY29udGludWUiOwogV0kuQnJlYWtwb2lu
dFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJkaXNhYmxl
ZCI7Ci1XSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNz
TmFtZSA9ICJmb3JtYXR0ZWQtbG9jYXRpb24iOwogV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlBy
b2JlRGF0YVVwZGF0ZWRTdHlsZUNsYXNzTmFtZSA9ICJkYXRhLXVwZGF0ZWQiOwogCiBXSS5CcmVh
a3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uID0gNDAw
OyAvLyBtaWxsaXNlY29uZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKaW5kZXgg
NzVjYzdkNDZhNmE4NmI4ZTZhNDQyYmRhMDFiOTljNTJkZDk0YjJkNS4uNTdjM2M0MWJmNTQwODIz
MGQ3NjU4NWFlMGYzZjY4ZmViODI4NGI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1l
bnQuanMKQEAgLTEwNyw2ICsxMDcsMTQgQEAgV0kuQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBjbGFz
cyBDYWxsRnJhbWVUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWUKICAgICAg
ICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7CiAgICAgfQogCisgICAgcG9wdWxhdGVDb250ZXh0TWVu
dShjb250ZXh0TWVudSwgZXZlbnQpCisgICAgeworICAgICAgICBpZiAodGhpcy5fY2FsbEZyYW1l
LnNvdXJjZUNvZGVMb2NhdGlvbikKKyAgICAgICAgICAgIFdJLmFwcGVuZENvbnRleHRNZW51SXRl
bXNGb3JTb3VyY2VDb2RlKGNvbnRleHRNZW51LCB0aGlzLl9jYWxsRnJhbWUuc291cmNlQ29kZUxv
Y2F0aW9uKTsKKworICAgICAgICBzdXBlci5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51
LCBldmVudCk7CisgICAgfQorCiAgICAgLy8gUHJpdmF0ZQogCiAgICAgX3VwZGF0ZVN0YXR1cygp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRlbnRWaWV3LmpzCmluZGV4IDI5NmMyYTU0MjNhMGY2OTFlYWM3ZDJkMGU5MzYwMGY1MTU0
ZjBkZTguLjE5ZjY0YmQzOThmZTE1ZDI5MDFlYzJkODI3MTM4YTIxNjI0YjE3YzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRWaWV3LmpzCkBAIC05Myw3ICs5Myw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVu
dFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5NZWRp
YVRpbWVsaW5lVmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogICAgICAg
ICB9CiAKLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtw
b2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkgewor
ICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkg
ewogICAgICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbikK
ICAgICAgICAgICAgICAgICByZXR1cm4gV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2Vu
dGVkT2JqZWN0KHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291
cmNlQ29kZSwgZXh0cmFBcmd1bWVudHMpOwogICAgICAgICB9CkBAIC0yMzQsNyArMjM0LDcgQEAg
V0kuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuRnJhbWUpCiAgICAgICAgICAg
ICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3QubWFpblJlc291cmNlOwogCi0gICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRP
YmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKHJlcHJlc2Vu
dGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChy
ZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0
dXJuIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29k
ZTsKICAgICAgICAgfQpAQCAtMjc5LDcgKzI3OSw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuVGltZWxpbmUpCiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3Rh
bmNlb2YgV0kuQnJlYWtwb2ludCB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklz
c3VlTWVzc2FnZSkKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5J
c3N1ZU1lc3NhZ2UpCiAgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Quc291cmNl
Q29kZUxvY2F0aW9uOwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
SS5Mb2NhbFJlc291cmNlT3ZlcnJpZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRN
ZW51VXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKaW5kZXggZDBiNDA1MmQzMGRlZGNhYTkyNTZiY2Y4
NWY0MTJjMTMxZWRmNjcyNS4uZWMyY2M2NDVlZjkzMGI5YTc4MTgwYTc0OTVjZmE2OGJlNWQ2NDA5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGV4dE1lbnVVdGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMuanMKQEAgLTExOCw3ICsxMTgsNyBA
QCBXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yU291cmNlQ29kZSA9IGZ1bmN0aW9uKGNvbnRl
eHRNZW51LCBzb3VyY2VDb2RlT3JMb2NhdAogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJBZGQg
QnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEJyZWFrcG9pbnQobmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pKTsKKyAgICAgICAgICAg
ICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChuZXcgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQobG9jYXRpb24pKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9N
QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKaW5kZXggNmIzM2IyY2Uz
YzFmMmVlNGVhYTEzYzgzYWZhMzRhZGRiZjBhNDQ3Ni4uMTc0ZDIyYTM3MDBkOTE4YmY5YmJkNjFm
NDVhYjlkMzA1NWMwODdkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcworKysgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQuY3NzCkBAIC0yMywyOCArMjMsMjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KICAqLwogCi0uYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3Itc3VidHJlZS1tb2Rp
ZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9p
bnQuZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludFN1YnRyZWVNb2RpZmll
ZC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUt
bW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVh
a3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludEF0dHJpYnV0
ZU1vZGlmaWVkLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLW5v
ZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJy
ZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50Tm9kZVJlbW92ZWQt
bGlnaHQpOwogfQogCiBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAg
LmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90KC5icmVh
a3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5kb20uc3Vi
dHJlZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludFN1YnRyZWVNb2RpZmllZC1kYXJr
KTsKICAgICB9CiAKLSAgICAuYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRl
LW1vZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVt
LmJyZWFrcG9pbnQuZG9tLmF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24gewog
ICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2lu
dEF0dHJpYnV0ZU1vZGlmaWVkLWRhcmspOwogICAgIH0KIAotICAgIC5icmVha3BvaW50LmRvbS5i
cmVha3BvaW50LWZvci1ub2RlLXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5kb20ubm9kZS1yZW1vdmVkOm5vdCgucGF1c2Vk
KSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNE
T01CcmVha3BvaW50Tm9kZVJlbW92ZWQtZGFyayk7CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpp
bmRleCBhZDZiYjFhMTQ5MjIyY2MzZDY3MWI2ZmRiZTJjNDQ4MmMwZDUwYjY3Li42M2U2MTZhOTE3
YTIwNjAzNzdiM2Y1YWUwNGFmYzA2YjAzYjk3YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtw
b2ludFRyZWVFbGVtZW50LmpzCkBAIC0yMywyNiArMjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBj
bGFzcyBET01CcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1l
bnQKK1dJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9pbnRUcmVl
RWxlbWVudCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVj
dG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9y
KGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50KTsKIAot
ICAgICAgICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJkb20iLCBgYnJlYWtwb2lu
dC1mb3ItJHticmVha3BvaW50LnR5cGV9YF07Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAg
ICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFBcnJheS5p
c0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOworICAgICAg
ICBjbGFzc05hbWVzLnB1c2goImRvbSIsIGJyZWFrcG9pbnQudHlwZSk7CiAKICAgICAgICAgaWYg
KCF0aXRsZSkKICAgICAgICAgICAgIHRpdGxlID0gV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LmRpc3BsYXlOYW1lRm9yVHlwZShicmVha3BvaW50LnR5cGUpOwogCi0gICAgICAgIGNvbnN0IHN1
YnRpdGxlID0gbnVsbDsKLSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxl
LCBicmVha3BvaW50KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVz
LnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3Rh
dHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1l
bnRTdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVs
eSA9IHRydWU7CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0p
OwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtNjEsMTA4ICs1NSw0IEBAIFdJLkRPTUJyZWFr
cG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRz
IFdJLkdlbmVyYWxUCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogICAgIH0K
LQotICAgIC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAgc3Vw
ZXIub25hdHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50
TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhp
cy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERp
ZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlj
a2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9j
dXNlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsKLSAgICAg
ICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSB0aGlzLl9zdGF0dXNJ
bWFnZUVsZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5h
ZGRFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xp
Y2tlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhp
cy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1l
bnRNb3VzZURvd24pOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwotICAgIH0KLQot
ICAgIG9uZGV0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7Ci0KLSAgICAg
ICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGws
IHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihu
dWxsLCBudWxsLCB0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0gICAg
ICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRT
dGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3Vz
ZURvd24pOwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9
IG51bGw7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IG51
bGw7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gbnVs
bDsKLSAgICB9Ci0KLSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBzZXQgdGhp
cyBmbGFnIHNvIHRoYXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwotICAgICAg
ICAvLyBCcmVha3BvaW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRlbGV0
ZWQgZnJvbQotICAgICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0c2lk
ZSBpdCAoZS5nLiBUZXh0RWRpdG9yKS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxldGVL
ZXlib2FyZFNob3J0Y3V0ID0gdHJ1ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMu
X3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAg
b25zcGFjZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAg
ICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4
dE1lbnUsIGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0OwotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVkID8g
V0kuVUlTdHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJsZSBC
cmVha3BvaW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRoaXMu
X3RvZ2dsZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kSXRlbShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgZnVuY3Rpb24oKSB7Ci0g
ICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludChicmVh
a3BvaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0
YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl90b2dn
bGVCcmVha3BvaW50KCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQo
ZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdl
RWxlbWVudE1vdXNlRG93bihldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBl
bGVtZW50IHNlbGVjdGlvbi4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAg
fQotCi0gICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNl
bnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwot
ICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0
YXR1cykKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xp
c3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5
bGVDbGFzc05hbWUsIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0
aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0
dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3Bv
aW50c0VuYWJsZWQpOwotICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5k
ZXggNzk5ZjY4Y2NiNjJkYTBiYTUzYmRhMDQ5OWJhYjIxZmYxMTE2ZGRlMS4uZjUzYjFmNDU0NWZh
ODZkOGIxYzIyZTQ1YmY2ZDEzZTNkZWQ2NDgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmll
dy5qcwpAQCAtOTUsNyArOTUsNyBAQCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01U
cmVlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICAgICAgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LkRPTUJyZWFrcG9pbnRBZGRlZCwgdGhpcy5fZG9tQnJlYWtwb2ludEFkZGVkT3JSZW1vdmVk
LCB0aGlzKTsKICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwgdGhp
cy5fZG9tQnJlYWtwb2ludEFkZGVkT3JSZW1vdmVkLCB0aGlzKTsKIAotICAgICAgICAgICAgV0ku
RE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRl
Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9o
YW5kbGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICAg
ICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZl
bnQuRE9NTm9kZUNoYW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdl
ZCwgdGhpcyk7CiAKICAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5n
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4
IDRmYzNjNGE2ZmRjZjZmOTE2NDNkYmFlODZkMjIyNjJmNTFmMTMyNTMuLjE2MWNlZGNmMTI3ZThm
MmJiMzVlNTFmNjZmZjM0MTkxZDM0ZTYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFr
cG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTIzLDM2ICsyMywzNiBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQt
Zm9yLWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsK
Ky5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNv
biB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtw
b2ludEFuaW1hdGlvbkZyYW1lLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtw
b2ludC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7Cisu
aXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAg
Y29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludEludGVy
dmFsLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVu
ZXI6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50
LmV2ZW50Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4u
L0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludExpc3RlbmVyLWxpZ2h0KTsKIH0K
IAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJyZWFrcG9p
bnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZXZlbnQudGltZW91dDpu
b3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNFdmVudEJyZWFrcG9pbnRUaW1lb3V0LWxpZ2h0KTsKIH0KIAogQG1lZGlhKHByZWZlcnMt
Y29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1m
b3ItYW5pbWF0aW9uLWZyYW1lOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24gewor
ICAgIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAu
aWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVu
dEJyZWFrcG9pbnRBbmltYXRpb25GcmFtZS1kYXJrKTsKICAgICB9Ci0gICAgCi0gICAgLmJyZWFr
cG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNl
ZC1pY29uKSAuaWNvbiB7CisKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5v
dCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUlj
b25zLnN2ZyNFdmVudEJyZWFrcG9pbnRJbnRlcnZhbC1kYXJrKTsKICAgICB9Ci0gICAgCi0gICAg
LmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVha3BvaW50
LXBhdXNlZC1pY29uKSAuaWNvbiB7CisKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50Lmxpc3Rl
bmVyOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
VHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRMaXN0ZW5lci1kYXJrKTsKICAgICB9Ci0gICAg
Ci0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJyZWFr
cG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKworICAgIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQu
dGltZW91dDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1h
Z2VzL1R5cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50VGltZW91dC1kYXJrKTsKLSAgICB9ICAg
CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpp
bmRleCBlMGJmZWJmMTFkOTE2MDJkNDk5MGYyN2IzODdhYWU5YmIwYWMxZDg5Li45Y2Y0YTdkNWI5
YjRiMzk3ODNjOWZjZGFmOWRkNThjNDY4NWZlZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMTM2ICsyMywxOSBAQAogICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVt
ZW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFs
VHJlZUVsZW1lbnQKK1dJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgRXZlbnRC
cmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQKIHsK
LSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAg
ICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30pCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRC
cmVha3BvaW50KTsKIAotICAgICAgICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJl
dmVudCIsIGBicmVha3BvaW50LWZvci0ke2JyZWFrcG9pbnQudHlwZX1gXTsKLSAgICAgICAgaWYg
KGNsYXNzTmFtZSkKLSAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc05hbWUpOworICAg
ICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05h
bWVzID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiZXZlbnQiLCBicmVha3BvaW50LnR5
cGUpOwogCiAgICAgICAgIGlmICghdGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9IGJyZWFrcG9p
bnQuZXZlbnROYW1lOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAg
c3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAgICAg
ICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0Jy
ZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFr
cG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQotICAg
ICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAgfQotCi0gICAg
Ly8gUHJvdGVjdGVkCi0KLSAgICBvbmF0dGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmF0
dGFjaCgpOwotCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5l
cihXSS5FdmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX3Vw
ZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFu
Z2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZC5i
aW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQg
PSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVzSW1hZ2VF
bGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQp
OwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91
c2VEb3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAgICBv
bmRldGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAgIHRo
aXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlz
KTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0
aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVz
SW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3du
KTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBudWxs
OwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxsOwot
ICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7Ci0g
ICAgfQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxh
ZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAgICAgLy8g
QnJlYWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVkIGZy
b20KLSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQg
KGUuZy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9h
cmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
ZXZlbnRMaXN0ZW5lcikKLSAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIodGhpcy5yZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3RlbmVyKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2
ZW50QnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2ds
ZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25zcGFj
ZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUs
IGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0OwotCi0gICAgICAgIGxldCBsYWJlbCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQgPyBXSS5V
SVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFr
cG9pbnQiKTsKLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShsYWJlbCwgdGhpcy5fdG9n
Z2xlQnJlYWtwb2ludC5iaW5kKHRoaXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJ
dGVtKFdJLlVJU3RyaW5nKCJEZWxldGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAg
ICBpZiAoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKQotICAgICAgICAgICAgICAgIFdJLmRvbU1h
bmFnZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoYnJlYWtwb2ludC5ldmVudExp
c3RlbmVyKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB9KTsK
LSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tl
ZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICB9
Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVudCkKLSAgICB7Ci0gICAgICAg
IC8vIFByZXZlbnQgdHJlZSBvdXRsaW5lIGZvY3VzLgotICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50
KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1lbnQgc2VsZWN0aW9uLgotICAg
ICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfdG9nZ2xlQnJlYWtw
b2ludCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkID0g
IXRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0
YXR1cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQotICAgICAgICAgICAgcmV0
dXJuOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2lu
dFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhpcy5yZXBy
ZXNlbnRlZE9iamVjdC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50
b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNs
YXNzTmFtZSwgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCk7CisgICAgICAg
IHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOwogICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExp
c3RlbmVyU2VjdGlvbkdyb3VwLmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzCmluZGV4IDQ3NjU3NTJlMmYw
MDNjY2U0M2M0OWEyYjZlN2NhZGZkYWMyOThmMjkuLmNkNWRmZmI0ZTdmYTNiNjRiOWYxOGY2ZGJk
OGQwNmRiYTk4N2ZiM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3Jv
dXAuY3NzCkBAIC0zNCwzICszNCwxMSBAQAogICAgIGhlaWdodDogMTJweDsKICAgICBtYXJnaW46
IDA7CiB9CisKKy5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0i
Y2hlY2tib3giXSArIC5nby10by1hcnJvdyB7CisgICAgdmVydGljYWwtYWxpZ246IC0ycHg7Cit9
CisKKy5ldmVudC1saXN0ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2ti
b3giXTpub3QoOmNoZWNrZWQpICsgLmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBub25lOwor
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKaW5kZXggNjg2Zjlm
Nzk1ZmFmMTg5MGM2YjA5Y2U4MDM1ODBhY2I2N2M5YjViNS4uZWYxYmEzNWJjM2I3YjlhZTljYTMw
NzY4YzA4NDg3NTM4OWRhNmYzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlv
bkdyb3VwLmpzCkBAIC03Miw3ICs3Miw5IEBAIFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAg
PSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwIGV4dGVuZHMgV0kuRGV0YWlsCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChXSS5ET01NYW5hZ2VyLnN1cHBvcnRzRXZlbnRM
aXN0ZW5lckJyZWFrcG9pbnRzKCkpIHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3Rl
bmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1
dCIpOworICAgICAgICAgICAgICAgIGxldCB0b2dnbGVDb250YWluZXIgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJzcGFuIik7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVy
QnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQgPSB0b2dnbGVDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKSk7CiAgICAgICAgICAgICAgICAgdGhpcy5fZXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOwogICAg
ICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRUb2dnbGUoKTsKICAgICAgICAgICAg
ICAgICB0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQuYWRkRXZlbnRM
aXN0ZW5lcigiY2hhbmdlIiwgKGV2ZW50KSA9PiB7CkBAIC04MCwxMyArODIsMjYgQEAgV0kuRXZl
bnRMaXN0ZW5lclNlY3Rpb25Hcm91cCA9IGNsYXNzIEV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAg
ZXh0ZW5kcyBXSS5EZXRhaWwKICAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNFdmVudExpc3Rl
bmVyQnJlYWtwb2ludCA9ICEhdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVt
ZW50LmNoZWNrZWQ7CiAgICAgICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgICAgICAgICBpZiAo
V0kuRE9NTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50Q29uZmlndXJhdGlv
bigpKSB7CisgICAgICAgICAgICAgICAgICAgIGxldCByZXZlYWxCcmVha3BvaW50R29Ub0Fycm93
ID0gdG9nZ2xlQ29udGFpbmVyLmFwcGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigp
KTsKKyAgICAgICAgICAgICAgICAgICAgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdy50aXRsZSA9
IFdJLlVJU3RyaW5nKCJSZXZlYWwgaW4gU291cmNlcyBUYWIiKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChl
dmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5o
YXNFdmVudExpc3RlbmVyQnJlYWtwb2ludCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxl
dCBicmVha3BvaW50VG9TZWxlY3QgPSBXSS5kb21NYW5hZ2VyLmJyZWFrcG9pbnRGb3JFdmVudExp
c3RlbmVySWQodGhpcy5fZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludFRvU2VsZWN0KTsKKworICAg
ICAgICAgICAgICAgICAgICAgICAgV0kuc2hvd1NvdXJjZXNUYWIoe2JyZWFrcG9pbnRUb1NlbGVj
dH0pOworICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAg
ICAgICAgICAgICBsZXQgdG9nZ2xlTGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFu
Iik7CiAgICAgICAgICAgICAgICAgdG9nZ2xlTGFiZWwudGV4dENvbnRlbnQgPSBXSS5VSVN0cmlu
ZygiQnJlYWtwb2ludCIpOwogICAgICAgICAgICAgICAgIHRvZ2dsZUxhYmVsLmFkZEV2ZW50TGlz
dGVuZXIoImNsaWNrIiwgKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V2
ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudC5jbGljaygpOwogICAgICAgICAgICAg
ICAgIH0pOwogCi0gICAgICAgICAgICAgICAgcm93cy5wdXNoKG5ldyBXSS5EZXRhaWxzU2VjdGlv
blNpbXBsZVJvdyh0b2dnbGVMYWJlbCwgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dn
bGVFbGVtZW50KSk7CisgICAgICAgICAgICAgICAgcm93cy5wdXNoKG5ldyBXSS5EZXRhaWxzU2Vj
dGlvblNpbXBsZVJvdyh0b2dnbGVMYWJlbCwgdG9nZ2xlQ29udGFpbmVyKSk7CiAgICAgICAgICAg
ICB9CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2lu
dFRyZWVFbGVtZW50LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MWU5YTExOWUwNWFkYzcxMTUxYzUyY2Q4YWM0
MjJkNDkzMzZkYWUxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAg
LTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZSB7CisgICAgZmlsdGVyOiBncmF5c2NhbGUoKTsK
K30KKworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdl
LnJlc29sdmVkIHsKKyAgICBmaWx0ZXI6IG5vbmU7Cit9CisKK2JvZHk6bm90KC53aW5kb3ctaW5h
Y3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhp
biAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMt
aW1hZ2UucmVzb2x2ZWQgeworICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1j
b2xvcik7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3VidGl0bGUuZm9ybWF0
dGVkLWxvY2F0aW9uIHsKKyAgICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy8qIFdoZW4gYW5p
bWF0aW5nIGEgbGF5ZXIgb24gdG9wIG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwgbW92ZSB0aGUg
bWFpbgoraWNvbiB0byB0aGUgaWNvbiBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBhbmltYXRpb25z
IGFyZSBsYXllcmVkIG9uIHRvcC4gKi8KKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5l
IC5pY29uIHsKKyAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjUmVzdWx0TGluZS1saWdodCk7CisgICAgY29udGVudDogJyc7Cit9CisKKy5pdGVtLmJyZWFr
cG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uID4gc3BhbiB7CisgICAgcG9zaXRpb246IGFic29s
dXRlOworICAgIHRvcDogMDsKKyAgICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVm
dDogMDsKKworICAgIGJvcmRlci1yYWRpdXM6IDUwJTsKKyAgICB0cmFuc2Zvcm06IHNjYWxlKDAp
OworICAgIHRyYW5zaXRpb246IG5vbmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxNiwg
MzAlLCA0MiUpOworfQorCisuZGF0YS11cGRhdGVkLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0
LmxpbmUgLmljb24gPiBzcGFuIHsKKyAgICBib3JkZXItcmFkaXVzOiAwOworICAgIHRyYW5zZm9y
bTogc2NhbGUoMC44NSk7CisgICAgdHJhbnNpdGlvbjogYWxsIC40cyBlYXNlLW91dDsKKyAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxNiwgMzAlLCA0MiUsIDAuMSk7Cit9CisKKy5pdGVtLmJy
ZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24geworICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1saWdodCk7
Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNlcHRpb24gLmljb24geworICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tbGlnaHQpOwor
fQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuYXNzZXJ0aW9uIC5pY29uIHsKKyAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWxpZ2h0KTsKK30K
KworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7CisgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1saWdodCk7Cit9CisK
K0BtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsKKyAgICAuaXRlbS5icmVha3Bv
aW50LmphdmFzY3JpcHQubGluZSAuaWNvbiB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVy
bCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRhcmspOworICAgIH0KKworICAg
IC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24gewor
ICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRGVidWdnZXJTdGF0
ZW1lbnQtZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmV4
Y2VwdGlvbiAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNFeGNlcHRpb24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZh
c2NyaXB0LmFzc2VydGlvbiAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMv
VHlwZUljb25zLnN2ZyNBc3NlcnRpb24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtw
b2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stZGFyayk7CisgICAgfQorfQpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtw
b2ludFRyZWVFbGVtZW50LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjRlNjQ2YzI1YzlkNjFmNzYzOWNmNmEzZTUx
ZDc0ZTFjMGM2MGI4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBA
IC0wLDAgKzEsOTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkphdmFTY3JpcHRCcmVha3BvaW50
VHJlZUVsZW1lbnQgPSBjbGFzcyBKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVu
ZHMgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50Cit7CisgICAgY29uc3RydWN0b3IoYnJlYWtwb2lu
dCwge2NsYXNzTmFtZXMsIHRpdGxlfSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KTsKKworICAg
ICAgICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05h
bWVzID0gWyJsaW5lIl07CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiamF2YXNjcmlwdCIpOwor
CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOworCisgICAg
ICAgIGlmICghdGl0bGUpCisgICAgICAgICAgICB0aGlzLmxpc3RlbmVyU2V0LnJlZ2lzdGVyKGJy
ZWFrcG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdl
LCB0aGlzLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOworICAgICAgICB0aGlzLmxpc3Rl
bmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50
LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMudXBkYXRlU3RhdHVzKTsKKyAgICB9CisKKyAg
ICAvLyBQdWJsaWMKKworICAgIGdldCBmaWx0ZXJhYmxlRGF0YSgpCisgICAgeworICAgICAgICBy
ZXR1cm4ge3RleHQ6IFt0aGlzLmJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXJdfTsKKyAgICB9
CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIHVwZGF0ZVN0YXR1cygpCisgICAgeworICAgICAg
ICBzdXBlci51cGRhdGVTdGF0dXMoKTsKKworICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQorICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUo
InJlc29sdmVkIiwgdGhpcy5icmVha3BvaW50LnJlc29sdmVkICYmIFdJLmRlYnVnZ2VyTWFuYWdl
ci5icmVha3BvaW50c0VuYWJsZWQpOworICAgIH0KKworICAgIHVwZGF0ZVRpdGxlcygpCisgICAg
eworICAgICAgICBzdXBlci51cGRhdGVUaXRsZXMoKTsKKworICAgICAgICBsZXQgc291cmNlQ29k
ZUxvY2F0aW9uID0gdGhpcy5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKKworICAgICAg
ICBsZXQgZGlzcGxheUxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheUxpbmVO
dW1iZXI7CisgICAgICAgIGxldCBkaXNwbGF5Q29sdW1uTnVtYmVyID0gc291cmNlQ29kZUxvY2F0
aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7CisgICAgICAgIGlmIChkaXNwbGF5Q29sdW1uTnVtYmVy
ID4gMCkKKyAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQ6
JWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxLCBkaXNwbGF5Q29sdW1uTnVtYmVyICsg
MSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYXJlIDEtYmFz
ZWQuCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJp
bmcoIkxpbmUgJWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxKTsgLy8gVGhlIHVzZXIg
dmlzaWJsZSBsaW5lIG51bWJlciBpcyAxLWJhc2VkLgorCisgICAgICAgIGlmIChzb3VyY2VDb2Rl
TG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICAgICAgdGhpcy5zdWJ0aXRs
ZSA9IHNvdXJjZUNvZGVMb2NhdGlvbi5mb3JtYXR0ZWRMb2NhdGlvblN0cmluZygpOworCisgICAg
ICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc0Zvcm1hdHRlZExvY2F0aW9uKCkpCisg
ICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZm9ybWF0
dGVkLWxvY2F0aW9uIik7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5z
dWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgiZm9ybWF0dGVkLWxvY2F0aW9uIik7CisK
KyAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMubWFpblRpdGxlICsgIiBcdTIwMTQgIiAr
IFdJLlVJU3RyaW5nKCJvcmlnaW5hbGx5ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2NhdGlvbi5v
cmlnaW5hbExvY2F0aW9uU3RyaW5nKCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJp
dmF0ZQorCisgICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZShldmVudCkKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdldCA9PT0gdGhpcy5icmVha3BvaW50KTsK
KworICAgICAgICAvLyBUaGUgQnJlYWtwb2ludCBoYXMgYSBuZXcgZGlzcGxheSBTb3VyY2VDb2Rl
LiBUaGUgc2lkZWJhciB3aWxsIHJlbW92ZSB1cywgYW5kIG9uZGV0YWNoKCkgd2lsbCBjbGVhciBs
aXN0ZW5lcnMuCisgICAgICAgIGlmIChldmVudC5kYXRhLm9sZERpc3BsYXlTb3VyY2VDb2RlID09
PSB0aGlzLmJyZWFrcG9pbnQuZGlzcGxheVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdGhpcy51cGRhdGVUaXRsZXMoKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lk
ZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
UHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCmluZGV4IDEzNDUzYzI1Y2FjZjI5MjIwZmRlZTQ0
ODBlMTlkYjBlNjM4MTk5ZTcuLjg4MzBmM2MxZDcwZDc4MWQyN2Y1ZTZhMTA3ZTU0MGJjZWYzYjMx
ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1Byb2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTY4LDYg
KzY4LDExIEBAIFdJLlByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFByb2JlRGV0YWls
c1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbHNTCiAgICAgICAgIH0pOwogCiAgICAgICAg
IGluc3BlY3RlZFByb2JlU2V0cy5zb3J0KGZ1bmN0aW9uIHNvcnRCeVNvdXJjZUxvY2F0aW9uKGFQ
cm9iZVNldCwgYlByb2JlU2V0KSB7CisgICAgICAgICAgICBpZiAoIShhUHJvYmVTZXQgaW5zdGFu
Y2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7
CisgICAgICAgICAgICBpZiAoIShiUHJvYmVTZXQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworCiAgICAgICAgICAgICB2YXIg
YUxvY2F0aW9uID0gYVByb2JlU2V0LmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOwogICAg
ICAgICAgICAgdmFyIGJMb2NhdGlvbiA9IGJQcm9iZVNldC5icmVha3BvaW50LnNvdXJjZUNvZGVM
b2NhdGlvbjsKICAgICAgICAgICAgIHZhciBjb21wYXJpc29uUmVzdWx0ID0gYUxvY2F0aW9uLnNv
dXJjZUNvZGUuZGlzcGxheU5hbWUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGJMb2NhdGlvbi5zb3Vy
Y2VDb2RlLmRpc3BsYXlOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpz
CmluZGV4IDgzNzczN2MwZDNhZDI4ZjhmNjUwNmQ3NmZmMTU5MDZlODM1NzE1OWUuLmM1NGRkNzcy
MmZmNzFkMzljZjVkNzBiMDI2ODY4MGY3NjZlYjhjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXRE
ZXRhaWxzU2VjdGlvbi5qcwpAQCAtMzAsNiArMzAsMjAgQEAgV0kuUHJvYmVTZXREZXRhaWxzU2Vj
dGlvbiA9IGNsYXNzIFByb2JlU2V0RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXSS5EZXRhaWxzU2Vj
dGkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2YgV0ku
UHJvYmVTZXQsICJJbnZhbGlkIFByb2JlU2V0IGFyZ3VtZW50OiIsIHByb2JlU2V0KTsKIAorICAg
ICAgICBsZXQgdGl0bGUgPSAiIjsKKyAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgaW5z
dGFuY2VvZiBXSS5FdmVudEJyZWFrcG9pbnQpIHsKKyAgICAgICAgICAgIGlmIChwcm9iZVNldC5i
cmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwgQW5pbWF0
aW9uIEZyYW1lcyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9
PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAg
ICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIEludGVydmFscyIpOworICAgICAgICAg
ICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0
cmluZygiQWxsIEV2ZW50cyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtw
b2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwgVGltZW91dHMiKTsKKyAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aXRsZSA9IHByb2JlU2V0LmJyZWFrcG9pbnQu
ZXZlbnROYW1lOworICAgICAgICB9CisKICAgICAgICAgdmFyIG9wdGlvbnNFbGVtZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBX
SS5Qcm9iZVNldERhdGFHcmlkKHByb2JlU2V0KTsKIApAQCAtMzgsNyArNTIsNyBAQCBXSS5Qcm9i
ZVNldERldGFpbHNTZWN0aW9uID0gY2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBleHRlbmRz
IFdJLkRldGFpbHNTZWN0aQogCiAgICAgICAgIHZhciBwcm9iZVNlY3Rpb25Hcm91cCA9IG5ldyBX
SS5EZXRhaWxzU2VjdGlvbkdyb3VwKFtzaW5nbGV0b25Sb3ddKTsKIAotICAgICAgICBzdXBlcigi
cHJvYmUiLCAiIiwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOworICAgICAg
ICBzdXBlcigicHJvYmUiLCB0aXRsZSwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1l
bnQpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9iZS1zZXQiKTsK
IApAQCAtNjUsMTAgKzc5LDEyIEBAIFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBQ
cm9iZVNldERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV0kuRGV0YWlsc1NlY3RpCiAgICAgICAgIHRo
aXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNldC5FdmVu
dC5TYW1wbGVBZGRlZCwgdGhpcy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAgICAgICAgIHRo
aXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNldC5FdmVu
dC5TYW1wbGVzQ2xlYXJlZCwgdGhpcy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAKLSAgICAg
ICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50J3MgcmVzb2x2
ZWQgc3RhdGUgY2hhbmdlcywKLSAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEgbGl2
ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCi0gICAgICAgIHRoaXMuX3VwZGF0ZUxpbmtF
bGVtZW50KCk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2Jl
U2V0LmJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5n
ZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQpOworICAgICAgICBpZiAodGhpcy5fcHJvYmVTZXQu
YnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSB7CisgICAgICAg
ICAgICAvLyBVcGRhdGUgdGhlIHNvdXJjZSBsaW5rIHdoZW4gdGhlIGJyZWFrcG9pbnQncyByZXNv
bHZlZCBzdGF0ZSBjaGFuZ2VzLAorICAgICAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21l
IGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICB0aGlzLl91
cGRhdGVMaW5rRWxlbWVudCgpOworICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0
ZXIodGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludCwgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZl
bnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQpOworICAg
ICAgICB9CiAKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQuaW5zdGFsbCgpOwogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJj
ZUNvZGVUZXh0RWRpdG9yLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKaW5kZXggNmEzMGJkZDJmMTcwZDdlZmZlMjE0
YWVkNjJhNTE3MDBhMmRiNmIyMC4uNDY2MTliZjZhMzFjZjIyNTE3YTU5Y2M1YTgwNTk3OGJmMTEy
ZjU0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTY2LDEwICs2Niwx
MSBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9y
IGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFk
ZCgic291cmNlLWNvZGUiKTsKIAogICAgICAgICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcp
IHsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNE
aWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9icmVh
a3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQu
YWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICAgICAg
V0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRp
b25EaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7CisgICAg
ICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFr
cG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1
c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdl
LCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICAgICAg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3Rh
dHVzRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25E
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7CiAKICAgICAg
ICAgICAgIFdJLnRhcmdldE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2Vy
LkV2ZW50LlRhcmdldEFkZGVkLCB0aGlzLl90YXJnZXRBZGRlZCwgdGhpcyk7CiAgICAgICAgICAg
ICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVu
dC5UYXJnZXRSZW1vdmVkLCB0aGlzLl90YXJnZXRSZW1vdmVkLCB0aGlzKTsKQEAgLTE2Nyw3ICsx
NjgsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRp
dG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgIGNsb3NlKCkKICAgICB7CiAgICAgICAgIGlm
ICh0aGlzLl9zdXBwb3J0c0RlYnVnZ2luZykgewotICAgICAgICAgICAgV0kuQnJlYWtwb2ludC5y
ZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICAgICAgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsK
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwogICAgICAgICAgICAgV0kudGFyZ2V0TWFuYWdlci5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCkBAIC0xMzA1LDcgKzEzMDYsNyBAQCBXSS5Tb3Vy
Y2VDb2RlVGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0ku
VGV4dEVkaXRvcgogICAgICAgICB2YXIgZWRpdG9yTGluZUluZm8gPSB7bGluZU51bWJlciwgY29s
dW1uTnVtYmVyfTsKICAgICAgICAgdmFyIHVuZm9ybWF0dGVkTGluZUluZm8gPSB0aGlzLl91bmZv
cm1hdHRlZExpbmVJbmZvRm9yRWRpdG9yTGluZUluZm8oZWRpdG9yTGluZUluZm8pOwogICAgICAg
ICB2YXIgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5fc291cmNlQ29kZS5jcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb24odW5mb3JtYXR0ZWRMaW5lSW5mby5saW5lTnVtYmVyLCB1bmZvcm1hdHRlZExp
bmVJbmZvLmNvbHVtbk51bWJlcik7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJy
ZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBu
ZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0aW9uKTsKIAogICAgICAg
ICB2YXIgbGluZUluZm8gPSB0aGlzLl9lZGl0b3JMaW5lSW5mb0ZvclNvdXJjZUNvZGVMb2NhdGlv
bihicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX2FkZEJyZWFr
cG9pbnRXaXRoRWRpdG9yTGluZUluZm8oYnJlYWtwb2ludCwgbGluZUluZm8pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBmYWJmM2VjMWVm
OWNiMTM2Y2IyODcwYTU0ODY3NGQxYmE4NDMzNTUxLi5lZjRiZDI0YjcwOTdiNzEzODUwM2M2ZTEw
NjU1ZDViM2JmMTdlMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbC5qcwpAQCAtMTY5LDcgKzE2OSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
CiAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUub25kZWxldGUgPSAoc2VsZWN0
ZWRUcmVlRWxlbWVudCkgPT4gewogICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc2VsZWN0ZWRU
cmVlRWxlbWVudC5zZWxlY3RlZCk7CiAKLSAgICAgICAgICAgIGlmICghV0kuZGVidWdnZXJNYW5h
Z2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0KSkgeworICAgICAgICAgICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2Vu
dGVkT2JqZWN0LnJlbW92YWJsZSkgewogICAgICAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudFRv
U2VsZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC5uZXh0U2VsZWN0YWJsZVNpYmxpbmc7CiAgICAg
ICAgICAgICAgICAgaWYgKHRyZWVFbGVtZW50VG9TZWxlY3QpIHsKICAgICAgICAgICAgICAgICAg
ICAgY29uc3Qgb21pdEZvY3VzID0gdHJ1ZTsKQEAgLTMyNiw3ICszMjYsNyBAQCBXSS5Tb3VyY2Vz
TmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsIGV4dGVuZHMgVwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlz
Ll9oYW5kbGVEZWJ1Z2dlckFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAg
IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5XYWl0aW5nVG9QYXVzZSwgdGhpcy5faGFuZGxlRGVidWdnZXJXYWl0aW5nVG9QYXVzZSwg
dGhpcyk7CiAKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFr
cG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dl
ck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQu
RXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVj
dERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLklzc3VlTWVzc2Fn
ZS5hZGRFdmVudExpc3RlbmVyKFdJLklzc3VlTWVzc2FnZS5FdmVudC5EaXNwbGF5TG9jYXRpb25E
aWRDaGFuZ2UsIHRoaXMuX2hhbmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hh
bmdlLCB0aGlzKTsKIAogICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRE9NQnJl
YWtwb2ludERPTU5vZGVDaGFuZ2VkLCB0aGlzKTsKQEAgLTM4NywxNyArMzg3LDE3IEBAIFdJLlNv
dXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIH0KIAogICAgICAgICBpZiAoV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLnN1cHBvcnRlZCkgewotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dB
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAg
ICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlv
bkZyYW1lc0JyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Muc2hvd0Fs
bFRpbWVvdXRzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1l
b3V0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2lu
dChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsKIAotICAgICAg
ICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlKQot
ICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQo
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpOworICAgICAgICAg
ICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAg
ICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bEludGVydmFsc0JyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Muc2hv
d0FsbExpc3RlbmVyc0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
TGlzdGVuZXJzQnJlYWtwb2ludCk7CisgICAgICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJl
YWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCk7CiAK
ICAgICAgICAgICAgIGZvciAobGV0IGV2ZW50QnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIubGlzdGVuZXJCcmVha3BvaW50cykKICAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVh
a3BvaW50KGV2ZW50QnJlYWtwb2ludCk7CkBAIC00NTIsNyArNDUyLDcgQEAgV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCBleHRlbmRzIFcKICAgICAgICAgV0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5l
cihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgICAgICBXSS5C
cmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgICAg
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwg
dGhpcyk7CiAgICAgICAgIFdJLklzc3VlTWVzc2FnZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGws
IG51bGwsIHRoaXMpOwogICAgICAgICBXSS5ET01CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVu
ZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2
ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJl
ZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNl
cHRpb25zQnJlYWtwb2ludCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRF
eGNlcHRpb25zQnJlYWtwb2ludCwKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRy
ZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0
aW9uRmFpbHVyZXNCcmVha3BvaW50LAotICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4g
dHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgfHwgdHJlZUVs
ZW1lbnQgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGlu
c3RhbmNlb2YgV0kuU2NyaXB0VHJlZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgKHRyZWVFbGVt
ZW50KSA9PiB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJl
ZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVFbGVtZW50
IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuU2NyaXB0VHJlZUVsZW1lbnQsCiAgICAgICAg
ICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9
PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3JvdGFza3NCcmVha3BvaW50LAogICAgICAgICAg
ICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LAogICAg
ICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmpl
Y3QgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQsCkBAIC0x
MjI0LDggKzEyMjQsOCBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNz
IFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gMTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGEgaW5zdGFu
Y2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgYiBpbnN0YW5jZW9mIFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZUJyZWFr
cG9pbnRUcmVlRWxlbWVudHMoYSwgYik7CisgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgYiBpbnN0YW5jZW9mIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKTsKIAogICAgICAg
ICAgICAgcmV0dXJuIGEubWFpblRpdGxlLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLm1haW5UaXRs
ZSkgfHwgYS5zdWJ0aXRsZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi5zdWJ0aXRsZSk7CiAgICAg
ICAgIH07CkBAIC0xMjMzLDcgKzEyMzMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAg
ICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5zZXJ0aW9u
SW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKHRyZWVFbGVtZW50LCBwYXJlbnRU
cmVlRWxlbWVudC5jaGlsZHJlbiwgY29tcGFyYXRvcikpOwogICAgIH0KIAotICAgIF9jb21wYXJl
QnJlYWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKQorICAgIF9jb21wYXJlSmF2YVNjcmlwdEJyZWFr
cG9pbnRUcmVlRWxlbWVudHMoYSwgYikKICAgICB7CiAgICAgICAgIGlmICghYS5yZXByZXNlbnRl
ZE9iamVjdCB8fCAhYi5yZXByZXNlbnRlZE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiAwOwpA
QCAtMTI1MSw3ICsxMjUxLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBj
bGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgaWYg
KHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGJyZWFrcG9pbnQp
KQogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAKLSAgICAgICAgbGV0IGNvbnN0cnVjdG9yID0g
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50OworICAgICAgICBsZXQgY29uc3RydWN0b3IgPSBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50OwogICAgICAgICBsZXQgb3B0aW9ucyA9IHt9
OwogICAgICAgICBsZXQgcGFyZW50VHJlZUVsZW1lbnQgPSB0aGlzLl9icmVha3BvaW50c1RyZWVP
dXRsaW5lOwogCkBAIC0xMjY5LDE5ICsxMjY5LDE5IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
CiAgICAgICAgIH07CiAKICAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVnZ2VyTWFu
YWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25z
LmNsYXNzTmFtZSA9ICJicmVha3BvaW50LWRlYnVnZ2VyLXN0YXRlbWVudC1pY29uIjsKKyAgICAg
ICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9IFsiZGVidWdnZXItc3RhdGVtZW50Il07CiAgICAg
ICAgICAgICBvcHRpb25zLnRpdGxlID0gV0kuVUlTdHJpbmcoIkRlYnVnZ2VyIFN0YXRlbWVudHMi
KTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1l
ID0gImJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFz
c05hbWVzID0gWyJleGNlcHRpb24iXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5y
ZXBlYXRlZFVJU3RyaW5nLmFsbEV4Y2VwdGlvbnMoKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVh
a3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2lu
dCkgewotICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1leGNlcHRp
b24taWNvbiI7CisgICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImV4Y2VwdGlvbiJd
OwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLnJlcGVhdGVkVUlTdHJpbmcudW5jYXVn
aHRFeGNlcHRpb25zKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVi
dWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCkgewotICAgICAgICAgICAg
b3B0aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiI7CisgICAgICAg
ICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImFzc2VydGlvbiJdOwogICAgICAgICAgICAgb3B0
aW9ucy50aXRsZSA9IFdJLnJlcGVhdGVkVUlTdHJpbmcuYXNzZXJ0aW9uRmFpbHVyZXMoKTsKICAg
ICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWlj
cm90YXNrc0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJy
ZWFrcG9pbnQtbWljcm90YXNrLWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVz
ID0gWyJtaWNyb3Rhc2siXTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5VSVN0cmlu
ZygiQWxsIE1pY3JvdGFza3MiKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuRE9NQnJlYWtwb2ludCkgewogICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRv
bU5vZGVJZGVudGlmaWVyKQpAQCAtMTM2NCw3ICsxMzY0LDcgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKICAgICBfcmVtb3ZlQWxsQnJlYWtwb2ludHMoYnJlYWtwb2ludHMpCiAgICAgewogICAg
ICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIGJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICBp
ZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KSkK
KyAgICAgICAgICAgIGlmIChicmVha3BvaW50LnJlbW92YWJsZSkKICAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAgICAg
fQogICAgIH0KQEAgLTEzODMsNyArMTM4Myw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAK
ICAgICAgICAgbGV0IGJyZWFrcG9pbnRzID0gW107CiAgICAgICAgIGZvciAobGV0IGNoaWxkIG9m
IHRyZWVFbGVtZW50LmNoaWxkcmVuKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChjaGls
ZCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChjaGlsZCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVs
ZW1lbnQpOwogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBjaGlsZC5icmVha3BvaW50Owog
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICBpZiAo
YnJlYWtwb2ludCkKQEAgLTE0MDMsNyArMTQwMyw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
CiAKICAgICAgICAgICAgIGlzc3VlVHJlZUVsZW1lbnQgPSBuZXcgV0kuSXNzdWVUcmVlRWxlbWVu
dChpc3N1ZU1lc3NhZ2UpOwogCi0gICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRD
aGlsZChpc3N1ZVRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRl
ZEJ5RnVuY3Rpb24oaXNzdWVUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4s
IHRoaXMuX2NvbXBhcmVCcmVha3BvaW50VHJlZUVsZW1lbnRzKSk7CisgICAgICAgICAgICBwYXJl
bnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChpc3N1ZVRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRl
eEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oaXNzdWVUcmVlRWxlbWVudCwgcGFyZW50
VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRy
ZWVFbGVtZW50cykpOwogICAgICAgICAgICAgaWYgKHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVu
Lmxlbmd0aCA9PT0gMSkKICAgICAgICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5leHBhbmQo
KTsKICAgICAgICAgfQpAQCAtMTU1MCw3ICsxNTUwLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRz
IFcKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0
ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAg
ICAgICAgbGV0IGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtw
b2ludFRyZWVFbGVtZW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVz
ZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAg
ICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoInJlcXVlc3RBbmltYXRpb25GcmFtZSBGaXJl
ZCIpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE1OTUs
OCArMTU5NSw4IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9w
YXVzZVJlYXNvblRyZWVPdXRsaW5lLmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZl
bnQuU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlkQ2hhbmdl
LCB0aGlzKTsKIAogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYnJlYWtwb2ludEZvcklkZW50aWZpZXIocGF1c2VEYXRhLmJyZWFrcG9pbnRJZCk7Ci0gICAg
ICAgICAgICBsZXQgYnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkJyZWFrcG9pbnRUcmVl
RWxlbWVudChicmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtw
b2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludCwgewor
ICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAg
dGl0bGU6IFdJLlVJU3RyaW5nKCJUcmlnZ2VyZWQgQnJlYWtwb2ludCIpLAogICAgICAgICAgICAg
fSk7CiAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludERldGFpbHNTZWN0aW9uID0gbmV3IFdJLkRl
dGFpbHNTZWN0aW9uUm93OwpAQCAtMTY0NSw3ICsxNjQ1LDcgQEAgV0kuU291cmNlc05hdmlnYXRp
b25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRl
bmRzIFcKIAogICAgICAgICAgICAgbGV0IHR5cGUgPSBXSS5ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQuZGlzcGxheU5hbWVGb3JUeXBlKGRvbUJyZWFrcG9pbnQudHlwZSk7CiAgICAgICAgICAgICBs
ZXQgZG9tQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxl
bWVudChkb21CcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtw
b2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQi
XSwKICAgICAgICAgICAgICAgICB0aXRsZTogdHlwZSwKICAgICAgICAgICAgIH0pOwogICAgICAg
ICAgICAgbGV0IGRvbUJyZWFrcG9pbnRSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7CkBA
IC0xNzE1LDcgKzE3MTUsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNs
YXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAg
dGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRs
aW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRC
cmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQo
ZXZlbnRCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2lu
dC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwK
ICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmcoIlx1MjAxQyVzXHUyMDFEIEV2ZW50
IEZpcmVkIikuZm9ybWF0KHBhdXNlRGF0YS5ldmVudE5hbWUpLAogICAgICAgICAgICAgfSk7CiAg
ICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50
QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE3NTgsNyArMTc1OCw3IEBAIFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0g
dGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7
CiAKICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5F
dmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQt
cGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAg
ICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJzZXRJbnRlcnZhbCBGaXJlZCIpLAog
ICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5l
LmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE4MDIsNyArMTgw
Miw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJl
YXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNz
RmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVl
RWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudChldmVudEJyZWFrcG9p
bnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29u
IiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAg
ICAgIHRpdGxlOiBXSS5VSVN0cmluZygiJXMgRmlyZWQiKS5mb3JtYXQocGF1c2VEYXRhLmV2ZW50
TmFtZSksCiAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJl
ZU91dGxpbmUuYXBwZW5kQ2hpbGQoZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwpAQCAtMTgx
OCw3ICsxODE4LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBT
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMu
X3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7
c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtw
b2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAg
ICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBj
bGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmlu
Zygic2V0VGltZW91dCBGaXJlZCIpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlz
Ll9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVF
bGVtZW50KTsKQEAgLTE4NDQsNyArMTg0NCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAg
ICAgICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRl
Q29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAg
ICAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5VUkxCcmVha3Bv
aW50VHJlZUVsZW1lbnQodXJsQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgICAgICBjbGFz
c05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICAgICAgY2xh
c3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3Ry
aW5nKCJUcmlnZ2VyZWQgVVJMIEJyZWFrcG9pbnQiKSwKICAgICAgICAgICAgICAgICB9KTsKICAg
ICAgICAgICAgICAgICBsZXQgdXJsQnJlYWtwb2ludFJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlv
blJvdzsKQEAgLTE5NTAsOSArMTk1MCw5IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBh
bmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5z
dGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCkgewogICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0cmVlRWxlbWVudC5icmVha3BvaW50OwotICAgICAg
ICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9p
bnQpKQorICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZ2xvYmFsKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgbGV0IHNvdXJjZUNvZGUgPSBicmVha3BvaW50LnNvdXJj
ZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZTsKQEAgLTE5ODEsMjUgKzE5ODEsOSBAQCBX
SS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdz
LnNob3dBbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDsKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnQ7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0
dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50OwotICAgICAgICAg
ICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxs
TGlzdGVuZXJzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCiAgICAgICAgIGNhc2Ug
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFJlcXVlc3RzQnJlYWtwb2ludDoKICAgICAgICAgICAg
IHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsUmVxdWVzdHNCcmVha3BvaW50OwogICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGlt
ZW91dHNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdzLnNob3dB
bGxUaW1lb3V0c0JyZWFrcG9pbnQ7Ci0gICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChzZXR0aW5nKQpAQCAtMjAwOCw3ICsxOTkyLDcgQEAgV0kuU291cmNlc05hdmln
YXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBl
eHRlbmRzIFcKICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09IFdJLlRyZWVPdXRsaW5lLkV2ZW50
LkVsZW1lbnRSZW1vdmVkKSB7CiAgICAgICAgICAgICBsZXQgc2VsZWN0ZWRUcmVlRWxlbWVudCA9
IHRoaXMuX2JyZWFrcG9pbnRzVHJlZU91dGxpbmUuc2VsZWN0ZWRUcmVlRWxlbWVudDsKICAgICAg
ICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHNl
bGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdl
ci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgfHwgIVdJLmRlYnVnZ2VyTWFuYWdlci5pc0Jy
ZWFrcG9pbnRSZW1vdmFibGUoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCkp
IHsKKyAgICAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCB8
fCAhc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmFibGUpIHsKICAg
ICAgICAgICAgICAgICAgICAgY29uc3Qgc2tpcFVucmV2ZWFsZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgICBjb25zdCBkb250UG9wdWxhdGUgPSB0cnVlOwogICAgICAgICAgICAgICAgICAg
ICBsZXQgdHJlZUVsZW1lbnRUb1NlbGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQudHJhdmVyc2VO
ZXh0VHJlZUVsZW1lbnQoc2tpcFVucmV2ZWFsZWQsIGRvbnRQb3B1bGF0ZSk7CkBAIC0yMDUyLDI1
ICsyMDM2LDIzIEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRCcmVha3BvaW50cygpIHx8
IFdJLkRPTURlYnVnZ2VyTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50cygp
KSB7Ci0gICAgICAgICAgICBmdW5jdGlvbiBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIGxhYmVsLCBjaGVja2VkKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBh
ZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KGxhYmVsLCBicmVha3BvaW50LCB0eXBl
KSB7CiAgICAgICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQ2hlY2tib3hJdGVtKGxhYmVs
LCAoKSA9PiB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjaGVja2VkKQorICAgICAgICAgICAg
ICAgICAgICBpZiAoYnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5k
aXNhYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAg
ICAgfQotICAgICAgICAgICAgICAgIH0sIGNoZWNrZWQpOworICAgICAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZl
bnRCcmVha3BvaW50KG5ldyBXSS5FdmVudEJyZWFrcG9pbnQodHlwZSkpOworICAgICAgICAgICAg
ICAgIH0sICEhYnJlYWtwb2ludCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGFkZFRv
Z2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFu
aW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwgQW5pbWF0aW9uIEZyYW1l
cyIpLCBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52YWx1ZSk7
Ci0gICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwgVGlt
ZW91dHMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52YWx1ZSk7Ci0g
ICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBXSS5VSVN0cmluZygiQWxsIEludGVy
dmFscyIpLCBXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSk7Cisg
ICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJU3RyaW5n
KCJBbGwgQW5pbWF0aW9uIEZyYW1lcyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0
aW9uRnJhbWVzQnJlYWtwb2ludCwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJh
bWUpOworICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5V
SVN0cmluZygiQWxsIFRpbWVvdXRzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0
c0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpOworICAgICAgICAg
ICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5VSVN0cmluZygiQWxsIElu
dGVydmFscyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwg
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpOwogCiAgICAgICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKIAogICAgICAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5zdXBwb3J0c0FsbExpc3RlbmVyc0JyZWFrcG9pbnQoKSkKLSAgICAgICAgICAgICAg
ICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCBXSS5VSVN0cmluZygiQWxsIEV2ZW50cyIpLCBXSS5z
ZXR0aW5ncy5zaG93QWxsTGlzdGVuZXJzQnJlYWtwb2ludC52YWx1ZSk7CisgICAgICAgICAgICAg
ICAgYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5VSVN0cmluZygiQWxsIEV2
ZW50cyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpOwogCiAgICAgICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFdmVudCBCcmVha3BvaW50XHUyMDI2IiksICgpID0+
IHsKICAgICAgICAgICAgICAgICBsZXQgcG9wb3ZlciA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRQ
b3BvdmVyKHRoaXMpOwpAQCAtMjQyMSw3ICsyNDAzLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRz
IFcKICAgICAgICAgbGV0IHdhc1NlbGVjdGVkID0gZmFsc2U7CiAgICAgICAgIGxldCBvbGREZWJ1
Z2dlclRyZWVFbGVtZW50ID0gbnVsbDsKICAgICAgICAgbGV0IG5ld0RlYnVnZ2VyVHJlZUVsZW1l
bnQgPSBudWxsOwotICAgICAgICBpZiAoZGVidWdnZXJPYmplY3QgaW5zdGFuY2VvZiBXSS5CcmVh
a3BvaW50KSB7CisgICAgICAgIGlmIChkZWJ1Z2dlck9iamVjdCBpbnN0YW5jZW9mIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KSB7CiAgICAgICAgICAgICBvbGREZWJ1Z2dlclRyZWVFbGVtZW50ID0g
dGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5maW5kVHJlZUVsZW1lbnQoZGVidWdnZXJPYmpl
Y3QpOwogICAgICAgICAgICAgaWYgKG9sZERlYnVnZ2VyVHJlZUVsZW1lbnQpCiAgICAgICAgICAg
ICAgICAgd2FzU2VsZWN0ZWQgPSBvbGREZWJ1Z2dlclRyZWVFbGVtZW50LnNlbGVjdGVkOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJl
c291cmNlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcwppbmRleCBmOTJkZDJiMzEwZTQzYWNk
M2QxYTUzNTBkZTIwNDNiYjliYTc1MThlLi5mN2QyZGVmZjQxNGY4OWYxMDMxODExZjQ4YWVlNTUx
OTMwY2JjMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5qcwpAQCAt
OTgsNyArOTgsNyBAQCBXSS5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9IGNsYXNzIFRleHRSZXNv
dXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDbwogICAgIGdldCBzdXBwbGVtZW50
YWxSZXByZXNlbnRlZE9iamVjdHMoKQogICAgIHsKICAgICAgICAgbGV0IG9iamVjdHMgPSBXSS5k
ZWJ1Z2dlck1hbmFnZXIucHJvYmVTZXRzLmZpbHRlcihmdW5jdGlvbihwcm9iZVNldCkgewotICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlLmNvbnRlbnRJZGVudGlmaWVyID09PSBwcm9i
ZVNldC5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyOworICAgICAgICAgICAgcmV0dXJuICEo
cHJvYmVTZXQuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSB8
fCB0aGlzLl9yZXNvdXJjZS5jb250ZW50SWRlbnRpZmllciA9PT0gcHJvYmVTZXQuYnJlYWtwb2lu
dC5jb250ZW50SWRlbnRpZmllcjsKICAgICAgICAgfSwgdGhpcyk7CiAKICAgICAgICAgLy8gSWYg
dGhlIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGhhcyBhbiBleGVjdXRpb25MaW5lTnVtYmVyLCB3ZSBj
YW4gYXNzdW1lCkBAIC0zMTksNyArMzE5LDcgQEAgV0kuVGV4dFJlc291cmNlQ29udGVudFZpZXcg
PSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRlbmRzIFdJLlJlc291cmNlQ28KICAg
ICBfcHJvYmVTZXRzQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAgICAgIHZhciBicmVha3BvaW50
ID0gZXZlbnQuZGF0YS5wcm9iZVNldC5icmVha3BvaW50OwotICAgICAgICBpZiAoYnJlYWtwb2lu
dC5zb3VyY2VDb2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5yZXNvdXJjZSkKKyAgICAg
ICAgaWYgKCEoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSB8
fCBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlzLnJlc291
cmNlKQogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVu
dFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzRGlkQ2hhbmdlKTsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4IDBm
MjQ4OTRmMzg5YzY4NzIyMWVhYWM5YzM1ZDVmMTc1OWZmMTNhNWYuLjAyMWRiZWUwNWUzMDg3YmY5
NmRiYjRiYzM2NWY0ZjQ3OWVlYzU4NDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcwpAQCAtMjMsMTYgKzIzLDE2IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCiAgKi8KIAotLmJyZWFrcG9pbnQudXJsIC5zdWJ0aXRsZSB7CisuaXRlbS5i
cmVha3BvaW50LnVybCAuc3VidGl0bGUgewogICAgIGZvbnQtZmFtaWx5OiBNZW5sbywgbW9ub3Nw
YWNlOwogfQogCi0uYnJlYWtwb2ludC51cmw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbiB7CisuaXRlbS5icmVha3BvaW50LnVybDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNv
bnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNVUkxCcmVha3BvaW50LWxpZ2h0KTsK
IH0KIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5icmVha3Bv
aW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKyAgICAuaXRlbS5i
cmVha3BvaW50LnVybDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjVVJMQnJlYWtwb2ludC1kYXJrKTsKICAgICB9Ci19Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCmluZGV4IDAyOGE1MDZmNzEyNWIyZTg0N2RhY2ZkNTA1OGFiOTI3NjBjZDAy
N2EuLjhkMjc2ZDQzYzg2N2Q4ODA0MGMyMTg0MmFiNjhlZWY4MzBjYmE1MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRU
cmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTIzLDE1ICsyMywxNSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLlVSTEJyZWFrcG9pbnRU
cmVlRWxlbWVudCA9IGNsYXNzIFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdl
bmVyYWxUcmVlRWxlbWVudAorV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50CiB7
Ci0gICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZSwgdGl0bGV9ID0ge30pCisg
ICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxlfSA9IHt9KQogICAg
IHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLlVSTEJy
ZWFrcG9pbnQpOwogCi0gICAgICAgIGxldCBjbGFzc05hbWVzID0gWyJicmVha3BvaW50IiwgInVy
bCJdOwotICAgICAgICBpZiAoY2xhc3NOYW1lKQotICAgICAgICAgICAgY2xhc3NOYW1lcy5wdXNo
KGNsYXNzTmFtZSk7CisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFzc05hbWVzKSkKKyAg
ICAgICAgICAgIGNsYXNzTmFtZXMgPSBbXTsKKyAgICAgICAgY2xhc3NOYW1lcy5wdXNoKCJ1cmwi
KTsKIAogICAgICAgICBsZXQgc3VidGl0bGU7CiAgICAgICAgIGlmICghdGl0bGUpIHsKQEAgLTQy
LDExNSArNDIsNiBAQCBXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBVUkxCcmVh
a3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVAogICAgICAgICAgICAgICAgIHN1
YnRpdGxlID0gIi8iICsgYnJlYWtwb2ludC51cmwgKyAiLyI7CiAgICAgICAgIH0KIAotICAgICAg
ICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUsIGJyZWFrcG9pbnQpOwotCi0gICAg
ICAgIHRoaXMuc3RhdHVzID0gV0kuSW1hZ2VVdGlsaXRpZXMudXNlU1ZHU3ltYm9sKCJJbWFnZXMv
QnJlYWtwb2ludC5zdmciKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NOYW1lID0gV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRWxlbWVudFN0eWxlQ2xhc3NOYW1lOwotCi0g
ICAgICAgIHRoaXMudG9vbHRpcEhhbmRsZWRTZXBhcmF0ZWx5ID0gdHJ1ZTsKLSAgICB9Ci0KLSAg
ICAvLyBQcm90ZWN0ZWQKLQotICAgIG9uYXR0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9u
YXR0YWNoKCk7Ci0KLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3Rl
bmVyKFdJLlVSTEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX3Vw
ZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFu
Z2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZC5i
aW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQg
PSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVzSW1hZ2VF
bGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZl
bnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQp
OwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2
ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91
c2VEb3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAgICBv
bmRldGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAgIHRo
aXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlz
KTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigi
Y2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0
aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVz
SW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlz
dGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3du
KTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBudWxs
OwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxsOwot
ICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7Ci0g
ICAgfQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxh
ZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAgICAgLy8g
QnJlYWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVkIGZy
b20KLSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQg
KGUuZy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9h
cmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92
ZVVSTEJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAgICB0aGlzLl90b2dn
bGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9uc3Bh
Y2UoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51
LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXByZXNlbnRl
ZE9iamVjdDsKLSAgICAgICAgbGV0IGxhYmVsID0gYnJlYWtwb2ludC5kaXNhYmxlZCA/IFdJLlVJ
U3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpIDogV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtw
b2ludCIpOwotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxhYmVsLCB0aGlzLl90b2dn
bGVCcmVha3BvaW50LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKLSAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQpOwot
ICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBQcml2YXRlCi0KLSAgICBfc3RhdHVzSW1hZ2VF
bGVtZW50Q2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9p
bnQoKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZChldmVudCkKLSAg
ICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBvdXRsaW5lIGZvY3VzLgotICAgICAgICBldmVu
dC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91
c2VEb3duKGV2ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIGVsZW1lbnQgc2Vs
ZWN0aW9uLgotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAgICBf
dG9nZ2xlQnJlYWtwb2ludCgpCi0gICAgewotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmRpc2FibGVkID0gIXRoaXMucmVwcmVzZW50ZWRPYmplY3QuZGlzYWJsZWQ7Ci0gICAgfQotCi0g
ICAgX3VwZGF0ZVN0YXR1cygpCi0gICAgewotICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUo
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFt
ZSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVz
LmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVz
b2x2ZWRTdHlsZUNsYXNzTmFtZSwgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxl
ZCk7CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0
bGV9KTsKICAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDczMDU4NTk5MmRiNzYwN2ZmNmRlNDdhMzhiNjgxMzAz
NTg0MzU1NTAuLjgzYzk0YjY3ZmU1NjY3NDU5Y2ZjOWM4Nzg5NTU5MTk2NDgyNDJlNWIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0NSBAQAorMjAyMC0wOC0xOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBs
ZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMg
dG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE1MzYyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVudC1icmVha3Bv
aW50LXV0aWxpdGllcy5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIu
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2Fz
ZXMpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXN5bmMgdGVhcmRvd24pOgorICAgICAgICAoVGVzdFBh
Z2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KToKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgICog
aW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZy
YW1lLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9l
dmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9p
bnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50
LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICog
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRz
LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQWRkIHRlc3RzIGZvciBuZXcgZXZlbnQgYnJlYWtwb2lu
dCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplci5JbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzKToKKyAgICAg
ICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5qczoKKyAgICAg
ICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuUHJvdG9jb2xUZXN0LlByb2JlLmluc3Rh
bGxUcmFjaW5nTGlzdGVuZXJzKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludC1hY3Rpb24tZXZhbC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50LWFjdGlvbi1sb2cuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1jb2x1bW5zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtc2NvcGUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXIt
c3RhY2stb3ZlcmZsb3cuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2Ut
cmVhc29uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1hbmFnZXIt
YWRkLXJlbW92ZS1hY3Rpb25zLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0
ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVl
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0bWw6
CisgICAgICAgICogaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRtbDoKKyAg
ICAgICAgVXBkYXRlIGV4aXN0aW5nIGJyZWFrcG9pbnQgdGVzdHMgdG8gdXNlIG5ldyBtb2RlbCBv
YmplY3RzLgorCiAyMDIwLTA4LTE3ICBLYXJsIFJhY2tsZXIgIDxyYWNrbGVyQGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OIChyMjY1NzAxKTogWyBCaWdTdXIgXSAzIHdlYmF1ZGlvL3Ro
ZS1hdWRpby1hcGkvdGhlLWF1ZGlvcGFyYW0taW50ZXJmYWNlIHRlc3RzIGFyZSBhIGNvbnN0YW50
IGZhaWx1cmUpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcwppbmRleCA0NmFhN2MzNDljYWU1MDAwMWU5NTc5
MTljYjAwMDZlMzJkOGY5M2YzLi4yZTI3MjMzYzE1OWQ2NGZjOTg1ZTUyOGU5OGU5ZjRkMDJhY2Ni
YmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKQEAgLTEzLDM3ICsxMywzNyBAQCBJbnNwZWN0b3JU
ZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0
b3JUZXN0LmxvZygiQnJlYWtwb2ludCB3YXMgcmVtb3ZlZC4iKTsKICAgICB9KTsKIAotICAgIFdJ
LkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVk
U3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVE
aWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZl
bnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwg
IlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkJyZWFrcG9pbnQgZGlzYWJsZWQgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuZGlzYWJs
ZWQpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50
KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0
ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5z
dGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUh
Iik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgcmVzb2x2ZWQgc3Rh
dGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQucmVzb2x2ZWQpOwogICAgIH0pOwogCi0gICAgV0ku
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRp
bnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRD
aGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQu
dGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0ku
QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVu
ZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJy
ZWFrcG9pbnQgYXV0b2NvbnRpbnVlIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmF1dG9D
b250aW51ZSk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAg
dmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlw
ZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBjb25kaXRpb24gY2hhbmdlZDogIiArIGJy
ZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZl
bnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9u
KGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihX
SS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAg
ICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2Jq
ZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAK
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgYWN0aW9ucyBjaGFuZ2VkLiBO
ZXcgY291bnQ6ICIgKyBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKTsKICAgICB9KTsKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm9iZS10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2Jl
LXRlc3QuanMKaW5kZXggNzY5YWU0YWYwNDQwYzRmMTNmMzY1YjE3Y2EwYmI1MDI2ZDBmYzM5Ni4u
MTFlZWQyZTU4MWI2YTcwMGFkN2ZhYzYwYmVhNTcxYzU0MjRlODliMCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKKysr
IGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3Qu
anMKQEAgLTYwLDM3ICs2MCwzNyBAQCBQcm90b2NvbFRlc3QuUHJvYmUuaW5zdGFsbFRyYWNpbmdM
aXN0ZW5lcnMgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3Bv
aW50IHdhcyByZW1vdmVkLiIpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5l
eHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3Qg
dHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBkaXNhYmxl
ZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5kaXNhYmxlZCk7CiAgICAgfSk7CiAKLSAg
ICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNv
bHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQu
UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJy
ZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJl
YWtwb2ludC5yZXNvbHZlZCk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIGZ1bmN0
aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZl
bnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBl
Y3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBp
bnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlw
ZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBhdXRvY29udGlu
dWUgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKICAgICB9KTsK
IAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9u
RGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2
ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQs
ICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJCcmVha3BvaW50IGNvbmRpdGlvbiBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5jb25kaXRpb24p
OwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFr
cG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
QWN0aW9uc0RpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9p
bnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5z
dGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JU
ZXN0LmxvZygiQnJlYWtwb2ludCBhY3Rpb25zIGNoYW5nZWQuIE5ldyBjb3VudDogIiArIGJyZWFr
cG9pbnQuYWN0aW9ucy5sZW5ndGgpOwogICAgIH0pOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbCBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwKaW5kZXgg
NTU2MmUyYjMzZjZlNjNmNmY3MTYyMTNhMTVhMzE1OGEzODdiMDkwNC4uZDU1NDdiY2M2NzBhNzE5
OTI2MTE1MmJlNzUxNDcwZGMyOTM4MDQwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sCkBAIC0yOCw5
ICsyOCw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlw
dE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7CiAgICAgICAgIC8vIENyZWF0
ZSB0aGUgYnJlYWtwb2ludCBhbmQgaXRzIGFjdGlvbnMgYmVmb3JlIHNlbmRpbmcgYW55dGhpbmcg
dG8gdGhlIGJhY2tlbmQuCi0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9p
bnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0g
dHJ1ZTsKLSAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlv
bi5UeXBlLkV2YWx1YXRlLCBudWxsLCAiYWN0aW9uKGEsIGIpIik7CisgICAgICAgIGJyZWFrcG9p
bnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6
ICJhY3Rpb24oYSwgYikifSk7CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbAppbmRleCBiN2NjMjNkYzM4NTVm
NmZmNzc4MGJmZjZlNzg5NmY5NmRlNDQ4N2VlLi5lZTA5NTVhNWI2M2I1YTY0NDA3MWYyZDU3MmE1
M2RmYTQ3MWViMWRkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sCkBAIC0yNCwxMSArMjQsMTEgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAg
ICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24o
NCwgMCk7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2lu
dChsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQu
YXV0b0NvbnRpbnVlID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgIGZ1bmN0aW9uIGFkZExvZ0Fj
dGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9u
KFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIGJyZWFrcG9pbnQuYWN0aW9ucy5sYXN0VmFs
dWUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihX
SS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCB7ZGF0YX0pOwogICAgICAgICAgICAgICAgIH0K
IAogICAgICAgICAgICAgICAgIGFkZExvZ0FjdGlvbigiYCR7YX1gIik7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWwKaW5k
ZXggZDAyZThlM2I5ZmMxNGU3MDgzZGU5ZWE3MTk4ZGVjYmY4NzFjYWVjOS4uMTQxNzQ4NTg0M2Y3
OGZmMWI4YWY3MTNkN2ZmZDJiYTY1MmI0ZjYyNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWNvbHVtbnMuaHRtbApAQCAtMzgsNyArMzgs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIHRlc3RJbmZvID0gdGVzdEluZm9MaXN0
W2N1cnJlbnRUZXN0SW5kZXhdOwogICAgICAgICAKICAgICAgICAgdmFyIGxvY2F0aW9uID0gY3Vy
cmVudFNjcmlwdHNbdGVzdEluZm8uc2NyaXB0SW5kZXhdLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlv
bih0ZXN0SW5mby5saW5lLCB0ZXN0SW5mby5jb2x1bW4pOwotICAgICAgICB2YXIgYnJlYWtwb2lu
dCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogCiAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbAppbmRleCAy
NDExNDQ2MDhkODg1OTE1Yjk2NWJjOTExMGQyNGM0NDRmZjI0MTQ1Li5mMGFjYzFhNDI0NGFhZjMx
Y2NkZDAwOTYxNmJiY2UzMWMzY2Y2N2UyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWwKQEAgLTI5LDcgKzI5LDcgQEAgZnVu
Y3Rpb24gdGVzdCgpCiAKICAgICAgICAgdmFyIHRlc3RJbmZvID0gdGVzdEluZm9MaXN0W2N1cnJl
bnRUZXN0SW5kZXhdOwogICAgICAgICB2YXIgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRl
U291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAg
ICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAg
ICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7
CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7
CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UodGVzdEluZm8uc3RhcnRGdW5j
KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1z
dGFjay1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKaW5kZXggNGQ5NTdjODA5MjczN2ExZmYyNGIxZDNhNzVi
MjRjYzExOWRhYjFjZi4uMmM3ZjdkYTY0NGQ1YzUxMmEwZTQ1NzMwM2Q1MWEwZmM2NWZkMzExYyAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNr
LW92ZXJmbG93Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKQEAgLTE1LDcgKzE1LDcgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIC8vIDAgYmFzZWQgaW5kaWNlcy4KICAgICAgICAgbGV0IHRlc3RJbmZvID0ge2xp
bmU6IDgsIGNvbHVtbjogOH07CiAgICAgICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8ubGluZSwgdGVzdEluZm8uY29sdW1uKTsK
LSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7Cisg
ICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0
aW9uKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInN0YXJ0KCkiKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVh
c29uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0
bWwKaW5kZXggYWNjMTk1M2I2MzIzMzNiZWYzMWI5NWNmZTA4YmRkMzBjZDVhOWZiYy4uYTZhZmQ0
NDRlOGZhMWUzZDQ0NmRlN2VkMDE1MWI5OWU3OWI2NGQyMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1yZWFzb24uaHRtbApAQCAtMTYsNyArMTYsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgaWYgKCEvcGF1c2UtcmVhc29uc1wuanMkLy50ZXN0KHNj
cmlwdC51cmwpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGxldCBzb3VyY2VDb2Rl
TG9jYXRpb24gPSBzY3JpcHQuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDMsIDApOwotICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7
CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNv
dXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3Bv
aW50KGJyZWFrcG9pbnQpOwogICAgICAgICBicmVhazsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcHJvYmUtbWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlv
bnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFk
ZC1yZW1vdmUtYWN0aW9ucy5odG1sCmluZGV4IGJmNGFhZjIxYzIyNjllNmMzMTFiNGUzMWYzMTdl
N2E5YTE4ZWVjYmIuLmY1NmEzNmIzNjNiMjg4NDA2Yjc3ZTk0NDQyZjJiNTM4MjM5Mjc0ZDQgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFk
ZC1yZW1vdmUtYWN0aW9ucy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCkBAIC0zMywxNCArMzMsMTQg
QEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9i
amVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7CiAgICAgICAgICAgICAvLyBDcmVh
dGUgdGhlIGJyZWFrcG9pbnQgYW5kIGl0cyBhY3Rpb25zIGJlZm9yZSBzZW5kaW5nIGFueXRoaW5n
IHRvIHRoZSBiYWNrZW5kLgotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJl
YWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVha3BvaW50LmF1
dG9Db250aW51ZSA9IHRydWU7CiAgICAgICAgICAgICBmb3IgKHZhciBpIG9mIFswLCAxXSkKLSAg
ICAgICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9u
LlR5cGUuUHJvYmUsIG51bGwsICJhIik7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVh
dGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlLCB7ZGF0YTogImEifSk7CiAK
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogCi0gICAgICAgICAgICBicmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAg
IGJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVu
dC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbigpIHsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYnJlYWtwb2ludC5yZXNvbHZlZCwgIkJyZWFrcG9pbnQg
c2hvdWxkIGJlIHJlc29sdmVkLiIpOwogICAgICAgICAgICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1
dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1s
CmluZGV4IGExNzI1Y2ZiZjlhNTAyNjgyZDBmZjZkZGQwNjFjMDZiMzg5MDFkYzkuLmZmZmFlMGUy
OTk4MTg3MTYyYzRhNDg5ZDcyMDkyNjQ2YzJhOWJhYTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51
ZS1icmVha3BvaW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0
ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRtbApAQCAt
MjQsOSArMjQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIC8vIFNldCBhdXRvQ29u
dGludWUgYnJlYWtwb2ludC4KICAgICAgICAgICAgIGxldCBzY3JpcHQgPSBXSS5uZXR3b3JrTWFu
YWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNjcmlwdHNbMF07CiAgICAgICAgICAgICB2YXIg
bG9jYXRpb24gPSBzY3JpcHQuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDgsIDApOwotICAgICAg
ICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAg
ICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2Nh
dGlvbik7CiAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7Ci0gICAg
ICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUu
RXZhbHVhdGUsIG51bGwsICJhbGVydCgxLjUpOyIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5j
cmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogImFs
ZXJ0KDEuNSk7In0pOwogICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgIC8vIFN0ZXAgdGhyb3VnaCB0aGUgYnJlYWtw
b2ludC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRl
bGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRtbAppbmRleCAzOTc1OWRjYjY1
NGFjYjAwMmYxZGE5MTAzMTQ2OWY4OTMxYTRiOWM4Li5jNzJiYmNlMmI2MWMyOTgyZTk3MjVmZTkz
NDYyMzQzNzYyZTc3ODBkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS5odG1sCkBA
IC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyAwIGJhc2VkIGluZGlj
ZXMuCiAgICAgICAgIGxldCB0ZXN0SW5mbyA9IHtsaW5lOiAzLCBjb2x1bW46IDR9OwogICAgICAg
ICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRl
c3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0g
bmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5l
dyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICBJbnNwZWN0b3JUZXN0
LmV2YWx1YXRlSW5QYWdlKCJzdGFydEFCQygpIik7CiAgICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbAppbmRleCA4Y2JhYmExYWQy
ZWMzZDczY2IyNjMwODk4YTFlZWFiMTE3NTNhMmQwLi42NWIwY2M2MWFlMzgxMThiNmE3MDZkYTM4
MTMxMDZhNzAyYjQ0MDU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvdGFpbC1yZWN1cnNpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvdGFpbC1yZWN1cnNpb24uaHRtbApAQCAtMjQsNyArMjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgdmFyIHRlc3RJbmZvcyA9IFt7bGluZSA6IDMsIGNvbHVtbiA6IDh9LCB7bGluZSA6
IDQsIGNvbHVtbiA6IDh9XTsKICAgICAgICAgZm9yIChsZXQgdGVzdEluZm8gb2YgdGVzdEluZm9z
KSB7CiAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNl
Q29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAg
ICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9u
KTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9p
bnQpOwogICAgICAgICB9CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoInN0
YXJ0UmVjdXJzZSgpIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1i
cmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggOTBiMjZhNzdiZDU1NjY5NWYxYjAxZmYxNzI5
ZDY1YTVkZjI4YzcxYy4uZjllZjA0Zjc5ZDZjYjgzZDg5YWExNWQyOGI0NWE4NWFhM2VkMWQ4NiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmlt
YXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLWV4
cGVjdGVkLnR4dApAQCAtMSw4ICsxLDEzIEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQg
QUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6
IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRXZlbnQgQW5pbWF0aW9uRnJhbWUg
YnJlYWtwb2ludHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01EZWJ1Z2dlci5FdmVu
dC5BbmltYXRpb25GcmFtZQogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50
LkFuaW1hdGlvbkZyYW1lLkFkZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVh
a3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRpb25GcmFtZSIgb24gd2luZG93Li4uCiBQ
QVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgpAQCAtMTUsNiAr
MjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAt
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuQWRk
RGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVh
a3BvaW50Li4uCiBBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgog
RGlzYWJsaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAi
cmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFT
UzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcg
dGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50
LkFuaW1hdGlvbkZyYW1lLlJlbW92ZUJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJh
bWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBC
cmVha3BvaW50Li4uCiBSZW1vdmluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50
Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRpb25GcmFtZSIgb24gd2luZG93Li4uCkBAIC0yOSw2
ICszNiw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4K
IC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURl
YnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLlJlbW92ZURpc2FibGVkQnJlYWtwb2ludAorQ3Jl
YXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJhbmlt
YXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAiYW5pbWF0aW9uLWZy
YW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVu
dCBCcmVha3BvaW50Li4uCkBAIC0zNiwzICs0NCwxMDMgQEAgRmlyaW5nICJyZXF1ZXN0QW5pbWF0
aW9uRnJhbWUiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3Zl
ZCBkaXNhYmxlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9u
cy5Db25kaXRpb24KK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRp
bmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVh
cmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRp
b25GcmFtZS5PcHRpb25zLklnbm9yZUNvdW50CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBF
dmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtw
b2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5n
IHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5BY3Rp
b24uTG9nCitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCitB
ZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9n
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxv
ZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBs
b2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5PcHRp
b25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4u
CisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8t
Y29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24t
ZnJhbWUtYnJlYWtwb2ludHMuaHRtbAppbmRleCBmMGJhNDdiNDYyNTI1ZTI5ZWVlMDZkN2YxMmZh
NTI3OTNjYTM0MDcxLi5mZmFlZjhiNGU0NzM0Zjg3MzhhOWJkOGJhOTA4MGIwNzM1ZjkzNTFkIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1h
dGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTQ1
LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7
CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUp
CiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2
ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAg
ICAgICAgIH0sCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5Q
YXVzZVJlYXNvbi5BbmltYXRpb25GcmFtZSwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBm
b3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0
aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAg
ICAuY2F0Y2gocmVqZWN0KTsKQEAgLTcyLDcgKzcyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJN
YW5hZ2VyLlBhdXNlUmVhc29uLkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUsICJTaG91bGQgbm90
IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LkFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAg
ICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg2LDcgKzg2LDcgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVi
dWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUsICJTaG91
bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRoZW4oSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAu
dGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAg
ICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgi
d2luZG93IiwgZXZlbnROYW1lKSkKQEAgLTk1LDYgKzk1LDggQEAgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3du
LAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtw
b2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1h
dGlvbkZyYW1lLCBldmVudE5hbWUpOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNo
KCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1l
eHBlY3RlZC50eHQKaW5kZXggNWVjNDgwYTc4YjVkODNiY2Q3MGVhYjczYTk3YTIwZGZkZWI4MzY4
ZC4uYWNiNzA5ZmYwZjgyYWQ4MGY1Zjc1YTQ1NDcwNDI4MzdkZTdlM2EwMiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3Bv
aW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSwxMyBA
QAotVGVzdHMgZm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRzLgorQ09OU09MRSBNRVNTQUdFOiBC
UkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElP
TiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09M
RSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAorVGVzdHMgZm9yIEV2ZW50IEludGVy
dmFsIGJyZWFrcG9pbnRzLgogCiAKLT09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIu
RXZlbnQuVGltZXIKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuSW50
ZXJ2YWwKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5B
ZGRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFk
ZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0SW50ZXJ2YWwi
IG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlz
IHJ1bi4KQEAgLTE1LDYgKzIwLDcgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIC0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lklu
dGVydmFsLkFkZERpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBC
cmVha3BvaW50Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNh
YmxpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFs
IiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBm
b3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLlJlbW92ZUJyZWFr
cG9pbnQKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJp
bnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgImludGVydmFsIiBFdmVudCBC
cmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KQEAgLTI5LDYg
KzM2LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50Lgog
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVi
dWdnZXIuRXZlbnQuSW50ZXJ2YWwuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAi
aW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KIERpc2FibGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJl
bW92aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgpAQCAtMzcsNiArNDUsNyBAQCBQ
QVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAt
LSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1
Z2dlci5FdmVudC5JbnRlcnZhbC5SZXBlYXRGaXJlQnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVy
dmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3Bv
aW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBw
YXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC01NSwzICs2NCwxMDMgQEAgQVNZ
TkMgQ0FMTCBTVEFDSzoKIDM6IFtQXSBHbG9iYWwgQ29kZQogLS0gUnVubmluZyB0ZXN0IHRlYXJk
b3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwu
T3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4u
LgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRp
dGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgor
CistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9u
cy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCitB
ZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291
bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5n
IHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVu
dC5JbnRlcnZhbC5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQg
QnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitB
ZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitF
ZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
RWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5P
cHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcg
ZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0Vk
aXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRl
IGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5p
bmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1sCmlu
ZGV4IGIzYjJhZmZlODY0ZmMwMjc5YWE4ODllMjY0ZTgzYjdjMWM4OGM0NjQuLjAyODRiZGEyOWFl
YmI4Yzc4MmE0NTE1ZDVmNzU5ZWFkMDNiODI5YmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFr
cG9pbnRzLmh0bWwKQEAgLTksMjAgKzksMjAgQEAKIGxldCBpbnRlcnZhbElEID0gTmFOOwogCiBm
dW5jdGlvbiBoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2YWwoKSB7Ci0gICAgVGVzdFBhZ2UuZGlzcGF0
Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLXNldEludGVydmFsIik7Ci0KICAgICByZXBlYXRD
bGVhckludGVydmFsKCk7CisKKyAgICBUZXN0UGFnZS5kaXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgi
VGVzdFBhZ2Utc2V0SW50ZXJ2YWwiKTsKIH0KIAogZnVuY3Rpb24gaGFuZGxlUmVwZWF0KCkgewog
fQogCiBmdW5jdGlvbiB0cmlnZ2VyX3NldEludGVydmFsKCkgewotICAgIGludGVydmFsSUQgPSBz
ZXRJbnRlcnZhbChoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2YWwsIDEwMCk7CisgICAgaW50ZXJ2YWxJ
RCA9IHNldEludGVydmFsKGhhbmRsZVdpbmRvd19zZXRJbnRlcnZhbCwgMTApOwogfQogCiBmdW5j
dGlvbiByZXBlYXRTZXRJbnRlcnZhbCgpIHsKLSAgICBpbnRlcnZhbElEID0gc2V0SW50ZXJ2YWwo
aGFuZGxlUmVwZWF0LCAxMDApOworICAgIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChoYW5kbGVS
ZXBlYXQsIDEwKTsKIH0KIAogZnVuY3Rpb24gcmVwZWF0Q2xlYXJJbnRlcnZhbCgpIHsKQEAgLTMz
LDcgKzMzLDcgQEAgZnVuY3Rpb24gcmVwZWF0Q2xlYXJJbnRlcnZhbCgpIHsKIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgY29uc3QgZXZlbnROYW1lID0gInNldEludGVydmFsIjsKIAotICAgIGxldCBz
dWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiRE9NRGVidWdnZXIuRXZlbnQu
VGltZXIiKTsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
IkRPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsIik7CiAKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7
CiAgICAgICAgIG5hbWU6IGBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5BZGRCcmVha3BvaW50
YCwKQEAgLTYxLDcgKzYxLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50
ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50
KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAg
ICAgIH0sCkBAIC03NCw3ICs3NCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVz
ZVJlYXNvbi5JbnRlcnZhbCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJs
ZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0
ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAg
ICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkK
ICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZl
bnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAg
LTg4LDcgKzg4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxP
blBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLklu
dGVydmFsLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9p
bnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJy
ZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50
KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAg
IC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIs
IGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTEwMiw3ICsxMDIs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVz
b2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uSW50ZXJ2YWwsIGV2
ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2lu
dC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJl
YWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQo
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAg
IC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50
KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtMTM0LDcgKzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJGaXJpbmcgXCJzZXRJbnRlcnZhbFwiIG9uIHdpbmRvdy4uLiIpOwog
ICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBl
YXRTZXRJbnRlcnZhbCgpYCk7CkBAIC0xNDQsMTEgKzE0NCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkg
ewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRv
d24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVh
a3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50
ZXJ2YWwsIGV2ZW50TmFtZSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
IH0KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgotICAgIDxw
PlRlc3RzIGZvciBFdmVudCBUaW1lciBicmVha3BvaW50cy48L3A+CisgICAgPHA+VGVzdHMgZm9y
IEV2ZW50IEludGVydmFsIGJyZWFrcG9pbnRzLjwvcD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXIt
YnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggNzgxYjdj
ZDJkZDBhNTgwZWU5OTQ1Mzc5ZTQzYWI2OGFjM2E1MGEyYS4uYTllZjhmZjhhZGZjZmFiNDA1MjM4
YjVlNDFhNGUwMDA0OTUzZTVjNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3Bv
aW50cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw3IEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFL
UE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExP
RyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1F
U1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRXZlbnQgTGlzdGVuZXIg
YnJlYWtwb2ludHMuCiAKIApAQCAtNzUsNiArNzksNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNl
IGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5B
bGxFdmVudHNCcmVha3BvaW50CitDcmVhdGluZyAibGlzdGVuZXIiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIEFkZGluZyAibGlzdGVuZXIiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAiY2xpY2si
IG9uIGJvZHkuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBy
dW4uCkBAIC0xMjEsMyArMTI2LDEwMyBAQCBEaXNhYmxpbmcgYnJlYWtwb2ludHMuLi4KIFBBU1M6
IFNob3VsZCBoYXZlIHBhdXNlZCBvbmNlLgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5D
b25kaXRpb24KK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJs
aXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0
byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBS
dW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5JZ25v
cmVDb3VudAorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImxp
c3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQg
dG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRl
c3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5M
aXN0ZW5lci5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitB
ZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitF
ZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
RWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5P
cHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJjbGljayIgRXZlbnQgQnJlYWtwb2lu
dC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRp
bmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRpbnVl
Li4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJl
YWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1
YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1
bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5odG1s
CmluZGV4IGZiYjQ5ODA4ZWZlOTc4Y2I1NWQ0NjE0MzllZTBlYmI4ZGE3YmI1NzEuLjY3NDYxNmE4
NTg4ZDNlNDkyMzZiNDM5NTNhMGJhYWQ0OGIzZDhjZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJy
ZWFrcG9pbnRzLmh0bWwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgZXZlbnROYW1lKQorICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWV9KQogICAgICAgICAgICAgICAg
IC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoImJvZHkiLCBl
dmVudE5hbWUpKQogICAgICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwogICAgICAgICAgICAg
fSwKQEAgLTcxLDcgKzcxLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIu
UGF1c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIGRp
c2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCBldmVudE5hbWUpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5l
ciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgiYm9keSIsIGV2ZW50TmFtZSkp
CiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04NSw3ICs4NSw3IEBAIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29s
dmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBldmVu
dE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2lu
dCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5h
d2FpdEV2ZW50KCJib2R5IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgICAgICAuY2F0Y2gocmVq
ZWN0KTsKQEAgLTk5LDcgKzk5LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRl
c3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFn
ZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9y
IHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5U
eXBlLkxpc3RlbmVyLCB7ZXZlbnROYW1lfSkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAg
ICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQog
ICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0
RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQpAQCAtMTI4LDcgKzEyOCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgICAgICB9KTsK
IAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2lu
dChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gYm9k
eS4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5Q
YWdlKGB0cmlnZ2VyX2NsaWNrKClgKTsKQEAgLTE3Myw3ICsxNzMsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAiY2xpY2siKQorICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZTogImNsaWNrIn0pCiAgICAgICAgICAgICAu
dGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBc
ImNsaWNrXCIgb24gZGl2I3guLi4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tYKClgKTsKQEAgLTIxMSw3ICsyMTEsNyBAQCBmdW5j
dGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIC50aGVuKHJlc29sdmUsIHJlamVjdCk7CiAg
ICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgImNs
aWNrIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJy
ZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWU6ICJj
bGljayJ9KQogICAgICAgICAgICAgLnRoZW4oKCkgPT4gewogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJGaXJpbmcgXCJjbGlja1wiIG9uIGRpdiN4Li4uIik7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrWCgpYCk7CkBA
IC0yMjEsNiArMjIxLDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246IElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMo
c3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAiY2xpY2siKTsKKwogICAg
IHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9l
dmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCBjYTVkMDEwZGVlYzlh
YTQ5Y2JiYjQxYjRlNGVhM2ZjYjQ4ZDNhN2RiLi45YTZiZjhhZDFiMmFhNzk2MjliODYzZGU3ZTNk
NGRmYjUxODgzMzJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy1leHBl
Y3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFD
VElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09O
U09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBC
UkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMgZm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRz
LgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIKIC0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lb3V0LkFkZEJyZWFrcG9p
bnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRpbWVv
dXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0VGltZW91dCIgb24gd2luZG93Li4u
CiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgpAQCAtMTUs
NiArMjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgog
CiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZW91dC5BZGREaXNh
YmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBB
ZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAidGltZW91dCIg
RXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRUaW1lb3V0IiBvbiB3aW5kb3cuLi4KQEAg
LTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtw
b2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuUmVtb3ZlQnJlYWtwb2ludAorQ3JlYXRpbmcgInRp
bWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtw
b2ludC4uLgogUmVtb3ZpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAi
c2V0VGltZW91dCIgb24gd2luZG93Li4uCkBAIC0yOSw2ICszNiw3IEBAIFBBU1M6IFNob3VsZCBu
b3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93
bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuUmVt
b3ZlRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2lu
dC4uLgogQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgInRp
bWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVh
a3BvaW50Li4uCkBAIC0zNiwzICs0NCwxMDMgQEAgRmlyaW5nICJzZXRUaW1lb3V0IiBvbiB3aW5k
b3cuLi4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtw
b2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAorLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyLk9wdGlvbnMuQ29uZGl0aW9uCitDcmVhdGluZyAidGlt
ZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3Bv
aW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRv
ICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5UaW1lci5PcHRpb25zLklnbm9yZUNvdW50CitDcmVhdGluZyAidGltZW91dCIgRXZl
bnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisK
K1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4u
LgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
cGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNl
OiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJ0
aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51
ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJy
ZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cg
YWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuVGltZXIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlCitDcmVhdGluZyAidGltZW91dCIgRXZl
bnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisK
K0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcg
ZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMuaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5o
dG1sCmluZGV4IGE0MWVjZDY5ZWNiN2QxMzg0ZDA3N2I5NTBjYzEwMDU3YWU0MTAwOTEuLjZhMzQ5
YTRiNzcyMzVlOWJiMTg4YzRjMWExY2I4YjNhNzNhNDIxYWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1i
cmVha3BvaW50cy5odG1sCkBAIC0xMSw3ICsxMSw3IEBAIGZ1bmN0aW9uIGhhbmRsZVdpbmRvd19z
ZXRUaW1lb3V0KCkgewogfQogCiBmdW5jdGlvbiB0cmlnZ2VyX3NldFRpbWVvdXQoKSB7Ci0gICAg
c2V0VGltZW91dChoYW5kbGVXaW5kb3dfc2V0VGltZW91dCwgMTAwKTsKKyAgICBzZXRUaW1lb3V0
KGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0LCAxMCk7CiB9CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CkBA
IC00NSw3ICs0NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgcmVzb2x2
ZSgpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRz
QnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNy
ZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCkKICAgICAgICAg
ICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRv
dyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKICAgICAgICAgfSwK
QEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZl
LCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZh
aWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29u
LlRpbWVvdXQsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFr
cG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFk
ZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAgICAg
ICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93
IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtNzIsNyArNzIs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewog
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVz
b2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uVGltZW91dCwgZXZl
bnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LiIpOwogCi0g
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLlRpbWVvdXQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkK
ICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBX
SS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uVGltZW91dCwgZXZlbnROYW1lLCAiU2hvdWxk
IG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2lu
dC5UeXBlLlRpbWVvdXQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5h
bWUpKQpAQCAtOTUsNiArOTUsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZWFyZG93
bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7CiAKKyAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RD
YXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCwgZXZlbnROYW1lKTsK
KwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVu
dC1icmVha3BvaW50LXV0aWxpdGllcy5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVi
dWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCmluZGV4IDE5YjI1
ZDFhZGQyMGIyZjVlMGExYjJmN2Q4MzMyOGZmYmJlMTZkYzYuLmU0MDEzYTgxYmNlNGQzZDRlYTUz
MmFlZjMxZDM2MTdhYjUyNzRhNDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFr
cG9pbnQtdXRpbGl0aWVzLmpzCkBAIC0xLDE0ICsxLDE5OSBAQAogVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplcigoKSA9PiB7CiAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQgPSB7
fTsKIAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRp
b25zVGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHR5cGUsIGV2ZW50TmFtZSkgeworICAgICAg
ICBhc3luYyBmdW5jdGlvbiB0cmlnZ2VyQnJlYWtwb2ludCgpIHsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgIHJl
dHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2
ZW50KCJUZXN0UGFnZS0iICsgZXZlbnROYW1lKSwKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyXyR7ZXZlbnROYW1lfSgpYCksCisgICAgICAgICAg
ICBdKTsKKyAgICAgICAgfQorCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAg
ICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQ29uZGl0aW9uIiwKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2UgdW5s
ZXNzIHRoZSBicmVha3BvaW50IGhhcyBhIHRydXRoeSBicmVha3BvaW50IGNvbmRpdGlvbi4iLAor
ICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3Vu
dCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAg
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7
CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLiIpOwor
ICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0gImZhbHNlIjsKKworICAgICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0gInRydWUiOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKworICAgICAgICBzdWl0ZS5hZGRU
ZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1lICsgIi5PcHRpb25zLklnbm9y
ZUNvdW50IiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdn
ZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50IGlzIGhpdCBhdCBsZWFzdCBh
cyBtYW55IHRpbWVzIGFzIGl0J3MgYGlnbm9yZUNvdW50YC4iLAorICAgICAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAg
ICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNy
ZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4iKTsKKyAgICAgICAgICAgICAgICBicmVh
a3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAx
OyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGlu
ZSgpOworCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IHRyaWdnZXJCcmVha3BvaW50KCk7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwgIlNob3VsZCBub3QgcGF1
c2UuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSAtIDIsICJTaG91bGQgcGF1
c2UuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJN
YW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNl
ZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHRlYXJkb3duOiBJbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIu
T3B0aW9ucy5BY3Rpb24uTG9nIiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhh
dCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBo
aXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBh
dXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdn
ZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNl
ZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAg
ICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAg
ICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9
KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAg
ICAgICAgICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFr
cG9pbnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhOiAiQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEifSk7
CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJT04gTE9HICR7aX1gOworCisgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgbGV0IFttZXNzYWdlQWRkZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAg
ICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisgICAgICAgICAgICAgICAgICAgICAgICB0
cmlnZ2VyQnJlYWtwb2ludCgpLAorICAgICAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKG1lc3NhZ2VBZGRlZEV2ZW50LmRh
dGEubWVzc2FnZS5tZXNzYWdlVGV4dCwgYWN0aW9uLmRhdGEsICJTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50
LCBpLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIs
ICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCisgICAg
ICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6
IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZSIsCisgICAgICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZXZhbHVhdGUgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1
dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3Qo
KSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAg
ICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
RGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAg
ICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5h
Z2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVC
cmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFk
ZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgICAgICBsZXQgYWN0aW9uID0g
YnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRl
LCB7ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FDVElPTl9FVkFMVUFURSA9IDE7In0pOworCisg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgYWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gJHtp
fTtgOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRp
bnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29u
dGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisK
KyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQoKTsKKworICAgICAg
ICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0ID0gYXdhaXQg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VW
QUxVQVRFYCk7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
YnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0LCBpLCAiU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwg
aSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAi
U2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
dGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAg
ICB9KTsKKyAgICB9OworCiAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRv
d24gPSBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCk7Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0Jy
ZWFrcG9pbnQpOwotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVh
a3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKLSAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ/LnJlbW92ZSgpOworICAg
ICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludD8ucmVtb3Zl
KCk7CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50
Py5yZW1vdmUoKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJl
YWtwb2ludD8ucmVtb3ZlKCk7CiAKICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIubGlzdGVuZXJCcmVha3BvaW50cykKLSAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAg
ICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwogCiAgICAgICAgIHJlc29sdmUoKTsKICAgICB9
OwpAQCAtNDIsOCArMjI3LDExIEBAIFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4g
ewogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludCA9IGZ1bmN0aW9uKHR5cGUsIGV2ZW50TmFtZSkgewotICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZyhgQ3JlYXRpbmcgIiR7ZXZlbnROYW1lfSIgRXZlbnQgQnJlYWtw
b2ludC4uLmApOworICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFr
cG9pbnQgPSBmdW5jdGlvbih0eXBlLCB7ZXZlbnROYW1lfSA9IHt9KSB7CisgICAgICAgIGlmICh0
eXBlICE9PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcikKKyAgICAgICAgICAgIGV2
ZW50TmFtZSA9IG51bGw7CisKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coYENyZWF0aW5nICIk
e2V2ZW50TmFtZSB8fCB0eXBlfSIgRXZlbnQgQnJlYWtwb2ludC4uLmApOwogICAgICAgICByZXR1
cm4gSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChuZXcgV0kuRXZl
bnRCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KSk7CiAgICAgfTsKIApAQCAtNzQsNyArMjYy
LDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgcmVzb2x2ZShicmVha3BvaW50KTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwor
ICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKICAgICAgICAgfSk7CiAgICAgfTsKIApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVu
dC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFr
cG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dAppbmRleCA3NmE4NjQ0OGJjOWUx
NzNmMzZkNmQ3Y2YzMDRmMGNlNzcwNmFhNTBmLi41OGY5NTYyMmNlY2RjZTA0MjAzYjY4N2NkYzg0
OTM1MmIxYzA2NWMxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFr
cG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApA
QCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEK
K0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDIKK0NPTlNPTEUgTUVTU0FH
RTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBB
Q1RJT04gTE9HIDQKIFRlc3RpbmcgRE9NQWdlbnQuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIgYW5kIERPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLgogCiAgIApA
QCAtMTksNiArMjMsOTQgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBiZWZvcmUgYnV0dG9uMiBl
dmVudCBoYW5kbGVyIGlzIHJ1bi4KIENsaWNraW5nIGJ1dHRvbjEuLi4KIFBBU1M6IFNob3VsZCBu
b3QgcGF1c2UgYmVmb3JlIGJ1dHRvbjEgZXZlbnQgaGFuZGxlciBpcyBydW4uCiAKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5D
b25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24g
dG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5P
cHRpb25zLklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dl
cmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00u
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5BY3Rpb24uTG9nCisKK0FkZGlu
ZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRp
bmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0
aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUK
KworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBh
dXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1j
b250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVj
dXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGlu
ZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIuSW52YWxpZAogUEFTUzogU2hvdWxkIHByb2R1Y2UgYW4gZXJyb3IuCiBFcnJvcjogTWlzc2lu
ZyBldmVudCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRMaXN0ZW5lcklkCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3Rl
bmVyLmh0bWwKaW5kZXggMGQyZmVhNWFhNTJkNDU0NGExMWYyNDY4MTA1Y2U0ODM3ZmI0MzZhYS4u
ZjMwYzkyYTZkMDcxYWI4YWRkYzg5OTJmZmM3OTAwNzNkZjU1NjUzZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlz
dGVuZXIuaHRtbApAQCAtMjMsOSArMjMsMjIgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICBsZXQg
YnV0dG9uMU5vZGUgPSBudWxsOwogICAgIGxldCBidXR0b24yTm9kZSA9IG51bGw7CiAKLSAgICBm
dW5jdGlvbiBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihub2RlSWQpIHsKLSAgICAgICAgcmV0
dXJuIERPTUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShub2RlSWQpCi0gICAgICAgIC50
aGVuKCh7bGlzdGVuZXJzfSkgPT4gbGlzdGVuZXJzLmZpbmQoKGV2ZW50TGlzdGVuZXIpID0+IGV2
ZW50TGlzdGVuZXIudHlwZSA9PT0gImNsaWNrIikpOworICAgIGFzeW5jIGZ1bmN0aW9uIGdldENs
aWNrRXZlbnRMaXN0ZW5lcihub2RlSWQpIHsKKyAgICAgICAgbGV0IHtsaXN0ZW5lcnN9ID0gYXdh
aXQgRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKG5vZGVJZCk7CisgICAgICAgIHJl
dHVybiBsaXN0ZW5lcnMuZmluZCgoZXZlbnRMaXN0ZW5lcikgPT4gZXZlbnRMaXN0ZW5lci50eXBl
ID09PSAiY2xpY2siKTsKKyAgICB9CisKKyAgICBhc3luYyBmdW5jdGlvbiBzZXRCcmVha3BvaW50
Rm9yQ2xpY2tFdmVudExpc3RlbmVyKG5vZGUpIHsKKyAgICAgICAgbGV0IGNsaWNrRXZlbnRMaXN0
ZW5lciA9IGF3YWl0IGdldENsaWNrRXZlbnRMaXN0ZW5lcihub2RlLmlkKTsKKyAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQoIWNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xp
Y2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIG5vdCBoYXZlIGEgYnJlYWtwb2lu
dC4iKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4g
eworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZShldmVudC5kYXRhLmJyZWFrcG9pbnQp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIuc2V0QnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIoY2xpY2tFdmVudExpc3RlbmVyKTsKKyAgICAgICAgfSk7CiAg
ICAgfQogCiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJE
T00uQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIiKTsKQEAgLTQ5LDcgKzYyLDcgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRh
cmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5MaXN0
ZW5lciwgYFBhdXNlIHJlYXNvbiBzaG91bGQgYmUgTGlzdGVuZXIuYCk7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJnZXREYXRhLnBhdXNlRGF0YS5ldmVudE5h
bWUsICJjbGljayIsIGBQYXVzZSBkYXRhIGV2ZW50TmFtZSBzaG91bGQgYmUgImNsaWNrIi5gKTsK
IAotICAgICAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2Rl
LmlkKQorICAgICAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5p
ZCkKICAgICAgICAgICAgICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdldERhdGEucGF1c2VEYXRh
LmV2ZW50TGlzdGVuZXJJZCA9PT0gY2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwg
YFBhdXNlIGRhdGEgZXZlbnRMaXN0ZW5lcklkIHNob3VsZCBiZSAiJHtjbGlja0V2ZW50TGlzdGVu
ZXIuZXZlbnRMaXN0ZW5lcklkfSIuYCk7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuYXNzZXJ0KGNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQg
bGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwpAQCAtNzcs
NyArOTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCk7CiAgICAgICAgICAgICB9KTsKIAot
ICAgICAgICAgICAgYXdhaXRHZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCisg
ICAgICAgICAgICBnZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCiAgICAgICAg
ICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnQoIWNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xp
Y2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIG5vdCBoYXZlIGEgYnJlYWtwb2lu
dC4iKTsKIApAQCAtMTExLDcgKzEyNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQodGFyZ2V0RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVi
dWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVyLCBgUGF1c2UgcmVhc29uIHNob3VsZCBi
ZSBMaXN0ZW5lci5gKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCh0YXJn
ZXREYXRhLnBhdXNlRGF0YS5ldmVudE5hbWUsICJjbGljayIsIGBQYXVzZSBkYXRhIGV2ZW50TmFt
ZSBzaG91bGQgYmUgImNsaWNrIi5gKTsKIAotICAgICAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tF
dmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAgICAgIGdldENsaWNrRXZl
bnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgICAgICAudGhlbigoY2xpY2tF
dmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TGlzdGVuZXJJZCA9PT0gY2xpY2tFdmVudExp
c3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwgYFBhdXNlIGRhdGEgZXZlbnRMaXN0ZW5lcklkIHNob3Vs
ZCBiZSAiJHtjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkfSIuYCk7CiAgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZlbnRMaXN0ZW5lci5oYXNC
cmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIGhhdmUg
YSBicmVha3BvaW50LiIpOwpAQCAtMTM5LDcgKzE1Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24x
KClgKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBhd2FpdEdldENsaWNrRXZlbnRM
aXN0ZW5lcihidXR0b24xTm9kZS5pZCkKKyAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5l
cihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgIC50aGVuKChjbGlja0V2ZW50TGlzdGVuZXIp
ID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydChjbGlja0V2ZW50TGlz
dGVuZXIuaGFzQnJlYWtwb2ludCwgIkNsaWNrIGV2ZW50IGxpc3RlbmVyIGZvciBidXR0b24xIHNo
b3VsZCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKIApAQCAtMTU0LDYgKzE2NywxOTUgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgfQogICAgIH0pOwogCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlv
bnMuQ29uZGl0aW9uIiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1
Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaGFzIGEgdHJ1dGh5IGJy
ZWFrcG9pbnQgY29uZGl0aW9uLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
YXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xp
Y2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNv
bmRpdGlvbiB0byAnZmFsc2UnLi4uIik7CisgICAgICAgICAgICBicmVha3BvaW50LmNvbmRpdGlv
biA9ICJmYWxzZSI7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkg
eworICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4iKTsKKyAgICAgICAgICAgICAg
ICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1ZSI7CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAg
ICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCks
CisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAg
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAs
ICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNo
b3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5y
ZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAg
fSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRP
TS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLklnbm9yZUNvdW50IiwKKyAg
ICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVz
ZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMgaGl0IGF0IGxlYXN0IGFzIG1hbnkgdGltZXMgYXMg
aXQncyBgaWdub3JlQ291bnRgLiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAg
ICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
YXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsK
KworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xp
Y2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGln
bm9yZUNvdW50IHRvICcyJy4uLiIpOworICAgICAgICAgICAgYnJlYWtwb2ludC5pZ25vcmVDb3Vu
dCA9IDI7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAg
ICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAg
ICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91
bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBw
YXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUo
KTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRC
cmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLkFjdGlvbi5Mb2ciLAorICAgICAgICBk
ZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgbG9nIGJyZWFrcG9pbnQgYWN0aW9ucyBleGVjdXRlIHdo
ZW4gdGhlIGJyZWFrcG9pbnQgaXMgaGl0LiIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAg
ICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9
IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5F
dmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsK
KyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBzZXRCcmVha3BvaW50
Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJBZGRp
bmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQu
Y3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhOiAiQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDEifSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9
IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRWRpdGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAg
ICAgIGFjdGlvbi5kYXRhID0gYEJSRUFLUE9JTlQgQUNUSU9OIExPRyAke2l9YDsKKworICAgICAg
ICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGF1dG8tY29udGludWUuLi4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlRy
aWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAgICAgICAgIGxldCBbbWVzc2FnZUFk
ZGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBXSS5j
b25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VB
ZGRlZCksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVz
dFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
dmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwKKyAgICAgICAgICAgICAgICBdKTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobWVzc2FnZUFkZGVkRXZl
bnQuZGF0YS5tZXNzYWdlLm1lc3NhZ2VUZXh0LCBhY3Rpb24uZGF0YSwgIlNob3VsZCBleGVjdXRl
IGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBp
LCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5v
dCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1v
dmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVy
KFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwK
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5z
ZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUiLAor
ICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZXZhbHVhdGUgYnJlYWtwb2ludCBhY3Rp
b25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAg
bGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
KytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUo
KTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0
IHNldEJyZWFrcG9pbnRGb3JDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgIGxldCBh
Y3Rpb24gPSBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUu
RXZhbHVhdGUsIHtkYXRhOiAid2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gMTsi
fSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAg
ICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRWRp
dGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRh
dGEgPSBgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gJHtpfTtgOworCisgICAg
ICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLiIpOworICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlz
ZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRl
c3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisK
KyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0ID0gYXdh
aXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9O
X0VWQUxVQVRFYCk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChi
cmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQsIGksICJTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3Vs
ZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMiwgIlNob3VsZCBub3QgcGF1c2Uu
Iik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7Cisg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgIH0sCisgICAgfSk7
CisKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6ICJET00uc2V0QnJlYWtw
b2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZCIsCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiSW52
YWxpZCBldmVudCBsaXN0ZW5lciBpZGVudGlmaWVycyBzaG91bGQgY2F1c2UgYW4gZXJyb3IuIiwK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2Uu
aHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbApp
bmRleCBlZTNhMTI1YTcxZDE4YTMyNTg1MTIyOGMzYjFkYWE2OTQxNjU2NzFiLi41YWNiZDE5MmZl
MGUyZDgxYjQzZDczYTJlMzVmZjlmMzcyZDQwODNhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXBhdXNlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1sCkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjogIldvcmtlciBzaG91bGQgcGF1c2Ugb24g
YnJlYWtwb2ludC4iLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAg
ICAgbGV0IGxvY2F0aW9uID0gd29ya2VyVGFyZ2V0Lm1haW5SZXNvdXJjZS5jcmVhdGVTb3VyY2VD
b2RlTG9jYXRpb24oOCwgMCk7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5C
cmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgd29ya2VyLnBvc3RNZXNzYWdlKCJ0cmlnZ2VyQnJlYWtwb2lu
dCIpYCk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVh
a3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJl
ZC1icmVha3BvaW50Lmh0bWwKaW5kZXggYTNiMzM0YzRkNjYzM2JlMzY5NzBiNzg5ZWI2ZWM4OWM4
YjYxY2QzMi4uYTNmMjZmZGQwMmQ3NDcwMTYyYTZkYmNiNzM4ZDE1ZGE3MzZiM2RmNyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1zaGFyZWQtYnJlYWtw
b2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hh
cmVkLWJyZWFrcG9pbnQuaHRtbApAQCAtOTQsNyArOTQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0KHdvcmtlclRhcmdldDEubWFpblJlc291cmNlIGluc3RhbmNlb2YgV0kuU2NyaXB0KTsK
ICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHdvcmtlclRhcmdldDEubWFpblJlc291cmNlLmNy
ZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig4LCAwKTsKLSAgICAgICAgICAgIGJyZWFrcG9pbnQgPSBu
ZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICBicmVha3BvaW50ID0gbmV3
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyV29ya2VyQnJlYWtwb2ludFBhdXNlcygp
YCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407038</attachid>
            <date>2020-08-21 18:50:43 -0700</date>
            <delta_ts>2020-08-23 18:18:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215362-20200821185042.patch</filename>
            <type>text/plain</type>
            <size>503034</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdlOTI2ZGU2OTNmNGIzMWE1ZjRiNDZmYmQ5MjIw
MGQwNTE4NTJhOTMuLmMzZDkyMTc2NjRkODcwNDUxYzljZjI3ZGIzZmVlNTgxYjY0ODlhMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wOC0yMSAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NjkzMjkyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisg
ICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3BlcnMgdG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAg
ICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1
ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZpcnN0IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1
YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4gZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRo
b3V0IHBhdXNpbmcKKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoKKyAg
ICAgICAgQWRkIGFuIGBvcHRpb25zYCBwYXJhbWF0ZXIgdG8gYERPTS5zZXRCcmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lcmAgdG8gYWxsb3cgY29uZmlndXJhdGlvbi4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNg
IHBhcmFtYXRlciB0byBgRE9NRGVidWdnZXIuc2V0RXZlbnRCcmVha3BvaW50YCB0byBhbGxvdyBj
b25maWd1cmF0aW9uLgorCisgICAgICAgICogZGVidWdnZXIvQnJlYWtwb2ludC5oOgorICAgICAg
ICAoSlNDOjpCcmVha3BvaW50OjppZCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVh
a3BvaW50Ojpzb3VyY2VJRCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50
OjpsaW5lTnVtYmVyIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNv
bHVtbk51bWJlciBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50Ojpjb25k
aXRpb24gY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6YWN0aW9ucyBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50Ojppc0F1dG9Db250aW51ZSBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpyZXNldEhpdENvdW50KTog
QWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlzTGlua2VkIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlzUmVzb2x2ZWQgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludHNMaXN0Ojp+QnJlYWtwb2ludHNMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZWJ1Z2dlci9CcmVha3BvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbjo6QWN0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFr
cG9pbnQ6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpCcmVha3Bv
aW50KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmxpbmspOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludDo6cmVzb2x2ZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
cmVha3BvaW50OjpzaG91bGRQYXVzZSk6IEFkZGVkLgorICAgICAgICBVbmlmeSBgSlNDOjpCcmVh
a3BvaW50YCBhbmQgYEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBk
ZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ci5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OkRlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmFkZE9ic2VydmVyKTog
QWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpyZW1vdmVPYnNlcnZlcik6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzIGNv
bnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkaXNwYXRjaEZ1bmN0aW9uVG9P
YnNlcnZlcnMpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6
IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludCk6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjphcHBseUJyZWFrcG9pbnRzKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldEJy
ZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtwb2ludCk6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkaWRIaXRCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlYnVnZ2VyOjpjbGVhckJyZWFrcG9pbnRzKToKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXI6OmV2YWx1YXRlQnJlYWtwb2ludENvbmRpdGlvbik6IEFkZGVkLgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyk6IEFkZGVkLgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9p
bnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNhbmNlbFBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNvbnRpbnVlUHJv
Z3JhbSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwTmV4dEV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3Rl
cE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZCk6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpoYW5kbGVQYXVzZSk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6ZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6YXRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNs
ZWFyTmV4dFBhdXNlU3RhdGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6d2lsbFJ1bk1pY3Jv
dGFzayk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkUnVuTWljcm90YXNrKTog
QWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpoYXNCcmVha3BvaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldFBhdXNlT25OZXh0U3RhdGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgVW5pZnkgYEpTQzo6RGVidWdnZXJgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHRE
ZWJ1Z1NlcnZlcmAgdG8gc2ltcGxpZnkgYnJlYWtwb2ludCBsb2dpYy4KKyAgICAgICAgSW50cm9k
dWNlIHRoZSBjb25jZXB0IG9mIGEgInNwZWNpYWwgYnJlYWtwb2ludCIsIHdoaWNoIGlzIGVzc2Vu
dGlhbGx5IGEgYEpTQzo6QnJlYWtwb2ludGAKKyAgICAgICAgdGhhdCBpcyBleHBlY3RlZCB0byBw
YXVzZSBhdCB0aGUgbmV4dCBvcHBvcnR1bml0eSBidXQgaXNuJ3QgdGllZCB0byBhIHBhcnRpY3Vs
YXIgbG9jYXRpb24uCisgICAgICAgIEFzIGFuIGV4YW1wbGUsIHdoZW5ldmVyIGFuIGV2ZW50IGJy
ZWFrcG9pbnQgaXMgaGl0LCBpbnN0ZWFkIG9mIGp1c3QgcGF1c2luZyBhdCB0aGUgbmV4dAorICAg
ICAgICBvcHBvcnR1bml0eSwgdGhlIG5ld2x5IG1hbmFnZWQgYEpTQzo6QnJlYWtwb2ludGAgaXMg
dXNlZCBhcyBhICJzcGVjaWFsIGJyZWFrcG9pbnQiLCBhbGxvd2luZworICAgICAgICBmb3IgaXQn
cyBjb25maWd1cmF0aW9uIChpZS5nLiBjb25kaXRpb24sIGlnbm9yZSBjb3VudCwgYWN0aW9ucywg
YXV0by1jb250aW51ZSkgdG8gYmUgdXNlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVjdEdyb3Vw
Rm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OmJyZWFrcG9pbnRBY3Rp
b25UeXBlRm9yU3RyaW5nKTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6OnBhcnNlQnJlYWtw
b2ludE9wdGlvbnMpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZCk6IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6
OlByb3RvY29sQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmNyZWF0ZURlYnVnZ2VyQnJlYWtw
b2ludCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6Om1hdGNoZXNTY3JpcHRVUkwgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJC
cmVha3BvaW50RnJvbVBheWxvYWQpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFzc2VydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNjaGVkdWxlQXN5bmND
YWxsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGREZWJ1Z2dlckxvY2F0aW9uKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJs
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNl
dEJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkp
OiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2Fu
Y2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2Fu
Y2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZEJlY29tZUlkbGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxSdW5NaWNyb3Rhc2sp
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRSdW5NaWNy
b3Rhc2spOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQ
YXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFr
cG9pbnRBY3Rpb25Tb3VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9yQnJlYWtwb2ludFN0YXRlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJEZWJ1Z2dlckJyZWFr
cG9pbnRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uc0Zyb21Qcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVz
ZU9uTmV4dFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIENyZWF0ZSBhIHByaXZhdGUgYFBy
b3RvY29sQnJlYWtwb2ludGAgY2xhc3MgdGhhdCBob2xkcyB0aGUgZGF0YSBzZW50IGJ5IHRoZSBm
cm9udGVuZC4gVGhpcworICAgICAgICBpcyBuZWNlc3NhcnkgYmVjYXVzZSBicmVha3BvaW50cyBp
biB0aGUgZnJvbnRlbmQgaGF2ZSBhIHBvdGVudGlhbGx5IG9uZS10by1tYW55IHJlbGF0aW9uc2hp
cAorICAgICAgICB3aXRoIGJyZWFrcG9pbnRzIGluIHRoZSBiYWNrZW5kLCBhcyB0aGUgc2FtZSBz
Y3JpcHQgY2FuIGJlIGxvYWRlZCBtYW55IHRpbWVzIG9uIGEgcGFnZS4gRWFjaAorICAgICAgICBv
ZiB0aG9zZSBzY3JpcHRzIGlzIGluZGVwZW5kZW50LCBob3dldmVyLCBhbmQgY2FuIGV4ZWN1dGUg
ZGlmZmVyZW50bHksIG1lYW5pbmcgdGhhdCB0aGUgc2FtZQorICAgICAgICBicmVha3BvaW50IGZv
ciBlYWNoIHNjcmlwdCBhbHNvIG5lZWRzIGEgZGlmZmVyZW50IHN0YXRlIChlLmcuIGlnbm9yZSBj
b3VudCkuIEFzIHN1Y2gsIHRoZQorICAgICAgICBgUHJvdG9jb2xCcmVha3BvaW50YCBpcyBlZmZl
Y3RpdmVseSBhIHRlbXBsYXRlIHRoYXQgaXMgYWN0dWFsaXplZCB3aGVuZXZlciBhIG5ldyBzY3Jp
cHQgaXMKKyAgICAgICAgcGFyc2VkIHRoYXQgbWF0Y2hlcyB0aGUgVVJMIG9mIHRoZSBgUHJvdG9j
b2xCcmVha3BvaW50YCB0byBjcmVhdGUgYSBgSlNDOjpCcmVha3BvaW50YCB0aGF0CisgICAgICAg
IGlzIHVzZWQgYnkgdGhlIGBKU0M6OkRlYnVnZ2VyYC4gYFByb3RvY29sQnJlYWtwb2ludGAgYWxz
byBwYXJzZXMgYnJlYWtwb2ludCBjb25maWd1cmF0aW9ucy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0
YWNoRGVidWdnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFn
ZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oOgorICAgICAgICBSZXBs
YWNlIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB3aXRoIGBKU0M6OkRlYnVnZ2VyYC4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNNaWNyb3Rhc2suY3BwOgorICAgICAgICAoSlNDOjpKU01p
Y3JvdGFzazo6cnVuKToKKyAgICAgICAgRHJpdmUtYnk6IHIyNDg4OTQgbWlzdGFrZW5seSBvbWl0
dGVkIHRoZSBjYWxsIHRvIG5vdGlmeSB0aGUgZGVidWdnZXIgdGhhdCB0aGUgbWljcm90YXNrIHJh
bi4KKworICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisKIDIwMjAtMDgtMjAgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJy
b3JzIGZvciBjbGFzcyBtZXRob2RzIG5hbWVkICJjb25zdHJ1Y3RvciIgYW5kICJwcm90b3R5cGUi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmU0MzA1MTFjYzQ1ZjY1NzNiZWZmZWQ2ZjUwYWIzZTU1ODkyOWIyOC4u
YzU4OGE2ODJlOWNjODY1MTI3MGM5MzBjMjU0MjA2ZDg2MDBlOTUzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwOCBAQAorMjAyMC0wOC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8g
YmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MzYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjkzMjkyMT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3Bl
cnMgdG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAgICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93
LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZp
cnN0IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4g
ZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRob3V0IHBhdXNpbmcKKworICAgICAgICBUZXN0
czogaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sCisgICAg
ICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1i
cmVha3BvaW50cy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2
ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMuaHRtbAorICAgICAgICAgICAg
ICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0bWwK
KworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIp
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
Om1haW5GcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRIYW5kbGVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZVRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEZp
cmVUaW1lcik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVO
YXZpZ2F0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxG
aXJlQW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVi
dWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJy
ZWFrcG9pbnQpOgorICAgICAgICBLZWVwIGEgYEpTQzo6QnJlYWtwb2ludGAgZm9yIGVhY2ggZXZl
bnQgYnJlYWtwb2ludCBpbnN0ZWFkIG9mIGEgc2ltcGxlIGBib29sYCwgYWxsb3dpbmcgZm9yCisg
ICAgICAgIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBmaXJzdCBzZXQuIFdo
ZW4gYW55IG9mIHRoZXNlIGJyZWFrcG9pbnRzIGFyZSBoaXQsIHBhc3MKKyAgICAgICAgaXQgdG8g
dGhlIGBKU0M6OkRlYnVnZ2VyYCBhcyBhICJzcGVjaWFsIGJyZWFrcG9pbnQiLCB3aGljaCBiZWhh
dmVzIHRoZSBzYW1lIGFzICJwYXVzZSBBU0FQIgorICAgICAgICBidXQgYWxzbyBzdXBwb3J0cyBh
IGNvbmRpdGlvbiwgYW4gaWdub3JlIGNvdW50LCBhY3Rpb25zLCBhbmQgYXV0by1jb250aW51ZS4g
UmVzZXQgdGhlIGhpdAorICAgICAgICBjb3VudCBmb3IgYW55IG9mIHRoZXNlICJzcGVjaWFsIGJy
ZWFrcG9pbnRzIiB0aGF0IHBlcnNpc3QgYWNyb3NzIFdlYiBJbnNwZWN0b3Igc2Vzc2lvbnMKKyAg
ICAgICAgd2hlbiB0aGUgbWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNj
cmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpZENvbnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6aXNDb250ZW50U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVwb3J0
RXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNjcmlw
dERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVy
OjphdHRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdERlYnVnU2VydmVyOjpyZXBvcnRFeGNlcHRpb24gY29uc3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KToKKyAgICAgICAg
UmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcmAgd2l0aCBgSlNDOjpEZWJ1Z2dl
cmAuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9i
ZSk6CisgICAgICAgIFJlcGxhY2UgYEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludGAgd2l0aCBg
SlNDOjpCcmVha3BvaW50YC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaXJlVGltZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRIYW5kbGVFdmVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKToKKwor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRh
cmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVycyk6CisgICAgICAgICogcGFnZS9ET01UaW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICBXaGVu
IG5vdGlmeWluZyBXZWIgSW5zcGVjdG9yIHRoYXQgYWN0aXZpdHkgZGlkIG9jY3VyLCBpbmNsdWRl
IGFsbCBpbmZvcm1hdGlvbiBwcmV2aW91c2x5CisgICAgICAgIGluY2x1ZGVkIHdoZW4gbm90aWZ5
aW5nIFdlYiBJbnNwZWN0b3IgdGhhdCB0aGF0IGFjdGl2aXR5IHdhcyBhYm91dCB0byBvY2N1ciBz
byB0aGF0IFdlYgorICAgICAgICBJbnNwZWN0b3IgY2FuIGtub3cgd2hldGhlciBhIHBhdXNlIGZv
ciB0aGUgInNwZWNpYWwgYnJlYWtwb2ludCIgZm9yIHRoYXQgYWN0aXZpdHkgaXMgc3RpbGwKKyAg
ICAgICAgc2NoZWR1bGVkIGFuZCBpZiBzbyBjYW5jZWwgaXQuCisKIDIwMjAtMDgtMjAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI2MzcyOSk6IENhcm91c2VsIGZyZWV6ZXMgb24gImZvdXJ0aCBwYWdlIi9mb3VydGggY2xpY2sg
b24gcmlnaHQgYXJyb3cgb24gbmV0ZmxpeC5jb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IGQ1NTNiOTk0M2JkMmFiYmU3YTRhZDgzNzg5MDk0NTgxYjMwOTE4YzQuLmU2NjI1ZTY5M2Q1NTll
NWUxYTBlZGFjMTBkZDg0ZDEzMGJlMTA5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2OSBAQAorMjAyMC0wOC0yMSAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8g
YmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MzYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjkzMjkyMT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3Bl
cnMgdG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAgICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93
LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZp
cnN0IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4g
ZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRob3V0IHBhdXNpbmcKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50
KToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc3BlY2lhbCk6IEFkZGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHJlbW92YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5C
cmVha3BvaW50LnByb3RvdHlwZS5zZXQgY29uZGl0aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9p
bnQucHJvdG90eXBlLmdldCBpZ25vcmVDb3VudCk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnBy
b3RvdHlwZS5zZXQgaWdub3JlQ291bnQpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IGF1dG9Db250aW51ZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5z
ZXQgYXV0b0NvbnRpbnVlKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBh
Y3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBwcm9iZUFjdGlv
bnMpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuY3ljbGVUb05leHRNb2RlKToK
KyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmNyZWF0ZUFjdGlvbik6CisgICAgICAg
IChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5yZWNyZWF0ZUFjdGlvbik6CisgICAgICAgIChXSS5C
cmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2lu
dC5wcm90b3R5cGUuY2xlYXJBY3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUub3B0
aW9uc1RvUHJvdG9jb2wpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBl
LmJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5mcm9t
SlNPTik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc291
cmNlQ29kZUxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLmdldCBjb250ZW50SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgdGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBpZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBpZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZXNvbHZlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgcmVzb2x2ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuX2lzU3BlY2lhbCk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9u
TG9jYXRpb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzOgorICAgICAg
ICAoV0kuRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50LmZyb21KU09O
KTogQWRkZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAg
ICAgIChXSS5ET01CcmVha3BvaW50LmRlc2VyaWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qczoKKyAgICAgICAg
KFdJLkV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQuZnJvbUpT
T04pOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNw
ZWNpYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0
IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBl
LnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5z
YXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90
eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQuZGVzZXJpYWxpemUpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJs
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5zZXQg
ZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFT
Y3JpcHRCcmVha3BvaW50LmpzOiBDb3BpZWQgZnJvbSBVc2VySW50ZXJmYWNlL01vZGVscy9CcmVh
a3BvaW50LmpzLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOgorICAgICAgICAo
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpTT04pOgorICAgICAgICAoV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5wcm90b3R5cGUuZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbik6CisgICAgICAgIChXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGNvbnRlbnRJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRp
Zmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHRh
cmdldCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNw
ZWNpYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5nZXQgcmVtb3ZhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGlkZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBpZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgcmVzb2x2ZWQpOgorICAgICAgICAoV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnNldCByZXNvbHZlZCk6CisgICAgICAgIChX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAg
IChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9pc1NwZWNpYWwp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9zb3VyY2VDb2Rl
TG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50LmpzOgorICAgICAg
ICAoV0kuVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LmZyb21KU09O
KTogQWRkZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc3BlY2lh
bCk6IEFkZGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTog
QWRkZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS50b0pTT04pOgorICAg
ICAgICAoV0kuVVJMQnJlYWtwb2ludC5kZXNlcmlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgUmVuYW1lIGBXSS5CcmVha3BvaW50YCB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRg
IGFuZCB1c2UgYFdJLkJyZWFrcG9pbnRgIGFzIGEgbmV3IGNvbW1vbgorICAgICAgICBiYXNlIGNs
YXNzIGZvciBhbGwgYnJlYWtwb2ludCB0eXBlcywgYWxsb3dpbmcgbW9yZSBsb2dpYyB0byBiZSBz
aGFyZWQgKGUuZy4gZGlzYWJsZWQgc3RhdGUpLgorICAgICAgICBBZGRpdGlvbmFsbHksIGJyZWFr
cG9pbnRzIGFyZSBub3cgYWJsZSB0bworICAgICAgICAgLSBkZXRlcm1pbmUgd2hldGhlciBvciBu
b3QgdGhleSdyZQorICAgICAgICAgICAgLSBzcGVjaWFsCisgICAgICAgICAgICAtIHJlbW92YWJs
ZQorICAgICAgICAgICAgLSBlZGl0YWJsZSAoaS5lLiBjb25maWd1cmFibGUpCisgICAgICAgICAt
IHJlbW92ZSB0aGVtc2VsdmVzCisgICAgICAgIHdpdGhvdXQgdGhlIGNhbGxlciBuZWVkaW5nIHRv
IGtub3cgd2hhdCBtYW5hZ2VyIHRvIGNvbnN1bHQgd2l0aC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIp
OgorICAgICAgICAoV0kuRE9NTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50
Q29uZmlndXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUu
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0kuRE9NTWFuYWdlci5w
cm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0ku
RE9NTWFuYWdlci5wcm90b3R5cGUuX3NldEV2ZW50QnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAg
ICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZUV2ZW50QnJlYWtwb2ludCk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2lu
dEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01NYW5hZ2Vy
LnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQpOiBBZGRlZC4K
KyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVFdmVudEJyZWFrcG9pbnQp
OiBEZWxldGVkLgorICAgICAgICBLZWVwIHRyYWNrIG9mIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBm
b3Igc3BlY2lmaWMgbGlzdGVuZXIgYnJlYWtwb2ludHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlcik6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3Rv
dHlwZS5hZGRET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUucmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmFkZEV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFVSTEJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVVUkxCcmVha3BvaW50KToK
KyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2NvbW1hbmRBcmd1bWVu
dHNGb3JFdmVudEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuX3NldEV2ZW50QnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVtb3ZlRXZlbnRCcmVha3BvaW50KTogQWRk
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVu
dEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQ
cm9wZXJ0eUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKTogQWRkZWQuCisg
ICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFNwZWNp
YWwpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5f
dXBkYXRlRXZlbnRCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgS2VlcCB0cmFjayBvZiBj
b25maWd1cmF0aW9uIGNoYW5nZXMgZm9yIHNwZWNpYWwgZXZlbnQgYnJlYWtwb2ludHMuCisgICAg
ICAgIFN0b3JlIHNwZWNpYWwgZXZlbnQgYnJlYWtwb2ludHMgaW5zaWRlIGBXSS5vYmplY3RTdG9y
ZXMuZXZlbnRCcmVha3BvaW50c2AuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RlYnVnZ2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlcik6Cisg
ICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkUHJvYmVzRm9yQnJlYWtwb2lu
dCk6IEFkZGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVQ
cm9iZXNGb3JCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIu
cHJvdG90eXBlLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3NldEJyZWFrcG9pbnQpOgorICAgICAgICAoV0ku
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRD
aGFuZ2UpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlQnJl
YWtwb2ludEFjdGlvbnNEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5pc0JyZWFrcG9pbnRSZW1vdmFibGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVi
dWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pc0JyZWFrcG9pbnRTcGVjaWFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50RWRpdGFibGUp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fZGVidWdn
ZXJCcmVha3BvaW50QWN0aW9uVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl9kZWJ1Z2dlckJyZWFrcG9pbnRPcHRpb25zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2FkZFByb2Jlc0ZvckJyZWFrcG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVt
b3ZlUHJvYmVzRm9yQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl91cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVwbGFjZSBgV0kuQnJlYWtwb2ludGAgd2l0aCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnRgLgorICAgICAgICBQcm9iZXMgbm93IHN1cHBvcnQgYFdJLkV2ZW50QnJlYWtwb2ludGAgaW4g
YWRkaXRpb24gdG8gYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5w
cm90b3R5cGUuX2NyZWF0ZVBvcG92ZXJDb250ZW50KToKKyAgICAgICAgQWxsb3cgYW55IGJyZWFr
cG9pbnQgaW5zdGVhZCBvZiBvbmx5IGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisgICAgICAg
IERyaXZlLWJ5OiB0aGUgZXhpc3RpbmcgYGlnbm9yZUNvdW50YCB2YWx1ZSB3YXNuJ3QgYmVpbmcg
dXNlZCB0byBwb3B1bGF0ZSB0aGUgYDxpbnB1dD5gLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50
VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGVsZXRlKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGxpc3RlbmVyU2V0KTogQWRkZWQuCisgICAgICAgIChX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6IEFkZGVkLgor
ICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVUaXRsZXMp
OiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0
IGJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5nZXQgZmlsdGVyYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlVGl0bGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9i
cmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJy
ZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UpOgorICAgICAgICAoLml0ZW0uYnJlYWtw
b2ludC5wYXVzZWQgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29uKTogQWRkZWQuCisg
ICAgICAgICguaXRlbS5icmVha3BvaW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVk
KTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ct
ZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3Bv
aW50LnNlbGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNv
bik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1wYXVzZWQtaWNvbiAuaWNvbik6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbik6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4pOiBE
ZWxldGVkLgorICAgICAgICAoLmRhdGEtdXBkYXRlZC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1p
Y29uIC5pY29uID4gc3Bhbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29s
b3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAuaWNv
bik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJr
KSAuYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1hc3NlcnRpb24t
aWNvbiAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1w
YXVzZWQtaWNvbiAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29s
b3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVs
ZW1lbnQuanM6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQpOgorICAgICAg
ICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0
YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25zcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01C
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik6IERlbGV0ZWQuCisgICAgICAgIChXSS5E
T01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl90b2dnbGVCcmVha3BvaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Vw
ZGF0ZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01C
cmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5kb20u
c3VidHJlZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5p
dGVtLmJyZWFrcG9pbnQuZG9tLmF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24p
OiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3Qo
LnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQp
IC5pY29uKTogQWRkZWQuCisgICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3It
c3VidHJlZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUt
bW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3Itbm9kZS1yZW1vdmVkOm5vdCgu
YnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQt
Zm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
YnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1vZGlmaWVkOm5vdCguYnJl
YWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9y
LW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOgorICAgICAg
ICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5v
bmRldGFjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0ku
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRl
Q29udGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1h
Z2VFbGVtZW50Rm9jdXNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik6IERlbGV0
ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Rv
Z2dsZUJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAg
ICAoLml0ZW0uYnJlYWtwb2ludC5ldmVudC5hbmltYXRpb24tZnJhbWU6bm90KC5wYXVzZWQpIC5p
Y29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5v
dCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5ldmVu
dC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJy
ZWFrcG9pbnQuZXZlbnQudGltZW91dDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAg
ICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5l
dmVudC5hbmltYXRpb24tZnJhbWU6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAg
IChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZl
bnQuaW50ZXJ2YWw6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQubGlzdGVu
ZXI6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQudGltZW91dDpub3QoLnBh
dXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9p
bnQtZm9yLWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29u
KTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWlu
dGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAg
ICAgICAoLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVh
a3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2lu
dC5ldmVudC5icmVha3BvaW50LWZvci10aW1lb3V0Om5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNv
bikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1hbmltYXRpb24tZnJhbWU6
bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFr
cG9pbnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJl
YWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1saXN0ZW5lcjpub3QoLmJyZWFrcG9pbnQtcGF1
c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9y
LXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanM6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcy4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJl
ZUVsZW1lbnQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5w
cm90b3R5cGUuZ2V0IGZpbHRlcmFibGVEYXRhKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6IEFkZGVkLgorICAgICAg
ICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0
bGVzKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3Bv
aW50VHJlZUVsZW1lbnQuY3NzLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0
IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmphdmFzY3JpcHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQpOiBBZGRlZC4K
KyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0
aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3BvaW50LmphdmFzY3Jp
cHQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQpOiBBZGRlZC4KKyAg
ICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3VidGl0bGUuZm9ybWF0dGVkLWxv
Y2F0aW9uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGlu
ZSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lmxp
bmUgLmljb24gPiBzcGFuKTogQWRkZWQuCisgICAgICAgICguZGF0YS11cGRhdGVkLml0ZW0uYnJl
YWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24gPiBzcGFuKTogQWRkZWQuCisgICAgICAgICgu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uKTogQWRk
ZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZXhjZXB0aW9uIC5pY29u
KTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuYXNzZXJ0aW9u
IC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubWlj
cm90YXNrIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbik6IEFkZGVk
LgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJl
YWtwb2ludC5qYXZhc2NyaXB0LmRlYnVnZ2VyLXN0YXRlbWVudCAuaWNvbik6IEFkZGVkLgorICAg
ICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2lu
dC5qYXZhc2NyaXB0LmV4Y2VwdGlvbiAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFz
c2VydGlvbiAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbik6
IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVF
bGVtZW50LmpzOgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRl
dGFjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJv
dG90eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVl
RWxlbWVudC5wcm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVh
a3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAo
V0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxldGVkLgorICAgICAgICAoV0ku
VVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdG9nZ2xlQnJlYWtwb2ludCk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91
cGRhdGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQudXJs
IC5zdWJ0aXRsZSk6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LnVybDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRl
ZC4KKyAgICAgICAgKC5icmVha3BvaW50LnVybCAuc3VidGl0bGUpOiBEZWxldGVkLgorICAgICAg
ICAoLmJyZWFrcG9pbnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJy
ZWFrcG9pbnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVk
LgorICAgICAgICBSZW5hbWUgYFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudGAgdG8gYFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnRgIGFuZCB1c2UKKyAgICAgICAgYFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudGAgYXMgYSBuZXcgY29tbW9uIGJhc2UgY2xhc3MgZm9yIGFsbCBicmVha3Bv
aW50IHRyZWUgZWxlbWVudHMsCisgICAgICAgIGFsbG93aW5nIG1vcmUgbG9naWMgYW5kIHN0eWxl
cyB0byBiZSBzaGFyZWQgKGUuZy4gZGlzYWJsZWQgc3RhdGUpLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAg
KFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAoV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9pbnNlcnREZWJ1Z2dlclRyZWVF
bGVtZW50KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5fY29tcGFyZUphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnRzKTogQWRkZWQuCisg
ICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZEJy
ZWFrcG9pbnQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9yZW1vdmVBbGxCcmVha3BvaW50cyk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRzQmVuZWF0aFRyZWVFbGVtZW50
KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
YWRkSXNzdWUpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLl91cGRhdGVQYXVzZVJlYXNvblNlY3Rpb24pOgorICAgICAgICAoV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5faGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRlZE9yUmVtb3ZlZCk6CisgICAgICAgIChXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQ3JlYXRlQnJl
YWtwb2ludENvbnRleHRNZW51LmFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQpOgor
ICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9wb3B1
bGF0ZUNyZWF0ZUJyZWFrcG9pbnRDb250ZXh0TWVudSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxh
eUxvY2F0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMpOiBEZWxldGVk
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanM6CisgICAgICAg
IChXSS5Qcm9iZVNldCk6CisgICAgICAgIChXSS5Qcm9iZVNldC5wcm90b3R5cGUuY3JlYXRlUHJv
YmUpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBlLndpbGxSZW1vdmUpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgorICAgICAg
ICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fcHJvY2Vzc1JlY29yZCk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzOgorICAgICAg
ICAoV0kuUHJvYmVTZXREZXRhaWxzU2VjdGlvbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5Qcm9iZURldGFp
bHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmluc3BlY3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2Rl
VGV4dEVkaXRvcik6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUu
Y2xvc2UpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRleHRF
ZGl0b3JCcmVha3BvaW50QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5UZXh0UmVzb3VyY2VDb250ZW50
Vmlldy5wcm90b3R5cGUuZ2V0IHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cyk6CisgICAg
ICAgIChXSS5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3Byb2JlU2V0c0NoYW5n
ZWQpOgorICAgICAgICBQcm9iZXMgbm93IHN1cHBvcnQgYFdJLkV2ZW50QnJlYWtwb2ludGAgaW4g
YWRkaXRpb24gdG8gYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5j
cmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV0kuQ29udGVudFZpZXcucmVz
b2x2ZWRSZXByZXNlbnRlZE9iamVjdEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdJ
LkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGV4dE1lbnVVdGlsaXRpZXMuanM6CisgICAgICAgIChXSS5hcHBlbmRDb250ZXh0TWVudUl0
ZW1zRm9yU291cmNlQ29kZSk6CisgICAgICAgIFJlcGxhY2UgYFdJLkJyZWFrcG9pbnRgIHdpdGgg
YFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3
KToKKyAgICAgICAgUmVwbGFjZSBgV0kuRE9NQnJlYWtwb2ludGAgd2l0aCBgV0kuQnJlYWtwb2lu
dGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9u
R3JvdXAuanM6CisgICAgICAgIChXSS5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzOgor
ICAgICAgICAoLmV2ZW50LWxpc3RlbmVyLXNlY3Rpb24gPiAuY29udGVudCBpbnB1dFt0eXBlPSJj
aGVja2JveCJdICsgLmdvLXRvLWFycm93KTogQWRkZWQuCisgICAgICAgICguZXZlbnQtbGlzdGVu
ZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNoZWNrYm94Il06bm90KDpjaGVja2Vk
KSArIC5nby10by1hcnJvdyk6IEFkZGVkLgorICAgICAgICBBZGQgYSBnby10byBhcnJvdyBuZXh0
IHRvIHRoZSBCcmVha3BvaW50IGNoZWNrYm94IHRoYXQgcmV2ZWFscyB0aGUgYFdJLkV2ZW50QnJl
YWtwb2ludGAgaW4KKyAgICAgICAgdGhlIFNvdXJjZXMgVGFiLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qczoKKyAgICAgICAgKFdJLkJyZWFr
cG9pbnRBY3Rpb25WaWV3LnByb3RvdHlwZS5fYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZCk6Cisg
ICAgICAgIERyaXZlLWJ5OiBtaW5vciBjb2RlIGNsZWFudXAuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuQ2FsbEZy
YW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAgICBE
cml2ZS1ieTogaW5jbHVkZSBzb3VyY2UgY29kZSBsb2NhdGlvbiBjb250ZXh0IG1lbnUgaXRlbXMu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRt
bDoKKwogMjAyMC0wOC0xNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQXNzZXJ0aW9uIEZhaWxlZDogQXBwZW5kZWQgYSBzdHJpbmcg
d2l0aCBuZXdsaW5lcy4gVGhpcyBicmVha3MgdGhlIHNvdXJjZSBtYXAuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTg2Mjg4YjJlNzc3MGU4ODE3YTBlOGRiMmI0OGQ3MjYz
Nzc4ZGMxNS4uZTAwZDgwNDllYjVmODczODBmMGRkZmQ3OTZiNDZhMWU1NTM2NTJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjg1LDEyICs2ODUsOSBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JUYXJnZXQuaAogICAgIGluc3BlY3Rvci9QZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQu
aAogICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAotICAgIGluc3BlY3Rvci9TY3JpcHRC
cmVha3BvaW50LmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKICAgICBpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oCi0gICAgaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAotICAgIGluc3BlY3Rvci9T
Y3JpcHREZWJ1Z1NlcnZlci5oCiAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmgKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhMjhmNTU4OTM4MGVkZWIzODM3ZTdiOGJlMzAzNDJkOTlk
MjliNzc2Li5lOWQ4MmNmOTA1YWZiYmU3Zjc2ZDI2Y2I0Yjg4YTRiN2Y4MDE5NDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5Myw5ICsxMzkzLDYgQEAKIAkJQTNGRjlCQzcy
MjM0NzQ5MTAwQjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFn
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07Ci0JCUE1MDNGQTIx
MTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyog
U2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkEyMDE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MDNGQTI2MTg4RUZGRkQw
MDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERl
YnVnU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MDNGQTI4MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmggKi87IH07CiAJCUE1MDk4QjA0MUMxNkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTA5OEIwMzFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQlB
NTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RTE4ODA5REQ1
MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMzUsNiArNDIzMiw3IEBACiAJCTkxOEUx
NUJEMjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdBNTYgLyogQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxRDE1NzhDMjRFMEJF
MzUwMDFGNENFRCAvKiBCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyQXJlbmEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyQXJlbmEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25z
dHJ1Y3RvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0cnVj
dG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3MywxMCArNDM3MSw2IEBA
CiAJCUE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyMDE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1
MDNGQTIzMTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3Jp
cHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRE
ZWJ1Z1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEyNzE4OEYx
MDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjgxODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMzFDMTZBQTAyMDAwODc3OTcg
LyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdv
cms7IHBhdGggPSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL01hY09T
WDEwLjExLnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsg
c291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CkBAIC02NTE3LDYgKzY1MTEsNyBAQAogCQkx
NDgwREI5QTBEREMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBC
cmVha3BvaW50LmNwcCAqLywKIAkJCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtw
b2ludC5oICovLAogCQkJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5jcHAg
Ki8sCiAJCQkJRjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi8sCkBAIC04
NjYyLDE2ICs4NjU3LDEyIEBACiAJCQkJQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBlckds
b2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovLAogCQkJCUE1RkQwMDY1MTg5QUZFOUMwMDYzMzIz
MSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAogCQkJCUE1RkQwMDY2MTg5QUZFOUMwMDYzMzIz
MSAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKLQkJCQlBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0QnJlYWtwb2ludC5oICovLAogCQkJCUE1RkQwMDY5MTg5QjAwQTkwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAogCQkJCUE1RkQwMDZBMTg5QjAwQTkwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKIAkJCQlBNUZEMDA2QjE4OUIwMEE5MDA2MzMyMzEgLyog
U2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKIAkJCQlBNUZEMDA2QzE4OUIwMEFBMDA2MzMyMzEgLyog
U2NyaXB0Q2FsbFN0YWNrLmggKi8sCiAJCQkJQTVGRDAwN0IxODlCMEI0QzAwNjMzMjMxIC8qIFNj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAogCQkJCUE1RkQwMDdDMTg5QjBCNEMwMDYzMzIz
MSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCi0JCQkJQTUwM0ZBMjAxODhFRkY2ODAw
MTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKLQkJCQlBNTAzRkEyMzE4OEVGRkZE
MDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAotCQkJCUE1MDNGQTI0MTg4RUZG
RkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBp
bnNwZWN0b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTAyNjMsMTIgKzEwMjU0
LDkgQEAKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyog
U2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAv
KiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTIxMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2
RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUZEMDA3MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUZEMDA3RTE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjIxODhFRkY2ODAwMTEwRjE0IC8qIFNj
cmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTI2MTg4RUZGRkQw
MDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQx
Q0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMzEw
YjlhNGNkZmQ2MWQ0NzgyZWY2NjlkM2E5YjJkNWNlMzEwMmY2Li42ODcxNDk4YjBmZWMxOTlkODhm
OTI5MjA0MDM1ZWNmMDcwM2NiYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0z
MDAsNiArMzAwLDcgQEAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKIGJ5dGVjb21waWxlci9Qcm9maWxlVHlwZUJ5dGVjb2Rl
RmxhZy5jcHAKIAorZGVidWdnZXIvQnJlYWtwb2ludC5jcHAKIGRlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCiBkZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0
aW9uLmNwcApAQCAtNTkzLDcgKzU5NCw2IEBAIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3Bw
CiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5jcHAKIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAotaW5zcGVjdG9yL1Nj
cmlwdERlYnVnU2VydmVyLmNwcAogCiAvLyBEZXJpdmVkIFNvdXJjZXMKIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvQnJlYWtwb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk2N2JmMWRkMTExNDMyYmM1MTYwNGNh
NWE2NzY1OGM0ZjRjYjY1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9CcmVha3BvaW50LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkJyZWFrcG9pbnQuaCIKKworI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitCcmVha3BvaW50OjpBY3Rpb246OkFjdGlvbihCcmVha3BvaW50OjpB
Y3Rpb246OlR5cGUgdHlwZSkKKyAgICA6IHR5cGUodHlwZSkKK3sKK30KKworUmVmPEJyZWFrcG9p
bnQ+IEJyZWFrcG9pbnQ6OmNyZWF0ZShCcmVha3BvaW50SUQgaWQsIGNvbnN0IFN0cmluZyYgY29u
ZGl0aW9uLCBBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVf
dCBpZ25vcmVDb3VudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCcmVha3BvaW50KGlk
LCBjb25kaXRpb24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQp
KTsKK30KKworQnJlYWtwb2ludDo6QnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQsIFN0cmluZyBj
b25kaXRpb24sIEFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6
ZV90IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fY29uZGl0aW9uKGNvbmRp
dGlvbikKKyAgICAsIG1fYWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRvQ29u
dGludWUoYXV0b0NvbnRpbnVlKQorICAgICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkKK3sK
K30KKworYm9vbCBCcmVha3BvaW50OjpsaW5rKFNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpCit7CisgICAgQVNTRVJUKCFpc0xpbmtl
ZCgpKTsKKyAgICBBU1NFUlQoIWlzUmVzb2x2ZWQoKSk7CisKKyAgICBtX3NvdXJjZUlEID0gc291
cmNlSUQ7CisgICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJl
ciA9IGNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gaXNMaW5rZWQoKTsKK30KKworYm9vbCBCcmVh
a3BvaW50OjpyZXNvbHZlKHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
cikKK3sKKyAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CisgICAgQVNTRVJUKCFpc1Jlc29sdmVkKCkp
OworICAgIEFTU0VSVChsaW5lTnVtYmVyID49IG1fbGluZU51bWJlcik7CisgICAgQVNTRVJUKGNv
bHVtbk51bWJlciA+PSBtX2NvbHVtbk51bWJlcik7CisKKyAgICBtX2xpbmVOdW1iZXIgPSBsaW5l
TnVtYmVyOworICAgIG1fY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyOworICAgIG1fcmVzb2x2
ZWQgPSB0cnVlOworICAgIHJldHVybiBpc1Jlc29sdmVkKCk7Cit9CisKK2Jvb2wgQnJlYWtwb2lu
dDo6c2hvdWxkUGF1c2UoRGVidWdnZXImIGRlYnVnZ2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIGlmICgrK21faGl0Q291bnQgPD0gbV9pZ25vcmVDb3VudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRlYnVnZ2VyLmV2YWx1YXRlQnJlYWtwb2lu
dENvbmRpdGlvbigqdGhpcywgZ2xvYmFsT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaAppbmRleCAxNDE4
ZTE1OThiMzBhMWIwNTgxNGFiOGZmYWQxNWEyMzM0Y2JkMmFlLi4xZmFmYjMwM2NmOGQyZTRkODgz
MDI0MDMyZDllMWFmYzBjZjY3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvQnJlYWtwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9CcmVha3BvaW50LmgKQEAgLTI2LDU0ICsyNiw4MyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIKLSNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlz
dC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEJyZWFrcG9pbnQgOiBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8QnJlYWtwb2ludD4gewotICAgIEJyZWFrcG9pbnQoKQotICAgIHsKLSAg
ICB9CitjbGFzcyBEZWJ1Z2dlcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogCi0gICAgQnJlYWtw
b2ludChTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uLCBj
b25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVkIGlnbm9y
ZUNvdW50KQotICAgICAgICA6IHNvdXJjZUlEKHNvdXJjZUlEKQotICAgICAgICAsIGxpbmUobGlu
ZSkKLSAgICAgICAgLCBjb2x1bW4oY29sdW1uKQotICAgICAgICAsIGNvbmRpdGlvbihjb25kaXRp
b24pCi0gICAgICAgICwgYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25v
cmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7Ci0gICAgfQorY2xhc3MgQnJlYWtwb2ludCA6IHB1
YmxpYyBSZWZDb3VudGVkPEJyZWFrcG9pbnQ+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
cmVha3BvaW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQWN0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAg
ICAgICAgICBMb2csCisgICAgICAgICAgICBFdmFsdWF0ZSwKKyAgICAgICAgICAgIFNvdW5kLAor
ICAgICAgICAgICAgUHJvYmUsCisgICAgICAgIH07CiAKLSAgICBCcmVha3BvaW50SUQgaWQgeyBu
b0JyZWFrcG9pbnRJRCB9OwotICAgIFNvdXJjZUlEIHNvdXJjZUlEIHsgbm9Tb3VyY2VJRCB9Owot
ICAgIHVuc2lnbmVkIGxpbmUgeyAwIH07Ci0gICAgdW5zaWduZWQgY29sdW1uIHsgMCB9OwotICAg
IFN0cmluZyBjb25kaXRpb247Ci0gICAgYm9vbCBhdXRvQ29udGludWUgeyBmYWxzZSB9OwotICAg
IHVuc2lnbmVkIGlnbm9yZUNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVkIGhpdENvdW50IHsgMCB9
OwotICAgIGJvb2wgcmVzb2x2ZWQgeyBmYWxzZSB9OworICAgICAgICBBY3Rpb24oVHlwZSk7CisK
KyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBTdHJpbmcgZGF0YTsKKyAgICAgICAgQnJlYWtw
b2ludEFjdGlvbklEIGlkIHsgbm9CcmVha3BvaW50QWN0aW9uSUQgfTsKKyAgICB9OworCisgICAg
dXNpbmcgQWN0aW9uc1ZlY3RvciA9IFZlY3RvcjxBY3Rpb24+OworCisgICAgc3RhdGljIFJlZjxC
cmVha3BvaW50PiBjcmVhdGUoQnJlYWtwb2ludElELCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9
IG51bGxTdHJpbmcoKSwgQWN0aW9uc1ZlY3RvciYmID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9
IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKworICAgIEJyZWFrcG9pbnRJRCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKworICAgIFNvdXJjZUlEIHNvdXJjZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VJRDsgfQorICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQorCisgICAgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvbjsgfQorICAgIGNvbnN0IEFjdGlvbnNWZWN0
b3ImIGFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbnM7IH0KKyAgICBib29sIGlzQXV0
b0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvQ29udGludWU7IH0KKworICAgIHZvaWQg
cmVzZXRIaXRDb3VudCgpIHsgbV9oaXRDb3VudCA9IDA7IH0KKworICAgIC8vIEFzc29jaWF0ZXMg
dGhpcyBicmVha3BvaW50IHdpdGggYSBwb3NpdGlvbiBpbiBhIHNwZWNpZmljIHNvdXJjZSBjb2Rl
LgorICAgIGJvb2wgbGluayhTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyKTsKKyAgICBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VJRCAhPSBub1NvdXJjZUlEOyB9CisKKyAgICAvLyBBZGp1c3QgdGhlIHByZXZpb3VzbHkgYXNz
b2NpYXRlZCBwb3NpdGlvbiB0byB0aGUgbmV4dCBwYXVzZSBvcHBvcnR1bml0eS4KKyAgICBib29s
IHJlc29sdmUodW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyKTsKKyAg
ICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkOyB9CisKKyAgICBi
b29sIHNob3VsZFBhdXNlKERlYnVnZ2VyJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToK
LSAgICBCcmVha3BvaW50KiBtX3ByZXY7Ci0gICAgQnJlYWtwb2ludCogbV9uZXh0OworICAgIEJy
ZWFrcG9pbnQoQnJlYWtwb2ludElELCBTdHJpbmcgY29uZGl0aW9uID0gbnVsbFN0cmluZygpLCBB
Y3Rpb25zVmVjdG9yJiYgPSB7IH0sIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBp
Z25vcmVDb3VudCA9IDApOwogCi0gICAgZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlz
dE5vZGU8QnJlYWtwb2ludD47CisgICAgQnJlYWtwb2ludElEIG1faWQgeyBub0JyZWFrcG9pbnRJ
RCB9OworCisgICAgU291cmNlSUQgbV9zb3VyY2VJRCB7IG5vU291cmNlSUQgfTsKKworICAgIC8v
IEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzcxPiBXZWIgSW5zcGVjdG9yOiBBZG9w
dCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRvIGF2b2lkIG9uZUJhc2VkSW50L3plcm9CYXNl
ZEludCBhbWJpZ3VpdHkKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXIgeyAwIH07CisgICAgdW5z
aWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07CisKKyAgICBib29sIG1fcmVzb2x2ZWQgeyBmYWxz
ZSB9OworCisgICAgU3RyaW5nIG1fY29uZGl0aW9uOworICAgIEFjdGlvbnNWZWN0b3IgbV9hY3Rp
b25zOworICAgIGJvb2wgbV9hdXRvQ29udGludWUgeyBmYWxzZSB9OworICAgIHNpemVfdCBtX2ln
bm9yZUNvdW50IHsgMCB9OworICAgIHNpemVfdCBtX2hpdENvdW50IHsgMCB9OwogfTsKIAotY2xh
c3MgQnJlYWtwb2ludHNMaXN0IDogcHVibGljIERvdWJseUxpbmtlZExpc3Q8QnJlYWtwb2ludD4s
Ci0gICAgcHVibGljIFJlZkNvdW50ZWQ8QnJlYWtwb2ludHNMaXN0PiB7Ci1wdWJsaWM6Ci0gICAg
fkJyZWFrcG9pbnRzTGlzdCgpCi0gICAgewotICAgICAgICBCcmVha3BvaW50KiBicmVha3BvaW50
OwotICAgICAgICB3aGlsZSAoKGJyZWFrcG9pbnQgPSByZW1vdmVIZWFkKCkpKQotICAgICAgICAg
ICAgZGVsZXRlIGJyZWFrcG9pbnQ7Ci0gICAgICAgIEFTU0VSVChpc0VtcHR5KCkpOwotICAgIH0K
LX07Cit1c2luZyBCcmVha3BvaW50c1ZlY3RvciA9IFZlY3RvcjxSZWY8SlNDOjpCcmVha3BvaW50
Pj47CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKaW5kZXggZjRhYzM1NjdhNTY4ZWM3NmRjMzZkZDc4YWJhYmMwYTE4OGFj
MGI1My4uYzRiZmExYTc3MTM0NjQ3YWQwYzMxZTc1MTY4NzM5YTM5MDdhNzlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0yNCwxMCArMjQsMTYg
QEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZUlu
bGluZXMuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTg5LDcgKzk1LDYgQEAgRGVidWdnZXI6OkRlYnVn
Z2VyKFZNJiB2bSkKICAgICAsIG1fcmVhc29uRm9yUGF1c2UoTm90UGF1c2VkKQogICAgICwgbV9s
YXN0RXhlY3V0ZWRMaW5lKFVJTlRfTUFYKQogICAgICwgbV9sYXN0RXhlY3V0ZWRTb3VyY2VJRChu
b1NvdXJjZUlEKQotICAgICwgbV90b3BCcmVha3BvaW50SUQobm9CcmVha3BvaW50SUQpCiAgICAg
LCBtX3BhdXNpbmdCcmVha3BvaW50SUQobm9CcmVha3BvaW50SUQpCiB7CiB9CkBAIC0yMDUsMTIg
KzIxMCw5NiBAQCB2b2lkIERlYnVnZ2VyOjpyZWdpc3RlckNvZGVCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKICAgICAgICAgY29kZUJsb2NrLT5zZXRTdGVwcGluZ01vZGUoQ29kZUJsb2NrOjpT
dGVwcGluZ01vZGVFbmFibGVkKTsKIH0KIAordm9pZCBEZWJ1Z2dlcjo6YWRkT2JzZXJ2ZXIoT2Jz
ZXJ2ZXImIG9ic2VydmVyKQoreworICAgIGJvb2wgd2FzRW1wdHkgPSBtX29ic2VydmVycy5pc0Vt
cHR5KCk7CisKKyAgICBtX29ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKKworICAgIGlmICh3YXNF
bXB0eSkKKyAgICAgICAgYXR0YWNoRGVidWdnZXIoKTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6cmVt
b3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyLCBib29sIGlzQmVpbmdEZXN0cm95ZWQpCit7
CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisKKyAgICBpZiAobV9vYnNlcnZl
cnMuaXNFbXB0eSgpKQorICAgICAgICBkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsK
K30KKworYm9vbCBEZWJ1Z2dlcjo6Y2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1fZGlzcGF0Y2hpbmdGdW5jdGlvblRvT2JzZXJ2ZXJzICYmICFt
X29ic2VydmVycy5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmRpc3BhdGNoRnVuY3Rp
b25Ub09ic2VydmVycyhGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+IGZ1bmMpCit7CisgICAgaWYg
KCFjYW5EaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1fZGlzcGF0Y2hpbmdGdW5jdGlvblRvT2JzZXJ2
ZXJzLCB0cnVlKTsKKworICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBjb3B5VG9WZWN0b3IobV9v
YnNlcnZlcnMpKQorICAgICAgICBmdW5jKCpvYnNlcnZlcik7Cit9CisKIHZvaWQgRGVidWdnZXI6
OnNldFByb2ZpbGluZ0NsaWVudChQcm9maWxpbmdDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NF
UlQoISFtX3Byb2ZpbGluZ0NsaWVudCAhPSAhIWNsaWVudCk7CiAgICAgbV9wcm9maWxpbmdDbGll
bnQgPSBjbGllbnQ7CiB9CiAKK3ZvaWQgRGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBl
cnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIC8vIFByZWVtcHRp
dmVseSBjaGVjayB3aGV0aGVyIHdlIGNhbiBkaXNwYXRjaCBzbyB0aGF0IHdlIGRvbid0IGRvIGFu
eSB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4KKyAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25U
b09ic2VydmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZXJyb3JMaW5lICE9IC0x
KSB7CisgICAgICAgIGF1dG8gc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgp
OworICAgICAgICBhdXRvIGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmco
KTsKKyAgICAgICAgYXV0byBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlv
bigpLm1fbGluZS5vbmVCYXNlZEludCgpOworICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNl
cnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIG9ic2VydmVyLmZh
aWxlZFRvUGFyc2VTb3VyY2Uoc291cmNlVVJMLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwg
ZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc291cmNlUHJvdmlkZXItPmFzSUQoKTsKKworICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzczPiBXZWIgSW5zcGVjdG9yOiBT
aW1wbGlmeSBEZWJ1Z2dlcjo6U2NyaXB0IHRvIHVzZSBTb3VyY2VQcm92aWRlcgorICAgIERlYnVn
Z2VyOjpTY3JpcHQgc2NyaXB0OworICAgIHNjcmlwdC5zb3VyY2VQcm92aWRlciA9IHNvdXJjZVBy
b3ZpZGVyOworICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7Cisg
ICAgc2NyaXB0LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwor
ICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1f
bGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92
aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIHNjcmlw
dC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQoZ2xvYmFsT2JqZWN0KTsKKyAgICBz
Y3JpcHQuc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTERpcmVjdGl2ZSgpOwor
ICAgIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoKTsKKworICAgIGludCBzb3VyY2VMZW5ndGggPSBzY3JpcHQuc291cmNl
Lmxlbmd0aCgpOworICAgIGludCBsaW5lQ291bnQgPSAxOworICAgIGludCBsYXN0TGluZVN0YXJ0
ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChzY3JpcHQuc291cmNlW2ldID09ICdcbicpIHsKKyAgICAgICAgICAgIGxpbmVDb3Vu
dCArPSAxOworICAgICAgICAgICAgbGFzdExpbmVTdGFydCA9IGkgKyAxOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc2NyaXB0LmVuZExpbmUgPSBzY3JpcHQuc3RhcnRMaW5lICsgbGluZUNvdW50
IC0gMTsKKyAgICBpZiAobGluZUNvdW50ID09IDEpCisgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4g
PSBzY3JpcHQuc3RhcnRDb2x1bW4gKyBzb3VyY2VMZW5ndGg7CisgICAgZWxzZQorICAgICAgICBz
Y3JpcHQuZW5kQ29sdW1uID0gc291cmNlTGVuZ3RoIC0gbGFzdExpbmVTdGFydDsKKworICAgIGRp
c3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAg
ICAgICBvYnNlcnZlci5kaWRQYXJzZVNvdXJjZShzb3VyY2VJRCwgc2NyaXB0KTsKKyAgICB9KTsK
K30KKwogU2Vjb25kcyBEZWJ1Z2dlcjo6d2lsbEV2YWx1YXRlU2NyaXB0KCkKIHsKICAgICByZXR1
cm4gbV9wcm9maWxpbmdDbGllbnQtPndpbGxFdmFsdWF0ZVNjcmlwdCgpOwpAQCAtMjIzLDEyICsz
MTIsMTIgQEAgdm9pZCBEZWJ1Z2dlcjo6ZGlkRXZhbHVhdGVTY3JpcHQoU2Vjb25kcyBzdGFydFRp
bWUsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24pCiAKIHZvaWQgRGVidWdnZXI6OnRvZ2dsZUJyZWFr
cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEJyZWFr
cG9pbnRTdGF0ZSBlbmFibGVkT3JOb3QpCiB7Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2
ZWQpOworICAgIEFTU0VSVChicmVha3BvaW50LmlzUmVzb2x2ZWQoKSk7CiAKICAgICBTY3JpcHRF
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIAog
ICAgIFNvdXJjZUlEIHNvdXJjZUlEID0gc3RhdGljX2Nhc3Q8U291cmNlSUQ+KGV4ZWN1dGFibGUt
PnNvdXJjZUlEKCkpOwotICAgIGlmIChicmVha3BvaW50LnNvdXJjZUlEICE9IHNvdXJjZUlEKQor
ICAgIGlmIChicmVha3BvaW50LnNvdXJjZUlEKCkgIT0gc291cmNlSUQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHVuc2lnbmVkIHN0YXJ0TGluZSA9IGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpOwpA
QCAtMjM4LDEwICszMjcsMTAgQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnIKIAogICAgIC8vIElu
c3BlY3RvciBicmVha3BvaW50IGxpbmUgYW5kIGNvbHVtbiB2YWx1ZXMgYXJlIHplcm8tYmFzZWQg
YnV0IHRoZSBleGVjdXRhYmxlCiAgICAgLy8gYW5kIENvZGVCbG9jayBsaW5lIGFuZCBjb2x1bW4g
dmFsdWVzIGFyZSBvbmUtYmFzZWQuCi0gICAgdW5zaWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGlu
ZSArIDE7CisgICAgdW5zaWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGluZU51bWJlcigpICsgMTsK
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gY29sdW1uOwotICAgIGlmIChicmVha3BvaW50LmNvbHVt
bikKLSAgICAgICAgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW4gKyAxOworICAgIGlmIChicmVh
a3BvaW50LmNvbHVtbk51bWJlcigpKQorICAgICAgICBjb2x1bW4gPSBicmVha3BvaW50LmNvbHVt
bk51bWJlcigpICsgMTsKIAogICAgIGlmIChsaW5lIDwgc3RhcnRMaW5lIHx8IGxpbmUgPiBlbmRM
aW5lKQogICAgICAgICByZXR1cm47CkBAIC0yNjMsOSArMzUyLDggQEAgdm9pZCBEZWJ1Z2dlcjo6
dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtw
b2ludCwgQnIKIAogdm9pZCBEZWJ1Z2dlcjo6YXBwbHlCcmVha3BvaW50cyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKLSAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXAmIGJyZWFrcG9pbnRz
ID0gbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQ7Ci0gICAgZm9yIChhdXRvKiBicmVha3BvaW50
IDogYnJlYWtwb2ludHMudmFsdWVzKCkpCi0gICAgICAgIHRvZ2dsZUJyZWFrcG9pbnQoY29kZUJs
b2NrLCAqYnJlYWtwb2ludCwgQnJlYWtwb2ludEVuYWJsZWQpOworICAgIGZvciAoYXV0byYgYnJl
YWtwb2ludCA6IG1fYnJlYWtwb2ludHMpCisgICAgICAgIHRvZ2dsZUJyZWFrcG9pbnQoY29kZUJs
b2NrLCBicmVha3BvaW50LCBCcmVha3BvaW50RW5hYmxlZCk7CiB9CiAKIGNsYXNzIERlYnVnZ2Vy
OjpUb2dnbGVCcmVha3BvaW50RnVuY3RvciB7CkBAIC0zMTQsMTg4ICs0MDIsMTQzIEBAIERlYnVn
Z2VyUGFyc2VEYXRhJiBEZWJ1Z2dlcjo6ZGVidWdnZXJQYXJzZURhdGEoU291cmNlSUQgc291cmNl
SUQsIFNvdXJjZVByb3ZpZGVyCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXZvaWQgRGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9p
bnQsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlcikKK2Jvb2wgRGVidWdnZXI6OnJlc29s
dmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIFNvdXJjZVByb3ZpZGVyKiBzb3Vy
Y2VQcm92aWRlcikKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghYnJlYWtwb2ludC5yZXNvbHZlZCk7
Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQuc291cmNlSUQgIT0gbm9Tb3VyY2VJRCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWJyZWFrcG9pbnQuaXNSZXNvbHZlZCgpKTsKKyAgICBBU1NFUlQoYnJlYWtw
b2ludC5pc0xpbmtlZCgpKTsKIAogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTYyNzcxPiBXZWIgSW5zcGVjdG9yOiBBZG9wdCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRv
IGF2b2lkIG9uZUJhc2VkSW50L3plcm9CYXNlZEludCBhbWJpZ3VpdHkKICAgICAvLyBJbnNwZWN0
b3IgYnJlYWtwb2ludCBsaW5lIGFuZCBjb2x1bW4gdmFsdWVzIGFyZSB6ZXJvLWJhc2VkIGJ1dCB0
aGUgZXhlY3V0YWJsZQogICAgIC8vIGFuZCBDb2RlQmxvY2sgbGluZSB2YWx1ZXMgYXJlIG9uZS1i
YXNlZCB3aGlsZSBjb2x1bW4gaXMgemVyby1iYXNlZC4KLSAgICBpbnQgbGluZSA9IGJyZWFrcG9p
bnQubGluZSArIDE7Ci0gICAgaW50IGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uOworICAgIGlu
dCBsaW5lID0gYnJlYWtwb2ludC5saW5lTnVtYmVyKCkgKyAxOworICAgIGludCBjb2x1bW4gPSBi
cmVha3BvaW50LmNvbHVtbk51bWJlcigpOwogCiAgICAgLy8gQWNjb3VudCBmb3IgYSA8c2NyaXB0
PidzIHN0YXJ0IHBvc2l0aW9uIG9uIHRoZSBmaXJzdCBsaW5lIG9ubHkuCiAgICAgaW50IHByb3Zp
ZGVyU3RhcnRMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25l
QmFzZWRJbnQoKTsgLy8gT25lIGJhc2VkIHRvIG1hdGNoIHRoZSBhbHJlYWR5IGFkanVzdGVkIGxp
bmUuCiAgICAgaW50IHByb3ZpZGVyU3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQ
b3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOyAvLyBaZXJvIGJhc2VkIHNvIGNvbHVt
biB6ZXJvIGlzIHplcm8uCi0gICAgaWYgKGxpbmUgPT0gcHJvdmlkZXJTdGFydExpbmUgJiYgYnJl
YWtwb2ludC5jb2x1bW4pIHsKKyAgICBpZiAobGluZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBi
cmVha3BvaW50LmNvbHVtbk51bWJlcigpKSB7CiAgICAgICAgIEFTU0VSVChwcm92aWRlclN0YXJ0
Q29sdW1uIDw9IGNvbHVtbik7CiAgICAgICAgIGlmIChwcm92aWRlclN0YXJ0Q29sdW1uKQogICAg
ICAgICAgICAgY29sdW1uIC09IHByb3ZpZGVyU3RhcnRDb2x1bW47CiAgICAgfQogCi0gICAgRGVi
dWdnZXJQYXJzZURhdGEmIHBhcnNlRGF0YSA9IGRlYnVnZ2VyUGFyc2VEYXRhKGJyZWFrcG9pbnQu
c291cmNlSUQsIHNvdXJjZVByb3ZpZGVyKTsKKyAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgcGFyc2VE
YXRhID0gZGVidWdnZXJQYXJzZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCgpLCBzb3VyY2VQcm92
aWRlcik7CiAgICAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24gPSBw
YXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihs
aW5lLCBjb2x1bW4pOwogICAgIGlmICghcmVzb2x2ZWRQb3NpdGlvbikKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgcmVzb2x2ZWRMaW5lID0gcmVzb2x2
ZWRQb3NpdGlvbi0+bGluZTsKICAgICBpbnQgcmVzb2x2ZWRDb2x1bW4gPSByZXNvbHZlZFBvc2l0
aW9uLT5jb2x1bW4oKTsKIAogICAgIC8vIFJlLWFjY291bnQgZm9yIGEgPHNjcmlwdD4ncyBzdGFy
dCBwb3NpdGlvbiBvbiB0aGUgZmlyc3QgbGluZSBvbmx5LgotICAgIGlmIChyZXNvbHZlZExpbmUg
PT0gcHJvdmlkZXJTdGFydExpbmUgJiYgYnJlYWtwb2ludC5jb2x1bW4pIHsKKyAgICBpZiAocmVz
b2x2ZWRMaW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uTnVtYmVy
KCkpIHsKICAgICAgICAgaWYgKHByb3ZpZGVyU3RhcnRDb2x1bW4pCiAgICAgICAgICAgICByZXNv
bHZlZENvbHVtbiArPSBwcm92aWRlclN0YXJ0Q29sdW1uOwogICAgIH0KIAotICAgIGJyZWFrcG9p
bnQubGluZSA9IHJlc29sdmVkTGluZSAtIDE7Ci0gICAgYnJlYWtwb2ludC5jb2x1bW4gPSByZXNv
bHZlZENvbHVtbjsKLSAgICBicmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAgICByZXR1cm4g
YnJlYWtwb2ludC5yZXNvbHZlKHJlc29sdmVkTGluZSAtIDEsIHJlc29sdmVkQ29sdW1uKTsKIH0K
IAotQnJlYWtwb2ludElEIERlYnVnZ2VyOjpzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFr
cG9pbnQsIGJvb2wmIGV4aXN0aW5nKQorYm9vbCBEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludChCcmVh
a3BvaW50JiBicmVha3BvaW50KQogewotICAgIEFTU0VSVChicmVha3BvaW50LnJlc29sdmVkKTsK
LSAgICBBU1NFUlQoYnJlYWtwb2ludC5zb3VyY2VJRCAhPSBub1NvdXJjZUlEKTsKKyAgICBBU1NF
UlQoYnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCi0gICAgU291cmNlSUQgc291cmNlSUQgPSBi
cmVha3BvaW50LnNvdXJjZUlEOwotICAgIHVuc2lnbmVkIGxpbmUgPSBicmVha3BvaW50LmxpbmU7
Ci0gICAgdW5zaWduZWQgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW47CisgICAgYXV0byYgYnJl
YWtwb2ludHNGb3JMaW5lID0gbV9icmVha3BvaW50c0ZvclNvdXJjZUlELmVuc3VyZShicmVha3Bv
aW50LnNvdXJjZUlEKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIExpbmVUb0JyZWFrcG9pbnRzTWFw
KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgU291cmNlSURUb0JyZWFrcG9pbnRz
TWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmZpbmQoYnJlYWtwb2lu
dC5zb3VyY2VJRCk7Ci0gICAgaWYgKGl0ID09IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmVuZCgp
KQotICAgICAgICBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRCwgTGlu
ZVRvQnJlYWtwb2ludHNNYXAoKSkuaXRlcmF0b3I7CisgICAgYXV0byYgYnJlYWtwb2ludHMgPSBi
cmVha3BvaW50c0ZvckxpbmUuZW5zdXJlKGJyZWFrcG9pbnQubGluZU51bWJlcigpLCBbXSB7Cisg
ICAgICAgIHJldHVybiBCcmVha3BvaW50c1ZlY3RvcigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKIAotICAgIExpbmVUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT52
YWx1ZS5maW5kKGxpbmUpOwotICAgIGlmIChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCi0g
ICAgICAgIGJyZWFrc0l0ID0gaXQtPnZhbHVlLnNldChsaW5lLCBhZG9wdFJlZihuZXcgQnJlYWtw
b2ludHNMaXN0KSkuaXRlcmF0b3I7Ci0KLSAgICBCcmVha3BvaW50c0xpc3QmIGJyZWFrcG9pbnRz
ID0gKmJyZWFrc0l0LT52YWx1ZTsKLSAgICBmb3IgKEJyZWFrcG9pbnQqIGN1cnJlbnQgPSBicmVh
a3BvaW50cy5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnQtPmNvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICBmb3IgKGF1dG8mIGV4
aXN0aW5nQnJlYWtwb2ludCA6IGJyZWFrcG9pbnRzKSB7CisgICAgICAgIGlmIChleGlzdGluZ0Jy
ZWFrcG9pbnQtPmNvbHVtbk51bWJlcigpID09IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChleGlzdGluZ0JyZWFrcG9pbnQtPmlkKCkgIT0gYnJlYWtwb2lu
dC5pZCgpKTsKICAgICAgICAgICAgIC8vIEZvdW5kIGV4aXN0aW5nIGJyZWFrcG9pbnQuIERvIG5v
dCBjcmVhdGUgYSBkdXBsaWNhdGUgYXQgdGhpcyBsb2NhdGlvbi4KLSAgICAgICAgICAgIGV4aXN0
aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50LT5pZDsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGV4aXN0aW5nID0gZmFsc2U7
Ci0gICAgQnJlYWtwb2ludElEIGlkID0gKyttX3RvcEJyZWFrcG9pbnRJRDsKLSAgICBSRUxFQVNF
X0FTU0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7CisgICAgYnJlYWtwb2ludHMuYXBwZW5kKG1h
a2VSZWYoYnJlYWtwb2ludCkpOwogCi0gICAgYnJlYWtwb2ludC5pZCA9IGlkOworICAgIG1fYnJl
YWtwb2ludHMuYWRkKG1ha2VSZWYoYnJlYWtwb2ludCkpOwogCi0gICAgQnJlYWtwb2ludCogbmV3
QnJlYWtwb2ludCA9IG5ldyBCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgIGJyZWFrcG9pbnRz
LmFwcGVuZChuZXdCcmVha3BvaW50KTsKLSAgICBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5z
ZXQoaWQsIG5ld0JyZWFrcG9pbnQpOworICAgIHRvZ2dsZUJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
QnJlYWtwb2ludEVuYWJsZWQpOwogCi0gICAgdG9nZ2xlQnJlYWtwb2ludCgqbmV3QnJlYWtwb2lu
dCwgQnJlYWtwb2ludEVuYWJsZWQpOwotCi0gICAgcmV0dXJuIGlkOworICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pbnRJRCBpZCkK
K2Jvb2wgRGVidWdnZXI6OnJlbW92ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkK
IHsKLSAgICBBU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOworICAgIEFTU0VSVChicmVha3Bv
aW50LmlzUmVzb2x2ZWQoKSk7CiAKLSAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXA6Oml0
ZXJhdG9yIGlkSXQgPSBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5maW5kKGlkKTsKLSAgICBB
U1NFUlQoaWRJdCAhPSBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5lbmQoKSk7Ci0gICAgQnJl
YWtwb2ludCogYnJlYWtwb2ludCA9IGlkSXQtPnZhbHVlOworICAgIGF1dG8gYnJlYWtwb2ludHNG
b3JMaW5lSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZmluZChicmVha3BvaW50
LnNvdXJjZUlEKCkpOworICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9PSBtX2Jy
ZWFrcG9pbnRzRm9yU291cmNlSUQuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFNvdXJjZUlEIHNvdXJjZUlEID0gYnJlYWtwb2ludC0+c291cmNlSUQ7Ci0gICAgQVNTRVJUKHNv
dXJjZUlEKTsKLSAgICBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
b3VyY2VJRFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1f
c291cmNlSURUb0JyZWFrcG9pbnRzLmVuZCgpKTsKLSAgICBMaW5lVG9CcmVha3BvaW50c01hcDo6
aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+dmFsdWUuZmluZChicmVha3BvaW50LT5saW5lKTsKLSAg
ICBBU1NFUlQoYnJlYWtzSXQgIT0gaXQtPnZhbHVlLmVuZCgpKTsKKyAgICBhdXRvIGJyZWFrcG9p
bnRzSXRlcmF0b3IgPSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuZmluZChicmVh
a3BvaW50LmxpbmVOdW1iZXIoKSk7CisgICAgaWYgKGJyZWFrcG9pbnRzSXRlcmF0b3IgPT0gYnJl
YWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICB0b2dnbGVCcmVha3BvaW50KCpicmVha3BvaW50LCBCcmVha3BvaW50RGlzYWJs
ZWQpOworICAgIHRvZ2dsZUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgQnJlYWtwb2ludERpc2FibGVk
KTsKKworICAgIGF1dG8mIGJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHNJdGVyYXRvci0+dmFsdWU7
CiAKLSAgICBCcmVha3BvaW50c0xpc3QmIGJyZWFrcG9pbnRzID0gKmJyZWFrc0l0LT52YWx1ZTsK
ICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKEJy
ZWFrcG9pbnQqIGN1cnJlbnQgPSBicmVha3BvaW50cy5oZWFkKCk7IGN1cnJlbnQgJiYgIWZvdW5k
OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW50LT5pZCA9
PSBicmVha3BvaW50LT5pZCkKKyAgICBmb3IgKGF1dG8mIGV4aXN0aW5nQnJlYWtwb2ludCA6IGJy
ZWFrcG9pbnRzKSB7CisgICAgICAgIGlmIChleGlzdGluZ0JyZWFrcG9pbnQtPmNvbHVtbk51bWJl
cigpID09IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChl
eGlzdGluZ0JyZWFrcG9pbnQtPmlkKCkgPT0gYnJlYWtwb2ludC5pZCgpKTsKKyAgICAgICAgICAg
IEFTU0VSVCghZm91bmQpOwogICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICB9CiAg
ICAgfQotICAgIEFTU0VSVChmb3VuZCk7CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotICAg
IG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50LnJlbW92ZShpZEl0KTsKLSAgICBicmVha3BvaW50
cy5yZW1vdmUoYnJlYWtwb2ludCk7Ci0gICAgZGVsZXRlIGJyZWFrcG9pbnQ7CisgICAgYXV0byBy
ZW1vdmVkID0gbV9icmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludCk7CisgICAgcmVtb3ZlZCB8
PSAhYnJlYWtwb2ludHMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChjb25zdCBSZWY8QnJlYWtwb2lu
dD4mIGV4aXN0aW5nQnJlYWtwb2ludCkgeworICAgICAgICByZXR1cm4gJmJyZWFrcG9pbnQgPT0g
ZXhpc3RpbmdCcmVha3BvaW50LnB0cigpOworICAgIH0pOwogCiAgICAgaWYgKGJyZWFrcG9pbnRz
LmlzRW1wdHkoKSkgewotICAgICAgICBpdC0+dmFsdWUucmVtb3ZlKGJyZWFrc0l0KTsKLSAgICAg
ICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3NvdXJjZUlEVG9CcmVh
a3BvaW50cy5yZW1vdmUoaXQpOworICAgICAgICBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+
dmFsdWUucmVtb3ZlKGJyZWFrcG9pbnRzSXRlcmF0b3IpOworICAgICAgICBpZiAoYnJlYWtwb2lu
dHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fYnJlYWtw
b2ludHNGb3JTb3VyY2VJRC5yZW1vdmUoYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3IpOwogICAg
IH0KKworICAgIHJldHVybiByZW1vdmVkOwogfQogCi1ib29sIERlYnVnZ2VyOjpoYXNCcmVha3Bv
aW50KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBCcmVh
a3BvaW50ICpoaXRCcmVha3BvaW50KQorUmVmUHRyPEJyZWFrcG9pbnQ+IERlYnVnZ2VyOjpkaWRI
aXRCcmVha3BvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNvdXJjZUlEIHNvdXJj
ZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmICghbV9icmVha3Bv
aW50c0FjdGl2YXRlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEKTsKLSAgICBpZiAoaXQgPT0g
bV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBhdXRvIGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yID0gbV9icmVha3BvaW50c0ZvclNvdXJj
ZUlELmZpbmQoc291cmNlSUQpOworICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9
PSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgdW5zaWduZWQgbGluZSA9IHBvc2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsK
ICAgICB1bnNpZ25lZCBjb2x1bW4gPSBwb3NpdGlvbi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsK
ICAgICAKLSAgICBMaW5lVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtzSXQg
PSBpdC0+dmFsdWUuZmluZChsaW5lKTsKLSAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnZhbHVlLmVu
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBicmVha3BvaW50c0l0ZXJhdG9y
ID0gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmZpbmQobGluZSk7CisgICAgaWYg
KGJyZWFrcG9pbnRzSXRlcmF0b3IgPT0gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVl
LmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgYnJlYWtw
b2ludCA6IGJyZWFrcG9pbnRzSXRlcmF0b3ItPnZhbHVlKSB7CisgICAgICAgIHVuc2lnbmVkIGJy
ZWFrTGluZSA9IGJyZWFrcG9pbnQtPmxpbmVOdW1iZXIoKTsKKyAgICAgICAgdW5zaWduZWQgYnJl
YWtDb2x1bW4gPSBicmVha3BvaW50LT5jb2x1bW5OdW1iZXIoKTsKIAotICAgIGJvb2wgaGl0ID0g
ZmFsc2U7Ci0gICAgY29uc3QgQnJlYWtwb2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpicmVha3NJ
dC0+dmFsdWU7Ci0gICAgQnJlYWtwb2ludCogYnJlYWtwb2ludDsKLSAgICBmb3IgKGJyZWFrcG9p
bnQgPSBicmVha3BvaW50cy5oZWFkKCk7IGJyZWFrcG9pbnQ7IGJyZWFrcG9pbnQgPSBicmVha3Bv
aW50LT5uZXh0KCkpIHsKLSAgICAgICAgdW5zaWduZWQgYnJlYWtMaW5lID0gYnJlYWtwb2ludC0+
bGluZTsKLSAgICAgICAgdW5zaWduZWQgYnJlYWtDb2x1bW4gPSBicmVha3BvaW50LT5jb2x1bW47
CiAgICAgICAgIC8vIFNpbmNlIGZyb250ZW5kIHRydW5jYXRlcyB0aGUgaW5kZW50LCB0aGUgZmly
c3Qgc3RhdGVtZW50IGluIGEgbGluZSBtdXN0IG1hdGNoIHRoZSBicmVha3BvaW50IChsaW5lLDAp
LgogICAgICAgICBBU1NFUlQodGhpcyA9PSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSk7Ci0gICAgICAgIGlmICgobGluZSAhPSBtX2xh
c3RFeGVjdXRlZExpbmUgJiYgbGluZSA9PSBicmVha0xpbmUgJiYgIWJyZWFrQ29sdW1uKQotICAg
ICAgICAgICAgfHwgKGxpbmUgPT0gYnJlYWtMaW5lICYmIGNvbHVtbiA9PSBicmVha0NvbHVtbikp
IHsKLSAgICAgICAgICAgIGhpdCA9IHRydWU7CisgICAgICAgIGlmICgobGluZSAhPSBtX2xhc3RF
eGVjdXRlZExpbmUgJiYgbGluZSA9PSBicmVha0xpbmUgJiYgIWJyZWFrQ29sdW1uKSB8fCAobGlu
ZSA9PSBicmVha0xpbmUgJiYgY29sdW1uID09IGJyZWFrQ29sdW1uKSkgeworICAgICAgICAgICAg
aWYgKGJyZWFrcG9pbnQtPnNob3VsZFBhdXNlKCp0aGlzLCBnbG9iYWxPYmplY3QpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBicmVha3BvaW50LmNvcHlSZWYoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghaGl0KQotICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoaGl0QnJlYWtwb2ludCkKLSAgICAgICAgKmhpdEJyZWFrcG9pbnQgPSAqYnJl
YWtwb2ludDsKLQotICAgIGJyZWFrcG9pbnQtPmhpdENvdW50Kys7Ci0gICAgaWYgKGJyZWFrcG9p
bnQtPmlnbm9yZUNvdW50ID49IGJyZWFrcG9pbnQtPmhpdENvdW50KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoYnJlYWtwb2ludC0+Y29uZGl0aW9uLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBXZSBjYW5ub3Qgc3RvcCBpbiB0aGUgZGVidWdnZXIg
d2hpbGUgZXhlY3V0aW5nIGNvbmRpdGlvbiBjb2RlLAotICAgIC8vIHNvIG1ha2UgaXQgbG9va3Mg
bGlrZSB0aGUgZGVidWdnZXIgaXMgYWxyZWFkeSBwYXVzZWQuCi0gICAgVGVtcG9yYXJ5UGF1c2Vk
U3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOwotCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNl
cHRpb247Ci0gICAgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVu
dERlYnVnZ2VyQ2FsbEZyYW1lKCk7Ci0gICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
ID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGJyZWFrcG9pbnQtPmNvbmRpdGlvbiwgc2NvcGVFeHRlbnNp
b25PYmplY3QsIGV4Y2VwdGlvbik7Ci0KLSAgICAvLyBXZSBjYW4gbG9zZSB0aGUgZGVidWdnZXIg
d2hpbGUgZXhlY3V0aW5nIEphdmFTY3JpcHQuCi0gICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7Ci0gICAg
aWYgKGV4Y2VwdGlvbikgewotICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50
cyBhcyAiZmFsc2UiLgotICAgICAgICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRp
b24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogY2xhc3MgRGVidWdnZXI6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJS
ZXF1ZXN0c0Z1bmN0b3IgewpAQCAtNTE5LDE0ICs1NjIsOTMgQEAgdm9pZCBEZWJ1Z2dlcjo6Y2xl
YXJCcmVha3BvaW50cygpCiB7CiAgICAgbV92bS5oZWFwLmNvbXBsZXRlQWxsSklUUGxhbnMoKTsK
IAotICAgIG1fdG9wQnJlYWtwb2ludElEID0gbm9CcmVha3BvaW50SUQ7Ci0gICAgbV9icmVha3Bv
aW50SURUb0JyZWFrcG9pbnQuY2xlYXIoKTsKLSAgICBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5j
bGVhcigpOworICAgIG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5jbGVhcigpOworICAgIG1fYnJl
YWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbnVsbHB0cjsKIAog
ICAgIENsZWFyQ29kZUJsb2NrRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3IgZnVuY3Rvcih0aGlzKTsK
ICAgICBtX3ZtLmhlYXAuZm9yRWFjaENvZGVCbG9jayhmdW5jdG9yKTsKIH0KIAorYm9vbCBEZWJ1
Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgY29uc3QgU3RyaW5nJiBjb25k
aXRpb24gPSBicmVha3BvaW50LmNvbmRpdGlvbigpOworICAgIGlmIChjb25kaXRpb24uaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdlIGNhbm5vdCBzdG9wIGluIHRo
ZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgY29uZGl0aW9uIGNvZGUsCisgICAgLy8gc28gbWFr
ZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBpcyBhbHJlYWR5IHBhdXNlZC4KKyAgICBUZW1w
b3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7CisKKyAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKKyAgICBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKKyAgICBKU09iamVjdCogc2NvcGVFeHRl
bnNpb25PYmplY3QgPSBudWxscHRyOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxs
RnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uZGl0aW9uLCBzY29wZUV4dGVuc2lv
bk9iamVjdCwgZXhjZXB0aW9uKTsKKworICAgIC8vIFdlIGNhbiBsb3NlIHRoZSBkZWJ1Z2dlciB3
aGlsZSBleGVjdXRpbmcgSmF2YVNjcmlwdC4KKyAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyhCcmVha3Bv
aW50JiBicmVha3BvaW50LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEFT
U0VSVChtX2lzUGF1c2VkKTsKKyAgICBBU1NFUlQoaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKTsK
KworICAgIG1fY3VycmVudFByb2JlQmF0Y2hJZCsrOworCisgICAgZm9yIChhdXRvJiBhY3Rpb24g
OiBicmVha3BvaW50LmFjdGlvbnMoKSkgeworICAgICAgICBhdXRvJiBkZWJ1Z2dlckNhbGxGcmFt
ZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOworCisgICAgICAgIHN3aXRjaCAoYWN0aW9u
LnR5cGUpIHsKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OkxvZzoKKyAg
ICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNl
cnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJyZWFrcG9pbnRBY3Rpb25Mb2coZGVi
dWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGFjdGlvbi5kYXRhKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rp
b246OlR5cGU6OkV2YWx1YXRlOiB7CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4
Y2VwdGlvbjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51
bGxwdHI7CisgICAgICAgICAgICBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihhY3Rpb24uZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlv
bihkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rpb246
OlR5cGU6OlNvdW5kOgorICAgICAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsm
XSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuYnJlYWtw
b2ludEFjdGlvblNvdW5kKGFjdGlvbi5pZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpQcm9iZTog
eworICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgICAgICAg
ICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOworICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihhY3Rpb24uZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBkZWJ1Z2dlckdsb2JhbE9iamVjdCA9IGRlYnVn
Z2VyQ2FsbEZyYW1lLmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
KyAgICAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJHbG9iYWxPYmplY3QsIGV4
Y2VwdGlvbik7CisKKyAgICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0g
KE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJyZWFrcG9p
bnRBY3Rpb25Qcm9iZShkZWJ1Z2dlckdsb2JhbE9iamVjdCwgYWN0aW9uLmlkLCBtX2N1cnJlbnRQ
cm9iZUJhdGNoSWQsIG1fbmV4dFByb2JlU2FtcGxlSWQrKywgZXhjZXB0aW9uID8gZXhjZXB0aW9u
LT52YWx1ZSgpIDogcmVzdWx0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNBdHRhY2hlZChnbG9iYWxP
YmplY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogY2xhc3MgRGVidWdnZXI6
OkNsZWFyRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3IgewogcHVibGljOgogICAgIENsZWFyRGVidWdn
ZXJSZXF1ZXN0c0Z1bmN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTU3MSwx
MSArNjkzLDM1IEBAIHZvaWQgRGVidWdnZXI6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZSkKICAgICBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUg
PSBwYXVzZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQoYm9v
bCBwYXVzZSkKK3ZvaWQgRGVidWdnZXI6OnNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgp
CiB7Ci0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gcGF1c2U7Ci0gICAgaWYgKHBhdXNl
KQotICAgICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CisgICAgbV9w
YXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKKworICAgIHNldFN0ZXBwaW5nTW9kZShTdGVw
cGluZ01vZGVFbmFibGVkKTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VBdE5leHRP
cHBvcnR1bml0eSgpCit7CisgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gZmFsc2U7Cit9
CisKK2Jvb2wgRGVidWdnZXI6OnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVh
a3BvaW50JiBicmVha3BvaW50KQoreworICAgIGlmIChtX3NwZWNpYWxCcmVha3BvaW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbWFrZVJlZihi
cmVha3BvaW50KTsKKyAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGVidWdnZXI6OmNhbmNlbFBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK3sKKyAgICBpZiAoJmJyZWFrcG9p
bnQgIT0gbV9zcGVjaWFsQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9zcGVjaWFsQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgRGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCkBAIC01OTksNyArNzQ1LDcgQEAgdm9pZCBEZWJ1
Z2dlcjo6Y29udGludWVQcm9ncmFtKCkKICAgICBpZiAoIW1faXNQYXVzZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBt
X2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2Vy
OjpzdGVwTmV4dEV4cHJlc3Npb24oKQpAQCAtNjEwLDcgKzc1Niw3IEBAIHZvaWQgRGVidWdnZXI6
OnN0ZXBOZXh0RXhwcmVzc2lvbigpCiAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50
Q2FsbEZyYW1lOwogICAgIG1fcGF1c2VPblN0ZXBOZXh0ID0gdHJ1ZTsKICAgICBzZXRTdGVwcGlu
Z01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0gICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1
Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7
CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkKQEAgLTYyMCw3ICs3NjYs
NyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwSW50b1N0YXRlbWVudCgpCiAKICAgICBtX3BhdXNlQXRO
ZXh0T3Bwb3J0dW5pdHkgPSB0cnVlOwogICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVF
bmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CisgICAg
bV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dl
cjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQpAQCAtNjMwLDcgKzc3Niw3IEBAIHZvaWQgRGVidWdnZXI6
OnN0ZXBPdmVyU3RhdGVtZW50KCkKIAogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVu
dENhbGxGcmFtZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0g
ICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRP
ZkZ1bmN0aW9uKCkKQEAgLTY0Miw3ICs3ODgsNyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwT3V0T2ZG
dW5jdGlvbigpCiAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lID8g
bV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZSh0b3BFbnRyeUZyYW1lKSA6IG51bGxwdHI7
CiAgICAgbV9wYXVzZU9uU3RlcE91dCA9IHRydWU7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBw
aW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMo
KTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1l
KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03MDEsMTAgKzg0NywxNyBAQCB2b2lk
IERlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAK
ICAgICBib29sIGRpZFBhdXNlRm9yU3RlcCA9IHBhdXNlTm93OwogCi0gICAgQnJlYWtwb2ludCBi
cmVha3BvaW50OwogICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IERlYnVnZ2VyQ2FsbEZyYW1l
Ojpwb3NpdGlvbkZvckNhbGxGcmFtZSh2bSwgbV9jdXJyZW50Q2FsbEZyYW1lKTsKLSAgICBib29s
IGRpZEhpdEJyZWFrcG9pbnQgPSBoYXNCcmVha3BvaW50KHNvdXJjZUlELCBwb3NpdGlvbiwgJmJy
ZWFrcG9pbnQpOwotICAgIHBhdXNlTm93IHw9IGRpZEhpdEJyZWFrcG9pbnQ7CisKKyAgICBhdXRv
IGJyZWFrcG9pbnQgPSBkaWRIaXRCcmVha3BvaW50KGdsb2JhbE9iamVjdCwgc291cmNlSUQsIHBv
c2l0aW9uKTsKKyAgICBpZiAoYnJlYWtwb2ludCkKKyAgICAgICAgcGF1c2VOb3cgPSB0cnVlOwor
CisgICAgLy8gU3BlY2lhbCBicmVha3BvaW50cyBhcmUgb25seSBnaXZlbiBvbmUgb3Bwb3J0dW5p
dHkgdG8gcGF1c2UuCisgICAgYXV0byBzcGVjaWFsQnJlYWtwb2ludCA9IFdURk1vdmUobV9zcGVj
aWFsQnJlYWtwb2ludCk7CisgICAgaWYgKHNwZWNpYWxCcmVha3BvaW50ICYmIHNwZWNpYWxCcmVh
a3BvaW50LT5zaG91bGRQYXVzZSgqdGhpcywgZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcGF1c2VO
b3cgPSB0cnVlOworCiAgICAgbV9sYXN0RXhlY3V0ZWRMaW5lID0gcG9zaXRpb24ubV9saW5lLnpl
cm9CYXNlZEludCgpOwogICAgIGlmICghcGF1c2VOb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTcx
NiwyNCArODY5LDQ1IEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICAvLyByZXNldGluZyB0aGUgcGF1c2Ugc3RhdGUgYmVmb3Jl
IGV4ZWN1dGluZyBhbnkgYnJlYWtwb2ludCBhY3Rpb25zLgogICAgIFRlbXBvcmFyeVBhdXNlZFN0
YXRlIHBhdXNlZFN0YXRlKCp0aGlzKTsKIAotICAgIGlmIChkaWRIaXRCcmVha3BvaW50KSB7Ci0g
ICAgICAgIGhhbmRsZUJyZWFrcG9pbnRIaXQoZ2xvYmFsT2JqZWN0LCBicmVha3BvaW50KTsKKyAg
ICBpZiAoYnJlYWtwb2ludCB8fCBzcGVjaWFsQnJlYWtwb2ludCkgewogICAgICAgICAvLyBOb3Rl
IHRoYXQgdGhlIGFjdGlvbnMgY2FuIHBvdGVudGlhbGx5IHN0b3AgdGhlIGRlYnVnZ2VyLCBzbyB3
ZSBuZWVkIHRvIGNoZWNrIHRoYXQKICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSBhIGN1cnJlbnQg
Y2FsbCBmcmFtZSB3aGVuIHdlIGdldCBiYWNrLgotICAgICAgICBpZiAoIW1fY3VycmVudENhbGxG
cmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoYnJlYWtwb2ludC5hdXRv
Q29udGludWUpIHsKKyAgICAgICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKKworICAgICAg
ICBpZiAoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9u
cygqYnJlYWtwb2ludCwgZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICAgICAgaWYgKCFtX2N1cnJl
bnRDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAo
YnJlYWtwb2ludC0+aXNBdXRvQ29udGludWUoKSkKKyAgICAgICAgICAgICAgICBhdXRvQ29udGlu
dWUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwZWNpYWxCcmVha3BvaW50KSB7
CisgICAgICAgICAgICBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKCpzcGVjaWFsQnJlYWtwb2lu
dCwgZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoc3BlY2lhbEJyZWFr
cG9pbnQtPmlzQXV0b0NvbnRpbnVlKCkpCisgICAgICAgICAgICAgICAgYXV0b0NvbnRpbnVlID0g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvQ29udGludWUpIHsKICAgICAgICAg
ICAgIGlmICghZGlkUGF1c2VGb3JTdGVwKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGRpZEhpdEJyZWFrcG9pbnQgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBtX3BhdXNpbmdCcmVha3BvaW50SUQgPSBicmVha3BvaW50LmlkOworCisgICAgICAgICAg
ICBicmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHNwZWNpYWxCcmVha3BvaW50ID0g
bnVsbHB0cjsKKyAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50KQorICAgICAgICAgICAgbV9w
YXVzaW5nQnJlYWtwb2ludElEID0gYnJlYWtwb2ludC0+aWQoKTsKICAgICB9CiAKICAgICBpZiAo
YmxhY2tib3hUeXBlSXRlcmF0b3IgIT0gbV9ibGFja2JveGVkU2NyaXB0cy5lbmQoKSAmJiBibGFj
a2JveFR5cGVJdGVyYXRvci0+dmFsdWUgPT0gQmxhY2tib3hUeXBlOjpEZWZlcnJlZCkgewogICAg
ICAgICBtX2FmdGVyQmxhY2tib3hlZFNjcmlwdCA9IHRydWU7Ci0gICAgICAgIHNldFBhdXNlT25O
ZXh0U3RhdGVtZW50KHRydWUpOworICAgICAgICBzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5p
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQxLDcgKzkxNSw3IEBAIHZvaWQg
RGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgYXV0byByZWFzb24gPSBtX3JlYXNvbkZvclBhdXNlOwogICAgICAgICBpZiAoYWZ0ZXJC
bGFja2JveGVkU2NyaXB0KQogICAgICAgICAgICAgcmVhc29uID0gUGF1c2VkQWZ0ZXJCbGFja2Jv
eGVkU2NyaXB0OwotICAgICAgICBlbHNlIGlmIChkaWRIaXRCcmVha3BvaW50KQorICAgICAgICBl
bHNlIGlmIChicmVha3BvaW50KQogICAgICAgICAgICAgcmVhc29uID0gUGF1c2VkRm9yQnJlYWtw
b2ludDsKICAgICAgICAgUGF1c2VSZWFzb25EZWNsYXJhdGlvbiByYXVzZVJlYXNvbkRlY2xhcmF0
aW9uKCp0aGlzLCByZWFzb24pOwogCkBAIC03NTEsMTIgKzkyNSw0NSBAQCB2b2lkIERlYnVnZ2Vy
OjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBtX3Bh
dXNpbmdCcmVha3BvaW50SUQgPSBub0JyZWFrcG9pbnRJRDsKIAotICAgIGlmICghbV9wYXVzZUF0
TmV4dE9wcG9ydHVuaXR5ICYmICFtX3BhdXNlT25DYWxsRnJhbWUpIHsKKyAgICBpZiAoIW1fcGF1
c2VBdE5leHRPcHBvcnR1bml0eSAmJiAhbV9wYXVzZU9uQ2FsbEZyYW1lICYmICFtX3NwZWNpYWxC
cmVha3BvaW50KSB7CiAgICAgICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVEaXNhYmxl
ZCk7CiAgICAgICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG51bGxwdHI7CiAgICAgfQogfQogCit2
b2lkIERlYnVnZ2VyOjpoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWFzb25Gb3JQYXVzZSkKK3sKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChP
YnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOworICAgICAg
ICBvYnNlcnZlci5kaWRQYXVzZShnbG9iYWxPYmplY3QsIGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFt
ZSgpLCBleGNlcHRpb25PckNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCkpOworICAgIH0pOworCisg
ICAgZGlkUGF1c2UoZ2xvYmFsT2JqZWN0KTsKKworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dl
ckV2ZW50cyA9IGZhbHNlOworICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKKyAgICBk
aWRDb250aW51ZShnbG9iYWxPYmplY3QpOworCisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2
ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRpZENvbnRp
bnVlKCk7CisgICAgfSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBEZWJ1Z2dlcjo6ZXhjZXB0aW9uT3JD
YXVnaHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgaWYg
KHJlYXNvbkZvclBhdXNlKCkgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKQorICAgICAgICByZXR1cm4g
Y3VycmVudEV4Y2VwdGlvbigpOworCisgICAgZm9yIChSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+
IGZyYW1lID0gJmN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+Y2FsbGVyRnJhbWUoKSkgeworICAgICAgICBEZWJ1Z2dlclNjb3BlJiBzY29wZSA9ICpmcmFt
ZS0+c2NvcGUoKTsKKyAgICAgICAgaWYgKHNjb3BlLmlzQ2F0Y2hTY29wZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHNjb3BlLmNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgfQorCisgICAg
cmV0dXJuIHsgfTsKK30KKwogdm9pZCBEZWJ1Z2dlcjo6ZXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvbiwg
Ym9vbCBoYXNDYXRjaEhhbmRsZXIpCiB7CiAgICAgaWYgKG1faXNQYXVzZWQpCkBAIC04MDcsOCAr
MTAxNCw4IEBAIHZvaWQgRGVidWdnZXI6OmF0RXhwcmVzc2lvbihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE9ubHkgcGF1c2UgYXQgdGhlIG5l
eHQgZXhwcmVzc2lvbiB3aXRoIHN0ZXAtaW4sIHN0ZXAtbmV4dCwgYW5kIHN0ZXAtb3V0LgotICAg
IGJvb2wgc2hvdWxkQXR0ZW1wdFBhdXNlID0gbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5IHx8IG1f
cGF1c2VPblN0ZXBOZXh0IHx8IG1fcGF1c2VPblN0ZXBPdXQ7CisgICAgLy8gT25seSBwYXVzZSBh
dCB0aGUgbmV4dCBleHByZXNzaW9uIGZvciBzdGVwLWluLCBzdGVwLW5leHQsIHN0ZXAtb3V0LCBv
ciBzcGVjaWFsIGJyZWFrcG9pbnRzLgorICAgIGJvb2wgc2hvdWxkQXR0ZW1wdFBhdXNlID0gbV9w
YXVzZUF0TmV4dE9wcG9ydHVuaXR5IHx8IG1fcGF1c2VPblN0ZXBOZXh0IHx8IG1fcGF1c2VPblN0
ZXBPdXQgfHwgbV9zcGVjaWFsQnJlYWtwb2ludDsKIAogICAgIFBhdXNlUmVhc29uRGVjbGFyYXRp
b24gcmVhc29uKCp0aGlzLCBQYXVzZWRBdEV4cHJlc3Npb24pOwogICAgIHVwZGF0ZUNhbGxGcmFt
ZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1fdm0sIGNhbGxGcmFtZSksIGNhbGxG
cmFtZSwgc2hvdWxkQXR0ZW1wdFBhdXNlID8gQXR0ZW1wdFBhdXNlIDogTm9QYXVzZSk7CkBAIC05
MTcsNiArMTEyNCw3IEBAIHZvaWQgRGVidWdnZXI6OmNsZWFyTmV4dFBhdXNlU3RhdGUoKQogICAg
IG1fcGF1c2VPblN0ZXBOZXh0ID0gZmFsc2U7CiAgICAgbV9wYXVzZU9uU3RlcE91dCA9IGZhbHNl
OwogICAgIG1fYWZ0ZXJCbGFja2JveGVkU2NyaXB0ID0gZmFsc2U7CisgICAgbV9zcGVjaWFsQnJl
YWtwb2ludCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoRGVidWdnZXJT
dGF0ZW1lbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC05MzMsNiArMTE0MSwyMCBAQCB2b2lk
IERlYnVnZ2VyOjpkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgIHVwZGF0ZUNhbGxGcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1f
dm0sIGNhbGxGcmFtZSksIGNhbGxGcmFtZSwgQXR0ZW1wdFBhdXNlKTsKIH0KIAordm9pZCBEZWJ1
Z2dlcjo6d2lsbFJ1bk1pY3JvdGFzaygpCit7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2
ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLndpbGxSdW5N
aWNyb3Rhc2soKTsKKyAgICB9KTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6ZGlkUnVuTWljcm90YXNr
KCkKK3sKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2Jz
ZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkUnVuTWljcm90YXNrKCk7CisgICAgfSk7Cit9
CisKIERlYnVnZ2VyQ2FsbEZyYW1lJiBEZWJ1Z2dlcjo6Y3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
KCkKIHsKICAgICBpZiAoIW1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBmYmE0NGM2MGNjNmEzYTNhNDg0N2Ex
YmRhZWM2Njg5MTMyYTQ4Njg3Li5jYzk1ZTdjNjRiOTA1MmQ5MzczMTIxMTU3ODk2MmYxYzFiYzZh
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMjcs
MTAgKzI3LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlclBhcnNlRGF0YS5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyUHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSwyNiArMzgsMTQgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFZNOwogCi1j
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CitjbGFzcyBEZWJ1Z2dlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVidWdnZXIoVk0mKTsKLSAg
ICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyKFZN
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+RGVidWdnZXIoKTsKIAogICAgIFZN
JiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KIAotICAgIEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmIGN1
cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotICAgIGJvb2wgaGFzSGFuZGxlckZvckV4Y2VwdGlv
bkNhbGxiYWNrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNl
ID09IFBhdXNlZEZvckV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBtX2hhc0hhbmRsZXJGb3JF
eGNlcHRpb25DYWxsYmFjazsKLSAgICB9Ci0gICAgSlNWYWx1ZSBjdXJyZW50RXhjZXB0aW9uKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNlID09IFBhdXNlZEZvckV4Y2Vw
dGlvbik7Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRFeGNlcHRpb247Ci0gICAgfQotCiAgICAg
Ym9vbCBuZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2lu
dHNBY3RpdmF0ZWQgJiYgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlICE9IERvbnRQYXVzZU9uRXhj
ZXB0aW9uczsgfQogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZWx5RGVidWdnaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZDsgfQogCkBAIC02OCwyNiArNTMsMzAgQEAgcHVi
bGljOgogICAgICAgICBUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24sCiAgICAgICAgIEdsb2Jh
bE9iamVjdElzRGVzdHJ1Y3RpbmcKICAgICB9OwotICAgIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2Jq
ZWN0Kik7Ci0gICAgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JEZXRhY2gp
OwotICAgIGJvb2wgaXNBdHRhY2hlZChKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JEZXRhY2gpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBdHRhY2hlZChKU0dsb2JhbE9iamVjdCopOwogCi0gICAg
dm9pZCByZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiwgU291cmNlUHJvdmlkZXIqKTsKLSAg
ICBCcmVha3BvaW50SUQgc2V0QnJlYWtwb2ludChCcmVha3BvaW50JiwgYm9vbCYgZXhpc3Rpbmcp
OwotICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50SUQpOworICAgIGJvb2wgcmVz
b2x2ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIFNvdXJjZVByb3ZpZGVyKik7CisgICAgYm9vbCBz
ZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKKyAgICBib29sIHJlbW92ZUJyZWFrcG9pbnQoQnJl
YWtwb2ludCYpOwogICAgIHZvaWQgY2xlYXJCcmVha3BvaW50cygpOwogCiAgICAgdm9pZCBhY3Rp
dmF0ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsgfQogICAg
IHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChm
YWxzZSk7IH0KICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9i
cmVha3BvaW50c0FjdGl2YXRlZDsgfQogCisgICAgLy8gQnJlYWtwb2ludCAiZGVsZWdhdGUiIGZ1
bmN0aW9uYWxpdHkuCisgICAgYm9vbCBldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24oQnJlYWtw
b2ludCYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rp
b25zKEJyZWFrcG9pbnQmLCBKU0dsb2JhbE9iamVjdCopOworCiAgICAgZW51bSBQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlIHsKICAgICAgICAgRG9udFBhdXNlT25FeGNlcHRpb25zLAogICAgICAgICBQ
YXVzZU9uQWxsRXhjZXB0aW9ucywKICAgICAgICAgUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucwog
ICAgIH07CiAgICAgUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOyB9Ci0gICAgdm9pZCBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKTsKIAogICAgIHZvaWQgc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhi
b29sIGVuYWJsZWQpIHsgbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzID0gZW5hYmxlZDsgfQog
CkBAIC0xMDUsNyArOTQsMTAgQEAgcHVibGljOgogICAgIFJlYXNvbkZvclBhdXNlIHJlYXNvbkZv
clBhdXNlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFzb25Gb3JQYXVzZTsgfQogICAgIEJyZWFrcG9p
bnRJRCBwYXVzaW5nQnJlYWtwb2ludElEKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzaW5nQnJlYWtw
b2ludElEOyB9CiAKLSAgICB2b2lkIHNldFBhdXNlT25OZXh0U3RhdGVtZW50KGJvb2wpOworICAg
IHZvaWQgc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CisgICAgdm9pZCBjYW5jZWxQ
YXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CisgICAgYm9vbCBzY2hlZHVsZVBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOworICAgIGJvb2wgY2FuY2VsUGF1c2VGb3JTcGVjaWFs
QnJlYWtwb2ludChCcmVha3BvaW50Jik7CiAgICAgdm9pZCBicmVha1Byb2dyYW0oKTsKICAgICB2
b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcE5leHRFeHByZXNzaW9uKCk7CkBA
IC0xMjMsOSArMTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcHJlc3NBbGxQYXVzZXMoKSBj
b25zdCB7IHJldHVybiBtX3N1cHByZXNzQWxsUGF1c2VzOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVz
c0FsbFBhdXNlcyhib29sIHN1cHByZXNzKSB7IG1fc3VwcHJlc3NBbGxQYXVzZXMgPSBzdXBwcmVz
czsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0dsb2JhbE9iamVjdCosIFNv
dXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgV1RGOjpTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIHsgfQorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNHbG9iYWxPYmplY3QqLCBTb3VyY2VQ
cm92aWRlciosIGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1l
c3NhZ2UpOwogCiAgICAgdm9pZCBleGNlcHRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBib29sIGhhc0NhdGNoSGFuZGxlcik7CiAgICAgdm9p
ZCBhdFN0YXRlbWVudChDYWxsRnJhbWUqKTsKQEAgLTEzNywxMCArMTI3LDQ2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKENhbGxGcmFtZSopOwogICAgIHZvaWQgZGlkUmVh
Y2hEZWJ1Z2dlclN0YXRlbWVudChDYWxsRnJhbWUqKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygpOworICAgIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpOworICAg
IHZvaWQgZGlkUnVuTWljcm90YXNrKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ29kZUJsb2NrKENv
ZGVCbG9jayopOwogCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzM+
IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IERlYnVnZ2VyOjpTY3JpcHQgdG8gdXNlIFNvdXJjZVBy
b3ZpZGVyCisgICAgc3RydWN0IFNjcmlwdCB7CisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAg
IFN0cmluZyBzb3VyY2U7CisgICAgICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgICAgIFN0cmlu
ZyBzb3VyY2VNYXBwaW5nVVJMOworICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJj
ZVByb3ZpZGVyOworICAgICAgICBpbnQgc3RhcnRMaW5lIHsgMCB9OworICAgICAgICBpbnQgc3Rh
cnRDb2x1bW4geyAwIH07CisgICAgICAgIGludCBlbmRMaW5lIHsgMCB9OworICAgICAgICBpbnQg
ZW5kQ29sdW1uIHsgMCB9OworICAgICAgICBib29sIGlzQ29udGVudFNjcmlwdCB7IGZhbHNlIH07
CisgICAgfTsKKworICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291
cmNlKFNvdXJjZUlELCBjb25zdCBEZWJ1Z2dlcjo6U2NyaXB0JikgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgLyogdXJsICovLCBjb25z
dCBTdHJpbmcmIC8qIGRhdGEgKi8sIGludCAvKiBmaXJzdExpbmUgKi8sIGludCAvKiBlcnJvckxp
bmUgKi8sIGNvbnN0IFN0cmluZyYgLyogZXJyb3JNZXNzYWdlICovKSB7IH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuTWljcm90YXNrKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpT
R2xvYmFsT2JqZWN0KiwgRGVidWdnZXJDYWxsRnJhbWUmLCBKU1ZhbHVlIC8qIGV4Y2VwdGlvbk9y
Q2F1Z2h0VmFsdWUgKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSB7
IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgLyogZGF0YSAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBicmVha3BvaW50QWN0aW9uU291bmQoQnJlYWtwb2ludEFjdGlvbklEKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0dsb2JhbE9iamVjdCosIEJyZWFr
cG9pbnRBY3Rpb25JRCwgdW5zaWduZWQgLyogYmF0Y2hJZCAqLywgdW5zaWduZWQgLyogc2FtcGxl
SWQgKi8sIEpTVmFsdWUgLyogcmVzdWx0ICovKSB7IH0KKyAgICB9OworCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImLCBib29sIGlzQmVpbmdEZXN0cm95ZWQp
OworCiAgICAgY2xhc3MgUHJvZmlsaW5nQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgflByb2ZpbGluZ0NsaWVudCgpOwpAQCAtMTU2LDE2ICsxODIsNDAgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQoU2Vjb25kcyBzdGFydFRpbWUsIFByb2ZpbGluZ1Jl
YXNvbik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQnJlYWtwb2ludEhp
dChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEJyZWFrcG9pbnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpTR2xvYmFsT2JqZWN0Kiwg
RXhjZXB0aW9uKikgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVBhdXNlKEpTR2xv
YmFsT2JqZWN0KiwgUmVhc29uRm9yUGF1c2UpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlE
b25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7CisKKyAg
ICBib29sIGhhc0hhbmRsZXJGb3JFeGNlcHRpb25DYWxsYmFjaygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV9yZWFzb25Gb3JQYXVzZSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pOworICAg
ICAgICByZXR1cm4gbV9oYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2s7CisgICAgfQorCisg
ICAgSlNWYWx1ZSBjdXJyZW50RXhjZXB0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jl
YXNvbkZvclBhdXNlID09IFBhdXNlZEZvckV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBtX2N1
cnJlbnRFeGNlcHRpb247CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaERlYnVnZ2Vy
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgLyogaXNCZWluZ0Rl
c3Ryb3llZCAqLykgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNHbG9i
YWxPYmplY3QqKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgaGFuZGxl
UGF1c2UoSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JQYXVzZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkV2
ZW50TG9vcFdoaWxlUGF1c2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2Ny
aXB0KEpTR2xvYmFsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIE5P
VEU6IEN1cnJlbnRseSBhbGwgZXhjZXB0aW9ucyBhcmUgcmVwb3J0ZWQgYXQgdGhlIEFQSSBib3Vu
ZGFyeSB0aHJvdWdoIHJlcG9ydEFQSUV4Y2VwdGlvbi4KKyAgICAvLyBVbnRpbCBhIHRpbWUgY29t
ZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNhbiBiZSBjYXVzZWQgb3V0c2lkZSBvZiB0aGUgQVBJIChl
LmcuIHNldFRpbWVvdXQKKyAgICAvLyBvciBzb21lIG90aGVyIGFzeW5jIG9wZXJhdGlvbiBpbiBh
IHB1cmUgSlNDb250ZXh0KSB3ZSBjYW4gaWdub3JlIGV4Y2VwdGlvbnMgcmVwb3J0ZWQgaGVyZS4K
KyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uKikgY29uc3QgeyB9CisKKyAgICBib29sIGRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMo
KSBjb25zdCB7IHJldHVybiBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7IH0KIAogcHJp
dmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QnJlYWtwb2ludElELCBCcmVha3BvaW50Kj4gQnJl
YWtwb2ludElEVG9CcmVha3BvaW50TWFwOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVk
LCBSZWZQdHI8QnJlYWtwb2ludHNMaXN0PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gTGluZVRvQnJlYWtwb2ludHNNYXA7Ci0gICAg
dHlwZWRlZiBIYXNoTWFwPFNvdXJjZUlELCBMaW5lVG9CcmVha3BvaW50c01hcCwgV1RGOjpJbnRI
YXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJ
RD4+IFNvdXJjZUlEVG9CcmVha3BvaW50c01hcDsKKyAgICBKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1
Z2h0VmFsdWUoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIGNsYXNzIENsZWFyQ29kZUJsb2NrRGVi
dWdnZXJSZXF1ZXN0c0Z1bmN0b3I7CiAgICAgY2xhc3MgQ2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVu
Y3RvcjsKQEAgLTE4OCw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgICAgICBEZWJ1Z2dlciYgbV9k
ZWJ1Z2dlcjsKICAgICB9OwogCi0gICAgYm9vbCBoYXNCcmVha3BvaW50KFNvdXJjZUlELCBjb25z
dCBUZXh0UG9zaXRpb24mLCBCcmVha3BvaW50KiBoaXRCcmVha3BvaW50KTsKKyAgICBSZWZQdHI8
QnJlYWtwb2ludD4gZGlkSGl0QnJlYWtwb2ludChKU0dsb2JhbE9iamVjdCosIFNvdXJjZUlELCBj
b25zdCBUZXh0UG9zaXRpb24mKTsKIAogICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBkZWJ1Z2dlclBh
cnNlRGF0YShTb3VyY2VJRCwgU291cmNlUHJvdmlkZXIqKTsKIApAQCAtMjE1LDcgKzI2NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIEJyZWFrcG9pbnREaXNhYmxlZCwKICAgICAgICAgQnJlYWtwb2lu
dEVuYWJsZWQKICAgICB9OwotICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChib29s
KTsKICAgICB2b2lkIHRvZ2dsZUJyZWFrcG9pbnQoQ29kZUJsb2NrKiwgQnJlYWtwb2ludCYsIEJy
ZWFrcG9pbnRTdGF0ZSk7CiAgICAgdm9pZCBhcHBseUJyZWFrcG9pbnRzKENvZGVCbG9jayopOwog
ICAgIHZvaWQgdG9nZ2xlQnJlYWtwb2ludChCcmVha3BvaW50JiwgQnJlYWtwb2ludFN0YXRlKTsK
QEAgLTIyMyw2ICsyNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEZWJ1Z2dlclJlcXVl
c3RzKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgdm9pZCBjbGVhclBhcnNlZERhdGEoKTsKIAorICAg
IGJvb2wgY2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBk
aXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPik7CisK
ICAgICBWTSYgbV92bTsKICAgICBIYXNoU2V0PEpTR2xvYmFsT2JqZWN0Kj4gbV9nbG9iYWxPYmpl
Y3RzOwogICAgIEhhc2hNYXA8U291cmNlSUQsIERlYnVnZ2VyUGFyc2VEYXRhLCBXVEY6OkludEhh
c2g8U291cmNlSUQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPFNvdXJjZUlE
Pj4gbV9wYXJzZURhdGFNYXA7CkBAIC0yNDgsMTUgKzMwMSwyNCBAQCBwcml2YXRlOgogICAgIFNv
dXJjZUlEIG1fbGFzdEV4ZWN1dGVkU291cmNlSUQ7CiAgICAgYm9vbCBtX2FmdGVyQmxhY2tib3hl
ZFNjcmlwdCB7IGZhbHNlIH07CiAKLSAgICBCcmVha3BvaW50SUQgbV90b3BCcmVha3BvaW50SUQ7
CisgICAgdXNpbmcgTGluZVRvQnJlYWtwb2ludHNNYXAgPSBIYXNoTWFwPHVuc2lnbmVkLCBCcmVh
a3BvaW50c1ZlY3RvciwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8aW50Pj47CisgICAgSGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtwb2lu
dHNNYXAsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8U291cmNlSUQ+PiBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQ7CisgICAgSGFzaFNl
dDxSZWY8QnJlYWtwb2ludD4+IG1fYnJlYWtwb2ludHM7CisgICAgUmVmUHRyPEJyZWFrcG9pbnQ+
IG1fc3BlY2lhbEJyZWFrcG9pbnQ7CiAgICAgQnJlYWtwb2ludElEIG1fcGF1c2luZ0JyZWFrcG9p
bnRJRDsKLSAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXAgbV9icmVha3BvaW50SURUb0Jy
ZWFrcG9pbnQ7Ci0gICAgU291cmNlSURUb0JyZWFrcG9pbnRzTWFwIG1fc291cmNlSURUb0JyZWFr
cG9pbnRzOworCisgICAgdW5zaWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJZCB7IDEgfTsKKyAgICB1
bnNpZ25lZCBtX2N1cnJlbnRQcm9iZUJhdGNoSWQgeyAwIH07CiAKICAgICBSZWZQdHI8SlNDOjpE
ZWJ1Z2dlckNhbGxGcmFtZT4gbV9jdXJyZW50RGVidWdnZXJDYWxsRnJhbWU7CiAKKyAgICBIYXNo
U2V0PE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisgICAgYm9vbCBtX2Rpc3BhdGNoaW5nRnVuY3Rp
b25Ub09ic2VydmVycyB7IGZhbHNlIH07CisKICAgICBQcm9maWxpbmdDbGllbnQqIG1fcHJvZmls
aW5nQ2xpZW50IHsgbnVsbHB0ciB9OwogCisgICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgeyB0cnVlIH07CisKICAgICBmcmllbmQgY2xhc3MgRGVidWdnZXJQYXVzZWRTY29w
ZTsKICAgICBmcmllbmQgY2xhc3MgVGVtcG9yYXJ5UGF1c2VkU3RhdGU7CiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaAppbmRleCA1ZmI2ZThhNjM5NjNhMmZmMWYy
NmNjNzQ0YzAyYTkyODA0NjFkYjA0Li40MjU2M2FjZjNlMmZiZjllMzNjMGY1NDBiYWQ1N2MzNDMw
NTY2OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJQcmltaXRpdmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyUHJpbWl0aXZlcy5oCkBAIC0yOSwxMCArMjksMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXR5cGVkZWYgc2l6ZV90IFNvdXJjZUlEOwotc3RhdGljIGNvbnN0ZXhwciBTb3VyY2VJRCBub1Nv
dXJjZUlEID0gMDsKK3VzaW5nIFNvdXJjZUlEID0gc2l6ZV90OworY29uc3RleHByIFNvdXJjZUlE
IG5vU291cmNlSUQgPSAwOwogCi10eXBlZGVmIHNpemVfdCBCcmVha3BvaW50SUQ7Ci1zdGF0aWMg
Y29uc3RleHByIEJyZWFrcG9pbnRJRCBub0JyZWFrcG9pbnRJRCA9IDA7Cit1c2luZyBCcmVha3Bv
aW50SUQgPSBzaXplX3Q7Citjb25zdGV4cHIgQnJlYWtwb2ludElEIG5vQnJlYWtwb2ludElEID0g
MDsKKwordXNpbmcgQnJlYWtwb2ludEFjdGlvbklEID0gaW50OworY29uc3RleHByIEJyZWFrcG9p
bnRBY3Rpb25JRCBub0JyZWFrcG9pbnRBY3Rpb25JRCA9IDA7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JF
bnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JF
bnZpcm9ubWVudC5oCmluZGV4IDIxMDE5ZWRhMWQwYzRmNzc4M2RmYWM2ZGRlNTc1ODZlNGQ3MWZl
NmUuLmM1YjEyNmU4MDU2MWY3MDZkNWYzYzc4YTgyMWQ2ZWMxZTVjOWM0OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50
LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgU3RvcHdhdGNoOwogfQogCiBuYW1lc3BhY2UgSlND
IHsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgU291cmNlQ29kZTsK
IGNsYXNzIFZNOwpAQCAtMzksNyArNDAsNiBAQCBjbGFzcyBWTTsKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBKU0M6OkpTVmFsdWUg
KCpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0
YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYg
YXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiB0eXBl
ZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckV2YWx1YXRlSGFuZGxlcikoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBl
dmFsdWF0ZUhhbmRsZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kSW5p
dGlhbGl6ZWQoKSA9IDA7CiAgICAgdmlydHVhbCBXVEY6OlN0b3B3YXRjaCYgZXhlY3V0aW9uU3Rv
cHdhdGNoKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlw
dERlYnVnU2VydmVyKCkgPSAwOworICAgIHZpcnR1YWwgSlNDOjpEZWJ1Z2dlciYgc2NyaXB0RGVi
dWdTZXJ2ZXIoKSA9IDA7CiAgICAgdmlydHVhbCBKU0M6OlZNJiB2bSgpID0gMDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDRmZWE0ODE4NWI0M2I0MmNj
NmRiZGE3NDE4ZjU0ZWZiZDI0OWNmZjQuLmMyZjcwYzdkMGNjODI5OWY4NmU1MjJiZjc4YTk1OTZh
MmY4MGRhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzUs
MTggKzM1LDIyIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6SlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotICAgIDogU2NyaXB0RGVi
dWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0LnZtKCkpCisgICAgOiBEZWJ1Z2dlcihnbG9iYWxPYmplY3Qu
dm0oKSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKIH0KIAogdm9pZCBK
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dlcigpCiB7CisgICAg
SlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKKwogICAgIGF0dGFjaCgmbV9nbG9iYWxP
YmplY3QpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFj
aERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpk
ZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKKwogICAgIGRldGFjaCgmbV9nbG9iYWxP
YmplY3QsIGlzQmVpbmdEZXN0cm95ZWQgPyBEZWJ1Z2dlcjo6R2xvYmFsT2JqZWN0SXNEZXN0cnVj
dGluZyA6IERlYnVnZ2VyOjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24pOwogICAgIGlmICgh
aXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKQEAg
LTU0LDEwICs1OCwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIAogdm9pZCBKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB7CisgICAgSlND
OjpEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKKwogICAgIC8vIERyb3AgYWxs
IGxvY2tzIHNvIGFub3RoZXIgdGhyZWFkIGNhbiB3b3JrIGluIHRoZSBWTSB3aGlsZSB3ZSBhcmUg
bmVzdGVkLgogICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKCZtX2ds
b2JhbE9iamVjdC52bSgpKTsKIAotICAgIHdoaWxlICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKSB7CisgICAgd2hpbGUgKCFkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpIHsK
ICAgICAgICAgaWYgKFJ1bkxvb3A6OmN5Y2xlKEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXI6OnJ1bkxvb3BNb2RlKCkpID09IFJ1bkxvb3A6OkN5Y2xlUmVzdWx0OjpTdG9wKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCBkYWFiY2Y3NjRlMTdkMWVkNmRjZjc2Y2M1OWZjMzllN2ViOWU3ODVlLi41NzcxYTE4Nzk3ZGU3
ODVkYzM1YjhjMjg1OTE1ZjhlMGMzYjljY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIuaApAQCAtMjUsMTIgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsK
K2NsYXNzIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC00MiwxOCArNDIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSdW5Mb29wTW9kZSBydW5Mb29w
TW9kZSgpOwogCiBwcml2YXRlOgorICAgIC8vIEpTQzo6RGVidWdnZXIKICAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKCkgZmluYWw7CiAgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdE
ZXN0cm95ZWQpIGZpbmFsOwotCi0gICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0
KikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
ZmluYWwgeyB9CiAgICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOwotICAg
IGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgLy8gTk9URTogQ3VycmVudGx5IGFsbCBleGNlcHRpb25z
IGFyZSByZXBvcnRlZCBhdCB0aGUgQVBJIGJvdW5kYXJ5IHRocm91Z2ggcmVwb3J0QVBJRXhjZXB0
aW9uLgotICAgIC8vIFVudGlsIGEgdGltZSBjb21lcyB3aGVyZSBhbiBleGNlcHRpb24gY2FuIGJl
IGNhdXNlZCBvdXRzaWRlIG9mIHRoZSBBUEkgKGUuZy4gc2V0VGltZW91dAotICAgIC8vIG9yIHNv
bWUgb3RoZXIgYXN5bmMgb3BlcmF0aW9uIGluIGEgcHVyZSBKU0NvbnRleHQpIHdlIGNhbiBpZ25v
cmUgZXhjZXB0aW9ucyByZXBvcnRlZCBoZXJlLgotICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsIHsgfQogCiAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2MDQxNzk2YTRlYjdkYmNjOGNiYjk3ODRkYzcxYTIxYTA0
MWIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXR5
cGVkZWYgZW51bSB7Ci0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2csCi0gICAgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZSwKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0
aW9uVHlwZVNvdW5kLAotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmUKLX0gU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGU7Ci0KLXN0cnVjdCBTY3JpcHRCcmVha3BvaW50QWN0aW9u
IHsKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uKFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBl
IHR5cGUsIGludCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogdHlw
ZSh0eXBlKQotICAgICAgICAsIGlkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBkYXRh
KGRhdGEpCi0gICAgewotICAgIH0KLQotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlIHR5
cGU7Ci0gICAgaW50IGlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIGRhdGE7Ci19OwotCi10eXBlZGVm
IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiBCcmVha3BvaW50QWN0aW9uczsKLQotc3Ry
dWN0IFNjcmlwdEJyZWFrcG9pbnQgewotICAgIFNjcmlwdEJyZWFrcG9pbnQoKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBTY3JpcHRCcmVha3BvaW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVk
IGlnbm9yZUNvdW50KQotICAgICAgICA6IGxpbmVOdW1iZXIobGluZU51bWJlcikKLSAgICAgICAg
LCBjb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAgICAsIGNvbmRpdGlvbihjb25kaXRp
b24pCi0gICAgICAgICwgYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25v
cmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7Ci0gICAgfQotCi0gICAgU2NyaXB0QnJlYWtwb2lu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24sIEJyZWFrcG9pbnRBY3Rpb25zJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgdW5zaWdu
ZWQgaWdub3JlQ291bnQpCi0gICAgICAgIDogbGluZU51bWJlcihsaW5lTnVtYmVyKQotICAgICAg
ICAsIGNvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCi0gICAgICAgICwgY29uZGl0aW9uKGNvbmRp
dGlvbikKLSAgICAgICAgLCBhY3Rpb25zKGFjdGlvbnMpCi0gICAgICAgICwgYXV0b0NvbnRpbnVl
KGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25vcmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7
Ci0gICAgfQotCi0gICAgaW50IGxpbmVOdW1iZXIgeyAwIH07Ci0gICAgaW50IGNvbHVtbk51bWJl
ciB7IDAgfTsKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIEJyZWFrcG9pbnRBY3Rpb25zIGFj
dGlvbnM7Ci0gICAgYm9vbCBhdXRvQ29udGludWUgeyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIGln
bm9yZUNvdW50IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDhiZWY0MGVmYmMyYjA3YWE2ZTdkNTZk
ZjA4ZWUxNThmZDhiMDEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5l
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
RGVidWdnZXIuaCIKLSNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotc3RydWN0IFNjcmlw
dEJyZWFrcG9pbnRBY3Rpb247Ci0KLWNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXIgewotcHVibGlj
OgotICAgIHN0cnVjdCBTY3JpcHQgewotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBTdHJp
bmcgc291cmNlOwotICAgICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgICAgICBTdHJpbmcgc291
cmNlTWFwcGluZ1VSTDsKLSAgICAgICAgUmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IHNvdXJj
ZVByb3ZpZGVyOwotICAgICAgICBpbnQgc3RhcnRMaW5lIHswfTsKLSAgICAgICAgaW50IHN0YXJ0
Q29sdW1uIHswfTsKLSAgICAgICAgaW50IGVuZExpbmUgezB9OwotICAgICAgICBpbnQgZW5kQ29s
dW1uIHswfTsKLSAgICAgICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQge2ZhbHNlfTsKLSAgICB9Owot
Ci0gICAgdmlydHVhbCB+U2NyaXB0RGVidWdMaXN0ZW5lcigpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
IGNhbGxGcmFtZXMsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29udGludWUoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlv
bkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVuc2lnbmVkIGJh
dGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgcmVzdWx0KSA9IDA7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkZWQxMjk1Zjk0MzY4NzhjNzNlOWNlZGI2NjEzMTIzZTQyMjFkZGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwzMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgotCi0jaW5jbHVkZSAiRGVidWdnZXJD
YWxsRnJhbWUuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSmF2
YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0K
LW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1TY3JpcHRE
ZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoVk0mIHZtKQotICAgIDogRGVidWdnZXIodm0p
Ci17Ci19Ci0KLVNjcmlwdERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIoKQotewotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50QWN0aW9ucyhCcmVha3BvaW50
SUQgaWQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQpCi17Ci0gICAg
QVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKLSAgICBBU1NFUlQoIW1fYnJlYWtwb2ludElE
VG9BY3Rpb25zLmNvbnRhaW5zKGlkKSk7Ci0KLSAgICBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5z
ZXQoaWQsIHNjcmlwdEJyZWFrcG9pbnQuYWN0aW9ucyk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnRJRCBpZCkKLXsKLSAgICBB
U1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOwotCi0gICAgbV9icmVha3BvaW50SURUb0FjdGlv
bnMucmVtb3ZlKGlkKTsKLX0KLQotY29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIFNjcmlwdERlYnVn
U2VydmVyOjpnZXRBY3Rpb25zRm9yQnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQpCi17Ci0gICAg
QVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKLQotICAgIGF1dG8gZW50cnkgPSBtX2JyZWFr
cG9pbnRJRFRvQWN0aW9ucy5maW5kKGlkKTsKLSAgICBpZiAoZW50cnkgIT0gbV9icmVha3BvaW50
SURUb0FjdGlvbnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBlbnRyeS0+dmFsdWU7Ci0KLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnJlYWtwb2ludEFjdGlvbnM+IGVtcHR5QWN0aW9uVmVjdG9y
ID0gQnJlYWtwb2ludEFjdGlvbnMoKTsKLSAgICByZXR1cm4gZW1wdHlBY3Rpb25WZWN0b3I7Ci19
Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFyQnJlYWtwb2ludEFjdGlvbnMoKQotewot
ICAgIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmNsZWFyKCk7Ci19Ci0KLWJvb2wgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50
QWN0aW9uJiBicmVha3BvaW50QWN0aW9uKQotewotICAgIERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1
Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotCi0gICAgc3dpdGNo
IChicmVha3BvaW50QWN0aW9uLnR5cGUpIHsKLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b25UeXBlTG9nOgotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3Jp
cHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAgbGlzdGVuZXIuYnJlYWtw
b2ludEFjdGlvbkxvZyhkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKSwgYnJlYWtwb2lu
dEFjdGlvbi5kYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUV2YWx1YXRlOiB7Ci0gICAgICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmpl
Y3QgPSBudWxscHRyOwotICAgICAgICBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihicmVha3BvaW50QWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBl
eGNlcHRpb24pOwotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLmdsb2JhbE9iamVjdCgpLCBleGNlcHRpb24pOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBl
U291bmQ6Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERl
YnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci5icmVha3BvaW50
QWN0aW9uU291bmQoYnJlYWtwb2ludEFjdGlvbi5pZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2Jl
OiB7Ci0gICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBKU09i
amVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwotICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGJyZWFr
cG9pbnRBY3Rpb24uZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7Ci0gICAg
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGRlYnVnZ2VyQ2FsbEZyYW1l
Lmdsb2JhbE9iamVjdCgpOwotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgcmVw
b3J0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKLQotICAgICAgICBkaXNwYXRj
aEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikg
ewotICAgICAgICAgICAgbGlzdGVuZXIuYnJlYWtwb2ludEFjdGlvblByb2JlKGdsb2JhbE9iamVj
dCwgYnJlYWtwb2ludEFjdGlvbiwgbV9jdXJyZW50UHJvYmVCYXRjaElkLCBtX25leHRQcm9iZVNh
bXBsZUlkKyssIGV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi0+dmFsdWUoKSA6IHJlc3VsdCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgLy8gUHJlZW1wdGl2ZWx5IGNoZWNrIHdo
ZXRoZXIgd2UgY2FuIGRpc3BhdGNoIHNvIHRoYXQgd2UgZG9uJ3QgZG8gYW55IHVubmVjZXNzYXJ5
IGFsbG9jYXRpb25zLgotICAgIGlmICghY2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChlcnJvckxpbmUgIT0gLTEpIHsKLSAgICAgICAg
YXV0byBzb3VyY2VVUkwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7Ci0gICAgICAgIGF1
dG8gZGF0YSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwotICAgICAgICBh
dXRvIGZpcnN0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9u
ZUJhc2VkSW50KCk7Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNj
cmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci5mYWls
ZWRUb1BhcnNlU291cmNlKHNvdXJjZVVSTCwgZGF0YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVy
cm9yTWVzc2FnZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
SlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IHNvdXJjZVByb3ZpZGVyLT5hc0lEKCk7Ci0KLSAgICAv
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4gV2ViIEluc3BlY3RvcjogU2lt
cGxpZnkgU2NyaXB0RGVidWdMaXN0ZW5lcjo6U2NyaXB0IHRvIHVzZSBTb3VyY2VQcm92aWRlcgot
ICAgIFNjcmlwdERlYnVnTGlzdGVuZXI6OlNjcmlwdCBzY3JpcHQ7Ci0gICAgc2NyaXB0LnNvdXJj
ZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7Ci0gICAgc2NyaXB0LnVybCA9IHNvdXJjZVByb3Zp
ZGVyLT5zb3VyY2VVUkwoKTsKLSAgICBzY3JpcHQuc291cmNlID0gc291cmNlUHJvdmlkZXItPnNv
dXJjZSgpLnRvU3RyaW5nKCk7Ci0gICAgc2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJjZVByb3ZpZGVy
LT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOwotICAgIHNjcmlwdC5zdGFy
dENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jh
c2VkSW50KCk7Ci0gICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdChn
bG9iYWxPYmplY3QpOwotICAgIHNjcmlwdC5zb3VyY2VVUkwgPSBzb3VyY2VQcm92aWRlci0+c291
cmNlVVJMRGlyZWN0aXZlKCk7Ci0gICAgc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwgPSBzb3VyY2VQ
cm92aWRlci0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpOwotCi0gICAgaW50IHNvdXJjZUxl
bmd0aCA9IHNjcmlwdC5zb3VyY2UubGVuZ3RoKCk7Ci0gICAgaW50IGxpbmVDb3VudCA9IDE7Ci0g
ICAgaW50IGxhc3RMaW5lU3RhcnQgPSAwOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNl
TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VbaV0gPT0gJ1xuJykgewot
ICAgICAgICAgICAgbGluZUNvdW50ICs9IDE7Ci0gICAgICAgICAgICBsYXN0TGluZVN0YXJ0ID0g
aSArIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzY3JpcHQuZW5kTGluZSA9IHNjcmlwdC5z
dGFydExpbmUgKyBsaW5lQ291bnQgLSAxOwotICAgIGlmIChsaW5lQ291bnQgPT0gMSkKLSAgICAg
ICAgc2NyaXB0LmVuZENvbHVtbiA9IHNjcmlwdC5zdGFydENvbHVtbiArIHNvdXJjZUxlbmd0aDsK
LSAgICBlbHNlCi0gICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5ndGggLSBsYXN0
TGluZVN0YXJ0OwotCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0
RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIuZGlkUGFyc2VTb3Vy
Y2Uoc291cmNlSUQsIHNjcmlwdCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OndpbGxSdW5NaWNyb3Rhc2soKQotewotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVy
cyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVy
LndpbGxSdW5NaWNyb3Rhc2soKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkUnVuTWljcm90YXNrKCkKLXsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMo
WyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBsaXN0ZW5lci5k
aWRSdW5NaWNyb3Rhc2soKTsKLSAgICB9KTsKLX0KLQotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkgY29uc3QKLXsKLSAgICBpZiAobV9jYWxs
aW5nTGlzdGVuZXJzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fbGlzdGVuZXJz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoRnVu
Y3Rpb248dm9pZChTY3JpcHREZWJ1Z0xpc3RlbmVyJik+IGNhbGxiYWNrKQotewotICAgIGlmICgh
Y2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2NhbGxpbmdMaXN0ZW5lcnMsIHRydWUpOwotCi0g
ICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCi0gICAg
ICAgIGNhbGxiYWNrKCpsaXN0ZW5lcik7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Om5v
dGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKQotewotICAgIG1fZG9uZVByb2Nlc3Np
bmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZUJyZWFrcG9pbnRIaXQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCi17Ci0gICAgQVNTRVJUKGlzQXR0YWNoZWQo
Z2xvYmFsT2JqZWN0KSk7Ci0KLSAgICBtX2N1cnJlbnRQcm9iZUJhdGNoSWQrKzsKLQotICAgIGF1
dG8gZW50cnkgPSBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5maW5kKGJyZWFrcG9pbnQuaWQpOwot
ICAgIGlmIChlbnRyeSAhPSBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5lbmQoKSkgewotICAgICAg
ICBCcmVha3BvaW50QWN0aW9ucyBhY3Rpb25zID0gZW50cnktPnZhbHVlOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFjdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
ICghZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGFjdGlvbnNbaV0pKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGlmICghaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikgY29u
c3QKLXsKLSAgICByZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UpCi17Ci0gICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAg
ICAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwotICAgICAgICBhdXRvJiBkZWJ1Z2dlckNhbGxGcmFt
ZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotICAgICAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBkZWJ1Z2dlckNhbGxGcmFtZS5zY29wZSgpLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAg
YXV0byBqc0NhbGxGcmFtZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEphdmFT
Y3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSkucHRyKCkpOwotICAgICAg
ICBsaXN0ZW5lci5kaWRQYXVzZShnbG9iYWxPYmplY3QsIGpzQ2FsbEZyYW1lLCBleGNlcHRpb25P
ckNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgIH0pOwotCi0gICAgZGlkUGF1c2UoZ2xv
YmFsT2JqZWN0KTsKLQotICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IGZhbHNl
OwotICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7Ci0KLSAgICBkaWRDb250aW51ZShnbG9i
YWxPYmplY3QpOwotCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0
RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIuZGlkQ29udGludWUo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2Ny
aXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyKTsKLQot
ICAgIGJvb2wgd2FzRW1wdHkgPSBtX2xpc3RlbmVycy5pc0VtcHR5KCk7Ci0gICAgbV9saXN0ZW5l
cnMuYWRkKGxpc3RlbmVyKTsKLQotICAgIC8vIEZpcnN0IGxpc3RlbmVyLiBBdHRhY2ggdGhlIGRl
YnVnZ2VyLgotICAgIGlmICh3YXNFbXB0eSkKLSAgICAgICAgYXR0YWNoRGVidWdnZXIoKTsKLX0K
LQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKLXsKLSAgICBBU1NFUlQobGlz
dGVuZXIpOwotCi0gICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLQotICAgIC8vIExh
c3QgbGlzdGVuZXIuIERldGFjaCB0aGUgZGVidWdnZXIuCi0gICAgaWYgKG1fbGlzdGVuZXJzLmlz
RW1wdHkoKSkKLSAgICAgICAgZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgaWYgKHJlYXNvbkZvclBh
dXNlKCkgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gY3VycmVudEV4Y2Vw
dGlvbigpOwotCi0gICAgZm9yIChSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IGZyYW1lID0gJmN1
cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJh
bWUoKSkgewotICAgICAgICBEZWJ1Z2dlclNjb3BlJiBzY29wZSA9ICpmcmFtZS0+c2NvcGUoKTsK
LSAgICAgICAgaWYgKHNjb3BlLmlzQ2F0Y2hTY29wZSgpKQotICAgICAgICAgICAgcmV0dXJuIHNj
b3BlLmNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE3YzExMGQ3NGMxMTMzYWI0ZmNmMzFmZmM0YjI1MjgwZmVkOTJiYzcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRGVidWdnZXIuaCIK
LSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0
ZW5lci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBKU0dsb2Jh
bE9iamVjdDsKLWNsYXNzIFZNOwotfQotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dl
ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0RGVidWdTZXJ2ZXIpOwotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgLy8gRklYTUU6IE1vdmUgQnJl
YWtwb2ludEFjdGlvbiBoYW5kbGluZyBpbnRvIEpTQzo6RGVidWdnZXIgb3IgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC4KLSAgICB2b2lkIHNldEJyZWFrcG9pbnRBY3Rpb25zKEpTQzo6QnJlYWtwb2lu
dElELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7Ci0gICAgdm9pZCByZW1vdmVCcmVha3BvaW50
QWN0aW9ucyhKU0M6OkJyZWFrcG9pbnRJRCk7Ci0gICAgdm9pZCBjbGVhckJyZWFrcG9pbnRBY3Rp
b25zKCk7Ci0KLSAgICBjb25zdCBCcmVha3BvaW50QWN0aW9ucyYgZ2V0QWN0aW9uc0ZvckJyZWFr
cG9pbnQoSlNDOjpCcmVha3BvaW50SUQpOwotCi0gICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKLQotcHJvdGVjdGVkOgotICAgIFNjcmlwdERl
YnVnU2VydmVyKEpTQzo6Vk0mKTsKLSAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsK
LQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSA9IDA7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
Q29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0
aW9uKikgY29uc3QgPSAwOwotCi0gICAgYm9vbCBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYpOwotCi0gICAgYm9vbCBjYW5EaXNwYXRjaEZ1bmN0
aW9uVG9MaXN0ZW5lcnMoKSBjb25zdDsKLSAgICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3Rl
bmVycyhGdW5jdGlvbjx2b2lkKFNjcmlwdERlYnVnTGlzdGVuZXImKT4gY2FsbGJhY2spOwotCi0g
ICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgeyB0cnVlIH07Ci0KLXByaXZh
dGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEpTQzo6QnJlYWtwb2ludElELCBCcmVha3BvaW50QWN0
aW9ucz4gQnJlYWtwb2ludElEVG9BY3Rpb25zTWFwOwotCi0gICAgdm9pZCBzb3VyY2VQYXJzZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5l
LCBjb25zdCBTdHJpbmcmIGVycm9yTXNnKSBmaW5hbDsKLSAgICB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQg
aGFuZGxlQnJlYWtwb2ludEhpdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpCcmVh
a3BvaW50JikgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7
Ci0gICAgdm9pZCBoYW5kbGVQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dl
cjo6UmVhc29uRm9yUGF1c2UpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5RG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cygpIGZpbmFsOwotCi0gICAgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1
Z2h0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotCi0gICAgQnJlYWtwb2ludElEVG9BY3Rp
b25zTWFwIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zOwotICAgIEhhc2hTZXQ8U2NyaXB0RGVidWdM
aXN0ZW5lcio+IG1fbGlzdGVuZXJzOwotICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzIHsgZmFs
c2UgfTsKLSAgICB1bnNpZ25lZCBtX25leHRQcm9iZVNhbXBsZUlkIHsgMSB9OwotICAgIHVuc2ln
bmVkIG1fY3VycmVudFByb2JlQmF0Y2hJZCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAppbmRleCBiZmQ3Nzc0Y2YzZDczNWNk
ZWFlN2ViMTlkMWFlNDUyNDE2NWUzNWM2Li45N2NlYTk0YmQ1YWZhYTY1YWU0MDNhM2QwOTUwNTJl
ZDc5OTI5Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcApAQCAtMjYsMTAgKzI2LDEw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXVkaXRBZ2VudC5o
IgogCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTEwNSw5ICsxMDUsOSBAQCB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGVzdCwgY29ucwogCiAgICAgT3B0aW9u
YWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNl
T25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gbV9zY3Jp
cHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CisgICAgYXV0byBwcmV2aW91
c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBtX3NjcmlwdERlYnVnU2VydmVyLnBhdXNlT25FeGNl
cHRpb25zU3RhdGUoKTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAg
ICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoRGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVj
dGVkU2NyaXB0LmV4ZWN1dGUoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uU3RyaW5nLnRvU3RyaW5nKCks
IFdURk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckF1ZGl0QWdlbnQuaAppbmRleCA4M2JjY2E2Mjk3NTQ4ZGUzZjY4MDE5ZGU1ZmY1
MzEzZWY3NGEyNjhjLi4wNmIxYTgzZmQ4MjM1MzYwODAyNjVmOWI5YjIyZjA2NTY5MGNlYzQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCituYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIERlYnVnZ2VyOworfQorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xh
c3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBT
Y3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBdWRpdEFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEF1ZGl0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKQEAgLTcxLDcg
Kzc0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBSZWZQdHI8QXVkaXRCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIm
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIFNjcmlwdERlYnVnU2VydmVyJiBtX3Njcmlw
dERlYnVnU2VydmVyOworICAgIEpTQzo6RGVidWdnZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiAK
ICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX2luamVjdGVkV2ViSW5zcGVjdG9yQXVk
aXRWYWx1ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDI5YzEz
MGI5NjVjYTI2NTY0MWM0MGY3NTA5OWNmNmViZDI2NDAwNzIuLjJhNGE5ZDQ5NzVkZTBkNmI1NTRh
NTY4NzNkNjZkMjA5YTA1OTNmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0zMiwxMiArMzIsMTYgQEAKIAogI2luY2x1ZGUgIkFzeW5jU3RhY2tUcmFjZS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgor
I2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkpTSmF2YVNjcmlw
dENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1Nl
cnZlci5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNTAsOSArNTQsOSBAQCBjb25zdCBjaGFyKiBjb25zdCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCA9ICJiYWNrdHJhY2UiOwogLy8gYWNj
b3JkaW5nIHRvIHRoZSBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVyIGFzc2lnbmVkIGJ5IHRo
ZSBmcm9udGVuZC4gQSBicmVha3BvaW50IG1heQogLy8gaGF2ZSBzZXZlcmFsIG9iamVjdCBncm91
cHMsIGFuZCBvYmplY3RzIGZyb20gc2V2ZXJhbCBiYWNrZW5kIGJyZWFrcG9pbnQgYWN0aW9uIGlu
c3RhbmNlcyBtYXkKIC8vIGNyZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgotc3RhdGlj
IFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtw
b2ludEFjdGlvbiYgYWN0aW9uKQorc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9p
bnRBY3Rpb24oSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgaWQpCiB7Ci0gICAgcmV0dXJuIG1ha2VT
dHJpbmcoImJyZWFrcG9pbnQtYWN0aW9uLSIsIGFjdGlvbi5pZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZygiYnJlYWtwb2ludC1hY3Rpb24tIiwgaWQpOwogfQogCiBzdGF0aWMgYm9v
bCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQpAQCAtNjAs
NiArNjQsMTU2IEBAIHN0YXRpYyBib29sIGlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCiAgICAgcmV0dXJuIHNvdXJjZVVSTC5zdGFydHNXaXRoKCJfX0luamVj
dGVkU2NyaXB0XyIpICYmIHNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7CiB9CiAKK3N0YXRpYyBP
cHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4gYnJlYWtwb2ludEFjdGlvblR5
cGVGb3JTdHJpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVT
dHJpbmcpCit7CisgICAgYXV0byB0eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9y
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlPih0eXBlU3RyaW5nKTsKKyAgICBpZiAoIXR5
cGUpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGJyZWFrcG9p
bnQgYWN0aW9uIHR5cGU6ICJfcywgdHlwZVN0cmluZyk7CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgfQorCisgICAgc3dpdGNoICgqdHlwZSkgeworICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkxvZzoKKyAgICAg
ICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpMb2c7CisKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpF
dmFsdWF0ZToKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpF
dmFsdWF0ZTsKKworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kOgorICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50
OjpBY3Rpb246OlR5cGU6OlNvdW5kOworCisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6UHJvYmU6CisgICAgICAgIHJldHVybiBK
U0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6UHJvYmU7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCwgRnVuY3Rp
b248VChjb25zdCBTdHJpbmcmLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiwgYm9v
bCwgc2l6ZV90KT4gY2FsbGJhY2spCit7CisgICAgU3RyaW5nIGNvbmRpdGlvbjsKKyAgICBKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3IgYWN0aW9uczsKKyAgICBib29sIGF1dG9Db250aW51
ZSA9IGZhbHNlOworICAgIHNpemVfdCBpZ25vcmVDb3VudCA9IDA7CisKKyAgICBpZiAob3B0aW9u
c1BheWxvYWQpIHsKKyAgICAgICAgb3B0aW9uc1BheWxvYWQtPmdldFN0cmluZygiY29uZGl0aW9u
Il9zLCBjb25kaXRpb24pOworCisgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYWN0aW9uc1Bh
eWxvYWQ7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5nZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0
aW9uc1BheWxvYWQpOworICAgICAgICBpZiAoYXV0byBjb3VudCA9IGFjdGlvbnNQYXlsb2FkID8g
YWN0aW9uc1BheWxvYWQtPmxlbmd0aCgpIDogMCkgeworICAgICAgICAgICAgYWN0aW9ucy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGFj
dGlvbk9iamVjdDsKKyAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbnNQYXlsb2FkLT5nZXQoaSkt
PmFzT2JqZWN0KGFjdGlvbk9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5leHBlY3RlZCBub24tb2JqZWN0IGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgYWN0aW9uVHlwZVN0cmluZzsKKyAgICAgICAgICAgICAgICBpZiAo
IWFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCBhY3Rpb25UeXBlU3RyaW5nKSkgewor
ICAgICAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0g
aW4gZ2l2ZW4gYWN0aW9ucyJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvIGFjdGlvblR5cGUgPSBicmVh
a3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhlcnJvclN0cmluZywgYWN0aW9uVHlwZVN0cmluZyk7
CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25UeXBlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgICAgICAgICAgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24gYWN0
aW9uKCphY3Rpb25UeXBlKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdC0+Z2V0U3Ry
aW5nKCJkYXRhIl9zLCBhY3Rpb24uZGF0YSk7CisKKyAgICAgICAgICAgICAgICAvLyBTcGVjaWZ5
aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRl
IHByb2JlIHNhbXBsZXMKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgZnJvbnRlbmQgYWNyb3Nz
IG11bHRpcGxlIGJhY2tlbmQgcHJvYmUgYWN0aW9ucyBhbmQgc2VncmVnYXRlIG9iamVjdCBncm91
cHMuCisgICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKCJpZCJfcywgYWN0
aW9uLmlkKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbnMuYXBwZW5kKFdURk1vdmUoYWN0aW9u
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBvcHRpb25zUGF5bG9hZC0+
Z2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOworICAgICAgICBvcHRp
b25zUGF5bG9hZC0+Z2V0SW50ZWdlcigiaWdub3JlQ291bnQiX3MsIGlnbm9yZUNvdW50KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBh
dXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90
b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlND
OjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQoreworICAgIHJldHVy
biBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4+KGVy
cm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwg
SlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGlu
dWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiB7
CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUs
IGlnbm9yZUNvdW50KTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2Nv
bEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQoreworICAg
IHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2lu
dD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChjb25zdCBTdHJpbmcmIGNvbmRp
dGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRv
Q29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9jb2xCcmVha3Bv
aW50PiB7CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQodXJsLCBpc1JlZ2V4LCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0
b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAgfSk7Cit9CisKK0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVha3BvaW50KCkgPSBkZWZhdWx0
OworCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29s
QnJlYWtwb2ludChKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBKU0M6OkJyZWFr
cG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6ZV90
IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChtYWtlU3RyaW5nKHNvdXJjZUlELCAnOicsIGxpbmVO
dW1iZXIsICc6JywgY29sdW1uTnVtYmVyKSkKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICwgbV9z
b3VyY2VJRChzb3VyY2VJRCkKKyNlbmRpZgorICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIp
CisgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCisgICAgLCBtX2NvbmRpdGlvbihj
b25kaXRpb24pCisgICAgLCBtX2FjdGlvbnMoV1RGTW92ZShhY3Rpb25zKSkKKyAgICAsIG1fYXV0
b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKKyAgICAsIG1faWdub3JlQ291bnQoaWdub3JlQ291bnQp
Cit7Cit9CisKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJv
dG9jb2xCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0Nv
bnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpCisgICAgOiBtX2lkKG1ha2VTdHJpbmcoaXNSZWdl
eCA/ICIvIiA6ICIiLCB1cmwsIGlzUmVnZXggPyAiLyIgOiAiIiwgJzonLCBsaW5lTnVtYmVyLCAn
OicsIGNvbHVtbk51bWJlcikpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX2lzUmVnZXgoaXNS
ZWdleCkKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICwgbV9jb2x1bW5OdW1i
ZXIoY29sdW1uTnVtYmVyKQorICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQorICAgICwgbV9h
Y3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgLCBtX2F1dG9Db250aW51ZShhdXRvQ29udGlu
dWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGlnbm9yZUNvdW50KQoreworfQorCitSZWY8SlNDOjpC
cmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmNy
ZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9p
bnRJRCwgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGVidWdn
ZXJCcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CisgICAgQVNTRVJUKHNvdXJj
ZUlEICE9IEpTQzo6bm9Tb3VyY2VJRCk7CisgICAgQVNTRVJUKHNvdXJjZUlEID09IG1fc291cmNl
SUQgfHwgbV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOworCisgICAgYXV0byBkZWJ1Z2dl
ckJyZWFrcG9pbnQgPSBKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZShkZWJ1Z2dlckJyZWFrcG9pbnRJ
RCwgbV9jb25kaXRpb24sIGNvcHlUb1ZlY3RvcihtX2FjdGlvbnMpLCBtX2F1dG9Db250aW51ZSwg
bV9pZ25vcmVDb3VudCk7CisgICAgZGVidWdnZXJCcmVha3BvaW50LT5saW5rKHNvdXJjZUlELCBt
X2xpbmVOdW1iZXIsIG1fY29sdW1uTnVtYmVyKTsKKyAgICByZXR1cm4gZGVidWdnZXJCcmVha3Bv
aW50OworfQorCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2lu
dDo6bWF0Y2hlc1NjcmlwdFVSTChjb25zdCBTdHJpbmcmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOworCisgICAgaWYgKG1faXNS
ZWdleCkgeworICAgICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KG1fdXJs
KTsKKyAgICAgICAgcmV0dXJuIHJlZ2V4Lm1hdGNoKHNjcmlwdFVSTCkgIT0gLTE7CisgICAgfQor
ICAgIHJldHVybiBtX3VybCA9PSBzY3JpcHRVUkw7Cit9CisKK1JlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXlsb2Fk
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5
bG9hZCkKK3sKKyAgICByZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxSZWZQdHI8SlNDOjpC
cmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkLCBbXSAoY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJv
b2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6QnJlYWtwb2ludDo6Y3JlYXRlKEpTQzo6bm9CcmVha3BvaW50SUQsIGNvbmRpdGlvbiwgV1RG
TW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAgfSk7Cit9CisK
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKICAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQpAQCAtODcsNyArMjQxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7
CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLmFkZExpc3RlbmVyKHRoaXMpOworICAgIG1fc2Ny
aXB0RGVidWdTZXJ2ZXIuYWRkT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgZm9yIChhdXRvKiBsaXN0
ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCiAgICAgICAgIGxpc3RlbmVyLT5kZWJ1
Z2dlcldhc0VuYWJsZWQoKTsKQEAgLTEwOCwxNSArMjYyLDEzIEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAgICAgZm9yIChhdXRv
KiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCiAgICAgICAgIGxpc3RlbmVy
LT5kZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92
ZUxpc3RlbmVyKHRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOworICAgIG1fc2NyaXB0RGVidWdTZXJ2
ZXIucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOwogCiAgICAgY2xlYXJJ
bnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKTsKIAogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkK
ICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAot
ICAgIEFTU0VSVChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5pc0VtcHR5KCkpOwotCiAgICAgY2xl
YXJBc3luY1N0YWNrVHJhY2VEYXRhKCk7CiAKICAgICBtX3BhdXNlT25Bc3NlcnRpb25GYWlsdXJl
cyA9IGZhbHNlOwpAQCAtMjA2LDE3ICszNTgsMjIgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUK
ICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CiB9CiAKLVJlZlB0cjxKU09OOjpP
YmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29u
KEpTQzo6QnJlYWtwb2ludElEIGRlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIpCitSZWZQdHI8
SlNPTjo6T2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQYXVz
ZVJlYXNvbihKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJRCkKIHsKLSAgICBB
U1NFUlQoZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllciAhPSBKU0M6Om5vQnJlYWtwb2ludElE
KTsKLSAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0
b3JCcmVha3BvaW50SWRlbnRpZmllci5maW5kKGRlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIp
OwotICAgIGlmIChpdCA9PSBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3Rv
ckJyZWFrcG9pbnRJZGVudGlmaWVyLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBBU1NFUlQoZGVidWdnZXJCcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CiAK
LSAgICBhdXRvIHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludFBhdXNlUmVh
c29uOjpjcmVhdGUoKQotICAgICAgICAuc2V0QnJlYWtwb2ludElkKGl0LT52YWx1ZSkKLSAgICAg
ICAgLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CisgICAg
Zm9yIChhdXRvJiBbcHJvdG9jb2xCcmVha3BvaW50SUQsIGRlYnVnZ2VyQnJlYWtwb2ludHNdIDog
bV9kZWJ1Z2dlckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBkZWJ1Z2dlckJyZWFrcG9pbnQgOiBkZWJ1Z2dlckJyZWFrcG9pbnRzKSB7Cisg
ICAgICAgICAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50LT5pZCgpID09IGRlYnVnZ2VyQnJlYWtw
b2ludElEKSB7CisgICAgICAgICAgICAgICAgYXV0byByZWFzb24gPSBQcm90b2NvbDo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICAgICAg
LnNldEJyZWFrcG9pbnRJZChwcm90b2NvbEJyZWFrcG9pbnRJRCkKKyAgICAgICAgICAgICAgICAg
ICAgLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNz
b3JzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
YnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBjb25zdCBJ
bmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQpCkBAIC0yMzQsNyArMzkxLDcgQEAgUmVmUHRy
PEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRFeGNlcHRpb25QYXVz
ZVJlYXNvbihKU0M6OkpTVmEKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVD
b25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0
RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBpZiAoIWJyZWFrcG9pbnRzQWN0
aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BhdXNlT25Bc3NlcnRpb25GYWls
dXJlcykKQEAgLTI1MSw3ICs0MDgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZFNjaGVkdWxlQXN5bmNDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlm
ICghbV9hc3luY1N0YWNrVHJhY2VEZXB0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3Bv
aW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZ2xvYmFsT2JqZWN0LCBtX2FzeW5j
U3RhY2tUcmFjZURlcHRoKTsKQEAgLTMzMywxMDcgKzQ5MCwxNSBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZERpc3BhdGNoQXN5bmNDYWxsKCkKICAgICAgICAgbV9wZW5kaW5nQXN5
bmNDYWxscy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLXN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0
PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgUmVm
UHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgYm9vbCBpc1JlZ2V4LCBib29sIGF1dG9Db250aW51
ZSwgdW5zaWduZWQgaWdub3JlQ291bnQpCitzdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+IGJ1aWxkRGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcG9pbnQm
IGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiBicmVha3BvaW50
T2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5z
ZXRTdHJpbmcoInVybCJfcywgdXJsKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJbnRlZ2Vy
KCJsaW5lTnVtYmVyIl9zLCBsaW5lTnVtYmVyKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJ
bnRlZ2VyKCJjb2x1bW5OdW1iZXIiX3MsIGNvbHVtbk51bWJlcik7Ci0gICAgYnJlYWtwb2ludE9i
amVjdC0+c2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0Qm9vbGVhbigiaXNSZWdleCJfcywgaXNSZWdleCk7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOwotICAg
IGJyZWFrcG9pbnRPYmplY3QtPnNldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3Vu
dCk7Ci0KLSAgICBpZiAoYWN0aW9ucykKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0QXJy
YXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotCi0gICAgcmV0dXJuIGJyZWFrcG9pbnRPYmplY3Q7
Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQotewotICAgIGlmIChpc1JlZ2V4KSB7Ci0gICAgICAg
IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXgocGF0dGVybik7Ci0gICAgICAgIHJl
dHVybiByZWdleC5tYXRjaCh1cmwpICE9IC0xOwotICAgIH0KLSAgICByZXR1cm4gdXJsID09IHBh
dHRlcm47Ci19Ci0KLXN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUqIG91dHB1
dCkKLXsKLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9u
OjpUeXBlOjpMb2cpKSB7Ci0gICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9u
VHlwZUxvZzsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5n
ID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgewotICAg
ICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJ
bnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewotICAgICAgICAqb3V0cHV0ID0gU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OlByb2JlKSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGVQcm9iZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJv
bVByb3RvY29sKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTT046OkFycmF5PiYg
YWN0aW9ucywgQnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCkKLXsKLSAgICBpZiAoIWFjdGlvbnMp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdW5zaWduZWQgYWN0aW9uc0xlbmd0aCA9IGFj
dGlvbnMtPmxlbmd0aCgpOwotICAgIGlmICghYWN0aW9uc0xlbmd0aCkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICByZXN1bHQtPnJlc2VydmVDYXBhY2l0eShhY3Rpb25zTGVuZ3RoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWN0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gdmFsdWUgPSBhY3Rpb25zLT5nZXQoaSk7Ci0gICAgICAgIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKLSAgICAgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3Qo
b2JqZWN0KSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24tb2Jq
ZWN0IGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyB0eXBlU3RyaW5nOwotICAgICAgICBpZiAoIW9i
amVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCB0eXBlU3RyaW5nKSkgewotICAgICAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uVHlwZSB0eXBlOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25UeXBl
Rm9yU3RyaW5nKHR5cGVTdHJpbmcsICZ0eXBlKSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTm9uLXN0cmluZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTcGVjaWZ5aW5nIGFu
IGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRlIHByb2Jl
IHNhbXBsZXMKLSAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBsZSBiYWNr
ZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAgICAgICBp
bnQgaWRlbnRpZmllciA9IDA7Ci0gICAgICAgIG9iamVjdC0+Z2V0SW50ZWdlcigiaWQiX3MsIGlk
ZW50aWZpZXIpOwotCi0gICAgICAgIFN0cmluZyBkYXRhOwotICAgICAgICBvYmplY3QtPmdldFN0
cmluZygiZGF0YSJfcywgZGF0YSk7Ci0KLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoU2NyaXB0QnJl
YWtwb2ludEFjdGlvbih0eXBlLCBpZGVudGlmaWVyLCBkYXRhKSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKLXsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CisgICAgQVNTRVJUKGRlYnVn
Z2VyQnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCiAgICAgYXV0byBsb2NhdGlvbiA9IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRTY3JpcHRJZChT
dHJpbmc6Om51bWJlcihicmVha3BvaW50LnNvdXJjZUlEKSkKLSAgICAgICAgLnNldExpbmVOdW1i
ZXIoYnJlYWtwb2ludC5saW5lKQorICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIo
ZGVidWdnZXJCcmVha3BvaW50LnNvdXJjZUlEKCkpKQorICAgICAgICAuc2V0TGluZU51bWJlcihk
ZWJ1Z2dlckJyZWFrcG9pbnQubGluZU51bWJlcigpKQogICAgICAgICAucmVsZWFzZSgpOwotICAg
IGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoYnJlYWtwb2ludC5jb2x1bW4pOworICAgIGxvY2F0
aW9uLT5zZXRDb2x1bW5OdW1iZXIoZGVidWdnZXJCcmVha3BvaW50LmNvbHVtbk51bWJlcigpKTsK
IAogICAgIHJldHVybiBsb2NhdGlvbjsKIH0KQEAgLTQ1OSw2OCArNTI0LDQ4IEBAIHN0YXRpYyBi
b29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpP
YmplY3QmIGxvY2F0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCog
b3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpP
YmplY3QqIG9wdGlvbnNQYXlsb2FkLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCog
b3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6
OkxvY2F0aW9uPj4mIG91dExvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9w
dGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
IkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgdXJsID0gb3B0aW9uYWxVUkwgPyAqb3B0aW9uYWxV
UkwgOiAqb3B0aW9uYWxVUkxSZWdleDsKLSAgICBpbnQgY29sdW1uTnVtYmVyID0gb3B0aW9uYWxD
b2x1bW5OdW1iZXIgPyAqb3B0aW9uYWxDb2x1bW5OdW1iZXIgOiAwOwotICAgIGJvb2wgaXNSZWdl
eCA9IG9wdGlvbmFsVVJMUmVnZXg7CisgICAgYXV0byBwcm90b2NvbEJyZWFrcG9pbnQgPSBQcm90
b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25hbFVSTCA/ICpv
cHRpb25hbFVSTCA6ICpvcHRpb25hbFVSTFJlZ2V4LCAhIW9wdGlvbmFsVVJMUmVnZXgsIGxpbmVO
dW1iZXIsIG9wdGlvbmFsQ29sdW1uTnVtYmVyID8gKm9wdGlvbmFsQ29sdW1uTnVtYmVyIDogMCwg
b3B0aW9uc1BheWxvYWQpOworICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlz
UmVnZXggPyAiLyIgOiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi86IiA6ICI6IiwgbGluZU51bWJlciwg
JzonLCBjb2x1bW5OdW1iZXIpOwotICAgIGlmIChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5jb250
YWlucyhicmVha3BvaW50SWRlbnRpZmllcikpIHsKKyAgICBpZiAobV9wcm90b2NvbEJyZWFrcG9p
bnRGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jb250YWlucyhwcm90b2NvbEJyZWFrcG9pbnQtPmlk
KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGxvY2F0
aW9uIGFscmVhZHkgZXhpc3RzLiJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0
cmluZyBjb25kaXRpb24gPSBlbXB0eVN0cmluZygpOwotICAgIGJvb2wgYXV0b0NvbnRpbnVlID0g
ZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgPSAwOwotICAgIFJlZlB0cjxKU09OOjpB
cnJheT4gYWN0aW9uczsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgICBvcHRpb25zLT5nZXRT
dHJpbmcoImNvbmRpdGlvbiJfcywgY29uZGl0aW9uKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0Qm9v
bGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOwotICAgICAgICBvcHRpb25zLT5n
ZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0aW9ucyk7Ci0gICAgICAgIG9wdGlvbnMtPmdldEludGVn
ZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3VudCk7Ci0gICAgfQorICAgIG1fcHJvdG9jb2xC
cmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuc2V0KHByb3RvY29sQnJlYWtwb2ludC0+
aWQoKSwgKnByb3RvY29sQnJlYWtwb2ludCk7CiAKLSAgICBCcmVha3BvaW50QWN0aW9ucyBicmVh
a3BvaW50QWN0aW9uczsKLSAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVy
cm9yU3RyaW5nLCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQotICAgICAgICByZXR1cm47
CisgICAgb3V0TG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPjo6Y3JlYXRlKCk7CiAKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5zZXQoYnJl
YWtwb2ludElkZW50aWZpZXIsIGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tpZSh1cmwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhY3Rpb25zLCBpc1JlZ2V4LCBhdXRv
Q29udGludWUsIGlnbm9yZUNvdW50KSk7Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9zY3Jp
cHRzKSB7Ci0gICAgICAgIFNjcmlwdCYgc2NyaXB0ID0gZW50cnkudmFsdWU7CisgICAgZm9yIChh
dXRvJiBbc291cmNlSUQsIHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAgICAgU3RyaW5nIHNj
cmlwdFVSTEZvckJyZWFrcG9pbnRzID0gIXNjcmlwdC5zb3VyY2VVUkwuaXNFbXB0eSgpID8gc2Ny
aXB0LnNvdXJjZVVSTCA6IHNjcmlwdC51cmw7Ci0gICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRV
UkxGb3JCcmVha3BvaW50cywgdXJsLCBpc1JlZ2V4KSkKKyAgICAgICAgaWYgKCFwcm90b2NvbEJy
ZWFrcG9pbnQtPm1hdGNoZXNTY3JpcHRVUkwoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IGVu
dHJ5LmtleTsKLSAgICAgICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNv
dW50KTsKLSAgICAgICAgcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAg
ICAgICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKQorICAgICAgICBhdXRvIGRlYnVnZ2VyQnJl
YWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC0+Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50KG1f
bmV4dERlYnVnZ2VyQnJlYWtwb2ludElEKyssIHNvdXJjZUlEKTsKKworICAgICAgICBpZiAoIXJl
c29sdmVCcmVha3BvaW50KHNjcmlwdCwgZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgICAgIHNldEJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgZXhpc3RpbmcpOwotICAgICAgICBpZiAoZXhpc3RpbmcpCisgICAgICAg
IGlmICghc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50KGJyZWFr
cG9pbnQubGluZSwgYnJlYWtwb2ludC5jb2x1bW4sIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlv
bnMsIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwotICAgICAgICBkaWRTZXRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBzY3JpcHRCcmVha3BvaW50KTsKKyAg
ICAgICAgZGlkU2V0QnJlYWtwb2ludCgqcHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFr
cG9pbnQpOwogCi0gICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShidWlsZERlYnVnZ2VyTG9jYXRp
b24oYnJlYWtwb2ludCkpOworICAgICAgICBvdXRMb2NhdGlvbnMtPmFkZEl0ZW0oYnVpbGREZWJ1
Z2dlckxvY2F0aW9uKGRlYnVnZ2VyQnJlYWtwb2ludCkpOwogICAgIH0KIAotICAgICpvdXRCcmVh
a3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOworICAgICpvdXRCcmVha3Bv
aW50SWQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmlkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJv
dG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJy
ZWFrcG9pbnRJZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1
YWxMb2NhdGlvbikKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVk
IGxpbmVOdW1iZXI7CkBAIC01MjgsOTEgKzU3Myw3MSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
OgogICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywgbG9jYXRpb24sIHNvdXJjZUlE
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBib29sIGF1dG9Db250aW51ZSA9IGZh
bHNlOwotICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsKLSAgICBSZWZQdHI8SlNPTjo6QXJy
YXk+IGFjdGlvbnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgb3B0aW9ucy0+Z2V0U3Ry
aW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgICAgIG9wdGlvbnMtPmdldEJvb2xl
YW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0
QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBvcHRpb25zLT5nZXRJbnRlZ2Vy
KCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotICAgIH0KLQotICAgIEJyZWFrcG9pbnRB
Y3Rpb25zIGJyZWFrcG9pbnRBY3Rpb25zOwotICAgIGlmICghYnJlYWtwb2ludEFjdGlvbnNGcm9t
UHJvdG9jb2woZXJyb3JTdHJpbmcsIGFjdGlvbnMsICZicmVha3BvaW50QWN0aW9ucykpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGF1dG8gc2NyaXB0SXRlcmF0b3IgPSBtX3NjcmlwdHMuZmluZChz
b3VyY2VJRCk7CiAgICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHNjcmlwdCBmb3Igc2NyaXB0SWQgaW4gZ2l2
ZW4gbG9jYXRpb24iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHQmIHNj
cmlwdCA9IHNjcmlwdEl0ZXJhdG9yLT52YWx1ZTsKLSAgICBKU0M6OkJyZWFrcG9pbnQgYnJlYWtw
b2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGF1dG9D
b250aW51ZSwgaWdub3JlQ291bnQpOwotICAgIHJlc29sdmVCcmVha3BvaW50KHNjcmlwdCwgYnJl
YWtwb2ludCk7Ci0gICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKSB7CisgICAgYXV0byBwcm90
b2NvbEJyZWFrcG9pbnQgPSBQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKGVycm9yU3Ry
aW5nLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBvcHRpb25zUGF5bG9hZCk7
CisgICAgaWYgKCFwcm90b2NvbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IERvbid0IHNhdmUgYHByb3RvY29sQnJlYWtwb2ludGAgaW4gYG1fcHJvdG9jb2xCcmVha3BvaW50
Rm9yUHJvdG9jb2xCcmVha3BvaW50SURgIGJlY2F1c2UgaXQKKyAgICAvLyB3YXMgc2V0IHNwZWNp
ZmljYWxseSBmb3IgdGhlIGdpdmVuIGBzb3VyY2VJRGAsIHdoaWNoIGlzIHVuaXF1ZSwgbWVhbmlu
ZyB0aGF0IGl0IHdpbGwgbmV2ZXIKKyAgICAvLyBiZSB1c2VkIGluc2lkZSBgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2VgLgorCisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9p
bnQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHRE
ZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICBpZiAoIXJlc29sdmVCcmVh
a3BvaW50KHNjcmlwdEl0ZXJhdG9yLT52YWx1ZSwgZGVidWdnZXJCcmVha3BvaW50KSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50Il9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBleGlzdGluZzsKLSAgICBzZXRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICBpZiAoZXhpc3RpbmcpIHsKKyAgICBpZiAo
IXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cyJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmllciA9
IG1ha2VTdHJpbmcoc291cmNlSUQsICc6JywgYnJlYWtwb2ludC5saW5lLCAnOicsIGJyZWFrcG9p
bnQuY29sdW1uKTsKLSAgICBTY3JpcHRCcmVha3BvaW50IHNjcmlwdEJyZWFrcG9pbnQoYnJlYWtw
b2ludC5saW5lLCBicmVha3BvaW50LmNvbHVtbiwgY29uZGl0aW9uLCBicmVha3BvaW50QWN0aW9u
cywgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgZGlkU2V0QnJlYWtwb2ludChicmVh
a3BvaW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgZGlk
U2V0QnJlYWtwb2ludCgqcHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFrcG9pbnQpOwog
Ci0gICAgYWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24oYnJlYWtwb2ludCk7
Ci0gICAgKm91dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7Cisg
ICAgb3V0QWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24oZGVidWdnZXJCcmVh
a3BvaW50KTsKKyAgICAqb3V0QnJlYWtwb2ludElkID0gcHJvdG9jb2xCcmVha3BvaW50LT5pZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNldEJyZWFrcG9pbnQoY29u
c3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50KQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KFByb3RvY29sQnJlYWtw
b2ludCYgcHJvdG9jb2xCcmVha3BvaW50LCBKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtw
b2ludCkKIHsKLSAgICBKU0M6OkJyZWFrcG9pbnRJRCBpZCA9IGJyZWFrcG9pbnQuaWQ7Ci0gICAg
bV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50QWN0aW9ucyhpZCwgc2NyaXB0QnJlYWtw
b2ludCk7CisgICAgYXV0byYgZGVidWdnZXJCcmVha3BvaW50cyA9IG1fZGVidWdnZXJCcmVha3Bv
aW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELmVuc3VyZShwcm90b2NvbEJyZWFrcG9pbnQuaWQo
KSwgW10geworICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50c1ZlY3RvcigpOworICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRl
cmF0b3IgPSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMu
ZmluZChicmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2lu
dElEc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElEcy5lbmQoKSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3Ig
PSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+KCkpLml0ZXJhdG9y
OwotICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoaWQp
OwotCi0gICAgbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3Bv
aW50SWRlbnRpZmllci5zZXQoaWQsIGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKKyAgICBkZWJ1Z2dl
ckJyZWFrcG9pbnRzLmFwcGVuZChkZWJ1Z2dlckJyZWFrcG9pbnQpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFNjcmlwdCYgc2NyaXB0
LCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYgc2NyaXB0
LCBKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBpZiAoYnJlYWtw
b2ludC5saW5lIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5zdGFydExpbmUpIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuZW5kTGluZSkgPCBicmVha3BvaW50LmxpbmUpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIoKSA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuc3RhcnRMaW5lKSB8fCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyaXB0LmVuZExpbmUpIDwgZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZXNv
bHZlQnJlYWtwb2ludChicmVha3BvaW50LCBzY3JpcHQuc291cmNlUHJvdmlkZXIuZ2V0KCkpOwor
ICAgIHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyLnJlc29sdmVCcmVha3BvaW50KGRlYnVnZ2Vy
QnJlYWtwb2ludCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYgYnJlYWtw
b2ludCwgYm9vbCYgZXhpc3RpbmcpCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKKyAg
ICByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtw
b2ludCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkJiBwcm90b2Nv
bEJyZWFrcG9pbnRJRCkKIHsKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5yZW1vdmUoYnJl
YWtwb2ludElkZW50aWZpZXIpOworICAgIG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xC
cmVha3BvaW50SUQucmVtb3ZlKHByb3RvY29sQnJlYWtwb2ludElEKTsKIAotICAgIGZvciAoSlND
OjpCcmVha3BvaW50SUQgYnJlYWtwb2ludElEIDogbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVi
dWdTZXJ2ZXJCcmVha3BvaW50SURzLnRha2UoYnJlYWtwb2ludElkZW50aWZpZXIpKSB7Ci0gICAg
ICAgIG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElk
ZW50aWZpZXIucmVtb3ZlKGJyZWFrcG9pbnRJRCk7Ci0KLSAgICAgICAgY29uc3QgQnJlYWtwb2lu
dEFjdGlvbnMmIGJyZWFrcG9pbnRBY3Rpb25zID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5nZXRBY3Rp
b25zRm9yQnJlYWtwb2ludChicmVha3BvaW50SUQpOwotICAgICAgICBmb3IgKGF1dG8mIGFjdGlv
biA6IGJyZWFrcG9pbnRBY3Rpb25zKQotICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIucmVsZWFzZU9iamVjdEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rp
b24pKTsKKyAgICBmb3IgKGF1dG8mIGRlYnVnZ2VyQnJlYWtwb2ludCA6IG1fZGVidWdnZXJCcmVh
a3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELnRha2UocHJvdG9jb2xCcmVha3BvaW50SUQp
KSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgYWN0aW9uIDogZGVidWdnZXJCcmVha3BvaW50
LT5hY3Rpb25zKCkpCisgICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxlYXNl
T2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbi5pZCkpOwog
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZt
KCkpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnRBY3Rpb25z
KGJyZWFrcG9pbnRJRCk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50SUQpOworICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJy
ZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KTsKICAgICB9CiB9CiAKQEAgLTYzMyw5ICs2NTgs
OSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaWYgKCFhc3NlcnRQYXVzZWQoZXJyb3JT
dHJpbmcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25C
cmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCkgewotICAgICAgICBtX3NjcmlwdERl
YnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50
SUQpOwotICAgICAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCA9IEpTQzo6bm9C
cmVha3BvaW50SUQ7CisgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3Bv
aW50KSB7CisgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludCgqbV9j
b250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2NvbnRpbnVl
VG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgSlND
OjpTb3VyY2VJRCBzb3VyY2VJRDsKQEAgLTY1MiwyMiArNjc3LDIzIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBjb25kaXRpb247
Ci0gICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3Vu
dCA9IDA7Ci0gICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsK
LSAgICBTY3JpcHQmIHNjcmlwdCA9IHNjcmlwdEl0ZXJhdG9yLT52YWx1ZTsKLSAgICByZXNvbHZl
QnJlYWtwb2ludChzY3JpcHQsIGJyZWFrcG9pbnQpOwotICAgIGlmICghYnJlYWtwb2ludC5yZXNv
bHZlZCkgeworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50
Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CisgICAgaWYgKCFwcm90b2NvbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIERvbid0IHNhdmUgYHByb3RvY29sQnJlYWtwb2ludGAgaW4gYG1fcHJvdG9jb2xCcmVh
a3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SURgIGJlY2F1c2UgaXQKKyAgICAvLyBpcyBhIHRl
bXBvcmFyeSBicmVha3BvaW50IHRoYXQgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgYGxvY2F0
aW9uYCBpcyByZWFjaGVkLgorCisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnQgPSBwcm90b2Nv
bEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFr
cG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICBpZiAoIXJlc29sdmVCcmVha3BvaW50KHNjcmlw
dEl0ZXJhdG9yLT52YWx1ZSwgZGVidWdnZXJCcmVha3BvaW50KSkgewogICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVzdW1lZCgpOwogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVzb2x2
ZSBicmVha3BvaW50Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBleGlz
dGluZzsKLSAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICBpZiAo
ZXhpc3RpbmcpIHsKKyAgICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkg
ewogICAgICAgICAvLyBUaGVyZSBpcyBhbiBleGlzdGluZyBicmVha3BvaW50IGF0IHRoaXMgbG9j
YXRpb24uIEluc3RlYWQgb2YKICAgICAgICAgLy8gYWN0aW5nIGxpa2UgYSBzZXJpZXMgb2Ygc3Rl
cHMsIGp1c3QgcmVzdW1lIGFuZCB3ZSB3aWxsIGVpdGhlcgogICAgICAgICAvLyBoaXQgdGhpcyBu
ZXcgYnJlYWtwb2ludCBvciBub3QuCkBAIC02NzYsNyArNzAyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQgPSBicmVha3BvaW50LmlkOworICAgIG1fY29udGludWVUb0xvY2F0aW9u
RGVidWdnZXJCcmVha3BvaW50ID0gV1RGTW92ZShkZWJ1Z2dlckJyZWFrcG9pbnQpOwogCiAgICAg
Ly8gVHJlYXQgdGhpcyBhcyBhIHNlcmllcyBvZiBzdGVwcyB1bnRpbCByZWFjaGluZyB0aGUgbmV3
IGJyZWFrcG9pbnQuCiAgICAgLy8gU28gZG9uJ3QgaXNzdWUgYSByZXN1bWVkIGV2ZW50IHVubGVz
cyB3ZSBleGl0IHRoZSBWTSB3aXRob3V0IHBhdXNpbmcuCkBAIC03MTksNyArNzQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWls
cyhlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgZGV0YWlscyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0
dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVs
ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTcyOSwxMCArNzU1LDEwIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0CiAgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRhKHJlYXNvbiwgV1RGTW92ZShk
YXRhKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZl
ci52bSgpKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25OZXh0U3RhdGVtZW50
KHRydWUpOworICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9y
dHVuaXR5KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VP
bk5leHRTdGF0ZW1lbnQoKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVz
ZUF0TmV4dE9wcG9ydHVuaXR5KCkKIHsKICAgICBpZiAoIW1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkKQogICAgICAgICByZXR1cm47CkBAIC03NDAsMTMgKzc2NiwzMyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCkKICAgICBtX2phdmFT
Y3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNlOwogCiAgICAgY2xlYXJQYXVzZURldGFpbHMoKTsK
LSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGZhbHNlKTsK
KyAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsK
ICAgICBtX2VuYWJsZVBhdXNlV2hlbklkbGUgPSBmYWxzZTsKIH0KIAorYm9vbCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVh
a3BvaW50JiBicmVha3BvaW50LCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhKQoreworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOworCisgICAgaWYgKCFtX3Njcmlw
dERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChicmVha3BvaW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRh
KHJlYXNvbiwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChKU0M6
OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2UoRXJyb3JTdHJpbmcmKQog
ewotICAgIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQsIG51bGxwdHIpOworICAgIHNjaGVk
dWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cmVzdW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKQEAgLTc1Niw3ICs4MDIsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYW5jZWxQYXVzZU9uTmV4dFN0
YXRlbWVudCgpOworICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICBtX3Nj
cmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIG1fY29uZGl0aW9uVG9EaXNw
YXRjaFJlc3VtZWQgPSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5Db250aW51ZWQ7CiB9CkBA
IC04MjIsNyArODY4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRCZWNvbWVJ
ZGxlKCkKICAgICBtX3JlZ2lzdGVyZWRJZGxlQ2FsbGJhY2sgPSBmYWxzZTsKIAogICAgIGlmICht
X2NvbmRpdGlvblRvRGlzcGF0Y2hSZXN1bWVkID09IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6V2hl
bklkbGUpIHsKLSAgICAgICAgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICAgICAg
Y2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgICAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVz
dW1lZCgpOwogICAgIH0KQEAgLTk1OCw3ICsxMDA0LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW4KICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQud3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2Fs
bFN0YWNrLmdldCgpKTsKIH0KIAotU3RyaW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKK1N0cmluZyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6
U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgcmV0dXJuIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMOwog
fQpAQCAtOTc4LDcgKzEwMjQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bAogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJj
ZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQmIHNjcmlwdCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgSlND
OjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyID0g
U3RyaW5nOjpudW1iZXIoc291cmNlSUQpOwogICAgIGJvb2wgaGFzU291cmNlVVJMID0gIXNjcmlw
dC5zb3VyY2VVUkwuaXNFbXB0eSgpOwpAQCAtMTAwNCw0NCArMTA1MCwyMSBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQs
IGNvbnN0IFNjcmlwdAogICAgIGlmIChzY3JpcHRVUkxGb3JCcmVha3BvaW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2phdmFTY3JpcHRC
cmVha3BvaW50cykgewotICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBicmVha3BvaW50T2Jq
ZWN0ID0gZW50cnkudmFsdWU7Ci0KLSAgICAgICAgYm9vbCBpc1JlZ2V4OwotICAgICAgICBTdHJp
bmcgdXJsOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFuKCJpc1JlZ2V4Il9z
LCBpc1JlZ2V4KTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJ1cmwiX3Ms
IHVybCk7Ci0gICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRVUkxGb3JCcmVha3BvaW50cywgdXJs
LCBpc1JlZ2V4KSkKKyAgICBmb3IgKGF1dG8mIHByb3RvY29sQnJlYWtwb2ludCA6IG1fcHJvdG9j
b2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKCFwcm90b2NvbEJyZWFrcG9pbnQubWF0Y2hlc1NjcmlwdFVSTChzY3JpcHRVUkxGb3JCcmVh
a3BvaW50cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTY3JpcHRCcmVha3Bv
aW50IHNjcmlwdEJyZWFrcG9pbnQ7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVn
ZXIoImxpbmVOdW1iZXIiX3MsIHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7Ci0gICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoImNvbHVtbk51bWJlciJfcywgc2NyaXB0QnJl
YWtwb2ludC5jb2x1bW5OdW1iZXIpOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJp
bmcoImNvbmRpdGlvbiJfcywgc2NyaXB0QnJlYWtwb2ludC5jb25kaXRpb24pOwotICAgICAgICBi
cmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFuKCJhdXRvQ29udGludWUiX3MsIHNjcmlwdEJyZWFr
cG9pbnQuYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0SW50ZWdl
cigiaWdub3JlQ291bnQiX3MsIHNjcmlwdEJyZWFrcG9pbnQuaWdub3JlQ291bnQpOwotICAgICAg
ICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKLSAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBh
Y3Rpb25zOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRBcnJheSgiYWN0aW9ucyJfcywg
YWN0aW9ucyk7Ci0gICAgICAgIGlmICghYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woZXJy
b3JTdHJpbmcsIGFjdGlvbnMsICZzY3JpcHRCcmVha3BvaW50LmFjdGlvbnMpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9CisgICAgICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xCcmVha3BvaW50
LmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBz
b3VyY2VJRCk7CiAKLSAgICAgICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQs
IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciwgc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1i
ZXIsIHNjcmlwdEJyZWFrcG9pbnQuY29uZGl0aW9uLCBzY3JpcHRCcmVha3BvaW50LmF1dG9Db250
aW51ZSwgc2NyaXB0QnJlYWtwb2ludC5pZ25vcmVDb3VudCk7Ci0gICAgICAgIHJlc29sdmVCcmVh
a3BvaW50KHNjcmlwdCwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICghYnJlYWtwb2ludC5yZXNv
bHZlZCkKKyAgICAgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGRlYnVnZ2VyQnJl
YWtwb2ludCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBib29sIGV4aXN0aW5n
OwotICAgICAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICAgICAg
aWYgKGV4aXN0aW5nKQorICAgICAgICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3Bv
aW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmluZyBicmVha3BvaW50
SWRlbnRpZmllciA9IGVudHJ5LmtleTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2ludChicmVha3Bv
aW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGRp
ZFNldEJyZWFrcG9pbnQocHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFrcG9pbnQpOwog
Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoYnJlYWtw
b2ludElkZW50aWZpZXIsIGJ1aWxkRGVidWdnZXJMb2NhdGlvbihicmVha3BvaW50KSk7CisgICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQocHJvdG9jb2xCcmVh
a3BvaW50LmlkKCksIGJ1aWxkRGVidWdnZXJMb2NhdGlvbihkZWJ1Z2dlckJyZWFrcG9pbnQpKTsK
ICAgICB9CiB9CiAKQEAgLTEwNTIsMzYgKzEwNzUsMzggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsUnVuTWljcm90YXNrKCkKIHsK
LSAgICBpZiAoIW1fc2NyaXB0RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBp
ZiAoIWJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Bh
dXNlT25NaWNyb3Rhc2tzKQotICAgICAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok1pY3JvdGFzaywgbnVsbHB0cik7Cisg
ICAgICAgIHNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpNaWNyb3Rhc2spOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFJ1bk1pY3JvdGFzaygpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAgY2Fu
Y2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICAgICAgY2FuY2VsUGF1c2VBdE5leHRPcHBv
cnR1bml0eSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMs
IEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBKU0M6OkpTVmFsdWUgZXhj
ZXB0aW9uT3JDYXVnaHRWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fcGF1c2VkR2xvYmFsT2JqZWN0
KTsKICAgICBtX3BhdXNlZEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBtX2N1cnJl
bnRDYWxsU3RhY2sgPSB7IGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lcyB9OwogCi0gICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QpOworICAgIGF1dG8qIGRlYnVnZ2VyR2xvYmFs
T2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuc2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
bV9jdXJyZW50Q2FsbFN0YWNrID0geyBtX3BhdXNlZEdsb2JhbE9iamVjdC0+dm0oKSwgdG9KUyhk
ZWJ1Z2dlckdsb2JhbE9iamVjdCwgZGVidWdnZXJHbG9iYWxPYmplY3QsIEphdmFTY3JpcHRDYWxs
RnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSkucHRyKCkpIH07CisKKyAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKG1fcGF1c2VkR2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIElmIGEgaGlnaCBsZXZl
bCBwYXVzZSBwYXVzZSByZWFzb24gaXMgbm90IGFscmVhZHkgc2V0LCB0cnkgdG8gaW5mZXIgYSBy
ZWFzb24gZnJvbSB0aGUgZGVidWdnZXIuCiAgICAgaWYgKG1fcGF1c2VSZWFzb24gPT0gRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXIpIHsKICAgICAgICAgc3dpdGNoICht
X3NjcmlwdERlYnVnU2VydmVyLnJlYXNvbkZvclBhdXNlKCkpIHsKICAgICAgICAgY2FzZSBKU0M6
OkRlYnVnZ2VyOjpQYXVzZWRGb3JCcmVha3BvaW50OiB7CiAgICAgICAgICAgICBhdXRvIGRlYnVn
Z2VyQnJlYWtwb2ludElkID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzaW5nQnJlYWtwb2ludElE
KCk7Ci0gICAgICAgICAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SUQpCisgICAgICAgICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0
aW9uRGVidWdnZXJCcmVha3BvaW50IHx8IGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGlu
dWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50LT5pZCgpKQogICAgICAgICAgICAgICAgIHVw
ZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpCcmVha3BvaW50LCBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9p
bnRJZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExMTksNyArMTE0NCw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTCiAKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVj
dD4gZGF0YTsKICAgICAgICAgaWYgKGF1dG8gZGVidWdnZXJCcmVha3BvaW50SWQgPSBtX3Njcmlw
dERlYnVnU2VydmVyLnBhdXNpbmdCcmVha3BvaW50SUQoKSkgewotICAgICAgICAgICAgQVNTRVJU
KGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElE
KTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFr
cG9pbnQgfHwgZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1
Z2dlckJyZWFrcG9pbnQtPmlkKCkpOwogICAgICAgICAgICAgZGF0YSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXRTdHJpbmcoIm9yaWdpbmFsUmVhc29uIl9z
LCBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtwb2ludCkpOwogICAgICAgICAgICAg
ZGF0YS0+c2V0VmFsdWUoIm9yaWdpbmFsRGF0YSJfcywgYnVpbGRCcmVha3BvaW50UGF1c2VSZWFz
b24oZGVidWdnZXJCcmVha3BvaW50SWQpKTsKQEAgLTExNTEsOSArMTE3Niw5IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTCiAKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNl
OwogCi0gICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEICE9IEpTQzo6bm9C
cmVha3BvaW50SUQpIHsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3Bv
aW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKLSAgICAgICAgbV9jb250aW51
ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIGlmICht
X2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgeworICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVidWdn
ZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFr
cG9pbnQgPSBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8mIHN0b3B3YXRjaCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNo
KCk7CkBAIC0xMTYzLDE3ICsxMTg4LDE3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTCiAgICAg
fQogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3Vu
ZChpbnQgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBpZCkK
IHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cGxheUJyZWFrcG9pbnRBY3Rpb25Tb3VuZChi
cmVha3BvaW50QWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBs
YXlCcmVha3BvaW50QWN0aW9uU291bmQoaWQpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgYmF0
Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBzYW1wbGUpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklELCB1bnNp
Z25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBwYXlsb2FkID0g
aW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChzYW1wbGUsIG9iamVjdEdyb3VwRm9yQnJlYWtwb2lu
dEFjdGlvbihhY3Rpb24pLCB0cnVlKTsKKyAgICBhdXRvIHBheWxvYWQgPSBpbmplY3RlZFNjcmlw
dC53cmFwT2JqZWN0KHNhbXBsZSwgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlv
bklEKSwgdHJ1ZSk7CiAgICAgYXV0byByZXN1bHQgPSBQcm90b2NvbDo6RGVidWdnZXI6OlByb2Jl
U2FtcGxlOjpjcmVhdGUoKQotICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb24uaWRlbnRpZmllcikK
KyAgICAgICAgLnNldFByb2JlSWQoYWN0aW9uSUQpCiAgICAgICAgIC5zZXRCYXRjaElkKGJhdGNo
SWQpCiAgICAgICAgIC5zZXRTYW1wbGVJZChzYW1wbGVJZCkKICAgICAgICAgLnNldFRpbWVzdGFt
cChtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlv
blN0b3B3YXRjaCgpLmVsYXBzZWRUaW1lKCkuc2Vjb25kcygpKQpAQCAtMTIwOSwxMCArMTIzNCwx
NSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJlYQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCiB7CiAgICAgRXJyb3JTdHJpbmcgaWdu
b3JlZDsKLSAgICBmb3IgKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3Rvciht
X2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMua2V5cygpKSkK
LSAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChpZ25vcmVkLCBpZGVudGlmaWVyKTsKKyAgICBmb3Ig
KGF1dG8mIHByb3RvY29sQnJlYWtwb2ludElEIDogY29weVRvVmVjdG9yKG1fZGVidWdnZXJCcmVh
a3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELmtleXMoKSkpCisgICAgICAgIHJlbW92ZUJy
ZWFrcG9pbnQoaWdub3JlZCwgcHJvdG9jb2xCcmVha3BvaW50SUQpOwogCi0gICAgbV9qYXZhU2Ny
aXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3Rv
Y29sQnJlYWtwb2ludElELmNsZWFyKCk7CisKKyAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25E
ZWJ1Z2dlckJyZWFrcG9pbnQpIHsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVC
cmVha3BvaW50KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCk7CisgICAg
ICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKKyAg
ICB9CiAKICAgICBjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCk7CiB9CkBAIC0xMjIxLDcg
KzEyNTEsNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRGVidWdnZXJCcmVh
a3BvaW50U3RhdGUoKQogewogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVy
KG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIu
Y2xlYXJCcmVha3BvaW50QWN0aW9ucygpOwogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNs
ZWFyQnJlYWtwb2ludHMoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJsYWNr
Ym94KCk7CiAgICAgfQpAQCAtMTIyOSw5ICsxMjU4LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpCiAgICAgbV9wYXVzZWRHbG9i
YWxPYmplY3QgPSBudWxscHRyOwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IHsgfTsKICAgICBt
X3NjcmlwdHMuY2xlYXIoKTsKLSAgICBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJRHMuY2xlYXIoKTsKLSAgICBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZp
ZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmNsZWFyKCk7Ci0gICAgbV9jb250aW51
ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIG1fcHJv
dG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY2xlYXIoKTsKKyAgICBtX2Rl
YnVnZ2VyQnJlYWtwb2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jbGVhcigpOworICAgIG1f
bmV4dERlYnVnZ2VyQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRCArIDE7CisgICAg
bV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBudWxscHRyOwogICAgIGNs
ZWFyUGF1c2VEZXRhaWxzKCk7CiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxz
ZTsKICAgICBtX2hhc0V4Y2VwdGlvblZhbHVlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKaW5kZXggMzVhZjE2ZDI3ZDZmZjllNGRkNmJlNWUzMjdmZDhkNjgyMjhhN2MxNy4u
ZGIzMDBiZDlmNTMyMjEzZmU0YWM1ODcyZDM3ZWU4MTg0NTQ2OGNlMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaApAQCAtMjksMTYgKzI5LDE4IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAi
RGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIK
LSNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CkBAIC00NiwxNSArNDgsMTYgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiBjbGFzcyBBc3luY1N0YWNrVHJhY2U7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgRGVidWdnZXJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKK2Ns
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIs
IHB1YmxpYyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgfkluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSBvdmVycmlkZTsKIAorICAg
IHN0YXRpYyBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5
bG9hZChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpOwor
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGJhY2t0cmFjZU9iamVjdEdyb3VwOwogCiAg
ICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFzeW5jU3RhY2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5h
bDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3Rp
dmUpIGZpbmFsOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRp
b25zKSBmaW5hbDsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBK
U09OOjpPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CisgICAgdm9pZCBzZXRCcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJl
YWtwb2ludElkLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIG91dEFjdHVh
bExvY2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGNv
bnRpbnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY29u
dGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlv
bikgZmluYWw7CkBAIC04OSwxNSArOTIsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVP
bkNhbGxGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9v
bCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgY29uc3QgYm9vbCogZW11
bGF0ZVVzZXJHZXN0dXJlLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRS
ZXN1bHRJbmRleCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRCbGFja2JveFVSTChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHNob3VsZEJsYWNrYm94LCBjb25zdCBi
b29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKIAotICAgIC8v
IFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNl
SUQsIGNvbnN0IFNjcmlwdCYpIGZpbmFsOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVy
CisgICAgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBKU0M6OkRlYnVn
Z2VyOjpTY3JpcHQmKSBmaW5hbDsKICAgICB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9y
TGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgd2lsbFJ1
bk1pY3JvdGFzaygpIGZpbmFsOwogICAgIHZvaWQgZGlkUnVuTWljcm90YXNrKCkgZmluYWw7Ci0g
ICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlIGNhbGxG
cmFtZXMsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
JiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQ29udGludWUoKSBmaW5hbDsKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQg
YnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgYnJlYWtwb2ludEFj
dGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0
aW9uJiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBz
YW1wbGUpIGZpbmFsOworICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKEpTQzo6QnJlYWtw
b2ludEFjdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpCcmVha3BvaW50QWN0aW9uSUQsIHVuc2lnbmVkIGJhdGNo
SWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKSBmaW5hbDsKIAogICAg
IGJvb2wgaXNQYXVzZWQoKSBjb25zdDsKICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29u
c3Q7CkBAIC0xMTgsMTAgKzEyMSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGlzcGF0Y2hB
c3luY0NhbGwoQXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQpOwogICAgIHZvaWQgZGlkRGlz
cGF0Y2hBc3luY0NhbGwoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVu
dChEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIGRhdGEpOwotICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICB2
b2lkIHNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEgPSBudWxscHRyKTsKKyAg
ICB2b2lkIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICBib29sIHBhdXNlT25O
ZXh0U3RhdGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdFBhdXNlU2No
ZWR1bGVkOyB9CiAKKyAgICBib29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChK
U0M6OkJyZWFrcG9pbnQmLCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEgPSBudWxscHRyKTsKKyAgICBib29sIGNhbmNlbFBhdXNl
Rm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50Jik7CisKICAgICB2b2lkIGJyZWFr
UHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGRhdGEpOwogICAgIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAKQEAgLTE0MiwxMiArMTQ4LDEyIEBAIHByb3Rl
Y3RlZDoKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigp
IGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAgICAgdmlydHVhbCBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBp
bnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXImIHNj
cmlwdERlYnVnU2VydmVyKCkgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsgfQorICAgIEpT
Qzo6RGVidWdnZXImIHNjcmlwdERlYnVnU2VydmVyKCkgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsgfQogCiAgICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgPSAwOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc291cmNl
TWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYpOworICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmKTsKIAogICAgIHZv
aWQgZGlkQ2xlYXJHbG9iYWxPYmplY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJBc3lu
Y1N0YWNrVHJhY2VEYXRhKCkgeyB9CkBAIC0xNTcsOSArMTYzLDQ0IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJl
bnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0Jik7CiAKLSAgICB2b2lkIHJlc29sdmVC
cmVha3BvaW50KGNvbnN0IFNjcmlwdCYsIEpTQzo6QnJlYWtwb2ludCYpOwotICAgIHZvaWQgc2V0
QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmLCBib29sJiBleGlzdGluZyk7Ci0gICAgdm9pZCBk
aWRTZXRCcmVha3BvaW50KGNvbnN0IEpTQzo6QnJlYWtwb2ludCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKKyAgICBjbGFzcyBQcm90b2NvbEJyZWFrcG9pbnQgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IGZyb21QYXlsb2FkKEVycm9yU3RyaW5n
JiwgSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkID0gbnVsbHB0cik7CisgICAg
ICAgIHN0YXRpYyBPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IGZyb21QYXlsb2FkKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQ
YXlsb2FkID0gbnVsbHB0cik7CisKKyAgICAgICAgUHJvdG9jb2xCcmVha3BvaW50KCk7CisgICAg
ICAgIFByb3RvY29sQnJlYWtwb2ludChKU0M6OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uID0gbnVsbFN0
cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zID0geyB9LCBi
b29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKyAgICAg
ICAgUHJvdG9jb2xCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBj
b25kaXRpb24gPSBudWxsU3RyaW5nKCksIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYm
IGFjdGlvbnMgPSB7IH0sIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBpZ25vcmVD
b3VudCA9IDApOworCisgICAgICAgIFJlZjxKU0M6OkJyZWFrcG9pbnQ+IGNyZWF0ZURlYnVnZ2Vy
QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJRCwgSlNDOjpTb3VyY2VJRCkgY29uc3Q7CisKKyAg
ICAgICAgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCYg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisKKyAgICAgICAgYm9vbCBtYXRjaGVzU2NyaXB0
VVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCBtX2lkOworCisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgSlNDOjpTb3VyY2VJRCBtX3NvdXJjZUlEIHsgSlNDOjpub1NvdXJj
ZUlEIH07CisjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1fdXJsOworICAgICAgICBib29sIG1faXNS
ZWdleCB7IGZhbHNlIH07CisKKyAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3Ig
dG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2VkSW50IGFtYmlndWl0eQorICAgICAgICB1bnNp
Z25lZCBtX2xpbmVOdW1iZXIgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIG1fY29sdW1uTnVtYmVy
IHsgMCB9OworCisgICAgICAgIFN0cmluZyBtX2NvbmRpdGlvbjsKKyAgICAgICAgSlNDOjpCcmVh
a3BvaW50OjpBY3Rpb25zVmVjdG9yIG1fYWN0aW9uczsKKyAgICAgICAgYm9vbCBtX2F1dG9Db250
aW51ZSB7IGZhbHNlIH07CisgICAgICAgIHNpemVfdCBtX2lnbm9yZUNvdW50IHsgMCB9OworICAg
IH07CisKKyAgICBib29sIHJlc29sdmVCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNj
cmlwdCYsIEpTQzo6QnJlYWtwb2ludCYpOworICAgIGJvb2wgc2V0QnJlYWtwb2ludChKU0M6OkJy
ZWFrcG9pbnQmKTsKKyAgICB2b2lkIGRpZFNldEJyZWFrcG9pbnQoUHJvdG9jb2xCcmVha3BvaW50
JiwgSlNDOjpCcmVha3BvaW50Jik7CiAKICAgICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmlu
ZyYpOwogICAgIHZvaWQgY2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpOwpAQCAtMTc4LDE3
ICsyMTksMTUgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEJyZWFr
cG9pbnRQYXVzZVJlYXNvbihKU0M6OkJyZWFrcG9pbnRJRCk7CiAgICAgUmVmUHRyPEpTT046Ok9i
amVjdD4gYnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBj
b25zdCBJbmplY3RlZFNjcmlwdCYpOwogCi0gICAgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Q
cm90b2NvbChFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheT4mIGFjdGlvbnMsIEJyZWFr
cG9pbnRBY3Rpb25zKiByZXN1bHQpOwotCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQs
IGludD4gQXN5bmNDYWxsSWRlbnRpZmllcjsKICAgICBzdGF0aWMgQXN5bmNDYWxsSWRlbnRpZmll
ciBhc3luY0NhbGxJZGVudGlmaWVyKEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkKTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOwogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgSGFzaE1hcDxK
U0M6OlNvdXJjZUlELCBTY3JpcHQ+IG1fc2NyaXB0czsKKyAgICBIYXNoTWFwPEpTQzo6U291cmNl
SUQsIEpTQzo6RGVidWdnZXI6OlNjcmlwdD4gbV9zY3JpcHRzOwogCiAgICAgc3RydWN0IEJsYWNr
Ym94Q29uZmlnIHsKICAgICAgICAgU3RyaW5nIHVybDsKQEAgLTIwOSwxMCArMjQ4LDEyIEBAIHBy
aXZhdGU6CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9wYXVzZWRHbG9iYWxPYmplY3QgeyBu
dWxscHRyIH07CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2N1cnJlbnRDYWxsU3Rh
Y2s7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPj4gbV9i
cmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8SlNPTjo6T2JqZWN0Pj4gbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7
Ci0gICAgSGFzaE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgU3RyaW5nPiBtX2RlYnVnZ2VyQnJlYWtw
b2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyOwotICAgIEpTQzo6
QnJlYWtwb2ludElEIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEIHsgSlNDOjpub0Jy
ZWFrcG9pbnRJRCB9OworICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRJZCwgUHJvdG9jb2xCcmVha3BvaW50PiBtX3Byb3RvY29sQnJlYWtwb2ludEZv
clByb3RvY29sQnJlYWtwb2ludElEOworICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkJyZWFrcG9pbnRJZCwgSlNDOjpCcmVha3BvaW50c1ZlY3Rvcj4gbV9kZWJ1Z2dl
ckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQ7CisgICAgSlNDOjpCcmVha3BvaW50
SUQgbV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQgeyBKU0M6Om5vQnJlYWtwb2ludElEICsgMSB9
OworCisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1
Z2dlckJyZWFrcG9pbnQ7CisKICAgICBTaG91bGREaXNwYXRjaFJlc3VtZWQgbV9jb25kaXRpb25U
b0Rpc3BhdGNoUmVzdW1lZCB7IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6Tm8gfTsKIAogICAgIERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gbV9wYXVzZVJlYXNvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDJmY2IyZTdiODc1ZmQ0NzljNGRmNjBjNGUzY2Nh
YzQ1NDNjZmQyYjkuLjNlYTBkYTMzZDgwZDUxYzc5MTZjNjUwNjg3OGFhZTJiMDFiMDA2NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKICNp
bmNsdWRlICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgor
I2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgotI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2lu
Y2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgpAQCAt
NzMsNyArNzMsNyBAQCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0b3JSdW50aW1lQWdl
bnQoKQogewogfQogCi1zdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25z
U3RhdGUgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0
RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG5l
d1N0YXRlKQorc3RhdGljIEpTQzo6RGVidWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgc2V0
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyJiBzY3JpcHREZWJ1Z1NlcnZlciwg
SlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBuZXdTdGF0ZSkKIHsKICAgICBh
dXRvIHByZXNlbnRTdGF0ZSA9IHNjcmlwdERlYnVnU2VydmVyLnBhdXNlT25FeGNlcHRpb25zU3Rh
dGUoKTsKICAgICBpZiAocHJlc2VudFN0YXRlICE9IG5ld1N0YXRlKQpAQCAtMTIzLDkgKzEyMyw5
IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNl
T25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gU2NyaXB0
RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKKyAgICBhdXRvIHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9u
czsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkp
Ci0gICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9ucyk7CisgICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpE
ZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAK
QEAgLTE2NSw5ICsxNjUsOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0
aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGlmIChvcHRp
b25hbEFyZ3VtZW50cykKICAgICAgICAgYXJndW1lbnRzID0gb3B0aW9uYWxBcmd1bWVudHMtPnRv
SlNPTlN0cmluZygpOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25z
U3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gU2NyaXB0RGVidWdTZXJ2ZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKICAgICBpZiAo
YXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCi0gICAgICAgIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
bV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0
aW9ucyk7CisgICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNl
T25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9u
dFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSkpCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3Njcmlw
dERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsK
KyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNl
T25FeGNlcHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQu
Z2V0UHJldmlldyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHByZXZpZXcpOwpAQCAtMjE2LDcgKzIx
Niw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0
RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwor
ICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VP
bkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5n
ZXRQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgYXNCb29sKG93blByb3BlcnRpZXMp
LCBzdGFydCwgY291bnQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBwcm9wZXJ0aWVzKTsKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFi
bGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUg
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShtX3NjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zKTsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6
RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0
ZWRTY3JpcHQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwg
c3RhcnQsIGNvdW50LCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgcHJvcGVydGllcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGUzY2I2MjQ1NmMyY2ZjZjdmMzhjNTg3NWUwZDZl
ODNjOWU0NDMwZmYuLjlkNzY1ZDk2MDdhYTlmNjg2MmIwNzZhYjM5YzZjYmQyODU0ZDZkNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgRGVidWdnZXI7CiBj
bGFzcyBWTTsKIH0KIApAQCAtNDQsNyArNDUsNiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFz
cyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgUnVudGltZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDb250cm9sRmxvd1Byb2ZpbGVy
RW5hYmxlZFN0YXRlKGJvb2wpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOwogICAgIEpTQzo6
Vk0mIG1fdm07CiAgICAgYm9vbCBtX2VuYWJsZWQge2ZhbHNlfTsKICAgICBib29sIG1faXNUeXBl
UHJvZmlsaW5nRW5hYmxlZCB7ZmFsc2V9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA5N2NjOTFmZjVlMjJjOTk4MTM5M2I0ZGZjNTQ4OWMyMTgzODgw
ZmE5Li5jMTJlYzY5YTAxNWY1YWRiNjE3Zjg3YWQxMjlmN2Q5NWZlZWViMmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudC5oIgogCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAj
aW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1Nl
cnZlci5oIgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCmluZGV4IDNiODhkZWFi
Nzc1M2VhNWRhMWFhNzNmYzAyYjJhM2UyNzFjM2UwMzQuLjZmNzkyNzhkNTMzMTcxZTFmZGQwYWVm
ZTlkZDI5YjMzYmZkMWZlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5oCkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQoSlNBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqKTsKICAgICB+SlNH
bG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xp
c3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgor
ICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9ET00uanNvbgppbmRleCBmM2E3NzUzNzAyOTk1ZWJjNTQzMTJlYWQwYjBjMDI4YTU4YmIx
OWI5Li45OThiYzRhZmU2OGVjNzA1MDJhMDA5YjdiZjVlZDFkZTk3NThhYjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAgLTMx
Niw3ICszMTYsOCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldCBhIGJyZWFrcG9p
bnQgb24gdGhlIGdpdmVuIGV2ZW50IGxpc3RlbmVyLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZXZlbnRMaXN0ZW5lcklkIiwgIiRyZWYiOiAiRXZlbnRMaXN0ZW5lcklk
IiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJldmVudExpc3RlbmVySWQiLCAiJHJlZiI6
ICJFdmVudExpc3RlbmVySWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25z
IiwgIiRyZWYiOiAiRGVidWdnZXIuQnJlYWtwb2ludE9wdGlvbnMiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBseSB0byB0aGlzIGJyZWFrcG9pbnQgdG8g
bW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9ET01EZWJ1Z2dlci5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9ET01EZWJ1Z2dlci5qc29uCmluZGV4IDVhMTg5NzYyODI0NDdmN2RlZWIwNmZkZmRlMzI4
OGUzYmEzNjllODEuLmVlZmE5MzNmOWY1ZDJjMWY0ZmM0ZGU3NTY1NzU3NDk0YmJlYjkzZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVi
dWdnZXIuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0RPTURlYnVnZ2VyLmpzb24KQEAgLTM5LDcgKzM5LDggQEAKICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJTZXRzIGJyZWFrcG9pbnQgb24gcGFydGljdWxhciBldmVudCBvZiBnaXZlbiB0eXBl
LiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJyZWFrcG9pbnRUeXBlIiwgIiRyZWYiOiAiRXZlbnRCcmVha3BvaW50VHlwZSIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImV2ZW50TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMg
ZXZlbnQgdG8gc3RvcCBvbi4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV2ZW50TmFt
ZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJU
aGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMgZXZlbnQgdG8gc3RvcCBvbi4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAiRGVidWdnZXIuQnJlYWtwb2ludE9w
dGlvbnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBs
eSB0byB0aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNaWNyb3Rhc2suY3BwCmluZGV4IDAzZWU2MGIzNjU5NmFiODI4NWRmYThiNDM3MWQ5
OWZkNDRlOTk2MTQuLjQ0Yjg5NDU2NzMwYmVlMzYzZWRjMTVlMTgyMmMzOTgwZTFiYmFiNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKQEAgLTkx
LDYgKzkxLDkgQEAgdm9pZCBKU01pY3JvdGFzazo6cnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKICAgICBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246
Ok1pY3JvdGFzaywgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
aGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKworICAgIGlm
IChVTkxJS0VMWShnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkpKQorICAgICAgICBnbG9iYWxP
YmplY3QtPmRlYnVnZ2VyKCktPmRpZFJ1bk1pY3JvdGFzaygpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDFkYWMzNTQyNmU5NmQyZmZl
ZGI5YTE4ZTg0MTUzMDljMDM5MDg3NTguLjM1NGJlZTk5ODkxYjQ4YWRlN2RlZGUyY2RhZDk5MWJi
OWFkZmY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMzMwLDcgKzMzMCw3
IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmlubmVySW52b2tlRXZlbnRMaXN0ZW5lcnMoRXZlbnQmIGV2
ZW50LCBFdmVudExpc3RlbmVyVmVjdG9yIGxpCiAKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSGFuZGxlRXZlbnQoY29udGV4dCwgZXZlbnQsICpyZWdpc3RlcmVkTGlzdGVu
ZXIpOwogICAgICAgICByZWdpc3RlcmVkTGlzdGVuZXItPmNhbGxiYWNrKCkuaGFuZGxlRXZlbnQo
Y29udGV4dCwgZXZlbnQpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhh
bmRsZUV2ZW50KGNvbnRleHQpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEhhbmRsZUV2ZW50KGNvbnRleHQsIGV2ZW50LCAqcmVnaXN0ZXJlZExpc3RlbmVyKTsKIAogICAg
ICAgICBpZiAocmVnaXN0ZXJlZExpc3RlbmVyLT5pc1Bhc3NpdmUoKSkKICAgICAgICAgICAgIGV2
ZW50LnNldEluUGFzc2l2ZUxpc3RlbmVyKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMTkxY2Y4ZDBl
MjU2MmM0MWQwM2M1ODMwYzhlZTA2YjIzOWE4ZmU4OS4uMGEwODE4MDc5OGZjOWRkY2M1ZGE3NWNm
ZTAzNWY1NmQ3NmUxMDg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQxOCwxMyArNDE4LDEzIEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lCiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxIYW5kbGVF
dmVudChldmVudCwgbGlzdGVuZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50JiBldmVudCwg
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQogewogICAgIGlmIChhdXRv
KiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2Fs
bCgpOwogCiAgICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRET01EZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURlYnVnZ2VyQWdlbnQt
PmRpZEhhbmRsZUV2ZW50KCk7CisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEhhbmRsZUV2
ZW50KGV2ZW50LCBsaXN0ZW5lcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQpCkBAIC00NzMsMTAgKzQ3MywxMiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudAogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKHRp
bWVySWQsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBpbnQgLyogdGltZXJJZCAqLywgYm9vbCBvbmVTaG90KQogewogICAgIGlmIChhdXRv
KiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2Fs
bCgpOworICAgIGlmIChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5k
aWRGaXJlVGltZXIob25lU2hvdCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRGaXJlVGltZXIoKTsKIH0KQEAgLTcxNiw2ICs3MTgsOSBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudAogICAgICAgICBpZiAoYXV0byogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgpKQogICAgICAgICAgICAg
cGFnZURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogCisgICAgICAgIGlmIChh
dXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRE9NRGVi
dWdnZXJBZ2VudCgpKQorICAgICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+bWFpbkZyYW1lTmF2
aWdhdGVkKCk7CisKICAgICAgICAgaWYgKGF1dG8qIGVuYWJsZWRQYWdlSGVhcEFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUhlYXBBZ2VudCgpKQogICAgICAgICAgICAgZW5h
YmxlZFBhZ2VIZWFwQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogICAgIH0KQEAgLTEyNjIs
NiArMTI2Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0
aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluCiB7CiAgICAgaWYgKGF1dG8qIHdl
YkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFn
ZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7
CisgICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgcGFnZURPTURlYnVnZ2Vy
QWdlbnQtPmRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogICAgIGlmIChhdXRvKiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
NzMwZjMzMjUxZGQwMjc0NDA0YWRlZjhmNmYzZmI2ZTA5Y2Q2ZmUyOS4uNWFkNzllMGQxNmE5NTMy
YjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTcxLDE0ICsxNzEsMTQgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50JiwgY29u
c3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KERvY3VtZW50Jiwg
Y29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsK
LSAgICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7
CisgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAgICBzdGF0aWMgdm9p
ZCB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQmLCBET01XaW5k
b3cmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBj
b25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2b2lkIGV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNo
KGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1l
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSYpOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGludCB0aW1lcklkLCBi
b29sIG9uZVNob3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CisgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKICAgICBzdGF0aWMgdm9pZCBk
aWRJbnZhbGlkYXRlTGF5b3V0KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExheW91dChG
cmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChGcmFtZSYsIFJlbmRlck9iamVjdCYp
OwpAQCAtMzk0LDcgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFdmVudExp
c3RlbmVyRGlzYWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7
CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudCYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRs
ZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciYpOwotICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmKTsKQEAgLTQwMiw3ICs0MDIsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEZpcmVUaW1lcklt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKICAgICBzdGF0
aWMgdm9pZCBkaWRJbnZhbGlkYXRlTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJh
bWUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBSZW5kZXJPYmplY3QmKTsKQEAgLTg5MiwxMSArODkyLDExIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvCiAgICAgICAgIHJldHVybiB3aWxsSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBldmVudCwgbGlzdGVuZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV2ZW50JiBldmVudCwgY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4
dCkpCi0gICAgICAgIHJldHVybiBkaWRIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMpOworICAgICAgICByZXR1cm4gZGlkSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBldmVudCwgbGlzdGVuZXIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBF
dmVudCYgZXZlbnQsIERPTVdpbmRvdyYgd2luZG93KQpAQCAtOTQ2LDExICs5NDYsMTEgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnQKICAgICAgICAgd2lsbEZpcmVUaW1lckltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIHRpbWVySWQsIG9uZVNob3QsIGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgaW50IHRpbWVySWQs
IGJvb2wgb25lU2hvdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRGaXJlVGltZXJJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzKTsKKyAgICAgICAgZGlkRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZXJJZCwgb25lU2hvdCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDE3
YTY2ZjEwYzFhMjI2MWFmMWQ4ZDFlN2VhYmEyZTU4YTE5ZTI0ZGEuLjA1ZmVmYmNiZWM2ZDU2MjQ2
ZTcyOGY2MTkwNTdmODc2NjkxNjY3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01NCwxOCArNTQsMjIgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6UGFnZVNjcmlwdERlYnVnU2VydmVyKFBhZ2UmIHBhZ2UpCi0gICAgOiBTY3Jp
cHREZWJ1Z1NlcnZlcihXZWJDb3JlOjpjb21tb25WTSgpKQorICAgIDogRGVidWdnZXIoV2ViQ29y
ZTo6Y29tbW9uVk0oKSkKICAgICAsIG1fcGFnZShwYWdlKQogewogfQogCiB2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIoKQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0
dGFjaERlYnVnZ2VyKCk7CisKICAgICBtX3BhZ2Uuc2V0RGVidWdnZXIodGhpcyk7CiB9CiAKIHZv
aWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0
cm95ZWQpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ry
b3llZCk7CisKICAgICBtX3BhZ2Uuc2V0RGVidWdnZXIobnVsbHB0cik7CiAgICAgaWYgKCFpc0Jl
aW5nRGVzdHJveWVkKQogICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwpAQCAtNzcs
MTggKzgxLDI0IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygpCiAgICAgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CiAK
LXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZShKU0dsb2JhbE9iamVjdCopCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpkaWRQYXVzZShnbG9iYWxPYmplY3QpOwor
CiAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChtX3BhZ2UuZ3JvdXAoKSwgdHJ1ZSk7CiB9CiAKLXZv
aWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShKU0dsb2JhbE9iamVjdCopCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpkaWRDb250aW51ZShnbG9iYWxPYmpl
Y3QpOworCiAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChtX3BhZ2UuZ3JvdXAoKSwgZmFsc2UpOwog
fQogCiB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQo
KQogeworICAgIEpTQzo6RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE9uIGlPUywgcnVubmluZyBhbiBFdmVudExv
b3AgY2F1c2VzIHVzIHRvIHJ1biBhIG5lc3RlZCBXZWJSdW5Mb29wLgogICAgIC8vIFNpbmNlIHRo
ZSBXZWJUaHJlYWQgaXMgYXV0b3JlbGVhc2VkIGF0IHRoZSBlbmQgb2YgcnVuIGxvb3AgaXRlcmF0
aW9ucwpAQCAtMTE1LDcgKzEyNSw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5F
dmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKCkKIAogICAgIG1fcGFnZS5pbmNyZW1lbnROZXN0
ZWRSdW5Mb29wQ291bnQoKTsKIAotICAgIHdoaWxlICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKSB7CisgICAgd2hpbGUgKCFkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpIHsK
ICAgICAgICAgaWYgKCFwbGF0Zm9ybVNob3VsZENvbnRpbnVlUnVubmluZ0V2ZW50TG9vcFdoaWxl
UGF1c2VkKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjUsMTEgKzEzNSwxMyBA
QCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRl
cm5hbCgpCiAKIGJvb2wgUGFnZVNjcmlwdERlYnVnU2VydmVyOjppc0NvbnRlbnRTY3JpcHQoSlNH
bG9iYWxPYmplY3QqIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiAmY3VycmVudFdvcmxkKCpz
dGF0ZSkgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpOworICAgIHJldHVybiAmY3VycmVudFdv
cmxkKCpzdGF0ZSkgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpIHx8IEpTQzo6RGVidWdnZXI6
OmlzQ29udGVudFNjcmlwdChzdGF0ZSk7CiB9CiAKIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpyZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIHN0YXRlLCBKU0M6OkV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSBjb25zdAogeworICAgIEpTQzo6RGVidWdnZXI6OnJlcG9ydEV4Y2VwdGlvbihz
dGF0ZSwgZXhjZXB0aW9uKTsKKwogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwg
ZXhjZXB0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oCmluZGV4IDIyZDhjZjc4OWQ5NWI4ZDc4ZmVhZTNhNDlhMGEwZTVkYWMz
OWZlMDYuLmZmMzgxOWRiNDg1ZDQzMDc0NmRjNmZjOWRhYTU1Y2RhNmFhNzJjZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHREZWJ1Z1NlcnZlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlR3JvdXA7CiAKLWNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyIHsKK2NsYXNz
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDQsMTQgKzQ0LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0YWNoRGVi
dWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlkUGF1
c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ29udGludWUo
SlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgcnVuRXZlbnRMb29wV2hp
bGVQYXVzZWQoKSBvdmVycmlkZTsKLSAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xv
YmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ly8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKKyAgICB2
b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgZmluYWw7CisgICAgdm9p
ZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgZmluYWw7CisgICAgdm9pZCBkaWRDb250
aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgZmluYWw7CisgICAgdm9pZCBydW5FdmVudExvb3BX
aGlsZVBhdXNlZCgpIGZpbmFsOworICAgIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9i
YWxPYmplY3QqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
cnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IGNjNDViMWY0YzJi
MTEyNmRhYTFlMjBkZTE2Yjg3YTJjNjZiNzkyY2MuLmVlZGVkOGY0ODI5Y2U4NDMwNjQzMzIwNzdk
ODMwMmMzMWRkYTliM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCiAjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRCcmVha3BvaW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0
YWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
PgogCkBAIC03MywxMCArNzIsMTAgQEAgUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29uc3QgU3RyaW5nJgogICAgIHJldHVy
biBkYXRhOwogfQogCi1SZWY8SlNPTjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVByb2JlU2FtcGxlRGF0YShjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24s
IHVuc2lnbmVkIHNhbXBsZUlkKQorUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgYWN0aW9u
SUQsIHVuc2lnbmVkIHNhbXBsZUlkKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGRhdGEgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldEludGVnZXIoInByb2JlSWQiX3Ms
IGFjdGlvbi5pZGVudGlmaWVyKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJwcm9iZUlkIl9zLCBh
Y3Rpb25JRCk7CiAgICAgZGF0YS0+c2V0SW50ZWdlcigic2FtcGxlSWQiX3MsIHNhbXBsZUlkKTsK
ICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuaAppbmRleCA1MzA3NTU4NzU5YTM4Mzg1YmI4Yjg1ZTliOWNkZDE3
MGIxM2Q4MjgxLi40MWI2ZGQ2NDUwOWQwNGY3NjFmYWMzOTY0Zjc4N2QzMjg5NGUxMTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBA
IC0zMSwxNSArMzEsMTIgQEAKICAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGVidWdnZXJQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3Igewotc3Ry
dWN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb247Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRXZlbnQ7CkBAIC01MSw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8
SlNPTjo6T2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0
TmFtZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4pOwogICAgIHN0YXRpYyBSZWY8
SlNPTjo6T2JqZWN0PiBjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7Ci0gICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZVByb2JlU2FtcGxlRGF0YShj
b25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBzYW1wbGVJ
ZCk7CisgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZVByb2JlU2FtcGxlRGF0YShK
U0M6OkJyZWFrcG9pbnRBY3Rpb25JRCwgdW5zaWduZWQgc2FtcGxlSWQpOwogICAgIHN0YXRpYyBS
ZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBFdmVudCYpOwog
ICAgIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGludCB0
aW1lcklkKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxs
RGF0YShpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKaW5kZXggNGE2OTE5Njk3Y2JjMmZlOGQ5MzkxMmM1MTdkZWVmNWEyNDg4OWRlNi4uMzYxZGIx
NmM0ZDRhNGUxOTM5NDQ5NzgwOWU0YmYxYzNiYzliNGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00NCwxOCAr
NDQsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtl
ckdsb2JhbFNjb3BlJiBjb250ZXh0KQotICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC5z
Y3JpcHQoKS0+dm0oKSkKKyAgICA6IERlYnVnZ2VyKGNvbnRleHQuc2NyaXB0KCktPnZtKCkpCiAg
ICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpCiB7CiB9CiAKIHZvaWQgV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjph
dHRhY2hEZWJ1Z2dlcigpOworCiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+YXR0
YWNoRGVidWdnZXIodGhpcyk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKKyAgICBKU0M6OkRlYnVnZ2Vy
OjpkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKKwogICAgIGlmIChtX3dvcmtlckds
b2JhbFNjb3BlLnNjcmlwdCgpKQogICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgp
LT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCkBAIC03
MCwxNiArNzQsMjAgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoKQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExv
b3BXaGlsZVBhdXNlZCgpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKTsKKwogICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7
CiAKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7CiAgICAgICAg
IHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVuTG9vcCgpLnJ1bkluRGVi
dWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMp
OworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25l
UHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVn
U2VydmVyOjpyZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgSlNDOjpF
eGNlcHRpb24qIGV4Y2VwdGlvbikgY29uc3QKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpyZXBvcnRF
eGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKwogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGVhNzFmMWRlODhkMjYwM2U1NjZiMGQw
OTQyYjMyZWFmYTY0YmJhOTAuLmM4YmEzMmU0MzdjZDhmZjNjZWEzMmJmN2M4NDA2N2M5OWQ1OGNi
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC0zMSwzMCArMzEsMjcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHREZWJ1Z1NlcnZlci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0RlYnVnZ2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7CiAKLWNsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVi
bGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgV29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CiAgICAgfldvcmtlclNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGUgPSBkZWZh
dWx0OwogCi0gICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGRp
ZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHJ1
bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3Jp
cHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhj
ZXB0aW9uKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQg
YXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNC
ZWluZ0Rlc3Ryb3llZCkgZmluYWw7CisgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygp
IGZpbmFsOworICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKKyAgICB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24q
KSBjb25zdCBmaW5hbDsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNj
b3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzRkYTk1ODBhZTRhODZmNDliYzg5YjU2NzhlYTYzYzE5
OThjZjNkNi4uODM5YTU4YjU0ODg1NGRlNzU3NzBkMjYzM2Q4ZDU5YWY1OWYyNDExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTExMiw2ICsxMTIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtOTMxLDEzICs5MzIs
MTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KICAgICBhdXRvIGFkZExpc3RlbmVyID0gWyZd
IChSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IEV2ZW50TGlzdGVuZXJJ
bmZvJiBpbmZvKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyID0gMDsKICAgICAgICAgYm9vbCBk
aXNhYmxlZCA9IGZhbHNlOwotICAgICAgICBib29sIGhhc0JyZWFrcG9pbnQgPSBmYWxzZTsKKyAg
ICAgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYnJlYWtwb2ludDsKIAogICAgICAgICBmb3Ig
KGF1dG8mIGluc3BlY3RvckV2ZW50TGlzdGVuZXIgOiBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLnZh
bHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5tYXRjaGVz
KCppbmZvLmV2ZW50VGFyZ2V0LCBpbmZvLmV2ZW50VHlwZSwgbGlzdGVuZXIuY2FsbGJhY2soKSwg
bGlzdGVuZXIudXNlQ2FwdHVyZSgpKSkgewogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBp
bnNwZWN0b3JFdmVudExpc3RlbmVyLmlkZW50aWZpZXI7CiAgICAgICAgICAgICAgICAgZGlzYWJs
ZWQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmRpc2FibGVkOwotICAgICAgICAgICAgICAgIGhh
c0JyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQ7CisgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuYnJlYWtwb2lu
dDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
OTQ3LDEyICs5NDgsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5l
cnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KIAogICAgICAgICAgICAg
aWRlbnRpZmllciA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaWRlbnRpZmllcjsKICAgICAgICAg
ICAgIGRpc2FibGVkID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5kaXNhYmxlZDsKLSAgICAgICAg
ICAgIGhhc0JyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQ7
CisgICAgICAgICAgICBicmVha3BvaW50ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5icmVha3Bv
aW50OwogCiAgICAgICAgICAgICBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLmFkZChpZGVudGlmaWVy
LCBpbnNwZWN0b3JFdmVudExpc3RlbmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGxpc3RlbmVy
c0FycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaWRl
bnRpZmllciwgKmluZm8uZXZlbnRUYXJnZXQsIGluZm8uZXZlbnRUeXBlLCBkaXNhYmxlZCwgaGFz
QnJlYWtwb2ludCkpOworICAgICAgICBsaXN0ZW5lcnNBcnJheS0+YWRkSXRlbShidWlsZE9iamVj
dEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlkZW50aWZpZXIsICppbmZvLmV2ZW50VGFyZ2V0
LCBpbmZvLmV2ZW50VHlwZSwgZGlzYWJsZWQsIGJyZWFrcG9pbnQpKTsKICAgICB9OwogCiAgICAg
Ly8gR2V0IENhcHR1cmluZyBMaXN0ZW5lcnMgKGluIHRoaXMgb3JkZXIpCkBAIC05ODgsNyArOTg5
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGUKICAgICBpdC0+dmFsdWUuZGlzYWJsZWQgPSBk
aXNhYmxlZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklk
KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklkLCBjb25zdCBKU09O
OjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQogewogICAgIGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVu
ZXJFbnRyaWVzLmZpbmQoZXZlbnRMaXN0ZW5lcklkKTsKICAgICBpZiAoaXQgPT0gbV9ldmVudExp
c3RlbmVyRW50cmllcy5lbmQoKSkgewpAQCAtOTk2LDcgKzk5NywxMiBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpdC0+dmFsdWUuaGFzQnJl
YWtwb2ludCA9IHRydWU7CisgICAgaWYgKGl0LT52YWx1ZS5icmVha3BvaW50KSB7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGV2ZW50TGlzdGVuZXJJZCBhbHJl
YWR5IGV4aXN0cyJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGl0LT52YWx1ZS5i
cmVha3BvaW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJCcmVha3BvaW50RnJv
bVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklkKQpAQCAtMTAwNyw3ICsxMDEzLDEwIEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
dC0+dmFsdWUuaGFzQnJlYWtwb2ludCA9IGZhbHNlOworICAgIGlmICghaXQtPnZhbHVlLmJyZWFr
cG9pbnQpCisgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGV2ZW50
TGlzdGVuZXJJZCBtaXNzaW5nIl9zOworCisgICAgaXQtPnZhbHVlLmJyZWFrcG9pbnQgPSBudWxs
cHRyOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJv
cGVydGllcykKQEAgLTE3NTEsNyArMTc2MCw3IEBAIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFyCiAg
ICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQp
CitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50
VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRp
c2FibGVkLCBjb25zdCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYgYnJlYWtwb2ludCkKIHsKICAg
ICBSZWY8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmNhbGxiYWNrKCk7CiAKQEAgLTE4MzksOCArMTg0OCw4IEBAIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvckV2CiAgICAgICAgIHZhbHVlLT5zZXRPbmNlKHRydWUpOwogICAgIGlmIChkaXNhYmxlZCkK
ICAgICAgICAgdmFsdWUtPnNldERpc2FibGVkKGRpc2FibGVkKTsKLSAgICBpZiAoaGFzQnJlYWtw
b2ludCkKLSAgICAgICAgdmFsdWUtPnNldEhhc0JyZWFrcG9pbnQoaGFzQnJlYWtwb2ludCk7Cisg
ICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgIHZhbHVlLT5zZXRIYXNCcmVha3BvaW50KGJyZWFr
cG9pbnQpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjU0OCwxMyArMjU1NywxMyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBF
dmVudCYgZXZlbnQpCiAgICAgbV9kaXNwYXRjaGVkRXZlbnRzLnJlbW92ZSgmZXZlbnQpOwogfQog
Ci1ib29sIEluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihF
dmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCitSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBJ
bnNwZWN0b3JET01BZ2VudDo6YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQm
IHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAgIGZvciAoYXV0byYgaW5zcGVjdG9yRXZlbnRMaXN0
ZW5lciA6IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGlu
c3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcyh0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIs
IGNhcHR1cmUpKQotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaGFz
QnJlYWtwb2ludDsKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmJy
ZWFrcG9pbnQ7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogaW50IEluc3BlY3RvckRPTUFnZW50OjppZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgYm9vbCBjYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDdlNmQzZjY4ZDNkNjBjYWYzZDNhMDFh
Y2MzODBhMjYwNWY0MmQ2ZTMuLjNlMzc3MDdhZmVjZjc4ZjQyMThhYTgzMDFlMWVhMmQ0MWM3MjUx
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtMTI1LDcgKzEyNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgZ2V0
RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxp
c3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxl
ZChFcnJvclN0cmluZyYsIGludCBldmVudExpc3RlbmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcm
LCBpbnQgZXZlbnRMaXN0ZW5lcklkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJZCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJm
b3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgSlNPTjo6
QXJyYXkqIG5vZGVJZHMsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIFN0cmluZyogc2VhcmNo
SWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7
CiAgICAgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7
CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0Jiwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJl
KTsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
cihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgaW50IGlkRm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdl
dCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2Fw
dHVyZSk7CiAKIHByaXZhdGU6CkBAIC0yMzEsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxl
bWVudCopOwogICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxl
bWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgaW50IGlkZW50aWZpZXIs
IEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVk
LCBib29sIGhhc0JyZWFrcG9pbnQpOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgY29uc3QgUmVmUHRyPEpTQzo6QnJl
YWtwb2ludD4mKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhO
b2RlKik7CiAgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVj
dCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAgIApAQCAtMjkwLDcgKzI5MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBib29sIHVzZUNhcHR1
cmUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGRpc2FibGVkIHsgZmFsc2UgfTsKLSAgICAgICAg
Ym9vbCBoYXNCcmVha3BvaW50IHsgZmFsc2UgfTsKKyAgICAgICAgUmVmUHRyPEpTQzo6QnJlYWtw
b2ludD4gYnJlYWtwb2ludDsKIAogICAgICAgICBJbnNwZWN0b3JFdmVudExpc3RlbmVyKCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDM1MmMxMzMzNzY0NjlhYmViYWRkMTk2
MTIzNjM4ODk2ZDMwZmM0MzEuLmVmOTU0NTY0MWQ0NDczOWE3MTRkMDY4ZDc3ZTM1NGQ2NmUyN2I3
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNzYsMTAgKzc2LDExIEBAIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEVuYWJsZWRET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAgbV9saXN0
ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtw
b2ludCA9IG51bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IG51
bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbHB0cjsKKwog
ICAgIG1fdXJsQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNF
bmFibGVkID0gZmFsc2U7Ci0gICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IGZhbHNl
OwotICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IGZhbHNlOwogICAgIG1fcGF1c2VP
bkFsbFVSTHNFbmFibGVkID0gZmFsc2U7CiB9CiAKQEAgLTExMSw3ICsxMTIsMjIgQEAgdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNjYXJkQWdlbnQoKQogICAgIG1fZGVidWdnZXJB
Z2VudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBi
cmVha3BvaW50VHlwZVN0cmluZywgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpCit2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCit7CisgICAgZm9yIChh
dXRvJiBicmVha3BvaW50IDogbV9saXN0ZW5lckJyZWFrcG9pbnRzLnZhbHVlcygpKQorICAgICAg
ICBicmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7CisKKyAgICBpZiAobV9wYXVzZU9uQWxsSW50
ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dC0+cmVzZXRIaXRDb3VudCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFr
cG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQtPnJlc2V0SGl0
Q291bnQoKTsKKworICAgIGlmIChtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAg
ICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludC0+cmVzZXRIaXRDb3VudCgpOworfQor
Cit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGVTdHJpbmcs
IGNvbnN0IFN0cmluZyogZXZlbnROYW1lLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXls
b2FkKQogewogICAgIGlmIChicmVha3BvaW50VHlwZVN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiYnJlYWtwb2ludFR5cGUgaXMgZW1wdHkiX3M7CkBAIC0xMjQsOSAr
MTQwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dl
ckJyZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQpOworICAg
IGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGV2ZW50TmFtZSAm
JiAhZXZlbnROYW1lLT5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBlLnZh
bHVlKCkgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2lu
dFR5cGU6Okxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBpZiAoIW1fbGlzdGVuZXJCcmVha3BvaW50
cy5hZGQoKmV2ZW50TmFtZSkpCisgICAgICAgICAgICBpZiAoIW1fbGlzdGVuZXJCcmVha3BvaW50
cy5hZGQoKmV2ZW50TmFtZSwgYnJlYWtwb2ludC5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IHdpdGggZXZlbnROYW1lIGFscmVhZHkg
ZXhpc3RzIl9zOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMzcsMjUgKzE1
NywyOCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogCiAgICAgc3dpdGNoIChicmVha3BvaW50
VHlwZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dl
cjo6RXZlbnRCcmVha3BvaW50VHlwZTo6QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgdHJ1ZSk7CisgICAgICAgIHNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgV1RGTW92ZShicmVha3BvaW50KSk7CiAg
ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dl
cjo6RXZlbnRCcmVha3BvaW50VHlwZTo6SW50ZXJ2YWw6Ci0gICAgICAgIGlmIChtX3BhdXNlT25B
bGxJbnRlcnZhbHNFbmFibGVkKQorICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0Jy
ZWFrcG9pbnQpCisgICAgICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50ID0g
V1RGTW92ZShicmVha3BvaW50KTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiQnJlYWtwb2ludCBmb3IgSW50ZXJ2YWwgYWxyZWFkeSBleGlzdHMiX3M7Ci0gICAgICAg
IG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQgPSB0cnVlOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2lu
dFR5cGU6Okxpc3RlbmVyOgotICAgICAgICBpZiAobV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxl
ZCkKKyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAg
ICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2lu
dCk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQg
Zm9yIExpc3RlbmVyIGFscmVhZHkgZXhpc3RzIl9zOwotICAgICAgICBtX3BhdXNlT25BbGxMaXN0
ZW5lcnNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpUaW1lb3V0Ogot
ICAgICAgICBpZiAobV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkKQorICAgICAgICBpZiAoIW1f
cGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIG1fcGF1c2VPbkFsbFRp
bWVvdXRzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7CisgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIFRpbWVvdXQgYWxyZWFkeSBl
eGlzdHMiX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE4Niw1MSArMjA5LDU3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywKIAogICAgIHN3aXRjaCAoYnJlYWtwb2ludFR5cGUudmFsdWUoKSkgewogICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5
cGU6OkFuaW1hdGlvbkZyYW1lOgotICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQo
ZXJyb3JTdHJpbmcsIGZhbHNlKTsKKyAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50
KGVycm9yU3RyaW5nLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpJbnRlcnZh
bDoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkKQorICAgICAgICBp
ZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBlcnJvclN0
cmluZyA9ICJCcmVha3BvaW50IGZvciBJbnRlcnZhbHMgbWlzc2luZyJfczsKLSAgICAgICAgbV9w
YXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3BhdXNlT25BbGxJ
bnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpM
aXN0ZW5lcjoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkKQorICAg
ICAgICBpZiAoIW1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBMaXN0ZW5lcnMgbWlzc2luZyJfczsKLSAgICAg
ICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3BhdXNl
T25BbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRU
eXBlOjpUaW1lb3V0OgotICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCkK
KyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQpCiAgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBUaW1lb3V0cyBtaXNzaW5nIl9zOwotICAg
ICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wYXVz
ZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudChF
dmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcikKIHsKLSAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOwogICAgIGF1dG8gaW5qZWN0
ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0
ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgLy8gU2V0IFdlYiBJbnNwZWN0b3IgY29uc29sZSBjb21tYW5kIGxpbmUgYCRldmVu
dGAgZ2V0dGVyLgogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzdGF0ZSk7
CiAKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0RXZlbnRWYWx1ZSh0b0pTKHN0YXRlLCBkZXBy
ZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgZXZlbnQpKTsKICAgICB9CiAK
KyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVy
c2lzdGVudERPTUFnZW50KCk7CiAKLSAgICBib29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFn
ZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCBtX3BhdXNlT25BbGxMaXN0ZW5l
cnNFbmFibGVkIHx8IG1fbGlzdGVuZXJCcmVha3BvaW50cy5jb250YWlucyhldmVudC50eXBlKCkp
OwotICAgIGlmICghc2hvdWxkUGF1c2UgJiYgZG9tQWdlbnQpCi0gICAgICAgIHNob3VsZFBhdXNl
ID0gZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50
VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2so
KSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKLSAgICBpZiAoIXNob3Vs
ZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFr
cG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2xpc3Rl
bmVyQnJlYWtwb2ludHMuZmluZChldmVudC50eXBlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9s
aXN0ZW5lckJyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICAgICAgYnJlYWtwb2ludCA9IGl0LT52
YWx1ZS5jb3B5UmVmKCk7CisgICAgfQorICAgIGlmICghYnJlYWtwb2ludCAmJiBkb21BZ2VudCkK
KyAgICAgICAgYnJlYWtwb2ludCA9IGRvbUFnZW50LT5icmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
cigqZXZlbnQuY3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7
CisgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNPTjo6
T2JqZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMjQxLDEyICsy
NzAsMzcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQo
RXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXYKICAgICAgICAgICAgIGV2ZW50RGF0YS0+
c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5lcklkIl9zLCBldmVudExpc3RlbmVySWQpOwogICAgIH0K
IAotICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNw
ZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Okxpc3RlbmVyLCBXVEZN
b3ZlKGV2ZW50RGF0YSkpOworICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZUZvclNw
ZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50LCBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246Okxpc3RlbmVyLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KCkKK3ZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0g
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuY2xlYXJFdmVudFZhbHVlKCk7CisgICAgYXV0byBz
dGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0
ZSgpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2xlYXIgV2ViIEluc3BlY3RvciBjb25z
b2xlIGNvbW1hbmQgbGluZSBgJGV2ZW50YCBnZXR0ZXIuCisgICAgeworICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKworICAgICAgICBpbmplY3RlZFNjcmlwdC5jbGVhckV2
ZW50VmFsdWUoKTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2lu
dHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBicmVha3BvaW50ID0gbV9w
YXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAg
ICAgIGJyZWFrcG9pbnQgPSBtX2xpc3RlbmVyQnJlYWtwb2ludHMuZ2V0KGV2ZW50LnR5cGUoKSk7
CisgICAgaWYgKCFicmVha3BvaW50KSB7CisgICAgICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKKyAgICAgICAgICAgIGJy
ZWFrcG9pbnQgPSBkb21BZ2VudC0+YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50LmN1
cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxs
YmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOworICAgIH0KKyAg
ICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVidWdnZXJBZ2Vu
dC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVUaW1lcihib29sIG9uZVNob3Qp
CkBAIC0yNTQsMTIgKzMwOCwyNCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVh
a3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFBhdXNl
ID0gbV9kZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCAob25l
U2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA6IG1fcGF1c2VPbkFsbEludGVydmFs
c0VuYWJsZWQpOwotICAgIGlmICghc2hvdWxkUGF1c2UpCisgICAgYXV0byBicmVha3BvaW50ID0g
b25lU2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCA6IG1fcGF1c2VPbkFsbElu
dGVydmFsc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIGJyZWFrUmVhc29uID0gb25lU2hvdCA/IEluc3BlY3Rvcjo6RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6VGltZW91dCA6IEluc3BlY3Rvcjo6RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6SW50ZXJ2YWw7Ci0gICAgbV9kZWJ1Z2dlckFnZW50
LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGJyZWFrUmVhc29uLCBudWxscHRyKTsKKyAg
ICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJl
YWtwb2ludCwgYnJlYWtSZWFzb24pOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpZEZpcmVUaW1lcihib29sIG9uZVNob3QpCit7CisgICAgaWYgKCFtX2RlYnVnZ2VyQWdl
bnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYnJl
YWtwb2ludCA9IG9uZVNob3QgPyBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQgOiBtX3Bh
dXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZUZvclNwZWNpYWxC
cmVha3BvaW50KCpicmVha3BvaW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmgKaW5kZXggMDFlM2JkY2YwMDRhZTY0MGRmYTk2M2ZmOWE1NGMzNWQyYWVjZDA1Mi4uOWY2ZTYz
OGUzM2VlMDMwOTQ5OWU2NzI2MDIxYmQwYzA4MTk0ZTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmgKQEAgLTMyLDEwICszMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC02NCw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cgogICAgIHZvaWQgc2V0VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsKLSAg
ICB2b2lkIHNldEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJl
YWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lKSBmaW5hbDsKKyAgICB2b2lkIHNl
dEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5
cGUsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlRXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBicmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpIGZpbmFs
OwogCiAgICAgLy8gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIKQEAgLTcyLDE4ICs3
NSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgbWFp
bkZyYW1lTmF2aWdhdGVkKCk7CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHdpbGxGZXRjaChjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgdm9pZCB3aWxsSGFuZGxlRXZlbnQoRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciYpOwotICAgIHZvaWQgZGlkSGFuZGxlRXZlbnQoKTsKKyAgICB2b2lkIGRpZEhhbmRsZUV2
ZW50KEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAgICB2b2lkIHdp
bGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KTsKKyAgICB2b2lkIGRpZEZpcmVUaW1lcihib29sIG9u
ZVNob3QpOwogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChXZWJB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBi
b29sIGVuYWJsZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikgPSAwOwogCiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQgeyBu
dWxscHRyIH07CiAKQEAgLTk0LDE0ICs5OSwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fbGlzdGVuZXJCcmVha3BvaW50czsKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmVmPEpTQzo6QnJlYWtwb2ludD4+IG1fbGlzdGVuZXJCcmVha3Bv
aW50czsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX3BhdXNlT25BbGxJbnRlcnZhbHNC
cmVha3BvaW50OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbExpc3Rl
bmVyc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQWxs
VGltZW91dHNCcmVha3BvaW50OwogCiAgICAgZW51bSBjbGFzcyBVUkxCcmVha3BvaW50VHlwZSB7
IFJlZ3VsYXJFeHByZXNzaW9uLCBUZXh0IH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFVSTEJyZWFr
cG9pbnRUeXBlPiBtX3VybEJyZWFrcG9pbnRzOwotCi0gICAgYm9vbCBtX3BhdXNlT25BbGxJbnRl
cnZhbHNFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fcGF1c2VPbkFsbExpc3RlbmVyc0Vu
YWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkIHsgZmFsc2UgfTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDE0MGUxNTc4YzVmMDk2ZTQ0NGVkMTQ5MjA3NzE4
ZWU3Zjg2NDU1MjYuLjMwMWVmOTUyNTY0OWJhMDBkYjIyOTMzNDg1MjYxNzNjZDExOTI3YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNTEsOSArNTEsOSBAQAogI2luY2x1ZGUgIlRpbWVsaW5l
UmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUg
IldlYkRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QnJlYWtwb2ludC5oPgogI2luY2x1ZGUgPHd0Zi9TdG9w
d2F0Y2guaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4
Q2FsbFN0YWNrRGVwdGgpCiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdU
aW1lbGluZUFnZW50KHRoaXMpOwogCi0gICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZl
cigpLmFkZExpc3RlbmVyKHRoaXMpOworICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2
ZXIoKS5hZGRPYnNlcnZlcigqdGhpcyk7CiAKICAgICBtX3RyYWNraW5nID0gdHJ1ZTsKIApAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9w
KCkKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ1RpbWVsaW5lQWdlbnQo
bnVsbHB0cik7CiAKLSAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkucmVtb3Zl
TGlzdGVuZXIodGhpcywgdHJ1ZSk7CisgICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZl
cigpLnJlbW92ZU9ic2VydmVyKCp0aGlzLCB0cnVlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gbnVsbHB0cjsKQEAgLTY2OSwxMSArNjY5LDkgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjaygpCiAg
ICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6T2JzZXJ2ZXJD
YWxsYmFjayk7CiB9CiAKLS8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLQotdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50QWN0
aW9uJiBhY3Rpb24sIHVuc2lnbmVkIC8qYmF0Y2hJZCovLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlND
OjpKU1ZhbHVlKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpCcmVh
a3BvaW50QWN0aW9uSUQgYWN0aW9uSUQsIHVuc2lnbmVkIC8qYmF0Y2hJZCovLCB1bnNpZ25lZCBz
YW1wbGVJZCwgSlNDOjpKU1ZhbHVlKQogewotICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb24sIHNhbXBsZUlkKSwgVGltZWxp
bmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4ZWNTdGF0ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbklELCBzYW1wbGVJZCksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUobGV4aWNhbEds
b2JhbE9iamVjdCkpOwogfQogCiBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaAppbmRleCAzMGZjOTc5NTI0YTk0YmUwZDM0MTU1MWUxZmU4ZWRjZjlhNGY3YjNiLi45NWE4
ZTNlZDcyZDJmYjQ0NTE0YTMxM2ExNDFjMWE5YTc5ODkzODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApA
QCAtMzQsOSArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgog
I2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dl
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyUHJpbWl0aXZlcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTgxLDcgKzgy
LDcgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewogICAgIE9ic2VydmVyQ2FsbGJh
Y2ssCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IGZpbmFsIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyICwgcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdMaXN0ZW5lciB7Citj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
ICwgcHVibGljIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTEwMCwxNiArMTAxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXV0
b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRJbnN0cnVtZW50cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5Jikgb3ZlcnJpZGU7
CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBkaWRQYXJzZVNvdXJjZShK
U0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGZhaWxl
ZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpIG92
ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkUnVuTWljcm90YXNrKCkgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpT
VmFsdWUpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkQ29udGludWUoKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGlu
dCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVu
c2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgcmVzdWx0KSBv
dmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQgYnJlYWtw
b2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkJyZWFrcG9pbnRBY3Rp
b25JRCwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9p
ZCBkaWRJbnN0YWxsVGltZXIoaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5n
bGVTaG90LCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMTM5YmJjNWUz
MDIxMDY2NTI0NzQ1NTczOTM1NWY4Y2RlNzRjMjE5MC4uN2Y0ODc1NGFmMTZhODRjODZkMzRkMmRi
MmM2ZTE3YWQ3ZmFhYmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC05NCw3ICs5
NCw4IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiAK
ICAgICBtX2RvbUJyZWFrcG9pbnRzLmNsZWFyKCk7Ci0gICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9u
RnJhbWVzRW5hYmxlZCA9IGZhbHNlOworCisgICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVz
QnJlYWtwb2ludCA9IG51bGxwdHI7CiAKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aXNhYmxlKCk7CiB9CkBAIC0xNTIsNiArMTUzLDE0IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdl
bnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
CiAgICAgfQogfQogCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0
ZWQoKQoreworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRl
ZCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisg
ICAgICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQtPnJlc2V0SGl0Q291
bnQoKTsKK30KKwogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0
ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKQEAgLTI1
MiwxMSArMjYxLDIzIEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlQW5pbWF0
aW9uRnJhbWUoKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFn
ZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCBtX3BhdXNlT25BbGxBbmltYXRp
b25GcmFtZXNFbmFibGVkOwotICAgIGlmICghc2hvdWxkUGF1c2UpCisgICAgYXV0byBicmVha3Bv
aW50ID0gbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJy
ZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkFuaW1hdGlvbkZyYW1lLCBudWxscHRyKTsKKyAgICBtX2RlYnVnZ2VyQWdl
bnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCwgSW5zcGVj
dG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBbmltYXRpb25GcmFtZSk7
Cit9CisKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSgp
Cit7CisgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFsbEFuaW1hdGlv
bkZyYW1lc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQo
KmJyZWFrcG9pbnQpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsSW52YWxp
ZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQpAQCAtMjcxLDEyICsyOTIsMTQgQEAgdm9p
ZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYg
ZWxlbWVudCkKICAgICB9CiB9CiAKLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxl
ZCkKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYgYnJl
YWtwb2ludCkKIHsKLSAgICBpZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCA9
PSBlbmFibGVkKQotICAgICAgICBlcnJvclN0cmluZyA9IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZy
YW1lc0VuYWJsZWQgPyAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgYWxyZWFkeSBleGlz
dHMiX3MgOiAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgbWlzc2luZyJfczsKKyAgICBp
ZiAoIW1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPT0gIWJyZWFrcG9pbnQp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50ID8gIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIGFscmVhZHkgZXhpc3RzIl9z
IDogIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIG1pc3NpbmciX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gV1RG
TW92ZShicmVha3BvaW50KTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3Jp
cHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBp
bnNlcnRpb24sIEpTT046Ok9iamVjdCYgZGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5o
CmluZGV4IDdkZGY0NTNiOTQxOWQyMGZhOTE0NmMxMTdmYWFiZmE1MWZmMzQ2MDQuLmJhNGVmNjAy
M2RhYjMwOGIxYWQ1MWJkODYyNDkwYmFiNTcwYTFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5o
CkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3
LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZCgp
IGZpbmFsOwogICAgIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUmKTsKICAgICB2b2lk
IHdpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCk7CiAgICAgdm9pZCBkaWRJbnNlcnRET01O
b2RlKE5vZGUmKTsKQEAgLTU1LDEyICs1OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsTW9k
aWZ5RE9NQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVN0eWxlQXR0cihF
bGVtZW50Jik7CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKCk7CisgICAgdm9pZCBk
aWRGaXJlQW5pbWF0aW9uRnJhbWUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRBbmlt
YXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgUmVm
UHRyPEpTQzo6QnJlYWtwb2ludD4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQoTm9kZSYsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpT
T046Ok9iamVjdCYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwpAQCAtNjgsNyArNzIsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogCiAg
ICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7Ci0gICAgYm9vbCBt
X3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkIHsgZmFsc2UgfTsKKworICAgIFJlZlB0
cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1
MGNjOThiM2ZhMzBlM2RhMWY2ZTVlZGQyOTFjOWNjNjYzMTY2ZTcxLi4yMTdjYjU1ZTZjMGVkNzZj
OWU2NzQxOGE4YzMzNGEwNDE4ZmNlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0
cm95ZWQpCiAgICAgV2ViRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShpc0JlaW5nRGVzdHJveWVkKTsK
IH0KIAotU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29u
c3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVS
TEZvclNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmIHNjcmlwdCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyKE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJTb3VyY2VNYXAiKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQoTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIlgtU291cmNlTWFwIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCBkMTM5MTA4YmZiOTg4
MzQ5MzlhZDAyOWM2N2M5NmE4ZmUxOWM3NjNhLi40YzI3ZGQxYzc0YjEyZTg1N2I2Y2Y2NTEwZjg5
OTc2MDdhMTY2MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6
CiAgICAgLy8gRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICB2b2lkIGV2YWx1
YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0
IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wq
IGVtdWxhdGVVc2VyR2VzdHVyZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9u
YWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1
Z0xpc3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNl
cnZlcgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbgogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiwgRE9NV3Jh
cHBlcldvcmxkJik7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVy
cmlkZTsKIAotICAgIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0Jikg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBKU0M6OkRl
YnVnZ2VyOjpTY3JpcHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9N
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYWQ4M2Y2ZDM3YmQ2NGJjZTIyMWUzZGFjZDdhMjI5OTMx
MTJhOGY2Mi4uMTQ3NmZiYzgxOTYzNTdkOTEyYmM4MmEzYzM1NGU4M2E5NGE0NjE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXb3Jr
ZXJET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IC8KICAgICBlcnJvclN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQog
Ci12b2lkIFdvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgLyogZW5hYmxlZCAqLykKK3ZvaWQgV29y
a2VyRE9NRGVidWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikKIHsKICAgICBlcnJv
clN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IGIxMTI4NWUwNDYyZGEyMTEwZjg5NTY2ODY3ZDVmMDI5NjE3MzJlYjAuLmRhZDE4
ZjVjMGVjOGFhM2JjOGI0Zjc4YWRmZjRlOTA4ZmRkODNkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1
Z2dlckFnZW50LmgKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Jy
ZWFrcG9pbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDEsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmltYXRpb25G
cmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmKSBv
dmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdl
bnQuaAppbmRleCAzMTkxNjc2NjNjN2Q2NzhjNDBhMmRmZmU0MTQ2NWQ1NWIzZWUzNWEzLi40YWMw
N2Q2Y2MzN2MyMjgwMzMzOGViODBkMzQyMTk1MjFiOTZmM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5oCkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAgICBXb3JrZXJEZWJ1Z2dlckFnZW50
KFdvcmtlckFnZW50Q29udGV4dCYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgb3ZlcnJp
ZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0
aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxv
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogcHJp
dmF0ZToKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIG11dGUgY29uc29sZSBmb3Igd29ya2Vycy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggNWI5MzFlZmExZjAzYWJhOWY2NzlmNzk1MmRk
OWFkZjczYzgxNjFjOC4uODY1NDA4ZGJmYTUwMzYyMWZhYzQxZjIwZjZjZmZiZjQ0MzU4YTYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTI4NCw2ICsyODQsOCBAQCB2b2lkIERPTVRp
bWVyOjpmaXJlZCgpCiAgICAgLy8gd2FpdCB1bml0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0
byBkZWxldGUgRE9NVGltZXIuCiAgICAgUmVmPERPTVRpbWVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAorICAgIGJvb2wgb25lU2hvdCA9ICFyZXBlYXRJbnRlcnZhbCgpOworCiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKQEAgLTI5MSw3ICsyOTMsNyBA
QCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkg
ewogICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsK
ICAgICAgICAgaWYgKGF1dG8qIGhvbGRpbmdUYW5rID0gZG9jdW1lbnQuZG9tVGltZXJIb2xkaW5n
VGFua0lmRXhpc3RzKCk7IGhvbGRpbmdUYW5rICYmIGhvbGRpbmdUYW5rLT5jb250YWlucygqdGhp
cykpIHsKLSAgICAgICAgICAgIGlmICghcmVwZWF0SW50ZXJ2YWwoKSkKKyAgICAgICAgICAgIGlm
IChvbmVTaG90KQogICAgICAgICAgICAgICAgIHN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMDksNyArMzExLDcgQEAgdm9pZCBET01UaW1lcjo6
ZmlyZWQoKQogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3Qg
dGltZXIgc2hvdWxkIGdldCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgog
ICAgIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsICFy
ZXBlYXRJbnRlcnZhbCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJl
VGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsIG9uZVNob3QpOwogCiAgICAgLy8gU2ltcGxlIGNh
c2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYgKGlzQWN0aXZlKCkpIHsKQEAgLTMy
MCw3ICszMjIsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICAgICAgbV9hY3Rpb24t
PmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXIoY29udGV4dCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCBvbmVTaG90KTsKIAogICAgICAgICB1
cGRhdGVUaHJvdHRsaW5nU3RhdGVJZk5lY2Vzc2FyeShmaXJlU3RhdGUpOwogICAgICAgICByZXR1
cm47CkBAIC0zMzgsNyArMzQwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogI2VuZGlmCiAg
ICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpcmVUaW1lcihjb250ZXh0LCBtX3RpbWVvdXRJZCwgb25lU2hvdCk7CiAKICAgICAv
LyBDaGVjayBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgbmVzdGVkIHNpbmdsZS1zaG90IHRpbWVycy4K
ICAgICBpZiAobmVzdGVkVGltZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKaW5kZXggM2IxOTlmYTY4OGZiNTY5NjMyODE1
NzQzZjMwNGFmOGM0NTdhZjZmZC4uZWQ1YWIwMDk2YjJkMTA2Njc4ZmE5OTgyODUyZWM5OGI2ZjMy
MTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvU2V0dGluZy5qcwpAQCAtMTk3LDEyICsxOTcsOCBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBz
ZWFyY2hSZWd1bGFyRXhwcmVzc2lvbjogbmV3IFdJLlNldHRpbmcoInNlYXJjaC1yZWd1bGFyLWV4
cHJlc3Npb24iLCBmYWxzZSksCiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVudFZpZXdJ
ZGVudGlmaWVyOiBuZXcgV0kuU2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12aWV3LWlk
ZW50aWZpZXIiLCAicHJldmlldyIpLAogICAgIHNvdXJjZU1hcHNFbmFibGVkOiBuZXcgV0kuU2V0
dGluZygic291cmNlLW1hcHMtZW5hYmxlZCIsIHRydWUpLAotICAgIHNob3dBbGxBbmltYXRpb25G
cmFtZXNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtYW5pbWF0aW9uLWZyYW1l
cy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50OiBu
ZXcgV0kuU2V0dGluZygic2hvdy1hbGwtaW50ZXZlcmFscy1icmVha3BvaW50IiwgZmFsc2UpLAot
ICAgIHNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwt
bGlzdGVuZXJzLWJyZWFrcG9pbnQiLCBmYWxzZSksCiAgICAgc2hvd0FsbE1pY3JvdGFza3NCcmVh
a3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtbWljcm90YXNrcy1icmVha3BvaW50Iiwg
ZmFsc2UpLAogICAgIHNob3dBbGxSZXF1ZXN0c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJz
aG93LWFsbC1yZXF1ZXN0cy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxUaW1lb3V0
c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50
IiwgZmFsc2UpLAogICAgIHNob3dBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQ6IG5ldyBXSS5T
ZXR0aW5nKCJzaG93LWFzc2VydGlvbi1mYWlsdXJlcy1icmVha3BvaW50IiwgdHJ1ZSksCiAgICAg
c2hvd0NhbnZhc1BhdGg6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWNhbnZhcy1wYXRoIiwgZmFsc2Up
LAogICAgIHNob3dJbWFnZUdyaWQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWltYWdlLWdyaWQiLCB0
cnVlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJv
bGxlci5qcwppbmRleCBhZTRjYzQ3YzUxY2NkNzgzMDg5NmFlYThjMzNjMjQxYjg4OTQxYzM1Li4w
OThjYTJkZmNjYmJhNmIxZDdhY2NiOTY0ZDEzODViN2JhNGJjODE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9w
b3ZlckNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzCkBAIC00MCw2MCAr
NDAsNTkgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtwb2lu
dFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRvY3VtZW50LmJvZHkuY29udGFpbnMoYnJlYWtwb2ludERpc3BsYXlFbGVtZW50KSwg
IkJyZWFrcG9pbnQgcG9wb3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVzdCBiZSBpbiB0aGUgRE9NLiIp
OwogCi0gICAgICAgIGNvbnN0IGVkaXRCcmVha3BvaW50ID0gKCkgPT4gewotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVha3BvaW50IHBvcG92ZXIgYWxyZWFk
eSBleGlzdHMuIik7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcG9wb3ZlcikKLSAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChicmVha3BvaW50LmVkaXRhYmxlKSB7CisgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9pbnRc
dTIwMjYiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9w
b3BvdmVyLCAiQnJlYWtwb2ludCBwb3BvdmVyIGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl9wb3BvdmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpOwotICAg
ICAgICAgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBXSS5Qb3BvdmVyKHRoaXMpOwotICAgICAgICAg
ICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50Owor
ICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBuZXcgV0kuUG9wb3Zlcih0aGlzKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVu
dEVsZW1lbnQ7CiAKLSAgICAgICAgICAgIGxldCBib3VuZHMgPSBXSS5SZWN0LnJlY3RGcm9tQ2xp
ZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkp
OwotICAgICAgICAgICAgYm91bmRzLm9yaWdpbi54IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBs
ZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNlbnRlcmVkLgotICAgICAgICAgICAgdGhp
cy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXSS5SZWN0RWRnZS5NQVhfWV0pOwot
ICAgICAgICB9OworICAgICAgICAgICAgICAgIGxldCBib3VuZHMgPSBXSS5SZWN0LnJlY3RGcm9t
Q2xpZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkpOworICAgICAgICAgICAgICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAxOyAvLyBNb3ZlIHRoZSBh
bmNob3IgbGVmdCBvbmUgcGl4ZWwgc28gaXQgbG9va3MgbW9yZSBjZW50ZXJlZC4KKyAgICAgICAg
ICAgICAgICB0aGlzLl9wb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dJLlJlY3RFZGdl
Lk1BWF9ZXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHJl
bW92ZUJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfTsKKyAgICAgICAgaWYgKCFi
cmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgKCkgPT4geworICAgICAgICAgICAg
ICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKKyAgICAgICAg
ICAgIH0pOwogCi0gICAgICAgIGNvbnN0IHRvZ2dsZUJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAg
ICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAg
ICAgIH07CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSAmJiBicmVha3BvaW50
LmF1dG9Db250aW51ZSkgeworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V0kuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgKCkgPT4geworICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9ICFicmVha3BvaW50LmF1dG9D
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkVu
YWJsZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRp
c2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQogCi0gICAgICAgIGNvbnN0IHRvZ2dsZUF1dG9Db250aW51ZSA9ICgpID0+IHsKLSAgICAgICAg
ICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOwot
ICAgICAgICB9OworICAgICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSAmJiAhYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlzYWJsZWQgJiYgYnJlYWtwb2ludC5hY3Rp
b25zLmxlbmd0aCkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0
cmluZygiU2V0IHRvIEF1dG9tYXRpY2FsbHkgQ29udGludWUiKSwgKCkgPT4geworICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVl
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgICAgICBjb25zdCByZXZlYWxPcmln
aW5hbFNvdXJjZUNvZGVMb2NhdGlvbiA9ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7Ci0gICAgICAgICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCi0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgV0kuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2lu
dC5zb3VyY2VDb2RlTG9jYXRpb24sIG9wdGlvbnMpOwotICAgICAgICB9OworICAgICAgICBpZiAo
YnJlYWtwb2ludC5yZW1vdmFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAg
ICAgICBicmVha3BvaW50LnJlbW92ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAot
ICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFr
cG9pbnQpKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygi
RWRpdCBCcmVha3BvaW50XHUyMDI2IiksIGVkaXRCcmVha3BvaW50KTsKLQotICAgICAgICBpZiAo
YnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKLSAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtw
b2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV0kuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgdG9nZ2xlQXV0
b0NvbnRpbnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJl
YWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwg
dG9nZ2xlQnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKCFicmVha3BvaW50LmF1dG9Db250aW51
ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCAmJiBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKQot
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiU2V0IHRvIEF1
dG9tYXRpY2FsbHkgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKLQotICAgICAgICBp
ZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KSkK
LSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBC
cmVha3BvaW50IiksIHJlbW92ZUJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50
Ll9zb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICBpZiAo
YnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50ICYmIGJyZWFrcG9p
bnQuc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksIHJl
dmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJjZSIpLCAo
KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgICAg
ICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaWdub3Jl
U2VhcmNoVGFiOiB0cnVlLAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgV0ku
c2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3Vy
Y2VDb2RlTG9jYXRpb24sIG9wdGlvbnMpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTEyNCw3ICsxMjMsMjIgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVy
ID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAg
ICAgbGV0IGNoZWNrYm94TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwog
ICAgICAgICBjaGVja2JveExhYmVsLmNsYXNzTmFtZSA9ICJ0b2dnbGUiOwogICAgICAgICBjaGVj
a2JveExhYmVsLmFwcGVuZENoaWxkKGNoZWNrYm94RWxlbWVudCk7Ci0gICAgICAgIGNoZWNrYm94
TGFiZWwuYXBwZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlM
b2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkKKyAgICAgICAgICAgIGNoZWNrYm94TGFiZWwuYXBw
ZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0
cmluZygpKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJ
LkV2ZW50QnJlYWtwb2ludCkgeworICAgICAgICAgICAgbGV0IGRpc3BsYXlOYW1lOworICAgICAg
ICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRp
b25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlT
dHJpbmcoIkFsbCBBbmltYXRpb24gRnJhbWVzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVh
a3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkK
KyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJBbGwgSW50ZXJ2YWxz
Iik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZSA9IFdJLlVJU3RyaW5nKCJBbGwgRXZlbnRzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVh
a3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQor
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBUaW1lb3V0cyIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYnJlYWtw
b2ludC5ldmVudE5hbWU7CisgICAgICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGRpc3BsYXlOYW1lKSk7CisgICAgICAgIH0KIAogICAgICAg
ICBsZXQgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwogCkBAIC0xNzYs
NyArMTkwLDcgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAgICAgdGhpcy5faWdub3Jl
Q291bnRJbnB1dC5pZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1pZ25vcmUiOwogICAgICAg
ICB0aGlzLl9pZ25vcmVDb3VudElucHV0LnR5cGUgPSAibnVtYmVyIjsKICAgICAgICAgdGhpcy5f
aWdub3JlQ291bnRJbnB1dC5taW4gPSAwOwotICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0
LnZhbHVlID0gMDsKKyAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC52YWx1ZSA9IGJyZWFr
cG9pbnQuaWdub3JlQ291bnQ7CiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5wdXQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3Zlcklnbm9yZUlucHV0Q2hhbmdlZC5iaW5k
KHRoaXMpKTsKIAogICAgICAgICBpZ25vcmVDb3VudExhYmVsLnNldEF0dHJpYnV0ZSgiZm9yIiwg
dGhpcy5faWdub3JlQ291bnRJbnB1dC5pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dl
ck1hbmFnZXIuanMKaW5kZXggZDI5Y2RiODQ5YmYxYzZmOWM1ZjkyOTAyZGZlMjA0MDkwN2FhYTUx
OC4uZTA1MDk5NTliOWYzMWUwNTE1ZWRlZDcyZjk2ZDA3MGIwMzY4NWQ0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdn
ZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMzMsMzYgKzMzLDI3IEBAIFdJLkRP
TURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwID0gbmV3
IE1hcDsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzID0gW107CisgICAgICAg
IHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBudWxsOworICAgICAgICB0aGlz
Ll9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2lu
dCA9IG51bGw7CisKICAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHMgPSBbXTsKIAotICAgICAg
ICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tYWxsLWFuaW1hdGlvbi1mcmFtZXMiLCBmYWxzZSk7Ci0gICAg
ICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVh
a3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCB7Ci0gICAgICAg
ICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnRFbmFibGVk
U2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1p
bnRlcnZhbHMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQg
PSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFs
LCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsTGlz
dGVuZXJzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9u
LWFsbC1saXN0ZW5lcnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFr
cG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbExpc3RlbmVyc0JyZWFr
cG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5f
YWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJl
YWstb24tYWxsLXRpbWVvdXRzIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LlRpbWVvdXQsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsVGltZW91dHNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotCiAgICAgICAgIHRoaXMu
X2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJy
ZWFrLW9uLWFsbC1yZXF1ZXN0cyIsIGZhbHNlKTsKICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNC
cmVha3BvaW50ID0gbmV3IFdJLlVSTEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRl
eHQsICIiLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAogICAgICAgICB9KTsKIAotICAgICAgICBXSS5ET01C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxl
ZFN0YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFu
Z2VkLCB0aGlzKTsKLSAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5k
bGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJ
LlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVVUkxCcmVha3BvaW50RGlzYWJsZWRTdGF0
ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5k
bGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJ
LkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRT
dGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5faGFu
ZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAg
ICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
Lklnbm9yZUNvdW50RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJs
ZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0
aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0
aW9uc0NoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJLlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMu
X2hhbmRsZVVSTEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAg
ICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9k
ZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlz
Ll9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwpAQCAtNzgsNyArNjksNyBAQCBXSS5ET01EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0kuU2V0
dGluZy5taWdyYXRlVmFsdWUoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5n
U2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxl
dCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXplZEJyZWFr
cG9pbnRzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG9iamVjdFN0b3JlLnB1
dE9iamVjdChjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3Bv
aW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgb2JqZWN0U3RvcmUucHV0
T2JqZWN0KGNvbnN0cnVjdG9yLmZyb21KU09OKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQp
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIApAQCAtODYsNyAr
NzcsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFr
cG9pbnRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBzZXJpYWxpemVkQnJlYWtw
b2ludCBvZiBzZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQnJlYWtwb2lu
dCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gY29uc3RydWN0b3IuZnJv
bUpTT04oc2VyaWFsaXplZEJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGtleSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFzc29jaWF0ZU9i
amVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAgLTEwNSw0MiAr
OTYsMjEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5zdXBw
b3J0c0V2ZW50QnJlYWtwb2ludHMoKSB8fCBET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVu
dExpc3RlbmVyQnJlYWtwb2ludHMoKSkgewogICAgICAgICAgICAgbG9hZEJyZWFrcG9pbnRzKFdJ
LkV2ZW50QnJlYWtwb2ludCwgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMsIFsiZXZl
bnQtYnJlYWtwb2ludHMiXSwgKGJyZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAvLyBN
aWdyYXRlIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgc2V0VGltZW91dGAsIGFuZCBgc2V0SW50
ZXJ2YWxgIGdsb2JhbCBicmVha3BvaW50cy4KLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyZWFr
cG9pbnQudHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlv
bkZyYW1lc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIVdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50LnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5zaG93
QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxBbmltYXRpb25GcmFt
ZXNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2lu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNhc2Ug
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZXI6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoYnJlYWtwb2ludC5ldmVudE5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAic2V0
VGltZW91dCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFr
cG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRz
QnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5hZGRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgInNldEludGVydmFsIjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50
LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93
QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlz
Ll9hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMuZGVsZXRl
T2JqZWN0KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGxvYWRMZWdhY3lH
bG9iYWxFdmVudEJyZWFrcG9pbnQgPSAodHlwZSwgc2hvd25TZXR0aW5nc0tleSwgZW5hYmxlZFNl
dHRpbmdzS2V5KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFXSS5TZXR0aW5nLm1pZ3JhdGVW
YWx1ZShzaG93blNldHRpbmdzS2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5FdmVudEJyZWFrcG9pbnQodHlwZSwgeworICAg
ICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIVdJLlNldHRpbmcubWlncmF0ZVZhbHVlKGVuYWJs
ZWRTZXR0aW5nc0tleSksCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA/Pz0gbG9hZExlZ2Fj
eUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25G
cmFtZSwgInNob3ctYWxsLWFuaW1hdGlvbi1mcmFtZXMtYnJlYWtwb2ludCIsICJicmVhay1vbi1h
bGwtYW5pbWF0aW9uLWZyYW1lcyIpOworICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5JbnRlcnZhbCwgInNob3ctYWxsLWludGV2ZXJhbHMtYnJlYWtwb2ludCIsICJi
cmVhay1vbi1hbGwtaW50ZXJ2YWxzIik7CisgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNC
cmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkxpc3RlbmVyLCAic2hvdy1hbGwtbGlzdGVuZXJzLWJyZWFrcG9pbnQiLCAi
YnJlYWstb24tYWxsLWxpc3RlbmVycyIpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNC
cmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLlRpbWVvdXQsICJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50IiwgImJy
ZWFrLW9uLWFsbC10aW1lb3V0cyIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKERPTURlYnVn
Z2VyTWFuYWdlci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkgfHwgRE9NRGVidWdnZXJNYW5hZ2Vy
LnN1cHBvcnRzWEhSQnJlYWtwb2ludHMoKSkgewpAQCAtMTYwLDI0ICsxMzAsMjQgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKSAm
JiB0YXJnZXQubWFpblJlc291cmNlKQogICAgICAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZl
bHlSZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JVUkwodGFyZ2V0Lm1haW5SZXNvdXJjZS51cmwpOwog
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQuZGlz
YWJsZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRoaXMu
X2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICBpZiAo
dGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aGlz
Ll9zZXRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwg
dGFyZ2V0KTsKIAotICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50
LmRpc2FibGVkKQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCh0
aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgaWYgKHRo
aXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RXZl
bnRCcmVha3BvaW50KHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAg
ICAgICAgICAgIGlmICghdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludC5kaXNhYmxlZCkKLSAg
ICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxMaXN0ZW5l
cnNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX3NldEV2ZW50QnJlYWtwb2ludCh0
aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0YXJnZXQpOwogCi0gICAgICAgICAgICBpZiAo
IXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICB0
aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0
YXJnZXQpOworICAgICAgICAgICAgaWYgKHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAg
ICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGltZW91dHNC
cmVha3BvaW50LCB0YXJnZXQpOwogCiAgICAgICAgICAgICBpZiAoIXRoaXMuX2FsbFJlcXVlc3Rz
QnJlYWtwb2ludC5kaXNhYmxlZCkKICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVVUkxCcmVh
a3BvaW50KHRoaXMuX2FsbFJlcXVlc3RzQnJlYWtwb2ludCwgdGFyZ2V0KTsKIAogICAgICAgICAg
ICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzKSB7CiAg
ICAgICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRpc2FibGVkKQotICAgICAgICAgICAgICAg
ICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAg
ICAgICAgICAgICAgICAgICAgdGhpcy5fc2V0RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRh
cmdldCk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZvciAobGV0IGJyZWFrcG9pbnQg
b2YgdGhpcy5fdXJsQnJlYWtwb2ludHMpIHsKQEAgLTI3MCwxNSArMjQwLDYgQEAgV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgZ2V0IGxpc3RlbmVyQnJlYWtwb2ludHMoKSB7IHJldHVybiB0aGlzLl9saXN0ZW5lckJy
ZWFrcG9pbnRzOyB9CiAgICAgZ2V0IHVybEJyZWFrcG9pbnRzKCkgeyByZXR1cm4gdGhpcy5fdXJs
QnJlYWtwb2ludHM7IH0KIAotICAgIGlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiBicmVha3BvaW50ID09PSB0aGlzLl9hbGxBbmltYXRpb25GcmFt
ZXNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxJbnRl
cnZhbHNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hbGxM
aXN0ZW5lcnNCcmVha3BvaW50Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9h
bGxUaW1lb3V0c0JyZWFrcG9pbnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMu
X2FsbFJlcXVlc3RzQnJlYWtwb2ludDsKLSAgICB9Ci0KICAgICBkb21CcmVha3BvaW50c0Zvck5v
ZGUobm9kZSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG5vZGUgaW5zdGFuY2VvZiBX
SS5ET01Ob2RlKTsKQEAgLTMxOSw3ICsyODAsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBj
bGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFi
cmVha3BvaW50IHx8ICFicmVha3BvaW50LnVybCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAg
ICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7CisgICAgICAg
IGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3BvaW50QWRk
ZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM0
MSw3ICszMDIsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAg
ICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJl
YWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgewogICAgICAgICAg
ICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNo
RXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2lu
dFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zODMsMjQg
KzM0NCw0NCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwo
YnJlYWtwb2ludCkpIHsKLSAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwge2JyZWFr
cG9pbnR9KTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghYnJlYWtwb2ludC5zcGVjaWFsLCBicmVha3BvaW50KTsKKworICAgICAgICBzd2l0Y2ggKGJy
ZWFrcG9pbnQudHlwZSkgeworICAgICAgICBjYXNlIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFu
aW1hdGlvbkZyYW1lOgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2FsbEFuaW1h
dGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQs
IGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsOgorICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQoIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEludGVydmFsc0JyZWFr
cG9pbnQsIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtw
b2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyOgorICAgICAgICAgICAgaWYgKGJyZWFrcG9p
bnQuZXZlbnROYW1lKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2xpc3RlbmVyQnJlYWtw
b2ludHMuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5nLmV2ZW50TmFtZSA9PT0gYnJlYWtwb2lu
dC5ldmVudE5hbWUpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7Cisg
ICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlz
Ll9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCBi
cmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50
ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dDoKKyAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KCF0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQsIHRoaXMuX2FsbFRpbWVv
dXRzQnJlYWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0
c0JyZWFrcG9pbnQgPSBicmVha3BvaW50OworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
IAotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkxpc3RlbmVyLCBicmVha3BvaW50KTsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludC5ldmVudE5hbWUsIGJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmICh0aGlz
Ll9saXN0ZW5lckJyZWFrcG9pbnRzLmZpbmQoKGV4aXN0aW5nKSA9PiBleGlzdGluZy5ldmVudE5h
bWUgPT09IGJyZWFrcG9pbnQuZXZlbnROYW1lKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLnB1c2goYnJlYWtwb2ludCk7Cisg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9p
bnQpOwogCiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKIAog
ICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKICAgICAgICAgICAgIGZvciAobGV0
IHRhcmdldCBvZiBXSS50YXJnZXRzKQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50
QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgICAgIHRoaXMuX3Nl
dEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB9CiAKICAgICAg
ICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKQEAgLTQxNSwzOCArMzk2LDQ2IEBA
IFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KSkgewot
ICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZl
bnRCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgLy8gRGlzYWJsZSB0aGUgYnJlYWtwb2ludCBmaXJzdCwgc28gcmVtb3ZpbmcgYWN0
aW9ucyBkb2Vzbid0IHJlLWFkZCB0aGUgYnJlYWtwb2ludC4KKyAgICAgICAgYnJlYWtwb2ludC5k
aXNhYmxlZCA9IHRydWU7CisgICAgICAgIGJyZWFrcG9pbnQuY2xlYXJBY3Rpb25zKCk7CisKKyAg
ICAgICAgc3dpdGNoIChicmVha3BvaW50LnR5cGUpIHsKKyAgICAgICAgY2FzZSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFtZToKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRoaXMuX2FsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludCA9IG51bGw7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsOgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dCk7CisgICAgICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbDsKKyAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
TGlzdGVuZXI6CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudE5hbWUpIHsKKyAgICAg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmluY2x1
ZGVzKGJyZWFrcG9pbnQpLCBicmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMu
X2xpc3RlbmVyQnJlYWtwb2ludHMuaW5jbHVkZXMoYnJlYWtwb2ludCkpCisgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2lu
dHMucmVtb3ZlKGJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0aGlzLl9h
bGxMaXN0ZW5lcnNCcmVha3BvaW50KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5l
cnNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dDoKKyAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwgdGhpcy5fYWxs
VGltZW91dHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtw
b2ludCA9IG51bGw7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
TGlzdGVuZXIsIGJyZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50
LmV2ZW50TmFtZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5f
bGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSwgYnJlYWtwb2ludCk7Ci0g
ICAgICAgIGlmICghdGhpcy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50
KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9p
bnRzLnJlbW92ZShicmVha3BvaW50KTsKLQogICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0Jy
ZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMu
ZGVsZXRlT2JqZWN0KGJyZWFrcG9pbnQpOwogCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5FdmVudEJy
ZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwotCi0gICAgICAgIGlmIChicmVha3BvaW50
LmRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGZvciAobGV0IHRhcmdl
dCBvZiBXSS50YXJnZXRzKSB7Ci0gICAgICAgICAgICAvLyBDT01QQVRJQklMSVRZIChpT1MgMTIp
OiBET01EZWJ1Z2dlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBleGlzdC4KLSAgICAg
ICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVtb3ZlRXZlbnRCcmVh
a3BvaW50IikpCi0gICAgICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3Zl
RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQudHlwZSwgYnJlYWtwb2ludC5ldmVudE5hbWUpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnJlbW92
ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKLSAgICAgICAgICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVy
KTsKLSAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudExp
c3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KICAgICB9CiAKICAgICB1cmxCcmVha3BvaW50Rm9yVVJMKHVybCkKQEAgLTQ2MCw3
ICs0NDksNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwo
YnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgewogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2Vy
LkV2ZW50LlVSTEJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgICAgICB9CkBAIC00OTMsNyArNDgyLDcgQEAgV0kuRE9NRGVidWdnZXJN
YW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAo
dGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7CisgICAgICAgIGlmIChicmVh
a3BvaW50LnNwZWNpYWwpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSB0cnVl
OwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlVSTEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAg
ICAgICAgICAgcmV0dXJuOwpAQCAtNjMyLDI5ICs2MjEsOCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
fQogICAgIH0KIAotICAgIF91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0
KQorICAgIF9jb21tYW5kQXJndW1lbnRzRm9yRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAg
ICAgewotICAgICAgICAvLyBXb3JrZXIgdGFyZ2V0cyBkbyBub3Qgc3VwcG9ydCBgcmVxdWVzdEFu
aW1hdGlvbkZyYW1lYCBicmVha3BvaW50cy4KLSAgICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IHRo
aXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgJiYgdGFyZ2V0LnR5cGUgPT09IFdJLlRh
cmdldFR5cGUuV29ya2VyKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyAxMik6IERPTURlYnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCBkaWQg
bm90IGV4aXN0LgotICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNl
dEV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikgJiYgdGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVn
Z2VyLnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKLSAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlz
dGVuZXIpOwotICAgICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAg
ICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9p
bnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhV0kuZGVidWdnZXJNYW5h
Z2VyLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAg
ICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudExpc3RlbmVyQnJlYWtwb2lu
dChicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXRhcmdldC5oYXNDb21tYW5kKCJET01EZWJ1
Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQiKSB8fCAhdGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURlYnVn
Z2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCIpKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAg
ICAgIGxldCBjb21tYW5kQXJndW1lbnRzID0ge307CiAKICAgICAgICAgc3dpdGNoIChicmVha3Bv
aW50KSB7CkBAIC02OTYsMTYgKzY2NCw2MCBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFz
cyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgY29uc3QgY2FsbGJhY2sgPSBudWxsOworICAgICAgICBy
ZXR1cm4gY29tbWFuZEFyZ3VtZW50czsKKyAgICB9CisKKyAgICBfc2V0RXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVh
a3BvaW50LmRpc2FibGVkLCBicmVha3BvaW50KTsKKworICAgICAgICAvLyBXb3JrZXIgdGFyZ2V0
cyBkbyBub3Qgc3VwcG9ydCBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBicmVha3BvaW50cy4KKyAg
ICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9p
bnQgJiYgdGFyZ2V0LnR5cGUgPT09IFdJLlRhcmdldFR5cGUuV29ya2VyKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMik6IERPTURlYnVnZ2Vy
LnNldEV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgorICAgICAgICBpZiAodGFyZ2V0Lmhh
c0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKKyAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuTGlzdGVuZXIpOwogCi0gICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVk
KQotICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZlbnRCcmVha3Bv
aW50Lmludm9rZShjb21tYW5kQXJndW1lbnRzLCBjYWxsYmFjayk7Ci0gICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhV0kuZGVidWdn
ZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKICAgICAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKIAotICAgICAg
ICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQuc2V0RXZlbnRCcmVha3BvaW50Lmludm9rZShj
b21tYW5kQXJndW1lbnRzLCBjYWxsYmFjayk7CisgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdn
ZXJBZ2VudC5zZXRFdmVudExpc3RlbmVyQnJlYWtwb2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KKworICAgICAgICBpZiAoIXRhcmdldC5o
YXNDb21tYW5kKCJET01EZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQiKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQgY29tbWFuZEFyZ3VtZW50cyA9IHRoaXMuX2NvbW1hbmRB
cmd1bWVudHNGb3JFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKKyAgICAgICAgaWYgKCF0
aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cyAmJiAhV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9p
bnRzRGlzYWJsZWRUZW1wb3JhcmlseSkKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5i
cmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIGNvbW1hbmRBcmd1bWVudHMub3B0
aW9ucyA9IGJyZWFrcG9pbnQub3B0aW9uc1RvUHJvdG9jb2woKTsKKworICAgICAgICB0YXJnZXQu
RE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudEJyZWFrcG9pbnQuaW52b2tlKGNvbW1hbmRBcmd1bWVu
dHMpOworICAgIH0KKworICAgIF9yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFy
Z2V0KQorICAgIHsKKyAgICAgICAgLy8gV29ya2VyIHRhcmdldHMgZG8gbm90IHN1cHBvcnQgYHJl
cXVlc3RBbmltYXRpb25GcmFtZWAgYnJlYWtwb2ludHMuCisgICAgICAgIGlmIChicmVha3BvaW50
ID09PSB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ICYmIHRhcmdldC50eXBlID09
PSBXSS5UYXJnZXRUeXBlLldvcmtlcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAv
LyBDT01QQVRJQklMSVRZIChpT1MgMTIpOiBET01EZWJ1Z2dlci5yZW1vdmVFdmVudEJyZWFrcG9p
bnQgZGlkIG5vdCBleGlzdC4KKyAgICAgICAgaWYgKHRhcmdldC5oYXNDb21tYW5kKCJET01EZWJ1
Z2dlci5yZW1vdmVFdmVudExpc3RlbmVyQnJlYWtwb2ludCIpKSB7CisgICAgICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50LnR5cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyKTsKKyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURl
YnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCIpKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRzID0gdGhpcy5fY29tbWFuZEFyZ3VtZW50c0ZvckV2
ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKKworICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJB
Z2VudC5yZW1vdmVFdmVudEJyZWFrcG9pbnQuaW52b2tlKGNvbW1hbmRBcmd1bWVudHMpOwogICAg
IH0KIAogICAgIF91cGRhdGVVUkxCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCkKQEAgLTc1
NywzMSArNzY5LDUxIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVudExp
c3RlbmVyKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGZvciAobGV0IHRhcmdldCBv
ZiBXSS50YXJnZXRzKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJy
ZWFrcG9pbnQsIHRhcmdldCk7Ci0KLSAgICAgICAgc3dpdGNoIChicmVha3BvaW50KSB7Ci0gICAg
ICAgIGNhc2UgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludDoKLSAgICAgICAgICAg
IHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9
ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNh
c2UgdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRoaXMuX2FsbElu
dGVydmFsc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2Fi
bGVkOwotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZy52YWx1ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIGNhc2UgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50OgotICAg
ICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUg
PSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgZm9y
IChsZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50
LmRpc2FibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUV2ZW50QnJlYWtwb2ludChi
cmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRo
aXMuX3NldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVha3BvaW50cykKICAgICAgICAgICAgIFdJ
Lm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1dE9iamVjdChicmVha3BvaW50KTsKICAg
ICB9CiAKKyAgICBfaGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQo
ZXZlbnQpCisgICAgeworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKwor
ICAgICAgICAvLyBTcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUgaGFuZGxl
ZCBieSBgRE9NTWFuYWdlcmAuCisgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIp
CisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKCF0aGlzLl9yZXN0b3JpbmdCcmVh
a3BvaW50cykKKyAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLnB1
dE9iamVjdChicmVha3BvaW50KTsKKworICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0YXJnZXQgb2YgV0kudGFy
Z2V0cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIG9sZCBicmVha3BvaW50IGZyb20gdGhl
IGJhY2tlbmQgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyBvbmUuCisgICAgICAgICAgICB0aGlzLl9y
ZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQorICAgICAgICAgICAgdGhp
cy5fc2V0RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBfaGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQoZXZlbnQpCisg
ICAgeworICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKKworICAgICAgICAv
LyBTcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUgaGFuZGxlZCBieSBgRE9N
TWFuYWdlcmAuCisgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TGlzdGVuZXIpCisgICAgICAg
ICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFi
bGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpOworCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci51
cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgIH0KKwogICAgIF9oYW5k
bGVVUkxCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQoZXZlbnQpCiAgICAgewogICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5hZ2VyLmpz
CmluZGV4IDZmMjk3OGQ5NDRmNjNmNGQ5ZDNlMWYzYWI0MTIyMWMxM2Q5NjNiMTMuLmZmN2UyMTE3
MzJlNGQzYzEzZGViYTY1NGE1MmI2ZmZkY2FhM2VhNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdl
ci5qcwpAQCAtNTAsNyArNTAsMTEgQEAgV0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5faGFzUmVxdWVzdGVkRG9jdW1lbnQgPSBm
YWxzZTsKICAgICAgICAgdGhpcy5fcGVuZGluZ0RvY3VtZW50UmVxdWVzdENhbGxiYWNrcyA9IG51
bGw7CiAKLSAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRXZl
bnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVFdmVu
dEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNo
YW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZl
bnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5F
dmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50Lklnbm9y
ZUNvdW50RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3Bl
cnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9o
YW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAg
ICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZl
bnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0No
YW5nZWQsIHRoaXMpOwogCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJh
bWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VEaWRDaGFu
Z2UsIHRoaXMpOwogICAgIH0KQEAgLTEyNiw2ICsxMzAsMTIgQEAgV0kuRE9NTWFuYWdlciA9IGNs
YXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICYmIEluc3BlY3Rv
ckJhY2tlbmQuaGFzQ29tbWFuZCgiRE9NLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
Iik7CiAgICAgfQogCisgICAgc3RhdGljIHN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRD
b25maWd1cmF0aW9uKCkKKyAgICB7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxNCk6
IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciBkaWQgbm90IGhhdmUgYW4gIm9wdGlv
bnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLmhhc0Nv
bW1hbmQoIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciIsICJvcHRpb25zIik7Cisg
ICAgfQorCiAgICAgc3RhdGljIHN1cHBvcnRzRWRpdGluZ1VzZXJBZ2VudFNoYWRvd1RyZWVzKHtm
cm9udGVuZE9ubHksIHRhcmdldH0gPSB7fSkKICAgICB7CiAgICAgICAgIHRhcmdldCA9IHRhcmdl
dCB8fCBJbnNwZWN0b3JCYWNrZW5kOwpAQCAtNjY0LDkgKzY3NCwxMSBAQCBXSS5ET01NYW5hZ2Vy
ID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIGZvciAobGV0
IHRhcmdldCBvZiBXSS50YXJnZXRzKSB7CiAgICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc0RvbWFp
bigiRE9NIikpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJy
ZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RXZlbnRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIH0KIAorICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWRkUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKwogICAgICAgICBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVn
Z2VyTWFuYWdlci5FdmVudC5FdmVudEJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAg
ICB9CiAKQEAgLTY4MCw2ICs2OTIsMTIgQEAgV0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFn
ZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQucmVt
b3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVy
SWQpOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gRGlzYWJsZSB0aGUgYnJlYWtwb2ludCBmaXJz
dCwgc28gcmVtb3ZpbmcgYWN0aW9ucyBkb2Vzbid0IHJlLWFkZCB0aGUgYnJlYWtwb2ludC4KKyAg
ICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRydWU7CisgICAgICAgIGJyZWFrcG9pbnQuY2xl
YXJBY3Rpb25zKCk7CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZVByb2Jlc0Zv
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRXZl
bnRCcmVha3BvaW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKICAgICB9CiAKQEAgLTY5OSwxOSAr
NzE3LDI4IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAKICAgICAvLyBQcml2YXRlCiAKLSAgICBfdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFr
cG9pbnQsIHRhcmdldCkKKyAgICBfc2V0RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdl
dCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFicmVha3BvaW50LmRpc2FibGVkLCBi
cmVha3BvaW50KTsKKworICAgICAgICBsZXQgZXZlbnRMaXN0ZW5lciA9IGJyZWFrcG9pbnQuZXZl
bnRMaXN0ZW5lcjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnRMaXN0ZW5lcik7CisKKyAg
ICAgICAgICAgIGlmICghV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRGlzYWJsZWRUZW1w
b3JhcmlseSkKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNF
bmFibGVkID0gdHJ1ZTsKKworICAgICAgICB0YXJnZXQuRE9NQWdlbnQuc2V0QnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIuaW52b2tlKHsKKyAgICAgICAgICAgIGV2ZW50TGlzdGVuZXJJZDogZXZl
bnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQsCisgICAgICAgICAgICBvcHRpb25zOiBicmVha3Bv
aW50Lm9wdGlvbnNUb1Byb3RvY29sKCksCisgICAgICAgIH0pOworICAgIH0KKworICAgIF9yZW1v
dmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQogICAgIHsKICAgICAgICAgbGV0
IGV2ZW50TGlzdGVuZXIgPSBicmVha3BvaW50LmV2ZW50TGlzdGVuZXI7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGV2ZW50TGlzdGVuZXIpOwogCi0gICAgICAgIGlmIChicmVha3BvaW50LmRpc2Fi
bGVkKQotICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBpZiAoIVdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0Rpc2FibGVk
VGVtcG9yYXJpbHkpCi0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9p
bnRzRW5hYmxlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIHRhcmdldC5ET01BZ2VudC5zZXRCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVu
dExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKICAgICB9CiAKICAgICBf
aGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQoZXZlbnQpCkBAIC03MjMs
MTEgKzc1MCw0NyBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGZvciAobGV0IHRhcmdldCBv
ZiBXSS50YXJnZXRzKSB7Ci0gICAgICAgICAgICBpZiAodGFyZ2V0Lmhhc0RvbWFpbigiRE9NIikp
Ci0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQs
IHRhcmdldCk7CisgICAgICAgICAgICBpZiAoIXRhcmdldC5oYXNEb21haW4oIkRPTSIpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNh
YmxlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtw
b2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLl9z
ZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAgICAgICAgfQogICAgIH0K
IAorICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVu
dCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAg
ICAgIC8vIE5vbi1zcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUgaGFuZGxl
ZCBieSBgRE9NRGVidWdnZXJNYW5hZ2VyYC4KKyAgICAgICAgaWYgKCFicmVha3BvaW50LmV2ZW50
TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQu
ZGlzYWJsZWQpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgZm9yIChsZXQgdGFyZ2V0
IG9mIFdJLnRhcmdldHMpIHsKKyAgICAgICAgICAgIC8vIENsZWFyIHRoZSBvbGQgYnJlYWtwb2lu
dCBmcm9tIHRoZSBiYWNrZW5kIGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgb25lLgorICAgICAgICAg
ICAgdGhpcy5fcmVtb3ZlRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAg
ICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdl
ZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0Owor
CisgICAgICAgIC8vIE5vbi1zcGVjaWZpYyBldmVudCBsaXN0ZW5lciBicmVha3BvaW50cyBhcmUg
aGFuZGxlZCBieSBgRE9NRGVidWdnZXJNYW5hZ2VyYC4KKyAgICAgICAgaWYgKCFicmVha3BvaW50
LmV2ZW50TGlzdGVuZXIpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5faGFu
ZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQoZXZlbnQpOworCisgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9p
bnQpOworICAgIH0KKwogICAgIF9tYWluUmVzb3VyY2VEaWRDaGFuZ2UoZXZlbnQpCiAgICAgewog
ICAgICAgICBpZiAoIWV2ZW50LnRhcmdldC5pc01haW5GcmFtZSgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRGVidWdnZXJNYW5h
Z2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RGVidWdnZXJNYW5hZ2VyLmpzCmluZGV4IGI0OWJlNTBhYmEzM2M1ZTliMjhhYzY1YTdkODEyOThh
OGNlOGZmNTcuLjdmNGZkNGMwZDgzMWRkZGRmODNhNzcyMDIxYTAzMGU2Nzk0ZTQ2NTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0Rl
YnVnZ2VyTWFuYWdlci5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Db250cm9sbGVycy9EZWJ1Z2dlck1hbmFnZXIuanMKQEAgLTI5LDEyICsyOSwxMiBAQCBXSS5E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICB7CiAgICAgICAgIHN1cGVyKCk7CiAKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0
aGlzLl9icmVha3BvaW50RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAg
V0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJs
ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtw
b2ludC5FdmVudC5Db25kaXRpb25EaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVBy
b3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2Jy
ZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgV0kuQnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVl
RGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENoYW5nZSwgdGhp
cyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50
LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUJyZWFrcG9pbnRBY3Rpb25zRGlk
Q2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMu
X2JyZWFrcG9pbnREaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNv
bmRpdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFu
Z2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdub3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2JyZWFr
cG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9D
b250aW51ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFu
Z2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlQnJl
YWtwb2ludEFjdGlvbnNEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkRp
c3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRp
ZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgV0kudGltZWxpbmVNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuVGltZWxpbmVNYW5hZ2VyLkV2ZW50LkNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhp
cy5faGFuZGxlVGltZWxpbmVDYXB0dXJpbmdTdGF0ZUNoYW5nZWQsIHRoaXMpOwogCkBAIC01Niwz
MSArNTYsMzEgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnN0IHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24g
PSBuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0eSk7CiAK
ICAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5n
ID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWRlYnVnZ2VyLXN0YXRlbWVudHMiLCB0cnVlKTsK
LSAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVh
a3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fZGVidWdn
ZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVj
aWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2Rl
YnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAg
fSk7CiAgICAgICAgIHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQucmVzb2x2ZWQg
PSB0cnVlOwogCiAgICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNl
dHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLWV4Y2VwdGlvbnMiLCBmYWxzZSk7
Ci0gICAgICAgIHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9p
bnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hbGxFeGNlcHRp
b25zQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJlYWtw
b2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEV4Y2VwdGlv
bnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAgICAgICB0
aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CiAKICAgICAgICAg
dGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJ
LlNldHRpbmcoImJyZWFrLW9uLXVuY2F1Z2h0LWV4Y2VwdGlvbnMiLCBmYWxzZSk7Ci0gICAgICAg
IHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChz
cGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0
aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3BlY2lhbEJyZWFr
cG9pbnRMb2NhdGlvbiwgewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl91bmNhdWdodEV4
Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAg
ICAgICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsK
IAogICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGlu
ZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hc3NlcnRpb24tZmFpbHVyZXMiLCBmYWxzZSk7
Ci0gICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVh
a3BvaW50KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fYXNzZXJ0
aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNp
YWxCcmVha3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYXNz
ZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0p
OwogICAgICAgICB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0
cnVlOwogCiAgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50RW5hYmxlZFNldHRp
bmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tYWxsLW1pY3JvdGFza3MiLCBmYWxzZSk7Ci0g
ICAgICAgIHRoaXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQo
c3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hbGxNaWNyb3Rhc2tz
QnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJlYWtwb2lu
dExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbE1pY3JvdGFza3NC
cmVha3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCiAgICAgICAgIH0pOwogICAgICAgICB0aGlz
Ll9hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludC5yZXNvbHZlZCA9IHRydWU7CkBAIC0xMjYsMTQgKzEy
NiwxNCBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgICAgIGxldCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50
cyA9IFdJLlNldHRpbmcubWlncmF0ZVZhbHVlKCJicmVha3BvaW50cyIpOwogICAgICAgICAgICAg
aWYgKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgZm9y
IChsZXQgZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludCBvZiBleGlzdGluZ1NlcmlhbGl6ZWRC
cmVha3BvaW50cykKLSAgICAgICAgICAgICAgICAgICAgYXdhaXQgV0kub2JqZWN0U3RvcmVzLmJy
ZWFrcG9pbnRzLnB1dE9iamVjdChXSS5CcmVha3BvaW50LmZyb21KU09OKGV4aXN0aW5nU2VyaWFs
aXplZEJyZWFrcG9pbnQpKTsKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgV0kub2JqZWN0U3Rv
cmVzLmJyZWFrcG9pbnRzLnB1dE9iamVjdChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9tSlNP
TihleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50KSk7CiAgICAgICAgICAgICB9CiAKICAgICAg
ICAgICAgIGxldCBzZXJpYWxpemVkQnJlYWtwb2ludHMgPSBhd2FpdCBXSS5vYmplY3RTdG9yZXMu
YnJlYWtwb2ludHMuZ2V0QWxsKCk7CiAKICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFr
cG9pbnRzID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAobGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50
IG9mIHNlcmlhbGl6ZWRCcmVha3BvaW50cykgewotICAgICAgICAgICAgICAgIGxldCBicmVha3Bv
aW50ID0gV0kuQnJlYWtwb2ludC5mcm9tSlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CisgICAg
ICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5mcm9t
SlNPTihzZXJpYWxpemVkQnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgICAgICBjb25zdCBrZXkg
PSBudWxsOwogICAgICAgICAgICAgICAgIFdJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5hc3Nv
Y2lhdGVPYmplY3QoYnJlYWtwb2ludCwga2V5LCBzZXJpYWxpemVkQnJlYWtwb2ludCk7CkBAIC0z
NDIsMjUgKzM0Miw2IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1cm4gbnVsbDsKICAgICB9CiAKLSAgICBp
c0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBi
cmVha3BvaW50ICE9PSB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50Ci0gICAgICAg
ICAgICAmJiBicmVha3BvaW50ICE9PSB0aGlzLl9hbGxFeGNlcHRpb25zQnJlYWtwb2ludAotICAg
ICAgICAgICAgJiYgYnJlYWtwb2ludCAhPT0gdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtw
b2ludDsKLSAgICB9Ci0KLSAgICBpc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpCi0gICAg
ewotICAgICAgICByZXR1cm4gIXRoaXMuaXNCcmVha3BvaW50UmVtb3ZhYmxlKGJyZWFrcG9pbnQp
Ci0gICAgICAgICAgICB8fCBicmVha3BvaW50ID09PSB0aGlzLl9hc3NlcnRpb25GYWlsdXJlc0Jy
ZWFrcG9pbnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbE1pY3JvdGFz
a3NCcmVha3BvaW50OwotICAgIH0KLQotICAgIGlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFrcG9p
bnQpCi0gICAgewotICAgICAgICByZXR1cm4gIXRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChicmVh
a3BvaW50KTsKLSAgICB9Ci0KICAgICBnZXQgYnJlYWtwb2ludHNFbmFibGVkKCkKICAgICB7CiAg
ICAgICAgIHJldHVybiB0aGlzLl9icmVha3BvaW50c0VuYWJsZWRTZXR0aW5nLnZhbHVlOwpAQCAt
NjU5LDExICs2NDAsMTEgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBhZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAg
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJl
YWtwb2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJy
ZWFrcG9pbnQpKSB7CisgICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsKICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVu
dC5CcmVha3BvaW50QWRkZWQsIHticmVha3BvaW50fSk7CiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIH0KQEAgLTY4MiwyMiArNjYzLDIyIEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNz
IERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIXRoaXMuX3Jl
c3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9p
bnRzLnB1dE9iamVjdChicmVha3BvaW50KTsKIAotICAgICAgICB0aGlzLl9hZGRQcm9iZXNGb3JC
cmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB0aGlzLmFkZFByb2Jlc0ZvckJyZWFrcG9p
bnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsK
ICAgICB9CiAKICAgICByZW1vdmVCcmVha3BvaW50KGJyZWFrcG9pbnQpCiAgICAgewotICAgICAg
ICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludCk7CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmlzQnJlYWtwb2ludFJlbW92YWJsZShi
cmVha3BvaW50KSk7Ci0gICAgICAgIGlmICghdGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJl
YWtwb2ludCkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQucmVtb3ZhYmxlKTsK
KyAgICAgICAgaWYgKCFicmVha3BvaW50LnJlbW92YWJsZSkKICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7Cisg
ICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpIHsKICAgICAgICAgICAgIGJyZWFrcG9pbnQu
ZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2lu
dH0pOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtNzIxLDcgKzcwMiw3IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAgV0kub2JqZWN0
U3RvcmVzLmJyZWFrcG9pbnRzLmRlbGV0ZU9iamVjdChicmVha3BvaW50KTsKIAotICAgICAgICB0
aGlzLl9yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICB0aGlz
LnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9p
bnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KQEAgLTczMSw2ICs3MTIsNzcgQEAgV0ku
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIHJldHVybiB0aGlzLl9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIrKzsK
ICAgICB9CiAKKyAgICBhZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5oYXMo
YnJlYWtwb2ludCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fa25vd25Q
cm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJlYWtwb2ludCwgbmV3IFNldCk7CisK
KyAgICAgICAgdGhpcy51cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAg
IH0KKworICAgIHJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFr
cG9pbnQuaGFzKGJyZWFrcG9pbnQpKTsKKworICAgICAgICB0aGlzLnVwZGF0ZVByb2Jlc0ZvckJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVy
c0ZvckJyZWFrcG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQpOworICAgIH0KKworICAgIHVwZGF0ZVBy
b2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7CisgICAgICAgIGxldCBrbm93blBy
b2JlSWRlbnRpZmllcnMgPSB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50
LmdldChicmVha3BvaW50KTsKKyAgICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMpIHsK
KyAgICAgICAgICAgIC8vIFNvbWV0aW1lcyBhY3Rpb25zIGNoYW5nZSBiZWZvcmUgdGhlIGFkZGVk
IGJyZWFrcG9pbnQgaXMgZnVsbHkgZGlzcGF0Y2hlZC4KKyAgICAgICAgICAgIHRoaXMuYWRkUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGxldCBzZWVuUHJvYmVJZGVudGlmaWVycyA9IG5ldyBTZXQ7CisKKyAg
ICAgICAgZm9yIChsZXQgcHJvYmVBY3Rpb24gb2YgYnJlYWtwb2ludC5wcm9iZUFjdGlvbnMpIHsK
KyAgICAgICAgICAgIGxldCBwcm9iZUlkZW50aWZpZXIgPSBwcm9iZUFjdGlvbi5pZDsKKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlSWRlbnRpZmllciwgIlByb2JlIGFkZGVkIHdpdGhv
dXQgYnJlYWtwb2ludCBhY3Rpb24gaWRlbnRpZmllcjogIiwgYnJlYWtwb2ludCk7CisKKyAgICAg
ICAgICAgIHNlZW5Qcm9iZUlkZW50aWZpZXJzLmFkZChwcm9iZUlkZW50aWZpZXIpOworICAgICAg
ICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpIHsK
KyAgICAgICAgICAgICAgICAvLyBOZXcgcHJvYmU7IGZpbmQgb3IgY3JlYXRlIHJlbGV2YW50IHBy
b2JlIHNldC4KKyAgICAgICAgICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuYWRkKHByb2Jl
SWRlbnRpZmllcik7CisgICAgICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVT
ZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIGxldCBuZXdQcm9i
ZSA9IG5ldyBXSS5Qcm9iZShwcm9iZUlkZW50aWZpZXIsIGJyZWFrcG9pbnQsIHByb2JlQWN0aW9u
LmRhdGEpOworICAgICAgICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5zZXQocHJv
YmVJZGVudGlmaWVyLCBuZXdQcm9iZSk7CisgICAgICAgICAgICAgICAgcHJvYmVTZXQuYWRkUHJv
YmUobmV3UHJvYmUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBsZXQgcHJvYmUgPSB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2Jl
SWRlbnRpZmllcik7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZSwgIlByb2JlIGtu
b3duIGJ1dCBjb3VsZG4ndCBiZSBmb3VuZCBieSBpZGVudGlmaWVyOiAiLCBwcm9iZUlkZW50aWZp
ZXIpOworICAgICAgICAgICAgLy8gVXBkYXRlIHByb2JlIGV4cHJlc3Npb247IGlmIGl0IGRpZmZl
cmVkLCBjaGFuZ2UgZXZlbnRzIHdpbGwgZmlyZS4KKyAgICAgICAgICAgIHByb2JlLmV4cHJlc3Np
b24gPSBwcm9iZUFjdGlvbi5kYXRhOworICAgICAgICB9CisKKyAgICAgICAgLy8gTG9vayBmb3Ig
bWlzc2luZyBwcm9iZXMgYmFzZWQgb24gd2hhdCB3ZSBzYXcgbGFzdC4KKyAgICAgICAgZm9yIChs
ZXQgcHJvYmVJZGVudGlmaWVyIG9mIGtub3duUHJvYmVJZGVudGlmaWVycykgeworICAgICAgICAg
ICAgaWYgKHNlZW5Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlkZW50aWZpZXIpKQorICAgICAg
ICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAvLyBUaGUgcHJvYmUgaGFzIGdvbmUgbWlz
c2luZywgcmVtb3ZlIGl0LgorICAgICAgICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVT
ZXRGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgbGV0IHByb2JlID0gdGhp
cy5fcHJvYmVzQnlJZGVudGlmaWVyLmdldChwcm9iZUlkZW50aWZpZXIpOworICAgICAgICAgICAg
dGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOworICAgICAg
ICAgICAga25vd25Qcm9iZUlkZW50aWZpZXJzLmRlbGV0ZShwcm9iZUlkZW50aWZpZXIpOworICAg
ICAgICAgICAgcHJvYmVTZXQucmVtb3ZlUHJvYmUocHJvYmUpOworCisgICAgICAgICAgICAvLyBS
ZW1vdmUgdGhlIHByb2JlIHNldCBpZiBpdCBoYXMgYmVjb21lIGVtcHR5LgorICAgICAgICAgICAg
aWYgKCFwcm9iZVNldC5wcm9iZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJv
YmVTZXRzQnlCcmVha3BvaW50LmRlbGV0ZShwcm9iZVNldC5icmVha3BvaW50KTsKKyAgICAgICAg
ICAgICAgICBwcm9iZVNldC53aWxsUmVtb3ZlKCk7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNw
YXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2JlU2V0UmVt
b3ZlZCwge3Byb2JlU2V0fSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKICAg
ICAvLyBEZWJ1Z2dlck9ic2VydmVyCiAKICAgICBicmVha3BvaW50UmVzb2x2ZWQodGFyZ2V0LCBi
cmVha3BvaW50SWRlbnRpZmllciwgbG9jYXRpb24pCkBAIC05OTcsNjAgKzEwNDksNiBAQCBXSS5E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgcmV0dXJuIG5ldyBXSS5TY29wZUNoYWluTm9kZSh0eXBlLCBbb2JqZWN0XSwgcGF5
bG9hZC5uYW1lLCBwYXlsb2FkLmxvY2F0aW9uLCBwYXlsb2FkLmVtcHR5KTsKICAgICB9CiAKLSAg
ICBfZGVidWdnZXJCcmVha3BvaW50QWN0aW9uVHlwZSh0eXBlKQotICAgIHsKLSAgICAgICAgc3dp
dGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZzoK
LSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtw
b2ludEFjdGlvblR5cGUuTG9nOwotICAgICAgICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlw
ZS5FdmFsdWF0ZToKLSAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVi
dWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuRXZhbHVhdGU7Ci0gICAgICAgIGNhc2UgV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLlNvdW5kOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJh
Y2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5Tb3VuZDsKLSAgICAgICAg
Y2FzZSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmU6Ci0gICAgICAgICAgICByZXR1cm4g
SW5zcGVjdG9yQmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb25UeXBlLlByb2Jl
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UpOwot
ICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVha3Bv
aW50QWN0aW9uVHlwZS5Mb2c7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBfZGVidWdnZXJCcmVh
a3BvaW50T3B0aW9ucyhicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgbGV0IGFjdGlvbnMgPSBi
cmVha3BvaW50LmFjdGlvbnM7Ci0gICAgICAgIGFjdGlvbnMgPSBhY3Rpb25zLm1hcCgoYWN0aW9u
KSA9PiBhY3Rpb24udG9Qcm90b2NvbCgpKTsKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMuZmls
dGVyKChhY3Rpb24pID0+IHsKLSAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSAhPT0gV0kuQnJl
YWtwb2ludEFjdGlvbi5UeXBlLkxvZykKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLQot
ICAgICAgICAgICAgaWYgKCEvXCRcey4qP1x9Ly50ZXN0KGFjdGlvbi5kYXRhKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKLQotICAgICAgICAgICAgbGV0IGxleGVyID0gbmV3IFdJLkJy
ZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXI7Ci0gICAgICAgICAgICBsZXQgdG9rZW5zID0gbGV4ZXIu
dG9rZW5pemUoYWN0aW9uLmRhdGEpOwotICAgICAgICAgICAgaWYgKCF0b2tlbnMpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICBsZXQgdGVtcGxhdGVMaXRlcmFs
ID0gdG9rZW5zLnJlZHVjZSgodGV4dCwgdG9rZW4pID0+IHsKLSAgICAgICAgICAgICAgICBpZiAo
dG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuUGxh
aW5UZXh0KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCArIHRva2VuLmRhdGEuZXNj
YXBlQ2hhcmFjdGVycygiYFxcIik7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09
IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9rZW5UeXBlLkV4cHJlc3Npb24pCi0gICAg
ICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgIiR7IiArIHRva2VuLmRhdGEgKyAifSI7Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgICAgICAgICB9LCAiIik7Ci0KLSAgICAg
ICAgICAgIGFjdGlvbi5kYXRhID0gImNvbnNvbGUubG9nKGAiICsgdGVtcGxhdGVMaXRlcmFsICsg
ImApIjsKLSAgICAgICAgICAgIGFjdGlvbi50eXBlID0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBl
LkV2YWx1YXRlOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0pOwotCi0gICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICBjb25kaXRpb246IGJyZWFrcG9pbnQuY29uZGl0aW9u
LAotICAgICAgICAgICAgaWdub3JlQ291bnQ6IGJyZWFrcG9pbnQuaWdub3JlQ291bnQsCi0gICAg
ICAgICAgICBhdXRvQ29udGludWU6IGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlLAotICAgICAgICAg
ICAgYWN0aW9ucywKLSAgICAgICAgfTsKLSAgICB9Ci0KICAgICBfc2V0QnJlYWtwb2ludChicmVh
a3BvaW50LCBzcGVjaWZpY1RhcmdldCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFi
cmVha3BvaW50LmRpc2FibGVkKTsKQEAgLTEwODgsMTIgKzEwODYsNiBAQCBXSS5EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
aWYgKCFzcGVjaWZpY1RhcmdldCkKICAgICAgICAgICAgIGJyZWFrcG9pbnQucmVzb2x2ZWQgPSBm
YWxzZTsKIAotICAgICAgICAvLyBDb252ZXJ0IEJyZWFrcG9pbnRBY3Rpb24gdHlwZXMgdG8gRGVi
dWdnZXJBZ2VudCBwcm90b2NvbCB0eXBlcy4KLSAgICAgICAgLy8gTk9URTogQnJlYWtwb2ludC5v
cHRpb25zIHJldHVybnMgbmV3IG9iamVjdHMgZWFjaCB0aW1lLCBzbyBpdCBpcyBzYWZlIHRvIG1v
ZGlmeS4KLSAgICAgICAgbGV0IG9wdGlvbnMgPSB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRPcHRp
b25zKGJyZWFrcG9pbnQpOwotICAgICAgICBmb3IgKGxldCBhY3Rpb24gb2Ygb3B0aW9ucy5hY3Rp
b25zKQotICAgICAgICAgICAgYWN0aW9uLnR5cGUgPSB0aGlzLl9kZWJ1Z2dlckJyZWFrcG9pbnRB
Y3Rpb25UeXBlKGFjdGlvbi50eXBlKTsKLQogICAgICAgICBpZiAoYnJlYWtwb2ludC5jb250ZW50
SWRlbnRpZmllcikgewogICAgICAgICAgICAgbGV0IHRhcmdldHMgPSBzcGVjaWZpY1RhcmdldCA/
IFtzcGVjaWZpY1RhcmdldF0gOiBXSS50YXJnZXRzOwogICAgICAgICAgICAgZm9yIChsZXQgdGFy
Z2V0IG9mIHRhcmdldHMpIHsKQEAgLTExMDIsMTQgKzEwOTQsMTQgQEAgV0kuRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICAgICAgICAgIHVybDogYnJlYWtwb2ludC5jb250ZW50SWRlbnRpZmllciwKICAgICAgICAgICAg
ICAgICAgICAgdXJsUmVnZXg6IHVuZGVmaW5lZCwKICAgICAgICAgICAgICAgICAgICAgY29sdW1u
TnVtYmVyOiBicmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXIsCi0gICAg
ICAgICAgICAgICAgICAgIG9wdGlvbnMKKyAgICAgICAgICAgICAgICAgICAgb3B0aW9uczogYnJl
YWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpLAogICAgICAgICAgICAgICAgIH0sIGRpZFNldEJy
ZWFrcG9pbnQuYmluZCh0aGlzLCB0YXJnZXQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBl
bHNlIGlmIChicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIpIHsKICAgICAgICAgICAgIGxldCB0
YXJnZXQgPSBicmVha3BvaW50LnRhcmdldDsKICAgICAgICAgICAgIHRhcmdldC5EZWJ1Z2dlckFn
ZW50LnNldEJyZWFrcG9pbnQuaW52b2tlKHsKICAgICAgICAgICAgICAgICBsb2NhdGlvbjoge3Nj
cmlwdElkOiBicmVha3BvaW50LnNjcmlwdElkZW50aWZpZXIsIGxpbmVOdW1iZXI6IGJyZWFrcG9p
bnQuc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcjogYnJlYWtwb2lu
dC5zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyfSwKLSAgICAgICAgICAgICAgICBvcHRp
b25zCisgICAgICAgICAgICAgICAgb3B0aW9uczogYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2Nv
bCgpLAogICAgICAgICAgICAgfSwgZGlkU2V0QnJlYWtwb2ludC5iaW5kKHRoaXMsIHRhcmdldCkp
OwogICAgICAgICB9IGVsc2UKICAgICAgICAgICAgIFdJLnJlcG9ydEludGVybmFsRXJyb3IoIlVu
a25vd24gc291cmNlIGZvciBicmVha3BvaW50LiIpOwpAQCAtMTIzMyw4ICsxMjI1LDggQEAgV0ku
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtw
b2ludCkpOwotICAgICAgICBpZiAoIXRoaXMuaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtwb2lu
dCkpCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQuZWRpdGFibGUpOworICAgICAg
ICBpZiAoIWJyZWFrcG9pbnQuZWRpdGFibGUpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgLy8gUmVtb3ZlIHRoZSBicmVha3BvaW50IHdpdGggaXRzIG9sZCBpZC4KQEAgLTEyNTAsNyAr
MTI0Miw3IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgIHsKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxlUHJv
cGVydHlEaWRDaGFuZ2UoZXZlbnQpOwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jlc0ZvckJy
ZWFrcG9pbnQoZXZlbnQudGFyZ2V0KTsKKyAgICAgICAgdGhpcy51cGRhdGVQcm9iZXNGb3JCcmVh
a3BvaW50KGV2ZW50LnRhcmdldCk7CiAgICAgfQogCiAgICAgX3N0YXJ0RGlzYWJsaW5nQnJlYWtw
b2ludHNUZW1wb3JhcmlseSgpCkBAIC0xNDEzLDc3ICsxNDA1LDYgQEAgV0kuRGVidWdnZXJNYW5h
Z2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRo
aXMuX2lnbm9yZUJyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2VFdmVudCA9IGZhbHNl
OwogICAgIH0KIAotICAgIF9hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAg
ewotICAgICAgICBpZiAodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5o
YXMoYnJlYWtwb2ludCkpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fa25v
d25Qcm9iZUlkZW50aWZpZXJzRm9yQnJlYWtwb2ludC5zZXQoYnJlYWtwb2ludCwgbmV3IFNldCk7
Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsK
LSAgICB9Ci0KLSAgICBfcmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQotICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9y
QnJlYWtwb2ludC5oYXMoYnJlYWtwb2ludCkpOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVByb2Jl
c0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgIHRoaXMuX2tub3duUHJvYmVJZGVu
dGlmaWVyc0ZvckJyZWFrcG9pbnQuZGVsZXRlKGJyZWFrcG9pbnQpOwotICAgIH0KLQotICAgIF91
cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBsZXQg
a25vd25Qcm9iZUlkZW50aWZpZXJzID0gdGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJl
YWtwb2ludC5nZXQoYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICgha25vd25Qcm9iZUlkZW50aWZp
ZXJzKSB7Ci0gICAgICAgICAgICAvLyBTb21ldGltZXMgYWN0aW9ucyBjaGFuZ2UgYmVmb3JlIHRo
ZSBhZGRlZCBicmVha3BvaW50IGlzIGZ1bGx5IGRpc3BhdGNoZWQuCi0gICAgICAgICAgICB0aGlz
Ll9hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0KLSAgICAgICAgbGV0IHNlZW5Qcm9iZUlkZW50aWZpZXJzID0gbmV3IFNl
dDsKLQotICAgICAgICBmb3IgKGxldCBwcm9iZUFjdGlvbiBvZiBicmVha3BvaW50LnByb2JlQWN0
aW9ucykgewotICAgICAgICAgICAgbGV0IHByb2JlSWRlbnRpZmllciA9IHByb2JlQWN0aW9uLmlk
OwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmVJZGVudGlmaWVyLCAiUHJvYmUgYWRk
ZWQgd2l0aG91dCBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVyOiAiLCBicmVha3BvaW50KTsK
LQotICAgICAgICAgICAgc2VlblByb2JlSWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7
Ci0gICAgICAgICAgICBpZiAoIWtub3duUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlm
aWVyKSkgewotICAgICAgICAgICAgICAgIC8vIE5ldyBwcm9iZTsgZmluZCBvciBjcmVhdGUgcmVs
ZXZhbnQgcHJvYmUgc2V0LgotICAgICAgICAgICAgICAgIGtub3duUHJvYmVJZGVudGlmaWVycy5h
ZGQocHJvYmVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlz
Ll9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgbGV0
IG5ld1Byb2JlID0gbmV3IFdJLlByb2JlKHByb2JlSWRlbnRpZmllciwgYnJlYWtwb2ludCwgcHJv
YmVBY3Rpb24uZGF0YSk7Ci0gICAgICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVy
LnNldChwcm9iZUlkZW50aWZpZXIsIG5ld1Byb2JlKTsKLSAgICAgICAgICAgICAgICBwcm9iZVNl
dC5hZGRQcm9iZShuZXdQcm9iZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAg
ICB9Ci0KLSAgICAgICAgICAgIGxldCBwcm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5n
ZXQocHJvYmVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlLCAi
UHJvYmUga25vd24gYnV0IGNvdWxkbid0IGJlIGZvdW5kIGJ5IGlkZW50aWZpZXI6ICIsIHByb2Jl
SWRlbnRpZmllcik7Ci0gICAgICAgICAgICAvLyBVcGRhdGUgcHJvYmUgZXhwcmVzc2lvbjsgaWYg
aXQgZGlmZmVyZWQsIGNoYW5nZSBldmVudHMgd2lsbCBmaXJlLgotICAgICAgICAgICAgcHJvYmUu
ZXhwcmVzc2lvbiA9IHByb2JlQWN0aW9uLmRhdGE7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBM
b29rIGZvciBtaXNzaW5nIHByb2JlcyBiYXNlZCBvbiB3aGF0IHdlIHNhdyBsYXN0LgotICAgICAg
ICBmb3IgKGxldCBwcm9iZUlkZW50aWZpZXIgb2Yga25vd25Qcm9iZUlkZW50aWZpZXJzKSB7Ci0g
ICAgICAgICAgICBpZiAoc2VlblByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikp
Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBwcm9iZSBoYXMg
Z29uZSBtaXNzaW5nLCByZW1vdmUgaXQuCi0gICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlz
Ll9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICBsZXQgcHJv
YmUgPSB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7Ci0gICAg
ICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7
Ci0gICAgICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuZGVsZXRlKHByb2JlSWRlbnRpZmll
cik7Ci0gICAgICAgICAgICBwcm9iZVNldC5yZW1vdmVQcm9iZShwcm9iZSk7Ci0KLSAgICAgICAg
ICAgIC8vIFJlbW92ZSB0aGUgcHJvYmUgc2V0IGlmIGl0IGhhcyBiZWNvbWUgZW1wdHkuCi0gICAg
ICAgICAgICBpZiAoIXByb2JlU2V0LnByb2Jlcy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICB0
aGlzLl9wcm9iZVNldHNCeUJyZWFrcG9pbnQuZGVsZXRlKHByb2JlU2V0LmJyZWFrcG9pbnQpOwot
ICAgICAgICAgICAgICAgIHByb2JlU2V0LndpbGxSZW1vdmUoKTsKLSAgICAgICAgICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJv
YmVTZXRSZW1vdmVkLCB7cHJvYmVTZXR9KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
IH0KLQogICAgIF9wcm9iZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7CiAgICAg
ICAgIGxldCBwcm9iZVNldCA9IHRoaXMuX3Byb2JlU2V0c0J5QnJlYWtwb2ludC5nZXQoYnJlYWtw
b2ludCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9D
b250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKaW5kZXggNWY1YzE4NDkx
NmRjZTVmNTJmZjViMTU5YjFkNmVmYWYwY2ExYjc3Zi4uNWY5MGFhZGJjNDk0ZGFmNDY2OGRiM2Y1
ZDkxNzBkZWI1Mjk5MWVhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwpA
QCAtOTUyLDEwICs5NTIsMTQgQEAgV0kuVGltZWxpbmVNYW5hZ2VyID0gY2xhc3MgVGltZWxpbmVN
YW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVh
azsKIAotICAgICAgICBjYXNlIEluc3BlY3RvckJhY2tlbmQuRW51bS5UaW1lbGluZS5FdmVudFR5
cGUuUHJvYmVTYW1wbGU6CisgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVs
aW5lLkV2ZW50VHlwZS5Qcm9iZVNhbXBsZTogeworICAgICAgICAgICAgbGV0IHByb2JlID0gV0ku
ZGVidWdnZXJNYW5hZ2VyLnByb2JlRm9ySWRlbnRpZmllcihyZWNvcmRQYXlsb2FkLmRhdGEucHJv
YmVJZCk7CisgICAgICAgICAgICBpZiAocHJvYmUuYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9
IHByb2JlLmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOworCiAgICAgICAgICAgICAvLyBQ
YXNzIHRoZSBzdGFydFRpbWUgYXMgdGhlIGVuZFRpbWUgc2luY2UgdGhpcyByZWNvcmQgdHlwZSBo
YXMgbm8gZHVyYXRpb24uCi0gICAgICAgICAgICBzb3VyY2VDb2RlTG9jYXRpb24gPSBXSS5kZWJ1
Z2dlck1hbmFnZXIucHJvYmVGb3JJZGVudGlmaWVyKHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlk
KS5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgICAgIHJldHVybiBuZXcg
V0kuU2NyaXB0VGltZWxpbmVSZWNvcmQoV0kuU2NyaXB0VGltZWxpbmVSZWNvcmQuRXZlbnRUeXBl
LlByb2JlU2FtcGxlUmVjb3JkZWQsIHN0YXJ0VGltZSwgc3RhcnRUaW1lLCBjYWxsRnJhbWVzLCBz
b3VyY2VDb2RlTG9jYXRpb24sIHJlY29yZFBheWxvYWQuZGF0YS5wcm9iZUlkKTsKKyAgICAgICAg
fQogCiAgICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVsaW5lLkV2ZW50VHlw
ZS5UaW1lckluc3RhbGw6CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChpc05hTihlbmRUaW1l
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWlu
Lmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5k
ZXggNWRiMjcxNWViYzIyODRjOTZiMWNiNmY5ZjYzNGU1YjQyODdmNmM3NC4uOWExMTU4ZmU2NTQ2
Zjk5ZmFiYmRiMDRmZTI5ZmRjOWZhMTM4MjMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtMTI3LDYgKzEyNyw3IEBACiAgICAgPGxpbmsg
cmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9JbmxpbmVTd2F0Y2guY3NzIj4KICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lucHV0UG9wb3Zlci5jc3MiPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSXNzdWVUcmVlRWxlbWVudC5jc3MiPgor
ICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9p
bnRUcmVlRWxlbWVudC5jc3MiPgogICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmll
d3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNo
ZWV0IiBocmVmPSJWaWV3cy9MYXllclRyZWVEZXRhaWxzU2lkZWJhclBhbmVsLmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmNz
cyI+CkBAIC0zNDksNiArMzUwLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvVGltZWxp
bmVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtl
ck9ic2VydmVyLmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtw
b2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50QWN0
aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbGxlY3Rpb24uanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ29uc29sZU1lc3NhZ2UuanMiPjwv
c2NyaXB0PgpAQCAtMzY5LDcgKzM3MSw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BcHBs
aWNhdGlvbkNhY2hlTWFuaWZlc3QuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvQmFja0ZvcndhcmRFbnRyeS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9Cb3hTaGFkb3cuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtw
b2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9DUFVJbnN0cnVtZW50
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVVRpbWVsaW5lLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVVRpbWVsaW5lUmVjb3JkLmpzIj48
L3NjcmlwdD4KQEAgLTQxNiw2ICs0MTcsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5k
ZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJN
b2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJbmRleC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9Jc3N1ZU1lc3NhZ2UuanMiPjwvc2NyaXB0PgorICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvS2V5Ym9hcmRTaG9ydGN1dC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9MYXllci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9MYXlvdXRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KQEAgLTcxNiw2ICs3MTgsNyBAQAog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9JbmxpbmVTd2F0Y2guanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9JbnB1dFBvcG92ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Jc3N1ZVRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURhdGFHcmlkTm9kZS5qcyI+PC9z
Y3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcwppbmRleCA5YTIwOWU4Mjg2YmJlNWI2ODk1
ZmVjNDk5ZTAwYWZkYmJiZGRjYzhjLi42NTI5MjQ0ZTRmOTNkM2M3NzgyMThmN2YyNmZhYTZlZTBj
NWNiN2Y3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcwpAQCAtMjUsMTA4ICsyNSw2MyBAQAogCiBXSS5CcmVh
a3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogewotICAgIGNvbnN0
cnVjdG9yKHNvdXJjZUNvZGVMb2NhdGlvbiwge2NvbnRlbnRJZGVudGlmaWVyLCBkaXNhYmxlZCwg
Y29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9KQorICAgIGNvbnN0cnVj
dG9yKHtkaXNhYmxlZCwgY29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVlfSA9IHt9
KQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlQ29kZUxvY2F0aW9uIGluc3Rh
bmNlb2YgV0kuU291cmNlQ29kZUxvY2F0aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWNv
bnRlbnRJZGVudGlmaWVyIHx8IHR5cGVvZiBjb250ZW50SWRlbnRpZmllciA9PT0gInN0cmluZyIp
OwotICAgICAgICBjb25zb2xlLmFzc2VydCghZGlzYWJsZWQgfHwgdHlwZW9mIGRpc2FibGVkID09
PSAiYm9vbGVhbiIpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghY29uZGl0aW9uIHx8IHR5cGVv
ZiBjb25kaXRpb24gPT09ICJzdHJpbmciKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoIWlnbm9y
ZUNvdW50IHx8ICFpc05hTihpZ25vcmVDb3VudCkpOwotICAgICAgICBjb25zb2xlLmFzc2VydCgh
YXV0b0NvbnRpbnVlIHx8IHR5cGVvZiBhdXRvQ29udGludWUgPT09ICJib29sZWFuIik7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KCFkaXNhYmxlZCB8fCB0eXBlb2YgZGlzYWJsZWQgPT09ICJib29s
ZWFuIiwgZGlzYWJsZWQpOworICAgICAgICBjb25zb2xlLmFzc2VydCghY29uZGl0aW9uIHx8IHR5
cGVvZiBjb25kaXRpb24gPT09ICJzdHJpbmciLCBjb25kaXRpb24pOworICAgICAgICBjb25zb2xl
LmFzc2VydCghaWdub3JlQ291bnQgfHwgIWlzTmFOKGlnbm9yZUNvdW50KSwgaWdub3JlQ291bnQp
OworICAgICAgICBjb25zb2xlLmFzc2VydCghYXV0b0NvbnRpbnVlIHx8IHR5cGVvZiBhdXRvQ29u
dGludWUgPT09ICJib29sZWFuIiwgYXV0b0NvbnRpbnVlKTsKIAogICAgICAgICBzdXBlcigpOwog
Ci0gICAgICAgIHRoaXMuX2lkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uID0gc291cmNlQ29kZUxvY2F0aW9uOworICAgICAgICAvLyBUaGlzIGNsYXNzIHNob3VsZCBu
b3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBDcmVhdGUgYSBjb25jcmV0ZSBzdWJjbGFzcyBp
bnN0ZWFkLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9yICE9PSBXSS5C
cmVha3BvaW50ICYmIHRoaXMgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsKIAotICAgICAgICBs
ZXQgc291cmNlQ29kZSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOwotICAg
ICAgICBpZiAoc291cmNlQ29kZSkgewotICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZp
ZXIgPSBzb3VyY2VDb2RlLmNvbnRlbnRJZGVudGlmaWVyOwotICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoIWNvbnRlbnRJZGVudGlmaWVyIHx8IGNvbnRlbnRJZGVudGlmaWVyID09PSB0aGlzLl9j
b250ZW50SWRlbnRpZmllciwgIlRoZSBjb250ZW50IGlkZW50aWZpZXIgZnJvbSB0aGUgc291cmNl
IGNvZGUgc2hvdWxkIG1hdGNoIHRoZSBnaXZlbiB2YWx1ZS4iKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICB0aGlzLl9jb250ZW50SWRlbnRpZmllciA9IGNvbnRlbnRJZGVudGlmaWVyIHx8
IG51bGw7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyIHx8
IHRoaXMuX2lzU3BlY2lhbCgpLCAiVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhIGNvbnRlbnQgaWRl
bnRpZmllciBmb3IgYSBicmVha3BvaW50LiIpOwotCi0gICAgICAgIHRoaXMuX3NjcmlwdElkZW50
aWZpZXIgPSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS5pZCA6
IG51bGw7Ci0gICAgICAgIHRoaXMuX3RhcmdldCA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5T
Y3JpcHQgPyBzb3VyY2VDb2RlLnRhcmdldCA6IG51bGw7CiAgICAgICAgIHRoaXMuX2Rpc2FibGVk
ID0gZGlzYWJsZWQgfHwgZmFsc2U7CiAgICAgICAgIHRoaXMuX2NvbmRpdGlvbiA9IGNvbmRpdGlv
biB8fCAiIjsKICAgICAgICAgdGhpcy5faWdub3JlQ291bnQgPSBpZ25vcmVDb3VudCB8fCAwOwog
ICAgICAgICB0aGlzLl9hdXRvQ29udGludWUgPSBhdXRvQ29udGludWUgfHwgZmFsc2U7CiAgICAg
ICAgIHRoaXMuX2FjdGlvbnMgPSBbXTsKLSAgICAgICAgdGhpcy5fcmVzb2x2ZWQgPSBmYWxzZTsK
LQotICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5T
b3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuTG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQsIHRoaXMpOwotICAgICAgICB0aGlzLl9zb3VyY2VDb2Rl
TG9jYXRpb24uYWRkRXZlbnRMaXN0ZW5lcihXSS5Tb3VyY2VDb2RlTG9jYXRpb24uRXZlbnQuRGlz
cGxheUxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0
aW9uQ2hhbmdlZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gSW1wb3J0IC8gRXhwb3J0CiAKLSAg
ICBzdGF0aWMgZnJvbUpTT04oanNvbikKLSAgICB7Ci0gICAgICAgIGNvbnN0IHNvdXJjZUNvZGUg
PSBudWxsOwotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBCcmVha3BvaW50KG5ldyBXSS5T
b3VyY2VDb2RlTG9jYXRpb24oc291cmNlQ29kZSwganNvbi5saW5lTnVtYmVyIHx8IDAsIGpzb24u
Y29sdW1uTnVtYmVyIHx8IDApLCB7Ci0gICAgICAgICAgICAvLyBUaGUgJ3VybCcgZmFsbGJhY2sg
aXMgZm9yIHRyYW5zaXRpb25pbmcgZnJvbSBvbGRlciBmcm9udGVuZHMgYW5kIHNob3VsZCBiZSBy
ZW1vdmVkLgotICAgICAgICAgICAgY29udGVudElkZW50aWZpZXI6IGpzb24uY29udGVudElkZW50
aWZpZXIgfHwganNvbi51cmwsCi0gICAgICAgICAgICBkaXNhYmxlZDoganNvbi5kaXNhYmxlZCwK
LSAgICAgICAgICAgIGNvbmRpdGlvbjoganNvbi5jb25kaXRpb24sCi0gICAgICAgICAgICBpZ25v
cmVDb3VudDoganNvbi5pZ25vcmVDb3VudCwKLSAgICAgICAgICAgIGF1dG9Db250aW51ZToganNv
bi5hdXRvQ29udGludWUsCi0gICAgICAgIH0pOwotICAgICAgICBicmVha3BvaW50Ll9hY3Rpb25z
ID0ganNvbi5hY3Rpb25zLm1hcCgoYWN0aW9uSlNPTikgPT4gV0kuQnJlYWtwb2ludEFjdGlvbi5m
cm9tSlNPTihhY3Rpb25KU09OLCBicmVha3BvaW50KSk7Ci0gICAgICAgIHJldHVybiBicmVha3Bv
aW50OwotICAgIH0KLQogICAgIHRvSlNPTihrZXkpCiAgICAgewotICAgICAgICAvLyBUaGUgaWQs
IHNjcmlwdElkZW50aWZpZXIsIHRhcmdldCwgYW5kIHJlc29sdmVkIHN0YXRlIGFyZSB0aWVkIHRv
IHRoZSBjdXJyZW50IHNlc3Npb24sIHNvIGRvbid0IGluY2x1ZGUgdGhlbSBmb3Igc2VyaWFsaXph
dGlvbi4KLSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAgICBjb250ZW50SWRlbnRpZmll
cjogdGhpcy5fY29udGVudElkZW50aWZpZXIsCi0gICAgICAgICAgICBsaW5lTnVtYmVyOiB0aGlz
Ll9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciwKLSAgICAgICAgICAgIGNvbHVtbk51bWJl
cjogdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlciwKLSAgICAgICAgICAgIGRp
c2FibGVkOiB0aGlzLl9kaXNhYmxlZCwKLSAgICAgICAgICAgIGNvbmRpdGlvbjogdGhpcy5fY29u
ZGl0aW9uLAotICAgICAgICAgICAgaWdub3JlQ291bnQ6IHRoaXMuX2lnbm9yZUNvdW50LAotICAg
ICAgICAgICAgYWN0aW9uczogdGhpcy5fYWN0aW9ucy5tYXAoKGFjdGlvbikgPT4gYWN0aW9uLnRv
SlNPTigpKSwKLSAgICAgICAgICAgIGF1dG9Db250aW51ZTogdGhpcy5fYXV0b0NvbnRpbnVlLAot
ICAgICAgICB9OwotICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1i
b2wpCi0gICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5rZXlQYXRo
XSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uLmxpbmVOdW1iZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVt
YmVyOworICAgICAgICBsZXQganNvbiA9IHt9OworICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQp
CisgICAgICAgICAgICBqc29uLmRpc2FibGVkID0gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAgIGlm
ICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9uKQorICAg
ICAgICAgICAgICAgIGpzb24uY29uZGl0aW9uID0gdGhpcy5fY29uZGl0aW9uOworICAgICAgICAg
ICAgaWYgKHRoaXMuX2lnbm9yZUNvdW50KQorICAgICAgICAgICAgICAgIGpzb24uaWdub3JlQ291
bnQgPSB0aGlzLl9pZ25vcmVDb3VudDsKKyAgICAgICAgICAgIGlmICh0aGlzLl9hY3Rpb25zLmxl
bmd0aCkKKyAgICAgICAgICAgICAgICBqc29uLmFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcCgo
YWN0aW9uKSA9PiBhY3Rpb24udG9KU09OKCkpOworICAgICAgICAgICAgaWYgKHRoaXMuX2F1dG9D
b250aW51ZSkKKyAgICAgICAgICAgICAgICBqc29uLmF1dG9Db250aW51ZSA9IHRoaXMuX2F1dG9D
b250aW51ZTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4ganNvbjsKICAgICB9CiAKICAgICAv
LyBQdWJsaWMKIAotICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKSB7IHJldHVybiB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb247IH0KLSAgICBnZXQgY29udGVudElkZW50aWZpZXIoKSB7IHJldHVy
biB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsgfQotICAgIGdldCBzY3JpcHRJZGVudGlmaWVyKCkg
eyByZXR1cm4gdGhpcy5fc2NyaXB0SWRlbnRpZmllcjsgfQotICAgIGdldCB0YXJnZXQoKSB7IHJl
dHVybiB0aGlzLl90YXJnZXQ7IH0KLQotICAgIGdldCBpZGVudGlmaWVyKCkKKyAgICBnZXQgc3Bl
Y2lhbCgpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5faWQ7CisgICAgICAgIC8vIE92ZXJy
aWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICB9CiAKLSAgICBzZXQgaWRlbnRpZmllcihpZCkKKyAgICBnZXQgcmVtb3ZhYmxlKCkKICAgICB7
Ci0gICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBi
eSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0g
ICAgZ2V0IHJlc29sdmVkKCkKKyAgICBnZXQgZWRpdGFibGUoKQogICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3Jlc29sdmVkOwotICAgIH0KLQotICAgIHNldCByZXNvbHZlZChyZXNvbHZlZCkK
LSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCA9PT0gcmVzb2x2ZWQpCi0gICAgICAg
ICAgICByZXR1cm47Ci0KLSAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlc29sdmVkIHx8IHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlIHx8IHRoaXMuX2lzU3BlY2lhbCgpLCAiQnJl
YWtwb2ludHMgbXVzdCBoYXZlIGEgU291cmNlQ29kZSB0byBiZSByZXNvbHZlZC4iLCB0aGlzKTsK
LQotICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IHJlc29sdmVkIHx8IGZhbHNlOwotCi0gICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2
ZWRTdGF0ZURpZENoYW5nZSk7CisgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBp
ZiBuZWVkZWQuCisgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBnZXQgZGlzYWJs
ZWQoKQpAQCAtMTUxLDYgKzEwNiw5IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzZXQgY29uZGl0aW9uKGNvbmRpdGlvbikKICAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworICAgICAgICBj
b25zb2xlLmFzc2VydCh0eXBlb2YgY29uZGl0aW9uID09PSAic3RyaW5nIik7CisKICAgICAgICAg
aWYgKHRoaXMuX2NvbmRpdGlvbiA9PT0gY29uZGl0aW9uKQogICAgICAgICAgICAgcmV0dXJuOwog
CkBAIC0xNjEsMTEgKzExOSwxNSBAQCBXSS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGlnbm9yZUNvdW50KCkKICAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHJldHVybiB0
aGlzLl9pZ25vcmVDb3VudDsKICAgICB9CiAKICAgICBzZXQgaWdub3JlQ291bnQoaWdub3JlQ291
bnQpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsK
KwogICAgICAgICBjb25zb2xlLmFzc2VydChpZ25vcmVDb3VudCA+PSAwLCAiSWdub3JlIGNvdW50
IGNhbm5vdCBiZSBuZWdhdGl2ZS4iKTsKICAgICAgICAgaWYgKGlnbm9yZUNvdW50IDwgMCkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE4MCwxMSArMTQyLDE1IEBAIFdJLkJyZWFrcG9pbnQgPSBj
bGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgYXV0b0NvbnRpbnVl
KCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOwor
CiAgICAgICAgIHJldHVybiB0aGlzLl9hdXRvQ29udGludWU7CiAgICAgfQogCiAgICAgc2V0IGF1
dG9Db250aW51ZShjb250KQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0
YWJsZSwgdGhpcyk7CisKICAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSA9PT0gY29udCkK
ICAgICAgICAgICAgIHJldHVybjsKIApAQCAtMTk1LDExICsxNjEsMTUgQEAgV0kuQnJlYWtwb2lu
dCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBhY3Rpb25z
KCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOwor
CiAgICAgICAgIHJldHVybiB0aGlzLl9hY3Rpb25zOwogICAgIH0KIAogICAgIGdldCBwcm9iZUFj
dGlvbnMoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhp
cyk7CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnMuZmlsdGVyKGZ1bmN0aW9uKGFjdGlv
bikgewogICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi50eXBlID09PSBXSS5CcmVha3BvaW50QWN0
aW9uLlR5cGUuUHJvYmU7CiAgICAgICAgIH0pOwpAQCAtMjA4LDI3ICsxNzgsMzQgQEAgV0kuQnJl
YWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBjeWNsZVRv
TmV4dE1vZGUoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHsKLSAgICAgICAg
ICAgIC8vIFdoZW4gY3ljbGluZywgY2xlYXIgYXV0by1jb250aW51ZSB3aGVuIGdvaW5nIGZyb20g
ZGlzYWJsZWQgdG8gZW5hYmxlZC4KLSAgICAgICAgICAgIHRoaXMuYXV0b0NvbnRpbnVlID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAodGhpcy5lZGl0YWJsZSkgeworICAgICAgICAgICAgICAgIC8v
IFdoZW4gY3ljbGluZywgY2xlYXIgYXV0by1jb250aW51ZSB3aGVuIGdvaW5nIGZyb20gZGlzYWJs
ZWQgdG8gZW5hYmxlZC4KKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9IGZhbHNl
OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB0aGlzLmRpc2FibGVkID0gZmFsc2U7CiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5hdXRvQ29u
dGludWUpIHsKLSAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAg
ICAgICBpZiAodGhpcy5hdXRvQ29udGludWUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRpc2Fi
bGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAKLSAg
ICAgICAgaWYgKHRoaXMuYWN0aW9ucy5sZW5ndGgpIHsKLSAgICAgICAgICAgIHRoaXMuYXV0b0Nv
bnRpbnVlID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGlmICh0aGlz
LmFjdGlvbnMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSB0
cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQog
CiAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSB0cnVlOwogICAgIH0KIAotICAgIGNyZWF0ZUFjdGlv
bih0eXBlLCBwcmVjZWRpbmdBY3Rpb24sIGRhdGEpCisgICAgY3JlYXRlQWN0aW9uKHR5cGUsIHtk
YXRhLCBwcmVjZWRpbmdBY3Rpb259ID0ge30pCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICB2YXIgbmV3QWN0aW9uID0gbmV3IFdJ
LkJyZWFrcG9pbnRBY3Rpb24odGhpcywgdHlwZSwgZGF0YSB8fCBudWxsKTsKIAogICAgICAgICBp
ZiAoIXByZWNlZGluZ0FjdGlvbikKQEAgLTI0OSw2ICsyMjYsOCBAQCBXSS5CcmVha3BvaW50ID0g
Y2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgcmVjcmVhdGVBY3Rpb24o
dHlwZSwgYWN0aW9uVG9SZXBsYWNlKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhp
cy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5fYWN0aW9ucy5p
bmRleE9mKGFjdGlvblRvUmVwbGFjZSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGluZGV4ICE9
PSAtMSk7CiAgICAgICAgIGlmIChpbmRleCA9PT0gLTEpCkBAIC0yNjUsNiArMjQ0LDggQEAgV0ku
QnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHJl
bW92ZUFjdGlvbihhY3Rpb24pCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVk
aXRhYmxlLCB0aGlzKTsKKwogICAgICAgICB2YXIgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4
T2YoYWN0aW9uKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAg
ICAgaWYgKGluZGV4ID09PSAtMSkKQEAgLTI4MCw2ICsyNjEsOCBAQCBXSS5CcmVha3BvaW50ID0g
Y2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgY2xlYXJBY3Rpb25zKHR5
cGUpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsK
KwogICAgICAgICBpZiAoIXR5cGUpCiAgICAgICAgICAgICB0aGlzLl9hY3Rpb25zID0gW107CiAg
ICAgICAgIGVsc2UKQEAgLTI4OCwxNyArMjcxLDY0IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBC
cmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSk7CiAgICAgfQog
Ci0gICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQorICAgIHJlbW92ZSgpCiAgICAgewot
ICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtY29udGVudC1pZGVudGlmaWVyIl0gPSB0aGlzLl9j
b250ZW50SWRlbnRpZmllcjsKLSAgICAgICAgY29va2llWyJicmVha3BvaW50LWxpbmUtbnVtYmVy
Il0gPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlcjsKLSAgICAgICAgY29va2ll
WyJicmVha3BvaW50LWNvbHVtbi1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5j
b2x1bW5OdW1iZXI7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMucmVtb3ZhYmxlLCB0aGlz
KTsKKworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgorICAg
IH0KKworICAgIG9wdGlvbnNUb1Byb3RvY29sKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCisgICAgICAgIGxldCBwYXlsb2FkID0ge307CisK
KyAgICAgICAgaWYgKHRoaXMuX2NvbmRpdGlvbikKKyAgICAgICAgICAgIHBheWxvYWQuY29uZGl0
aW9uID0gdGhpcy5fY29uZGl0aW9uOworCisgICAgICAgIGlmICh0aGlzLl9hY3Rpb25zLmxlbmd0
aCkgeworICAgICAgICAgICAgcGF5bG9hZC5hY3Rpb25zID0gdGhpcy5fYWN0aW9ucy5tYXAoKGFj
dGlvbikgPT4gYWN0aW9uLnRvUHJvdG9jb2woKSkuZmlsdGVyKChhY3Rpb24pID0+IHsKKyAgICAg
ICAgICAgICAgICBpZiAoYWN0aW9uLnR5cGUgIT09IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5M
b2cpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCisgICAgICAgICAgICAgICAg
aWYgKCEvXCRcey4qP1x9Ly50ZXN0KGFjdGlvbi5kYXRhKSkKKyAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAgICBsZXQgbGV4ZXIgPSBuZXcgV0kuQnJlYWtw
b2ludExvZ01lc3NhZ2VMZXhlcjsKKyAgICAgICAgICAgICAgICBsZXQgdG9rZW5zID0gbGV4ZXIu
dG9rZW5pemUoYWN0aW9uLmRhdGEpOworICAgICAgICAgICAgICAgIGlmICghdG9rZW5zKQorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgICAgICAgICBsZXQgdGVt
cGxhdGVMaXRlcmFsID0gdG9rZW5zLnJlZHVjZSgodGV4dCwgdG9rZW4pID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4
ZXIuVG9rZW5UeXBlLlBsYWluVGV4dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
ZXh0ICsgdG9rZW4uZGF0YS5lc2NhcGVDaGFyYWN0ZXJzKCJgXFwiKTsKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRMb2dNZXNzYWdlTGV4ZXIuVG9r
ZW5UeXBlLkV4cHJlc3Npb24pCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4dCAr
ICIkeyIgKyB0b2tlbi5kYXRhICsgIn0iOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGV4
dDsKKyAgICAgICAgICAgICAgICB9LCAiIik7CisKKyAgICAgICAgICAgICAgICBhY3Rpb24uZGF0
YSA9ICJjb25zb2xlLmxvZyhgIiArIHRlbXBsYXRlTGl0ZXJhbCArICJgKSI7CisgICAgICAgICAg
ICAgICAgYWN0aW9uLnR5cGUgPSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGU7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICh0aGlzLl9hdXRvQ29udGludWUpCisgICAgICAgICAgICBwYXlsb2FkLmF1
dG9Db250aW51ZSA9IHRoaXMuX2F1dG9Db250aW51ZTsKKworICAgICAgICBpZiAodGhpcy5faWdu
b3JlQ291bnQpCisgICAgICAgICAgICBwYXlsb2FkLmlnbm9yZUNvdW50ID0gdGhpcy5faWdub3Jl
Q291bnQ7CisKKyAgICAgICAgcmV0dXJuICFpc0VtcHR5T2JqZWN0KHBheWxvYWQpID8gcGF5bG9h
ZCA6IHVuZGVmaW5lZDsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQgKENhbGxlZCBieSBCcmVh
a3BvaW50QWN0aW9uKQogCiAgICAgYnJlYWtwb2ludEFjdGlvbkRpZENoYW5nZShhY3Rpb24pCiAg
ICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAg
ICAgICB2YXIgaW5kZXggPSB0aGlzLl9hY3Rpb25zLmluZGV4T2YoYWN0aW9uKTsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQoaW5kZXggIT09IC0xKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkK
QEAgLTMwNiwzNCArMzM2LDE0IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4
dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMo
V0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9Ci0KLSAgICAvLyBQ
cml2YXRlCi0KLSAgICBfaXNTcGVjaWFsKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb24uaXNFcXVhbChuZXcgV0kuU291cmNlQ29kZUxvY2F0aW9uKG51bGws
IEluZmluaXR5LCBJbmZpbml0eSkpOwotICAgIH0KLQotICAgIF9zb3VyY2VDb2RlTG9jYXRpb25M
b2NhdGlvbkNoYW5nZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5k
YXRhKTsKLSAgICB9Ci0KLSAgICBfc291cmNlQ29kZUxvY2F0aW9uRGlzcGxheUxvY2F0aW9uQ2hh
bmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJz
KFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRh
KTsKLSAgICB9CiB9OwogCiBXSS5CcmVha3BvaW50LlR5cGVJZGVudGlmaWVyID0gImJyZWFrcG9p
bnQiOwogCiBXSS5CcmVha3BvaW50LkV2ZW50ID0gewogICAgIERpc2FibGVkU3RhdGVEaWRDaGFu
Z2U6ICJicmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWRpZC1jaGFuZ2UiLAotICAgIFJlc29sdmVk
U3RhdGVEaWRDaGFuZ2U6ICJicmVha3BvaW50LXJlc29sdmVkLXN0YXRlLWRpZC1jaGFuZ2UiLAog
ICAgIENvbmRpdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQtY29uZGl0aW9uLWRpZC1jaGFuZ2Ui
LAogICAgIElnbm9yZUNvdW50RGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1pZ25vcmUtY291bnQtZGlk
LWNoYW5nZSIsCiAgICAgQWN0aW9uc0RpZENoYW5nZTogImJyZWFrcG9pbnQtYWN0aW9ucy1kaWQt
Y2hhbmdlIiwKICAgICBBdXRvQ29udGludWVEaWRDaGFuZ2U6ICJicmVha3BvaW50LWF1dG8tY29u
dGludWUtZGlkLWNoYW5nZSIsCi0gICAgTG9jYXRpb25EaWRDaGFuZ2U6ICJicmVha3BvaW50LWxv
Y2F0aW9uLWRpZC1jaGFuZ2UiLAotICAgIERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZTogImJyZWFr
cG9pbnQtZGlzcGxheS1sb2NhdGlvbi1kaWQtY2hhbmdlIiwKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludEFjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50
QWN0aW9uLmpzCmluZGV4IGQ4YmU3ZjVkMmU4YmQ4NmI1M2JiYzU5YjI4ZmExZjdiZjAzMjA2ZGYu
LjM0ZmIwYTNkOGFhZWZlNDRlNTEzMjY3OTBmZDY2MjRhMTIyNjVmMjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVh
a3BvaW50QWN0aW9uLmpzCkBAIC0yNyw4ICsyNyw5IEBAIFdJLkJyZWFrcG9pbnRBY3Rpb24gPSBj
bGFzcyBCcmVha3BvaW50QWN0aW9uCiB7CiAgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwgdHlw
ZSwgZGF0YSkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFu
Y2VvZiBXSS5CcmVha3BvaW50KTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVl
cyhXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUpLmluY2x1ZGVzKHR5cGUpKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsIGJyZWFrcG9p
bnQpOworICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZSkuaW5jbHVkZXModHlwZSksIHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2Vy
dCghZGF0YSB8fCB0eXBlb2YgZGF0YSA9PT0gInN0cmluZyIsIGRhdGEpOwogCiAgICAgICAgIHRo
aXMuX2JyZWFrcG9pbnQgPSBicmVha3BvaW50OwogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9E
T01CcmVha3BvaW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTUJyZWFrcG9pbnQuanMKaW5kZXggNzk5NDU5YjdiNjQxZmM2ZmRiYTA3NWZiMjg3OTNm
OTdkODA3N2Y2ZS4uMDUzN2QzNmJiYjdkMGVlZTFhZmZhMGIzNmRhNGEyZjE1Y2NjNDU3OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTUJy
ZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTUJyZWFrcG9pbnQuanMKQEAgLTIzLDE0ICsyMywxNCBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLVdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01C
cmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CitXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9N
QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsKICAgICBjb25zdHJ1Y3Rvcihkb21O
b2RlT3JJbmZvLCB0eXBlLCB7ZGlzYWJsZWR9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xl
LmFzc2VydChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSB8fCB0eXBlb2YgZG9t
Tm9kZU9ySW5mbyA9PT0gIm9iamVjdCIsIGRvbU5vZGVPckluZm8pOwogICAgICAgICBjb25zb2xl
LmFzc2VydChPYmplY3QudmFsdWVzKFdJLkRPTUJyZWFrcG9pbnQuVHlwZSkuaW5jbHVkZXModHlw
ZSksIHR5cGUpOwogCi0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIHN1cGVyKHtkaXNhYmxlZH0p
OwogCiAgICAgICAgIGlmIChkb21Ob2RlT3JJbmZvIGluc3RhbmNlb2YgV0kuRE9NTm9kZSkgewog
ICAgICAgICAgICAgdGhpcy5fZG9tTm9kZUlkZW50aWZpZXIgPSBkb21Ob2RlT3JJbmZvLmlkOwpA
QCAtNDQsMTUgKzQ0LDE0IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLl90eXBlID0gdHlw
ZTsKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAK
ICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykK
KyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0ku
RE9NQnJlYWtwb2ludChzZXJpYWxpemVkSW5mbywgc2VyaWFsaXplZEluZm8udHlwZSwgewotICAg
ICAgICAgICAgZGlzYWJsZWQ6ICEhc2VyaWFsaXplZEluZm8uZGlzYWJsZWQsCisgICAgICAgIHJl
dHVybiBuZXcgV0kuRE9NQnJlYWtwb2ludChqc29uLCBqc29uLnR5cGUsIHsKKyAgICAgICAgICAg
IGRpc2FibGVkOiBqc29uLmRpc2FibGVkLAogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTYyLDIx
ICs2MSw2IEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRoaXMuX3VybDsgfQogICAgIGdldCBw
YXRoKCkgeyByZXR1cm4gdGhpcy5fcGF0aDsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkKLSAgICB7
Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKLSAgICB9Ci0KLSAgICBzZXQgZGlzYWJs
ZWQoZGlzYWJsZWQpCi0gICAgewotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQgPT09IGRpc2Fi
bGVkKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlz
YWJsZWQ7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NQnJl
YWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCk7Ci0gICAgfQotCiAgICAgZ2V0IGRv
bU5vZGVJZGVudGlmaWVyKCkKICAgICB7CiAgICAgICAgIHJldHVybiB0aGlzLl9kb21Ob2RlSWRl
bnRpZmllcjsKQEAgLTk2LDYgKzgwLDEzIEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01C
cmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNoYW5nZWQsIGRhdGEpOwog
ICAgIH0KIAorICAgIHJlbW92ZSgpCisgICAgeworICAgICAgICBzdXBlci5yZW1vdmUoKTsKKwor
ICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCh0aGlzKTsK
KyAgICB9CisKICAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCiAgICAgewogICAgICAg
ICBjb29raWVbImRvbS1icmVha3BvaW50LXVybCJdID0gdGhpcy5fdXJsOwpAQCAtMTA1LDEzICs5
NiwxMCBAQCBXSS5ET01CcmVha3BvaW50ID0gY2xhc3MgRE9NQnJlYWtwb2ludCBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBqc29uID0gewot
ICAgICAgICAgICAgdXJsOiB0aGlzLl91cmwsCi0gICAgICAgICAgICBwYXRoOiB0aGlzLl9wYXRo
LAotICAgICAgICAgICAgdHlwZTogdGhpcy5fdHlwZSwKLSAgICAgICAgfTsKLSAgICAgICAgaWYg
KHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAganNvbi5kaXNhYmxlZCA9IHRydWU7CisgICAg
ICAgIGxldCBqc29uID0gc3VwZXIudG9KU09OKGtleSk7CisgICAgICAgIGpzb24udXJsID0gdGhp
cy5fdXJsOworICAgICAgICBqc29uLnBhdGggPSB0aGlzLl9wYXRoOworICAgICAgICBqc29uLnR5
cGUgPSB0aGlzLl90eXBlOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pT
T05TeW1ib2wpCiAgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5kb21CcmVha3BvaW50
cy5rZXlQYXRoXSA9IHRoaXMuX3VybCArICI6IiArIHRoaXMuX3BhdGggKyAiOiIgKyB0aGlzLl90
eXBlOwogICAgICAgICByZXR1cm4ganNvbjsKQEAgLTEyNiw1ICsxMTQsNCBAQCBXSS5ET01CcmVh
a3BvaW50LlR5cGUgPSB7CiAKIFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAgRE9NTm9k
ZUNoYW5nZWQ6ICJkb20tYnJlYWtwb2ludC1kb20tbm9kZS1jaGFuZ2VkIiwKLSAgICBEaXNhYmxl
ZFN0YXRlQ2hhbmdlZDogImRvbS1icmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWNoYW5nZWQiLAog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9FdmVudEJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzCmluZGV4IGZmMWU3OWNmZTRkYmE1ZDZjNDQyOGFi
NDdmY2FiNDkzNWZlYjAyYWUuLjM3NjY4MmM1MzAwNGM3YTVhMTkxYTUzYjM1ZTU2YjZhODNhZDll
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9FdmVudEJyZWFrcG9pbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qcwpAQCAtMjMsMjggKzIzLDQ3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuRXZlbnRCcmVha3BvaW50
ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CitXSS5FdmVudEJyZWFr
cG9pbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50CiB7Ci0g
ICAgY29uc3RydWN0b3IodHlwZSwge2V2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwgZGlzYWJsZWR9
ID0ge30pCisgICAgY29uc3RydWN0b3IodHlwZSwge2V2ZW50TmFtZSwgZXZlbnRMaXN0ZW5lciwg
ZGlzYWJsZWQsIGFjdGlvbnMsIGNvbmRpdGlvbiwgaWdub3JlQ291bnQsIGF1dG9Db250aW51ZX0g
PSB7fSkKICAgICB7Ci0gICAgICAgIHN1cGVyKCk7CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxMyk6IERPTURlYnVnZ2VyLkV2ZW50QnJlYWtwb2ludFR5cGVzLlRpbWVyIHdhcyByZW1v
dmVkLgorICAgICAgICBpZiAodHlwZSA9PT0gInRpbWVyIikgeworICAgICAgICAgICAgc3dpdGNo
IChldmVudE5hbWUpIHsKKyAgICAgICAgICAgIGNhc2UgInNldEludGVydmFsIjoKKyAgICAgICAg
ICAgICAgICB0eXBlID0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWw7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgInNldFRpbWVvdXQiOgorICAgICAg
ICAgICAgICAgIHR5cGUgPSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0OworICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgY29u
c29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhXSS5FdmVudEJyZWFrcG9pbnQuVHlwZSkuaW5jbHVk
ZXModHlwZSksIHR5cGUpOworICAgICAgICBjb25zb2xlLmFzc2VydCghZXZlbnROYW1lIHx8IHR5
cGUgPT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpOworICAg
ICAgICBjb25zb2xlLmFzc2VydCghZXZlbnRMaXN0ZW5lciB8fCB0eXBlID09PSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgZXZlbnRMaXN0ZW5lcik7CisKKyAgICAgICAgc3VwZXIo
e2Rpc2FibGVkLCBjb25kaXRpb24sIGFjdGlvbnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9
KTsKIAogICAgICAgICB0aGlzLl90eXBlID0gdHlwZTsKICAgICAgICAgdGhpcy5fZXZlbnROYW1l
ID0gZXZlbnROYW1lIHx8IG51bGw7CiAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXIgPSBldmVu
dExpc3RlbmVyIHx8IG51bGw7Ci0gICAgICAgIHRoaXMuX2Rpc2FibGVkID0gZGlzYWJsZWQgfHwg
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCiAKLSAgICBzdGF0aWMgZGVzZXJpYWxpemUo
c2VyaWFsaXplZEluZm8pCisgICAgc3RhdGljIGZyb21KU09OKGpzb24pCiAgICAgewotICAgICAg
ICByZXR1cm4gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChzZXJpYWxpemVkSW5mby50eXBlLCB7Ci0g
ICAgICAgICAgICBldmVudE5hbWU6IHNlcmlhbGl6ZWRJbmZvLmV2ZW50TmFtZSwKLSAgICAgICAg
ICAgIGRpc2FibGVkOiAhIXNlcmlhbGl6ZWRJbmZvLmRpc2FibGVkLAorICAgICAgICBsZXQgYnJl
YWtwb2ludCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnQoanNvbi50eXBlLCB7CisgICAgICAgICAg
ICBldmVudE5hbWU6IGpzb24uZXZlbnROYW1lLAorICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24u
ZGlzYWJsZWQsCisgICAgICAgICAgICBjb25kaXRpb246IGpzb24uY29uZGl0aW9uLAorICAgICAg
ICAgICAgaWdub3JlQ291bnQ6IGpzb24uaWdub3JlQ291bnQsCisgICAgICAgICAgICBhdXRvQ29u
dGludWU6IGpzb24uYXV0b0NvbnRpbnVlLAogICAgICAgICB9KTsKKyAgICAgICAgYnJlYWtwb2lu
dC5fYWN0aW9ucyA9IGpzb24uYWN0aW9ucz8ubWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3Bv
aW50QWN0aW9uLmZyb21KU09OKGFjdGlvbkpTT04sIGJyZWFrcG9pbnQpKSB8fCBbXTsKKyAgICAg
ICAgcmV0dXJuIGJyZWFrcG9pbnQ7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC01MywxOSAr
NzIsMzQgQEAgV0kuRXZlbnRCcmVha3BvaW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50IGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgZ2V0IGV2ZW50TmFtZSgpIHsgcmV0dXJuIHRoaXMuX2V2ZW50TmFt
ZTsgfQogICAgIGdldCBldmVudExpc3RlbmVyKCkgeyByZXR1cm4gdGhpcy5fZXZlbnRMaXN0ZW5l
cjsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkKKyAgICBnZXQgc3BlY2lhbCgpCiAgICAgewotICAg
ICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAg
ICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50OgorICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVh
a3BvaW50OgorICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNC
cmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0
c0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCisg
ICAgZ2V0IGVkaXRhYmxlKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PT0g
ZGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIC8vIENPTVBBVElCSUxJVFkg
KGlPUyAxNCk6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciBkaWQgbm90IGhhdmUg
YW4gIm9wdGlvbnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlP
UyAxNCk6IERPTURlYnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGhhdmUgYW4gIm9w
dGlvbnMiIHBhcmFtZXRlciB5ZXQuCisgICAgICAgIHJldHVybiB0aGlzLl9ldmVudExpc3RlbmVy
ID8gSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50
TGlzdGVuZXIiLCAib3B0aW9ucyIpIDogSW5zcGVjdG9yQmFja2VuZC5oYXNDb21tYW5kKCJET01E
ZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQiLCAib3B0aW9ucyIpOworICAgIH0KIAotICAgICAg
ICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkOworICAgIHJlbW92ZSgpCisgICAgeworICAgICAg
ICBzdXBlci5yZW1vdmUoKTsKIAotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5FdmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQpOworICAgICAg
ICBpZiAodGhpcy5fZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVt
b3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhpcy5fZXZlbnRMaXN0ZW5lcik7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJy
ZWFrcG9pbnQodGhpcyk7CiAgICAgfQogCiAgICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2ll
KQpAQCAtNzUsMTkgKzEwOSwxNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJy
ZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIGNvb2tpZVsiZXZlbnQtYnJl
YWtwb2ludC1ldmVudC1uYW1lIl0gPSB0aGlzLl9ldmVudE5hbWU7CiAgICAgICAgIGlmICh0aGlz
Ll9ldmVudExpc3RlbmVyKQogICAgICAgICAgICAgY29va2llWyJldmVudC1icmVha3BvaW50LWV2
ZW50LWxpc3RlbmVyIl0gPSB0aGlzLl9ldmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZDsKLSAg
ICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQotICAgICAgICAgICAgY29va2llWyJldmVudC1icmVh
a3BvaW50LWRpc2FibGVkIl0gPSB0aGlzLl9kaXNhYmxlZDsKICAgICB9CiAKICAgICB0b0pTT04o
a2V5KQogICAgIHsKLSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlz
Ll90eXBlLAotICAgICAgICB9OworICAgICAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihrZXkp
OworICAgICAgICBqc29uLnR5cGUgPSB0aGlzLl90eXBlOwogICAgICAgICBpZiAodGhpcy5fZXZl
bnROYW1lKQogICAgICAgICAgICAganNvbi5ldmVudE5hbWUgPSB0aGlzLl9ldmVudE5hbWU7Ci0g
ICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkKLSAgICAgICAgICAgIGpzb24uZGlzYWJsZWQgPSB0
cnVlOwogICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCiAg
ICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmtleVBhdGhd
ID0gdGhpcy5fdHlwZSArICh0aGlzLl9ldmVudE5hbWUgPyAiOiIgKyB0aGlzLl9ldmVudE5hbWUg
OiAiIik7CiAgICAgICAgIHJldHVybiBqc29uOwpAQCAtOTksMTEgKzEyOCw0IEBAIFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlID0gewogICAgIEludGVydmFsOiAiaW50ZXJ2YWwiLAogICAgIExpc3Rl
bmVyOiAibGlzdGVuZXIiLAogICAgIFRpbWVvdXQ6ICJ0aW1lb3V0IiwKLQotICAgIC8vIENPTVBB
VElCSUxJVFkgKGlPUyAxMyk6IERPTURlYnVnZ2VyLkV2ZW50QnJlYWtwb2ludFR5cGVzLlRpbWVy
IHdhcyByZW1vdmVkLgotICAgIFRpbWVyOiAidGltZXIiLAotfTsKLQotV0kuRXZlbnRCcmVha3Bv
aW50LkV2ZW50ID0gewotICAgIERpc2FibGVkU3RhdGVDaGFuZ2VkOiAiZXZlbnQtYnJlYWtwb2lu
dC1kaXNhYmxlZC1zdGF0ZS1jaGFuZ2VkIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFr
cG9pbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QzM2E4OGQ2Mjc2OTk2OTE4OWNlNTMyZDkzNGU2OWI0Nzc1
Y2FmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcwpAQCAtMCwwICsxLDE5NSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKK1dJLkphdmFTY3JpcHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlw
dEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50Cit7CisgICAgY29uc3RydWN0b3Ioc291
cmNlQ29kZUxvY2F0aW9uLCB7Y29udGVudElkZW50aWZpZXIsIGRpc2FibGVkLCBjb25kaXRpb24s
IGFjdGlvbnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlTG9jYXRpb24gaW5zdGFuY2VvZiBXSS5Tb3VyY2VD
b2RlTG9jYXRpb24pOworICAgICAgICBjb25zb2xlLmFzc2VydCghY29udGVudElkZW50aWZpZXIg
fHwgdHlwZW9mIGNvbnRlbnRJZGVudGlmaWVyID09PSAic3RyaW5nIik7CisKKyAgICAgICAgc3Vw
ZXIoe2Rpc2FibGVkLCBjb25kaXRpb24sIGFjdGlvbnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGlu
dWV9KTsKKworICAgICAgICB0aGlzLl9pZCA9IG51bGw7CisgICAgICAgIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2NhdGlvbjsKKworICAgICAgICBsZXQgc291cmNlQ29k
ZSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlOworICAgICAgICBpZiAoc291
cmNlQ29kZSkgeworICAgICAgICAgICAgdGhpcy5fY29udGVudElkZW50aWZpZXIgPSBzb3VyY2VD
b2RlLmNvbnRlbnRJZGVudGlmaWVyOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRl
bnRJZGVudGlmaWVyIHx8IGNvbnRlbnRJZGVudGlmaWVyID09PSB0aGlzLl9jb250ZW50SWRlbnRp
ZmllciwgIlRoZSBjb250ZW50IGlkZW50aWZpZXIgZnJvbSB0aGUgc291cmNlIGNvZGUgc2hvdWxk
IG1hdGNoIHRoZSBnaXZlbiB2YWx1ZS4iKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0
aGlzLl9jb250ZW50SWRlbnRpZmllciA9IGNvbnRlbnRJZGVudGlmaWVyIHx8IG51bGw7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyIHx8IHRoaXMuX2lzU3Bl
Y2lhbCgpLCAiVGhlcmUgc2hvdWxkIGFsd2F5cyBiZSBhIGNvbnRlbnQgaWRlbnRpZmllciBmb3Ig
YSBicmVha3BvaW50LiIpOworCisgICAgICAgIHRoaXMuX3NjcmlwdElkZW50aWZpZXIgPSBzb3Vy
Y2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0ID8gc291cmNlQ29kZS5pZCA6IG51bGw7CisgICAg
ICAgIHRoaXMuX3RhcmdldCA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3Vy
Y2VDb2RlLnRhcmdldCA6IG51bGw7CisgICAgICAgIHRoaXMuX3Jlc29sdmVkID0gZmFsc2U7CisK
KyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291
cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uTG9jYXRpb25DaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkRpc3Bs
YXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbkRpc3BsYXlMb2NhdGlv
bkNoYW5nZWQsIHRoaXMpOworICAgIH0KKworICAgIC8vIEltcG9ydCAvIEV4cG9ydAorCisgICAg
c3RhdGljIGZyb21KU09OKGpzb24pCisgICAgeworICAgICAgICBjb25zdCBzb3VyY2VDb2RlID0g
bnVsbDsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlLCBqc29uLmxpbmVOdW1iZXIg
fHwgMCwganNvbi5jb2x1bW5OdW1iZXIgfHwgMCksIHsKKyAgICAgICAgICAgIC8vIFRoZSAndXJs
JyBmYWxsYmFjayBpcyBmb3IgdHJhbnNpdGlvbmluZyBmcm9tIG9sZGVyIGZyb250ZW5kcyBhbmQg
c2hvdWxkIGJlIHJlbW92ZWQuCisgICAgICAgICAgICBjb250ZW50SWRlbnRpZmllcjoganNvbi5j
b250ZW50SWRlbnRpZmllciB8fCBqc29uLnVybCwKKyAgICAgICAgICAgIGRpc2FibGVkOiBqc29u
LmRpc2FibGVkLAorICAgICAgICAgICAgY29uZGl0aW9uOiBqc29uLmNvbmRpdGlvbiwKKyAgICAg
ICAgICAgIGlnbm9yZUNvdW50OiBqc29uLmlnbm9yZUNvdW50LAorICAgICAgICAgICAgYXV0b0Nv
bnRpbnVlOiBqc29uLmF1dG9Db250aW51ZSwKKyAgICAgICAgfSk7CisgICAgICAgIGJyZWFrcG9p
bnQuX2FjdGlvbnMgPSBqc29uLmFjdGlvbnM/Lm1hcCgoYWN0aW9uSlNPTikgPT4gV0kuQnJlYWtw
b2ludEFjdGlvbi5mcm9tSlNPTihhY3Rpb25KU09OLCBicmVha3BvaW50KSkgfHwgW107CisgICAg
ICAgIHJldHVybiBicmVha3BvaW50OworICAgIH0KKworICAgIHRvSlNPTihrZXkpCisgICAgewor
ICAgICAgICAvLyBUaGUgaWQsIHNjcmlwdElkZW50aWZpZXIsIHRhcmdldCwgYW5kIHJlc29sdmVk
IHN0YXRlIGFyZSB0aWVkIHRvIHRoZSBjdXJyZW50IHNlc3Npb24sIHNvIGRvbid0IGluY2x1ZGUg
dGhlbSBmb3Igc2VyaWFsaXphdGlvbi4KKyAgICAgICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04o
a2V5KTsKKyAgICAgICAganNvbi5jb250ZW50SWRlbnRpZmllciA9IHRoaXMuX2NvbnRlbnRJZGVu
dGlmaWVyOworICAgICAgICBqc29uLmxpbmVOdW1iZXIgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRp
b24ubGluZU51bWJlcjsKKyAgICAgICAganNvbi5jb2x1bW5OdW1iZXIgPSB0aGlzLl9zb3VyY2VD
b2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RT
dG9yZS50b0pTT05TeW1ib2wpCisgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5icmVh
a3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyICsgIjoiICsgdGhpcy5f
c291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1iZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24uY29sdW1uTnVtYmVyOworICAgICAgICByZXR1cm4ganNvbjsKKyAgICB9CisKKyAgICAv
LyBQdWJsaWMKKworICAgIGdldCBzb3VyY2VDb2RlTG9jYXRpb24oKSB7IHJldHVybiB0aGlzLl9z
b3VyY2VDb2RlTG9jYXRpb247IH0KKyAgICBnZXQgY29udGVudElkZW50aWZpZXIoKSB7IHJldHVy
biB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsgfQorICAgIGdldCBzY3JpcHRJZGVudGlmaWVyKCkg
eyByZXR1cm4gdGhpcy5fc2NyaXB0SWRlbnRpZmllcjsgfQorICAgIGdldCB0YXJnZXQoKSB7IHJl
dHVybiB0aGlzLl90YXJnZXQ7IH0KKworICAgIGdldCBzcGVjaWFsKCkKKyAgICB7CisgICAgICAg
IHN3aXRjaCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dl
clN0YXRlbWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5h
bGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIu
dW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1h
bmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVn
Z2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGdl
dCByZW1vdmFibGUoKQorICAgIHsKKyAgICAgICAgc3dpdGNoICh0aGlzKSB7CisgICAgICAgIGNh
c2UgV0kuZGVidWdnZXJNYW5hZ2VyLmRlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQ6CisgICAg
ICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFsbEV4Y2VwdGlvbnNCcmVha3BvaW50OgorICAg
ICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci51bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50
OgorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgfQorCisgICAgZ2V0IGVkaXRhYmxlKCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAodGhpcykgeworICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRl
bWVudHNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNl
cHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVn
aHRFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIu
YXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFu
YWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGdldCBpZGVu
dGlmaWVyKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9pZDsKKyAgICB9CisKKyAgICBz
ZXQgaWRlbnRpZmllcihpZCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lkID0gaWQgfHwgbnVsbDsK
KyAgICB9CisKKyAgICBnZXQgcmVzb2x2ZWQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMu
X3Jlc29sdmVkOworICAgIH0KKworICAgIHNldCByZXNvbHZlZChyZXNvbHZlZCkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9yZXNvbHZlZCA9PT0gcmVzb2x2ZWQpCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlc29sdmVkIHx8IHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbi5zb3VyY2VDb2RlIHx8IHRoaXMuX2lzU3BlY2lhbCgpLCAiQnJlYWtwb2ludHMg
bXVzdCBoYXZlIGEgU291cmNlQ29kZSB0byBiZSByZXNvbHZlZC4iLCB0aGlzKTsKKworICAgICAg
ICB0aGlzLl9yZXNvbHZlZCA9IHJlc29sdmVkIHx8IGZhbHNlOworCisgICAgICAgIHRoaXMuZGlz
cGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29s
dmVkU3RhdGVEaWRDaGFuZ2UpOworICAgIH0KKworICAgIHJlbW92ZSgpCisgICAgeworICAgICAg
ICBzdXBlci5yZW1vdmUoKTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlQnJl
YWtwb2ludCh0aGlzKTsKKyAgICB9CisKKyAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUp
CisgICAgeworICAgICAgICBjb29raWVbImphdmFzY3JpcHQtYnJlYWtwb2ludC1jb250ZW50LWlk
ZW50aWZpZXIiXSA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOworICAgICAgICBjb29raWVbImph
dmFzY3JpcHQtYnJlYWtwb2ludC1saW5lLW51bWJlciJdID0gdGhpcy5fc291cmNlQ29kZUxvY2F0
aW9uLmxpbmVOdW1iZXI7CisgICAgICAgIGNvb2tpZVsiamF2YXNjcmlwdC1icmVha3BvaW50LWNv
bHVtbi1udW1iZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXI7Cisg
ICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2lzU3BlY2lhbCgpCisgICAgeworICAgICAg
ICByZXR1cm4gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmlzRXF1YWwobmV3IFdJLlNvdXJjZUNv
ZGVMb2NhdGlvbihudWxsLCBJbmZpbml0eSwgSW5maW5pdHkpKTsKKyAgICB9CisKKyAgICBfc291
cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQu
TG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOworICAgIH0KKworICAgIF9zb3VyY2VDb2Rl
TG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQu
RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCBldmVudC5kYXRhKTsKKyAgICB9Cit9OworCitXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5UeXBlSWRlbnRpZmllciA9ICJqYXZhc2NyaXB0LWJyZWFrcG9p
bnQiOworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudCA9IHsKKyAgICBSZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlOiAiamF2YXNjcmlwdC1icmVha3BvaW50LXJlc29sdmVkLXN0YXRlLWRpZC1j
aGFuZ2UiLAorICAgIExvY2F0aW9uRGlkQ2hhbmdlOiAiamF2YXNjcmlwdC1icmVha3BvaW50LWxv
Y2F0aW9uLWRpZC1jaGFuZ2UiLAorICAgIERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZTogImphdmFz
Y3JpcHQtYnJlYWtwb2ludC1kaXNwbGF5LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAorfTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNl
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNl
dC5qcwppbmRleCBhNTEzY2UzMThhNmZiMzkyYjU0MjI3OWVmNWVlNDk5ODkxZmU3ZjM4Li45YjYy
N2U1OTg4OTk4YjJjYzMwMGFmZTZmMjY0Zjk0ZjBmYmU1MWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2JlU2V0LmpzCkBAIC00
Miw3ICs0Miw3IEBAIFdJLlByb2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgICAgICBXSS5GcmFtZS5hZGRFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1h
aW5SZXNvdXJjZURpZENoYW5nZSwgdGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAg
ICAgICAgIFdJLlByb2JlLmFkZEV2ZW50TGlzdGVuZXIoV0kuUHJvYmUuRXZlbnQuU2FtcGxlQWRk
ZWQsIHRoaXMuX3NhbXBsZUNvbGxlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQu
YWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAg
ICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50
UmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBA
IC02OCw3ICs2OCw3IEBAIFdJLlByb2JlU2V0ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIGNyZWF0ZVByb2JlKGV4cHJlc3Npb24pCiAgICAgewotICAgICAgICB0aGlz
LmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZSwg
bnVsbCwgZXhwcmVzc2lvbik7CisgICAgICAgIHRoaXMuYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24o
V0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2JlLCB7ZGF0YTogZXhwcmVzc2lvbn0pOwogICAg
IH0KIAogICAgIGFkZFByb2JlKHByb2JlKQpAQCAtMTAxLDcgKzEwMSw3IEBAIFdJLlByb2JlU2V0
ID0gY2xhc3MgUHJvYmVTZXQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBXSS5GcmFtZS5y
ZW1vdmVFdmVudExpc3RlbmVyKFdJLkZyYW1lLkV2ZW50Lk1haW5SZXNvdXJjZURpZENoYW5nZSwg
dGhpcy5fbWFpblJlc291cmNlQ2hhbmdlZCwgdGhpcyk7CiAgICAgICAgIFdJLlByb2JlLnJlbW92
ZUV2ZW50TGlzdGVuZXIoV0kuUHJvYmUuRXZlbnQuU2FtcGxlQWRkZWQsIHRoaXMuX3NhbXBsZUNv
bGxlY3RlZCwgdGhpcyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFr
cG9pbnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKKyAgICAgICAgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5F
dmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50UmVzb2x2ZWRTdGF0
ZURpZENoYW5nZSwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJpdmF0ZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1VSTEJyZWFrcG9pbnQu
anMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtw
b2ludC5qcwppbmRleCA0N2VlZjY0ZTNkY2RmMTY3NDI5ODk2MTJjYTVmOGQ3ZmJkODU2OWIzLi41
ZGExODU4MDY2OTBkOGJjNzcxN2E3OWM1MGQ0NTJjZGQ0NmIwM2NkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2ludC5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtw
b2ludC5qcwpAQCAtMjMsMjYgKzIzLDI1IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCiAgKi8KIAotV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0
ZW5kcyBXSS5PYmplY3QKK1dJLlVSTEJyZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4
dGVuZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNvbnN0cnVjdG9yKHR5cGUsIHVybCwge2Rpc2Fi
bGVkfSA9IHt9KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoT2JqZWN0LnZhbHVlcyhX
SS5VUkxCcmVha3BvaW50LlR5cGUpLmluY2x1ZGVzKHR5cGUpLCB0eXBlKTsKICAgICAgICAgY29u
c29sZS5hc3NlcnQodHlwZW9mIHVybCA9PT0gInN0cmluZyIsIHVybCk7CiAKLSAgICAgICAgc3Vw
ZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkfSk7CiAKICAgICAgICAgdGhpcy5fdHlwZSA9
IHR5cGU7CiAgICAgICAgIHRoaXMuX3VybCA9IHVybDsKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQg
PSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRp
YyBkZXNlcmlhbGl6ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikK
ICAgICB7Ci0gICAgICAgIHJldHVybiBuZXcgV0kuVVJMQnJlYWtwb2ludChzZXJpYWxpemVkSW5m
by50eXBlLCBzZXJpYWxpemVkSW5mby51cmwsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhIXNl
cmlhbGl6ZWRJbmZvLmRpc2FibGVkLAorICAgICAgICByZXR1cm4gbmV3IFdJLlVSTEJyZWFrcG9p
bnQoanNvbi50eXBlLCBqc29uLnVybCwgeworICAgICAgICAgICAgZGlzYWJsZWQ6IGpzb24uZGlz
YWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNTEsMTkgKzUwLDE2IEBAIFdJLlVSTEJy
ZWFrcG9pbnQgPSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgZ2V0
IHR5cGUoKSB7IHJldHVybiB0aGlzLl90eXBlOyB9CiAgICAgZ2V0IHVybCgpIHsgcmV0dXJuIHRo
aXMuX3VybDsgfQogCi0gICAgZ2V0IGRpc2FibGVkKCkKKyAgICBnZXQgc3BlY2lhbCgpCiAgICAg
ewotICAgICAgICByZXR1cm4gdGhpcy5fZGlzYWJsZWQ7CisgICAgICAgIHJldHVybiB0aGlzID09
PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3BvaW50OwogICAgIH0KIAot
ICAgIHNldCBkaXNhYmxlZChkaXNhYmxlZCkKKyAgICByZW1vdmUoKQogICAgIHsKLSAgICAgICAg
aWYgKHRoaXMuX2Rpc2FibGVkID09PSBkaXNhYmxlZCkKLSAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgc3VwZXIucmVtb3ZlKCk7CiAKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxl
ZDsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5VUkxCcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQodGhpcyk7CiAgICAgfQogCiAgICAgc2F2ZUlkZW50
aXR5VG9Db29raWUoY29va2llKQpAQCAtNzQsMjIgKzcwLDE1IEBAIFdJLlVSTEJyZWFrcG9pbnQg
PSBjbGFzcyBVUkxCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICB0b0pTT04oa2V5
KQogICAgIHsKLSAgICAgICAgbGV0IGpzb24gPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLl90
eXBlLAotICAgICAgICAgICAgdXJsOiB0aGlzLl91cmwsCi0gICAgICAgIH07Ci0gICAgICAgIGlm
ICh0aGlzLl9kaXNhYmxlZCkKLSAgICAgICAgICAgIGpzb24uZGlzYWJsZWQgPSB0cnVlOworICAg
ICAgICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihrZXkpOworICAgICAgICBqc29uLnR5cGUgPSB0
aGlzLl90eXBlOworICAgICAgICBqc29uLnVybCA9IHRoaXMuX3VybDsKICAgICAgICAgaWYgKGtl
eSA9PT0gV0kuT2JqZWN0U3RvcmUudG9KU09OU3ltYm9sKQogICAgICAgICAgICAganNvbltXSS5v
YmplY3RTdG9yZXMudXJsQnJlYWtwb2ludHMua2V5UGF0aF0gPSB0aGlzLl90eXBlICsgIjoiICsg
dGhpcy5fdXJsOwogICAgICAgICByZXR1cm4ganNvbjsKICAgICB9CiB9OwogCi1XSS5VUkxCcmVh
a3BvaW50LkV2ZW50ID0gewotICAgIERpc2FibGVkU3RhdGVDaGFuZ2VkOiAidXJsLWJyZWFrcG9p
bnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIsCi19OwotCiBXSS5VUkxCcmVha3BvaW50LlR5cGUg
PSB7CiAgICAgVGV4dDogInRleHQiLAogICAgIFJlZ3VsYXJFeHByZXNzaW9uOiAicmVnZXgiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1s
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCmluZGV4IDFm
YTljOWU0Yjg1ZGEwZjE5OTcwNmQ2MDVkMDk2MDIzMjVmMGJiNGQuLmVlZGE4ZWIxMzUyYjc3MjBm
NzEyMWM2NTA1OGQzODZmYmUyN2RkY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1Rlc3QuaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9UZXN0Lmh0bWwKQEAgLTEwOCw2ICsxMDgsNyBAQAogICAgIDxzY3JpcHQgc3Jj
PSJQcm90b2NvbC9UaW1lbGluZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iUHJvdG9jb2wvV29ya2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9CcmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0JyZWFrcG9pbnRBY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2Rl
bHMvQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db25z
b2xlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CkBAIC0xMjYsNyArMTI3LDYgQEAKICAgICA8c2NyaXB0
IHNyYz0iTW9kZWxzL0FuaW1hdGlvbi5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9BbmltYXRpb25Db2xsZWN0aW9uLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0JveFNoYWRvdy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9C
cmVha3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVUluc3Ry
dW1lbnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmUu
anMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmVSZWNvcmQu
anMiPjwvc2NyaXB0PgpAQCAtMTY5LDYgKzE2OSw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVs
cy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0lzc3VlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CisgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXllci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9MYXlvdXRJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iTW9kZWxzL0xheW91dFRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rp
b25WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludEFjdGlvblZpZXcuanMKaW5kZXggMDNmNmM2OTcxYWEyNjg0OWZhYzMwODczOTQ4Y2Zm
MzIzODU5ZGM2OS4uMWI1YWM4MTIxMTBmODFlMDQ2NGFjMWQ4YjQ3ZTU0ZGYwMGIyZGYxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtw
b2ludEFjdGlvblZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQnJlYWtwb2ludEFjdGlvblZpZXcuanMKQEAgLTExNSw3ICsxMTUsNyBAQCBXSS5C
cmVha3BvaW50QWN0aW9uVmlldyA9IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb25WaWV3IGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICBfYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZChldmVudCkKICAgICB7
Ci0gICAgICAgIHZhciBuZXdBY3Rpb24gPSB0aGlzLl9hY3Rpb24uYnJlYWtwb2ludC5jcmVhdGVB
Y3Rpb24odGhpcy5fYWN0aW9uLnR5cGUsIHRoaXMuX2FjdGlvbik7CisgICAgICAgIHZhciBuZXdB
Y3Rpb24gPSB0aGlzLl9hY3Rpb24uYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24odGhpcy5fYWN0aW9u
LnR5cGUsIHtwcmVjZWRpbmdBY3Rpb246IHRoaXMuX2FjdGlvbn0pOwogICAgICAgICB0aGlzLl9k
ZWxlZ2F0ZS5icmVha3BvaW50QWN0aW9uVmlld0FwcGVuZEFjdGlvblZpZXcodGhpcywgbmV3QWN0
aW9uKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4
IDA1YWM1ZmRmZWZhODgyYThiNGQ1Yjg2OGM2YzVkZDQxM2I3NjRlODkuLmMzNGUyNTMxMzQ1ZjAx
NmU1NTIzOTQxMTg3ZjBlNjg1M2NhOGRlZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVF
bGVtZW50LmNzcwpAQCAtMzQsMTUgKzM0LDYgQEAKIAogICAgIGZpbGw6IHZhcigtLWJyZWFrcG9p
bnQtY29sb3IpOwogICAgIHN0cm9rZTogaHNsYSgwLCAwJSwgMTAlLCAwLjMpOwotICAgIGZpbHRl
cjogZ3JheXNjYWxlKCk7Ci19Ci0KLS5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMt
aW1hZ2UucmVzb2x2ZWQgewotICAgIGZpbHRlcjogbm9uZTsKLX0KLQotYm9keTpub3QoLndpbmRv
dy1pbmFjdGl2ZSwgLndpbmRvdy1kb2NrZWQtaW5hY3RpdmUpIC50cmVlLW91dGxpbmU6Zm9jdXMt
d2l0aGluIC5pdGVtLmJyZWFrcG9pbnQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2Uu
cmVzb2x2ZWQgewotICAgIHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1jb2xvcik7
CiB9CiAKIC5pdGVtLmJyZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UuYXV0by1jb250
aW51ZTo6YWZ0ZXIgewpAQCAtNTksODAgKzUwLDEyIEBAIGJvZHk6bm90KC53aW5kb3ctaW5hY3Rp
dmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAu
CiAgICAgZmlsbDogdmFyKC0tYnJlYWtwb2ludC1jb2xvci1kaXNhYmxlZCk7CiB9CiAKLS5pdGVt
LmJyZWFrcG9pbnQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbiB7Ci0gICAgZm9udC1zdHls
ZTogaXRhbGljOwotfQotCi0uYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAuaWNv
biB7Ci0gICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3Rh
dGVtZW50LWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24gewot
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tbGlnaHQp
OwotfQotCi0uYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiAuaWNvbiB7Ci0gICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlvbi1saWdodCk7Ci19Ci0KLS5icmVh
a3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L1R5cGVJY29ucy5zdmcjTWljcm90YXNrLWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9pbnQtcGF1c2Vk
LWljb24gLmljb24geworLml0ZW0uYnJlYWtwb2ludC5wYXVzZWQgLmljb24gewogICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNQYXVzZWRCcmVha3BvaW50LWxpZ2h0KTsK
IH0KIAotLyogV2hlbiBhbmltYXRpbmcgYSBsYXllciBvbiB0b3Agb2YgYSB0cmVlIGVsZW1lbnQn
cyBpY29uLCBtb3ZlIHRoZSBtYWluCi1pY29uIHRvIHRoZSBpY29uIGVsZW1lbnQncyBiYWNrZ3Jv
dW5kIHNvIGFuaW1hdGlvbnMgYXJlIGxheWVyZWQgb24gdG9wLiAqLwotLmJyZWFrcG9pbnQtZ2Vu
ZXJpYy1saW5lLWljb24gLmljb24gewotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWxpZ2h0KTsKLSAgICBjb250ZW50OiAnJzsKLX0K
LQotLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gPiBzcGFuIHsKLSAgICBwb3Np
dGlvbjogYWJzb2x1dGU7Ci0gICAgdG9wOiAwOwotICAgIHJpZ2h0OiAwOwotICAgIGJvdHRvbTog
MDsKLSAgICBsZWZ0OiAwOwotCi0gICAgYm9yZGVyLXJhZGl1czogNTAlOwotICAgIHRyYW5zZm9y
bTogc2NhbGUoMCk7Ci0gICAgdHJhbnNpdGlvbjogbm9uZTsKLSAgICBiYWNrZ3JvdW5kLWNvbG9y
OiBoc2woMjE2LCAzMCUsIDQyJSk7Ci19Ci0KLS5kYXRhLXVwZGF0ZWQuYnJlYWtwb2ludC1nZW5l
cmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4gewotICAgIGJvcmRlci1yYWRpdXM6IDA7Ci0gICAg
dHJhbnNmb3JtOiBzY2FsZSgwLjg1KTsKLSAgICB0cmFuc2l0aW9uOiBhbGwgLjRzIGVhc2Utb3V0
OwotICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMjE2LCAzMCUsIDQyJSwgMC4xKTsKLX0KLQog
QG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5icmVha3BvaW50LWRl
YnVnZ2VyLXN0YXRlbWVudC1pY29uIC5pY29uIHsKLSAgICAgICAgY29udGVudDogdXJsKC4uL0lt
YWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVtZW50LWRhcmspOwotICAgIH0KLSAgICAK
LSAgICAuYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNvbiB7Ci0gICAgICAgIGNvbnRlbnQ6
IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tZGFyayk7Ci0gICAgfQotCi0g
ICAgLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmljb24gewotICAgICAgICBjb250ZW50OiB1
cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWRhcmspOwotICAgIH0KLQotICAg
IC5icmVha3BvaW50LW1pY3JvdGFzay1pY29uIC5pY29uIHsKLSAgICAgICAgY29udGVudDogdXJs
KC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1kYXJrKTsKLSAgICB9Ci0KLSAgICAu
YnJlYWtwb2ludC1wYXVzZWQtaWNvbiAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5wYXVz
ZWQgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcj
UGF1c2VkQnJlYWtwb2ludC1kYXJrKTsKICAgICB9Ci0KLSAgICAuYnJlYWtwb2ludC1nZW5lcmlj
LWxpbmUtaWNvbiAuaWNvbiB7Ci0gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNSZXN1bHRMaW5lLWRhcmspOwotICAgIH0KLSAgICAKLX0KXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQu
anMKaW5kZXggMjYzZjA3YzI4ZTdmOWRiZWMwODdjYWIzYWU3NTk2NDEwYjVlZmZkNS4uY2YyZTA2
ZWU4ZjU2ZDA2N2FhNmRjMDU5MmE2YTYxOTJkMDg4OWRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9p
bnRUcmVlRWxlbWVudC5qcwpAQCAtMjUsMjYgKzI1LDI2IEBACiAKIFdJLkJyZWFrcG9pbnRUcmVl
RWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxU
cmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRp
dGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRs
ZSwgc3VidGl0bGV9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCk7CiAKLSAgICAgICAgaWYgKCFjbGFzc05hbWUp
Ci0gICAgICAgICAgICBjbGFzc05hbWUgPSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuR2VuZXJp
Y0xpbmVJY29uU3R5bGVDbGFzc05hbWU7CisgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShjbGFz
c05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbXTsKKyAgICAgICAgY2xhc3NOYW1l
cy5wdXNoKCJicmVha3BvaW50Iik7CiAKLSAgICAgICAgY29uc3Qgc3VidGl0bGUgPSBudWxsOwot
ICAgICAgICBzdXBlcihbImJyZWFrcG9pbnQiLCBjbGFzc05hbWVdLCB0aXRsZSwgc3VidGl0bGUs
IGJyZWFrcG9pbnQpOworICAgICAgICBzdXBlcihjbGFzc05hbWVzLCB0aXRsZSwgc3VidGl0bGUs
IGJyZWFrcG9pbnQpOworCisgICAgICAgIC8vIFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSBpbnN0
YW50aWF0ZWQgZGlyZWN0bHkuIENyZWF0ZSBhIGNvbmNyZXRlIHN1YmNsYXNzIGluc3RlYWQuCisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudCAmJiB0aGlzIGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50KTsK
IAogICAgICAgICB0aGlzLl9icmVha3BvaW50ID0gYnJlYWtwb2ludDsKICAgICAgICAgdGhpcy5f
cHJvYmVTZXQgPSBudWxsOwogCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0ID0gbmV3IFdJLkV2
ZW50TGlzdGVuZXJTZXQodGhpcywgIkJyZWFrcG9pbnRUcmVlRWxlbWVudCBsaXN0ZW5lcnMiKTsK
LSAgICAgICAgaWYgKCF0aXRsZSkKLSAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lz
dGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIHRo
aXMuX2JyZWFrcG9pbnRMb2NhdGlvbkRpZENoYW5nZSk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVy
U2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0
ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5fbGlzdGVuZXJT
ZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwgV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVE
aWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0
LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURp
ZENoYW5nZSwgdGhpcy5fdXBkYXRlU3RhdHVzKTsKLSAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQu
cmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJl
YWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMpOworICAgICAgICB0
aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50
LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMudXBkYXRlU3RhdHVzKTsKKyAgICAgICAgdGhp
cy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwgV0kuQnJlYWtwb2ludC5FdmVudC5B
dXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMudXBkYXRlU3RhdHVzKTsKKyAgICAgICAgdGhpcy5f
bGlzdGVuZXJTZXQucmVnaXN0ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBXSS5EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7
CiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwg
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlByb2JlU2V0QWRkZWQsIHRoaXMuX3Byb2JlU2V0QWRk
ZWQpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihXSS5kZWJ1Z2dlck1hbmFn
ZXIsIFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Qcm9iZVNldFJlbW92ZWQsIHRoaXMuX3Byb2Jl
U2V0UmVtb3ZlZCk7CiAKQEAgLTU1LDggKzU1LDggQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUK
ICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIodGhpcy5zdGF0dXMsICJjbGljayIs
IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwogCiAgICAgICAgIGlmICghdGl0bGUp
Ci0gICAgICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMoKTsKLSAgICAgICAgdGhpcy5fdXBkYXRl
U3RhdHVzKCk7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZVRpdGxlcygpOworICAgICAgICB0aGlz
LnVwZGF0ZVN0YXR1cygpOwogCiAgICAgICAgIHRoaXMuX2ljb25BbmltYXRpb25MYXllckVsZW1l
bnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgIHRoaXMuaWNvbkVs
ZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5faWNvbkFuaW1hdGlvbkxheWVyRWxlbWVudCk7CkBAIC03
MCwxMSArNzAsNiBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50
VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgICAgICByZXR1cm4gdGhp
cy5fYnJlYWtwb2ludDsKICAgICB9CiAKLSAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQotICAgIHsK
LSAgICAgICAgcmV0dXJuIHt0ZXh0OiBbdGhpcy5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVy
XX07Ci0gICAgfQotCiAgICAgb25kZWxldGUoKQogICAgIHsKICAgICAgICAgLy8gV2Ugc2V0IHRo
aXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKQEAgLTgy
LDggKzc3LDggQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRy
ZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgLy8gd2l0aGluIHRo
ZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCiAgICAg
ICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7CiAKLSAg
ICAgICAgaWYgKFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUodGhpcy5f
YnJlYWtwb2ludCkpIHsKLSAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVCcmVh
a3BvaW50KHRoaXMuX2JyZWFrcG9pbnQpOworICAgICAgICBpZiAodGhpcy5fYnJlYWtwb2ludC5y
ZW1vdmFibGUpIHsKKyAgICAgICAgICAgIHRoaXMuX2JyZWFrcG9pbnQucmVtb3ZlKCk7CiAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogCkBAIC0xMzQsNDEgKzEyOSwyNyBAQCBX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0
ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgICAgICBzdXBlci5wb3B1bGF0ZUNvbnRleHRNZW51
KGNvbnRleHRNZW51LCBldmVudCk7CiAgICAgfQogCi0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFBy
b3RlY3RlZAogCi0gICAgX3VwZGF0ZVRpdGxlcygpCi0gICAgewotICAgICAgICB2YXIgc291cmNl
Q29kZUxvY2F0aW9uID0gdGhpcy5fYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CisgICAg
Z2V0IGxpc3RlbmVyU2V0KCkgeyByZXR1cm4gdGhpcy5fbGlzdGVuZXJTZXQ7IH0KIAotICAgICAg
ICB2YXIgZGlzcGxheUxpbmVOdW1iZXIgPSBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheUxpbmVO
dW1iZXI7Ci0gICAgICAgIHZhciBkaXNwbGF5Q29sdW1uTnVtYmVyID0gc291cmNlQ29kZUxvY2F0
aW9uLmRpc3BsYXlDb2x1bW5OdW1iZXI7Ci0gICAgICAgIGlmIChkaXNwbGF5Q29sdW1uTnVtYmVy
ID4gMCkKLSAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQ6
JWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxLCBkaXNwbGF5Q29sdW1uTnVtYmVyICsg
MSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYXJlIDEtYmFz
ZWQuCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJp
bmcoIkxpbmUgJWQiKS5mb3JtYXQoZGlzcGxheUxpbmVOdW1iZXIgKyAxKTsgLy8gVGhlIHVzZXIg
dmlzaWJsZSBsaW5lIG51bWJlciBpcyAxLWJhc2VkLgotCi0gICAgICAgIGlmIChzb3VyY2VDb2Rl
TG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgewotICAgICAgICAgICAgdGhpcy5zdWJ0aXRs
ZSA9IHNvdXJjZUNvZGVMb2NhdGlvbi5mb3JtYXR0ZWRMb2NhdGlvblN0cmluZygpOwotCi0gICAg
ICAgICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc0Zvcm1hdHRlZExvY2F0aW9uKCkpCi0g
ICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZChXSS5CcmVh
a3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNzTmFtZSk7Ci0gICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHls
ZUNsYXNzTmFtZSk7Ci0KLSAgICAgICAgICAgIHRoaXMudG9vbHRpcCA9IHRoaXMubWFpblRpdGxl
ICsgIiBcdTIwMTQgIiArIFdJLlVJU3RyaW5nKCJvcmlnaW5hbGx5ICVzIikuZm9ybWF0KHNvdXJj
ZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5nKCkpOwotICAgICAgICB9Ci0gICAg
fQotCi0gICAgX3VwZGF0ZVN0YXR1cygpCisgICAgdXBkYXRlU3RhdHVzKCkKICAgICB7CiAgICAg
ICAgIGlmICghdGhpcy5zdGF0dXMpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhp
cy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVz
SW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9icmVha3BvaW50LmRpc2FibGVkKTsK
LSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJlYWtw
b2ludC5hdXRvQ29udGludWUpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xl
KFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05h
bWUsIHRoaXMuX2JyZWFrcG9pbnQucmVzb2x2ZWQgJiYgV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFr
cG9pbnRzRW5hYmxlZCk7CisgICAgICAgIGlmICh0aGlzLl9icmVha3BvaW50LmVkaXRhYmxlKQor
ICAgICAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRvQ29udGludWVTdHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJl
YWtwb2ludC5hdXRvQ29udGludWUpOwogICAgIH0KIAorICAgIHVwZGF0ZVRpdGxlcygpCisgICAg
eworICAgICAgICAvLyBPdmVycmlkZGVuIGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgorICAgIH0K
KworICAgIC8vIFByaXZhdGUKKwogICAgIF9hZGRQcm9iZVNldChwcm9iZVNldCkKICAgICB7CiAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2YgV0kuUHJvYmVTZXQpOwpA
QCAtMjMwLDE3ICsyMTEsNiBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVh
a3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgICAgICB9LCBX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJvYmVEYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9u
KTsKICAgICB9CiAKLSAgICBfYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKGV2ZW50KQotICAg
IHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoZXZlbnQudGFyZ2V0ID09PSB0aGlzLl9icmVha3Bv
aW50KTsKLQotICAgICAgICAvLyBUaGUgQnJlYWtwb2ludCBoYXMgYSBuZXcgZGlzcGxheSBTb3Vy
Y2VDb2RlLiBUaGUgc2lkZWJhciB3aWxsIHJlbW92ZSB1cywgYW5kIG9uZGV0YWNoKCkgd2lsbCBj
bGVhciBsaXN0ZW5lcnMuCi0gICAgICAgIGlmIChldmVudC5kYXRhLm9sZERpc3BsYXlTb3VyY2VD
b2RlID09PSB0aGlzLl9icmVha3BvaW50LmRpc3BsYXlTb3VyY2VDb2RlKQotICAgICAgICAgICAg
cmV0dXJuOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVRpdGxlcygpOwotICAgIH0KLQogICAgIF9z
dGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24oZXZlbnQpCiAgICAgewogICAgICAgICAvLyBUbyBw
cmV2ZW50IHRoZSB0cmVlIGVsZW1lbnQgZnJvbSBzZWxlY3RpbmcuCkBAIC0yNTMsMTIgKzIyMyw5
IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgfQogfTsKIAotV0kuQnJlYWtwb2ludFRy
ZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZ2Vu
ZXJpYy1saW5lLWljb24iOwogV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRWxl
bWVudFN0eWxlQ2xhc3NOYW1lID0gInN0YXR1cy1pbWFnZSI7Ci1XSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQuU3RhdHVzSW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lID0gInJlc29sdmVkIjsKIFdJ
LkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUF1dG9Db250aW51ZVN0eWxlQ2xhc3NO
YW1lID0gImF1dG8tY29udGludWUiOwogV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0lt
YWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSA9ICJkaXNhYmxlZCI7Ci1XSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQuRm9ybWF0dGVkTG9jYXRpb25TdHlsZUNsYXNzTmFtZSA9ICJmb3JtYXR0ZWQtbG9j
YXRpb24iOwogV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRTdHlsZUNs
YXNzTmFtZSA9ICJkYXRhLXVwZGF0ZWQiOwogCiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuUHJv
YmVEYXRhVXBkYXRlZEFuaW1hdGlvbkR1cmF0aW9uID0gNDAwOyAvLyBtaWxsaXNlY29uZHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxG
cmFtZVRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKaW5kZXggNzVjYzdkNDZhNmE4NmI4ZTZhNDQy
YmRhMDFiOTljNTJkZDk0YjJkNS4uNTdjM2M0MWJmNTQwODIzMGQ3NjU4NWFlMGYzZjY4ZmViODI4
NGI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ2FsbEZyYW1lVHJlZUVsZW1lbnQuanMKQEAgLTEwNyw2ICsxMDcs
MTQgQEAgV0kuQ2FsbEZyYW1lVHJlZUVsZW1lbnQgPSBjbGFzcyBDYWxsRnJhbWVUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlbWUKICAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVz
KCk7CiAgICAgfQogCisgICAgcG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQp
CisgICAgeworICAgICAgICBpZiAodGhpcy5fY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2NhdGlvbikK
KyAgICAgICAgICAgIFdJLmFwcGVuZENvbnRleHRNZW51SXRlbXNGb3JTb3VyY2VDb2RlKGNvbnRl
eHRNZW51LCB0aGlzLl9jYWxsRnJhbWUuc291cmNlQ29kZUxvY2F0aW9uKTsKKworICAgICAgICBz
dXBlci5wb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBldmVudCk7CisgICAgfQorCiAg
ICAgLy8gUHJpdmF0ZQogCiAgICAgX3VwZGF0ZVN0YXR1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4
IDI5NmMyYTU0MjNhMGY2OTFlYWM3ZDJkMGU5MzYwMGY1MTU0ZjBkZTguLjE5ZjY0YmQzOThmZTE1
ZDI5MDFlYzJkODI3MTM4YTIxNjI0YjE3YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC05Myw3ICs5
Myw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3
CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5NZWRpYVRpbWVsaW5lVmlldyhyZXByZXNl
bnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCB8fCByZXByZXNlbnRlZE9i
amVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkgeworICAgICAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCB8fCByZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkgewogICAgICAgICAgICAgaWYgKHJl
cHJlc2VudGVkT2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbikKICAgICAgICAgICAgICAgICByZXR1
cm4gV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KHJlcHJlc2VudGVk
T2JqZWN0LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZSwgZXh0cmFBcmd1bWVu
dHMpOwogICAgICAgICB9CkBAIC0yMzQsNyArMjM0LDcgQEAgV0kuQ29udGVudFZpZXcgPSBjbGFz
cyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV0kuRnJhbWUpCiAgICAgICAgICAgICByZXR1cm4gcmVwcmVzZW50ZWRP
YmplY3QubWFpblJlc291cmNlOwogCi0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5J
c3N1ZU1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2Yg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBX
SS5Jc3N1ZU1lc3NhZ2UpIHsKICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5zb3Vy
Y2VDb2RlTG9jYXRpb24pCiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0
LnNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5U291cmNlQ29kZTsKICAgICAgICAgfQpAQCAtMjc5
LDcgKzI3OSw3IEBAIFdJLkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5WaWV3CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuVGltZWxpbmUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCB8
fCByZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLklzc3VlTWVzc2FnZSkKKyAgICAgICAg
aWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQg
fHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpCiAgICAgICAg
ICAgICByZXR1cm4gcmVwcmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxvY2F0aW9uOwogICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Mb2NhbFJlc291cmNlT3ZlcnJp
ZGUpCiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRp
ZXMuanMKaW5kZXggZDBiNDA1MmQzMGRlZGNhYTkyNTZiY2Y4NWY0MTJjMTMxZWRmNjcyNS4uZWMy
Y2M2NDVlZjkzMGI5YTc4MTgwYTc0OTVjZmE2OGJlNWQ2NDA5MyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4dE1lbnVVdGlsaXRpZXMu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGV4
dE1lbnVVdGlsaXRpZXMuanMKQEAgLTExOCw3ICsxMTgsNyBAQCBXSS5hcHBlbmRDb250ZXh0TWVu
dUl0ZW1zRm9yU291cmNlQ29kZSA9IGZ1bmN0aW9uKGNvbnRleHRNZW51LCBzb3VyY2VDb2RlT3JM
b2NhdAogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBjb250
ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJBZGQgQnJlYWtwb2ludCIpLCAoKSA9PiB7
Ci0gICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQobmV3IFdJ
LkJyZWFrcG9pbnQobG9jYXRpb24pKTsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIuYWRkQnJlYWtwb2ludChuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pKTsK
ICAgICAgICAgICAgIH0pOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFr
cG9pbnRUcmVlRWxlbWVudC5jc3MKaW5kZXggNmIzM2IyY2UzYzFmMmVlNGVhYTEzYzgzYWZhMzRh
ZGRiZjBhNDQ3Ni4uMTc0ZDIyYTM3MDBkOTE4YmY5YmJkNjFmNDVhYjlkMzA1NWMwODdkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJl
YWtwb2ludFRyZWVFbGVtZW50LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCkBAIC0yMywyOCArMjMs
MjggQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0uYnJlYWtw
b2ludC5kb20uYnJlYWtwb2ludC1mb3Itc3VidHJlZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQt
cGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRyZWUtbW9kaWZp
ZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJ
Y29ucy5zdmcjRE9NQnJlYWtwb2ludFN1YnRyZWVNb2RpZmllZC1saWdodCk7CiB9CiAKLS5icmVh
a3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5icmVha3Bv
aW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUt
bW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludEF0dHJpYnV0ZU1vZGlmaWVkLWxpZ2h0KTsKIH0K
IAotLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFr
cG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVt
b3ZlZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlw
ZUljb25zLnN2ZyNET01CcmVha3BvaW50Tm9kZVJlbW92ZWQtbGlnaHQpOwogfQogCiBAbWVkaWEg
KHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAgLmJyZWFrcG9pbnQuZG9tLmJyZWFr
cG9pbnQtZm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAu
aWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC5kb20uc3VidHJlZS1tb2RpZmllZDpub3QoLnBh
dXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRE9NQnJlYWtwb2ludFN1YnRyZWVNb2RpZmllZC1kYXJrKTsKICAgICB9CiAKLSAgICAuYnJl
YWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1vZGlmaWVkOm5vdCguYnJlYWtw
b2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQuZG9tLmF0dHJp
YnV0ZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludEF0dHJpYnV0ZU1vZGlmaWVkLWRh
cmspOwogICAgIH0KIAotICAgIC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2RlLXJl
bW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJl
YWtwb2ludC5kb20ubm9kZS1yZW1vdmVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNv
bnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNET01CcmVha3BvaW50Tm9kZVJlbW92
ZWQtZGFyayk7CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCBhZDZiYjFhMTQ5MjIyY2Mz
ZDY3MWI2ZmRiZTJjNDQ4MmMwZDUwYjY3Li42M2U2MTZhOTE3YTIwNjAzNzdiM2Y1YWUwNGFmYzA2
YjAzYjk3YzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBA
IC0yMywyNiArMjMsMjAgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi1XSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBET01CcmVha3BvaW50VHJl
ZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKK1dJLkRPTUJyZWFrcG9pbnRU
cmVlRWxlbWVudCA9IGNsYXNzIERPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFz
c05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQsIHtjbGFzc05h
bWVzLCB0aXRsZX0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQgaW5zdGFuY2VvZiBXSS5ET01CcmVha3BvaW50KTsKIAotICAgICAgICBsZXQgY2xhc3NOYW1l
cyA9IFsiYnJlYWtwb2ludCIsICJkb20iLCBgYnJlYWtwb2ludC1mb3ItJHticmVha3BvaW50LnR5
cGV9YF07Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWVzLnB1
c2goY2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQor
ICAgICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goImRv
bSIsIGJyZWFrcG9pbnQudHlwZSk7CiAKICAgICAgICAgaWYgKCF0aXRsZSkKICAgICAgICAgICAg
IHRpdGxlID0gV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmRpc3BsYXlOYW1lRm9yVHlwZShi
cmVha3BvaW50LnR5cGUpOwogCi0gICAgICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAg
ICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAg
ICAgICB0aGlzLnN0YXR1cyA9IFdJLkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2Vz
L0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQot
ICAgICAgICB0aGlzLnRvb2x0aXBIYW5kbGVkU2VwYXJhdGVseSA9IHRydWU7CisgICAgICAgIHN1
cGVyKGJyZWFrcG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOwogICAgIH0KIAogICAgIC8vIFN0
YXRpYwpAQCAtNjEsMTA4ICs1NSw0IEBAIFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNs
YXNzIERPTUJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogICAgIH0KLQotICAgIC8vIFByb3RlY3RlZAot
Ci0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25hdHRhY2goKTsKLQotICAg
ICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtw
b2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlz
KTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5fdXBkYXRl
U3RhdHVzLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENs
aWNrZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkLmJpbmQodGhpcyk7Ci0gICAg
ICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IHRoaXMuX3N0YXR1c0lt
YWdlRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJ
bWFnZUVsZW1lbnRNb3VzZURvd24gPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24u
YmluZCh0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJjbGlj
ayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0gICAgICAgIHRoaXMu
c3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVs
ZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigibW91
c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOwotCi0gICAg
ICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwotICAgIH0KLQotICAgIG9uZGV0YWNoKCkKLSAgICB7
Ci0gICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7Ci0KLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgICAgICBXSS5k
ZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLQot
ICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92
ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1
c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibW91c2Vkb3du
IiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOwotCi0gICAgICAgIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IG51bGw7Ci0gICAgICAgIHRoaXMu
X2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2Jv
dW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gbnVsbDsKLSAgICB9Ci0KLSAgICBvbmRl
bGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBzZXQgdGhpcyBmbGFnIHNvIHRoYXQgVHJlZU91
dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwotICAgICAgICAvLyBCcmVha3BvaW50VHJlZUVs
ZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRlbGV0ZWQgZnJvbQotICAgICAgICAvLyB3
aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0c2lkZSBpdCAoZS5nLiBUZXh0RWRpdG9y
KS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxldGVLZXlib2FyZFNob3J0Y3V0ID0gdHJ1
ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludCh0
aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsK
LSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25zcGFjZSgpCi0gICAgewotICAg
ICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAg
IH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KQotICAgIHsK
LSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotICAgICAg
ICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVkID8gV0kuVUlTdHJpbmcoIkVuYWJsZSBC
cmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3BvaW50Iik7Ci0gICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQuYmlu
ZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygi
RGVsZXRlIEJyZWFrcG9pbnQiKSwgZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRE9NQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfSk7
Ci0gICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNr
ZWQoZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAg
fQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQoZXZlbnQpCi0gICAgewotICAgICAg
ICAvLyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAgICAgICAgZXZlbnQuc3RvcFByb3Bh
Z2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVu
dCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KLSAg
ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3RvZ2dsZUJyZWFr
cG9pbnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9
ICF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwotICAgIH0KLQotICAgIF91cGRhdGVT
dGF0dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykKLSAgICAgICAgICAgIHJl
dHVybjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUsIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3Qu
dG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVD
bGFzc05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOwotICAgIH0K
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9ET01UcmVlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcuanMKaW5kZXggNzk5ZjY4Y2NiNjJkYTBiYTUz
YmRhMDQ5OWJhYjIxZmYxMTE2ZGRlMS4uZjUzYjFmNDU0NWZhODZkOGIxYzIyZTQ1YmY2ZDEzZTNk
ZWQ2NDgwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcwpAQCAtOTUsNyArOTUsNyBA
QCBXSS5ET01UcmVlQ29udGVudFZpZXcgPSBjbGFzcyBET01UcmVlQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2
ZW50TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRBZGRl
ZCwgdGhpcy5fZG9tQnJlYWtwb2ludEFkZGVkT3JSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5FdmVudC5ET01CcmVha3BvaW50UmVtb3ZlZCwgdGhpcy5fZG9tQnJlYWtwb2ludEFkZGVk
T3JSZW1vdmVkLCB0aGlzKTsKIAotICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRo
aXMuX2hhbmRsZURPTUJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CisgICAg
ICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5F
dmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RGlz
YWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOwogICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNoYW5nZWQsIHRo
aXMuX2hhbmRsZURPTUJyZWFrcG9pbnRET01Ob2RlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAg
ICAgIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4IDRmYzNjNGE2ZmRjZjZmOTE2NDNk
YmFlODZkMjIyNjJmNTFmMTMyNTMuLjE2MWNlZGNmMTI3ZThmMmJiMzVlNTFmNjZmZjM0MTkxZDM0
ZTYzZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcworKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MK
QEAgLTIzLDM2ICsyMywzNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgog
ICovCiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWFuaW1hdGlvbi1mcmFtZTpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQuZXZl
bnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJs
KC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludEFuaW1hdGlvbkZyYW1lLWxp
Z2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItaW50ZXJ2YWw6bm90
KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50
LmludGVydmFsOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludEludGVydmFsLWxpZ2h0KTsKIH0KIAotLmJy
ZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVha3BvaW50LXBh
dXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgu
cGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3Zn
I0V2ZW50QnJlYWtwb2ludExpc3RlbmVyLWxpZ2h0KTsKIH0KIAotLmJyZWFrcG9pbnQuZXZlbnQu
YnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29u
IHsKKy5pdGVtLmJyZWFrcG9pbnQuZXZlbnQudGltZW91dDpub3QoLnBhdXNlZCkgLmljb24gewog
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRU
aW1lb3V0LWxpZ2h0KTsKIH0KIAogQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7
Ci0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItYW5pbWF0aW9uLWZyYW1lOm5v
dCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQu
ZXZlbnQuYW5pbWF0aW9uLWZyYW1lOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRBbmltYXRpb25G
cmFtZS1kYXJrKTsKICAgICB9Ci0gICAgCi0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2lu
dC1mb3ItaW50ZXJ2YWw6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisKKyAg
ICAuaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAg
ICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9p
bnRJbnRlcnZhbC1kYXJrKTsKICAgICB9Ci0gICAgCi0gICAgLmJyZWFrcG9pbnQuZXZlbnQuYnJl
YWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7
CisKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50Lmxpc3RlbmVyOm5vdCgucGF1c2VkKSAuaWNv
biB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJy
ZWFrcG9pbnRMaXN0ZW5lci1kYXJrKTsKICAgICB9Ci0gICAgCi0gICAgLmJyZWFrcG9pbnQuZXZl
bnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5p
Y29uIHsKKworICAgIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQudGltZW91dDpub3QoLnBhdXNlZCkg
Lmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZl
bnRCcmVha3BvaW50VGltZW91dC1kYXJrKTsKLSAgICB9ICAgCisgICAgfQogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCBlMGJmZWJmMTFkOTE2MDJk
NDk5MGYyN2IzODdhYWU5YmIwYWMxZDg5Li45Y2Y0YTdkNWI5YjRiMzk3ODNjOWZjZGFmOWRkNThj
NDY4NWZlZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5q
cwpAQCAtMjMsMTM2ICsyMywxOSBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLVdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgRXZlbnRCcmVh
a3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKK1dJLkV2ZW50
QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVh
a3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3Bv
aW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KTsKIAotICAgICAg
ICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJldmVudCIsIGBicmVha3BvaW50LWZv
ci0ke2JyZWFrcG9pbnQudHlwZX1gXTsKLSAgICAgICAgaWYgKGNsYXNzTmFtZSkKLSAgICAgICAg
ICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc05hbWUpOworICAgICAgICBpZiAoIUFycmF5LmlzQXJy
YXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gW107CisgICAgICAgIGNs
YXNzTmFtZXMucHVzaCgiZXZlbnQiLCBicmVha3BvaW50LnR5cGUpOwogCiAgICAgICAgIGlmICgh
dGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9IGJyZWFrcG9pbnQuZXZlbnROYW1lOwogCi0gICAg
ICAgIGNvbnN0IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywgdGl0
bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJLklt
YWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0gICAg
ICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0
dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBIYW5k
bGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAgICBv
bmF0dGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmF0dGFjaCgpOwotCi0gICAgICAgIHRo
aXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5FdmVudEJyZWFrcG9pbnQu
RXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0g
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFu
YWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1
cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2Vk
ID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZC5iaW5kKHRoaXMpOwotICAgICAgICB0
aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVs
ZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VF
bGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duLmJpbmQo
dGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0
aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1
cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50
Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93
biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsKLQotICAgICAgICB0
aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAgICBvbmRldGFjaCgpCi0gICAgewotICAg
ICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdn
ZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAg
ICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVu
dExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7
Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRo
aXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl9i
b3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0
YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7Ci0gICAgfQotCi0gICAgb25kZWxldGUo
KQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRoaXMgZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5l
cyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAgICAgLy8gQnJlYWtwb2ludFRyZWVFbGVtZW50
IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVkIGZyb20KLSAgICAgICAgLy8gd2l0aGlu
IHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUgaXQgKGUuZy4gVGV4dEVkaXRvcikuCi0g
ICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5Ym9hcmRTaG9ydGN1dCA9IHRydWU7Ci0K
LSAgICAgICAgaWYgKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZXZlbnRMaXN0ZW5lcikKLSAgICAg
ICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIodGhp
cy5yZXByZXNlbnRlZE9iamVjdC5ldmVudExpc3RlbmVyKTsKLSAgICAgICAgZWxzZQotICAgICAg
ICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCh0aGlzLnJl
cHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBv
bmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25zcGFjZSgpCi0gICAgewotICAgICAgICB0
aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQot
ICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUsIGV2ZW50KQotICAgIHsKLSAgICAg
ICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0OwotCi0gICAgICAgIGxl
dCBsYWJlbCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQgPyBXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFr
cG9pbnQiKSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKTsKLSAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShsYWJlbCwgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRo
aXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxl
dGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5ldmVu
dExpc3RlbmVyKQotICAgICAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2lu
dEZvckV2ZW50TGlzdGVuZXIoYnJlYWtwb2ludC5ldmVudExpc3RlbmVyKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRC
cmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICB9KTsKLSAgICB9Ci0KLSAgICAvLyBQcml2
YXRlCi0KLSAgICBfc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZChldmVudCkKLSAgICB7Ci0gICAg
ICAgIHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICB9Ci0KLSAgICBfc3RhdHVzSW1hZ2VF
bGVtZW50Rm9jdXNlZChldmVudCkKLSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBvdXRs
aW5lIGZvY3VzLgotICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTsKLSAgICB9Ci0KLSAg
ICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50KQotICAgIHsKLSAgICAgICAgLy8g
UHJldmVudCB0cmVlIGVsZW1lbnQgc2VsZWN0aW9uLgotICAgICAgICBldmVudC5zdG9wUHJvcGFn
YXRpb24oKTsKLSAgICB9Ci0KLSAgICBfdG9nZ2xlQnJlYWtwb2ludCgpCi0gICAgewotICAgICAg
ICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkID0gIXRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuZGlzYWJsZWQ7Ci0gICAgfQotCi0gICAgX3VwZGF0ZVN0YXR1cygpCi0gICAgewotICAgICAg
ICBpZiAoIXRoaXMuc3RhdHVzKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMu
c3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0lt
YWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxl
ZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2ludFRy
ZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNsYXNzTmFtZSwgV0kuZGVidWdnZXJN
YW5hZ2VyLmJyZWFrcG9pbnRzRW5hYmxlZCk7CisgICAgICAgIHN1cGVyKGJyZWFrcG9pbnQsIHtj
bGFzc05hbWVzLCB0aXRsZX0pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNz
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVu
ZXJTZWN0aW9uR3JvdXAuY3NzCmluZGV4IDQ3NjU3NTJlMmYwMDNjY2U0M2M0OWEyYjZlN2NhZGZk
YWMyOThmMjkuLmNkNWRmZmI0ZTdmYTNiNjRiOWYxOGY2ZGJkOGQwNmRiYTk4N2ZiM2QgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlz
dGVuZXJTZWN0aW9uR3JvdXAuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzCkBAIC0zNCwzICszNCwx
MSBAQAogICAgIGhlaWdodDogMTJweDsKICAgICBtYXJnaW46IDA7CiB9CisKKy5ldmVudC1saXN0
ZW5lci1zZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2tib3giXSArIC5nby10by1h
cnJvdyB7CisgICAgdmVydGljYWwtYWxpZ246IC0ycHg7Cit9CisKKy5ldmVudC1saXN0ZW5lci1z
ZWN0aW9uID4gLmNvbnRlbnQgaW5wdXRbdHlwZT0iY2hlY2tib3giXTpub3QoOmNoZWNrZWQpICsg
LmdvLXRvLWFycm93IHsKKyAgICBkaXNwbGF5OiBub25lOworfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25H
cm91cC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50
TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKaW5kZXggNjg2ZjlmNzk1ZmFmMTg5MGM2YjA5Y2U4MDM1
ODBhY2I2N2M5YjViNS4uZWYxYmEzNWJjM2I3YjlhZTljYTMwNzY4YzA4NDg3NTM4OWRhNmYzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZl
bnRMaXN0ZW5lclNlY3Rpb25Hcm91cC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCkBAIC03Miw3ICs3
Miw5IEBAIFdJLkV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAgPSBjbGFzcyBFdmVudExpc3RlbmVy
U2VjdGlvbkdyb3VwIGV4dGVuZHMgV0kuRGV0YWlsCiAgICAgICAgICAgICB9CiAKICAgICAgICAg
ICAgIGlmIChXSS5ET01NYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKCkp
IHsKLSAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJpbnB1dCIpOworICAgICAgICAgICAgICAg
IGxldCB0b2dnbGVDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisK
KyAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1l
bnQgPSB0b2dnbGVDb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
aW5wdXQiKSk7CiAgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRU
b2dnbGVFbGVtZW50LnR5cGUgPSAiY2hlY2tib3giOwogICAgICAgICAgICAgICAgIHRoaXMuX3Vw
ZGF0ZUJyZWFrcG9pbnRUb2dnbGUoKTsKICAgICAgICAgICAgICAgICB0aGlzLl9ldmVudExpc3Rl
bmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgKGV2
ZW50KSA9PiB7CkBAIC04MCwxMyArODIsMjYgQEAgV0kuRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91
cCA9IGNsYXNzIEV2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAgZXh0ZW5kcyBXSS5EZXRhaWwKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5oYXNFdmVudExpc3RlbmVyQnJlYWtwb2ludCA9ICEhdGhp
cy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50LmNoZWNrZWQ7CiAgICAgICAg
ICAgICAgICAgfSk7CiAKKyAgICAgICAgICAgICAgICBpZiAoV0kuRE9NTWFuYWdlci5zdXBwb3J0
c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50Q29uZmlndXJhdGlvbigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGxldCByZXZlYWxCcmVha3BvaW50R29Ub0Fycm93ID0gdG9nZ2xlQ29udGFpbmVyLmFw
cGVuZENoaWxkKFdJLmNyZWF0ZUdvVG9BcnJvd0J1dHRvbigpKTsKKyAgICAgICAgICAgICAgICAg
ICAgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdy50aXRsZSA9IFdJLlVJU3RyaW5nKCJSZXZlYWwg
aW4gU291cmNlcyBUYWIiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV2ZWFsQnJlYWtwb2ludEdv
VG9BcnJvdy5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5oYXNFdmVudExpc3RlbmVyQnJlYWtw
b2ludCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50VG9TZWxlY3Qg
PSBXSS5kb21NYW5hZ2VyLmJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVySWQodGhpcy5fZXZlbnRM
aXN0ZW5lci5ldmVudExpc3RlbmVySWQpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoYnJlYWtwb2ludFRvU2VsZWN0KTsKKworICAgICAgICAgICAgICAgICAgICAgICAg
V0kuc2hvd1NvdXJjZXNUYWIoe2JyZWFrcG9pbnRUb1NlbGVjdH0pOworICAgICAgICAgICAgICAg
ICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisKICAgICAgICAgICAgICAgICBsZXQgdG9nZ2xl
TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAg
dG9nZ2xlTGFiZWwudGV4dENvbnRlbnQgPSBXSS5VSVN0cmluZygiQnJlYWtwb2ludCIpOwogICAg
ICAgICAgICAgICAgIHRvZ2dsZUxhYmVsLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgKGV2ZW50
KSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50
VG9nZ2xlRWxlbWVudC5jbGljaygpOwogICAgICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAg
ICAgICAgcm93cy5wdXNoKG5ldyBXSS5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyh0b2dnbGVMYWJl
bCwgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50KSk7CisgICAgICAg
ICAgICAgICAgcm93cy5wdXNoKG5ldyBXSS5EZXRhaWxzU2VjdGlvblNpbXBsZVJvdyh0b2dnbGVM
YWJlbCwgdG9nZ2xlQ29udGFpbmVyKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNj
cmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi42MWU5YTExOWUwNWFkYzcxMTUxYzUyY2Q4YWM0MjJkNDkzMzZkYWUxCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2
YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1
cy1pbWFnZSB7CisgICAgZmlsdGVyOiBncmF5c2NhbGUoKTsKK30KKworLml0ZW0uYnJlYWtwb2lu
dC5qYXZhc2NyaXB0IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkIHsKKyAgICBmaWx0
ZXI6IG5vbmU7Cit9CisKK2JvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2Vk
LWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3BvaW50Lmph
dmFzY3JpcHQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQgeworICAg
IHN0cm9rZTogdmFyKC0tc2VsZWN0ZWQtZm9yZWdyb3VuZC1jb2xvcik7Cit9CisKKy5pdGVtLmJy
ZWFrcG9pbnQuamF2YXNjcmlwdCAuc3VidGl0bGUuZm9ybWF0dGVkLWxvY2F0aW9uIHsKKyAgICBm
b250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy8qIFdoZW4gYW5pbWF0aW5nIGEgbGF5ZXIgb24gdG9w
IG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwgbW92ZSB0aGUgbWFpbgoraWNvbiB0byB0aGUgaWNv
biBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBhbmltYXRpb25zIGFyZSBsYXllcmVkIG9uIHRvcC4g
Ki8KKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5lIC5pY29uIHsKKyAgICBiYWNrZ3Jv
dW5kLWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1saWdodCk7
CisgICAgY29udGVudDogJyc7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5saW5l
IC5pY29uID4gc3BhbiB7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIHRvcDogMDsKKyAg
ICByaWdodDogMDsKKyAgICBib3R0b206IDA7CisgICAgbGVmdDogMDsKKworICAgIGJvcmRlci1y
YWRpdXM6IDUwJTsKKyAgICB0cmFuc2Zvcm06IHNjYWxlKDApOworICAgIHRyYW5zaXRpb246IG5v
bmU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxNiwgMzAlLCA0MiUpOworfQorCisuZGF0
YS11cGRhdGVkLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24gPiBzcGFuIHsK
KyAgICBib3JkZXItcmFkaXVzOiAwOworICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NSk7CisgICAg
dHJhbnNpdGlvbjogYWxsIC40cyBlYXNlLW91dDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xh
KDIxNiwgMzAlLCA0MiUsIDAuMSk7Cit9CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5k
ZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24geworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlw
ZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1saWdodCk7Cit9CisKKy5pdGVtLmJyZWFrcG9p
bnQuamF2YXNjcmlwdC5leGNlcHRpb24gLmljb24geworICAgIGNvbnRlbnQ6IHVybCguLi9JbWFn
ZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tbGlnaHQpOworfQorCisuaXRlbS5icmVha3BvaW50
LmphdmFzY3JpcHQuYXNzZXJ0aW9uIC5pY29uIHsKKyAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L1R5cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWxpZ2h0KTsKK30KKworLml0ZW0uYnJlYWtwb2ludC5q
YXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbiB7CisgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9U
eXBlSWNvbnMuc3ZnI01pY3JvdGFzay1saWdodCk7Cit9CisKK0BtZWRpYSAocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIHsKKyAgICAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAu
aWNvbiB7CisgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi9JbWFnZXMvVHlwZUljb25z
LnN2ZyNSZXN1bHRMaW5lLWRhcmspOworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2
YXNjcmlwdC5kZWJ1Z2dlci1zdGF0ZW1lbnQgLmljb24geworICAgICAgICBjb250ZW50OiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRGVidWdnZXJTdGF0ZW1lbnQtZGFyayk7CisgICAgfQor
CisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmV4Y2VwdGlvbiAuaWNvbiB7CisgICAg
ICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFeGNlcHRpb24tZGFyayk7
CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFzc2VydGlvbiAuaWNv
biB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNBc3NlcnRp
b24tZGFyayk7CisgICAgfQorCisgICAgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3Jv
dGFzayAuaWNvbiB7CisgICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2
ZyNNaWNyb3Rhc2stZGFyayk7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0ph
dmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjRlNjQ2YzI1YzlkNjFmNzYzOWNmNmEzZTUxZDc0ZTFjMGM2MGI4MTcKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9K
YXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKK1dJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBK
YXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50Cit7CisgICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxl
fSA9IHt9KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5j
ZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50KTsKKworICAgICAgICBpZiAoIUFycmF5LmlzQXJy
YXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gWyJsaW5lIl07CisgICAg
ICAgIGNsYXNzTmFtZXMucHVzaCgiamF2YXNjcmlwdCIpOworCisgICAgICAgIHN1cGVyKGJyZWFr
cG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0pOworCisgICAgICAgIGlmICghdGl0bGUpCisgICAg
ICAgICAgICB0aGlzLmxpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50TG9j
YXRpb25EaWRDaGFuZ2UpOworICAgICAgICB0aGlzLmxpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFr
cG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFu
Z2UsIHRoaXMudXBkYXRlU3RhdHVzKTsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdl
dCBmaWx0ZXJhYmxlRGF0YSgpCisgICAgeworICAgICAgICByZXR1cm4ge3RleHQ6IFt0aGlzLmJy
ZWFrcG9pbnQuY29udGVudElkZW50aWZpZXJdfTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQK
KworICAgIHVwZGF0ZVN0YXR1cygpCisgICAgeworICAgICAgICBzdXBlci51cGRhdGVTdGF0dXMo
KTsKKworICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoInJlc29sdmVkIiwgdGhpcy5icmVh
a3BvaW50LnJlc29sdmVkICYmIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQp
OworICAgIH0KKworICAgIHVwZGF0ZVRpdGxlcygpCisgICAgeworICAgICAgICBzdXBlci51cGRh
dGVUaXRsZXMoKTsKKworICAgICAgICBsZXQgc291cmNlQ29kZUxvY2F0aW9uID0gdGhpcy5icmVh
a3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKKworICAgICAgICBsZXQgZGlzcGxheUxpbmVOdW1i
ZXIgPSBzb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheUxpbmVOdW1iZXI7CisgICAgICAgIGxldCBk
aXNwbGF5Q29sdW1uTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlDb2x1bW5OdW1i
ZXI7CisgICAgICAgIGlmIChkaXNwbGF5Q29sdW1uTnVtYmVyID4gMCkKKyAgICAgICAgICAgIHRo
aXMubWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQ6JWQiKS5mb3JtYXQoZGlzcGxheUxp
bmVOdW1iZXIgKyAxLCBkaXNwbGF5Q29sdW1uTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZpc2li
bGUgbGluZSBhbmQgY29sdW1uIG51bWJlcnMgYXJlIDEtYmFzZWQuCisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHRoaXMubWFpblRpdGxlID0gV0kuVUlTdHJpbmcoIkxpbmUgJWQiKS5mb3JtYXQo
ZGlzcGxheUxpbmVOdW1iZXIgKyAxKTsgLy8gVGhlIHVzZXIgdmlzaWJsZSBsaW5lIG51bWJlciBp
cyAxLWJhc2VkLgorCisgICAgICAgIGlmIChzb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9j
YXRpb24oKSkgeworICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZSA9IHNvdXJjZUNvZGVMb2NhdGlv
bi5mb3JtYXR0ZWRMb2NhdGlvblN0cmluZygpOworCisgICAgICAgICAgICBpZiAoc291cmNlQ29k
ZUxvY2F0aW9uLmhhc0Zvcm1hdHRlZExvY2F0aW9uKCkpCisgICAgICAgICAgICAgICAgdGhpcy5z
dWJ0aXRsZUVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiZm9ybWF0dGVkLWxvY2F0aW9uIik7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5zdWJ0aXRsZUVsZW1lbnQuY2xhc3NM
aXN0LnJlbW92ZSgiZm9ybWF0dGVkLWxvY2F0aW9uIik7CisKKyAgICAgICAgICAgIHRoaXMudG9v
bHRpcCA9IHRoaXMubWFpblRpdGxlICsgIiBcdTIwMTQgIiArIFdJLlVJU3RyaW5nKCJvcmlnaW5h
bGx5ICVzIikuZm9ybWF0KHNvdXJjZUNvZGVMb2NhdGlvbi5vcmlnaW5hbExvY2F0aW9uU3RyaW5n
KCkpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2JyZWFrcG9p
bnRMb2NhdGlvbkRpZENoYW5nZShldmVudCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGV2ZW50LnRhcmdldCA9PT0gdGhpcy5icmVha3BvaW50KTsKKworICAgICAgICAvLyBUaGUgQnJl
YWtwb2ludCBoYXMgYSBuZXcgZGlzcGxheSBTb3VyY2VDb2RlLiBUaGUgc2lkZWJhciB3aWxsIHJl
bW92ZSB1cywgYW5kIG9uZGV0YWNoKCkgd2lsbCBjbGVhciBsaXN0ZW5lcnMuCisgICAgICAgIGlm
IChldmVudC5kYXRhLm9sZERpc3BsYXlTb3VyY2VDb2RlID09PSB0aGlzLmJyZWFrcG9pbnQuZGlz
cGxheVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy51cGRh
dGVUaXRsZXMoKTsKKyAgICB9Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzCmluZGV4IDEzNDUzYzI1Y2FjZjI5MjIwZmRlZTQ0ODBlMTlkYjBlNjM4MTk5ZTcuLjg4
MzBmM2MxZDcwZDc4MWQyN2Y1ZTZhMTA3ZTU0MGJjZWYzYjMxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKQEAgLTY4LDYgKzY4LDExIEBAIFdJLlByb2JlRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIFByb2JlRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRz
IFdJLkRldGFpbHNTCiAgICAgICAgIH0pOwogCiAgICAgICAgIGluc3BlY3RlZFByb2JlU2V0cy5z
b3J0KGZ1bmN0aW9uIHNvcnRCeVNvdXJjZUxvY2F0aW9uKGFQcm9iZVNldCwgYlByb2JlU2V0KSB7
CisgICAgICAgICAgICBpZiAoIShhUHJvYmVTZXQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICBpZiAoIShi
UHJvYmVTZXQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIC0xOworCiAgICAgICAgICAgICB2YXIgYUxvY2F0aW9uID0gYVByb2JlU2V0
LmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOwogICAgICAgICAgICAgdmFyIGJMb2NhdGlv
biA9IGJQcm9iZVNldC5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAgICAgICAg
IHZhciBjb21wYXJpc29uUmVzdWx0ID0gYUxvY2F0aW9uLnNvdXJjZUNvZGUuZGlzcGxheU5hbWUu
ZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGJMb2NhdGlvbi5zb3VyY2VDb2RlLmRpc3BsYXlOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1By
b2JlU2V0RGV0YWlsc1NlY3Rpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzCmluZGV4IDgzNzczN2MwZDNhZDI4
ZjhmNjUwNmQ3NmZmMTU5MDZlODM1NzE1OWUuLmM1NGRkNzcyMmZmNzFkMzljZjVkNzBiMDI2ODY4
MGY3NjZlYjhjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Byb2JlU2V0RGV0YWlsc1NlY3Rpb24uanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcwpAQCAt
MzAsNiArMzAsMjAgQEAgV0kuUHJvYmVTZXREZXRhaWxzU2VjdGlvbiA9IGNsYXNzIFByb2JlU2V0
RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBXSS5EZXRhaWxzU2VjdGkKICAgICB7CiAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KHByb2JlU2V0IGluc3RhbmNlb2YgV0kuUHJvYmVTZXQsICJJbnZhbGlkIFBy
b2JlU2V0IGFyZ3VtZW50OiIsIHByb2JlU2V0KTsKIAorICAgICAgICBsZXQgdGl0bGUgPSAiIjsK
KyAgICAgICAgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5FdmVudEJyZWFr
cG9pbnQpIHsKKyAgICAgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50ID09PSBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAg
ICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJBbGwgQW5pbWF0aW9uIEZyYW1lcyIpOworICAgICAg
ICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5V
SVN0cmluZygiQWxsIEludGVydmFscyIpOworICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQu
YnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9p
bnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIEV2ZW50cyIpOwor
ICAgICAgICAgICAgZWxzZSBpZiAocHJvYmVTZXQuYnJlYWtwb2ludCA9PT0gV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICB0aXRsZSA9
IFdJLlVJU3RyaW5nKCJBbGwgVGltZW91dHMiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgICAgICB0aXRsZSA9IHByb2JlU2V0LmJyZWFrcG9pbnQuZXZlbnROYW1lOworICAgICAgICB9
CisKICAgICAgICAgdmFyIG9wdGlvbnNFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik7CiAgICAgICAgIHZhciBkYXRhR3JpZCA9IG5ldyBXSS5Qcm9iZVNldERhdGFHcmlkKHBy
b2JlU2V0KTsKIApAQCAtMzgsNyArNTIsNyBAQCBXSS5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0g
Y2xhc3MgUHJvYmVTZXREZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdJLkRldGFpbHNTZWN0aQogCiAg
ICAgICAgIHZhciBwcm9iZVNlY3Rpb25Hcm91cCA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvbkdyb3Vw
KFtzaW5nbGV0b25Sb3ddKTsKIAotICAgICAgICBzdXBlcigicHJvYmUiLCAiIiwgW3Byb2JlU2Vj
dGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOworICAgICAgICBzdXBlcigicHJvYmUiLCB0aXRs
ZSwgW3Byb2JlU2VjdGlvbkdyb3VwXSwgb3B0aW9uc0VsZW1lbnQpOwogCiAgICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJwcm9iZS1zZXQiKTsKIApAQCAtNjUsMTAgKzc5LDEyIEBA
IFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rpb24gPSBjbGFzcyBQcm9iZVNldERldGFpbHNTZWN0aW9u
IGV4dGVuZHMgV0kuRGV0YWlsc1NlY3RpCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lz
dGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNldC5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5f
cHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lz
dGVyKHRoaXMuX3Byb2JlU2V0LCBXSS5Qcm9iZVNldC5FdmVudC5TYW1wbGVzQ2xlYXJlZCwgdGhp
cy5fcHJvYmVTZXRTYW1wbGVzQ2hhbmdlZCk7CiAKLSAgICAgICAgLy8gVXBkYXRlIHRoZSBzb3Vy
Y2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50J3MgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlcywKLSAg
ICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5rIHdoZW4g
cG9zc2libGUuCi0gICAgICAgIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KCk7Ci0gICAgICAgIHRo
aXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQsIFdJLkJy
ZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fdXBkYXRlTGlua0Vs
ZW1lbnQpOworICAgICAgICBpZiAodGhpcy5fcHJvYmVTZXQuYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KSB7CisgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIHNv
dXJjZSBsaW5rIHdoZW4gdGhlIGJyZWFrcG9pbnQncyByZXNvbHZlZCBzdGF0ZSBjaGFuZ2VzLAor
ICAgICAgICAgICAgLy8gc28gdGhhdCBpdCBjYW4gYmVjb21lIGEgbGl2ZSBsb2NhdGlvbiBsaW5r
IHdoZW4gcG9zc2libGUuCisgICAgICAgICAgICB0aGlzLl91cGRhdGVMaW5rRWxlbWVudCgpOwor
ICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIodGhpcy5fcHJvYmVTZXQuYnJl
YWtwb2ludCwgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZSwgdGhpcy5fdXBkYXRlTGlua0VsZW1lbnQpOworICAgICAgICB9CiAKICAgICAgICAgdGhp
cy5fbGlzdGVuZXJTZXQuaW5zdGFsbCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRF
ZGl0b3IuanMKaW5kZXggNmEzMGJkZDJmMTcwZDdlZmZlMjE0YWVkNjJhNTE3MDBhMmRiNmIyMC4u
NDY2MTliZjZhMzFjZjIyNTE3YTU5Y2M1YTgwNTk3OGJmMTEyZjU0NyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0
b3IuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291
cmNlQ29kZVRleHRFZGl0b3IuanMKQEAgLTY2LDEwICs2NiwxMSBAQCBXSS5Tb3VyY2VDb2RlVGV4
dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRv
cgogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgic291cmNlLWNvZGUiKTsKIAog
ICAgICAgICBpZiAodGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpIHsKLSAgICAgICAgICAgIFdJLkJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3Rh
dGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwotICAg
ICAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZl
bnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdl
LCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRT
dGF0dXNEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX3Vw
ZGF0ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7Cisg
ICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3Rh
dHVzRGlkQ2hhbmdlLCB0aGlzKTsKKworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZl
ZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsK
KyAgICAgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX3VwZGF0
ZUJyZWFrcG9pbnRMb2NhdGlvbiwgdGhpcyk7CiAKICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFn
ZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5UYXJnZXRNYW5hZ2VyLkV2ZW50LlRhcmdldEFkZGVkLCB0
aGlzLl90YXJnZXRBZGRlZCwgdGhpcyk7CiAgICAgICAgICAgICBXSS50YXJnZXRNYW5hZ2VyLmFk
ZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5FdmVudC5UYXJnZXRSZW1vdmVkLCB0aGlz
Ll90YXJnZXRSZW1vdmVkLCB0aGlzKTsKQEAgLTE2Nyw3ICsxNjgsNyBAQCBXSS5Tb3VyY2VDb2Rl
VGV4dEVkaXRvciA9IGNsYXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVk
aXRvcgogICAgIGNsb3NlKCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdXBwb3J0c0RlYnVn
Z2luZykgewotICAgICAgICAgICAgV0kuQnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51
bGwsIG51bGwsIHRoaXMpOworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKICAgICAgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAg
ICAgICAgV0kudGFyZ2V0TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwogCkBAIC0xMzA1LDcgKzEzMDYsNyBAQCBXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvciA9IGNs
YXNzIFNvdXJjZUNvZGVUZXh0RWRpdG9yIGV4dGVuZHMgV0kuVGV4dEVkaXRvcgogICAgICAgICB2
YXIgZWRpdG9yTGluZUluZm8gPSB7bGluZU51bWJlciwgY29sdW1uTnVtYmVyfTsKICAgICAgICAg
dmFyIHVuZm9ybWF0dGVkTGluZUluZm8gPSB0aGlzLl91bmZvcm1hdHRlZExpbmVJbmZvRm9yRWRp
dG9yTGluZUluZm8oZWRpdG9yTGluZUluZm8pOwogICAgICAgICB2YXIgc291cmNlQ29kZUxvY2F0
aW9uID0gdGhpcy5fc291cmNlQ29kZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odW5mb3JtYXR0
ZWRMaW5lSW5mby5saW5lTnVtYmVyLCB1bmZvcm1hdHRlZExpbmVJbmZvLmNvbHVtbk51bWJlcik7
Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc291cmNlQ29kZUxv
Y2F0aW9uKTsKKyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQoc291cmNlQ29kZUxvY2F0aW9uKTsKIAogICAgICAgICB2YXIgbGluZUluZm8gPSB0aGlz
Ll9lZGl0b3JMaW5lSW5mb0ZvclNvdXJjZUNvZGVMb2NhdGlvbihicmVha3BvaW50LnNvdXJjZUNv
ZGVMb2NhdGlvbik7CiAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnRXaXRoRWRpdG9yTGluZUlu
Zm8oYnJlYWtwb2ludCwgbGluZUluZm8pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5qcwppbmRleCBmYWJmM2VjMWVmOWNiMTM2Y2IyODcwYTU0ODY3NGQx
YmE4NDMzNTUxLi40MjVjNWFlMTI3ZWU0NzEwOTdkNDM3ZjBjMzdkMWU3MDgyN2JhM2I4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2Vz
TmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qcwpAQCAtMTY5
LDcgKzE2OSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIHRoaXMuX2JyZWFr
cG9pbnRzVHJlZU91dGxpbmUub25kZWxldGUgPSAoc2VsZWN0ZWRUcmVlRWxlbWVudCkgPT4gewog
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc2VsZWN0ZWRUcmVlRWxlbWVudC5zZWxlY3RlZCk7
CiAKLSAgICAgICAgICAgIGlmICghV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92
YWJsZShzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KSkgeworICAgICAgICAg
ICAgaWYgKCFzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkg
ewogICAgICAgICAgICAgICAgIGxldCB0cmVlRWxlbWVudFRvU2VsZWN0ID0gc2VsZWN0ZWRUcmVl
RWxlbWVudC5uZXh0U2VsZWN0YWJsZVNpYmxpbmc7CiAgICAgICAgICAgICAgICAgaWYgKHRyZWVF
bGVtZW50VG9TZWxlY3QpIHsKICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb21pdEZvY3VzID0g
dHJ1ZTsKQEAgLTMyNiw3ICszMjYsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuQWN0aXZlQ2FsbEZyYW1lRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlckFjdGl2
ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5h
ZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5XYWl0aW5nVG9QYXVzZSwg
dGhpcy5faGFuZGxlRGVidWdnZXJXYWl0aW5nVG9QYXVzZSwgdGhpcyk7CiAKLSAgICAgICAgV0ku
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxv
Y2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlv
bkRpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuRGlzcGxheUxvY2F0aW9u
RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENo
YW5nZSwgdGhpcyk7CiAgICAgICAgIFdJLklzc3VlTWVzc2FnZS5hZGRFdmVudExpc3RlbmVyKFdJ
Lklzc3VlTWVzc2FnZS5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMuX2hhbmRs
ZURlYnVnZ2VyT2JqZWN0RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAg
ICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVu
dC5ET01Ob2RlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERPTU5vZGVDaGFuZ2Vk
LCB0aGlzKTsKQEAgLTM4NywxNyArMzg3LDE3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRlZCkg
ewotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRF
dmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0Jy
ZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmlt
YXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9p
bnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpOwog
Ci0gICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRzQnJlYWtwb2ludC52
YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVh
a3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpOworICAg
ICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQp
CisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuYWxsVGltZW91dHNCcmVha3BvaW50KTsKIAotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdz
LnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbEludGVydmFsc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX2Fk
ZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQp
OwogCi0gICAgICAgICAgICBpZiAoV0kuc2V0dGluZ3Muc2hvd0FsbExpc3RlbmVyc0JyZWFrcG9p
bnQudmFsdWUpCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50
QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCk7
CisgICAgICAgICAgICBpZiAoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFr
cG9pbnQpCisgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgIGZvciAobGV0
IGV2ZW50QnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1Z2dlck1hbmFnZXIubGlzdGVuZXJCcmVha3Bv
aW50cykKICAgICAgICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KGV2ZW50QnJlYWtwb2lu
dCk7CkBAIC00NTIsNyArNDUyLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
PSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAg
V0kubmV0d29ya01hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsK
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7CiAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3Rl
bmVyKG51bGwsIG51bGwsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLklz
c3VlTWVzc2FnZS5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAg
ICBXSS5ET01CcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7
CiAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVs
bCwgdGhpcyk7CkBAIC0xMjAxLDcgKzEyMDEsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwog
ICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRP
YmplY3QgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludCwKICAg
ICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCwK
ICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVk
T2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50
LAotICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQgaW5zdGFuY2Vv
ZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5S
ZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuU2NyaXB0VHJl
ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxlbWVudCBp
bnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQgfHwgdHJlZUVsZW1l
bnQgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZVRyZWVFbGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV0kuU2NyaXB0VHJlZUVsZW1lbnQsCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50
KSA9PiB0cmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmFsbE1pY3JvdGFza3NCcmVha3BvaW50LAogICAgICAgICAgICAgICAgICh0cmVlRWxlbWVudCkg
PT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LAogICAgICAgICAgICAgICAgICh0cmVlRWxl
bWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQsCkBAIC0xMjI0LDggKzEyMjQsOCBAQCBXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAg
ICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJl
ZUVsZW1lbnQgJiYgYiBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwg
Yik7CisgICAgICAgICAgICBpZiAoYSBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
VHJlZUVsZW1lbnQgJiYgYiBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVs
ZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVKYXZhU2NyaXB0QnJl
YWtwb2ludFRyZWVFbGVtZW50cyhhLCBiKTsKIAogICAgICAgICAgICAgcmV0dXJuIGEubWFpblRp
dGxlLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiLm1haW5UaXRsZSkgfHwgYS5zdWJ0aXRsZS5leHRl
bmRlZExvY2FsZUNvbXBhcmUoYi5zdWJ0aXRsZSk7CiAgICAgICAgIH07CkBAIC0xMjMzLDcgKzEy
MzMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICBwYXJlbnRUcmVlRWxlbWVu
dC5pbnNlcnRDaGlsZCh0cmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RT
b3J0ZWRCeUZ1bmN0aW9uKHRyZWVFbGVtZW50LCBwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbiwg
Y29tcGFyYXRvcikpOwogICAgIH0KIAotICAgIF9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50
cyhhLCBiKQorICAgIF9jb21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwg
YikKICAgICB7CiAgICAgICAgIGlmICghYS5yZXByZXNlbnRlZE9iamVjdCB8fCAhYi5yZXByZXNl
bnRlZE9iamVjdCkKICAgICAgICAgICAgIHJldHVybiAwOwpAQCAtMTI1MSw3ICsxMjUxLDcgQEAg
V0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlv
blNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnRzVHJl
ZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGJyZWFrcG9pbnQpKQogICAgICAgICAgICAgcmV0dXJu
IG51bGw7CiAKLSAgICAgICAgbGV0IGNvbnN0cnVjdG9yID0gV0kuQnJlYWtwb2ludFRyZWVFbGVt
ZW50OworICAgICAgICBsZXQgY29uc3RydWN0b3IgPSBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRy
ZWVFbGVtZW50OwogICAgICAgICBsZXQgb3B0aW9ucyA9IHt9OwogICAgICAgICBsZXQgcGFyZW50
VHJlZUVsZW1lbnQgPSB0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lOwogCkBAIC0xMjY5LDE5
ICsxMjY5LDE5IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIH07CiAKICAgICAg
ICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVu
dHNCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICJicmVha3Bv
aW50LWRlYnVnZ2VyLXN0YXRlbWVudC1pY29uIjsKKyAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NO
YW1lcyA9IFsiZGVidWdnZXItc3RhdGVtZW50Il07CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxl
ID0gV0kuVUlTdHJpbmcoIkRlYnVnZ2VyIFN0YXRlbWVudHMiKTsKICAgICAgICAgfSBlbHNlIGlm
IChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9p
bnQpIHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0
aW9uLWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJleGNlcHRpb24i
XTsKICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5yZXBlYXRlZFVJU3RyaW5nLmFsbEV4
Y2VwdGlvbnMoKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dl
ck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCkgewotICAgICAgICAgICAgb3B0
aW9ucy5jbGFzc05hbWUgPSAiYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiI7CisgICAgICAgICAg
ICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImV4Y2VwdGlvbiJdOwogICAgICAgICAgICAgb3B0aW9u
cy50aXRsZSA9IFdJLnJlcGVhdGVkVUlTdHJpbmcudW5jYXVnaHRFeGNlcHRpb25zKCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludCkgewotICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWUgPSAi
YnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiI7CisgICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFt
ZXMgPSBbImFzc2VydGlvbiJdOwogICAgICAgICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLnJlcGVh
dGVkVUlTdHJpbmcuYXNzZXJ0aW9uRmFpbHVyZXMoKTsKICAgICAgICAgfSBlbHNlIGlmIChicmVh
a3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsTWljcm90YXNrc0JyZWFrcG9pbnQpIHsK
LSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtbWljcm90YXNrLWlj
b24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJtaWNyb3Rhc2siXTsKICAg
ICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIE1pY3JvdGFza3MiKTsK
ICAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2lu
dCkgewogICAgICAgICAgICAgaWYgKCFicmVha3BvaW50LmRvbU5vZGVJZGVudGlmaWVyKQpAQCAt
MTM2NCw3ICsxMzY0LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICBfcmVtb3ZlQWxs
QnJlYWtwb2ludHMoYnJlYWtwb2ludHMpCiAgICAgewogICAgICAgICBmb3IgKGxldCBicmVha3Bv
aW50IG9mIGJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2Vy
LmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KSkKKyAgICAgICAgICAgIGlmIChicmVh
a3BvaW50LnJlbW92YWJsZSkKICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVt
b3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKICAgICAgICAgfQogICAgIH0KQEAgLTEzODMsNyAr
MTM4Myw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAKICAgICAgICAgbGV0IGJyZWFrcG9p
bnRzID0gW107CiAgICAgICAgIGZvciAobGV0IGNoaWxkIG9mIHRyZWVFbGVtZW50LmNoaWxkcmVu
KSB7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChjaGlsZCBpbnN0YW5jZW9mIFdJLkJyZWFr
cG9pbnRUcmVlRWxlbWVudCk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjaGlsZCBpbnN0
YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwogICAgICAgICAgICAg
bGV0IGJyZWFrcG9pbnQgPSBjaGlsZC5icmVha3BvaW50OwogICAgICAgICAgICAgY29uc29sZS5h
c3NlcnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICBpZiAoYnJlYWtwb2ludCkKQEAgLTE0MDMs
NyArMTQwMyw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAKICAgICAgICAgICAgIGlzc3Vl
VHJlZUVsZW1lbnQgPSBuZXcgV0kuSXNzdWVUcmVlRWxlbWVudChpc3N1ZU1lc3NhZ2UpOwogCi0g
ICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRDaGlsZChpc3N1ZVRyZWVFbGVtZW50
LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24oaXNzdWVUcmVl
RWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4sIHRoaXMuX2NvbXBhcmVCcmVha3Bv
aW50VHJlZUVsZW1lbnRzKSk7CisgICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5pbnNlcnRD
aGlsZChpc3N1ZVRyZWVFbGVtZW50LCBpbnNlcnRpb25JbmRleEZvck9iamVjdEluTGlzdFNvcnRl
ZEJ5RnVuY3Rpb24oaXNzdWVUcmVlRWxlbWVudCwgcGFyZW50VHJlZUVsZW1lbnQuY2hpbGRyZW4s
IHRoaXMuX2NvbXBhcmVKYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50cykpOwogICAgICAg
ICAgICAgaWYgKHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aCA9PT0gMSkKICAgICAg
ICAgICAgICAgICBwYXJlbnRUcmVlRWxlbWVudC5leHBhbmQoKTsKICAgICAgICAgfQpAQCAtMTU1
MCw3ICsxNTUwLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBT
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMu
X3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7
c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtw
b2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LCB7Ci0gICAgICAg
ICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAg
ICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICB0aXRsZTogV0ku
VUlTdHJpbmcoInJlcXVlc3RBbmltYXRpb25GcmFtZSBGaXJlZCIpLAogICAgICAgICAgICAgfSk7
CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2
ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE1OTUsOCArMTU5NSw4IEBAIFdJLlNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFy
UGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5l
LmFkZEV2ZW50TGlzdGVuZXIoV0kuVHJlZU91dGxpbmUuRXZlbnQuU2VsZWN0aW9uRGlkQ2hhbmdl
LCB0aGlzLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICAg
ICAgbGV0IGJyZWFrcG9pbnQgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludEZvcklkZW50
aWZpZXIocGF1c2VEYXRhLmJyZWFrcG9pbnRJZCk7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2lu
dFRyZWVFbGVtZW50ID0gbmV3IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudChicmVha3BvaW50LCB7
Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisg
ICAgICAgICAgICBsZXQgYnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkphdmFTY3JpcHRC
cmVha3BvaW50VHJlZUVsZW1lbnQoYnJlYWtwb2ludCwgeworICAgICAgICAgICAgICAgIGNsYXNz
TmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJU
cmlnZ2VyZWQgQnJlYWtwb2ludCIpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICBsZXQg
YnJlYWtwb2ludERldGFpbHNTZWN0aW9uID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uUm93OwpAQCAt
MTY0NSw3ICsxNjQ1LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKIAogICAgICAgICAgICAg
bGV0IHR5cGUgPSBXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuZGlzcGxheU5hbWVGb3JUeXBl
KGRvbUJyZWFrcG9pbnQudHlwZSk7CiAgICAgICAgICAgICBsZXQgZG9tQnJlYWtwb2ludFRyZWVF
bGVtZW50ID0gbmV3IFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudChkb21CcmVha3BvaW50LCB7
Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisg
ICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICB0
aXRsZTogdHlwZSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgbGV0IGRvbUJyZWFrcG9p
bnRSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25Sb3c7CkBAIC0xNzE1LDcgKzE3MTUsNyBAQCBX
SS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVl
T3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmlu
ZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQg
PSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQoZXZlbnRCcmVha3BvaW50LCB7Ci0g
ICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAg
ICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICB0aXRs
ZTogV0kuVUlTdHJpbmcoIlx1MjAxQyVzXHUyMDFEIEV2ZW50IEZpcmVkIikuZm9ybWF0KHBhdXNl
RGF0YS5ldmVudE5hbWUpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVz
ZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50
KTsKQEAgLTE3NTgsNyArMTc1OCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
ID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAg
ICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJl
ZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBl
dmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxl
bWVudChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwgewotICAg
ICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2VkLWljb24iLAorICAgICAg
ICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgdGl0bGU6
IFdJLlVJU3RyaW5nKCJzZXRJbnRlcnZhbCBGaXJlZCIpLAogICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE4MDIsNyArMTgwMiw3IEBAIFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhp
cy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAK
ICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVu
dEJyZWFrcG9pbnRUcmVlRWxlbWVudChldmVudEJyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAg
ICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBj
bGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmlu
ZygiJXMgRmlyZWQiKS5mb3JtYXQocGF1c2VEYXRhLmV2ZW50TmFtZSksCiAgICAgICAgICAgICB9
KTsKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUuYXBwZW5kQ2hpbGQo
ZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOwpAQCAtMTgxOCw3ICsxODE4LDcgQEAgV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxp
bmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRy
dWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gbmV3
IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxU
aW1lb3V0c0JyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVha3Bv
aW50LXBhdXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJd
LAogICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygic2V0VGltZW91dCBGaXJlZCIp
LAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRs
aW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE4NDQsNyAr
MTg0NCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNl
c05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICAgICAgdGhpcy5f
cGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtz
dXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICAgICAgbGV0IHVybEJyZWFr
cG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQodXJsQnJl
YWtwb2ludCwgewotICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBh
dXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwK
ICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJUcmlnZ2VyZWQgVVJMIEJy
ZWFrcG9pbnQiKSwKICAgICAgICAgICAgICAgICB9KTsKICAgICAgICAgICAgICAgICBsZXQgdXJs
QnJlYWtwb2ludFJvdyA9IG5ldyBXSS5EZXRhaWxzU2VjdGlvblJvdzsKQEAgLTE5NTAsOSArMTk1
MCw5IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAodHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50
VHJlZUVsZW1lbnQpIHsKKyAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCkgewogICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSB0cmVlRWxlbWVudC5icmVha3BvaW50OwotICAgICAgICAgICAgaWYgKFdJLmRlYnVnZ2Vy
TWFuYWdlci5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKQorICAgICAgICAgICAgaWYg
KGJyZWFrcG9pbnQuc3BlY2lhbCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAg
ICAgIGxldCBzb3VyY2VDb2RlID0gYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxh
eVNvdXJjZUNvZGU7CkBAIC0xOTgxLDI1ICsxOTgxLDkgQEAgV0kuU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRz
IFcKICAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsTWljcm90YXNrc0Jy
ZWFrcG9pbnQ7CiAgICAgICAgICAgICBicmVhazsKIAotICAgICAgICBjYXNlIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0
dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5z
aG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQ6Ci0gICAg
ICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbExpc3RlbmVyc0JyZWFrcG9pbnQ7
Ci0gICAgICAgICAgICBicmVhazsKLQogICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQ6CiAgICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGlu
Z3Muc2hvd0FsbFJlcXVlc3RzQnJlYWtwb2ludDsKICAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludDoKLSAg
ICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50
OwotICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoc2V0dGluZykK
QEAgLTIwMDgsNyArMTk5Miw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0g
Y2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGlm
IChldmVudC50eXBlID09PSBXSS5UcmVlT3V0bGluZS5FdmVudC5FbGVtZW50UmVtb3ZlZCkgewog
ICAgICAgICAgICAgbGV0IHNlbGVjdGVkVHJlZUVsZW1lbnQgPSB0aGlzLl9icmVha3BvaW50c1Ry
ZWVPdXRsaW5lLnNlbGVjdGVkVHJlZUVsZW1lbnQ7CiAgICAgICAgICAgICBpZiAoc2VsZWN0ZWRU
cmVlRWxlbWVudCkgewotICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50LnJl
cHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNC
cmVha3BvaW50IHx8ICFXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50UmVtb3ZhYmxlKHNl
bGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QpKSB7CisgICAgICAgICAgICAgICAg
aWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09IFdJLmRlYnVnZ2Vy
TWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgfHwgIXNlbGVjdGVkVHJlZUVsZW1l
bnQucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHNraXBVbnJldmVhbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgY29uc3QgZG9u
dFBvcHVsYXRlID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgbGV0IHRyZWVFbGVtZW50VG9T
ZWxlY3QgPSBzZWxlY3RlZFRyZWVFbGVtZW50LnRyYXZlcnNlTmV4dFRyZWVFbGVtZW50KHNraXBV
bnJldmVhbGVkLCBkb250UG9wdWxhdGUpOwpAQCAtMjA1MiwyNSArMjAzNiwyMyBAQCBXSS5Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsIGV4dGVuZHMgVwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdJLkRPTURlYnVnZ2Vy
TWFuYWdlci5zdXBwb3J0c0V2ZW50QnJlYWtwb2ludHMoKSB8fCBXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludHMoKSkgewotICAgICAgICAgICAgZnVu
Y3Rpb24gYWRkVG9nZ2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCBsYWJl
bCwgY2hlY2tlZCkgeworICAgICAgICAgICAgZnVuY3Rpb24gYWRkVG9nZ2xlRm9yU3BlY2lhbEV2
ZW50QnJlYWtwb2ludChsYWJlbCwgYnJlYWtwb2ludCwgdHlwZSkgewogICAgICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZENoZWNrYm94SXRlbShsYWJlbCwgKCkgPT4gewotICAgICAgICAg
ICAgICAgICAgICBpZiAoY2hlY2tlZCkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJyZWFrcG9p
bnQpCiAgICAgICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAgICBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSBmYWxzZTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAg
ICB9LCBjaGVja2VkKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChuZXcgV0ku
RXZlbnRCcmVha3BvaW50KHR5cGUpKTsKKyAgICAgICAgICAgICAgICB9LCAhIWJyZWFrcG9pbnQp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRC
cmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25GcmFtZXNCcmVha3Bv
aW50LCBXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFtZXMiKSwgV0kuc2V0dGluZ3Muc2hv
d0FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQudmFsdWUpOwotICAgICAgICAgICAgYWRkVG9n
Z2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGlt
ZW91dHNCcmVha3BvaW50LCBXSS5VSVN0cmluZygiQWxsIFRpbWVvdXRzIiksIFdJLnNldHRpbmdz
LnNob3dBbGxUaW1lb3V0c0JyZWFrcG9pbnQudmFsdWUpOwotICAgICAgICAgICAgYWRkVG9nZ2xl
Rm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKSwgV0kuc2V0dGluZ3Mu
c2hvd0FsbEludGVydmFsc0JyZWFrcG9pbnQudmFsdWUpOworICAgICAgICAgICAgYWRkVG9nZ2xl
Rm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlvbiBGcmFt
ZXMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQs
IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKTsKKyAgICAgICAgICAgIGFk
ZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmcoIkFsbCBUaW1lb3V0
cyIpLCBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50LCBXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KTsKKyAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNp
YWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKSwgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5U
eXBlLkludGVydmFsKTsKIAogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9y
KCk7CiAKICAgICAgICAgICAgIGlmIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNBbGxM
aXN0ZW5lcnNCcmVha3BvaW50KCkpCi0gICAgICAgICAgICAgICAgYWRkVG9nZ2xlRm9yU3BlY2lh
bEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtw
b2ludCwgV0kuVUlTdHJpbmcoIkFsbCBFdmVudHMiKSwgV0kuc2V0dGluZ3Muc2hvd0FsbExpc3Rl
bmVyc0JyZWFrcG9pbnQudmFsdWUpOworICAgICAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNp
YWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmcoIkFsbCBFdmVudHMiKSwgV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
Lkxpc3RlbmVyKTsKIAogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0
cmluZygiRXZlbnQgQnJlYWtwb2ludFx1MjAyNiIpLCAoKSA9PiB7CiAgICAgICAgICAgICAgICAg
bGV0IHBvcG92ZXIgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50UG9wb3Zlcih0aGlzKTsKQEAgLTI0
MjEsNyArMjQwMyw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3Mg
U291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGxldCB3YXNT
ZWxlY3RlZCA9IGZhbHNlOwogICAgICAgICBsZXQgb2xkRGVidWdnZXJUcmVlRWxlbWVudCA9IG51
bGw7CiAgICAgICAgIGxldCBuZXdEZWJ1Z2dlclRyZWVFbGVtZW50ID0gbnVsbDsKLSAgICAgICAg
aWYgKGRlYnVnZ2VyT2JqZWN0IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCkgeworICAgICAgICBp
ZiAoZGVidWdnZXJPYmplY3QgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgewog
ICAgICAgICAgICAgb2xkRGVidWdnZXJUcmVlRWxlbWVudCA9IHRoaXMuX2JyZWFrcG9pbnRzVHJl
ZU91dGxpbmUuZmluZFRyZWVFbGVtZW50KGRlYnVnZ2VyT2JqZWN0KTsKICAgICAgICAgICAgIGlm
IChvbGREZWJ1Z2dlclRyZWVFbGVtZW50KQogICAgICAgICAgICAgICAgIHdhc1NlbGVjdGVkID0g
b2xkRGVidWdnZXJUcmVlRWxlbWVudC5zZWxlY3RlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNl
Q29udGVudFZpZXcuanMKaW5kZXggZjkyZGQyYjMxMGU0M2FjZDNkMWE1MzUwZGUyMDQzYmI5YmE3
NTE4ZS4uZjdkMmRlZmY0MTRmODlmMTAzMTgxMWY0OGFlZTU1MTkzMGNiYzI3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGV4dFJlc291cmNl
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvVGV4dFJlc291cmNlQ29udGVudFZpZXcuanMKQEAgLTk4LDcgKzk4LDcgQEAgV0kuVGV4
dFJlc291cmNlQ29udGVudFZpZXcgPSBjbGFzcyBUZXh0UmVzb3VyY2VDb250ZW50VmlldyBleHRl
bmRzIFdJLlJlc291cmNlQ28KICAgICBnZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3Rz
KCkKICAgICB7CiAgICAgICAgIGxldCBvYmplY3RzID0gV0kuZGVidWdnZXJNYW5hZ2VyLnByb2Jl
U2V0cy5maWx0ZXIoZnVuY3Rpb24ocHJvYmVTZXQpIHsKLSAgICAgICAgICAgIHJldHVybiB0aGlz
Ll9yZXNvdXJjZS5jb250ZW50SWRlbnRpZmllciA9PT0gcHJvYmVTZXQuYnJlYWtwb2ludC5jb250
ZW50SWRlbnRpZmllcjsKKyAgICAgICAgICAgIHJldHVybiAhKHByb2JlU2V0LmJyZWFrcG9pbnQg
aW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgfHwgdGhpcy5fcmVzb3VyY2UuY29u
dGVudElkZW50aWZpZXIgPT09IHByb2JlU2V0LmJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXI7
CiAgICAgICAgIH0sIHRoaXMpOwogCiAgICAgICAgIC8vIElmIHRoZSBTb3VyY2VDb2RlVGV4dEVk
aXRvciBoYXMgYW4gZXhlY3V0aW9uTGluZU51bWJlciwgd2UgY2FuIGFzc3VtZQpAQCAtMzE5LDcg
KzMxOSw3IEBAIFdJLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291cmNl
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJjZUNvCiAgICAgX3Byb2JlU2V0c0NoYW5nZWQo
ZXZlbnQpCiAgICAgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LmRhdGEucHJvYmVT
ZXQuYnJlYWtwb2ludDsKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9u
LnNvdXJjZUNvZGUgPT09IHRoaXMucmVzb3VyY2UpCisgICAgICAgIGlmICghKGJyZWFrcG9pbnQg
aW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgfHwgYnJlYWtwb2ludC5zb3VyY2VD
b2RlTG9jYXRpb24uc291cmNlQ29kZSA9PT0gdGhpcy5yZXNvdXJjZSkKICAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1l
bnRhbFJlcHJlc2VudGVkT2JqZWN0c0RpZENoYW5nZSk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
VVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwppbmRleCAwZjI0ODk0ZjM4OWM2ODcyMjFlYWFj
OWMzNWQ1ZjE3NTlmZjEzYTVmLi4wMjFkYmVlMDVlMzA4N2JmOTZkYmI0YmMzNjVmNGY0NzllZWM1
ODQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTIz
LDE2ICsyMywxNiBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
LS5icmVha3BvaW50LnVybCAuc3VidGl0bGUgeworLml0ZW0uYnJlYWtwb2ludC51cmwgLnN1YnRp
dGxlIHsKICAgICBmb250LWZhbWlseTogTWVubG8sIG1vbm9zcGFjZTsKIH0KIAotLmJyZWFrcG9p
bnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtw
b2ludC51cmw6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2Vz
L1R5cGVJY29ucy5zdmcjVVJMQnJlYWtwb2ludC1saWdodCk7CiB9CiAKIEBtZWRpYSAocHJlZmVy
cy1jb2xvci1zY2hlbWU6IGRhcmspIHsKLSAgICAuYnJlYWtwb2ludC51cmw6bm90KC5icmVha3Bv
aW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisgICAgLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5w
YXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMu
c3ZnI1VSTEJyZWFrcG9pbnQtZGFyayk7CiAgICAgfQotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9m
IGZpbGUKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwppbmRleCAw
MjhhNTA2ZjcxMjViMmU4NDdkYWNmZDUwNThhYjkyNzYwY2QwMjdhLi44ZDI3NmQ0M2M4NjdkODgw
NDBjMjE4NDJhYjY4ZWVmODMwY2JhNTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCkBAIC0yMywxNSArMjMsMTUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi1XSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBV
UkxCcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKK1dJ
LlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIFVSTEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCBleHRlbmRzIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAogewotICAgIGNvbnN0cnVjdG9yKGJy
ZWFrcG9pbnQsIHtjbGFzc05hbWUsIHRpdGxlfSA9IHt9KQorICAgIGNvbnN0cnVjdG9yKGJyZWFr
cG9pbnQsIHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5VUkxCcmVha3BvaW50KTsKIAotICAgICAg
ICBsZXQgY2xhc3NOYW1lcyA9IFsiYnJlYWtwb2ludCIsICJ1cmwiXTsKLSAgICAgICAgaWYgKGNs
YXNzTmFtZSkKLSAgICAgICAgICAgIGNsYXNzTmFtZXMucHVzaChjbGFzc05hbWUpOworICAgICAg
ICBpZiAoIUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVz
ID0gW107CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgidXJsIik7CiAKICAgICAgICAgbGV0IHN1
YnRpdGxlOwogICAgICAgICBpZiAoIXRpdGxlKSB7CkBAIC00MiwxMTUgKzQyLDYgQEAgV0kuVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4
dGVuZHMgV0kuR2VuZXJhbFQKICAgICAgICAgICAgICAgICBzdWJ0aXRsZSA9ICIvIiArIGJyZWFr
cG9pbnQudXJsICsgIi8iOwogICAgICAgICB9CiAKLSAgICAgICAgc3VwZXIoY2xhc3NOYW1lcywg
dGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKLQotICAgICAgICB0aGlzLnN0YXR1cyA9IFdJ
LkltYWdlVXRpbGl0aWVzLnVzZVNWR1N5bWJvbCgiSW1hZ2VzL0JyZWFrcG9pbnQuc3ZnIik7Ci0g
ICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTmFtZSA9IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5T
dGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZTsKLQotICAgICAgICB0aGlzLnRvb2x0aXBI
YW5kbGVkU2VwYXJhdGVseSA9IHRydWU7Ci0gICAgfQotCi0gICAgLy8gUHJvdGVjdGVkCi0KLSAg
ICBvbmF0dGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmF0dGFjaCgpOwotCi0gICAgICAg
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50
LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwot
ICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0
dXMsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tl
ZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQuYmluZCh0aGlzKTsKLSAgICAgICAg
dGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VF
bGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdl
RWxlbWVudE1vdXNlRG93biA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bi5iaW5k
KHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwg
dGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0
dXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVu
dEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRv
d24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAg
dGhpcy5fdXBkYXRlU3RhdHVzKCk7Ci0gICAgfQotCi0gICAgb25kZXRhY2goKQotICAgIHsKLSAg
ICAgICAgc3VwZXIub25kZXRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwotCi0gICAg
ICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRT
dGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZl
bnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQp
OwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0
aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7Ci0KLSAgICAgICAgdGhpcy5f
Ym91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRT
dGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSBudWxsOwotICAgIH0KLQotICAgIG9uZGVsZXRl
KCkKLSAgICB7Ci0gICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGlu
ZXMgdGhhdCB3aWxsIHJlbW92ZSB0aGlzCi0gICAgICAgIC8vIEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCB3aWxsIGtub3cgd2hldGhlciBpdCB3YXMgZGVsZXRlZCBmcm9tCi0gICAgICAgIC8vIHdpdGhp
biB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcuIFRleHRFZGl0b3IpLgot
ICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hvcnRjdXQgPSB0cnVlOwot
Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KHRoaXMu
cmVwcmVzZW50ZWRPYmplY3QpOwotCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAg
IG9uZW50ZXIoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAg
ICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBvbnNwYWNlKCkKLSAgICB7Ci0gICAgICAg
IHRoaXMuX3RvZ2dsZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgcG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpCi0gICAgewotICAg
ICAgICBsZXQgYnJlYWtwb2ludCA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3Q7Ci0gICAgICAgIGxl
dCBsYWJlbCA9IGJyZWFrcG9pbnQuZGlzYWJsZWQgPyBXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFr
cG9pbnQiKSA6IFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKTsKLSAgICAgICAgY29u
dGV4dE1lbnUuYXBwZW5kSXRlbShsYWJlbCwgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludC5iaW5kKHRo
aXMpKTsKLQotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxl
dGUgQnJlYWtwb2ludCIpLCAoKSA9PiB7Ci0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlVVJMQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfSk7Ci0gICAgfQot
Ci0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQoZXZlbnQp
Ci0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgfQotCi0gICAg
X3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQoZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2
ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7
Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkKLSAgICB7
Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KLSAgICAgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3RvZ2dsZUJyZWFrcG9pbnQoKQot
ICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQot
ICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUsIHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJ
LkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFzc05hbWUs
IFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBzdXBlcihi
cmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlfSk7CiAgICAgfQogfTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxMzM2ODYxOGI3NzgxYjBiMmQ5YjBiMGFiNmEyYzgyZTM3OWUzNTdmLi5lNjg1NjU1YWMy
M2MyNGM2Yjc5NWJhMjc1NDAyYWM1MjcxYjY1YWUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDYgQEAKKzIw
MjAtMDgtMjEgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IGFsbG93IGV2ZW50IGJyZWFrcG9pbnRzIHRvIGJlIGNvbmZpZ3VyZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNTM2MgorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vNjY5MzI5MjE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQnJp
YW4gQnVyZy4KKworICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2
ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJ
bml0aWFsaXplci5JbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0
aW9uc1Rlc3RDYXNlcyk6IEFkZGVkLgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFs
aXplci5JbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hc3luYyB0ZWFyZG93bik6CisgICAg
ICAgIChUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQpOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0
aWFsaXplci5JbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5l
ci1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1h
bmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3Bv
aW50cy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2
YWwtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVi
dWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2lu
dHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQt
YnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0OgorICAgICAgICBBZGQgdGVzdHMgZm9yIG5ldyBldmVu
dCBicmVha3BvaW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KKworICAgICAgICAqIGh0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanM6CisgICAgICAgIChUZXN0UGFn
ZS5yZWdpc3RlckluaXRpYWxpemVyLkluc3BlY3RvclRlc3Quc3RhcnRUcmFjaW5nQnJlYWtwb2lu
dHMpOgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0
LmpzOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5Qcm90b2NvbFRlc3Qu
UHJvYmUuaW5zdGFsbFRyYWNpbmdMaXN0ZW5lcnMpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2Rl
YnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9k
ZWJ1Z2dlci9icmVha3BvaW50LWNvbHVtbnMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVi
dWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dl
ci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1
Z2dlci9wYXVzZS1yZWFzb24uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcHJv
YmUtbWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2lu
dC5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVz
LXRoaXMtdmFsdWUuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1
cnNpb24uaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXBhdXNlLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1zaGFyZWQtYnJlYWtwb2lu
dC5odG1sOgorICAgICAgICBVcGRhdGUgZXhpc3RpbmcgYnJlYWtwb2ludCB0ZXN0cyB0byB1c2Ug
bmV3IG1vZGVsIG9iamVjdHMuCisKIDIwMjAtMDgtMjAgIEhlY3RvciBMb3BleiAgPGhlY3Rvcl9p
X2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNTY1NDYpOiAxOCBtZWRp
YSB0ZXN0cyBicm9rZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCmluZGV4IDQ2YWE3YzM0OWNhZTUwMDAx
ZTk1NzkxOWNiMDAwNmUzMmQ4ZjkzZjMuLjJlMjcyMzNjMTU5ZDY0ZmM5ODVlNTI4ZTk4ZTlmNGQw
MmFjY2JiYjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcwpAQCAtMTMsMzcgKzEzLDM3IEBAIEluc3Bl
Y3RvclRlc3Quc3RhcnRUcmFjaW5nQnJlYWtwb2ludHMgPSBmdW5jdGlvbigpCiAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IHdhcyByZW1vdmVkLiIpOwogICAgIH0pOwogCi0g
ICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFu
Y2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiQnJlYWtwb2ludCBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5k
aXNhYmxlZCk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVu
dCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5l
eHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3Qg
dHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCByZXNvbHZl
ZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5yZXNvbHZlZCk7CiAgICAgfSk7CiAKLSAg
ICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRv
Q29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51
ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQnJlYWtwb2ludCBhdXRvY29udGludWUgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQu
YXV0b0NvbnRpbnVlKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVj
dCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGNvbmRpdGlvbiBjaGFuZ2VkOiAi
ICsgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQp
IHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3Rl
ZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEi
KTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBhY3Rpb25zIGNoYW5n
ZWQuIE5ldyBjb3VudDogIiArIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVzb3VyY2VzL3By
b2JlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMv
cHJvYmUtdGVzdC5qcwppbmRleCA3NjlhZTRhZjA0NDBjNGYxM2YzNjViMTdjYTBiYjUwMjZkMGZj
Mzk2Li4xMWVlZDJlNTgxYjZhNzAwYWQ3ZmFjNjBiZWE1NzFjNTQyNGU4OWIwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUtdGVzdC5q
cworKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvcHJvYmUt
dGVzdC5qcwpAQCAtNjAsMzcgKzYwLDM3IEBAIFByb3RvY29sVGVzdC5Qcm9iZS5pbnN0YWxsVHJh
Y2luZ0xpc3RlbmVycyA9IGZ1bmN0aW9uKCkKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJy
ZWFrcG9pbnQgd2FzIHJlbW92ZWQuIik7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdl
LCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCBmdW5j
dGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAg
ICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQs
ICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVh
a3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9i
amVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGRp
c2FibGVkIHN0YXRlIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmRpc2FibGVkKTsKICAgICB9KTsK
IAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5F
dmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBl
ISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IHJlc29sdmVkIHN0YXRlIGNoYW5nZWQ6ICIg
KyBicmVha3BvaW50LnJlc29sdmVkKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwg
ZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExp
c3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5jdGlv
bihldmVudCkgewogICAgICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAg
ICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJV
bmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3Bv
aW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVj
dCB0eXBlISIpOwogCiAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGF1dG9j
b250aW51ZSBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAg
IH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQu
RXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAgIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25k
aXRpb25EaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50
ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtw
b2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkJyZWFrcG9pbnQgY29uZGl0aW9uIGNoYW5nZWQ6ICIgKyBicmVha3BvaW50LmNvbmRp
dGlvbik7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0ku
QnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgeworICAg
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5F
dmVudC5BY3Rpb25zRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAgICAgICB2YXIgYnJl
YWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwor
ICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJCcmVha3BvaW50IGFjdGlvbnMgY2hhbmdlZC4gTmV3IGNvdW50OiAiICsg
YnJlYWtwb2ludC5hY3Rpb25zLmxlbmd0aCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2YWwuaHRtbApp
bmRleCA1NTYyZTJiMzNmNmU2M2Y2ZjcxNjIxM2ExNWEzMTU4YTM4N2IwOTA0Li5kNTU0N2JjYzY3
MGE3MTk5MjYxMTUyYmU3NTE0NzBkYzI5MzgwNDBmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1ldmFsLmh0bWwKQEAg
LTI4LDkgKzI4LDkgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgdmFyIGxvY2F0aW9uID0g
c2NyaXB0T2JqZWN0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig0LCAwKTsKICAgICAgICAgLy8g
Q3JlYXRlIHRoZSBicmVha3BvaW50IGFuZCBpdHMgYWN0aW9ucyBiZWZvcmUgc2VuZGluZyBhbnl0
aGluZyB0byB0aGUgYmFja2VuZC4KLSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJl
YWtwb2ludChsb2NhdGlvbik7CisgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGlu
dWUgPSB0cnVlOwotICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50
QWN0aW9uLlR5cGUuRXZhbHVhdGUsIG51bGwsICJhY3Rpb24oYSwgYikiKTsKKyAgICAgICAgYnJl
YWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7
ZGF0YTogImFjdGlvbihhLCBiKSJ9KTsKIAogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRk
QnJlYWtwb2ludChicmVha3BvaW50KTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5z
cGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1sCmluZGV4IGI3Y2MyM2Rj
Mzg1NWY2ZmY3NzgwYmZmNmU3ODk2Zjk2ZGU0NDg3ZWUuLmVlMDk1NWE1YjYzYjVhNjQ0MDcxZjJk
NTcyYTUzZGZhNDcxZWIxZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwKQEAgLTI0LDExICsyNCwxMSBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAg
ICAgICAgICAgbGV0IGxvY2F0aW9uID0gc2NyaXB0T2JqZWN0LmNyZWF0ZVNvdXJjZUNvZGVMb2Nh
dGlvbig0LCAwKTsKLSAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVh
a3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICAgICAgYnJlYWtw
b2ludC5hdXRvQ29udGludWUgPSB0cnVlOwogCiAgICAgICAgICAgICAgICAgZnVuY3Rpb24gYWRk
TG9nQWN0aW9uKGRhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVB
Y3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZywgYnJlYWtwb2ludC5hY3Rpb25zLmxh
c3RWYWx1ZSwgZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0
aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhfSk7CiAgICAgICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICAgICAgYWRkTG9nQWN0aW9uKCJgJHthfWAiKTsKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWNvbHVtbnMuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWNvbHVtbnMuaHRt
bAppbmRleCBkMDJlOGUzYjlmYzE0ZTcwODNkZTllYTcxOThkZWNiZjg3MWNhZWM5Li4xNDE3NDg1
ODQzZjc4ZmYxYjhhZjcxM2Q3ZmZkMmJhNjUyYjRmNjI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1ucy5odG1sCkBAIC0zOCw3
ICszOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB2YXIgdGVzdEluZm8gPSB0ZXN0SW5m
b0xpc3RbY3VycmVudFRlc3RJbmRleF07CiAgICAgICAgIAogICAgICAgICB2YXIgbG9jYXRpb24g
PSBjdXJyZW50U2NyaXB0c1t0ZXN0SW5mby5zY3JpcHRJbmRleF0uY3JlYXRlU291cmNlQ29kZUxv
Y2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIHZhciBicmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAKICAgICAgICAg
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1sCmlu
ZGV4IDI0MTE0NDYwOGQ4ODU5MTViOTY1YmM5MTEwZDI0YzQ0NGZmMjQxNDUuLmYwYWNjMWE0MjQ0
YWFmMzFjY2RkMDA5NjE2YmJjZTMxYzNjZjY3ZTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbApAQCAtMjksNyArMjksNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICB2YXIgdGVzdEluZm8gPSB0ZXN0SW5mb0xpc3Rb
Y3VycmVudFRlc3RJbmRleF07CiAgICAgICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8ubGluZSwgdGVzdEluZm8uY29sdW1uKTsK
LSAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7Cisg
ICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0
aW9uKTsKIAogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVha3Bv
aW50KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSh0ZXN0SW5mby5zdGFy
dEZ1bmMpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVn
Z2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
ZGVidWdnZXItc3RhY2stb3ZlcmZsb3cuaHRtbAppbmRleCA0ZDk1N2M4MDkyNzM3YTFmZjI0YjFk
M2E3NWIyNGNjMTE5ZGFiMWNmLi4yYzdmN2RhNjQ0ZDVjNTEyYTBlNDU3MzAzZDUxYTBmYzY1ZmQz
MTFjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXIt
c3RhY2stb3ZlcmZsb3cuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
ZGVidWdnZXItc3RhY2stb3ZlcmZsb3cuaHRtbApAQCAtMTUsNyArMTUsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgLy8gMCBiYXNlZCBpbmRpY2VzLgogICAgICAgICBsZXQgdGVzdEluZm8g
PSB7bGluZTogOCwgY29sdW1uOiA4fTsKICAgICAgICAgbGV0IGxvY2F0aW9uID0gc2NyaXB0T2Jq
ZWN0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0ZXN0SW5mby5jb2x1
bW4pOwotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9u
KTsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQo
bG9jYXRpb24pOwogICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJlYWtwb2ludChicmVh
a3BvaW50KTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZSgic3RhcnQoKSIp
OwogICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1yZWFzb24uaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1yZWFz
b24uaHRtbAppbmRleCBhY2MxOTUzYjYzMjMzM2JlZjMxYjk1Y2ZlMDhiZGQzMGNkNWE5ZmJjLi5h
NmFmZDQ0NGU4ZmExZTNkNDQ2ZGU3ZWQwMTUxYjk5ZTc5YjY0ZDIzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNvbi5odG1sCkBAIC0xNiw3ICsxNiw3
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBpZiAoIS9wYXVzZS1yZWFzb25zXC5qcyQvLnRl
c3Qoc2NyaXB0LnVybCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgbGV0IHNvdXJj
ZUNvZGVMb2NhdGlvbiA9IHNjcmlwdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oMywgMCk7Ci0g
ICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQoc291cmNlQ29kZUxvY2F0
aW9uKTsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQoc291cmNlQ29kZUxvY2F0aW9uKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJy
ZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUt
YWN0aW9ucy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1hbmFn
ZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWwKaW5kZXggYmY0YWFmMjFjMjI2OWU2YzMxMWI0ZTMx
ZjMxN2U3YTlhMThlZWNiYi4uZjU2YTM2YjM2M2IyODg0MDZiNzdlOTQ0NDJmMmI1MzgyMzkyNzRk
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1hbmFn
ZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rl
YnVnZ2VyL3Byb2JlLW1hbmFnZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWwKQEAgLTMzLDE0ICsz
MywxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICAgICAgdmFyIGxvY2F0aW9uID0gc2Ny
aXB0T2JqZWN0LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig0LCAwKTsKICAgICAgICAgICAgIC8v
IENyZWF0ZSB0aGUgYnJlYWtwb2ludCBhbmQgaXRzIGFjdGlvbnMgYmVmb3JlIHNlbmRpbmcgYW55
dGhpbmcgdG8gdGhlIGJhY2tlbmQuCi0gICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBX
SS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrcG9p
bnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgICAgIGZvciAodmFyIGkgb2YgWzAsIDFd
KQotICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5Qcm9iZSwgbnVsbCwgImEiKTsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50
LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIHtkYXRhOiAiYSJ9
KTsKIAogICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CiAKLSAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVh
a3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKCkgeworICAgICAg
ICAgICAgYnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKCkgewogICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VGhhdChicmVha3BvaW50LnJlc29sdmVkLCAiQnJlYWtw
b2ludCBzaG91bGQgYmUgcmVzb2x2ZWQuIik7CiAgICAgICAgICAgICB9KTsKIApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91
Z2gtYXV0b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zdGVwcGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50
Lmh0bWwKaW5kZXggYTE3MjVjZmJmOWE1MDI2ODJkMGZmNmRkZDA2MWMwNmIzODkwMWRjOS4uZmZm
YWUwZTI5OTgxODcxNjJjNGE0ODlkNzIwOTI2NDZjMmE5YmFhMiAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0Nv
bnRpbnVlLWJyZWFrcG9pbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRvQ29udGludWUtYnJlYWtwb2ludC5odG1s
CkBAIC0yNCw5ICsyNCw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgLy8gU2V0IGF1
dG9Db250aW51ZSBicmVha3BvaW50LgogICAgICAgICAgICAgbGV0IHNjcmlwdCA9IFdJLm5ldHdv
cmtNYW5hZ2VyLm1haW5GcmFtZS5tYWluUmVzb3VyY2Uuc2NyaXB0c1swXTsKICAgICAgICAgICAg
IHZhciBsb2NhdGlvbiA9IHNjcmlwdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oOCwgMCk7Ci0g
ICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsK
KyAgICAgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50
KGxvY2F0aW9uKTsKICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsK
LSAgICAgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24u
VHlwZS5FdmFsdWF0ZSwgbnVsbCwgImFsZXJ0KDEuNSk7Iik7CisgICAgICAgICAgICBicmVha3Bv
aW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIHtkYXRh
OiAiYWxlcnQoMS41KTsifSk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkQnJl
YWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICAgICAgLy8gU3RlcCB0aHJvdWdoIHRoZSBi
cmVha3BvaW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Rh
aWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1mcmFtZXMtdGhpcy12YWx1ZS5odG1sCmluZGV4IDM5NzU5
ZGNiNjU0YWNiMDAyZjFkYTkxMDMxNDY5Zjg5MzFhNGI5YzguLmM3MmJiY2UyYjYxYzI5ODJlOTcy
NWZlOTM0NjIzNDM3NjJlNzc4MGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0
bWwKQEAgLTE1LDcgKzE1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIDAgYmFzZWQg
aW5kaWNlcy4KICAgICAgICAgbGV0IHRlc3RJbmZvID0ge2xpbmU6IDMsIGNvbHVtbjogNH07CiAg
ICAgICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRp
b24odGVzdEluZm8ubGluZSwgdGVzdEluZm8uY29sdW1uKTsKLSAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3BvaW50
ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoInN0YXJ0QUJDKCkiKTsKICAgICB9CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbCBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLXJlY3Vyc2lvbi5odG1sCmluZGV4IDhjYmFi
YTFhZDJlYzNkNzNjYjI2MzA4OThhMWVlYWIxMTc1M2EyZDAuLjY1YjBjYzYxYWUzODExOGI2YTcw
NmRhMzgxMzEwNmE3MDJiNDQwNTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci90YWlsLXJlY3Vyc2lvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci90YWlsLXJlY3Vyc2lvbi5odG1sCkBAIC0yNCw3ICsyNCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICB2YXIgdGVzdEluZm9zID0gW3tsaW5lIDogMywgY29sdW1uIDogOH0sIHts
aW5lIDogNCwgY29sdW1uIDogOH1dOwogICAgICAgICBmb3IgKGxldCB0ZXN0SW5mbyBvZiB0ZXN0
SW5mb3MpIHsKICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVT
b3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8ubGluZSwgdGVzdEluZm8uY29sdW1uKTsKLSAgICAg
ICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAg
ICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9j
YXRpb24pOwogICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CiAgICAgICAgIH0KICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFn
ZSgic3RhcnRSZWN1cnNlKCkiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZy
YW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCA5MGIyNmE3N2JkNTU2Njk1ZjFiMDFm
ZjE3MjlkNjVhNWRmMjhjNzFjLi5mOWVmMDRmNzlkNmNiODNkODlhYTE1ZDI4YjQ1YTg1YWEzZWQx
ZDg2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50
LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0CkBAIC0xLDggKzEsMTMgQEAKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQ
T0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9H
IDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNPTEUgTUVT
U0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBFdmVudCBBbmltYXRpb25G
cmFtZSBicmVha3BvaW50cy4KIAogCiA9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IERPTURlYnVnZ2Vy
LkV2ZW50LkFuaW1hdGlvbkZyYW1lCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIu
RXZlbnQuQW5pbWF0aW9uRnJhbWUuQWRkQnJlYWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlvbi1m
cmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBvbiB3aW5kb3cu
Li4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC0x
NSw2ICsyMCw3IEBAIEFTWU5DIENBTEwgU1RBQ0s6CiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24u
CiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFt
ZS5BZGREaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50
Li4uCiBEaXNhYmxpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmly
aW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9uIHdpbmRvdy4uLgpAQCAtMjIsNiArMjgsNyBA
QCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgogLS0gUnVu
bmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIu
RXZlbnQuQW5pbWF0aW9uRnJhbWUuUmVtb3ZlQnJlYWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlv
bi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2
ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIEZpcmluZyAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBvbiB3aW5kb3cuLi4KQEAg
LTI5LDYgKzM2LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3Bv
aW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTog
RE9NRGVidWdnZXIuRXZlbnQuQW5pbWF0aW9uRnJhbWUuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50
CitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcg
ImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJhbmltYXRp
b24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJhbmltYXRpb24tZnJhbWUi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KQEAgLTM2LDMgKzQ0LDEwMyBAQCBGaXJpbmcgInJlcXVlc3RB
bmltYXRpb25GcmFtZSIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBy
ZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5P
cHRpb25zLkNvbmRpdGlvbgorQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtw
b2ludC4uLgorQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKwor
U2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVz
dCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFu
aW1hdGlvbkZyYW1lLk9wdGlvbnMuSWdub3JlQ291bnQKK0NyZWF0aW5nICJhbmltYXRpb24tZnJh
bWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBC
cmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5PcHRpb25z
LkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGlu
ZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRp
bmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0
aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1l
Lk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZl
bnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9p
bnQuLi4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxpbmcg
YXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
RWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9p
bnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1h
dGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sCmluZGV4IGYwYmE0N2I0NjI1MjVlMjllZWUwNmQ3
ZjEyZmE1Mjc5M2NhMzQwNzEuLmZmYWVmOGI0ZTQ3MzRmODczOGE5YmQ4YmE5MDgwYjA3MzVmOTM1
MWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
YW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbApA
QCAtNDUsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIHJlc29s
dmUoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRp
b25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25G
cmFtZSkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3
YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0
KTsKICAgICAgICAgfSwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5h
Z2VyLlBhdXNlUmVhc29uLkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBh
dXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5B
bmltYXRpb25GcmFtZSkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAg
ICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkg
ewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1
Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uQW5pbWF0aW9uRnJhbWUsIGV2ZW50TmFtZSwgIlNob3Vs
ZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkK
ICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtODYsNyArODYsNyBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBX
SS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uQW5pbWF0aW9uRnJhbWUsIGV2ZW50TmFtZSwg
IlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAot
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAg
ICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQp
CiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2
ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtOTUsNiArOTUsOCBAQCBmdW5jdGlvbiB0ZXN0
KCkgewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVh
cmRvd24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRC
cmVha3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
QW5pbWF0aW9uRnJhbWUsIGV2ZW50TmFtZSk7CisKICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRG
aW5pc2goKTsKIH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9p
bnRzLWV4cGVjdGVkLnR4dAppbmRleCA1ZWM0ODBhNzhiNWQ4M2JjZDcwZWFiNzNhOTdhMjBkZmRl
YjgzNjhkLi5hY2I3MDlmZjBmODJhZDgwZjVmNzVhNDU0NzA0MjgzN2RlN2UzYTAyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJy
ZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsx
LDEzIEBACi1UZXN0cyBmb3IgRXZlbnQgVGltZXIgYnJlYWtwb2ludHMuCitDT05TT0xFIE1FU1NB
R0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQg
QUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitD
T05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CitUZXN0cyBmb3IgRXZlbnQg
SW50ZXJ2YWwgYnJlYWtwb2ludHMuCiAKIAotPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01EZWJ1
Z2dlci5FdmVudC5UaW1lcgorPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01EZWJ1Z2dlci5FdmVu
dC5JbnRlcnZhbAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVy
dmFsLkFkZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4u
LgogQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRJbnRl
cnZhbCIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhhbmRs
ZXIgaXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuSW50ZXJ2YWwuQWRkRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2
ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4K
IERpc2FibGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0SW50
ZXJ2YWwiIG9uIHdpbmRvdy4uLgpAQCAtMjIsNiArMjgsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBh
dXNlIGZvciBkaXNhYmxlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgog
CiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuUmVtb3Zl
QnJlYWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRp
bmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAiaW50ZXJ2YWwiIEV2
ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0SW50ZXJ2YWwiIG9uIHdpbmRvdy4uLgpAQCAt
MjksNiArMzYsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9p
bnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5SZW1vdmVEaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0
aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJpbnRlcnZhbCIgRXZl
bnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4u
LgogUmVtb3ZpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCkBAIC0zNyw2ICs0NSw3
IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2lu
dC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERP
TURlYnVnZ2VyLkV2ZW50LkludGVydmFsLlJlcGVhdEZpcmVCcmVha3BvaW50CitDcmVhdGluZyAi
aW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0SW50ZXJ2YWwiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hv
dWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAgLTU1LDMgKzY0LDEwMyBA
QCBBU1lOQyBDQUxMIFNUQUNLOgogMzogW1BdIEdsb2JhbCBDb2RlCiAtLSBSdW5uaW5nIHRlc3Qg
dGVhcmRvd24uCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRl
cnZhbC5PcHRpb25zLkNvbmRpdGlvbgorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3Bv
aW50Li4uCitBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcg
Y29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBi
cmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5P
cHRpb25zLklnbm9yZUNvdW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KK0FkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBpZ25v
cmVDb3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNl
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1
bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2Vy
LkV2ZW50LkludGVydmFsLk9wdGlvbnMuQWN0aW9uLkxvZworQ3JlYXRpbmcgImludGVydmFsIiBF
dmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4u
CisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNl
LgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVy
dmFsLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBC
cmVha3BvaW50Li4uCitBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCisKK0Fk
ZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4K
KworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBw
YXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGlu
dWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZh
bHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0
bWwKaW5kZXggYjNiMmFmZmU4NjRmYzAyNzlhYTg4OWUyNjRlODNiN2MxYzg4YzQ2NC4uMDI4NGJk
YTI5YWViYjhjNzgyYTQ1MTVkNWY3NTllYWQwM2I4MjliYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwt
YnJlYWtwb2ludHMuaHRtbApAQCAtOSwyMCArOSwyMCBAQAogbGV0IGludGVydmFsSUQgPSBOYU47
CiAKIGZ1bmN0aW9uIGhhbmRsZVdpbmRvd19zZXRJbnRlcnZhbCgpIHsKLSAgICBUZXN0UGFnZS5k
aXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2Utc2V0SW50ZXJ2YWwiKTsKLQogICAgIHJl
cGVhdENsZWFySW50ZXJ2YWwoKTsKKworICAgIFRlc3RQYWdlLmRpc3BhdGNoRXZlbnRUb0Zyb250
ZW5kKCJUZXN0UGFnZS1zZXRJbnRlcnZhbCIpOwogfQogCiBmdW5jdGlvbiBoYW5kbGVSZXBlYXQo
KSB7CiB9CiAKIGZ1bmN0aW9uIHRyaWdnZXJfc2V0SW50ZXJ2YWwoKSB7Ci0gICAgaW50ZXJ2YWxJ
RCA9IHNldEludGVydmFsKGhhbmRsZVdpbmRvd19zZXRJbnRlcnZhbCwgMTAwKTsKKyAgICBpbnRl
cnZhbElEID0gc2V0SW50ZXJ2YWwoaGFuZGxlV2luZG93X3NldEludGVydmFsLCAxMCk7CiB9CiAK
IGZ1bmN0aW9uIHJlcGVhdFNldEludGVydmFsKCkgewotICAgIGludGVydmFsSUQgPSBzZXRJbnRl
cnZhbChoYW5kbGVSZXBlYXQsIDEwMCk7CisgICAgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGhh
bmRsZVJlcGVhdCwgMTApOwogfQogCiBmdW5jdGlvbiByZXBlYXRDbGVhckludGVydmFsKCkgewpA
QCAtMzMsNyArMzMsNyBAQCBmdW5jdGlvbiByZXBlYXRDbGVhckludGVydmFsKCkgewogZnVuY3Rp
b24gdGVzdCgpIHsKICAgICBjb25zdCBldmVudE5hbWUgPSAic2V0SW50ZXJ2YWwiOwogCi0gICAg
bGV0IHN1aXRlID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET01EZWJ1Z2dlci5F
dmVudC5UaW1lciIpOworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwiKTsKIAogICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKICAgICAgICAgbmFtZTogYERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLkFkZEJyZWFr
cG9pbnRgLApAQCAtNjEsNyArNjEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAg
ICAgIHJlc29sdmUoKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZh
bCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0
RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsK
ICAgICAgICAgfSwKQEAgLTc0LDcgKzc0LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2Vy
LlBhdXNlUmVhc29uLkludGVydmFsLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciBk
aXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZh
bHNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
Y3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCkKICAgICAg
ICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVha3Bv
aW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdh
aXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3Qp
OwpAQCAtODgsNyArODgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
ZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFz
b24uSW50ZXJ2YWwsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJl
YWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
YWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFr
cG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2lu
ZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAtMTAyLDcg
KzEwMiw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVz
ZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5JbnRlcnZh
bCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVh
a3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5h
ZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50
KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtw
b2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCkKICAgICAgICAgICAgIC50aGVu
KEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2lu
dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0
RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCkBAIC0xMzQsNyArMTM0LDcgQEAgZnVuY3Rpb24g
dGVzdCgpIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBcInNldEludGVydmFsXCIgb24gd2luZG93Li4u
Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YHJlcGVhdFNldEludGVydmFsKClgKTsKQEAgLTE0NCwxMSArMTQ0LDEzIEBAIGZ1bmN0aW9uIHRl
c3QoKSB7CiAgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50
ZWFyZG93biwKICAgICB9KTsKIAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFk
ZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2VzKHN1aXRlLCBXSS5FdmVudEJyZWFrcG9pbnQuVHlw
ZS5JbnRlcnZhbCwgZXZlbnROYW1lKTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOwogfQogPC9zY3JpcHQ+CiA8L2hlYWQ+CiA8Ym9keSBvbmxvYWQ9InJ1blRlc3QoKSI+Ci0g
ICAgPHA+VGVzdHMgZm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRzLjwvcD4KKyAgICA8cD5UZXN0
cyBmb3IgRXZlbnQgSW50ZXJ2YWwgYnJlYWtwb2ludHMuPC9wPgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0
ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCA3
ODFiN2NkMmRkMGE1ODBlZTk5NDUzNzllNDNhYjY4YWMzYTUwYTJhLi5hOWVmOGZmOGFkZmNmYWI0
MDUyMzhiNWU0MWE0ZTAwMDQ5NTNlNWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJy
ZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTog
QlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNP
TEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RzIGZvciBFdmVudCBMaXN0
ZW5lciBicmVha3BvaW50cy4KIAogCkBAIC03NSw2ICs3OSw3IEBAIFBBU1M6IFNob3VsZCBub3Qg
cGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lkxpc3Rl
bmVyLkFsbEV2ZW50c0JyZWFrcG9pbnQKK0NyZWF0aW5nICJsaXN0ZW5lciIgRXZlbnQgQnJlYWtw
b2ludC4uLgogQWRkaW5nICJsaXN0ZW5lciIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJj
bGljayIgb24gYm9keS4uLgogUEFTUzogU2hvdWxkIHBhdXNlIGJlZm9yZSBldmVudCBoYW5kbGVy
IGlzIHJ1bi4KQEAgLTEyMSwzICsxMjYsMTAzIEBAIERpc2FibGluZyBicmVha3BvaW50cy4uLgog
UEFTUzogU2hvdWxkIGhhdmUgcGF1c2VkIG9uY2UuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24u
CiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRp
b25zLkNvbmRpdGlvbgorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRp
bmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0
aW9uIHRvICdmYWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBu
b3QgcGF1c2UuCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisK
Ky0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25z
Lklnbm9yZUNvdW50CitDcmVhdGluZyAiY2xpY2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGlu
ZyAibGlzdGVuZXI6Y2xpY2siIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworU2V0dGluZyBpZ25vcmVD
b3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgor
CitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKy0tIFJ1bm5p
bmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2
ZW50Lkxpc3RlbmVyLk9wdGlvbnMuQWN0aW9uLkxvZworQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBC
cmVha3BvaW50Li4uCitBZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4u
CisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2Uu
CisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNl
LgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0
ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50Lkxpc3Rl
bmVyLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0ZQorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBCcmVh
a3BvaW50Li4uCitBZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4uCisK
K0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0
ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcg
ZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgor
LS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRz
Lmh0bWwKaW5kZXggZmJiNDk4MDhlZmU5NzhjYjU1ZDQ2MTQzOWVlMGViYjhkYTdiYjU3MS4uNjc0
NjE2YTg1ODhkM2U0OTIzNmI0Mzk1M2EwYmFhZDQ4YjNkOGNmOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlzdGVu
ZXItYnJlYWtwb2ludHMuaHRtbApAQCAtNTgsNyArNTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewog
ICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICAgICAgfSk7CiAKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAg
ICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgiYm9k
eSIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAg
ICAgICB9LApAQCAtNzEsNyArNzEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAg
dGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFu
YWdlci5QYXVzZVJlYXNvbi5MaXN0ZW5lciwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBm
b3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSkKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCB7ZXZlbnROYW1lfSkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJib2R5IiwgZXZlbnRO
YW1lKSkKICAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg1LDcgKzg1LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2Uo
cmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIs
IGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4iKTsK
IAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJy
ZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSkKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7ZXZlbnROYW1lfSkKICAgICAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVh
a3BvaW50KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQogICAgICAgICAgICAgICAgIC5jYXRj
aChyZWplY3QpOwpAQCAtOTksNyArOTksNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAg
ICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2Vy
TWFuYWdlci5QYXVzZVJlYXNvbi5MaXN0ZW5lciwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVz
ZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwgZXZlbnROYW1lKQorICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuTGlzdGVuZXIsIHtldmVudE5hbWV9KQogICAgICAgICAgICAgICAgIC50aGVuKElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAgICAg
ICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9p
bnQpCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
YXdhaXRFdmVudCgiYm9keSIsIGV2ZW50TmFtZSkpCkBAIC0xMjgsNyArMTI4LDcgQEAgZnVuY3Rp
b24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKICAgICAgICAgICAg
IH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVh
a3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcikKICAgICAgICAgICAgIC50aGVuKCgpID0+
IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRmlyaW5nIFwiY2xpY2tcIiBv
biBib2R5Li4uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYHRyaWdnZXJfY2xpY2soKWApOwpAQCAtMTczLDcgKzE3Myw3IEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAK
LSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9p
bnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsICJjbGljayIpCisgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7ZXZlbnROYW1lOiAiY2xpY2sifSkKICAgICAgICAg
ICAgIC50aGVuKCgpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRmly
aW5nIFwiY2xpY2tcIiBvbiBkaXYjeC4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlja1goKWApOwpAQCAtMjExLDcgKzIxMSw3IEBA
IGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgLnRoZW4ocmVzb2x2ZSwgcmVqZWN0
KTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVy
LCAiY2xpY2siKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3Jl
YXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFt
ZTogImNsaWNrIn0pCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gZGl2I3guLi4iKTsKICAgICAg
ICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tYKClg
KTsKQEAgLTIyMSw2ICsyMjEsOCBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZWFyZG93
bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7CiAKKyAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RD
YXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsICJjbGljayIpOwor
CiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1i
cmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0CmluZGV4IGNhNWQwMTBk
ZWVjOWFhNDljYmJiNDFiNGU0ZWEzZmNiNDhkM2E3ZGIuLjlhNmJmOGFkMWIyYWE3OTYyOWI4NjNk
ZTdlM2Q0ZGZiNTE4ODMzMmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRz
LWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDEzIEBACitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9J
TlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAy
CitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NB
R0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBmb3IgRXZlbnQgVGltZXIgYnJlYWtw
b2ludHMuCiAKIAogPT0gUnVubmluZyB0ZXN0IHN1aXRlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1l
cgogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuQWRkQnJl
YWtwb2ludAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAi
dGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRUaW1lb3V0IiBvbiB3aW5k
b3cuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBA
IC0xNSw2ICsyMCw3IEBAIEFTWU5DIENBTEwgU1RBQ0s6CiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRv
d24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lb3V0LkFk
ZERpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIEFkZGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJ0aW1l
b3V0IiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldFRpbWVvdXQiIG9uIHdpbmRvdy4u
LgpAQCAtMjIsNiArMjgsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciBkaXNhYmxlZCBi
cmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZW91dC5SZW1vdmVCcmVha3BvaW50CitDcmVhdGlu
ZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBC
cmVha3BvaW50Li4uCiBSZW1vdmluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmly
aW5nICJzZXRUaW1lb3V0IiBvbiB3aW5kb3cuLi4KQEAgLTI5LDYgKzM2LDcgQEAgUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRl
YXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZW91
dC5SZW1vdmVEaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVh
a3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGlu
ZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgInRpbWVvdXQiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KQEAgLTM2LDMgKzQ0LDEwMyBAQCBGaXJpbmcgInNldFRpbWVvdXQiIG9u
IHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBi
cmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3Qg
Y2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5n
ICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJy
ZWFrcG9pbnQuLi4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ2ZhbHNlJy4uLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworU2V0dGluZyBjb25kaXRp
b24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4K
Ky0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURl
YnVnZ2VyLkV2ZW50LlRpbWVyLk9wdGlvbnMuSWdub3JlQ291bnQKK0NyZWF0aW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKworLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyLk9wdGlvbnMuQWN0aW9uLkxvZworQ3JlYXRp
bmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAidGltZW91dCIgRXZlbnQg
QnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6
IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNv
bnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1
dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5n
IGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
ZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBS
dW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dl
ci5FdmVudC5UaW1lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQu
Li4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxk
IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0
by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBl
eGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRp
dGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNT
OiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1
c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9p
bnRzLmh0bWwKaW5kZXggYTQxZWNkNjllY2I3ZDEzODRkMDc3Yjk1MGNjMTAwNTdhZTQxMDA5MS4u
NmEzNDlhNGI3NzIzNWU5YmIxODhjNGMxYTFjYjhiM2E3M2E0MjFhYyAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRz
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1l
b3V0LWJyZWFrcG9pbnRzLmh0bWwKQEAgLTExLDcgKzExLDcgQEAgZnVuY3Rpb24gaGFuZGxlV2lu
ZG93X3NldFRpbWVvdXQoKSB7CiB9CiAKIGZ1bmN0aW9uIHRyaWdnZXJfc2V0VGltZW91dCgpIHsK
LSAgICBzZXRUaW1lb3V0KGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0LCAxMDApOworICAgIHNldFRp
bWVvdXQoaGFuZGxlV2luZG93X3NldFRpbWVvdXQsIDEwKTsKIH0KIAogZnVuY3Rpb24gdGVzdCgp
IHsKQEAgLTQ1LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICBy
ZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGlt
ZW91dHNCcmVha3BvaW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KQogICAg
ICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVudCgi
d2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwogICAgICAg
ICB9LApAQCAtNTgsNyArNTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VS
ZWFzb24uVGltZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQg
YnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3Bv
aW50KQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJl
YWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0KQogICAgICAgICAgICAgLnRo
ZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAgICAg
ICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3
aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC03Miw3
ICs3Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVz
ZShyZXNvbHZlLCByZWplY3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5UaW1lb3V0
LCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7
CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9p
bnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5h
bWUpKQogICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7CkBAIC04Niw3ICs4Niw3IEBAIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWpl
Y3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5UaW1lb3V0LCBldmVudE5hbWUsICJT
aG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0ku
ZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmRpc2FibGVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVj
dG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50
aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2
ZW50TmFtZSkpCkBAIC05NSw2ICs5NSw4IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgIHRl
YXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwKICAgICB9KTsK
IAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25z
VGVzdENhc2VzKHN1aXRlLCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0LCBldmVudE5h
bWUpOworCiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2Vz
L2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Rv
bS1kZWJ1Z2dlci9yZXNvdXJjZXMvZXZlbnQtYnJlYWtwb2ludC11dGlsaXRpZXMuanMKaW5kZXgg
MTliMjVkMWFkZDIwYjJmNWUwYTFiMmY3ZDgzMzI4ZmZiYmUxNmRjNi4uZTQwMTNhODFiY2U0ZDNk
NGVhNTMyYWVmMzFkMzYxN2FiNTI3NGE0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RvbS1kZWJ1Z2dlci9yZXNvdXJjZXMvZXZlbnQtYnJlYWtwb2ludC11dGlsaXRpZXMuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9yZXNvdXJjZXMvZXZlbnQt
YnJlYWtwb2ludC11dGlsaXRpZXMuanMKQEAgLTEsMTQgKzEsMTk5IEBACiBUZXN0UGFnZS5yZWdp
c3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dCA9IHt9OwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2lu
dE9wdGlvbnNUZXN0Q2FzZXMgPSBmdW5jdGlvbihzdWl0ZSwgdHlwZSwgZXZlbnROYW1lKSB7Cisg
ICAgICAgIGFzeW5jIGZ1bmN0aW9uIHRyaWdnZXJCcmVha3BvaW50KCkgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAgICAg
ICAgcmV0dXJuIFByb21pc2UuYWxsKFsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3
YWl0RXZlbnQoIlRlc3RQYWdlLSIgKyBldmVudE5hbWUpLAorICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJfJHtldmVudE5hbWV9KClgKSwKKyAgICAg
ICAgICAgIF0pOworICAgICAgICB9CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAg
ICAgICAgICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5Db25kaXRpb24iLAorICAgICAg
ICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVz
ZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaGFzIGEgdHJ1dGh5IGJyZWFrcG9pbnQgY29uZGl0aW9u
LiIsCisgICAgICAgICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBwYXVz
ZUNvdW50ID0gMDsKKworICAgICAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2Vy
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IChldmVudCkgPT4geworICAgICAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7CisgICAgICAg
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAg
ICB9KTsKKworICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludCh0eXBlLCB7ZXZlbnROYW1lfSk7
CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4u
Iik7CisgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAiZmFsc2UiOworCisg
ICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIlNldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLiIpOworICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1ZSI7CisgICAgICAgICAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKwor
ICAgICAgICAgICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOworCisgICAgICAg
ICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOwor
ICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGkgLSAyLCAiU2hvdWxkIHBhdXNlLiIpOwor
ICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5y
ZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3Rl
bmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMu
SWdub3JlQ291bnQiLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRoZSBk
ZWJ1Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMgaGl0IGF0IGxl
YXN0IGFzIG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRgLiIsCisgICAgICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAg
ICAgICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExp
c3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAg
ICAgICAgIGxldCBicmVha3BvaW50ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuY3JlYXRlQnJlYWtwb2ludCh0eXBlLCB7ZXZlbnROYW1lfSk7CisKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCJTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLiIpOworICAgICAgICAgICAgICAg
IGJyZWFrcG9pbnQuaWdub3JlQ291bnQgPSAyOworCisgICAgICAgICAgICAgICAgZm9yIChsZXQg
aSA9IDE7IGkgPD00OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5u
ZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFrcG9pbnQo
KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hvdWxkIG5v
dCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3Vs
ZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246
IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKwor
ICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0ZS5uYW1l
ICsgIi5PcHRpb25zLkFjdGlvbi5Mb2ciLAorICAgICAgICAgICAgZGVzY3JpcHRpb246ICJDaGVj
ayB0aGF0IGxvZyBicmVha3BvaW50IGFjdGlvbnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50
IGlzIGhpdC4iLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBs
ZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5k
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQu
UGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50Owor
ICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAg
ICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50
TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQWRkaW5nIGxvZyBhY3Rpb24uLi4iKTsK
KyAgICAgICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0ku
QnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZywge2RhdGE6ICJCUkVBS1BPSU5UIEFDVElPTiBMT0cg
MSJ9KTsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgewor
ICAgICAgICAgICAgICAgICAgICBpZiAoaSA+IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRWRpdGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb24uZGF0YSA9IGBCUkVBS1BPSU5UIEFDVElPTiBMT0cgJHtpfWA7CisKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGF1dG8tY29udGludWUuLi4iKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRy
dWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICBsZXQgW21lc3NhZ2VBZGRlZEV2ZW50XSA9IGF3YWl0IFByb21pc2UuYWxsKFsK
KyAgICAgICAgICAgICAgICAgICAgICAgIFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0ku
Q29uc29sZU1hbmFnZXIuRXZlbnQuTWVzc2FnZUFkZGVkKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgIHRyaWdnZXJCcmVha3BvaW50KCksCisgICAgICAgICAgICAgICAgICAgIF0pOworCisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwobWVzc2FnZUFkZGVkRXZl
bnQuZGF0YS5tZXNzYWdlLm1lc3NhZ2VUZXh0LCBhY3Rpb24uZGF0YSwgIlNob3VsZCBleGVjdXRl
IGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpIDw9IDIp
CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNl
Q291bnQsIGksICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3Vu
dCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93biwK
KyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAgICAg
bmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRlIiwKKyAgICAgICAg
ICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBldmFsdWF0ZSBicmVha3BvaW50IGFjdGlvbnMg
ZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAorICAgICAgICAgICAgYXN5bmMg
dGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAg
ICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAg
ICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNy
ZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgIGxldCBhY3Rp
b24gPSBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZh
bHVhdGUsIHtkYXRhOiAid2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFID0gMTsifSk7
CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA0OyArK2kpIHsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5sb2coIkVkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhY3Rpb24uZGF0YSA9IGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEUg
PSAke2l9O2A7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGF1dG8t
Y29udGludWUuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmF1
dG9Db250aW51ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUo
KTsKKworICAgICAgICAgICAgICAgICAgICBhd2FpdCB0cmlnZ2VyQnJlYWtwb2ludCgpOworCisg
ICAgICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQgPSBh
d2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJ
T05fRVZBTFVBVEVgKTsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RF
cXVhbChicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQsIGksICJTaG91bGQgZXhlY3V0ZSBi
cmVha3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQor
ICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNv
dW50LCBpLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQs
IDIsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2Vy
TWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCisg
ICAgICAgIH0pOworICAgIH07CisKICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50
ZWFyZG93biA9IGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewotICAgICAgICBXSS5kb21EZWJ1
Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2
YWxzQnJlYWtwb2ludCk7Ci0gICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQp
OwotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpOworICAgICAgICBXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludD8ucmVtb3ZlKCk7
CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50Py5y
ZW1vdmUoKTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFr
cG9pbnQ/LnJlbW92ZSgpOworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91
dHNCcmVha3BvaW50Py5yZW1vdmUoKTsKIAogICAgICAgICBmb3IgKGxldCBicmVha3BvaW50IG9m
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5saXN0ZW5lckJyZWFrcG9pbnRzKQotICAgICAgICAgICAg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsK
KyAgICAgICAgICAgIGJyZWFrcG9pbnQucmVtb3ZlKCk7CiAKICAgICAgICAgcmVzb2x2ZSgpOwog
ICAgIH07CkBAIC00Miw4ICsyMjcsMTEgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigo
KSA9PiB7CiAgICAgICAgIH0pOwogICAgIH07CiAKLSAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5jcmVhdGVCcmVha3BvaW50ID0gZnVuY3Rpb24odHlwZSwgZXZlbnROYW1lKSB7Ci0g
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKGBDcmVhdGluZyAiJHtldmVudE5hbWV9IiBFdmVudCBC
cmVha3BvaW50Li4uYCk7CisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRl
QnJlYWtwb2ludCA9IGZ1bmN0aW9uKHR5cGUsIHtldmVudE5hbWV9ID0ge30pIHsKKyAgICAgICAg
aWYgKHR5cGUgIT09IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyKQorICAgICAgICAg
ICAgZXZlbnROYW1lID0gbnVsbDsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQ3JlYXRp
bmcgIiR7ZXZlbnROYW1lIHx8IHR5cGV9IiBFdmVudCBCcmVha3BvaW50Li4uYCk7CiAgICAgICAg
IHJldHVybiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50KG5ldyBX
SS5FdmVudEJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0pKTsKICAgICB9OwogCkBAIC03NCw3
ICsyNjIsNyBAQCBUZXN0UGFnZS5yZWdpc3RlckluaXRpYWxpemVyKCgpID0+IHsKICAgICAgICAg
ICAgICAgICByZXNvbHZlKGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAg
ICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCk7CisgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwogICAgICAgICB9KTsKICAgICB9
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9y
LWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
YnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CmluZGV4IDc2YTg2NDQ4
YmM5ZTE3M2YzNmQ2ZDdjZjMwNGYwY2U3NzA2YWE1MGYuLjU4Zjk1NjIyY2VjZGNlMDQyMDNiNjg3
Y2RjODQ5MzUyYjFjMDY1YzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
YnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQu
dHh0CkBAIC0xLDMgKzEsNyBAQAorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBM
T0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBN
RVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgNAogVGVzdGluZyBET01BZ2VudC5zZXRCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lciBhbmQgRE9NQWdlbnQucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuCiAK
ICAgCkBAIC0xOSw2ICsyMyw5NCBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGJlZm9yZSBidXR0
b24yIGV2ZW50IGhhbmRsZXIgaXMgcnVuLgogQ2xpY2tpbmcgYnV0dG9uMS4uLgogUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBiZWZvcmUgYnV0dG9uMSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KIAorLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRp
b25zLkNvbmRpdGlvbgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRp
dGlvbiB0byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNl
LgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3Rl
bmVyLk9wdGlvbnMuSWdub3JlQ291bnQKKworU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6
IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLkFjdGlvbi5Mb2cKKwor
QWRkaW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKwor
RWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzog
U2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmln
Z2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0
aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2lu
dCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCistLSBSdW5uaW5nIHRlc3QgY2Fz
ZTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQWN0aW9ucy5FdmFs
dWF0ZQorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitF
ZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBw
YXVzZS4KKwogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRM
aXN0ZW5lci5JbnZhbGlkCiBQQVNTOiBTaG91bGQgcHJvZHVjZSBhbiBlcnJvci4KIEVycm9yOiBN
aXNzaW5nIGV2ZW50IGxpc3RlbmVyIGZvciBnaXZlbiBldmVudExpc3RlbmVySWQKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVu
ZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20vYnJlYWtwb2ludC1mb3ItZXZlbnQt
bGlzdGVuZXIuaHRtbAppbmRleCAwZDJmZWE1YWE1MmQ0NTQ0YTExZjI0NjgxMDVjZTQ4MzdmYjQz
NmFhLi5mMzBjOTJhNmQwNzFhYjhhZGRjODk5MmZmYzc5MDA3M2RmNTU2NTNmIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVu
dC1saXN0ZW5lci5odG1sCkBAIC0yMyw5ICsyMywyMiBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAg
IGxldCBidXR0b24xTm9kZSA9IG51bGw7CiAgICAgbGV0IGJ1dHRvbjJOb2RlID0gbnVsbDsKIAot
ICAgIGZ1bmN0aW9uIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKG5vZGVJZCkgewotICAgICAg
ICByZXR1cm4gRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKG5vZGVJZCkKLSAgICAg
ICAgLnRoZW4oKHtsaXN0ZW5lcnN9KSA9PiBsaXN0ZW5lcnMuZmluZCgoZXZlbnRMaXN0ZW5lcikg
PT4gZXZlbnRMaXN0ZW5lci50eXBlID09PSAiY2xpY2siKSk7CisgICAgYXN5bmMgZnVuY3Rpb24g
Z2V0Q2xpY2tFdmVudExpc3RlbmVyKG5vZGVJZCkgeworICAgICAgICBsZXQge2xpc3RlbmVyc30g
PSBhd2FpdCBET01BZ2VudC5nZXRFdmVudExpc3RlbmVyc0Zvck5vZGUobm9kZUlkKTsKKyAgICAg
ICAgcmV0dXJuIGxpc3RlbmVycy5maW5kKChldmVudExpc3RlbmVyKSA9PiBldmVudExpc3RlbmVy
LnR5cGUgPT09ICJjbGljayIpOworICAgIH0KKworICAgIGFzeW5jIGZ1bmN0aW9uIHNldEJyZWFr
cG9pbnRGb3JDbGlja0V2ZW50TGlzdGVuZXIobm9kZSkgeworICAgICAgICBsZXQgY2xpY2tFdmVu
dExpc3RlbmVyID0gYXdhaXQgZ2V0Q2xpY2tFdmVudExpc3RlbmVyKG5vZGUuaWQpOworICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydCghY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQs
ICJDbGljayBldmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgbm90IGhhdmUgYSBicmVh
a3BvaW50LiIpOworCisgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0
KSA9PiB7CisgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuc2luZ2xlRmlyZUV2ZW50
TGlzdGVuZXIoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVk
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICByZXNvbHZlKGV2ZW50LmRhdGEuYnJlYWtw
b2ludCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgV0kuZG9tTWFuYWdlci5zZXRC
cmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihjbGlja0V2ZW50TGlzdGVuZXIpOworICAgICAgICB9
KTsKICAgICB9CiAKICAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3Vp
dGUoIkRPTS5CcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lciIpOwpAQCAtNDksNyArNjIsNyBAQCBm
dW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwodGFyZ2V0RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29u
Lkxpc3RlbmVyLCBgUGF1c2UgcmVhc29uIHNob3VsZCBiZSBMaXN0ZW5lci5gKTsKICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VEYXRhLmV2
ZW50TmFtZSwgImNsaWNrIiwgYFBhdXNlIGRhdGEgZXZlbnROYW1lIHNob3VsZCBiZSAiY2xpY2si
LmApOwogCi0gICAgICAgICAgICAgICAgYXdhaXRHZXRDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9u
MU5vZGUuaWQpCisgICAgICAgICAgICAgICAgZ2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFO
b2RlLmlkKQogICAgICAgICAgICAgICAgIC50aGVuKChjbGlja0V2ZW50TGlzdGVuZXIpID0+IHsK
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQodGFyZ2V0RGF0YS5wYXVz
ZURhdGEuZXZlbnRMaXN0ZW5lcklkID09PSBjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5l
cklkLCBgUGF1c2UgZGF0YSBldmVudExpc3RlbmVySWQgc2hvdWxkIGJlICIke2NsaWNrRXZlbnRM
aXN0ZW5lci5ldmVudExpc3RlbmVySWR9Ii5gKTsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hc3NlcnQoY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQsICJDbGljayBl
dmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgaGF2ZSBhIGJyZWFrcG9pbnQuIik7CkBA
IC03Nyw3ICs5MCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKTsKICAgICAgICAgICAgIH0p
OwogCi0gICAgICAgICAgICBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5p
ZCkKKyAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAg
ICAgICAgICAgIC50aGVuKChjbGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFzc2VydCghY2xpY2tFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQs
ICJDbGljayBldmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQgbm90IGhhdmUgYSBicmVh
a3BvaW50LiIpOwogCkBAIC0xMTEsNyArMTI0LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydCh0YXJnZXREYXRhLnBhdXNlUmVhc29uLCBX
SS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGBQYXVzZSByZWFzb24gc2hv
dWxkIGJlIExpc3RlbmVyLmApOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TmFtZSwgImNsaWNrIiwgYFBhdXNlIGRhdGEgZXZl
bnROYW1lIHNob3VsZCBiZSAiY2xpY2siLmApOwogCi0gICAgICAgICAgICAgICAgYXdhaXRHZXRD
bGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUuaWQpCisgICAgICAgICAgICAgICAgZ2V0Q2xp
Y2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQogICAgICAgICAgICAgICAgIC50aGVuKChj
bGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hc3NlcnQodGFyZ2V0RGF0YS5wYXVzZURhdGEuZXZlbnRMaXN0ZW5lcklkID09PSBjbGlja0V2
ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkLCBgUGF1c2UgZGF0YSBldmVudExpc3RlbmVySWQg
c2hvdWxkIGJlICIke2NsaWNrRXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWR9Ii5gKTsKICAg
ICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoY2xpY2tFdmVudExpc3RlbmVy
Lmhhc0JyZWFrcG9pbnQsICJDbGljayBldmVudCBsaXN0ZW5lciBmb3IgYnV0dG9uMSBzaG91bGQg
aGF2ZSBhIGJyZWFrcG9pbnQuIik7CkBAIC0xMzksNyArMTUyLDcgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlja0J1
dHRvbjEoKWApOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tF
dmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAgZ2V0Q2xpY2tFdmVudExp
c3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQogICAgICAgICAgICAgLnRoZW4oKGNsaWNrRXZlbnRMaXN0
ZW5lcikgPT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZl
bnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRv
bjEgc2hvdWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwogCkBAIC0xNTQsNiArMTY3LDE5NSBAQCBm
dW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB9CiAgICAgfSk7CiAKKyAgICBzdWl0ZS5hZGRUZXN0
Q2FzZSh7CisgICAgICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIu
T3B0aW9ucy5Db25kaXRpb24iLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhl
IGRlYnVnZ2VyIHdpbGwgbm90IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBoYXMgYSB0cnV0
aHkgYnJlYWtwb2ludCBjb25kaXRpb24uIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50Owor
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRG
b3JDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRp
bmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4iKTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuY29u
ZGl0aW9uID0gImZhbHNlIjsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsg
KytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coIlNldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLiIpOworICAgICAgICAg
ICAgICAgICAgICBicmVha3BvaW50LmNvbmRpdGlvbiA9ICJ0cnVlIjsKKyAgICAgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsK
KyAgICAgICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24x
KClgKSwKKyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIGlmIChpIDw9IDIp
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3Vu
dCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGkgLSAy
LCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVha3Bv
aW50LnJlbW92ZSgpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50
TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAg
ICAgICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1l
OiAiRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuSWdub3JlQ291bnQi
LAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgdGhlIGRlYnVnZ2VyIHdpbGwgbm90
IHBhdXNlIHVubGVzcyB0aGUgYnJlYWtwb2ludCBpcyBoaXQgYXQgbGVhc3QgYXMgbWFueSB0aW1l
cyBhcyBpdCdzIGBpZ25vcmVDb3VudGAuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0g
V0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50Owor
ICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAg
IH0pOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRG
b3JDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlNldHRp
bmcgaWdub3JlQ291bnQgdG8gJzInLi4uIik7CisgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9y
ZUNvdW50ID0gMjsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD00OyArK2kpIHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAg
ICAgICAgICAgICBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwK
KyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIGlmIChpIDw9IDIpCisgICAg
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgMCwg
IlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIGkgLSAyLCAiU2hv
dWxkIHBhdXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVha3BvaW50LnJl
bW92ZSgpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVu
ZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICB9
LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9N
LnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQWN0aW9uLkxvZyIsCisgICAg
ICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1
dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsK
KyAgICAgICAgICAgIGxldCBwYXVzZUNvdW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3Rl
bmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5h
Z2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNv
dW50OworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAg
ICAgICAgIH0pOworCisgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFr
cG9pbnRGb3JDbGlja0V2ZW50TGlzdGVuZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkFkZGluZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJlYWtw
b2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkxvZywge2RhdGE6ICJC
UkVBS1BPSU5UIEFDVElPTiBMT0cgMSJ9KTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7
IGkgPD0gNDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJFZGl0aW5nIGxvZyBhY3Rpb24uLi4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJT04gTE9HICR7aX1gOworCisg
ICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLiIpOworICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgbGV0IFttZXNz
YWdlQWRkZWRFdmVudF0gPSBhd2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAg
IFdJLmNvbnNvbGVNYW5hZ2VyLmF3YWl0RXZlbnQoV0kuQ29uc29sZU1hbmFnZXIuRXZlbnQuTWVz
c2FnZUFkZGVkKSwKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50
KCJUZXN0UGFnZUJ1dHRvbjFDbGljayIpLAorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGBjbGlja0J1dHRvbjEoKWApLAorICAgICAgICAgICAgICAgIF0p
OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChtZXNzYWdlQWRk
ZWRFdmVudC5kYXRhLm1lc3NhZ2UubWVzc2FnZVRleHQsIGFjdGlvbi5kYXRhLCAiU2hvdWxkIGV4
ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAgICBpZiAoaSA8PSAy
KQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291
bnQsIGksICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIsICJTaG91
bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBicmVha3BvaW50
LnJlbW92ZSgpOworICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAg
ICB9LAorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAi
RE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQWN0aW9ucy5FdmFsdWF0
ZSIsCisgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBldmFsdWF0ZSBicmVha3BvaW50
IGFjdGlvbnMgZXhlY3V0ZSB3aGVuIHRoZSBicmVha3BvaW50IGlzIGhpdC4iLAorICAgICAgICBh
c3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAg
ICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihX
SS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAg
ICAgICArK3BhdXNlQ291bnQ7CisgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJl
c3VtZSgpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0g
YXdhaXQgc2V0QnJlYWtwb2ludEZvckNsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZSk7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAg
bGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24u
VHlwZS5FdmFsdWF0ZSwge2RhdGE6ICJ3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEUg
PSAxOyJ9KTsKKworICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gNDsgKytpKSB7Cisg
ICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9n
KCJFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIpOworICAgICAgICAgICAgICAgICAgICBhY3Rp
b24uZGF0YSA9IGB3aW5kb3cuQlJFQUtQT0lOVF9BQ1RJT05fRVZBTFVBVEUgPSAke2l9O2A7CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAg
ICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4iKTsKKyAgICAgICAgICAgICAgICBhd2FpdCBQ
cm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXdhaXRFdmVu
dCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwKKyAgICAgICAgICAgICAgICBd
KTsKKworICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQg
PSBhd2FpdCBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB3aW5kb3cuQlJFQUtQT0lOVF9B
Q1RJT05fRVZBTFVBVEVgKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGJyZWFrcG9pbnRBY3Rpb25FdmFsdWF0ZVJlc3VsdCwgaSwgIlNob3VsZCBleGVjdXRlIGJy
ZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpLCAi
U2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBw
YXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUo
KTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAg
ICB9KTsKKwogICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKICAgICAgICAgbmFtZTogIkRPTS5zZXRC
cmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5JbnZhbGlkIiwKICAgICAgICAgZGVzY3JpcHRpb246
ICJJbnZhbGlkIGV2ZW50IGxpc3RlbmVyIGlkZW50aWZpZXJzIHNob3VsZCBjYXVzZSBhbiBlcnJv
ci4iLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1w
YXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5o
dG1sCmluZGV4IGVlM2ExMjVhNzFkMThhMzI1ODUxMjI4YzNiMWRhYTY5NDE2NTY3MWIuLjVhY2Jk
MTkyZmUwZTJkODFiNDNkNzNhMmUzNWZmOWYzNzJkNDA4M2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXBhdXNlLmh0bWwKQEAgLTYzLDcgKzYzLDcgQEAg
ZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIGRlc2NyaXB0aW9uOiAiV29ya2VyIHNob3VsZCBwYXVz
ZSBvbiBicmVha3BvaW50LiIsCiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAg
ICAgICAgICBsZXQgbG9jYXRpb24gPSB3b3JrZXJUYXJnZXQubWFpblJlc291cmNlLmNyZWF0ZVNv
dXJjZUNvZGVMb2NhdGlvbig4LCAwKTsKLSAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3
IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBu
ZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB3b3JrZXIucG9zdE1lc3NhZ2UoInRyaWdnZXJCcmVh
a3BvaW50IilgKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVk
LWJyZWFrcG9pbnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3JrZXIvZGVidWdnZXIt
c2hhcmVkLWJyZWFrcG9pbnQuaHRtbAppbmRleCBhM2IzMzRjNGQ2NjMzYmUzNjk3MGI3ODllYjZl
Yzg5YzhiNjFjZDMyLi5hM2YyNmZkZDAyZDc0NzAxNjJhNmRiY2I3MzhkMTVkYTczNmIzZGY3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1i
cmVha3BvaW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dl
ci1zaGFyZWQtYnJlYWtwb2ludC5odG1sCkBAIC05NCw3ICs5NCw3IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5hc3NlcnQod29ya2VyVGFyZ2V0MS5tYWluUmVzb3VyY2UgaW5zdGFuY2VvZiBXSS5TY3Jp
cHQpOwogICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gd29ya2VyVGFyZ2V0MS5tYWluUmVzb3Vy
Y2UuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKDgsIDApOwotICAgICAgICAgICAgYnJlYWtwb2lu
dCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQg
PSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYHRyaWdnZXJXb3JrZXJCcmVha3BvaW50UGF1
c2VzKClgKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407086</attachid>
            <date>2020-08-23 18:18:09 -0700</date>
            <delta_ts>2020-08-24 10:34:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-215362.patch</filename>
            <type>text/plain</type>
            <size>503281</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDdlOTI2ZGU2OTNmNGIzMWE1ZjRiNDZmYmQ5MjIw
MGQwNTE4NTJhOTMuLmMzZDkyMTc2NjRkODcwNDUxYzljZjI3ZGIzZmVlNTgxYjY0ODlhMmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3MiBAQAorMjAyMC0wOC0yMyAgRGV2
aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
YWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8gYmUgY29uZmlndXJlZAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE1MzYyCisgICAgICAgIDxyZGFyOi8v
cHJvYmxlbS82NjkzMjkyMT4KKworICAgICAgICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisg
ICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3BlcnMgdG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAg
ICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1
ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZpcnN0IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1
YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4gZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRo
b3V0IHBhdXNpbmcKKworICAgICAgICAqIGluc3BlY3Rvci9wcm90b2NvbC9ET00uanNvbjoKKyAg
ICAgICAgQWRkIGFuIGBvcHRpb25zYCBwYXJhbWF0ZXIgdG8gYERPTS5zZXRCcmVha3BvaW50Rm9y
RXZlbnRMaXN0ZW5lcmAgdG8gYWxsb3cgY29uZmlndXJhdGlvbi4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9wcm90b2NvbC9ET01EZWJ1Z2dlci5qc29uOgorICAgICAgICBBZGQgYW4gYG9wdGlvbnNg
IHBhcmFtYXRlciB0byBgRE9NRGVidWdnZXIuc2V0RXZlbnRCcmVha3BvaW50YCB0byBhbGxvdyBj
b25maWd1cmF0aW9uLgorCisgICAgICAgICogZGVidWdnZXIvQnJlYWtwb2ludC5oOgorICAgICAg
ICAoSlNDOjpCcmVha3BvaW50OjppZCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVh
a3BvaW50Ojpzb3VyY2VJRCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50
OjpsaW5lTnVtYmVyIGNvbnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmNv
bHVtbk51bWJlciBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50Ojpjb25k
aXRpb24gY29uc3QpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6QnJlYWtwb2ludDo6YWN0aW9ucyBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50Ojppc0F1dG9Db250aW51ZSBj
b25zdCk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpyZXNldEhpdENvdW50KTog
QWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlzTGlua2VkIGNvbnN0KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmlzUmVzb2x2ZWQgY29uc3QpOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludHNMaXN0Ojp+QnJlYWtwb2ludHNMaXN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBkZWJ1Z2dlci9CcmVha3BvaW50LmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbjo6QWN0aW9uKTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFr
cG9pbnQ6OmNyZWF0ZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpCcmVha3BvaW50OjpCcmVha3Bv
aW50KTogQWRkZWQuCisgICAgICAgIChKU0M6OkJyZWFrcG9pbnQ6OmxpbmspOiBBZGRlZC4KKyAg
ICAgICAgKEpTQzo6QnJlYWtwb2ludDo6cmVzb2x2ZSk6IEFkZGVkLgorICAgICAgICAoSlNDOjpC
cmVha3BvaW50OjpzaG91bGRQYXVzZSk6IEFkZGVkLgorICAgICAgICBVbmlmeSBgSlNDOjpCcmVh
a3BvaW50YCBhbmQgYEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludGAuCisKKyAgICAgICAgKiBk
ZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaDoKKyAgICAgICAgKiBkZWJ1Z2dlci9EZWJ1Z2dl
ci5oOgorICAgICAgICAqIGRlYnVnZ2VyL0RlYnVnZ2VyLmNwcDoKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OkRlYnVnZ2VyKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmFkZE9ic2VydmVyKTog
QWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpyZW1vdmVPYnNlcnZlcik6IEFkZGVkLgor
ICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6Y2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzIGNv
bnN0KTogQWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkaXNwYXRjaEZ1bmN0aW9uVG9P
YnNlcnZlcnMpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNvdXJjZVBhcnNlZCk6
IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludCk6CisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjphcHBseUJyZWFrcG9pbnRzKToKKyAgICAgICAgKEpTQzo6RGVi
dWdnZXI6OnJlc29sdmVCcmVha3BvaW50KToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldEJy
ZWFrcG9pbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cmVtb3ZlQnJlYWtwb2ludCk6Cisg
ICAgICAgIChKU0M6OkRlYnVnZ2VyOjpkaWRIaXRCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAg
IChKU0M6OkRlYnVnZ2VyOjpjbGVhckJyZWFrcG9pbnRzKToKKyAgICAgICAgKEpTQzo6RGVidWdn
ZXI6OmV2YWx1YXRlQnJlYWtwb2ludENvbmRpdGlvbik6IEFkZGVkLgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyk6IEFkZGVkLgorICAgICAgICAoSlND
OjpEZWJ1Z2dlcjo6c2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQuCisgICAg
ICAgIChKU0M6OkRlYnVnZ2VyOjpjYW5jZWxQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KTogQWRkZWQu
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9p
bnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNhbmNlbFBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNvbnRpbnVlUHJv
Z3JhbSk6CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpzdGVwTmV4dEV4cHJlc3Npb24pOgorICAg
ICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3RlcEludG9TdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpE
ZWJ1Z2dlcjo6c3RlcE92ZXJTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6c3Rl
cE91dE9mRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6cGF1c2VJZk5lZWRlZCk6
CisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpoYW5kbGVQYXVzZSk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6ZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZSk6IEFkZGVkLgorICAgICAgICAo
SlNDOjpEZWJ1Z2dlcjo6YXRFeHByZXNzaW9uKToKKyAgICAgICAgKEpTQzo6RGVidWdnZXI6OmNs
ZWFyTmV4dFBhdXNlU3RhdGUpOgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6d2lsbFJ1bk1pY3Jv
dGFzayk6IEFkZGVkLgorICAgICAgICAoSlNDOjpEZWJ1Z2dlcjo6ZGlkUnVuTWljcm90YXNrKTog
QWRkZWQuCisgICAgICAgIChKU0M6OkRlYnVnZ2VyOjpoYXNCcmVha3BvaW50KTogRGVsZXRlZC4K
KyAgICAgICAgKEpTQzo6RGVidWdnZXI6OnNldFBhdXNlT25OZXh0U3RhdGVtZW50KTogRGVsZXRl
ZC4KKyAgICAgICAgVW5pZnkgYEpTQzo6RGVidWdnZXJgIGFuZCBgSW5zcGVjdG9yOjpTY3JpcHRE
ZWJ1Z1NlcnZlcmAgdG8gc2ltcGxpZnkgYnJlYWtwb2ludCBsb2dpYy4KKyAgICAgICAgSW50cm9k
dWNlIHRoZSBjb25jZXB0IG9mIGEgInNwZWNpYWwgYnJlYWtwb2ludCIsIHdoaWNoIGlzIGVzc2Vu
dGlhbGx5IGEgYEpTQzo6QnJlYWtwb2ludGAKKyAgICAgICAgdGhhdCBpcyBleHBlY3RlZCB0byBw
YXVzZSBhdCB0aGUgbmV4dCBvcHBvcnR1bml0eSBidXQgaXNuJ3QgdGllZCB0byBhIHBhcnRpY3Vs
YXIgbG9jYXRpb24uCisgICAgICAgIEFzIGFuIGV4YW1wbGUsIHdoZW5ldmVyIGFuIGV2ZW50IGJy
ZWFrcG9pbnQgaXMgaGl0LCBpbnN0ZWFkIG9mIGp1c3QgcGF1c2luZyBhdCB0aGUgbmV4dAorICAg
ICAgICBvcHBvcnR1bml0eSwgdGhlIG5ld2x5IG1hbmFnZWQgYEpTQzo6QnJlYWtwb2ludGAgaXMg
dXNlZCBhcyBhICJzcGVjaWFsIGJyZWFrcG9pbnQiLCBhbGxvd2luZworICAgICAgICBmb3IgaXQn
cyBjb25maWd1cmF0aW9uIChpZS5nLiBjb25kaXRpb24sIGlnbm9yZSBjb3VudCwgYWN0aW9ucywg
YXV0by1jb250aW51ZSkgdG8gYmUgdXNlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChJbnNwZWN0b3I6Om9iamVjdEdyb3Vw
Rm9yQnJlYWtwb2ludEFjdGlvbik6CisgICAgICAgIChJbnNwZWN0b3I6OmJyZWFrcG9pbnRBY3Rp
b25UeXBlRm9yU3RyaW5nKTogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6OnBhcnNlQnJlYWtw
b2ludE9wdGlvbnMpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50Ojpmcm9tUGF5bG9hZCk6IEFkZGVkLgorICAgICAg
ICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6
OlByb3RvY29sQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmNyZWF0ZURlYnVnZ2VyQnJlYWtw
b2ludCBjb25zdCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6Om1hdGNoZXNTY3JpcHRVUkwgY29uc3QpOiBBZGRl
ZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJC
cmVha3BvaW50RnJvbVBheWxvYWQpOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6ZGlzYWJsZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29uKToKKyAgICAgICAgKEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFzc2VydCk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNjaGVkdWxlQXN5bmND
YWxsKToKKyAgICAgICAgKEluc3BlY3Rvcjo6YnVpbGREZWJ1Z2dlckxvY2F0aW9uKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJs
KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtw
b2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNl
dEJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXNvbHZlQnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24pOgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5pdHkp
OiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2Fu
Y2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQp
OiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2Fu
Y2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9y
OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpwYXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZEJlY29tZUlkbGUpOgorICAgICAgICAoSW5zcGVjdG9yOjpJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQpOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZSk6CisgICAg
ICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxSdW5NaWNyb3Rhc2sp
OgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRSdW5NaWNy
b3Rhc2spOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQ
YXVzZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFr
cG9pbnRBY3Rpb25Tb3VuZCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFySW5zcGVjdG9yQnJlYWtwb2ludFN0YXRlKToKKyAgICAg
ICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2xlYXJEZWJ1Z2dlckJyZWFr
cG9pbnRTdGF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Om1hdGNoZXMpOiBEZWxldGVkLgorICAg
ICAgICAoSW5zcGVjdG9yOjpidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpicmVha3BvaW50
QWN0aW9uc0Zyb21Qcm90b2NvbCk6IERlbGV0ZWQuCisgICAgICAgIChJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQpOiBEZWxldGVk
LgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVz
ZU9uTmV4dFN0YXRlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIENyZWF0ZSBhIHByaXZhdGUgYFBy
b3RvY29sQnJlYWtwb2ludGAgY2xhc3MgdGhhdCBob2xkcyB0aGUgZGF0YSBzZW50IGJ5IHRoZSBm
cm9udGVuZC4gVGhpcworICAgICAgICBpcyBuZWNlc3NhcnkgYmVjYXVzZSBicmVha3BvaW50cyBp
biB0aGUgZnJvbnRlbmQgaGF2ZSBhIHBvdGVudGlhbGx5IG9uZS10by1tYW55IHJlbGF0aW9uc2hp
cAorICAgICAgICB3aXRoIGJyZWFrcG9pbnRzIGluIHRoZSBiYWNrZW5kLCBhcyB0aGUgc2FtZSBz
Y3JpcHQgY2FuIGJlIGxvYWRlZCBtYW55IHRpbWVzIG9uIGEgcGFnZS4gRWFjaAorICAgICAgICBv
ZiB0aG9zZSBzY3JpcHRzIGlzIGluZGVwZW5kZW50LCBob3dldmVyLCBhbmQgY2FuIGV4ZWN1dGUg
ZGlmZmVyZW50bHksIG1lYW5pbmcgdGhhdCB0aGUgc2FtZQorICAgICAgICBicmVha3BvaW50IGZv
ciBlYWNoIHNjcmlwdCBhbHNvIG5lZWRzIGEgZGlmZmVyZW50IHN0YXRlIChlLmcuIGlnbm9yZSBj
b3VudCkuIEFzIHN1Y2gsIHRoZQorICAgICAgICBgUHJvdG9jb2xCcmVha3BvaW50YCBpcyBlZmZl
Y3RpdmVseSBhIHRlbXBsYXRlIHRoYXQgaXMgYWN0dWFsaXplZCB3aGVuZXZlciBhIG5ldyBzY3Jp
cHQgaXMKKyAgICAgICAgcGFyc2VkIHRoYXQgbWF0Y2hlcyB0aGUgVVJMIG9mIHRoZSBgUHJvdG9j
b2xCcmVha3BvaW50YCB0byBjcmVhdGUgYSBgSlNDOjpCcmVha3BvaW50YCB0aGF0CisgICAgICAg
IGlzIHVzZWQgYnkgdGhlIGBKU0M6OkRlYnVnZ2VyYC4gYFByb3RvY29sQnJlYWtwb2ludGAgYWxz
byBwYXJzZXMgYnJlYWtwb2ludCBjb25maWd1cmF0aW9ucy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JFbnZpcm9ubWVudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9KU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyKToK
KyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YXR0
YWNoRGVidWdnZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JBdWRpdEFnZW50OjpydW4pOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpzZXRQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFn
ZW50OjpldmFsdWF0ZSk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Y2FsbEZ1bmN0aW9uT24pOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByZXZpZXcpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50aW1l
QWdlbnQ6OmdldFByb3BlcnRpZXMpOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmdldERpc3BsYXlhYmxlUHJvcGVydGllcyk6CisgICAgICAgICogaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oOgorICAgICAgICBSZXBs
YWNlIGBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyYCB3aXRoIGBKU0M6OkRlYnVnZ2VyYC4K
KworICAgICAgICAqIHJ1bnRpbWUvSlNNaWNyb3Rhc2suY3BwOgorICAgICAgICAoSlNDOjpKU01p
Y3JvdGFzazo6cnVuKToKKyAgICAgICAgRHJpdmUtYnk6IHIyNDg4OTQgbWlzdGFrZW5seSBvbWl0
dGVkIHRoZSBjYWxsIHRvIG5vdGlmeSB0aGUgZGVidWdnZXIgdGhhdCB0aGUgbWljcm90YXNrIHJh
bi4KKworICAgICAgICAqIGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmg6IFJlbW92ZWQuCisg
ICAgICAgICogaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBp
bnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIENNYWtl
TGlzdHMudHh0OgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogU291cmNlcy50eHQ6CisKIDIwMjAtMDgtMjAgIEFsZXhleSBTaHZh
eWthICA8c2h2YWlrYWxlc2hAZ21haWwuY29tPgogCiAgICAgICAgIEludmFsaWQgZWFybHkgZXJy
b3JzIGZvciBjbGFzcyBtZXRob2RzIG5hbWVkICJjb25zdHJ1Y3RvciIgYW5kICJwcm90b3R5cGUi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKaW5kZXggMmU0MzA1MTFjYzQ1ZjY1NzNiZWZmZWQ2ZjUwYWIzZTU1ODkyOWIyOC4u
YzU4OGE2ODJlOWNjODY1MTI3MGM5MzBjMjU0MjA2ZDg2MDBlOTUzNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEwOCBAQAorMjAyMC0wOC0yMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8g
YmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MzYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjkzMjkyMT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3Bl
cnMgdG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAgICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93
LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZp
cnN0IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4g
ZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRob3V0IHBhdXNpbmcKKworICAgICAgICBUZXN0
czogaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci5odG1sCisgICAg
ICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1i
cmVha3BvaW50cy5odG1sCisgICAgICAgICAgICAgICBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2
ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwKKyAgICAgICAgICAgICAgIGluc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMuaHRtbAorICAgICAgICAgICAg
ICAgaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0bWwK
KworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NQWdlbnQuaDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEJyZWFrcG9pbnRGb3JFdmVudExp
c3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpyZW1vdmVCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01B
Z2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3RvckRPTUFnZW50OjpicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGFzQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIp
OiBEZWxldGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
OjpkaXNhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6
Om1haW5GcmFtZU5hdmlnYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1
Z2dlckFnZW50OjpzZXRFdmVudEJyZWFrcG9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaWRIYW5kbGVFdmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsRmlyZVRp
bWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEZp
cmVUaW1lcik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dl
ckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVO
YXZpZ2F0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxG
aXJlQW5pbWF0aW9uRnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURPTURlYnVnZ2VyQWdl
bnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRE9NRGVi
dWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpXb3JrZXJET01EZWJ1Z2dlckFnZW50OjpzZXRBbmltYXRpb25GcmFtZUJy
ZWFrcG9pbnQpOgorICAgICAgICBLZWVwIGEgYEpTQzo6QnJlYWtwb2ludGAgZm9yIGVhY2ggZXZl
bnQgYnJlYWtwb2ludCBpbnN0ZWFkIG9mIGEgc2ltcGxlIGBib29sYCwgYWxsb3dpbmcgZm9yCisg
ICAgICAgIGNvbmZpZ3VyYXRpb24gd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBmaXJzdCBzZXQuIFdo
ZW4gYW55IG9mIHRoZXNlIGJyZWFrcG9pbnRzIGFyZSBoaXQsIHBhc3MKKyAgICAgICAgaXQgdG8g
dGhlIGBKU0M6OkRlYnVnZ2VyYCBhcyBhICJzcGVjaWFsIGJyZWFrcG9pbnQiLCB3aGljaCBiZWhh
dmVzIHRoZSBzYW1lIGFzICJwYXVzZSBBU0FQIgorICAgICAgICBidXQgYWxzbyBzdXBwb3J0cyBh
IGNvbmRpdGlvbiwgYW4gaWdub3JlIGNvdW50LCBhY3Rpb25zLCBhbmQgYXV0by1jb250aW51ZS4g
UmVzZXQgdGhlIGhpdAorICAgICAgICBjb3VudCBmb3IgYW55IG9mIHRoZXNlICJzcGVjaWFsIGJy
ZWFrcG9pbnRzIiB0aGF0IHBlcnNpc3QgYWNyb3NzIFdlYiBJbnNwZWN0b3Igc2Vzc2lvbnMKKyAg
ICAgICAgd2hlbiB0aGUgbWFpbiBmcmFtZSBuYXZpZ2F0ZXMuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2
ZXI6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZVNj
cmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0
RGVidWdTZXJ2ZXI6OmRpZENvbnRpbnVlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQpOgorICAgICAgICAoV2ViQ29yZTo6
UGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKToK
KyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6aXNDb250ZW50U2NyaXB0
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cmVwb3J0
RXhjZXB0aW9uIGNvbnN0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdT
ZXJ2ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNjcmlw
dERlYnVnU2VydmVyKToKKyAgICAgICAgKFdlYkNvcmU6OldvcmtlclNjcmlwdERlYnVnU2VydmVy
OjphdHRhY2hEZWJ1Z2dlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJTY3JpcHREZWJ1Z1Nl
cnZlcjo6ZGV0YWNoRGVidWdnZXIpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAgICAgKFdlYkNvcmU6Oldv
cmtlclNjcmlwdERlYnVnU2VydmVyOjpyZXBvcnRFeGNlcHRpb24gY29uc3QpOgorICAgICAgICAq
IGluc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KToKKyAgICAgICAg
UmVwbGFjZSBgSW5zcGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlcmAgd2l0aCBgSlNDOjpEZWJ1Z2dl
cmAuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YSk6CisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmludGVybmFsU3RhcnQpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9wKToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclRpbWVsaW5lQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9i
ZSk6CisgICAgICAgIFJlcGxhY2UgYEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludGAgd2l0aCBg
SlNDOjpCcmVha3BvaW50YC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uaDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkSGFuZGxlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0
aW9uOjpkaWRGaXJlVGltZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRIYW5kbGVFdmVudEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9ySW5zdHJ1
bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0aW9uRnJhbWVJbXBsKToKKwor
ICAgICAgICAqIGRvbS9FdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVudFRh
cmdldDo6aW5uZXJJbnZva2VFdmVudExpc3RlbmVycyk6CisgICAgICAgICogcGFnZS9ET01UaW1l
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01UaW1lcjo6ZmlyZWQpOgorICAgICAgICBXaGVu
IG5vdGlmeWluZyBXZWIgSW5zcGVjdG9yIHRoYXQgYWN0aXZpdHkgZGlkIG9jY3VyLCBpbmNsdWRl
IGFsbCBpbmZvcm1hdGlvbiBwcmV2aW91c2x5CisgICAgICAgIGluY2x1ZGVkIHdoZW4gbm90aWZ5
aW5nIFdlYiBJbnNwZWN0b3IgdGhhdCB0aGF0IGFjdGl2aXR5IHdhcyBhYm91dCB0byBvY2N1ciBz
byB0aGF0IFdlYgorICAgICAgICBJbnNwZWN0b3IgY2FuIGtub3cgd2hldGhlciBhIHBhdXNlIGZv
ciB0aGUgInNwZWNpYWwgYnJlYWtwb2ludCIgZm9yIHRoYXQgYWN0aXZpdHkgaXMgc3RpbGwKKyAg
ICAgICAgc2NoZWR1bGVkIGFuZCBpZiBzbyBjYW5jZWwgaXQuCisKIDIwMjAtMDgtMjAgIFdlbnNv
biBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAo
cjI2MzcyOSk6IENhcm91c2VsIGZyZWV6ZXMgb24gImZvdXJ0aCBwYWdlIi9mb3VydGggY2xpY2sg
b24gcmlnaHQgYXJyb3cgb24gbmV0ZmxpeC5jb20KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4
IGQ1NTNiOTk0M2JkMmFiYmU3YTRhZDgzNzg5MDk0NTgxYjMwOTE4YzQuLmU2NjI1ZTY5M2Q1NTll
NWUxYTBlZGFjMTBkZDg0ZDEzMGJlMTA5MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDM2OSBAQAorMjAyMC0wOC0yMyAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5j
b20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogYWxsb3cgZXZlbnQgYnJlYWtwb2ludHMgdG8g
YmUgY29uZmlndXJlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjE1MzYyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NjkzMjkyMT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBCcmlhbiBCdXJnLgorCisgICAgICAgIFRoaXMgYWxsb3dzIGRldmVsb3Bl
cnMgdG8gZG8gdGhpbmdzIGxpa2U6CisgICAgICAgICAtIG9ubHkgcGF1c2Ugd2hlbiBgd2luZG93
LmV2ZW50LnR5cGVgIGlzIGEgY2VydGFpbiB2YWx1ZQorICAgICAgICAgLSBpZ25vcmUgdGhlIGZp
cnN0IE4gcGF1c2VzCisgICAgICAgICAtIGV2YWx1YXRlIEphdmFTY3JpcHQgd2hlbmV2ZXIgYW4g
ZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCB3aXRob3V0IHBhdXNpbmcKKworICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnQuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50
KToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc3BlY2lhbCk6IEFkZGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHJlbW92YWJsZSk6IEFkZGVkLgorICAgICAgICAoV0ku
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5C
cmVha3BvaW50LnByb3RvdHlwZS5zZXQgY29uZGl0aW9uKToKKyAgICAgICAgKFdJLkJyZWFrcG9p
bnQucHJvdG90eXBlLmdldCBpZ25vcmVDb3VudCk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnBy
b3RvdHlwZS5zZXQgaWdub3JlQ291bnQpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5
cGUuZ2V0IGF1dG9Db250aW51ZSk6CisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5z
ZXQgYXV0b0NvbnRpbnVlKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBh
Y3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBwcm9iZUFjdGlv
bnMpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuY3ljbGVUb05leHRNb2RlKToK
KyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmNyZWF0ZUFjdGlvbik6CisgICAgICAg
IChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5yZWNyZWF0ZUFjdGlvbik6CisgICAgICAgIChXSS5C
cmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmVBY3Rpb24pOgorICAgICAgICAoV0kuQnJlYWtwb2lu
dC5wcm90b3R5cGUuY2xlYXJBY3Rpb25zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUub3B0
aW9uc1RvUHJvdG9jb2wpOiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBl
LmJyZWFrcG9pbnRBY3Rpb25EaWRDaGFuZ2UpOgorICAgICAgICAoV0kuQnJlYWtwb2ludC5mcm9t
SlNPTik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc291
cmNlQ29kZUxvY2F0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLmdldCBjb250ZW50SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3Bv
aW50LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRpZmllcik6IERlbGV0ZWQuCisgICAgICAgIChX
SS5CcmVha3BvaW50LnByb3RvdHlwZS5nZXQgdGFyZ2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBpZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAgICAg
KFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBpZGVudGlmaWVyKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkJyZWFrcG9pbnQucHJvdG90eXBlLmdldCByZXNvbHZlZCk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgcmVzb2x2ZWQpOiBEZWxldGVkLgorICAg
ICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludC5wcm90b3R5cGUuX2lzU3BlY2lhbCk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50LnByb3RvdHlwZS5fc291cmNlQ29kZUxvY2F0aW9u
TG9jYXRpb25DaGFuZ2VkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnQucHJvdG90
eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKTogRGVsZXRlZC4K
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9ET01CcmVha3BvaW50LmpzOgorICAgICAg
ICAoV0kuRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50LmZyb21KU09O
KTogQWRkZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5yZW1vdmUpOiBB
ZGRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAg
ICAgIChXSS5ET01CcmVha3BvaW50LmRlc2VyaWFsaXplKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkRPTUJyZWFrcG9pbnQucHJvdG90eXBlLmdldCBkaXNhYmxlZCk6IERlbGV0ZWQuCisgICAgICAg
IChXSS5ET01CcmVha3BvaW50LnByb3RvdHlwZS5zZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0V2ZW50QnJlYWtwb2ludC5qczoKKyAgICAgICAg
KFdJLkV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQuZnJvbUpT
T04pOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNw
ZWNpYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0
IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90eXBl
LnJlbW92ZSk6IEFkZGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5z
YXZlSWRlbnRpdHlUb0Nvb2tpZSk6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQucHJvdG90
eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnQuZGVzZXJpYWxpemUpOiBE
ZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJs
ZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50LnByb3RvdHlwZS5zZXQg
ZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0phdmFT
Y3JpcHRCcmVha3BvaW50LmpzOiBDb3BpZWQgZnJvbSBVc2VySW50ZXJmYWNlL01vZGVscy9CcmVh
a3BvaW50LmpzLgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpOgorICAgICAgICAo
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuZnJvbUpTT04pOgorICAgICAgICAoV0kuSmF2YVNjcmlw
dEJyZWFrcG9pbnQucHJvdG90eXBlLnRvSlNPTik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJl
YWtwb2ludC5wcm90b3R5cGUuZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbik6CisgICAgICAgIChXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGNvbnRlbnRJZGVudGlmaWVyKToKKyAg
ICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc2NyaXB0SWRlbnRp
Zmllcik6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHRh
cmdldCk6CisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IHNw
ZWNpYWwpOiBBZGRlZC4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlw
ZS5nZXQgcmVtb3ZhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2lu
dC5wcm90b3R5cGUuZ2V0IGVkaXRhYmxlKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5wcm90b3R5cGUuZ2V0IGlkZW50aWZpZXIpOgorICAgICAgICAoV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnNldCBpZGVudGlmaWVyKToKKyAgICAgICAgKFdJLkph
dmFTY3JpcHRCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgcmVzb2x2ZWQpOgorICAgICAgICAoV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLnNldCByZXNvbHZlZCk6CisgICAgICAgIChX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTogQWRkZWQuCisgICAgICAg
IChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5wcm90b3R5cGUuc2F2ZUlkZW50aXR5VG9Db29raWUp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9pc1NwZWNpYWwp
OgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQucHJvdG90eXBlLl9zb3VyY2VDb2Rl
TG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnQucHJvdG90eXBlLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25DaGFuZ2VkKToK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50LmpzOgorICAgICAg
ICAoV0kuVVJMQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LmZyb21KU09O
KTogQWRkZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgc3BlY2lh
bCk6IEFkZGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUucmVtb3ZlKTog
QWRkZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS50b0pTT04pOgorICAg
ICAgICAoV0kuVVJMQnJlYWtwb2ludC5kZXNlcmlhbGl6ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5VUkxCcmVha3BvaW50LnByb3RvdHlwZS5nZXQgZGlzYWJsZWQpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuVVJMQnJlYWtwb2ludC5wcm90b3R5cGUuc2V0IGRpc2FibGVkKTogRGVsZXRlZC4KKyAg
ICAgICAgUmVuYW1lIGBXSS5CcmVha3BvaW50YCB0byBgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRg
IGFuZCB1c2UgYFdJLkJyZWFrcG9pbnRgIGFzIGEgbmV3IGNvbW1vbgorICAgICAgICBiYXNlIGNs
YXNzIGZvciBhbGwgYnJlYWtwb2ludCB0eXBlcywgYWxsb3dpbmcgbW9yZSBsb2dpYyB0byBiZSBz
aGFyZWQgKGUuZy4gZGlzYWJsZWQgc3RhdGUpLgorICAgICAgICBBZGRpdGlvbmFsbHksIGJyZWFr
cG9pbnRzIGFyZSBub3cgYWJsZSB0bworICAgICAgICAgLSBkZXRlcm1pbmUgd2hldGhlciBvciBu
b3QgdGhleSdyZQorICAgICAgICAgICAgLSBzcGVjaWFsCisgICAgICAgICAgICAtIHJlbW92YWJs
ZQorICAgICAgICAgICAgLSBlZGl0YWJsZSAoaS5lLiBjb25maWd1cmFibGUpCisgICAgICAgICAt
IHJlbW92ZSB0aGVtc2VsdmVzCisgICAgICAgIHdpdGhvdXQgdGhlIGNhbGxlciBuZWVkaW5nIHRv
IGtub3cgd2hhdCBtYW5hZ2VyIHRvIGNvbnN1bHQgd2l0aC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTU1hbmFnZXIp
OgorICAgICAgICAoV0kuRE9NTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlzdGVuZXJCcmVha3BvaW50
Q29uZmlndXJhdGlvbik6IEFkZGVkLgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUu
c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0kuRE9NTWFuYWdlci5w
cm90b3R5cGUucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV0ku
RE9NTWFuYWdlci5wcm90b3R5cGUuX3NldEV2ZW50QnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAg
ICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX3JlbW92ZUV2ZW50QnJlYWtwb2ludCk6IEFkZGVk
LgorICAgICAgICAoV0kuRE9NTWFuYWdlci5wcm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2lu
dEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKTogQWRkZWQuCisgICAgICAgIChXSS5ET01NYW5hZ2Vy
LnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0aW9uc0NoYW5nZWQpOiBBZGRlZC4K
KyAgICAgICAgKFdJLkRPTU1hbmFnZXIucHJvdG90eXBlLl91cGRhdGVFdmVudEJyZWFrcG9pbnQp
OiBEZWxldGVkLgorICAgICAgICBLZWVwIHRyYWNrIG9mIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBm
b3Igc3BlY2lmaWMgbGlzdGVuZXIgYnJlYWtwb2ludHMuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRPTURl
YnVnZ2VyTWFuYWdlcik6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBl
LmluaXRpYWxpemVUYXJnZXQpOgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3Rv
dHlwZS5hZGRET01CcmVha3BvaW50KToKKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUucmVtb3ZlRE9NQnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLmFkZEV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChXSS5ET01EZWJ1
Z2dlck1hbmFnZXIucHJvdG90eXBlLnJlbW92ZUV2ZW50QnJlYWtwb2ludCk6CisgICAgICAgIChX
SS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZFVSTEJyZWFrcG9pbnQpOgorICAgICAg
ICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVVUkxCcmVha3BvaW50KToK
KyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2NvbW1hbmRBcmd1bWVu
dHNGb3JFdmVudEJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFu
YWdlci5wcm90b3R5cGUuX3NldEV2ZW50QnJlYWtwb2ludCk6IEFkZGVkLgorICAgICAgICAoV0ku
RE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVtb3ZlRXZlbnRCcmVha3BvaW50KTogQWRk
ZWQuCisgICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLl9oYW5kbGVFdmVu
dEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCk6IEFkZGVkLgorICAgICAgICAoV0kuRE9N
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQ
cm9wZXJ0eUNoYW5nZWQpOiBBZGRlZC4KKyAgICAgICAgKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5w
cm90b3R5cGUuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFuZ2VkKTogQWRkZWQuCisg
ICAgICAgIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmlzQnJlYWtwb2ludFNwZWNp
YWwpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5f
dXBkYXRlRXZlbnRCcmVha3BvaW50KTogRGVsZXRlZC4KKyAgICAgICAgS2VlcCB0cmFjayBvZiBj
b25maWd1cmF0aW9uIGNoYW5nZXMgZm9yIHNwZWNpYWwgZXZlbnQgYnJlYWtwb2ludHMuCisgICAg
ICAgIFN0b3JlIHNwZWNpYWwgZXZlbnQgYnJlYWtwb2ludHMgaW5zaWRlIGBXSS5vYmplY3RTdG9y
ZXMuZXZlbnRCcmVha3BvaW50c2AuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0NvbnRyb2xs
ZXJzL0RlYnVnZ2VyTWFuYWdlci5qczoKKyAgICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlcik6Cisg
ICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIucHJvdG90eXBlLmFkZEJyZWFrcG9pbnQpOgorICAg
ICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVCcmVha3BvaW50KToKKyAg
ICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuYWRkUHJvYmVzRm9yQnJlYWtwb2lu
dCk6IEFkZGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVQ
cm9iZXNGb3JCcmVha3BvaW50KTogQWRkZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1hbmFnZXIu
cHJvdG90eXBlLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQpOiBBZGRlZC4KKyAgICAgICAgKFdJ
LkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX3NldEJyZWFrcG9pbnQpOgorICAgICAgICAoV0ku
RGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fYnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRD
aGFuZ2UpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5faGFuZGxlQnJl
YWtwb2ludEFjdGlvbnNEaWRDaGFuZ2UpOgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnBy
b3RvdHlwZS5pc0JyZWFrcG9pbnRSZW1vdmFibGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVi
dWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5pc0JyZWFrcG9pbnRTcGVjaWFsKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuaXNCcmVha3BvaW50RWRpdGFibGUp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fZGVidWdn
ZXJCcmVha3BvaW50QWN0aW9uVHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl9kZWJ1Z2dlckJyZWFrcG9pbnRPcHRpb25zKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkRlYnVnZ2VyTWFuYWdlci5wcm90b3R5cGUuX2FkZFByb2Jlc0ZvckJyZWFrcG9p
bnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRGVidWdnZXJNYW5hZ2VyLnByb3RvdHlwZS5fcmVt
b3ZlUHJvYmVzRm9yQnJlYWtwb2ludCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5EZWJ1Z2dlck1h
bmFnZXIucHJvdG90eXBlLl91cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KTogRGVsZXRlZC4KKyAg
ICAgICAgUmVwbGFjZSBgV0kuQnJlYWtwb2ludGAgd2l0aCBgV0kuSmF2YVNjcmlwdEJyZWFrcG9p
bnRgLgorICAgICAgICBQcm9iZXMgbm93IHN1cHBvcnQgYFdJLkV2ZW50QnJlYWtwb2ludGAgaW4g
YWRkaXRpb24gdG8gYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzOgorICAg
ICAgICAoV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLnByb3RvdHlwZS5hcHBlbmRDb250
ZXh0TWVudUl0ZW1zKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5w
cm90b3R5cGUuX2NyZWF0ZVBvcG92ZXJDb250ZW50KToKKyAgICAgICAgQWxsb3cgYW55IGJyZWFr
cG9pbnQgaW5zdGVhZCBvZiBvbmx5IGBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludGAuCisgICAgICAg
IERyaXZlLWJ5OiB0aGUgZXhpc3RpbmcgYGlnbm9yZUNvdW50YCB2YWx1ZSB3YXNuJ3QgYmVpbmcg
dXNlZCB0byBwb3B1bGF0ZSB0aGUgYDxpbnB1dD5gLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanM6CisgICAgICAgIChXSS5CcmVha3BvaW50
VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGVsZXRlKToKKyAgICAgICAgKFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0IGxpc3RlbmVyU2V0KTogQWRkZWQuCisgICAgICAgIChX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6IEFkZGVkLgor
ICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS51cGRhdGVUaXRsZXMp
OiBBZGRlZC4KKyAgICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuZ2V0
IGJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5nZXQgZmlsdGVyYWJsZURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV0kuQnJl
YWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdXBkYXRlVGl0bGVzKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3VwZGF0ZVN0YXR1cyk6
IERlbGV0ZWQuCisgICAgICAgIChXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9i
cmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJy
ZWFrcG9pbnQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UpOgorICAgICAgICAoLml0ZW0uYnJlYWtw
b2ludC5wYXVzZWQgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xv
ci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29uKTogQWRkZWQuCisg
ICAgICAgICguaXRlbS5icmVha3BvaW50IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVk
KTogRGVsZXRlZC4KKyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ct
ZG9ja2VkLWluYWN0aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3Bv
aW50LnNlbGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkKTogRGVsZXRlZC4K
KyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQgLnN1YnRpdGxlLmZvcm1hdHRlZC1sb2NhdGlvbik6
IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAu
aWNvbik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNv
bik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1hc3NlcnRpb24taWNvbiAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICguYnJlYWtwb2ludC1wYXVzZWQtaWNvbiAuaWNvbik6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbik6IERlbGV0ZWQu
CisgICAgICAgICguYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbiA+IHNwYW4pOiBE
ZWxldGVkLgorICAgICAgICAoLmRhdGEtdXBkYXRlZC5icmVha3BvaW50LWdlbmVyaWMtbGluZS1p
Y29uIC5pY29uID4gc3Bhbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29s
b3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAuaWNv
bik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJr
KSAuYnJlYWtwb2ludC1leGNlcHRpb24taWNvbiAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1hc3NlcnRpb24t
aWNvbiAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1w
YXVzZWQtaWNvbiAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29s
b3Itc2NoZW1lOiBkYXJrKSAuYnJlYWtwb2ludC1nZW5lcmljLWxpbmUtaWNvbiAuaWNvbik6IERl
bGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVs
ZW1lbnQuanM6CisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQpOgorICAgICAg
ICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmF0dGFjaCk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZGV0
YWNoKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90
b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVF
bGVtZW50LnByb3RvdHlwZS5vbmVudGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFr
cG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25zcGFjZSk6IERlbGV0ZWQuCisgICAgICAgIChX
SS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUp
OiBEZWxldGVkLgorICAgICAgICAoV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlw
ZS5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5ET01C
cmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2Vk
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik6IERlbGV0ZWQuCisgICAgICAgIChXSS5E
T01CcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl90b2dnbGVCcmVha3BvaW50KTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Vw
ZGF0ZVN0YXR1cyk6IERlbGV0ZWQuCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9ET01C
cmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5kb20u
c3VidHJlZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5p
dGVtLmJyZWFrcG9pbnQuZG9tLmF0dHJpYnV0ZS1tb2RpZmllZDpub3QoLnBhdXNlZCkgLmljb24p
OiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3Qo
LnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKEBtZWRpYSAocHJlZmVycy1jb2xvci1z
Y2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRyZWUtbW9kaWZpZWQ6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQp
IC5pY29uKTogQWRkZWQuCisgICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3It
c3VidHJlZS1tb2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVs
ZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1hdHRyaWJ1dGUt
bW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisg
ICAgICAgICguYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3Itbm9kZS1yZW1vdmVkOm5vdCgu
YnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlh
IChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQt
Zm9yLXN1YnRyZWUtbW9kaWZpZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6
IERlbGV0ZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAu
YnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1vZGlmaWVkOm5vdCguYnJl
YWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhIChw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9y
LW5vZGUtcmVtb3ZlZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVt
ZW50LmpzOgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQpOgorICAgICAg
ICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uYXR0YWNoKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5v
bmRldGFjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVu
dC5wcm90b3R5cGUub25kZWxldGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uZW50ZXIpOiBEZWxldGVkLgorICAgICAgICAoV0ku
RXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBEZWxldGVkLgor
ICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRl
Q29udGV4dE1lbnUpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQucHJvdG90eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1h
Z2VFbGVtZW50Rm9jdXNlZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRU
cmVlRWxlbWVudC5wcm90b3R5cGUuX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik6IERlbGV0
ZWQuCisgICAgICAgIChXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUuX3Rv
Z2dsZUJyZWFrcG9pbnQpOiBEZWxldGVkLgorICAgICAgICAoV0kuRXZlbnRCcmVha3BvaW50VHJl
ZUVsZW1lbnQucHJvdG90eXBlLl91cGRhdGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVz
ZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOgorICAgICAg
ICAoLml0ZW0uYnJlYWtwb2ludC5ldmVudC5hbmltYXRpb24tZnJhbWU6bm90KC5wYXVzZWQpIC5p
Y29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmV2ZW50LmludGVydmFsOm5v
dCgucGF1c2VkKSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5ldmVu
dC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5pdGVtLmJy
ZWFrcG9pbnQuZXZlbnQudGltZW91dDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAg
ICAgKEBtZWRpYShwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5l
dmVudC5hbmltYXRpb24tZnJhbWU6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAg
IChAbWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZl
bnQuaW50ZXJ2YWw6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEo
cHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQubGlzdGVu
ZXI6bm90KC5wYXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEocHJlZmVycy1j
b2xvci1zY2hlbWU6IGRhcmspIC5pdGVtLmJyZWFrcG9pbnQuZXZlbnQudGltZW91dDpub3QoLnBh
dXNlZCkgLmljb24pOiBBZGRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9p
bnQtZm9yLWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29u
KTogRGVsZXRlZC4KKyAgICAgICAgKC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWlu
dGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVkLgorICAg
ICAgICAoLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItbGlzdGVuZXI6bm90KC5icmVh
a3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgICguYnJlYWtwb2lu
dC5ldmVudC5icmVha3BvaW50LWZvci10aW1lb3V0Om5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNv
bikgLmljb24pOiBEZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1l
OiBkYXJrKSAuYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1hbmltYXRpb24tZnJhbWU6
bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbik6IERlbGV0ZWQuCisgICAgICAgIChA
bWVkaWEocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIC5icmVha3BvaW50LmV2ZW50LmJyZWFr
cG9pbnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSAuYnJl
YWtwb2ludC5ldmVudC5icmVha3BvaW50LWZvci1saXN0ZW5lcjpub3QoLmJyZWFrcG9pbnQtcGF1
c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKEBtZWRpYShwcmVmZXJzLWNvbG9y
LXNjaGVtZTogZGFyaykgLmJyZWFrcG9pbnQuZXZlbnQuYnJlYWtwb2ludC1mb3ItdGltZW91dDpu
b3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uKTogRGVsZXRlZC4KKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuanM6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcy4KKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJl
ZUVsZW1lbnQpOgorICAgICAgICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5w
cm90b3R5cGUuZ2V0IGZpbHRlcmFibGVEYXRhKToKKyAgICAgICAgKFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLnVwZGF0ZVN0YXR1cyk6IEFkZGVkLgorICAgICAg
ICAoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUudXBkYXRlVGl0
bGVzKTogQWRkZWQuCisgICAgICAgIChXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50
LnByb3RvdHlwZS5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3Bv
aW50VHJlZUVsZW1lbnQuY3NzLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0
IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3Bv
aW50LmphdmFzY3JpcHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQpOiBBZGRlZC4K
KyAgICAgICAgKGJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0
aXZlKSAudHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3BvaW50LmphdmFzY3Jp
cHQuc2VsZWN0ZWQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UucmVzb2x2ZWQpOiBBZGRlZC4KKyAg
ICAgICAgKC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3VidGl0bGUuZm9ybWF0dGVkLWxv
Y2F0aW9uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGlu
ZSAuaWNvbik6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lmxp
bmUgLmljb24gPiBzcGFuKTogQWRkZWQuCisgICAgICAgICguZGF0YS11cGRhdGVkLml0ZW0uYnJl
YWtwb2ludC5qYXZhc2NyaXB0LmxpbmUgLmljb24gPiBzcGFuKTogQWRkZWQuCisgICAgICAgICgu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uKTogQWRk
ZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZXhjZXB0aW9uIC5pY29u
KTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuYXNzZXJ0aW9u
IC5pY29uKTogQWRkZWQuCisgICAgICAgICguaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubWlj
cm90YXNrIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAuaWNvbik6IEFkZGVk
LgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJl
YWtwb2ludC5qYXZhc2NyaXB0LmRlYnVnZ2VyLXN0YXRlbWVudCAuaWNvbik6IEFkZGVkLgorICAg
ICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2lu
dC5qYXZhc2NyaXB0LmV4Y2VwdGlvbiAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChw
cmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFz
c2VydGlvbiAuaWNvbik6IEFkZGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNj
aGVtZTogZGFyaykgLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0Lm1pY3JvdGFzayAuaWNvbik6
IEFkZGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVF
bGVtZW50LmpzOgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50KToKKyAgICAg
ICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5cGUub25hdHRhY2gpOiBEZWxl
dGVkLgorICAgICAgICAoV0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5vbmRl
dGFjaCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJv
dG90eXBlLm9uZGVsZXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVl
RWxlbWVudC5wcm90b3R5cGUub25lbnRlcik6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVh
a3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLm9uc3BhY2UpOiBEZWxldGVkLgorICAgICAgICAo
V0kuVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5wb3B1bGF0ZUNvbnRleHRNZW51
KTogRGVsZXRlZC4KKyAgICAgICAgKFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5wcm90b3R5
cGUuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNl
ZCk6IERlbGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90
eXBlLl9zdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24pOiBEZWxldGVkLgorICAgICAgICAoV0ku
VVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LnByb3RvdHlwZS5fdG9nZ2xlQnJlYWtwb2ludCk6IERl
bGV0ZWQuCisgICAgICAgIChXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQucHJvdG90eXBlLl91
cGRhdGVTdGF0dXMpOiBEZWxldGVkLgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVVJM
QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzczoKKyAgICAgICAgKC5pdGVtLmJyZWFrcG9pbnQudXJs
IC5zdWJ0aXRsZSk6IEFkZGVkLgorICAgICAgICAoLml0ZW0uYnJlYWtwb2ludC51cmw6bm90KC5w
YXVzZWQpIC5pY29uKTogQWRkZWQuCisgICAgICAgIChAbWVkaWEgKHByZWZlcnMtY29sb3Itc2No
ZW1lOiBkYXJrKSAuaXRlbS5icmVha3BvaW50LnVybDpub3QoLnBhdXNlZCkgLmljb24pOiBBZGRl
ZC4KKyAgICAgICAgKC5icmVha3BvaW50LnVybCAuc3VidGl0bGUpOiBEZWxldGVkLgorICAgICAg
ICAoLmJyZWFrcG9pbnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBE
ZWxldGVkLgorICAgICAgICAoQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgLmJy
ZWFrcG9pbnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24pOiBEZWxldGVk
LgorICAgICAgICBSZW5hbWUgYFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudGAgdG8gYFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnRgIGFuZCB1c2UKKyAgICAgICAgYFdJLkJyZWFrcG9p
bnRUcmVlRWxlbWVudGAgYXMgYSBuZXcgY29tbW9uIGJhc2UgY2xhc3MgZm9yIGFsbCBicmVha3Bv
aW50IHRyZWUgZWxlbWVudHMsCisgICAgICAgIGFsbG93aW5nIG1vcmUgbG9naWMgYW5kIHN0eWxl
cyB0byBiZSBzaGFyZWQgKGUuZy4gZGlzYWJsZWQgc3RhdGUpLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5qczoKKyAgICAgICAg
KFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsKToKKyAgICAgICAgKFdJLlNvdXJjZXNO
YXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5jbG9zZWQpOgorICAgICAgICAoV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9pbnNlcnREZWJ1Z2dlclRyZWVF
bGVtZW50KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3Rv
dHlwZS5fY29tcGFyZUphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnRzKTogQWRkZWQuCisg
ICAgICAgIChXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2FkZEJy
ZWFrcG9pbnQpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLl9yZW1vdmVBbGxCcmVha3BvaW50cyk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2JyZWFrcG9pbnRzQmVuZWF0aFRyZWVFbGVtZW50
KToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
YWRkSXNzdWUpOgorICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJv
dG90eXBlLl91cGRhdGVQYXVzZVJlYXNvblNlY3Rpb24pOgorICAgICAgICAoV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9oYW5kbGVUcmVlU2VsZWN0aW9uRGlkQ2hh
bmdlKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsLnByb3RvdHlw
ZS5faGFuZGxlQnJlYWtwb2ludEVsZW1lbnRBZGRlZE9yUmVtb3ZlZCk6CisgICAgICAgIChXSS5T
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX3BvcHVsYXRlQ3JlYXRlQnJl
YWtwb2ludENvbnRleHRNZW51LmFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQpOgor
ICAgICAgICAoV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwucHJvdG90eXBlLl9wb3B1
bGF0ZUNyZWF0ZUJyZWFrcG9pbnRDb250ZXh0TWVudSk6CisgICAgICAgIChXSS5Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbC5wcm90b3R5cGUuX2hhbmRsZURlYnVnZ2VyT2JqZWN0RGlzcGxh
eUxvY2F0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsLnByb3RvdHlwZS5fY29tcGFyZUJyZWFrcG9pbnRUcmVlRWxlbWVudHMpOiBEZWxldGVk
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanM6CisgICAgICAg
IChXSS5Qcm9iZVNldCk6CisgICAgICAgIChXSS5Qcm9iZVNldC5wcm90b3R5cGUuY3JlYXRlUHJv
YmUpOgorICAgICAgICAoV0kuUHJvYmVTZXQucHJvdG90eXBlLndpbGxSZW1vdmUpOgorICAgICAg
ICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpzOgorICAgICAg
ICAoV0kuVGltZWxpbmVNYW5hZ2VyLnByb3RvdHlwZS5fcHJvY2Vzc1JlY29yZCk6CisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzOgorICAgICAg
ICAoV0kuUHJvYmVTZXREZXRhaWxzU2VjdGlvbik6CisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5Qcm9iZURldGFp
bHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmluc3BlY3QpOgorICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvU291cmNlQ29kZVRleHRFZGl0b3IuanM6CisgICAgICAgIChXSS5Tb3VyY2VDb2Rl
VGV4dEVkaXRvcik6CisgICAgICAgIChXSS5Tb3VyY2VDb2RlVGV4dEVkaXRvci5wcm90b3R5cGUu
Y2xvc2UpOgorICAgICAgICAoV0kuU291cmNlQ29kZVRleHRFZGl0b3IucHJvdG90eXBlLnRleHRF
ZGl0b3JCcmVha3BvaW50QWRkZWQpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVGV4
dFJlc291cmNlQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5UZXh0UmVzb3VyY2VDb250ZW50
Vmlldy5wcm90b3R5cGUuZ2V0IHN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0cyk6CisgICAg
ICAgIChXSS5UZXh0UmVzb3VyY2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3Byb2JlU2V0c0NoYW5n
ZWQpOgorICAgICAgICBQcm9iZXMgbm93IHN1cHBvcnQgYFdJLkV2ZW50QnJlYWtwb2ludGAgaW4g
YWRkaXRpb24gdG8gYFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5j
cmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICAoV0kuQ29udGVudFZpZXcucmVz
b2x2ZWRSZXByZXNlbnRlZE9iamVjdEZvclJlcHJlc2VudGVkT2JqZWN0KToKKyAgICAgICAgKFdJ
LkNvbnRlbnRWaWV3LmlzVmlld2FibGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
Q29udGV4dE1lbnVVdGlsaXRpZXMuanM6CisgICAgICAgIChXSS5hcHBlbmRDb250ZXh0TWVudUl0
ZW1zRm9yU291cmNlQ29kZSk6CisgICAgICAgIFJlcGxhY2UgYFdJLkJyZWFrcG9pbnRgIHdpdGgg
YFdJLkphdmFTY3JpcHRCcmVha3BvaW50YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0kuRE9NVHJlZUNvbnRlbnRWaWV3
KToKKyAgICAgICAgUmVwbGFjZSBgV0kuRE9NQnJlYWtwb2ludGAgd2l0aCBgV0kuQnJlYWtwb2lu
dGAuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9u
R3JvdXAuanM6CisgICAgICAgIChXSS5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwKToKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuY3NzOgor
ICAgICAgICAoLmV2ZW50LWxpc3RlbmVyLXNlY3Rpb24gPiAuY29udGVudCBpbnB1dFt0eXBlPSJj
aGVja2JveCJdICsgLmdvLXRvLWFycm93KTogQWRkZWQuCisgICAgICAgICguZXZlbnQtbGlzdGVu
ZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNoZWNrYm94Il06bm90KDpjaGVja2Vk
KSArIC5nby10by1hcnJvdyk6IEFkZGVkLgorICAgICAgICBBZGQgYSBnby10byBhcnJvdyBuZXh0
IHRvIHRoZSBCcmVha3BvaW50IGNoZWNrYm94IHRoYXQgcmV2ZWFscyB0aGUgYFdJLkV2ZW50QnJl
YWtwb2ludGAgaW4KKyAgICAgICAgdGhlIFNvdXJjZXMgVGFiLgorCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qczoKKyAgICAgICAgKFdJLkJyZWFr
cG9pbnRBY3Rpb25WaWV3LnByb3RvdHlwZS5fYXBwZW5kQWN0aW9uQnV0dG9uQ2xpY2tlZCk6Cisg
ICAgICAgIERyaXZlLWJ5OiBtaW5vciBjb2RlIGNsZWFudXAuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzOgorICAgICAgICAoV0kuQ2FsbEZy
YW1lVHJlZUVsZW1lbnQucHJvdG90eXBlLnBvcHVsYXRlQ29udGV4dE1lbnUpOgorICAgICAgICBE
cml2ZS1ieTogaW5jbHVkZSBzb3VyY2UgY29kZSBsb2NhdGlvbiBjb250ZXh0IG1lbnUgaXRlbXMu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvU2V0dGluZy5qczoKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Rlc3QuaHRt
bDoKKwogMjAyMC0wOC0xNCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogQXNzZXJ0aW9uIEZhaWxlZDogQXBwZW5kZWQgYSBzdHJpbmcg
d2l0aCBuZXdsaW5lcy4gVGhpcyBicmVha3MgdGhlIHNvdXJjZSBtYXAuCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYTg2Mjg4YjJlNzc3MGU4ODE3YTBlOGRiMmI0OGQ3MjYz
Nzc4ZGMxNS4uZTAwZDgwNDllYjVmODczODBmMGRkZmQ3OTZiNDZhMWU1NTM2NTJhMyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtNjg1LDEyICs2ODUsOSBAQCBzZXQoSmF2
YVNjcmlwdENvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIGluc3BlY3Rvci9JbnNw
ZWN0b3JUYXJnZXQuaAogICAgIGluc3BlY3Rvci9QZXJHbG9iYWxPYmplY3RXcmFwcGVyV29ybGQu
aAogICAgIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuaAotICAgIGluc3BlY3Rvci9TY3JpcHRC
cmVha3BvaW50LmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmgKICAgICBpbnNwZWN0
b3IvU2NyaXB0Q2FsbFN0YWNrLmgKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrRmFjdG9y
eS5oCi0gICAgaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaAotICAgIGluc3BlY3Rvci9T
Y3JpcHREZWJ1Z1NlcnZlci5oCiAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50
LmgKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckF1ZGl0QWdlbnQuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCBhMjhmNTU4OTM4MGVkZWIzODM3ZTdiOGJlMzAzNDJkOTlk
MjliNzc2Li5lOWQ4MmNmOTA1YWZiYmU3Zjc2ZDI2Y2I0Yjg4YTRiN2Y4MDE5NDgwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTM5Myw5ICsxMzkzLDYgQEAKIAkJQTNGRjlCQzcy
MjM0NzQ5MTAwQjFBOUFCIC8qIFlhcnJGbGFncy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTNGRjlCQzUyMjM0NzQ2NjAwQjFBOUFCIC8qIFlhcnJGbGFn
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
MDNGQTFBMTg4RTBGQjAwMDExMEYxNCAvKiBKYXZhU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExNDE4OEUwRkFGMDAx
MTBGMTQgLyogSmF2YVNjcmlwdENhbGxGcmFtZS5oICovOyB9OwogCQlBNTAzRkExRTE4OEUwRkIw
MDAxMTBGMTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExODE4OEUwRkIwMDAxMTBG
MTQgLyogSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmggKi87IH07Ci0JCUE1MDNGQTIx
MTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQgLyog
U2NyaXB0QnJlYWtwb2ludC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07Ci0JCUE1MDNGQTIyMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xpc3Rl
bmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAz
RkEyMDE4OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07Ci0JCUE1MDNGQTI2MTg4RUZGRkQw
MDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERl
YnVnU2VydmVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEE1MDNGQTI4MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2Vy
dmVyLmggKi87IH07CiAJCUE1MDk4QjA0MUMxNkFBMDIwMDA4Nzc5NyAvKiBTZWN1cml0eS5mcmFt
ZXdvcmsgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NTA5OEIwMzFDMTZBQTAyMDAwODc3OTcgLyogU2VjdXJpdHkuZnJhbWV3b3JrICovOyB9OwogCQlB
NTBFNEI2MjE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RTE4ODA5REQ1
MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTQyMzUsNiArNDIzMiw3IEBACiAJCTkxOEUx
NUJEMjQ0N0IyMjYwMDQ0N0E1NiAvKiBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvclByb3RvdHlwZS5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MThFMTVCRTI0NDdCMjI3MDA0NDdBNTYgLyogQWdn
cmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQWdncmVnYXRlRXJyb3JQcm90b3R5cGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5MThFMTVCRjI0NDdCMjI3MDA0NDdBNTYgLyogQWdncmVnYXRlRXJyb3JDb25zdHJ1
Y3Rvci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBZ2dyZWdhdGVFcnJvckNv
bnN0cnVjdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTkxRDE1NzhDMjRFMEJF
MzUwMDFGNENFRCAvKiBCcmVha3BvaW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEJyZWFrcG9pbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzA1MkMzMjBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUGFyc2VyQXJlbmEuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5MzA1MkMzMzBGQjc5MjE5MDA0OEZEQzMgLyogUGFyc2VyQXJlbmEuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGFyc2VyQXJlbmEuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwREFEMDMwRkIxRUIxQTAwODJEMjA1IC8qIE5vZGVDb25z
dHJ1Y3RvcnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTm9kZUNvbnN0cnVj
dG9ycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM3MywxMCArNDM3MSw2IEBA
CiAJCUE1MDNGQTE2MTg4RTBGQjAwMDExMEYxNCAvKiBKU0phdmFTY3JpcHRDYWxsRnJhbWUuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MDNGQTE3MTg4RTBGQjAwMDExMEYxNCAv
KiBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNKYXZhU2NyaXB0Q2FsbEZyYW1lUHJvdG90eXBlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMTgxODhFMEZCMDAwMTEwRjE0IC8qIEpT
SmF2YVNjcmlwdENhbGxGcmFtZVByb3RvdHlwZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0phdmFTY3JpcHRDYWxsRnJhbWVQcm90b3R5cGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKLQkJQTUwM0ZBMUYxODhFRkY2ODAwMTEwRjE0IC8qIFNjcmlwdEJyZWFrcG9p
bnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0QnJlYWtwb2ludC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlBNTAzRkEyMDE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0RGVidWdMaXN0ZW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTY3JpcHREZWJ1Z0xpc3RlbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1
MDNGQTIzMTg4RUZGRkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTY3JpcHREZWJ1Z1NlcnZlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUE1MDNGQTI0MTg4RUZGRkQwMDExMEYxNCAvKiBTY3Jp
cHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTY3JpcHRE
ZWJ1Z1NlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTAzRkEyNzE4OEYx
MDU5MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVn
U2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjgxODhGMTA1
OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNTA5OEIwMzFDMTZBQTAyMDAwODc3OTcg
LyogU2VjdXJpdHkuZnJhbWV3b3JrICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RL
bm93bkZpbGVUeXBlID0gd3JhcHBlci5mcmFtZXdvcms7IG5hbWUgPSBTZWN1cml0eS5mcmFtZXdv
cms7IHBhdGggPSBQbGF0Zm9ybXMvTWFjT1NYLnBsYXRmb3JtL0RldmVsb3Blci9TREtzL01hY09T
WDEwLjExLnNkay9TeXN0ZW0vTGlicmFyeS9GcmFtZXdvcmtzL1NlY3VyaXR5LmZyYW1ld29yazsg
c291cmNlVHJlZSA9IERFVkVMT1BFUl9ESVI7IH07CkBAIC02NTE3LDYgKzY1MTEsNyBAQAogCQkx
NDgwREI5QTBEREMyMjMxMDAzQ0ZERjIgLyogZGVidWdnZXIgKi8gPSB7CiAJCQlpc2EgPSBQQlhH
cm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTkxRDE1NzhDMjRFMEJFMzUwMDFGNENFRCAvKiBC
cmVha3BvaW50LmNwcCAqLywKIAkJCQlGRUEwODYxRTE4MkI3QTA0MDBGNkQ4NTEgLyogQnJlYWtw
b2ludC5oICovLAogCQkJCUY2OTJBODU4MDI1NTU5N0QwMUZGNjBGNyAvKiBEZWJ1Z2dlci5jcHAg
Ki8sCiAJCQkJRjY5MkE4NTkwMjU1NTk3RDAxRkY2MEY3IC8qIERlYnVnZ2VyLmggKi8sCkBAIC04
NjYyLDE2ICs4NjU3LDEyIEBACiAJCQkJQTVBQjQ5REIxQkVDODA3OTAwNzAyMEZCIC8qIFBlckds
b2JhbE9iamVjdFdyYXBwZXJXb3JsZC5oICovLAogCQkJCUE1RkQwMDY1MTg5QUZFOUMwMDYzMzIz
MSAvKiBTY3JpcHRBcmd1bWVudHMuY3BwICovLAogCQkJCUE1RkQwMDY2MTg5QUZFOUMwMDYzMzIz
MSAvKiBTY3JpcHRBcmd1bWVudHMuaCAqLywKLQkJCQlBNTAzRkExRjE4OEVGRjY4MDAxMTBGMTQg
LyogU2NyaXB0QnJlYWtwb2ludC5oICovLAogCQkJCUE1RkQwMDY5MTg5QjAwQTkwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsRnJhbWUuY3BwICovLAogCQkJCUE1RkQwMDZBMTg5QjAwQTkwMDYzMzIzMSAv
KiBTY3JpcHRDYWxsRnJhbWUuaCAqLywKIAkJCQlBNUZEMDA2QjE4OUIwMEE5MDA2MzMyMzEgLyog
U2NyaXB0Q2FsbFN0YWNrLmNwcCAqLywKIAkJCQlBNUZEMDA2QzE4OUIwMEFBMDA2MzMyMzEgLyog
U2NyaXB0Q2FsbFN0YWNrLmggKi8sCiAJCQkJQTVGRDAwN0IxODlCMEI0QzAwNjMzMjMxIC8qIFNj
cmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwICovLAogCQkJCUE1RkQwMDdDMTg5QjBCNEMwMDYzMzIz
MSAvKiBTY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmggKi8sCi0JCQkJQTUwM0ZBMjAxODhFRkY2ODAw
MTEwRjE0IC8qIFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLywKLQkJCQlBNTAzRkEyMzE4OEVGRkZE
MDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuY3BwICovLAotCQkJCUE1MDNGQTI0MTg4RUZG
RkQwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJKTsKIAkJCXBhdGggPSBp
bnNwZWN0b3I7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTAyNjMsMTIgKzEwMjU0
LDkgQEAKIAkJCQkwRjI0RTU1MjE3RUUyNzQ5MDBBQkIyMTcgLyogU2NyYXRjaFJlZ2lzdGVyQWxs
b2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkzMzExMUI4QjIzOTcyNTY1MDBBQTM0Q0UgLyog
U2NyaWJibGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUE1RkQwMDY4MTg5QUZFOUMwMDYzMzIzMSAv
KiBTY3JpcHRBcmd1bWVudHMuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTIxMTg4RUZGNjgw
MDExMEYxNCAvKiBTY3JpcHRCcmVha3BvaW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNUZEMDA2
RTE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbEZyYW1lLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlBNUZEMDA3MDE4OUIwMEFBMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlBNUZEMDA3RTE4OUIwQjRDMDA2MzMyMzEgLyogU2NyaXB0Q2FsbFN0YWNrRmFj
dG9yeS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJQTUwM0ZBMjIxODhFRkY2ODAwMTEwRjE0IC8qIFNj
cmlwdERlYnVnTGlzdGVuZXIuaCBpbiBIZWFkZXJzICovLAotCQkJCUE1MDNGQTI2MTg4RUZGRkQw
MDExMEYxNCAvKiBTY3JpcHREZWJ1Z1NlcnZlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3MzQx
Q0UxREMwMkQ3OTAwQUEyOUJBIC8qIFNjcmlwdEV4ZWN1dGFibGUuaCBpbiBIZWFkZXJzICovLAog
CQkJCUNFQUU3RDdCODg5QjQ3N0JBOTNBQkE2QyAvKiBTY3JpcHRGZXRjaGVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFMzIwMUMxRTFGOEU4MjRDMDA3NkEwMzIgLyogU2NyaXB0RmV0Y2hQYXJhbWV0
ZXJzLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9T
b3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCBjMzEw
YjlhNGNkZmQ2MWQ0NzgyZWY2NjlkM2E5YjJkNWNlMzEwMmY2Li42ODcxNDk4YjBmZWMxOTlkODhm
OTI5MjA0MDM1ZWNmMDcwM2NiYjdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
U291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0z
MDAsNiArMzAwLDcgQEAgYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAogYnl0ZWNv
bXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKIGJ5dGVjb21waWxlci9Qcm9maWxlVHlwZUJ5dGVjb2Rl
RmxhZy5jcHAKIAorZGVidWdnZXIvQnJlYWtwb2ludC5jcHAKIGRlYnVnZ2VyL0RlYnVnZ2VyLmNw
cAogZGVidWdnZXIvRGVidWdnZXJDYWxsRnJhbWUuY3BwCiBkZWJ1Z2dlci9EZWJ1Z2dlckxvY2F0
aW9uLmNwcApAQCAtNTkzLDcgKzU5NCw2IEBAIGluc3BlY3Rvci9TY3JpcHRBcmd1bWVudHMuY3Bw
CiBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAogaW5zcGVjdG9yL1NjcmlwdENhbGxTdGFj
ay5jcHAKIGluc3BlY3Rvci9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcAotaW5zcGVjdG9yL1Nj
cmlwdERlYnVnU2VydmVyLmNwcAogCiAvLyBEZXJpdmVkIFNvdXJjZXMKIGluc3BlY3Rvci9JbnNw
ZWN0b3JCYWNrZW5kRGlzcGF0Y2hlcnMuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVi
dWdnZXIvQnJlYWtwb2ludC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTk2N2JmMWRkMTExNDMyYmM1MTYwNGNh
NWE2NzY1OGM0ZjRjYjY1ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9CcmVha3BvaW50LmNwcApAQCAtMCwwICsxLDg0IEBACisvKgorICogIENvcHly
aWdodCAoQykgMjAwOC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkJyZWFrcG9pbnQuaCIKKworI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitCcmVha3BvaW50OjpBY3Rpb246OkFjdGlvbihCcmVha3BvaW50OjpB
Y3Rpb246OlR5cGUgdHlwZSkKKyAgICA6IHR5cGUodHlwZSkKK3sKK30KKworUmVmPEJyZWFrcG9p
bnQ+IEJyZWFrcG9pbnQ6OmNyZWF0ZShCcmVha3BvaW50SUQgaWQsIGNvbnN0IFN0cmluZyYgY29u
ZGl0aW9uLCBBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGludWUsIHNpemVf
dCBpZ25vcmVDb3VudCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBCcmVha3BvaW50KGlk
LCBjb25kaXRpb24sIFdURk1vdmUoYWN0aW9ucyksIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQp
KTsKK30KKworQnJlYWtwb2ludDo6QnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQsIFN0cmluZyBj
b25kaXRpb24sIEFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6
ZV90IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChpZCkKKyAgICAsIG1fY29uZGl0aW9uKGNvbmRp
dGlvbikKKyAgICAsIG1fYWN0aW9ucyhXVEZNb3ZlKGFjdGlvbnMpKQorICAgICwgbV9hdXRvQ29u
dGludWUoYXV0b0NvbnRpbnVlKQorICAgICwgbV9pZ25vcmVDb3VudChpZ25vcmVDb3VudCkKK3sK
K30KKworYm9vbCBCcmVha3BvaW50OjpsaW5rKFNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBs
aW5lTnVtYmVyLCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIpCit7CisgICAgQVNTRVJUKCFpc0xpbmtl
ZCgpKTsKKyAgICBBU1NFUlQoIWlzUmVzb2x2ZWQoKSk7CisKKyAgICBtX3NvdXJjZUlEID0gc291
cmNlSUQ7CisgICAgbV9saW5lTnVtYmVyID0gbGluZU51bWJlcjsKKyAgICBtX2NvbHVtbk51bWJl
ciA9IGNvbHVtbk51bWJlcjsKKyAgICByZXR1cm4gaXNMaW5rZWQoKTsKK30KKworYm9vbCBCcmVh
a3BvaW50OjpyZXNvbHZlKHVuc2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJl
cikKK3sKKyAgICBBU1NFUlQoaXNMaW5rZWQoKSk7CisgICAgQVNTRVJUKCFpc1Jlc29sdmVkKCkp
OworICAgIEFTU0VSVChsaW5lTnVtYmVyID49IG1fbGluZU51bWJlcik7CisgICAgQVNTRVJUKGNv
bHVtbk51bWJlciA+PSBtX2NvbHVtbk51bWJlcik7CisKKyAgICBtX2xpbmVOdW1iZXIgPSBsaW5l
TnVtYmVyOworICAgIG1fY29sdW1uTnVtYmVyID0gY29sdW1uTnVtYmVyOworICAgIG1fcmVzb2x2
ZWQgPSB0cnVlOworICAgIHJldHVybiBpc1Jlc29sdmVkKCk7Cit9CisKK2Jvb2wgQnJlYWtwb2lu
dDo6c2hvdWxkUGF1c2UoRGVidWdnZXImIGRlYnVnZ2VyLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQoreworICAgIGlmICgrK21faGl0Q291bnQgPD0gbV9pZ25vcmVDb3VudCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIGRlYnVnZ2VyLmV2YWx1YXRlQnJlYWtwb2lu
dENvbmRpdGlvbigqdGhpcywgZ2xvYmFsT2JqZWN0KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvQnJlYWtwb2ludC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0JyZWFrcG9pbnQuaAppbmRleCAxNDE4
ZTE1OThiMzBhMWIwNTgxNGFiOGZmYWQxNWEyMzM0Y2JkMmFlLi4xZmFmYjMwM2NmOGQyZTRkODgz
MDI0MDMyZDllMWFmYzBjZjY3MDA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGVidWdnZXIvQnJlYWtwb2ludC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9CcmVha3BvaW50LmgKQEAgLTI2LDU0ICsyNiw4MyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlICJEZWJ1Z2dlclByaW1pdGl2ZXMuaCIKLSNpbmNsdWRlIDx3dGYvRG91Ymx5TGlua2VkTGlz
dC5oPgorI2luY2x1ZGUgPHd0Zi9GYXN0TWFsbG9jLmg+CisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5o
PgogCiBuYW1lc3BhY2UgSlNDIHsKIAotc3RydWN0IEJyZWFrcG9pbnQgOiBwdWJsaWMgRG91Ymx5
TGlua2VkTGlzdE5vZGU8QnJlYWtwb2ludD4gewotICAgIEJyZWFrcG9pbnQoKQotICAgIHsKLSAg
ICB9CitjbGFzcyBEZWJ1Z2dlcjsKK2NsYXNzIEpTR2xvYmFsT2JqZWN0OwogCi0gICAgQnJlYWtw
b2ludChTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZSwgdW5zaWduZWQgY29sdW1uLCBj
b25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVkIGlnbm9y
ZUNvdW50KQotICAgICAgICA6IHNvdXJjZUlEKHNvdXJjZUlEKQotICAgICAgICAsIGxpbmUobGlu
ZSkKLSAgICAgICAgLCBjb2x1bW4oY29sdW1uKQotICAgICAgICAsIGNvbmRpdGlvbihjb25kaXRp
b24pCi0gICAgICAgICwgYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25v
cmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7Ci0gICAgfQorY2xhc3MgQnJlYWtwb2ludCA6IHB1
YmxpYyBSZWZDb3VudGVkPEJyZWFrcG9pbnQ+IHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShC
cmVha3BvaW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBz
dHJ1Y3QgQWN0aW9uIHsKKyAgICAgICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAg
ICAgICAgICBMb2csCisgICAgICAgICAgICBFdmFsdWF0ZSwKKyAgICAgICAgICAgIFNvdW5kLAor
ICAgICAgICAgICAgUHJvYmUsCisgICAgICAgIH07CiAKLSAgICBCcmVha3BvaW50SUQgaWQgeyBu
b0JyZWFrcG9pbnRJRCB9OwotICAgIFNvdXJjZUlEIHNvdXJjZUlEIHsgbm9Tb3VyY2VJRCB9Owot
ICAgIHVuc2lnbmVkIGxpbmUgeyAwIH07Ci0gICAgdW5zaWduZWQgY29sdW1uIHsgMCB9OwotICAg
IFN0cmluZyBjb25kaXRpb247Ci0gICAgYm9vbCBhdXRvQ29udGludWUgeyBmYWxzZSB9OwotICAg
IHVuc2lnbmVkIGlnbm9yZUNvdW50IHsgMCB9OwotICAgIHVuc2lnbmVkIGhpdENvdW50IHsgMCB9
OwotICAgIGJvb2wgcmVzb2x2ZWQgeyBmYWxzZSB9OworICAgICAgICBBY3Rpb24oVHlwZSk7CisK
KyAgICAgICAgVHlwZSB0eXBlOworICAgICAgICBTdHJpbmcgZGF0YTsKKyAgICAgICAgQnJlYWtw
b2ludEFjdGlvbklEIGlkIHsgbm9CcmVha3BvaW50QWN0aW9uSUQgfTsKKyAgICB9OworCisgICAg
dXNpbmcgQWN0aW9uc1ZlY3RvciA9IFZlY3RvcjxBY3Rpb24+OworCisgICAgc3RhdGljIFJlZjxC
cmVha3BvaW50PiBjcmVhdGUoQnJlYWtwb2ludElELCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiA9
IG51bGxTdHJpbmcoKSwgQWN0aW9uc1ZlY3RvciYmID0geyB9LCBib29sIGF1dG9Db250aW51ZSA9
IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKworICAgIEJyZWFrcG9pbnRJRCBpZCgp
IGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKworICAgIFNvdXJjZUlEIHNvdXJjZUlEKCkgY29uc3Qg
eyByZXR1cm4gbV9zb3VyY2VJRDsgfQorICAgIHVuc2lnbmVkIGxpbmVOdW1iZXIoKSBjb25zdCB7
IHJldHVybiBtX2xpbmVOdW1iZXI7IH0KKyAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXIoKSBjb25z
dCB7IHJldHVybiBtX2NvbHVtbk51bWJlcjsgfQorCisgICAgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24oKSBjb25zdCB7IHJldHVybiBtX2NvbmRpdGlvbjsgfQorICAgIGNvbnN0IEFjdGlvbnNWZWN0
b3ImIGFjdGlvbnMoKSBjb25zdCB7IHJldHVybiBtX2FjdGlvbnM7IH0KKyAgICBib29sIGlzQXV0
b0NvbnRpbnVlKCkgY29uc3QgeyByZXR1cm4gbV9hdXRvQ29udGludWU7IH0KKworICAgIHZvaWQg
cmVzZXRIaXRDb3VudCgpIHsgbV9oaXRDb3VudCA9IDA7IH0KKworICAgIC8vIEFzc29jaWF0ZXMg
dGhpcyBicmVha3BvaW50IHdpdGggYSBwb3NpdGlvbiBpbiBhIHNwZWNpZmljIHNvdXJjZSBjb2Rl
LgorICAgIGJvb2wgbGluayhTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyKTsKKyAgICBib29sIGlzTGlua2VkKCkgY29uc3QgeyByZXR1cm4gbV9zb3Vy
Y2VJRCAhPSBub1NvdXJjZUlEOyB9CisKKyAgICAvLyBBZGp1c3QgdGhlIHByZXZpb3VzbHkgYXNz
b2NpYXRlZCBwb3NpdGlvbiB0byB0aGUgbmV4dCBwYXVzZSBvcHBvcnR1bml0eS4KKyAgICBib29s
IHJlc29sdmUodW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyKTsKKyAg
ICBib29sIGlzUmVzb2x2ZWQoKSBjb25zdCB7IHJldHVybiBtX3Jlc29sdmVkOyB9CisKKyAgICBi
b29sIHNob3VsZFBhdXNlKERlYnVnZ2VyJiwgSlNHbG9iYWxPYmplY3QqKTsKIAogcHJpdmF0ZToK
LSAgICBCcmVha3BvaW50KiBtX3ByZXY7Ci0gICAgQnJlYWtwb2ludCogbV9uZXh0OworICAgIEJy
ZWFrcG9pbnQoQnJlYWtwb2ludElELCBTdHJpbmcgY29uZGl0aW9uID0gbnVsbFN0cmluZygpLCBB
Y3Rpb25zVmVjdG9yJiYgPSB7IH0sIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBp
Z25vcmVDb3VudCA9IDApOwogCi0gICAgZnJpZW5kIGNsYXNzIFdURjo6RG91Ymx5TGlua2VkTGlz
dE5vZGU8QnJlYWtwb2ludD47CisgICAgQnJlYWtwb2ludElEIG1faWQgeyBub0JyZWFrcG9pbnRJ
RCB9OworCisgICAgU291cmNlSUQgbV9zb3VyY2VJRCB7IG5vU291cmNlSUQgfTsKKworICAgIC8v
IEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzcxPiBXZWIgSW5zcGVjdG9yOiBBZG9w
dCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRvIGF2b2lkIG9uZUJhc2VkSW50L3plcm9CYXNl
ZEludCBhbWJpZ3VpdHkKKyAgICB1bnNpZ25lZCBtX2xpbmVOdW1iZXIgeyAwIH07CisgICAgdW5z
aWduZWQgbV9jb2x1bW5OdW1iZXIgeyAwIH07CisKKyAgICBib29sIG1fcmVzb2x2ZWQgeyBmYWxz
ZSB9OworCisgICAgU3RyaW5nIG1fY29uZGl0aW9uOworICAgIEFjdGlvbnNWZWN0b3IgbV9hY3Rp
b25zOworICAgIGJvb2wgbV9hdXRvQ29udGludWUgeyBmYWxzZSB9OworICAgIHNpemVfdCBtX2ln
bm9yZUNvdW50IHsgMCB9OworICAgIHNpemVfdCBtX2hpdENvdW50IHsgMCB9OwogfTsKIAotY2xh
c3MgQnJlYWtwb2ludHNMaXN0IDogcHVibGljIERvdWJseUxpbmtlZExpc3Q8QnJlYWtwb2ludD4s
Ci0gICAgcHVibGljIFJlZkNvdW50ZWQ8QnJlYWtwb2ludHNMaXN0PiB7Ci1wdWJsaWM6Ci0gICAg
fkJyZWFrcG9pbnRzTGlzdCgpCi0gICAgewotICAgICAgICBCcmVha3BvaW50KiBicmVha3BvaW50
OwotICAgICAgICB3aGlsZSAoKGJyZWFrcG9pbnQgPSByZW1vdmVIZWFkKCkpKQotICAgICAgICAg
ICAgZGVsZXRlIGJyZWFrcG9pbnQ7Ci0gICAgICAgIEFTU0VSVChpc0VtcHR5KCkpOwotICAgIH0K
LX07Cit1c2luZyBCcmVha3BvaW50c1ZlY3RvciA9IFZlY3RvcjxSZWY8SlNDOjpCcmVha3BvaW50
Pj47CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZWJ1Z2dl
ci9EZWJ1Z2dlci5jcHAKaW5kZXggZjRhYzM1NjdhNTY4ZWM3NmRjMzZkZDc4YWJhYmMwYTE4OGFj
MGI1My4uYzRiZmExYTc3MTM0NjQ3YWQwYzMxZTc1MTY4NzM5YTM5MDdhNzlmNSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuY3BwCkBAIC0yNCwxMCArMjQsMTYg
QEAKIAogI2luY2x1ZGUgIkNvZGVCbG9jay5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyQ2FsbEZyYW1l
LmgiCisjaW5jbHVkZSAiRGVidWdnZXJTY29wZS5oIgogI2luY2x1ZGUgIkhlYXBJdGVyYXRpb25T
Y29wZS5oIgogI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKICNpbmNsdWRlICJNYXJrZWRTcGFjZUlu
bGluZXMuaCIKICNpbmNsdWRlICJWTUVudHJ5U2NvcGUuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaE1h
cC5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgor
I2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9UZXh0UG9zaXRpb24u
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTg5LDcgKzk1LDYgQEAgRGVidWdnZXI6OkRlYnVn
Z2VyKFZNJiB2bSkKICAgICAsIG1fcmVhc29uRm9yUGF1c2UoTm90UGF1c2VkKQogICAgICwgbV9s
YXN0RXhlY3V0ZWRMaW5lKFVJTlRfTUFYKQogICAgICwgbV9sYXN0RXhlY3V0ZWRTb3VyY2VJRChu
b1NvdXJjZUlEKQotICAgICwgbV90b3BCcmVha3BvaW50SUQobm9CcmVha3BvaW50SUQpCiAgICAg
LCBtX3BhdXNpbmdCcmVha3BvaW50SUQobm9CcmVha3BvaW50SUQpCiB7CiB9CkBAIC0yMDUsMTIg
KzIxMCw5NiBAQCB2b2lkIERlYnVnZ2VyOjpyZWdpc3RlckNvZGVCbG9jayhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKICAgICAgICAgY29kZUJsb2NrLT5zZXRTdGVwcGluZ01vZGUoQ29kZUJsb2NrOjpT
dGVwcGluZ01vZGVFbmFibGVkKTsKIH0KIAordm9pZCBEZWJ1Z2dlcjo6YWRkT2JzZXJ2ZXIoT2Jz
ZXJ2ZXImIG9ic2VydmVyKQoreworICAgIGJvb2wgd2FzRW1wdHkgPSBtX29ic2VydmVycy5pc0Vt
cHR5KCk7CisKKyAgICBtX29ic2VydmVycy5hZGQoJm9ic2VydmVyKTsKKworICAgIGlmICh3YXNF
bXB0eSkKKyAgICAgICAgYXR0YWNoRGVidWdnZXIoKTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6cmVt
b3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImIG9ic2VydmVyLCBib29sIGlzQmVpbmdEZXN0cm95ZWQpCit7
CisgICAgbV9vYnNlcnZlcnMucmVtb3ZlKCZvYnNlcnZlcik7CisKKyAgICBpZiAobV9vYnNlcnZl
cnMuaXNFbXB0eSgpKQorICAgICAgICBkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsK
K30KKworYm9vbCBEZWJ1Z2dlcjo6Y2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gIW1fZGlzcGF0Y2hpbmdGdW5jdGlvblRvT2JzZXJ2ZXJzICYmICFt
X29ic2VydmVycy5pc0VtcHR5KCk7Cit9CisKK3ZvaWQgRGVidWdnZXI6OmRpc3BhdGNoRnVuY3Rp
b25Ub09ic2VydmVycyhGdW5jdGlvbjx2b2lkKE9ic2VydmVyJik+IGZ1bmMpCit7CisgICAgaWYg
KCFjYW5EaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgU2V0Rm9yU2NvcGU8Ym9vbD4gY2hhbmdlKG1fZGlzcGF0Y2hpbmdGdW5jdGlvblRvT2JzZXJ2
ZXJzLCB0cnVlKTsKKworICAgIGZvciAoYXV0byogb2JzZXJ2ZXIgOiBjb3B5VG9WZWN0b3IobV9v
YnNlcnZlcnMpKQorICAgICAgICBmdW5jKCpvYnNlcnZlcik7Cit9CisKIHZvaWQgRGVidWdnZXI6
OnNldFByb2ZpbGluZ0NsaWVudChQcm9maWxpbmdDbGllbnQqIGNsaWVudCkKIHsKICAgICBBU1NF
UlQoISFtX3Byb2ZpbGluZ0NsaWVudCAhPSAhIWNsaWVudCk7CiAgICAgbV9wcm9maWxpbmdDbGll
bnQgPSBjbGllbnQ7CiB9CiAKK3ZvaWQgRGVidWdnZXI6OnNvdXJjZVBhcnNlZChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBTb3VyY2VQcm92aWRlciogc291cmNlUHJvdmlkZXIsIGludCBl
cnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKQoreworICAgIC8vIFByZWVtcHRp
dmVseSBjaGVjayB3aGV0aGVyIHdlIGNhbiBkaXNwYXRjaCBzbyB0aGF0IHdlIGRvbid0IGRvIGFu
eSB1bm5lY2Vzc2FyeSBhbGxvY2F0aW9ucy4KKyAgICBpZiAoIWNhbkRpc3BhdGNoRnVuY3Rpb25U
b09ic2VydmVycygpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoZXJyb3JMaW5lICE9IC0x
KSB7CisgICAgICAgIGF1dG8gc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTCgp
OworICAgICAgICBhdXRvIGRhdGEgPSBzb3VyY2VQcm92aWRlci0+c291cmNlKCkudG9TdHJpbmco
KTsKKyAgICAgICAgYXV0byBmaXJzdExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlv
bigpLm1fbGluZS5vbmVCYXNlZEludCgpOworICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNl
cnZlcnMoWyZdIChPYnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgICAgIG9ic2VydmVyLmZh
aWxlZFRvUGFyc2VTb3VyY2Uoc291cmNlVVJMLCBkYXRhLCBmaXJzdExpbmUsIGVycm9yTGluZSwg
ZXJyb3JNZXNzYWdlKTsKKyAgICAgICAgfSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEID0gc291cmNlUHJvdmlkZXItPmFzSUQoKTsKKworICAg
IC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTYyNzczPiBXZWIgSW5zcGVjdG9yOiBT
aW1wbGlmeSBEZWJ1Z2dlcjo6U2NyaXB0IHRvIHVzZSBTb3VyY2VQcm92aWRlcgorICAgIERlYnVn
Z2VyOjpTY3JpcHQgc2NyaXB0OworICAgIHNjcmlwdC5zb3VyY2VQcm92aWRlciA9IHNvdXJjZVBy
b3ZpZGVyOworICAgIHNjcmlwdC51cmwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7Cisg
ICAgc2NyaXB0LnNvdXJjZSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwor
ICAgIHNjcmlwdC5zdGFydExpbmUgPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQb3NpdGlvbigpLm1f
bGluZS56ZXJvQmFzZWRJbnQoKTsKKyAgICBzY3JpcHQuc3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92
aWRlci0+c3RhcnRQb3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOworICAgIHNjcmlw
dC5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQoZ2xvYmFsT2JqZWN0KTsKKyAgICBz
Y3JpcHQuc291cmNlVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZVVSTERpcmVjdGl2ZSgpOwor
ICAgIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMID0gc291cmNlUHJvdmlkZXItPnNvdXJjZU1hcHBp
bmdVUkxEaXJlY3RpdmUoKTsKKworICAgIGludCBzb3VyY2VMZW5ndGggPSBzY3JpcHQuc291cmNl
Lmxlbmd0aCgpOworICAgIGludCBsaW5lQ291bnQgPSAxOworICAgIGludCBsYXN0TGluZVN0YXJ0
ID0gMDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IHNvdXJjZUxlbmd0aDsgKytpKSB7CisgICAg
ICAgIGlmIChzY3JpcHQuc291cmNlW2ldID09ICdcbicpIHsKKyAgICAgICAgICAgIGxpbmVDb3Vu
dCArPSAxOworICAgICAgICAgICAgbGFzdExpbmVTdGFydCA9IGkgKyAxOworICAgICAgICB9Cisg
ICAgfQorCisgICAgc2NyaXB0LmVuZExpbmUgPSBzY3JpcHQuc3RhcnRMaW5lICsgbGluZUNvdW50
IC0gMTsKKyAgICBpZiAobGluZUNvdW50ID09IDEpCisgICAgICAgIHNjcmlwdC5lbmRDb2x1bW4g
PSBzY3JpcHQuc3RhcnRDb2x1bW4gKyBzb3VyY2VMZW5ndGg7CisgICAgZWxzZQorICAgICAgICBz
Y3JpcHQuZW5kQ29sdW1uID0gc291cmNlTGVuZ3RoIC0gbGFzdExpbmVTdGFydDsKKworICAgIGRp
c3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNlcnZlcikgeworICAg
ICAgICBvYnNlcnZlci5kaWRQYXJzZVNvdXJjZShzb3VyY2VJRCwgc2NyaXB0KTsKKyAgICB9KTsK
K30KKwogU2Vjb25kcyBEZWJ1Z2dlcjo6d2lsbEV2YWx1YXRlU2NyaXB0KCkKIHsKICAgICByZXR1
cm4gbV9wcm9maWxpbmdDbGllbnQtPndpbGxFdmFsdWF0ZVNjcmlwdCgpOwpAQCAtMjIzLDEyICsz
MTIsMTIgQEAgdm9pZCBEZWJ1Z2dlcjo6ZGlkRXZhbHVhdGVTY3JpcHQoU2Vjb25kcyBzdGFydFRp
bWUsIFByb2ZpbGluZ1JlYXNvbiByZWFzb24pCiAKIHZvaWQgRGVidWdnZXI6OnRvZ2dsZUJyZWFr
cG9pbnQoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIEJyZWFr
cG9pbnRTdGF0ZSBlbmFibGVkT3JOb3QpCiB7Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQucmVzb2x2
ZWQpOworICAgIEFTU0VSVChicmVha3BvaW50LmlzUmVzb2x2ZWQoKSk7CiAKICAgICBTY3JpcHRF
eGVjdXRhYmxlKiBleGVjdXRhYmxlID0gY29kZUJsb2NrLT5vd25lckV4ZWN1dGFibGUoKTsKIAog
ICAgIFNvdXJjZUlEIHNvdXJjZUlEID0gc3RhdGljX2Nhc3Q8U291cmNlSUQ+KGV4ZWN1dGFibGUt
PnNvdXJjZUlEKCkpOwotICAgIGlmIChicmVha3BvaW50LnNvdXJjZUlEICE9IHNvdXJjZUlEKQor
ICAgIGlmIChicmVha3BvaW50LnNvdXJjZUlEKCkgIT0gc291cmNlSUQpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIHVuc2lnbmVkIHN0YXJ0TGluZSA9IGV4ZWN1dGFibGUtPmZpcnN0TGluZSgpOwpA
QCAtMjM4LDEwICszMjcsMTAgQEAgdm9pZCBEZWJ1Z2dlcjo6dG9nZ2xlQnJlYWtwb2ludChDb2Rl
QmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtwb2ludCwgQnIKIAogICAgIC8vIElu
c3BlY3RvciBicmVha3BvaW50IGxpbmUgYW5kIGNvbHVtbiB2YWx1ZXMgYXJlIHplcm8tYmFzZWQg
YnV0IHRoZSBleGVjdXRhYmxlCiAgICAgLy8gYW5kIENvZGVCbG9jayBsaW5lIGFuZCBjb2x1bW4g
dmFsdWVzIGFyZSBvbmUtYmFzZWQuCi0gICAgdW5zaWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGlu
ZSArIDE7CisgICAgdW5zaWduZWQgbGluZSA9IGJyZWFrcG9pbnQubGluZU51bWJlcigpICsgMTsK
ICAgICBPcHRpb25hbDx1bnNpZ25lZD4gY29sdW1uOwotICAgIGlmIChicmVha3BvaW50LmNvbHVt
bikKLSAgICAgICAgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW4gKyAxOworICAgIGlmIChicmVh
a3BvaW50LmNvbHVtbk51bWJlcigpKQorICAgICAgICBjb2x1bW4gPSBicmVha3BvaW50LmNvbHVt
bk51bWJlcigpICsgMTsKIAogICAgIGlmIChsaW5lIDwgc3RhcnRMaW5lIHx8IGxpbmUgPiBlbmRM
aW5lKQogICAgICAgICByZXR1cm47CkBAIC0yNjMsOSArMzUyLDggQEAgdm9pZCBEZWJ1Z2dlcjo6
dG9nZ2xlQnJlYWtwb2ludChDb2RlQmxvY2sqIGNvZGVCbG9jaywgQnJlYWtwb2ludCYgYnJlYWtw
b2ludCwgQnIKIAogdm9pZCBEZWJ1Z2dlcjo6YXBwbHlCcmVha3BvaW50cyhDb2RlQmxvY2sqIGNv
ZGVCbG9jaykKIHsKLSAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXAmIGJyZWFrcG9pbnRz
ID0gbV9icmVha3BvaW50SURUb0JyZWFrcG9pbnQ7Ci0gICAgZm9yIChhdXRvKiBicmVha3BvaW50
IDogYnJlYWtwb2ludHMudmFsdWVzKCkpCi0gICAgICAgIHRvZ2dsZUJyZWFrcG9pbnQoY29kZUJs
b2NrLCAqYnJlYWtwb2ludCwgQnJlYWtwb2ludEVuYWJsZWQpOworICAgIGZvciAoYXV0byYgYnJl
YWtwb2ludCA6IG1fYnJlYWtwb2ludHMpCisgICAgICAgIHRvZ2dsZUJyZWFrcG9pbnQoY29kZUJs
b2NrLCBicmVha3BvaW50LCBCcmVha3BvaW50RW5hYmxlZCk7CiB9CiAKIGNsYXNzIERlYnVnZ2Vy
OjpUb2dnbGVCcmVha3BvaW50RnVuY3RvciB7CkBAIC0zMTQsMTg4ICs0MDIsMTQzIEBAIERlYnVn
Z2VyUGFyc2VEYXRhJiBEZWJ1Z2dlcjo6ZGVidWdnZXJQYXJzZURhdGEoU291cmNlSUQgc291cmNl
SUQsIFNvdXJjZVByb3ZpZGVyCiAgICAgcmV0dXJuIHJlc3VsdC5pdGVyYXRvci0+dmFsdWU7CiB9
CiAKLXZvaWQgRGVidWdnZXI6OnJlc29sdmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9p
bnQsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlcikKK2Jvb2wgRGVidWdnZXI6OnJlc29s
dmVCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQsIFNvdXJjZVByb3ZpZGVyKiBzb3Vy
Y2VQcm92aWRlcikKIHsKLSAgICBSRUxFQVNFX0FTU0VSVCghYnJlYWtwb2ludC5yZXNvbHZlZCk7
Ci0gICAgQVNTRVJUKGJyZWFrcG9pbnQuc291cmNlSUQgIT0gbm9Tb3VyY2VJRCk7CisgICAgUkVM
RUFTRV9BU1NFUlQoIWJyZWFrcG9pbnQuaXNSZXNvbHZlZCgpKTsKKyAgICBBU1NFUlQoYnJlYWtw
b2ludC5pc0xpbmtlZCgpKTsKIAogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTYyNzcxPiBXZWIgSW5zcGVjdG9yOiBBZG9wdCBUZXh0UG9zaXRpb24gaW4gSW5zcGVjdG9yIHRv
IGF2b2lkIG9uZUJhc2VkSW50L3plcm9CYXNlZEludCBhbWJpZ3VpdHkKICAgICAvLyBJbnNwZWN0
b3IgYnJlYWtwb2ludCBsaW5lIGFuZCBjb2x1bW4gdmFsdWVzIGFyZSB6ZXJvLWJhc2VkIGJ1dCB0
aGUgZXhlY3V0YWJsZQogICAgIC8vIGFuZCBDb2RlQmxvY2sgbGluZSB2YWx1ZXMgYXJlIG9uZS1i
YXNlZCB3aGlsZSBjb2x1bW4gaXMgemVyby1iYXNlZC4KLSAgICBpbnQgbGluZSA9IGJyZWFrcG9p
bnQubGluZSArIDE7Ci0gICAgaW50IGNvbHVtbiA9IGJyZWFrcG9pbnQuY29sdW1uOworICAgIGlu
dCBsaW5lID0gYnJlYWtwb2ludC5saW5lTnVtYmVyKCkgKyAxOworICAgIGludCBjb2x1bW4gPSBi
cmVha3BvaW50LmNvbHVtbk51bWJlcigpOwogCiAgICAgLy8gQWNjb3VudCBmb3IgYSA8c2NyaXB0
PidzIHN0YXJ0IHBvc2l0aW9uIG9uIHRoZSBmaXJzdCBsaW5lIG9ubHkuCiAgICAgaW50IHByb3Zp
ZGVyU3RhcnRMaW5lID0gc291cmNlUHJvdmlkZXItPnN0YXJ0UG9zaXRpb24oKS5tX2xpbmUub25l
QmFzZWRJbnQoKTsgLy8gT25lIGJhc2VkIHRvIG1hdGNoIHRoZSBhbHJlYWR5IGFkanVzdGVkIGxp
bmUuCiAgICAgaW50IHByb3ZpZGVyU3RhcnRDb2x1bW4gPSBzb3VyY2VQcm92aWRlci0+c3RhcnRQ
b3NpdGlvbigpLm1fY29sdW1uLnplcm9CYXNlZEludCgpOyAvLyBaZXJvIGJhc2VkIHNvIGNvbHVt
biB6ZXJvIGlzIHplcm8uCi0gICAgaWYgKGxpbmUgPT0gcHJvdmlkZXJTdGFydExpbmUgJiYgYnJl
YWtwb2ludC5jb2x1bW4pIHsKKyAgICBpZiAobGluZSA9PSBwcm92aWRlclN0YXJ0TGluZSAmJiBi
cmVha3BvaW50LmNvbHVtbk51bWJlcigpKSB7CiAgICAgICAgIEFTU0VSVChwcm92aWRlclN0YXJ0
Q29sdW1uIDw9IGNvbHVtbik7CiAgICAgICAgIGlmIChwcm92aWRlclN0YXJ0Q29sdW1uKQogICAg
ICAgICAgICAgY29sdW1uIC09IHByb3ZpZGVyU3RhcnRDb2x1bW47CiAgICAgfQogCi0gICAgRGVi
dWdnZXJQYXJzZURhdGEmIHBhcnNlRGF0YSA9IGRlYnVnZ2VyUGFyc2VEYXRhKGJyZWFrcG9pbnQu
c291cmNlSUQsIHNvdXJjZVByb3ZpZGVyKTsKKyAgICBEZWJ1Z2dlclBhcnNlRGF0YSYgcGFyc2VE
YXRhID0gZGVidWdnZXJQYXJzZURhdGEoYnJlYWtwb2ludC5zb3VyY2VJRCgpLCBzb3VyY2VQcm92
aWRlcik7CiAgICAgT3B0aW9uYWw8SlNUZXh0UG9zaXRpb24+IHJlc29sdmVkUG9zaXRpb24gPSBw
YXJzZURhdGEucGF1c2VQb3NpdGlvbnMuYnJlYWtwb2ludExvY2F0aW9uRm9yTGluZUNvbHVtbihs
aW5lLCBjb2x1bW4pOwogICAgIGlmICghcmVzb2x2ZWRQb3NpdGlvbikKLSAgICAgICAgcmV0dXJu
OworICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBpbnQgcmVzb2x2ZWRMaW5lID0gcmVzb2x2
ZWRQb3NpdGlvbi0+bGluZTsKICAgICBpbnQgcmVzb2x2ZWRDb2x1bW4gPSByZXNvbHZlZFBvc2l0
aW9uLT5jb2x1bW4oKTsKIAogICAgIC8vIFJlLWFjY291bnQgZm9yIGEgPHNjcmlwdD4ncyBzdGFy
dCBwb3NpdGlvbiBvbiB0aGUgZmlyc3QgbGluZSBvbmx5LgotICAgIGlmIChyZXNvbHZlZExpbmUg
PT0gcHJvdmlkZXJTdGFydExpbmUgJiYgYnJlYWtwb2ludC5jb2x1bW4pIHsKKyAgICBpZiAocmVz
b2x2ZWRMaW5lID09IHByb3ZpZGVyU3RhcnRMaW5lICYmIGJyZWFrcG9pbnQuY29sdW1uTnVtYmVy
KCkpIHsKICAgICAgICAgaWYgKHByb3ZpZGVyU3RhcnRDb2x1bW4pCiAgICAgICAgICAgICByZXNv
bHZlZENvbHVtbiArPSBwcm92aWRlclN0YXJ0Q29sdW1uOwogICAgIH0KIAotICAgIGJyZWFrcG9p
bnQubGluZSA9IHJlc29sdmVkTGluZSAtIDE7Ci0gICAgYnJlYWtwb2ludC5jb2x1bW4gPSByZXNv
bHZlZENvbHVtbjsKLSAgICBicmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKKyAgICByZXR1cm4g
YnJlYWtwb2ludC5yZXNvbHZlKHJlc29sdmVkTGluZSAtIDEsIHJlc29sdmVkQ29sdW1uKTsKIH0K
IAotQnJlYWtwb2ludElEIERlYnVnZ2VyOjpzZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmIGJyZWFr
cG9pbnQsIGJvb2wmIGV4aXN0aW5nKQorYm9vbCBEZWJ1Z2dlcjo6c2V0QnJlYWtwb2ludChCcmVh
a3BvaW50JiBicmVha3BvaW50KQogewotICAgIEFTU0VSVChicmVha3BvaW50LnJlc29sdmVkKTsK
LSAgICBBU1NFUlQoYnJlYWtwb2ludC5zb3VyY2VJRCAhPSBub1NvdXJjZUlEKTsKKyAgICBBU1NF
UlQoYnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCi0gICAgU291cmNlSUQgc291cmNlSUQgPSBi
cmVha3BvaW50LnNvdXJjZUlEOwotICAgIHVuc2lnbmVkIGxpbmUgPSBicmVha3BvaW50LmxpbmU7
Ci0gICAgdW5zaWduZWQgY29sdW1uID0gYnJlYWtwb2ludC5jb2x1bW47CisgICAgYXV0byYgYnJl
YWtwb2ludHNGb3JMaW5lID0gbV9icmVha3BvaW50c0ZvclNvdXJjZUlELmVuc3VyZShicmVha3Bv
aW50LnNvdXJjZUlEKCksIFtdIHsKKyAgICAgICAgcmV0dXJuIExpbmVUb0JyZWFrcG9pbnRzTWFw
KCk7CisgICAgfSkuaXRlcmF0b3ItPnZhbHVlOwogCi0gICAgU291cmNlSURUb0JyZWFrcG9pbnRz
TWFwOjppdGVyYXRvciBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmZpbmQoYnJlYWtwb2lu
dC5zb3VyY2VJRCk7Ci0gICAgaWYgKGl0ID09IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLmVuZCgp
KQotICAgICAgICBpdCA9IG1fc291cmNlSURUb0JyZWFrcG9pbnRzLnNldChzb3VyY2VJRCwgTGlu
ZVRvQnJlYWtwb2ludHNNYXAoKSkuaXRlcmF0b3I7CisgICAgYXV0byYgYnJlYWtwb2ludHMgPSBi
cmVha3BvaW50c0ZvckxpbmUuZW5zdXJlKGJyZWFrcG9pbnQubGluZU51bWJlcigpLCBbXSB7Cisg
ICAgICAgIHJldHVybiBCcmVha3BvaW50c1ZlY3RvcigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1
ZTsKIAotICAgIExpbmVUb0JyZWFrcG9pbnRzTWFwOjppdGVyYXRvciBicmVha3NJdCA9IGl0LT52
YWx1ZS5maW5kKGxpbmUpOwotICAgIGlmIChicmVha3NJdCA9PSBpdC0+dmFsdWUuZW5kKCkpCi0g
ICAgICAgIGJyZWFrc0l0ID0gaXQtPnZhbHVlLnNldChsaW5lLCBhZG9wdFJlZihuZXcgQnJlYWtw
b2ludHNMaXN0KSkuaXRlcmF0b3I7Ci0KLSAgICBCcmVha3BvaW50c0xpc3QmIGJyZWFrcG9pbnRz
ID0gKmJyZWFrc0l0LT52YWx1ZTsKLSAgICBmb3IgKEJyZWFrcG9pbnQqIGN1cnJlbnQgPSBicmVh
a3BvaW50cy5oZWFkKCk7IGN1cnJlbnQ7IGN1cnJlbnQgPSBjdXJyZW50LT5uZXh0KCkpIHsKLSAg
ICAgICAgaWYgKGN1cnJlbnQtPmNvbHVtbiA9PSBjb2x1bW4pIHsKKyAgICBmb3IgKGF1dG8mIGV4
aXN0aW5nQnJlYWtwb2ludCA6IGJyZWFrcG9pbnRzKSB7CisgICAgICAgIGlmIChleGlzdGluZ0Jy
ZWFrcG9pbnQtPmNvbHVtbk51bWJlcigpID09IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsK
KyAgICAgICAgICAgIEFTU0VSVChleGlzdGluZ0JyZWFrcG9pbnQtPmlkKCkgIT0gYnJlYWtwb2lu
dC5pZCgpKTsKICAgICAgICAgICAgIC8vIEZvdW5kIGV4aXN0aW5nIGJyZWFrcG9pbnQuIERvIG5v
dCBjcmVhdGUgYSBkdXBsaWNhdGUgYXQgdGhpcyBsb2NhdGlvbi4KLSAgICAgICAgICAgIGV4aXN0
aW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50LT5pZDsKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGV4aXN0aW5nID0gZmFsc2U7
Ci0gICAgQnJlYWtwb2ludElEIGlkID0gKyttX3RvcEJyZWFrcG9pbnRJRDsKLSAgICBSRUxFQVNF
X0FTU0VSVChpZCAhPSBub0JyZWFrcG9pbnRJRCk7CisgICAgYnJlYWtwb2ludHMuYXBwZW5kKG1h
a2VSZWYoYnJlYWtwb2ludCkpOwogCi0gICAgYnJlYWtwb2ludC5pZCA9IGlkOworICAgIG1fYnJl
YWtwb2ludHMuYWRkKG1ha2VSZWYoYnJlYWtwb2ludCkpOwogCi0gICAgQnJlYWtwb2ludCogbmV3
QnJlYWtwb2ludCA9IG5ldyBCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgIGJyZWFrcG9pbnRz
LmFwcGVuZChuZXdCcmVha3BvaW50KTsKLSAgICBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5z
ZXQoaWQsIG5ld0JyZWFrcG9pbnQpOworICAgIHRvZ2dsZUJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
QnJlYWtwb2ludEVuYWJsZWQpOwogCi0gICAgdG9nZ2xlQnJlYWtwb2ludCgqbmV3QnJlYWtwb2lu
dCwgQnJlYWtwb2ludEVuYWJsZWQpOwotCi0gICAgcmV0dXJuIGlkOworICAgIHJldHVybiB0cnVl
OwogfQogCi12b2lkIERlYnVnZ2VyOjpyZW1vdmVCcmVha3BvaW50KEJyZWFrcG9pbnRJRCBpZCkK
K2Jvb2wgRGVidWdnZXI6OnJlbW92ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkK
IHsKLSAgICBBU1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOworICAgIEFTU0VSVChicmVha3Bv
aW50LmlzUmVzb2x2ZWQoKSk7CiAKLSAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXA6Oml0
ZXJhdG9yIGlkSXQgPSBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5maW5kKGlkKTsKLSAgICBB
U1NFUlQoaWRJdCAhPSBtX2JyZWFrcG9pbnRJRFRvQnJlYWtwb2ludC5lbmQoKSk7Ci0gICAgQnJl
YWtwb2ludCogYnJlYWtwb2ludCA9IGlkSXQtPnZhbHVlOworICAgIGF1dG8gYnJlYWtwb2ludHNG
b3JMaW5lSXRlcmF0b3IgPSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZmluZChicmVha3BvaW50
LnNvdXJjZUlEKCkpOworICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9PSBtX2Jy
ZWFrcG9pbnRzRm9yU291cmNlSUQuZW5kKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IFNvdXJjZUlEIHNvdXJjZUlEID0gYnJlYWtwb2ludC0+c291cmNlSUQ7Ci0gICAgQVNTRVJUKHNv
dXJjZUlEKTsKLSAgICBTb3VyY2VJRFRvQnJlYWtwb2ludHNNYXA6Oml0ZXJhdG9yIGl0ID0gbV9z
b3VyY2VJRFRvQnJlYWtwb2ludHMuZmluZChzb3VyY2VJRCk7Ci0gICAgQVNTRVJUKGl0ICE9IG1f
c291cmNlSURUb0JyZWFrcG9pbnRzLmVuZCgpKTsKLSAgICBMaW5lVG9CcmVha3BvaW50c01hcDo6
aXRlcmF0b3IgYnJlYWtzSXQgPSBpdC0+dmFsdWUuZmluZChicmVha3BvaW50LT5saW5lKTsKLSAg
ICBBU1NFUlQoYnJlYWtzSXQgIT0gaXQtPnZhbHVlLmVuZCgpKTsKKyAgICBhdXRvIGJyZWFrcG9p
bnRzSXRlcmF0b3IgPSBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+dmFsdWUuZmluZChicmVh
a3BvaW50LmxpbmVOdW1iZXIoKSk7CisgICAgaWYgKGJyZWFrcG9pbnRzSXRlcmF0b3IgPT0gYnJl
YWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmVuZCgpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CiAKLSAgICB0b2dnbGVCcmVha3BvaW50KCpicmVha3BvaW50LCBCcmVha3BvaW50RGlzYWJs
ZWQpOworICAgIHRvZ2dsZUJyZWFrcG9pbnQoYnJlYWtwb2ludCwgQnJlYWtwb2ludERpc2FibGVk
KTsKKworICAgIGF1dG8mIGJyZWFrcG9pbnRzID0gYnJlYWtwb2ludHNJdGVyYXRvci0+dmFsdWU7
CiAKLSAgICBCcmVha3BvaW50c0xpc3QmIGJyZWFrcG9pbnRzID0gKmJyZWFrc0l0LT52YWx1ZTsK
ICNpZiBBU1NFUlRfRU5BQkxFRAogICAgIGJvb2wgZm91bmQgPSBmYWxzZTsKLSAgICBmb3IgKEJy
ZWFrcG9pbnQqIGN1cnJlbnQgPSBicmVha3BvaW50cy5oZWFkKCk7IGN1cnJlbnQgJiYgIWZvdW5k
OyBjdXJyZW50ID0gY3VycmVudC0+bmV4dCgpKSB7Ci0gICAgICAgIGlmIChjdXJyZW50LT5pZCA9
PSBicmVha3BvaW50LT5pZCkKKyAgICBmb3IgKGF1dG8mIGV4aXN0aW5nQnJlYWtwb2ludCA6IGJy
ZWFrcG9pbnRzKSB7CisgICAgICAgIGlmIChleGlzdGluZ0JyZWFrcG9pbnQtPmNvbHVtbk51bWJl
cigpID09IGJyZWFrcG9pbnQuY29sdW1uTnVtYmVyKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVChl
eGlzdGluZ0JyZWFrcG9pbnQtPmlkKCkgPT0gYnJlYWtwb2ludC5pZCgpKTsKKyAgICAgICAgICAg
IEFTU0VSVCghZm91bmQpOwogICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICB9CiAg
ICAgfQotICAgIEFTU0VSVChmb3VuZCk7CiAjZW5kaWYgLy8gQVNTRVJUX0VOQUJMRUQKIAotICAg
IG1fYnJlYWtwb2ludElEVG9CcmVha3BvaW50LnJlbW92ZShpZEl0KTsKLSAgICBicmVha3BvaW50
cy5yZW1vdmUoYnJlYWtwb2ludCk7Ci0gICAgZGVsZXRlIGJyZWFrcG9pbnQ7CisgICAgYXV0byBy
ZW1vdmVkID0gbV9icmVha3BvaW50cy5yZW1vdmUoYnJlYWtwb2ludCk7CisgICAgcmVtb3ZlZCB8
PSAhYnJlYWtwb2ludHMucmVtb3ZlQWxsTWF0Y2hpbmcoWyZdIChjb25zdCBSZWY8QnJlYWtwb2lu
dD4mIGV4aXN0aW5nQnJlYWtwb2ludCkgeworICAgICAgICByZXR1cm4gJmJyZWFrcG9pbnQgPT0g
ZXhpc3RpbmdCcmVha3BvaW50LnB0cigpOworICAgIH0pOwogCiAgICAgaWYgKGJyZWFrcG9pbnRz
LmlzRW1wdHkoKSkgewotICAgICAgICBpdC0+dmFsdWUucmVtb3ZlKGJyZWFrc0l0KTsKLSAgICAg
ICAgaWYgKGl0LT52YWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX3NvdXJjZUlEVG9CcmVh
a3BvaW50cy5yZW1vdmUoaXQpOworICAgICAgICBicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvci0+
dmFsdWUucmVtb3ZlKGJyZWFrcG9pbnRzSXRlcmF0b3IpOworICAgICAgICBpZiAoYnJlYWtwb2lu
dHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIG1fYnJlYWtw
b2ludHNGb3JTb3VyY2VJRC5yZW1vdmUoYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3IpOwogICAg
IH0KKworICAgIHJldHVybiByZW1vdmVkOwogfQogCi1ib29sIERlYnVnZ2VyOjpoYXNCcmVha3Bv
aW50KFNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uLCBCcmVh
a3BvaW50ICpoaXRCcmVha3BvaW50KQorUmVmUHRyPEJyZWFrcG9pbnQ+IERlYnVnZ2VyOjpkaWRI
aXRCcmVha3BvaW50KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFNvdXJjZUlEIHNvdXJj
ZUlELCBjb25zdCBUZXh0UG9zaXRpb24mIHBvc2l0aW9uKQogewogICAgIGlmICghbV9icmVha3Bv
aW50c0FjdGl2YXRlZCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKIAotICAgIFNvdXJjZUlEVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5maW5kKHNvdXJjZUlEKTsKLSAgICBpZiAoaXQgPT0g
bV9zb3VyY2VJRFRvQnJlYWtwb2ludHMuZW5kKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICBhdXRvIGJyZWFrcG9pbnRzRm9yTGluZUl0ZXJhdG9yID0gbV9icmVha3BvaW50c0ZvclNvdXJj
ZUlELmZpbmQoc291cmNlSUQpOworICAgIGlmIChicmVha3BvaW50c0ZvckxpbmVJdGVyYXRvciA9
PSBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQuZW5kKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgdW5zaWduZWQgbGluZSA9IHBvc2l0aW9uLm1fbGluZS56ZXJvQmFzZWRJbnQoKTsK
ICAgICB1bnNpZ25lZCBjb2x1bW4gPSBwb3NpdGlvbi5tX2NvbHVtbi56ZXJvQmFzZWRJbnQoKTsK
ICAgICAKLSAgICBMaW5lVG9CcmVha3BvaW50c01hcDo6Y29uc3RfaXRlcmF0b3IgYnJlYWtzSXQg
PSBpdC0+dmFsdWUuZmluZChsaW5lKTsKLSAgICBpZiAoYnJlYWtzSXQgPT0gaXQtPnZhbHVlLmVu
ZCgpKQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgYXV0byBicmVha3BvaW50c0l0ZXJhdG9y
ID0gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVlLmZpbmQobGluZSk7CisgICAgaWYg
KGJyZWFrcG9pbnRzSXRlcmF0b3IgPT0gYnJlYWtwb2ludHNGb3JMaW5lSXRlcmF0b3ItPnZhbHVl
LmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIGZvciAoYXV0byYgYnJlYWtw
b2ludCA6IGJyZWFrcG9pbnRzSXRlcmF0b3ItPnZhbHVlKSB7CisgICAgICAgIHVuc2lnbmVkIGJy
ZWFrTGluZSA9IGJyZWFrcG9pbnQtPmxpbmVOdW1iZXIoKTsKKyAgICAgICAgdW5zaWduZWQgYnJl
YWtDb2x1bW4gPSBicmVha3BvaW50LT5jb2x1bW5OdW1iZXIoKTsKIAotICAgIGJvb2wgaGl0ID0g
ZmFsc2U7Ci0gICAgY29uc3QgQnJlYWtwb2ludHNMaXN0JiBicmVha3BvaW50cyA9ICpicmVha3NJ
dC0+dmFsdWU7Ci0gICAgQnJlYWtwb2ludCogYnJlYWtwb2ludDsKLSAgICBmb3IgKGJyZWFrcG9p
bnQgPSBicmVha3BvaW50cy5oZWFkKCk7IGJyZWFrcG9pbnQ7IGJyZWFrcG9pbnQgPSBicmVha3Bv
aW50LT5uZXh0KCkpIHsKLSAgICAgICAgdW5zaWduZWQgYnJlYWtMaW5lID0gYnJlYWtwb2ludC0+
bGluZTsKLSAgICAgICAgdW5zaWduZWQgYnJlYWtDb2x1bW4gPSBicmVha3BvaW50LT5jb2x1bW47
CiAgICAgICAgIC8vIFNpbmNlIGZyb250ZW5kIHRydW5jYXRlcyB0aGUgaW5kZW50LCB0aGUgZmly
c3Qgc3RhdGVtZW50IGluIGEgbGluZSBtdXN0IG1hdGNoIHRoZSBicmVha3BvaW50IChsaW5lLDAp
LgogICAgICAgICBBU1NFUlQodGhpcyA9PSBtX2N1cnJlbnRDYWxsRnJhbWUtPmNvZGVCbG9jaygp
LT5nbG9iYWxPYmplY3QoKS0+ZGVidWdnZXIoKSk7Ci0gICAgICAgIGlmICgobGluZSAhPSBtX2xh
c3RFeGVjdXRlZExpbmUgJiYgbGluZSA9PSBicmVha0xpbmUgJiYgIWJyZWFrQ29sdW1uKQotICAg
ICAgICAgICAgfHwgKGxpbmUgPT0gYnJlYWtMaW5lICYmIGNvbHVtbiA9PSBicmVha0NvbHVtbikp
IHsKLSAgICAgICAgICAgIGhpdCA9IHRydWU7CisgICAgICAgIGlmICgobGluZSAhPSBtX2xhc3RF
eGVjdXRlZExpbmUgJiYgbGluZSA9PSBicmVha0xpbmUgJiYgIWJyZWFrQ29sdW1uKSB8fCAobGlu
ZSA9PSBicmVha0xpbmUgJiYgY29sdW1uID09IGJyZWFrQ29sdW1uKSkgeworICAgICAgICAgICAg
aWYgKGJyZWFrcG9pbnQtPnNob3VsZFBhdXNlKCp0aGlzLCBnbG9iYWxPYmplY3QpKQorICAgICAg
ICAgICAgICAgIHJldHVybiBicmVha3BvaW50LmNvcHlSZWYoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgfQotICAgIGlmICghaGl0KQotICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBpZiAoaGl0QnJlYWtwb2ludCkKLSAgICAgICAgKmhpdEJyZWFrcG9pbnQgPSAqYnJl
YWtwb2ludDsKLQotICAgIGJyZWFrcG9pbnQtPmhpdENvdW50Kys7Ci0gICAgaWYgKGJyZWFrcG9p
bnQtPmlnbm9yZUNvdW50ID49IGJyZWFrcG9pbnQtPmhpdENvdW50KQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBpZiAoYnJlYWtwb2ludC0+Y29uZGl0aW9uLmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0KLSAgICAvLyBXZSBjYW5ub3Qgc3RvcCBpbiB0aGUgZGVidWdnZXIg
d2hpbGUgZXhlY3V0aW5nIGNvbmRpdGlvbiBjb2RlLAotICAgIC8vIHNvIG1ha2UgaXQgbG9va3Mg
bGlrZSB0aGUgZGVidWdnZXIgaXMgYWxyZWFkeSBwYXVzZWQuCi0gICAgVGVtcG9yYXJ5UGF1c2Vk
U3RhdGUgcGF1c2VkU3RhdGUoKnRoaXMpOwotCi0gICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNl
cHRpb247Ci0gICAgRGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lID0gY3VycmVu
dERlYnVnZ2VyQ2FsbEZyYW1lKCk7Ci0gICAgSlNPYmplY3QqIHNjb3BlRXh0ZW5zaW9uT2JqZWN0
ID0gbnVsbHB0cjsKLSAgICBKU1ZhbHVlIHJlc3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1
YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGJyZWFrcG9pbnQtPmNvbmRpdGlvbiwgc2NvcGVFeHRlbnNp
b25PYmplY3QsIGV4Y2VwdGlvbik7Ci0KLSAgICAvLyBXZSBjYW4gbG9zZSB0aGUgZGVidWdnZXIg
d2hpbGUgZXhlY3V0aW5nIEphdmFTY3JpcHQuCi0gICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUp
Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QgPSBtX2N1cnJlbnRDYWxsRnJhbWUtPmxleGljYWxHbG9iYWxPYmplY3QobV92bSk7Ci0gICAg
aWYgKGV4Y2VwdGlvbikgewotICAgICAgICAvLyBBbiBlcnJvbmVvdXMgY29uZGl0aW9uIGNvdW50
cyBhcyAiZmFsc2UiLgotICAgICAgICBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25kaXRp
b24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
fQotCi0gICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAogY2xhc3MgRGVidWdnZXI6OkNsZWFyQ29kZUJsb2NrRGVidWdnZXJS
ZXF1ZXN0c0Z1bmN0b3IgewpAQCAtNTE5LDE0ICs1NjIsOTMgQEAgdm9pZCBEZWJ1Z2dlcjo6Y2xl
YXJCcmVha3BvaW50cygpCiB7CiAgICAgbV92bS5oZWFwLmNvbXBsZXRlQWxsSklUUGxhbnMoKTsK
IAotICAgIG1fdG9wQnJlYWtwb2ludElEID0gbm9CcmVha3BvaW50SUQ7Ci0gICAgbV9icmVha3Bv
aW50SURUb0JyZWFrcG9pbnQuY2xlYXIoKTsKLSAgICBtX3NvdXJjZUlEVG9CcmVha3BvaW50cy5j
bGVhcigpOworICAgIG1fYnJlYWtwb2ludHNGb3JTb3VyY2VJRC5jbGVhcigpOworICAgIG1fYnJl
YWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbnVsbHB0cjsKIAog
ICAgIENsZWFyQ29kZUJsb2NrRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3IgZnVuY3Rvcih0aGlzKTsK
ICAgICBtX3ZtLmhlYXAuZm9yRWFjaENvZGVCbG9jayhmdW5jdG9yKTsKIH0KIAorYm9vbCBEZWJ1
Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50Q29uZGl0aW9uKEJyZWFrcG9pbnQmIGJyZWFrcG9pbnQs
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgY29uc3QgU3RyaW5nJiBjb25k
aXRpb24gPSBicmVha3BvaW50LmNvbmRpdGlvbigpOworICAgIGlmIChjb25kaXRpb24uaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIC8vIFdlIGNhbm5vdCBzdG9wIGluIHRo
ZSBkZWJ1Z2dlciB3aGlsZSBleGVjdXRpbmcgY29uZGl0aW9uIGNvZGUsCisgICAgLy8gc28gbWFr
ZSBpdCBsb29rcyBsaWtlIHRoZSBkZWJ1Z2dlciBpcyBhbHJlYWR5IHBhdXNlZC4KKyAgICBUZW1w
b3JhcnlQYXVzZWRTdGF0ZSBwYXVzZWRTdGF0ZSgqdGhpcyk7CisKKyAgICBOYWtlZFB0cjxFeGNl
cHRpb24+IGV4Y2VwdGlvbjsKKyAgICBEZWJ1Z2dlckNhbGxGcmFtZSYgZGVidWdnZXJDYWxsRnJh
bWUgPSBjdXJyZW50RGVidWdnZXJDYWxsRnJhbWUoKTsKKyAgICBKU09iamVjdCogc2NvcGVFeHRl
bnNpb25PYmplY3QgPSBudWxscHRyOworICAgIEpTVmFsdWUgcmVzdWx0ID0gZGVidWdnZXJDYWxs
RnJhbWUuZXZhbHVhdGVXaXRoU2NvcGVFeHRlbnNpb24oY29uZGl0aW9uLCBzY29wZUV4dGVuc2lv
bk9iamVjdCwgZXhjZXB0aW9uKTsKKworICAgIC8vIFdlIGNhbiBsb3NlIHRoZSBkZWJ1Z2dlciB3
aGlsZSBleGVjdXRpbmcgSmF2YVNjcmlwdC4KKyAgICBpZiAoIW1fY3VycmVudENhbGxGcmFtZSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgaWYgKGV4Y2VwdGlvbikgeworICAgICAgICBy
ZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOworICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdC50b0Jvb2xlYW4oZ2xvYmFsT2JqZWN0
KTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6ZXZhbHVhdGVCcmVha3BvaW50QWN0aW9ucyhCcmVha3Bv
aW50JiBicmVha3BvaW50LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQoreworICAgIEFT
U0VSVChtX2lzUGF1c2VkKTsKKyAgICBBU1NFUlQoaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKTsK
KworICAgIG1fY3VycmVudFByb2JlQmF0Y2hJZCsrOworCisgICAgZm9yIChhdXRvJiBhY3Rpb24g
OiBicmVha3BvaW50LmFjdGlvbnMoKSkgeworICAgICAgICBhdXRvJiBkZWJ1Z2dlckNhbGxGcmFt
ZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOworCisgICAgICAgIHN3aXRjaCAoYWN0aW9u
LnR5cGUpIHsKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rpb246OlR5cGU6OkxvZzoKKyAg
ICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0gKE9ic2VydmVyJiBvYnNl
cnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJyZWFrcG9pbnRBY3Rpb25Mb2coZGVi
dWdnZXJDYWxsRnJhbWUuZ2xvYmFsT2JqZWN0KCksIGFjdGlvbi5kYXRhKTsKKyAgICAgICAgICAg
IH0pOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rp
b246OlR5cGU6OkV2YWx1YXRlOiB7CisgICAgICAgICAgICBOYWtlZFB0cjxFeGNlcHRpb24+IGV4
Y2VwdGlvbjsKKyAgICAgICAgICAgIEpTT2JqZWN0KiBzY29wZUV4dGVuc2lvbk9iamVjdCA9IG51
bGxwdHI7CisgICAgICAgICAgICBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4
dGVuc2lvbihhY3Rpb24uZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7Cisg
ICAgICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgICAgIHJlcG9ydEV4Y2VwdGlv
bihkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKSwgZXhjZXB0aW9uKTsKKyAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBCcmVha3BvaW50OjpBY3Rpb246
OlR5cGU6OlNvdW5kOgorICAgICAgICAgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKFsm
XSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgICAgICAgICAgb2JzZXJ2ZXIuYnJlYWtw
b2ludEFjdGlvblNvdW5kKGFjdGlvbi5pZCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgICAg
IGJyZWFrOworCisgICAgICAgIGNhc2UgQnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpQcm9iZTog
eworICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBleGNlcHRpb247CisgICAgICAgICAg
ICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOworICAgICAgICAgICAg
SlNWYWx1ZSByZXN1bHQgPSBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29wZUV4dGVu
c2lvbihhY3Rpb24uZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7CisgICAg
ICAgICAgICBKU0M6OkpTR2xvYmFsT2JqZWN0KiBkZWJ1Z2dlckdsb2JhbE9iamVjdCA9IGRlYnVn
Z2VyQ2FsbEZyYW1lLmdsb2JhbE9iamVjdCgpOworICAgICAgICAgICAgaWYgKGV4Y2VwdGlvbikK
KyAgICAgICAgICAgICAgICByZXBvcnRFeGNlcHRpb24oZGVidWdnZXJHbG9iYWxPYmplY3QsIGV4
Y2VwdGlvbik7CisKKyAgICAgICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub09ic2VydmVycyhbJl0g
KE9ic2VydmVyJiBvYnNlcnZlcikgeworICAgICAgICAgICAgICAgIG9ic2VydmVyLmJyZWFrcG9p
bnRBY3Rpb25Qcm9iZShkZWJ1Z2dlckdsb2JhbE9iamVjdCwgYWN0aW9uLmlkLCBtX2N1cnJlbnRQ
cm9iZUJhdGNoSWQsIG1fbmV4dFByb2JlU2FtcGxlSWQrKywgZXhjZXB0aW9uID8gZXhjZXB0aW9u
LT52YWx1ZSgpIDogcmVzdWx0KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNBdHRhY2hlZChnbG9iYWxP
YmplY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgIH0KK30KKwogY2xhc3MgRGVidWdnZXI6
OkNsZWFyRGVidWdnZXJSZXF1ZXN0c0Z1bmN0b3IgewogcHVibGljOgogICAgIENsZWFyRGVidWdn
ZXJSZXF1ZXN0c0Z1bmN0b3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKQEAgLTU3MSwx
MSArNjkzLDM1IEBAIHZvaWQgRGVidWdnZXI6OnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZSkKICAgICBtX3BhdXNlT25FeGNlcHRpb25zU3RhdGUg
PSBwYXVzZTsKIH0KIAotdm9pZCBEZWJ1Z2dlcjo6c2V0UGF1c2VPbk5leHRTdGF0ZW1lbnQoYm9v
bCBwYXVzZSkKK3ZvaWQgRGVidWdnZXI6OnNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eSgp
CiB7Ci0gICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gcGF1c2U7Ci0gICAgaWYgKHBhdXNl
KQotICAgICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7CisgICAgbV9w
YXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gdHJ1ZTsKKworICAgIHNldFN0ZXBwaW5nTW9kZShTdGVw
cGluZ01vZGVFbmFibGVkKTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6Y2FuY2VsUGF1c2VBdE5leHRP
cHBvcnR1bml0eSgpCit7CisgICAgbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5ID0gZmFsc2U7Cit9
CisKK2Jvb2wgRGVidWdnZXI6OnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChCcmVh
a3BvaW50JiBicmVha3BvaW50KQoreworICAgIGlmIChtX3NwZWNpYWxCcmVha3BvaW50KQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBtX3NwZWNpYWxCcmVha3BvaW50ID0gbWFrZVJlZihi
cmVha3BvaW50KTsKKyAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Cisg
ICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgRGVidWdnZXI6OmNhbmNlbFBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQoQnJlYWtwb2ludCYgYnJlYWtwb2ludCkKK3sKKyAgICBpZiAoJmJyZWFrcG9p
bnQgIT0gbV9zcGVjaWFsQnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
bV9zcGVjaWFsQnJlYWtwb2ludCA9IG51bGxwdHI7CisgICAgcmV0dXJuIHRydWU7CiB9CiAKIHZv
aWQgRGVidWdnZXI6OmJyZWFrUHJvZ3JhbSgpCkBAIC01OTksNyArNzQ1LDcgQEAgdm9pZCBEZWJ1
Z2dlcjo6Y29udGludWVQcm9ncmFtKCkKICAgICBpZiAoIW1faXNQYXVzZWQpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKTsKKyAgICBt
X2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiB2b2lkIERlYnVnZ2Vy
OjpzdGVwTmV4dEV4cHJlc3Npb24oKQpAQCAtNjEwLDcgKzc1Niw3IEBAIHZvaWQgRGVidWdnZXI6
OnN0ZXBOZXh0RXhwcmVzc2lvbigpCiAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50
Q2FsbEZyYW1lOwogICAgIG1fcGF1c2VPblN0ZXBOZXh0ID0gdHJ1ZTsKICAgICBzZXRTdGVwcGlu
Z01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0gICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1
Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7
CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBJbnRvU3RhdGVtZW50KCkKQEAgLTYyMCw3ICs3NjYs
NyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwSW50b1N0YXRlbWVudCgpCiAKICAgICBtX3BhdXNlQXRO
ZXh0T3Bwb3J0dW5pdHkgPSB0cnVlOwogICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVF
bmFibGVkKTsKLSAgICBub3RpZnlEb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCk7CisgICAg
bV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzID0gdHJ1ZTsKIH0KIAogdm9pZCBEZWJ1Z2dl
cjo6c3RlcE92ZXJTdGF0ZW1lbnQoKQpAQCAtNjMwLDcgKzc3Niw3IEBAIHZvaWQgRGVidWdnZXI6
OnN0ZXBPdmVyU3RhdGVtZW50KCkKIAogICAgIG1fcGF1c2VPbkNhbGxGcmFtZSA9IG1fY3VycmVu
dENhbGxGcmFtZTsKICAgICBzZXRTdGVwcGluZ01vZGUoU3RlcHBpbmdNb2RlRW5hYmxlZCk7Ci0g
ICAgbm90aWZ5RG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cygpOworICAgIG1fZG9uZVByb2Nl
c3NpbmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7CiB9CiAKIHZvaWQgRGVidWdnZXI6OnN0ZXBPdXRP
ZkZ1bmN0aW9uKCkKQEAgLTY0Miw3ICs3ODgsNyBAQCB2b2lkIERlYnVnZ2VyOjpzdGVwT3V0T2ZG
dW5jdGlvbigpCiAgICAgbV9wYXVzZU9uQ2FsbEZyYW1lID0gbV9jdXJyZW50Q2FsbEZyYW1lID8g
bV9jdXJyZW50Q2FsbEZyYW1lLT5jYWxsZXJGcmFtZSh0b3BFbnRyeUZyYW1lKSA6IG51bGxwdHI7
CiAgICAgbV9wYXVzZU9uU3RlcE91dCA9IHRydWU7CiAgICAgc2V0U3RlcHBpbmdNb2RlKFN0ZXBw
aW5nTW9kZUVuYWJsZWQpOwotICAgIG5vdGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMo
KTsKKyAgICBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgPSB0cnVlOwogfQogCiBzdGF0
aWMgaW5saW5lIEpTR2xvYmFsT2JqZWN0KiBsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1l
KFZNJiB2bSwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC03MDEsMTAgKzg0NywxNyBAQCB2b2lk
IERlYnVnZ2VyOjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAK
ICAgICBib29sIGRpZFBhdXNlRm9yU3RlcCA9IHBhdXNlTm93OwogCi0gICAgQnJlYWtwb2ludCBi
cmVha3BvaW50OwogICAgIFRleHRQb3NpdGlvbiBwb3NpdGlvbiA9IERlYnVnZ2VyQ2FsbEZyYW1l
Ojpwb3NpdGlvbkZvckNhbGxGcmFtZSh2bSwgbV9jdXJyZW50Q2FsbEZyYW1lKTsKLSAgICBib29s
IGRpZEhpdEJyZWFrcG9pbnQgPSBoYXNCcmVha3BvaW50KHNvdXJjZUlELCBwb3NpdGlvbiwgJmJy
ZWFrcG9pbnQpOwotICAgIHBhdXNlTm93IHw9IGRpZEhpdEJyZWFrcG9pbnQ7CisKKyAgICBhdXRv
IGJyZWFrcG9pbnQgPSBkaWRIaXRCcmVha3BvaW50KGdsb2JhbE9iamVjdCwgc291cmNlSUQsIHBv
c2l0aW9uKTsKKyAgICBpZiAoYnJlYWtwb2ludCkKKyAgICAgICAgcGF1c2VOb3cgPSB0cnVlOwor
CisgICAgLy8gU3BlY2lhbCBicmVha3BvaW50cyBhcmUgb25seSBnaXZlbiBvbmUgb3Bwb3J0dW5p
dHkgdG8gcGF1c2UuCisgICAgYXV0byBzcGVjaWFsQnJlYWtwb2ludCA9IFdURk1vdmUobV9zcGVj
aWFsQnJlYWtwb2ludCk7CisgICAgaWYgKHNwZWNpYWxCcmVha3BvaW50ICYmIHNwZWNpYWxCcmVh
a3BvaW50LT5zaG91bGRQYXVzZSgqdGhpcywgZ2xvYmFsT2JqZWN0KSkKKyAgICAgICAgcGF1c2VO
b3cgPSB0cnVlOworCiAgICAgbV9sYXN0RXhlY3V0ZWRMaW5lID0gcG9zaXRpb24ubV9saW5lLnpl
cm9CYXNlZEludCgpOwogICAgIGlmICghcGF1c2VOb3cpCiAgICAgICAgIHJldHVybjsKQEAgLTcx
NiwyNCArODY5LDQ1IEBAIHZvaWQgRGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKICAgICAvLyByZXNldGluZyB0aGUgcGF1c2Ugc3RhdGUgYmVmb3Jl
IGV4ZWN1dGluZyBhbnkgYnJlYWtwb2ludCBhY3Rpb25zLgogICAgIFRlbXBvcmFyeVBhdXNlZFN0
YXRlIHBhdXNlZFN0YXRlKCp0aGlzKTsKIAotICAgIGlmIChkaWRIaXRCcmVha3BvaW50KSB7Ci0g
ICAgICAgIGhhbmRsZUJyZWFrcG9pbnRIaXQoZ2xvYmFsT2JqZWN0LCBicmVha3BvaW50KTsKKyAg
ICBpZiAoYnJlYWtwb2ludCB8fCBzcGVjaWFsQnJlYWtwb2ludCkgewogICAgICAgICAvLyBOb3Rl
IHRoYXQgdGhlIGFjdGlvbnMgY2FuIHBvdGVudGlhbGx5IHN0b3AgdGhlIGRlYnVnZ2VyLCBzbyB3
ZSBuZWVkIHRvIGNoZWNrIHRoYXQKICAgICAgICAgLy8gd2Ugc3RpbGwgaGF2ZSBhIGN1cnJlbnQg
Y2FsbCBmcmFtZSB3aGVuIHdlIGdldCBiYWNrLgotICAgICAgICBpZiAoIW1fY3VycmVudENhbGxG
cmFtZSkKLSAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBpZiAoYnJlYWtwb2ludC5hdXRv
Q29udGludWUpIHsKKyAgICAgICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKKworICAgICAg
ICBpZiAoYnJlYWtwb2ludCkgeworICAgICAgICAgICAgZXZhbHVhdGVCcmVha3BvaW50QWN0aW9u
cygqYnJlYWtwb2ludCwgZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICAgICAgaWYgKCFtX2N1cnJl
bnRDYWxsRnJhbWUpCisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAo
YnJlYWtwb2ludC0+aXNBdXRvQ29udGludWUoKSkKKyAgICAgICAgICAgICAgICBhdXRvQ29udGlu
dWUgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNwZWNpYWxCcmVha3BvaW50KSB7
CisgICAgICAgICAgICBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb25zKCpzcGVjaWFsQnJlYWtwb2lu
dCwgZ2xvYmFsT2JqZWN0KTsKKworICAgICAgICAgICAgaWYgKCFtX2N1cnJlbnRDYWxsRnJhbWUp
CisgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBpZiAoc3BlY2lhbEJyZWFr
cG9pbnQtPmlzQXV0b0NvbnRpbnVlKCkpCisgICAgICAgICAgICAgICAgYXV0b0NvbnRpbnVlID0g
dHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhdXRvQ29udGludWUpIHsKICAgICAgICAg
ICAgIGlmICghZGlkUGF1c2VGb3JTdGVwKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIGRpZEhpdEJyZWFrcG9pbnQgPSBmYWxzZTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAg
ICAgICBtX3BhdXNpbmdCcmVha3BvaW50SUQgPSBicmVha3BvaW50LmlkOworCisgICAgICAgICAg
ICBicmVha3BvaW50ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIHNwZWNpYWxCcmVha3BvaW50ID0g
bnVsbHB0cjsKKyAgICAgICAgfSBlbHNlIGlmIChicmVha3BvaW50KQorICAgICAgICAgICAgbV9w
YXVzaW5nQnJlYWtwb2ludElEID0gYnJlYWtwb2ludC0+aWQoKTsKICAgICB9CiAKICAgICBpZiAo
YmxhY2tib3hUeXBlSXRlcmF0b3IgIT0gbV9ibGFja2JveGVkU2NyaXB0cy5lbmQoKSAmJiBibGFj
a2JveFR5cGVJdGVyYXRvci0+dmFsdWUgPT0gQmxhY2tib3hUeXBlOjpEZWZlcnJlZCkgewogICAg
ICAgICBtX2FmdGVyQmxhY2tib3hlZFNjcmlwdCA9IHRydWU7Ci0gICAgICAgIHNldFBhdXNlT25O
ZXh0U3RhdGVtZW50KHRydWUpOworICAgICAgICBzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0dW5p
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzQxLDcgKzkxNSw3IEBAIHZvaWQg
RGVidWdnZXI6OnBhdXNlSWZOZWVkZWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKICAg
ICAgICAgYXV0byByZWFzb24gPSBtX3JlYXNvbkZvclBhdXNlOwogICAgICAgICBpZiAoYWZ0ZXJC
bGFja2JveGVkU2NyaXB0KQogICAgICAgICAgICAgcmVhc29uID0gUGF1c2VkQWZ0ZXJCbGFja2Jv
eGVkU2NyaXB0OwotICAgICAgICBlbHNlIGlmIChkaWRIaXRCcmVha3BvaW50KQorICAgICAgICBl
bHNlIGlmIChicmVha3BvaW50KQogICAgICAgICAgICAgcmVhc29uID0gUGF1c2VkRm9yQnJlYWtw
b2ludDsKICAgICAgICAgUGF1c2VSZWFzb25EZWNsYXJhdGlvbiByYXVzZVJlYXNvbkRlY2xhcmF0
aW9uKCp0aGlzLCByZWFzb24pOwogCkBAIC03NTEsMTIgKzkyNSw0NSBAQCB2b2lkIERlYnVnZ2Vy
OjpwYXVzZUlmTmVlZGVkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKICAgICBtX3Bh
dXNpbmdCcmVha3BvaW50SUQgPSBub0JyZWFrcG9pbnRJRDsKIAotICAgIGlmICghbV9wYXVzZUF0
TmV4dE9wcG9ydHVuaXR5ICYmICFtX3BhdXNlT25DYWxsRnJhbWUpIHsKKyAgICBpZiAoIW1fcGF1
c2VBdE5leHRPcHBvcnR1bml0eSAmJiAhbV9wYXVzZU9uQ2FsbEZyYW1lICYmICFtX3NwZWNpYWxC
cmVha3BvaW50KSB7CiAgICAgICAgIHNldFN0ZXBwaW5nTW9kZShTdGVwcGluZ01vZGVEaXNhYmxl
ZCk7CiAgICAgICAgIG1fY3VycmVudENhbGxGcmFtZSA9IG51bGxwdHI7CiAgICAgfQogfQogCit2
b2lkIERlYnVnZ2VyOjpoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBS
ZWFzb25Gb3JQYXVzZSkKK3sKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChP
YnNlcnZlciYgb2JzZXJ2ZXIpIHsKKyAgICAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOworICAgICAg
ICBvYnNlcnZlci5kaWRQYXVzZShnbG9iYWxPYmplY3QsIGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFt
ZSgpLCBleGNlcHRpb25PckNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCkpOworICAgIH0pOworCisg
ICAgZGlkUGF1c2UoZ2xvYmFsT2JqZWN0KTsKKworICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dl
ckV2ZW50cyA9IGZhbHNlOworICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKKyAgICBk
aWRDb250aW51ZShnbG9iYWxPYmplY3QpOworCisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2
ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLmRpZENvbnRp
bnVlKCk7CisgICAgfSk7Cit9CisKK0pTQzo6SlNWYWx1ZSBEZWJ1Z2dlcjo6ZXhjZXB0aW9uT3JD
YXVnaHRWYWx1ZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCit7CisgICAgaWYg
KHJlYXNvbkZvclBhdXNlKCkgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKQorICAgICAgICByZXR1cm4g
Y3VycmVudEV4Y2VwdGlvbigpOworCisgICAgZm9yIChSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+
IGZyYW1lID0gJmN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFt
ZS0+Y2FsbGVyRnJhbWUoKSkgeworICAgICAgICBEZWJ1Z2dlclNjb3BlJiBzY29wZSA9ICpmcmFt
ZS0+c2NvcGUoKTsKKyAgICAgICAgaWYgKHNjb3BlLmlzQ2F0Y2hTY29wZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIHNjb3BlLmNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgfQorCisgICAg
cmV0dXJuIHsgfTsKK30KKwogdm9pZCBEZWJ1Z2dlcjo6ZXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lLCBKU1ZhbHVlIGV4Y2VwdGlvbiwg
Ym9vbCBoYXNDYXRjaEhhbmRsZXIpCiB7CiAgICAgaWYgKG1faXNQYXVzZWQpCkBAIC04MDcsOCAr
MTAxNCw4IEBAIHZvaWQgRGVidWdnZXI6OmF0RXhwcmVzc2lvbihDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIE9ubHkgcGF1c2UgYXQgdGhlIG5l
eHQgZXhwcmVzc2lvbiB3aXRoIHN0ZXAtaW4sIHN0ZXAtbmV4dCwgYW5kIHN0ZXAtb3V0LgotICAg
IGJvb2wgc2hvdWxkQXR0ZW1wdFBhdXNlID0gbV9wYXVzZUF0TmV4dE9wcG9ydHVuaXR5IHx8IG1f
cGF1c2VPblN0ZXBOZXh0IHx8IG1fcGF1c2VPblN0ZXBPdXQ7CisgICAgLy8gT25seSBwYXVzZSBh
dCB0aGUgbmV4dCBleHByZXNzaW9uIGZvciBzdGVwLWluLCBzdGVwLW5leHQsIHN0ZXAtb3V0LCBv
ciBzcGVjaWFsIGJyZWFrcG9pbnRzLgorICAgIGJvb2wgc2hvdWxkQXR0ZW1wdFBhdXNlID0gbV9w
YXVzZUF0TmV4dE9wcG9ydHVuaXR5IHx8IG1fcGF1c2VPblN0ZXBOZXh0IHx8IG1fcGF1c2VPblN0
ZXBPdXQgfHwgbV9zcGVjaWFsQnJlYWtwb2ludDsKIAogICAgIFBhdXNlUmVhc29uRGVjbGFyYXRp
b24gcmVhc29uKCp0aGlzLCBQYXVzZWRBdEV4cHJlc3Npb24pOwogICAgIHVwZGF0ZUNhbGxGcmFt
ZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1fdm0sIGNhbGxGcmFtZSksIGNhbGxG
cmFtZSwgc2hvdWxkQXR0ZW1wdFBhdXNlID8gQXR0ZW1wdFBhdXNlIDogTm9QYXVzZSk7CkBAIC05
MTcsNiArMTEyNCw3IEBAIHZvaWQgRGVidWdnZXI6OmNsZWFyTmV4dFBhdXNlU3RhdGUoKQogICAg
IG1fcGF1c2VPblN0ZXBOZXh0ID0gZmFsc2U7CiAgICAgbV9wYXVzZU9uU3RlcE91dCA9IGZhbHNl
OwogICAgIG1fYWZ0ZXJCbGFja2JveGVkU2NyaXB0ID0gZmFsc2U7CisgICAgbV9zcGVjaWFsQnJl
YWtwb2ludCA9IG51bGxwdHI7CiB9CiAKIHZvaWQgRGVidWdnZXI6OmRpZFJlYWNoRGVidWdnZXJT
dGF0ZW1lbnQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCkBAIC05MzMsNiArMTE0MSwyMCBAQCB2b2lk
IERlYnVnZ2VyOjpkaWRSZWFjaERlYnVnZ2VyU3RhdGVtZW50KENhbGxGcmFtZSogY2FsbEZyYW1l
KQogICAgIHVwZGF0ZUNhbGxGcmFtZShsZXhpY2FsR2xvYmFsT2JqZWN0Rm9yQ2FsbEZyYW1lKG1f
dm0sIGNhbGxGcmFtZSksIGNhbGxGcmFtZSwgQXR0ZW1wdFBhdXNlKTsKIH0KIAordm9pZCBEZWJ1
Z2dlcjo6d2lsbFJ1bk1pY3JvdGFzaygpCit7CisgICAgZGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2
ZXJzKFsmXSAoT2JzZXJ2ZXImIG9ic2VydmVyKSB7CisgICAgICAgIG9ic2VydmVyLndpbGxSdW5N
aWNyb3Rhc2soKTsKKyAgICB9KTsKK30KKwordm9pZCBEZWJ1Z2dlcjo6ZGlkUnVuTWljcm90YXNr
KCkKK3sKKyAgICBkaXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoWyZdIChPYnNlcnZlciYgb2Jz
ZXJ2ZXIpIHsKKyAgICAgICAgb2JzZXJ2ZXIuZGlkUnVuTWljcm90YXNrKCk7CisgICAgfSk7Cit9
CisKIERlYnVnZ2VyQ2FsbEZyYW1lJiBEZWJ1Z2dlcjo6Y3VycmVudERlYnVnZ2VyQ2FsbEZyYW1l
KCkKIHsKICAgICBpZiAoIW1fY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVnZ2VyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaAppbmRleCBmYmE0NGM2MGNjNmEzYTNhNDg0N2Ex
YmRhZWM2Njg5MTMyYTQ4Njg3Li5jYzk1ZTdjNjRiOTA1MmQ5MzczMTIxMTU3ODk2MmYxYzFiYzZh
ODYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdnZXIuaApAQCAtMjcs
MTAgKzI3LDcgQEAKICNpbmNsdWRlICJEZWJ1Z2dlclBhcnNlRGF0YS5oIgogI2luY2x1ZGUgIkRl
YnVnZ2VyUHJpbWl0aXZlcy5oIgogI2luY2x1ZGUgIkpTQ0pTVmFsdWUuaCIKLSNpbmNsdWRlIDx3
dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Jl
ZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi90ZXh0L1RleHRQb3NpdGlvbi5oPgorI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAKIG5hbWVzcGFjZSBKU0MgewogCkBAIC00MSwyNiArMzgsMTQgQEAgY2xh
c3MgSlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBTb3VyY2VQcm92aWRlcjsKIGNsYXNzIFZNOwogCi1j
bGFzcyBKU19FWFBPUlRfUFJJVkFURSBEZWJ1Z2dlciB7CitjbGFzcyBEZWJ1Z2dlciB7CiAgICAg
V1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgRGVidWdnZXIoVk0mKTsKLSAg
ICB2aXJ0dWFsIH5EZWJ1Z2dlcigpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIERlYnVnZ2VyKFZN
Jik7CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB+RGVidWdnZXIoKTsKIAogICAgIFZN
JiB2bSgpIHsgcmV0dXJuIG1fdm07IH0KIAotICAgIEpTQzo6RGVidWdnZXJDYWxsRnJhbWUmIGN1
cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotICAgIGJvb2wgaGFzSGFuZGxlckZvckV4Y2VwdGlv
bkNhbGxiYWNrKCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNl
ID09IFBhdXNlZEZvckV4Y2VwdGlvbik7Ci0gICAgICAgIHJldHVybiBtX2hhc0hhbmRsZXJGb3JF
eGNlcHRpb25DYWxsYmFjazsKLSAgICB9Ci0gICAgSlNWYWx1ZSBjdXJyZW50RXhjZXB0aW9uKCkK
LSAgICB7Ci0gICAgICAgIEFTU0VSVChtX3JlYXNvbkZvclBhdXNlID09IFBhdXNlZEZvckV4Y2Vw
dGlvbik7Ci0gICAgICAgIHJldHVybiBtX2N1cnJlbnRFeGNlcHRpb247Ci0gICAgfQotCiAgICAg
Ym9vbCBuZWVkc0V4Y2VwdGlvbkNhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1fYnJlYWtwb2lu
dHNBY3RpdmF0ZWQgJiYgbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlICE9IERvbnRQYXVzZU9uRXhj
ZXB0aW9uczsgfQogICAgIGJvb2wgaXNJbnRlcmFjdGl2ZWx5RGVidWdnaW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9icmVha3BvaW50c0FjdGl2YXRlZDsgfQogCkBAIC02OCwyNiArNTMsMzAgQEAgcHVi
bGljOgogICAgICAgICBUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24sCiAgICAgICAgIEdsb2Jh
bE9iamVjdElzRGVzdHJ1Y3RpbmcKICAgICB9OwotICAgIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2Jq
ZWN0Kik7Ci0gICAgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JEZXRhY2gp
OwotICAgIGJvb2wgaXNBdHRhY2hlZChKU0dsb2JhbE9iamVjdCopOworICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZvaWQgYXR0YWNoKEpTR2xvYmFsT2JqZWN0Kik7CisgICAgSlNfRVhQT1JUX1BSSVZB
VEUgdm9pZCBkZXRhY2goSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JEZXRhY2gpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIGJvb2wgaXNBdHRhY2hlZChKU0dsb2JhbE9iamVjdCopOwogCi0gICAg
dm9pZCByZXNvbHZlQnJlYWtwb2ludChCcmVha3BvaW50JiwgU291cmNlUHJvdmlkZXIqKTsKLSAg
ICBCcmVha3BvaW50SUQgc2V0QnJlYWtwb2ludChCcmVha3BvaW50JiwgYm9vbCYgZXhpc3Rpbmcp
OwotICAgIHZvaWQgcmVtb3ZlQnJlYWtwb2ludChCcmVha3BvaW50SUQpOworICAgIGJvb2wgcmVz
b2x2ZUJyZWFrcG9pbnQoQnJlYWtwb2ludCYsIFNvdXJjZVByb3ZpZGVyKik7CisgICAgYm9vbCBz
ZXRCcmVha3BvaW50KEJyZWFrcG9pbnQmKTsKKyAgICBib29sIHJlbW92ZUJyZWFrcG9pbnQoQnJl
YWtwb2ludCYpOwogICAgIHZvaWQgY2xlYXJCcmVha3BvaW50cygpOwogCiAgICAgdm9pZCBhY3Rp
dmF0ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsgfQogICAg
IHZvaWQgZGVhY3RpdmF0ZUJyZWFrcG9pbnRzKCkgeyBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChm
YWxzZSk7IH0KICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gbV9i
cmVha3BvaW50c0FjdGl2YXRlZDsgfQogCisgICAgLy8gQnJlYWtwb2ludCAiZGVsZWdhdGUiIGZ1
bmN0aW9uYWxpdHkuCisgICAgYm9vbCBldmFsdWF0ZUJyZWFrcG9pbnRDb25kaXRpb24oQnJlYWtw
b2ludCYsIEpTR2xvYmFsT2JqZWN0Kik7CisgICAgdm9pZCBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rp
b25zKEJyZWFrcG9pbnQmLCBKU0dsb2JhbE9iamVjdCopOworCiAgICAgZW51bSBQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlIHsKICAgICAgICAgRG9udFBhdXNlT25FeGNlcHRpb25zLAogICAgICAgICBQ
YXVzZU9uQWxsRXhjZXB0aW9ucywKICAgICAgICAgUGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9ucwog
ICAgIH07CiAgICAgUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZU9uRXhjZXB0aW9uc1N0YXRl
KCkgY29uc3QgeyByZXR1cm4gbV9wYXVzZU9uRXhjZXB0aW9uc1N0YXRlOyB9Ci0gICAgdm9pZCBz
ZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFBhdXNlT25FeGNlcHRpb25zU3RhdGUpOworICAgIEpT
X0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShQYXVzZU9uRXhj
ZXB0aW9uc1N0YXRlKTsKIAogICAgIHZvaWQgc2V0UGF1c2VPbkRlYnVnZ2VyU3RhdGVtZW50cyhi
b29sIGVuYWJsZWQpIHsgbV9wYXVzZU9uRGVidWdnZXJTdGF0ZW1lbnRzID0gZW5hYmxlZDsgfQog
CkBAIC0xMDUsNyArOTQsMTAgQEAgcHVibGljOgogICAgIFJlYXNvbkZvclBhdXNlIHJlYXNvbkZv
clBhdXNlKCkgY29uc3QgeyByZXR1cm4gbV9yZWFzb25Gb3JQYXVzZTsgfQogICAgIEJyZWFrcG9p
bnRJRCBwYXVzaW5nQnJlYWtwb2ludElEKCkgY29uc3QgeyByZXR1cm4gbV9wYXVzaW5nQnJlYWtw
b2ludElEOyB9CiAKLSAgICB2b2lkIHNldFBhdXNlT25OZXh0U3RhdGVtZW50KGJvb2wpOworICAg
IHZvaWQgc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CisgICAgdm9pZCBjYW5jZWxQ
YXVzZUF0TmV4dE9wcG9ydHVuaXR5KCk7CisgICAgYm9vbCBzY2hlZHVsZVBhdXNlRm9yU3BlY2lh
bEJyZWFrcG9pbnQoQnJlYWtwb2ludCYpOworICAgIGJvb2wgY2FuY2VsUGF1c2VGb3JTcGVjaWFs
QnJlYWtwb2ludChCcmVha3BvaW50Jik7CiAgICAgdm9pZCBicmVha1Byb2dyYW0oKTsKICAgICB2
b2lkIGNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIHZvaWQgc3RlcE5leHRFeHByZXNzaW9uKCk7CkBA
IC0xMjMsOSArMTE1LDcgQEAgcHVibGljOgogICAgIGJvb2wgc3VwcHJlc3NBbGxQYXVzZXMoKSBj
b25zdCB7IHJldHVybiBtX3N1cHByZXNzQWxsUGF1c2VzOyB9CiAgICAgdm9pZCBzZXRTdXBwcmVz
c0FsbFBhdXNlcyhib29sIHN1cHByZXNzKSB7IG1fc3VwcHJlc3NBbGxQYXVzZXMgPSBzdXBwcmVz
czsgfQogCi0gICAgdmlydHVhbCB2b2lkIHNvdXJjZVBhcnNlZChKU0dsb2JhbE9iamVjdCosIFNv
dXJjZVByb3ZpZGVyKiwgaW50IGVycm9yTGluZU51bWJlciwgY29uc3QgV1RGOjpTdHJpbmcmIGVy
cm9yTWVzc2FnZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsUnVuTWljcm90YXNrKCkgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIHsgfQorICAgIEpTX0VYUE9SVF9Q
UklWQVRFIHZpcnR1YWwgdm9pZCBzb3VyY2VQYXJzZWQoSlNHbG9iYWxPYmplY3QqLCBTb3VyY2VQ
cm92aWRlciosIGludCBlcnJvckxpbmVOdW1iZXIsIGNvbnN0IFdURjo6U3RyaW5nJiBlcnJvck1l
c3NhZ2UpOwogCiAgICAgdm9pZCBleGNlcHRpb24oSlNHbG9iYWxPYmplY3QqLCBDYWxsRnJhbWUq
LCBKU1ZhbHVlIGV4Y2VwdGlvblZhbHVlLCBib29sIGhhc0NhdGNoSGFuZGxlcik7CiAgICAgdm9p
ZCBhdFN0YXRlbWVudChDYWxsRnJhbWUqKTsKQEAgLTEzNywxMCArMTI3LDQ2IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZEV4ZWN1dGVQcm9ncmFtKENhbGxGcmFtZSopOwogICAgIHZvaWQgZGlkUmVh
Y2hEZWJ1Z2dlclN0YXRlbWVudChDYWxsRnJhbWUqKTsKIAotICAgIHZpcnR1YWwgdm9pZCByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygpOworICAgIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpOworICAg
IHZvaWQgZGlkUnVuTWljcm90YXNrKCk7CiAKICAgICB2b2lkIHJlZ2lzdGVyQ29kZUJsb2NrKENv
ZGVCbG9jayopOwogCisgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xNjI3NzM+
IFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IERlYnVnZ2VyOjpTY3JpcHQgdG8gdXNlIFNvdXJjZVBy
b3ZpZGVyCisgICAgc3RydWN0IFNjcmlwdCB7CisgICAgICAgIFN0cmluZyB1cmw7CisgICAgICAg
IFN0cmluZyBzb3VyY2U7CisgICAgICAgIFN0cmluZyBzb3VyY2VVUkw7CisgICAgICAgIFN0cmlu
ZyBzb3VyY2VNYXBwaW5nVVJMOworICAgICAgICBSZWZQdHI8U291cmNlUHJvdmlkZXI+IHNvdXJj
ZVByb3ZpZGVyOworICAgICAgICBpbnQgc3RhcnRMaW5lIHsgMCB9OworICAgICAgICBpbnQgc3Rh
cnRDb2x1bW4geyAwIH07CisgICAgICAgIGludCBlbmRMaW5lIHsgMCB9OworICAgICAgICBpbnQg
ZW5kQ29sdW1uIHsgMCB9OworICAgICAgICBib29sIGlzQ29udGVudFNjcmlwdCB7IGZhbHNlIH07
CisgICAgfTsKKworICAgIGNsYXNzIE9ic2VydmVyIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZp
cnR1YWwgfk9ic2VydmVyKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBhcnNlU291
cmNlKFNvdXJjZUlELCBjb25zdCBEZWJ1Z2dlcjo6U2NyaXB0JikgeyB9CisgICAgICAgIHZpcnR1
YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgLyogdXJsICovLCBjb25z
dCBTdHJpbmcmIC8qIGRhdGEgKi8sIGludCAvKiBmaXJzdExpbmUgKi8sIGludCAvKiBlcnJvckxp
bmUgKi8sIGNvbnN0IFN0cmluZyYgLyogZXJyb3JNZXNzYWdlICovKSB7IH0KKworICAgICAgICB2
aXJ0dWFsIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUnVuTWljcm90YXNrKCkgeyB9CisKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpT
R2xvYmFsT2JqZWN0KiwgRGVidWdnZXJDYWxsRnJhbWUmLCBKU1ZhbHVlIC8qIGV4Y2VwdGlvbk9y
Q2F1Z2h0VmFsdWUgKi8pIHsgfQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ29udGludWUoKSB7
IH0KKworICAgICAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0dsb2JhbE9i
amVjdCosIGNvbnN0IFN0cmluZyYgLyogZGF0YSAqLykgeyB9CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBicmVha3BvaW50QWN0aW9uU291bmQoQnJlYWtwb2ludEFjdGlvbklEKSB7IH0KKyAgICAgICAg
dmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0dsb2JhbE9iamVjdCosIEJyZWFr
cG9pbnRBY3Rpb25JRCwgdW5zaWduZWQgLyogYmF0Y2hJZCAqLywgdW5zaWduZWQgLyogc2FtcGxl
SWQgKi8sIEpTVmFsdWUgLyogcmVzdWx0ICovKSB7IH0KKyAgICB9OworCisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBhZGRPYnNlcnZlcihPYnNlcnZlciYpOworICAgIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgcmVtb3ZlT2JzZXJ2ZXIoT2JzZXJ2ZXImLCBib29sIGlzQmVpbmdEZXN0cm95ZWQp
OworCiAgICAgY2xhc3MgUHJvZmlsaW5nQ2xpZW50IHsKICAgICBwdWJsaWM6CiAgICAgICAgIHZp
cnR1YWwgflByb2ZpbGluZ0NsaWVudCgpOwpAQCAtMTU2LDE2ICsxODIsNDAgQEAgcHVibGljOgog
ICAgIHZvaWQgZGlkRXZhbHVhdGVTY3JpcHQoU2Vjb25kcyBzdGFydFRpbWUsIFByb2ZpbGluZ1Jl
YXNvbik7CiAKIHByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQnJlYWtwb2ludEhp
dChKU0dsb2JhbE9iamVjdCosIGNvbnN0IEJyZWFrcG9pbnQmKSB7IH0KLSAgICB2aXJ0dWFsIHZv
aWQgaGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpTR2xvYmFsT2JqZWN0Kiwg
RXhjZXB0aW9uKikgY29uc3QgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGhhbmRsZVBhdXNlKEpTR2xv
YmFsT2JqZWN0KiwgUmVhc29uRm9yUGF1c2UpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlE
b25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUg
SlNDOjpEZWJ1Z2dlckNhbGxGcmFtZSYgY3VycmVudERlYnVnZ2VyQ2FsbEZyYW1lKCk7CisKKyAg
ICBib29sIGhhc0hhbmRsZXJGb3JFeGNlcHRpb25DYWxsYmFjaygpIGNvbnN0CisgICAgeworICAg
ICAgICBBU1NFUlQobV9yZWFzb25Gb3JQYXVzZSA9PSBQYXVzZWRGb3JFeGNlcHRpb24pOworICAg
ICAgICByZXR1cm4gbV9oYXNIYW5kbGVyRm9yRXhjZXB0aW9uQ2FsbGJhY2s7CisgICAgfQorCisg
ICAgSlNWYWx1ZSBjdXJyZW50RXhjZXB0aW9uKCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX3Jl
YXNvbkZvclBhdXNlID09IFBhdXNlZEZvckV4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBtX2N1
cnJlbnRFeGNlcHRpb247CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGF0dGFjaERlYnVnZ2Vy
KCkgeyB9CisgICAgdmlydHVhbCB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgLyogaXNCZWluZ0Rl
c3Ryb3llZCAqLykgeyB9CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdmlydHVhbCB2b2lkIHJlY29t
cGlsZUFsbEpTRnVuY3Rpb25zKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUGF1c2UoSlNHbG9i
YWxPYmplY3QqKSB7IH0KKyAgICBKU19FWFBPUlRfUFJJVkFURSB2aXJ0dWFsIHZvaWQgaGFuZGxl
UGF1c2UoSlNHbG9iYWxPYmplY3QqLCBSZWFzb25Gb3JQYXVzZSk7CisgICAgdmlydHVhbCB2b2lk
IGRpZENvbnRpbnVlKEpTR2xvYmFsT2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIHJ1bkV2
ZW50TG9vcFdoaWxlUGF1c2VkKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2Ny
aXB0KEpTR2xvYmFsT2JqZWN0KikgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIE5P
VEU6IEN1cnJlbnRseSBhbGwgZXhjZXB0aW9ucyBhcmUgcmVwb3J0ZWQgYXQgdGhlIEFQSSBib3Vu
ZGFyeSB0aHJvdWdoIHJlcG9ydEFQSUV4Y2VwdGlvbi4KKyAgICAvLyBVbnRpbCBhIHRpbWUgY29t
ZXMgd2hlcmUgYW4gZXhjZXB0aW9uIGNhbiBiZSBjYXVzZWQgb3V0c2lkZSBvZiB0aGUgQVBJIChl
LmcuIHNldFRpbWVvdXQKKyAgICAvLyBvciBzb21lIG90aGVyIGFzeW5jIG9wZXJhdGlvbiBpbiBh
IHB1cmUgSlNDb250ZXh0KSB3ZSBjYW4gaWdub3JlIGV4Y2VwdGlvbnMgcmVwb3J0ZWQgaGVyZS4K
KyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpTR2xvYmFsT2JqZWN0KiwgRXhjZXB0
aW9uKikgY29uc3QgeyB9CisKKyAgICBib29sIGRvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMo
KSBjb25zdCB7IHJldHVybiBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHM7IH0KIAogcHJp
dmF0ZToKLSAgICB0eXBlZGVmIEhhc2hNYXA8QnJlYWtwb2ludElELCBCcmVha3BvaW50Kj4gQnJl
YWtwb2ludElEVG9CcmVha3BvaW50TWFwOwotCi0gICAgdHlwZWRlZiBIYXNoTWFwPHVuc2lnbmVk
LCBSZWZQdHI8QnJlYWtwb2ludHNMaXN0PiwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWdu
ZWRXaXRoWmVyb0tleUhhc2hUcmFpdHM8aW50Pj4gTGluZVRvQnJlYWtwb2ludHNNYXA7Ci0gICAg
dHlwZWRlZiBIYXNoTWFwPFNvdXJjZUlELCBMaW5lVG9CcmVha3BvaW50c01hcCwgV1RGOjpJbnRI
YXNoPFNvdXJjZUlEPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czxTb3VyY2VJ
RD4+IFNvdXJjZUlEVG9CcmVha3BvaW50c01hcDsKKyAgICBKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1
Z2h0VmFsdWUoSlNHbG9iYWxPYmplY3QqKTsKIAogICAgIGNsYXNzIENsZWFyQ29kZUJsb2NrRGVi
dWdnZXJSZXF1ZXN0c0Z1bmN0b3I7CiAgICAgY2xhc3MgQ2xlYXJEZWJ1Z2dlclJlcXVlc3RzRnVu
Y3RvcjsKQEAgLTE4OCw3ICsyMzgsNyBAQCBwcml2YXRlOgogICAgICAgICBEZWJ1Z2dlciYgbV9k
ZWJ1Z2dlcjsKICAgICB9OwogCi0gICAgYm9vbCBoYXNCcmVha3BvaW50KFNvdXJjZUlELCBjb25z
dCBUZXh0UG9zaXRpb24mLCBCcmVha3BvaW50KiBoaXRCcmVha3BvaW50KTsKKyAgICBSZWZQdHI8
QnJlYWtwb2ludD4gZGlkSGl0QnJlYWtwb2ludChKU0dsb2JhbE9iamVjdCosIFNvdXJjZUlELCBj
b25zdCBUZXh0UG9zaXRpb24mKTsKIAogICAgIERlYnVnZ2VyUGFyc2VEYXRhJiBkZWJ1Z2dlclBh
cnNlRGF0YShTb3VyY2VJRCwgU291cmNlUHJvdmlkZXIqKTsKIApAQCAtMjE1LDcgKzI2NSw3IEBA
IHByaXZhdGU6CiAgICAgICAgIEJyZWFrcG9pbnREaXNhYmxlZCwKICAgICAgICAgQnJlYWtwb2lu
dEVuYWJsZWQKICAgICB9OwotICAgIHZvaWQgc2V0QnJlYWtwb2ludHNBY3RpdmF0ZWQoYm9vbCk7
CisgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2YXRlZChib29s
KTsKICAgICB2b2lkIHRvZ2dsZUJyZWFrcG9pbnQoQ29kZUJsb2NrKiwgQnJlYWtwb2ludCYsIEJy
ZWFrcG9pbnRTdGF0ZSk7CiAgICAgdm9pZCBhcHBseUJyZWFrcG9pbnRzKENvZGVCbG9jayopOwog
ICAgIHZvaWQgdG9nZ2xlQnJlYWtwb2ludChCcmVha3BvaW50JiwgQnJlYWtwb2ludFN0YXRlKTsK
QEAgLTIyMyw2ICsyNzMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXJEZWJ1Z2dlclJlcXVl
c3RzKEpTR2xvYmFsT2JqZWN0Kik7CiAgICAgdm9pZCBjbGVhclBhcnNlZERhdGEoKTsKIAorICAg
IGJvb2wgY2FuRGlzcGF0Y2hGdW5jdGlvblRvT2JzZXJ2ZXJzKCkgY29uc3Q7CisgICAgdm9pZCBk
aXNwYXRjaEZ1bmN0aW9uVG9PYnNlcnZlcnMoRnVuY3Rpb248dm9pZChPYnNlcnZlciYpPik7CisK
ICAgICBWTSYgbV92bTsKICAgICBIYXNoU2V0PEpTR2xvYmFsT2JqZWN0Kj4gbV9nbG9iYWxPYmpl
Y3RzOwogICAgIEhhc2hNYXA8U291cmNlSUQsIERlYnVnZ2VyUGFyc2VEYXRhLCBXVEY6OkludEhh
c2g8U291cmNlSUQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPFNvdXJjZUlE
Pj4gbV9wYXJzZURhdGFNYXA7CkBAIC0yNDgsMTUgKzMwMSwyNCBAQCBwcml2YXRlOgogICAgIFNv
dXJjZUlEIG1fbGFzdEV4ZWN1dGVkU291cmNlSUQ7CiAgICAgYm9vbCBtX2FmdGVyQmxhY2tib3hl
ZFNjcmlwdCB7IGZhbHNlIH07CiAKLSAgICBCcmVha3BvaW50SUQgbV90b3BCcmVha3BvaW50SUQ7
CisgICAgdXNpbmcgTGluZVRvQnJlYWtwb2ludHNNYXAgPSBIYXNoTWFwPHVuc2lnbmVkLCBCcmVh
a3BvaW50c1ZlY3RvciwgV1RGOjpJbnRIYXNoPGludD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tl
eUhhc2hUcmFpdHM8aW50Pj47CisgICAgSGFzaE1hcDxTb3VyY2VJRCwgTGluZVRvQnJlYWtwb2lu
dHNNYXAsIFdURjo6SW50SGFzaDxTb3VyY2VJRD4sIFdURjo6VW5zaWduZWRXaXRoWmVyb0tleUhh
c2hUcmFpdHM8U291cmNlSUQ+PiBtX2JyZWFrcG9pbnRzRm9yU291cmNlSUQ7CisgICAgSGFzaFNl
dDxSZWY8QnJlYWtwb2ludD4+IG1fYnJlYWtwb2ludHM7CisgICAgUmVmUHRyPEJyZWFrcG9pbnQ+
IG1fc3BlY2lhbEJyZWFrcG9pbnQ7CiAgICAgQnJlYWtwb2ludElEIG1fcGF1c2luZ0JyZWFrcG9p
bnRJRDsKLSAgICBCcmVha3BvaW50SURUb0JyZWFrcG9pbnRNYXAgbV9icmVha3BvaW50SURUb0Jy
ZWFrcG9pbnQ7Ci0gICAgU291cmNlSURUb0JyZWFrcG9pbnRzTWFwIG1fc291cmNlSURUb0JyZWFr
cG9pbnRzOworCisgICAgdW5zaWduZWQgbV9uZXh0UHJvYmVTYW1wbGVJZCB7IDEgfTsKKyAgICB1
bnNpZ25lZCBtX2N1cnJlbnRQcm9iZUJhdGNoSWQgeyAwIH07CiAKICAgICBSZWZQdHI8SlNDOjpE
ZWJ1Z2dlckNhbGxGcmFtZT4gbV9jdXJyZW50RGVidWdnZXJDYWxsRnJhbWU7CiAKKyAgICBIYXNo
U2V0PE9ic2VydmVyKj4gbV9vYnNlcnZlcnM7CisgICAgYm9vbCBtX2Rpc3BhdGNoaW5nRnVuY3Rp
b25Ub09ic2VydmVycyB7IGZhbHNlIH07CisKICAgICBQcm9maWxpbmdDbGllbnQqIG1fcHJvZmls
aW5nQ2xpZW50IHsgbnVsbHB0ciB9OwogCisgICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdn
ZXJFdmVudHMgeyB0cnVlIH07CisKICAgICBmcmllbmQgY2xhc3MgRGVidWdnZXJQYXVzZWRTY29w
ZTsKICAgICBmcmllbmQgY2xhc3MgVGVtcG9yYXJ5UGF1c2VkU3RhdGU7CiAgICAgZnJpZW5kIGNs
YXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZWJ1Z2dlci9EZWJ1Z2dlclByaW1pdGl2ZXMuaAppbmRleCA1ZmI2ZThhNjM5NjNhMmZmMWYy
NmNjNzQ0YzAyYTkyODA0NjFkYjA0Li40MjU2M2FjZjNlMmZiZjllMzNjMGY1NDBiYWQ1N2MzNDMw
NTY2OGVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGVidWdnZXIvRGVidWdn
ZXJQcmltaXRpdmVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RlYnVnZ2VyL0RlYnVn
Z2VyUHJpbWl0aXZlcy5oCkBAIC0yOSwxMCArMjksMTMgQEAKIAogbmFtZXNwYWNlIEpTQyB7CiAK
LXR5cGVkZWYgc2l6ZV90IFNvdXJjZUlEOwotc3RhdGljIGNvbnN0ZXhwciBTb3VyY2VJRCBub1Nv
dXJjZUlEID0gMDsKK3VzaW5nIFNvdXJjZUlEID0gc2l6ZV90OworY29uc3RleHByIFNvdXJjZUlE
IG5vU291cmNlSUQgPSAwOwogCi10eXBlZGVmIHNpemVfdCBCcmVha3BvaW50SUQ7Ci1zdGF0aWMg
Y29uc3RleHByIEJyZWFrcG9pbnRJRCBub0JyZWFrcG9pbnRJRCA9IDA7Cit1c2luZyBCcmVha3Bv
aW50SUQgPSBzaXplX3Q7Citjb25zdGV4cHIgQnJlYWtwb2ludElEIG5vQnJlYWtwb2ludElEID0g
MDsKKwordXNpbmcgQnJlYWtwb2ludEFjdGlvbklEID0gaW50OworY29uc3RleHByIEJyZWFrcG9p
bnRBY3Rpb25JRCBub0JyZWFrcG9pbnRBY3Rpb25JRCA9IDA7CiAKIH0gLy8gbmFtZXNwYWNlIEpT
QwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JF
bnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JF
bnZpcm9ubWVudC5oCmluZGV4IDIxMDE5ZWRhMWQwYzRmNzc4M2RmYWM2ZGRlNTc1ODZlNGQ3MWZl
NmUuLmM1YjEyNmU4MDU2MWY3MDZkNWYzYzc4YTgyMWQ2ZWMxZTVjOWM0OTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRW52aXJvbm1lbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvckVudmlyb25tZW50
LmgKQEAgLTMyLDYgKzMyLDcgQEAgY2xhc3MgU3RvcHdhdGNoOwogfQogCiBuYW1lc3BhY2UgSlND
IHsKK2NsYXNzIERlYnVnZ2VyOwogY2xhc3MgRXhjZXB0aW9uOwogY2xhc3MgU291cmNlQ29kZTsK
IGNsYXNzIFZNOwpAQCAtMzksNyArNDAsNiBAQCBjbGFzcyBWTTsKIAogbmFtZXNwYWNlIEluc3Bl
Y3RvciB7CiAKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBKU0M6OkpTVmFsdWUg
KCpJbnNwZWN0b3JGdW5jdGlvbkNhbGxIYW5kbGVyKShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTQzo6SlNWYWx1ZSBmdW5jdGlvbk9iamVjdCwgY29uc3QgSlNDOjpDYWxsRGF0
YSYgY2FsbERhdGEsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUsIGNvbnN0IEpTQzo6QXJnTGlzdCYg
YXJncywgTmFrZWRQdHI8SlNDOjpFeGNlcHRpb24+JiByZXR1cm5lZEV4Y2VwdGlvbik7CiB0eXBl
ZGVmIEpTQzo6SlNWYWx1ZSAoKkluc3BlY3RvckV2YWx1YXRlSGFuZGxlcikoSlNDOjpKU0dsb2Jh
bE9iamVjdCosIGNvbnN0IEpTQzo6U291cmNlQ29kZSYsIEpTQzo6SlNWYWx1ZSB0aGlzVmFsdWUs
IE5ha2VkUHRyPEpTQzo6RXhjZXB0aW9uPiYgcmV0dXJuZWRFeGNlcHRpb24pOwogCkBAIC01Miw3
ICs1Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEluc3BlY3RvckV2YWx1YXRlSGFuZGxlciBl
dmFsdWF0ZUhhbmRsZXIoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGZyb250ZW5kSW5p
dGlhbGl6ZWQoKSA9IDA7CiAgICAgdmlydHVhbCBXVEY6OlN0b3B3YXRjaCYgZXhlY3V0aW9uU3Rv
cHdhdGNoKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlw
dERlYnVnU2VydmVyKCkgPSAwOworICAgIHZpcnR1YWwgSlNDOjpEZWJ1Z2dlciYgc2NyaXB0RGVi
dWdTZXJ2ZXIoKSA9IDA7CiAgICAgdmlydHVhbCBKU0M6OlZNJiB2bSgpID0gMDsKIH07CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RT
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDRmZWE0ODE4NWI0M2I0MmNj
NmRiZGE3NDE4ZjU0ZWZiZDI0OWNmZjQuLmMyZjcwYzdkMGNjODI5OWY4NmU1MjJiZjc4YTk1OTZh
MmY4MGRhMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtMzUs
MTggKzM1LDIyIEBAIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsK
IAogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6SlNHbG9iYWxPYmplY3RTY3JpcHRE
ZWJ1Z1NlcnZlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQotICAgIDogU2NyaXB0RGVi
dWdTZXJ2ZXIoZ2xvYmFsT2JqZWN0LnZtKCkpCisgICAgOiBEZWJ1Z2dlcihnbG9iYWxPYmplY3Qu
dm0oKSkKICAgICAsIG1fZ2xvYmFsT2JqZWN0KGdsb2JhbE9iamVjdCkKIHsKIH0KIAogdm9pZCBK
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjphdHRhY2hEZWJ1Z2dlcigpCiB7CisgICAg
SlNDOjpEZWJ1Z2dlcjo6YXR0YWNoRGVidWdnZXIoKTsKKwogICAgIGF0dGFjaCgmbV9nbG9iYWxP
YmplY3QpOwogfQogCiB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmRldGFj
aERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpk
ZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKKwogICAgIGRldGFjaCgmbV9nbG9iYWxP
YmplY3QsIGlzQmVpbmdEZXN0cm95ZWQgPyBEZWJ1Z2dlcjo6R2xvYmFsT2JqZWN0SXNEZXN0cnVj
dGluZyA6IERlYnVnZ2VyOjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24pOwogICAgIGlmICgh
aXNCZWluZ0Rlc3Ryb3llZCkKICAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKQEAg
LTU0LDEwICs1OCwxMiBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIAogdm9pZCBKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpCiB7CisgICAgSlND
OjpEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKTsKKwogICAgIC8vIERyb3AgYWxs
IGxvY2tzIHNvIGFub3RoZXIgdGhyZWFkIGNhbiB3b3JrIGluIHRoZSBWTSB3aGlsZSB3ZSBhcmUg
bmVzdGVkLgogICAgIEpTQzo6SlNMb2NrOjpEcm9wQWxsTG9ja3MgZHJvcEFsbExvY2tzKCZtX2ds
b2JhbE9iamVjdC52bSgpKTsKIAotICAgIHdoaWxlICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKSB7CisgICAgd2hpbGUgKCFkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpIHsK
ICAgICAgICAgaWYgKFJ1bkxvb3A6OmN5Y2xlKEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2
ZXI6OnJ1bkxvb3BNb2RlKCkpID09IFJ1bkxvb3A6OkN5Y2xlUmVzdWx0OjpTdG9wKQogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaAppbmRl
eCBkYWFiY2Y3NjRlMTdkMWVkNmRjZjc2Y2M1OWZjMzllN2ViOWU3ODVlLi41NzcxYTE4Nzk3ZGU3
ODVkYzM1YjhjMjg1OTE1ZjhlMGMzYjljY2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIuaApAQCAtMjUsMTIgKzI1LDEyIEBACiAKICNwcmFnbWEgb25jZQogCi0jaW5jbHVkZSAi
U2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgogI2luY2x1ZGUgPHd0
Zi9SdW5Mb29wLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgewogCi1jbGFzcyBKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVibGljIFNjcmlwdERlYnVnU2VydmVyIHsK
K2NsYXNzIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSlND
OjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcik7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CkBA
IC00MiwxOCArNDIsMTAgQEAgcHVibGljOgogICAgIHN0YXRpYyBSdW5Mb29wTW9kZSBydW5Mb29w
TW9kZSgpOwogCiBwcml2YXRlOgorICAgIC8vIEpTQzo6RGVidWdnZXIKICAgICB2b2lkIGF0dGFj
aERlYnVnZ2VyKCkgZmluYWw7CiAgICAgdm9pZCBkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdE
ZXN0cm95ZWQpIGZpbmFsOwotCi0gICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0
KikgZmluYWwgeyB9Ci0gICAgdm9pZCBkaWRDb250aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikg
ZmluYWwgeyB9CiAgICAgdm9pZCBydW5FdmVudExvb3BXaGlsZVBhdXNlZCgpIGZpbmFsOwotICAg
IGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBmaW5hbCB7
IHJldHVybiBmYWxzZTsgfQotCi0gICAgLy8gTk9URTogQ3VycmVudGx5IGFsbCBleGNlcHRpb25z
IGFyZSByZXBvcnRlZCBhdCB0aGUgQVBJIGJvdW5kYXJ5IHRocm91Z2ggcmVwb3J0QVBJRXhjZXB0
aW9uLgotICAgIC8vIFVudGlsIGEgdGltZSBjb21lcyB3aGVyZSBhbiBleGNlcHRpb24gY2FuIGJl
IGNhdXNlZCBvdXRzaWRlIG9mIHRoZSBBUEkgKGUuZy4gc2V0VGltZW91dAotICAgIC8vIG9yIHNv
bWUgb3RoZXIgYXN5bmMgb3BlcmF0aW9uIGluIGEgcHVyZSBKU0NvbnRleHQpIHdlIGNhbiBpZ25v
cmUgZXhjZXB0aW9ucyByZXBvcnRlZCBoZXJlLgotICAgIHZvaWQgcmVwb3J0RXhjZXB0aW9uKEpT
Qzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkV4Y2VwdGlvbiopIGNvbnN0IGZpbmFsIHsgfQogCiAg
ICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7CiB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNTg2MDQxNzk2YTRlYjdkYmNjOGNiYjk3ODRkYzcxYTIxYTA0
MWIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaAorKysgL2Rldi9u
dWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAq
IGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0
aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIEluc3BlY3RvciB7Ci0KLXR5
cGVkZWYgZW51bSB7Ci0gICAgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVMb2csCi0gICAgU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZSwKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0
aW9uVHlwZVNvdW5kLAotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlUHJvYmUKLX0gU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGU7Ci0KLXN0cnVjdCBTY3JpcHRCcmVha3BvaW50QWN0aW9u
IHsKLSAgICBTY3JpcHRCcmVha3BvaW50QWN0aW9uKFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBl
IHR5cGUsIGludCBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGEpCi0gICAgICAgIDogdHlw
ZSh0eXBlKQotICAgICAgICAsIGlkZW50aWZpZXIoaWRlbnRpZmllcikKLSAgICAgICAgLCBkYXRh
KGRhdGEpCi0gICAgewotICAgIH0KLQotICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlIHR5
cGU7Ci0gICAgaW50IGlkZW50aWZpZXI7Ci0gICAgU3RyaW5nIGRhdGE7Ci19OwotCi10eXBlZGVm
IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiBCcmVha3BvaW50QWN0aW9uczsKLQotc3Ry
dWN0IFNjcmlwdEJyZWFrcG9pbnQgewotICAgIFNjcmlwdEJyZWFrcG9pbnQoKQotICAgIHsKLSAg
ICB9Ci0KLSAgICBTY3JpcHRCcmVha3BvaW50KGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVt
YmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgYm9vbCBhdXRvQ29udGludWUsIHVuc2lnbmVk
IGlnbm9yZUNvdW50KQotICAgICAgICA6IGxpbmVOdW1iZXIobGluZU51bWJlcikKLSAgICAgICAg
LCBjb2x1bW5OdW1iZXIoY29sdW1uTnVtYmVyKQotICAgICAgICAsIGNvbmRpdGlvbihjb25kaXRp
b24pCi0gICAgICAgICwgYXV0b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25v
cmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7Ci0gICAgfQotCi0gICAgU2NyaXB0QnJlYWtwb2lu
dChpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24sIEJyZWFrcG9pbnRBY3Rpb25zJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgdW5zaWdu
ZWQgaWdub3JlQ291bnQpCi0gICAgICAgIDogbGluZU51bWJlcihsaW5lTnVtYmVyKQotICAgICAg
ICAsIGNvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCi0gICAgICAgICwgY29uZGl0aW9uKGNvbmRp
dGlvbikKLSAgICAgICAgLCBhY3Rpb25zKGFjdGlvbnMpCi0gICAgICAgICwgYXV0b0NvbnRpbnVl
KGF1dG9Db250aW51ZSkKLSAgICAgICAgLCBpZ25vcmVDb3VudChpZ25vcmVDb3VudCkKLSAgICB7
Ci0gICAgfQotCi0gICAgaW50IGxpbmVOdW1iZXIgeyAwIH07Ci0gICAgaW50IGNvbHVtbk51bWJl
ciB7IDAgfTsKLSAgICBTdHJpbmcgY29uZGl0aW9uOwotICAgIEJyZWFrcG9pbnRBY3Rpb25zIGFj
dGlvbnM7Ci0gICAgYm9vbCBhdXRvQ29udGludWUgeyBmYWxzZSB9OwotICAgIHVuc2lnbmVkIGln
bm9yZUNvdW50IHsgMCB9OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5o
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZDhiZWY0MGVmYmMyYjA3YWE2ZTdkNTZk
ZjA4ZWUxNThmZDhiMDEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5l
ci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAi
RGVidWdnZXIuaCIKLSNpbmNsdWRlICJTb3VyY2VQcm92aWRlci5oIgotI2luY2x1ZGUgPHd0Zi90
ZXh0L1dURlN0cmluZy5oPgotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotc3RydWN0IFNjcmlw
dEJyZWFrcG9pbnRBY3Rpb247Ci0KLWNsYXNzIFNjcmlwdERlYnVnTGlzdGVuZXIgewotcHVibGlj
OgotICAgIHN0cnVjdCBTY3JpcHQgewotICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBTdHJp
bmcgc291cmNlOwotICAgICAgICBTdHJpbmcgc291cmNlVVJMOwotICAgICAgICBTdHJpbmcgc291
cmNlTWFwcGluZ1VSTDsKLSAgICAgICAgUmVmUHRyPEpTQzo6U291cmNlUHJvdmlkZXI+IHNvdXJj
ZVByb3ZpZGVyOwotICAgICAgICBpbnQgc3RhcnRMaW5lIHswfTsKLSAgICAgICAgaW50IHN0YXJ0
Q29sdW1uIHswfTsKLSAgICAgICAgaW50IGVuZExpbmUgezB9OwotICAgICAgICBpbnQgZW5kQ29s
dW1uIHswfTsKLSAgICAgICAgYm9vbCBpc0NvbnRlbnRTY3JpcHQge2ZhbHNlfTsKLSAgICB9Owot
Ci0gICAgdmlydHVhbCB+U2NyaXB0RGVidWdMaXN0ZW5lcigpIHsgfQotCi0gICAgdmlydHVhbCB2
b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdCYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgZmFpbGVkVG9QYXJzZVNvdXJjZShjb25zdCBTdHJpbmcmIHVybCwgY29u
c3QgU3RyaW5nJiBkYXRhLCBpbnQgZmlyc3RMaW5lLCBpbnQgZXJyb3JMaW5lLCBjb25zdCBTdHJp
bmcmIGVycm9yTWVzc2FnZSkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpID0gMDsKLQotICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVl
IGNhbGxGcmFtZXMsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb24pID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29udGludWUoKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlv
bkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoaW50IGJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVyKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgY29uc3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVuc2lnbmVkIGJh
dGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgcmVzdWx0KSA9IDA7Ci19Owot
Ci19IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDhkZWQxMjk1Zjk0MzY4NzhjNzNlOWNlZGI2NjEzMTIzZTQyMjFkZGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKKysrIC9kZXYvbnVsbApAQCAt
MSwzMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSwgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAt
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAy
MDEzIFVuaXZlcnNpdHkgb2YgV2FzaGluZ3Rvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBs
ZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRP
UlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
Ci0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcu
aCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1NlcnZlci5oIgotCi0jaW5jbHVkZSAiRGVidWdnZXJD
YWxsRnJhbWUuaCIKLSNpbmNsdWRlICJEZWJ1Z2dlclNjb3BlLmgiCi0jaW5jbHVkZSAiRXhjZXB0
aW9uLmgiCi0jaW5jbHVkZSAiSlNKYXZhU2NyaXB0Q2FsbEZyYW1lLmgiCi0jaW5jbHVkZSAiSmF2
YVNjcmlwdENhbGxGcmFtZS5oIgotI2luY2x1ZGUgIlNvdXJjZVByb3ZpZGVyLmgiCi0jaW5jbHVk
ZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1NldEZvclNjb3BlLmg+Ci0K
LW5hbWVzcGFjZSBJbnNwZWN0b3IgewotCi11c2luZyBuYW1lc3BhY2UgSlNDOwotCi1TY3JpcHRE
ZWJ1Z1NlcnZlcjo6U2NyaXB0RGVidWdTZXJ2ZXIoVk0mIHZtKQotICAgIDogRGVidWdnZXIodm0p
Ci17Ci19Ci0KLVNjcmlwdERlYnVnU2VydmVyOjp+U2NyaXB0RGVidWdTZXJ2ZXIoKQotewotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpzZXRCcmVha3BvaW50QWN0aW9ucyhCcmVha3BvaW50
SUQgaWQsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnQmIHNjcmlwdEJyZWFrcG9pbnQpCi17Ci0gICAg
QVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKLSAgICBBU1NFUlQoIW1fYnJlYWtwb2ludElE
VG9BY3Rpb25zLmNvbnRhaW5zKGlkKSk7Ci0KLSAgICBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5z
ZXQoaWQsIHNjcmlwdEJyZWFrcG9pbnQuYWN0aW9ucyk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdT
ZXJ2ZXI6OnJlbW92ZUJyZWFrcG9pbnRBY3Rpb25zKEJyZWFrcG9pbnRJRCBpZCkKLXsKLSAgICBB
U1NFUlQoaWQgIT0gbm9CcmVha3BvaW50SUQpOwotCi0gICAgbV9icmVha3BvaW50SURUb0FjdGlv
bnMucmVtb3ZlKGlkKTsKLX0KLQotY29uc3QgQnJlYWtwb2ludEFjdGlvbnMmIFNjcmlwdERlYnVn
U2VydmVyOjpnZXRBY3Rpb25zRm9yQnJlYWtwb2ludChCcmVha3BvaW50SUQgaWQpCi17Ci0gICAg
QVNTRVJUKGlkICE9IG5vQnJlYWtwb2ludElEKTsKLQotICAgIGF1dG8gZW50cnkgPSBtX2JyZWFr
cG9pbnRJRFRvQWN0aW9ucy5maW5kKGlkKTsKLSAgICBpZiAoZW50cnkgIT0gbV9icmVha3BvaW50
SURUb0FjdGlvbnMuZW5kKCkpCi0gICAgICAgIHJldHVybiBlbnRyeS0+dmFsdWU7Ci0KLSAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8QnJlYWtwb2ludEFjdGlvbnM+IGVtcHR5QWN0aW9uVmVjdG9y
ID0gQnJlYWtwb2ludEFjdGlvbnMoKTsKLSAgICByZXR1cm4gZW1wdHlBY3Rpb25WZWN0b3I7Ci19
Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6OmNsZWFyQnJlYWtwb2ludEFjdGlvbnMoKQotewot
ICAgIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zLmNsZWFyKCk7Ci19Ci0KLWJvb2wgU2NyaXB0RGVi
dWdTZXJ2ZXI6OmV2YWx1YXRlQnJlYWtwb2ludEFjdGlvbihjb25zdCBTY3JpcHRCcmVha3BvaW50
QWN0aW9uJiBicmVha3BvaW50QWN0aW9uKQotewotICAgIERlYnVnZ2VyQ2FsbEZyYW1lJiBkZWJ1
Z2dlckNhbGxGcmFtZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotCi0gICAgc3dpdGNo
IChicmVha3BvaW50QWN0aW9uLnR5cGUpIHsKLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rp
b25UeXBlTG9nOgotICAgICAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3Jp
cHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICAgICAgbGlzdGVuZXIuYnJlYWtw
b2ludEFjdGlvbkxvZyhkZWJ1Z2dlckNhbGxGcmFtZS5nbG9iYWxPYmplY3QoKSwgYnJlYWtwb2lu
dEFjdGlvbi5kYXRhKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBT
Y3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZUV2YWx1YXRlOiB7Ci0gICAgICAgIE5ha2VkUHRyPEV4
Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBKU09iamVjdCogc2NvcGVFeHRlbnNpb25PYmpl
Y3QgPSBudWxscHRyOwotICAgICAgICBkZWJ1Z2dlckNhbGxGcmFtZS5ldmFsdWF0ZVdpdGhTY29w
ZUV4dGVuc2lvbihicmVha3BvaW50QWN0aW9uLmRhdGEsIHNjb3BlRXh0ZW5zaW9uT2JqZWN0LCBl
eGNlcHRpb24pOwotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgcmVwb3J0RXhj
ZXB0aW9uKGRlYnVnZ2VyQ2FsbEZyYW1lLmdsb2JhbE9iamVjdCgpLCBleGNlcHRpb24pOwotICAg
ICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBjYXNlIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBl
U291bmQ6Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNjcmlwdERl
YnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci5icmVha3BvaW50
QWN0aW9uU291bmQoYnJlYWtwb2ludEFjdGlvbi5pZGVudGlmaWVyKTsKLSAgICAgICAgfSk7Ci0g
ICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBTY3JpcHRCcmVha3BvaW50QWN0aW9uVHlwZVByb2Jl
OiB7Ci0gICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXhjZXB0aW9uOwotICAgICAgICBKU09i
amVjdCogc2NvcGVFeHRlbnNpb25PYmplY3QgPSBudWxscHRyOwotICAgICAgICBKU1ZhbHVlIHJl
c3VsdCA9IGRlYnVnZ2VyQ2FsbEZyYW1lLmV2YWx1YXRlV2l0aFNjb3BlRXh0ZW5zaW9uKGJyZWFr
cG9pbnRBY3Rpb24uZGF0YSwgc2NvcGVFeHRlbnNpb25PYmplY3QsIGV4Y2VwdGlvbik7Ci0gICAg
ICAgIEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGRlYnVnZ2VyQ2FsbEZyYW1l
Lmdsb2JhbE9iamVjdCgpOwotICAgICAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICAgICAgcmVw
b3J0RXhjZXB0aW9uKGdsb2JhbE9iamVjdCwgZXhjZXB0aW9uKTsKLQotICAgICAgICBkaXNwYXRj
aEZ1bmN0aW9uVG9MaXN0ZW5lcnMoWyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikg
ewotICAgICAgICAgICAgbGlzdGVuZXIuYnJlYWtwb2ludEFjdGlvblByb2JlKGdsb2JhbE9iamVj
dCwgYnJlYWtwb2ludEFjdGlvbiwgbV9jdXJyZW50UHJvYmVCYXRjaElkLCBtX25leHRQcm9iZVNh
bXBsZUlkKyssIGV4Y2VwdGlvbiA/IGV4Y2VwdGlvbi0+dmFsdWUoKSA6IHJlc3VsdCk7Ci0gICAg
ICAgIH0pOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBkZWZhdWx0OgotICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotdm9p
ZCBTY3JpcHREZWJ1Z1NlcnZlcjo6c291cmNlUGFyc2VkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIFNvdXJjZVByb3ZpZGVyKiBzb3VyY2VQcm92aWRlciwgaW50IGVycm9yTGluZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpCi17Ci0gICAgLy8gUHJlZW1wdGl2ZWx5IGNoZWNrIHdo
ZXRoZXIgd2UgY2FuIGRpc3BhdGNoIHNvIHRoYXQgd2UgZG9uJ3QgZG8gYW55IHVubmVjZXNzYXJ5
IGFsbG9jYXRpb25zLgotICAgIGlmICghY2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkp
Ci0gICAgICAgIHJldHVybjsKLQotICAgIGlmIChlcnJvckxpbmUgIT0gLTEpIHsKLSAgICAgICAg
YXV0byBzb3VyY2VVUkwgPSBzb3VyY2VQcm92aWRlci0+c291cmNlVVJMKCk7Ci0gICAgICAgIGF1
dG8gZGF0YSA9IHNvdXJjZVByb3ZpZGVyLT5zb3VyY2UoKS50b1N0cmluZygpOwotICAgICAgICBh
dXRvIGZpcnN0TGluZSA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9saW5lLm9u
ZUJhc2VkSW50KCk7Ci0gICAgICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVycyhbJl0gKFNj
cmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBsaXN0ZW5lci5mYWls
ZWRUb1BhcnNlU291cmNlKHNvdXJjZVVSTCwgZGF0YSwgZmlyc3RMaW5lLCBlcnJvckxpbmUsIGVy
cm9yTWVzc2FnZSk7Ci0gICAgICAgIH0pOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAg
SlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IHNvdXJjZVByb3ZpZGVyLT5hc0lEKCk7Ci0KLSAgICAv
LyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE2Mjc3Mz4gV2ViIEluc3BlY3RvcjogU2lt
cGxpZnkgU2NyaXB0RGVidWdMaXN0ZW5lcjo6U2NyaXB0IHRvIHVzZSBTb3VyY2VQcm92aWRlcgot
ICAgIFNjcmlwdERlYnVnTGlzdGVuZXI6OlNjcmlwdCBzY3JpcHQ7Ci0gICAgc2NyaXB0LnNvdXJj
ZVByb3ZpZGVyID0gc291cmNlUHJvdmlkZXI7Ci0gICAgc2NyaXB0LnVybCA9IHNvdXJjZVByb3Zp
ZGVyLT5zb3VyY2VVUkwoKTsKLSAgICBzY3JpcHQuc291cmNlID0gc291cmNlUHJvdmlkZXItPnNv
dXJjZSgpLnRvU3RyaW5nKCk7Ci0gICAgc2NyaXB0LnN0YXJ0TGluZSA9IHNvdXJjZVByb3ZpZGVy
LT5zdGFydFBvc2l0aW9uKCkubV9saW5lLnplcm9CYXNlZEludCgpOwotICAgIHNjcmlwdC5zdGFy
dENvbHVtbiA9IHNvdXJjZVByb3ZpZGVyLT5zdGFydFBvc2l0aW9uKCkubV9jb2x1bW4uemVyb0Jh
c2VkSW50KCk7Ci0gICAgc2NyaXB0LmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdChn
bG9iYWxPYmplY3QpOwotICAgIHNjcmlwdC5zb3VyY2VVUkwgPSBzb3VyY2VQcm92aWRlci0+c291
cmNlVVJMRGlyZWN0aXZlKCk7Ci0gICAgc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwgPSBzb3VyY2VQ
cm92aWRlci0+c291cmNlTWFwcGluZ1VSTERpcmVjdGl2ZSgpOwotCi0gICAgaW50IHNvdXJjZUxl
bmd0aCA9IHNjcmlwdC5zb3VyY2UubGVuZ3RoKCk7Ci0gICAgaW50IGxpbmVDb3VudCA9IDE7Ci0g
ICAgaW50IGxhc3RMaW5lU3RhcnQgPSAwOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc291cmNl
TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgaWYgKHNjcmlwdC5zb3VyY2VbaV0gPT0gJ1xuJykgewot
ICAgICAgICAgICAgbGluZUNvdW50ICs9IDE7Ci0gICAgICAgICAgICBsYXN0TGluZVN0YXJ0ID0g
aSArIDE7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBzY3JpcHQuZW5kTGluZSA9IHNjcmlwdC5z
dGFydExpbmUgKyBsaW5lQ291bnQgLSAxOwotICAgIGlmIChsaW5lQ291bnQgPT0gMSkKLSAgICAg
ICAgc2NyaXB0LmVuZENvbHVtbiA9IHNjcmlwdC5zdGFydENvbHVtbiArIHNvdXJjZUxlbmd0aDsK
LSAgICBlbHNlCi0gICAgICAgIHNjcmlwdC5lbmRDb2x1bW4gPSBzb3VyY2VMZW5ndGggLSBsYXN0
TGluZVN0YXJ0OwotCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0
RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIuZGlkUGFyc2VTb3Vy
Y2Uoc291cmNlSUQsIHNjcmlwdCk7Ci0gICAgfSk7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2
ZXI6OndpbGxSdW5NaWNyb3Rhc2soKQotewotICAgIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3RlbmVy
cyhbJl0gKFNjcmlwdERlYnVnTGlzdGVuZXImIGxpc3RlbmVyKSB7Ci0gICAgICAgIGxpc3RlbmVy
LndpbGxSdW5NaWNyb3Rhc2soKTsKLSAgICB9KTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZl
cjo6ZGlkUnVuTWljcm90YXNrKCkKLXsKLSAgICBkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMo
WyZdIChTY3JpcHREZWJ1Z0xpc3RlbmVyJiBsaXN0ZW5lcikgewotICAgICAgICBsaXN0ZW5lci5k
aWRSdW5NaWNyb3Rhc2soKTsKLSAgICB9KTsKLX0KLQotYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6
Y2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkgY29uc3QKLXsKLSAgICBpZiAobV9jYWxs
aW5nTGlzdGVuZXJzKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fbGlzdGVuZXJz
LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpkaXNwYXRjaEZ1bmN0aW9uVG9MaXN0ZW5lcnMoRnVu
Y3Rpb248dm9pZChTY3JpcHREZWJ1Z0xpc3RlbmVyJik+IGNhbGxiYWNrKQotewotICAgIGlmICgh
Y2FuRGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKCkpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFNldEZvclNjb3BlPGJvb2w+IGNoYW5nZShtX2NhbGxpbmdMaXN0ZW5lcnMsIHRydWUpOwotCi0g
ICAgZm9yIChhdXRvKiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCi0gICAg
ICAgIGNhbGxiYWNrKCpsaXN0ZW5lcik7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Om5v
dGlmeURvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMoKQotewotICAgIG1fZG9uZVByb2Nlc3Np
bmdEZWJ1Z2dlckV2ZW50cyA9IHRydWU7Ci19Ci0KLXZvaWQgU2NyaXB0RGVidWdTZXJ2ZXI6Omhh
bmRsZUJyZWFrcG9pbnRIaXQoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBjb25z
dCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCi17Ci0gICAgQVNTRVJUKGlzQXR0YWNoZWQo
Z2xvYmFsT2JqZWN0KSk7Ci0KLSAgICBtX2N1cnJlbnRQcm9iZUJhdGNoSWQrKzsKLQotICAgIGF1
dG8gZW50cnkgPSBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5maW5kKGJyZWFrcG9pbnQuaWQpOwot
ICAgIGlmIChlbnRyeSAhPSBtX2JyZWFrcG9pbnRJRFRvQWN0aW9ucy5lbmQoKSkgewotICAgICAg
ICBCcmVha3BvaW50QWN0aW9ucyBhY3Rpb25zID0gZW50cnktPnZhbHVlOwotICAgICAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IGFjdGlvbnMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGlm
ICghZXZhbHVhdGVCcmVha3BvaW50QWN0aW9uKGFjdGlvbnNbaV0pKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLSAgICAgICAgICAgIGlmICghaXNBdHRhY2hlZChnbG9iYWxPYmplY3QpKQotICAg
ICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLX0KLQotdm9pZCBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6aGFuZGxlRXhjZXB0aW9uSW5CcmVha3BvaW50Q29uZGl0aW9uKEpTQzo6SlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpFeGNlcHRpb24qIGV4Y2VwdGlvbikgY29u
c3QKLXsKLSAgICByZXBvcnRFeGNlcHRpb24oZ2xvYmFsT2JqZWN0LCBleGNlcHRpb24pOwotfQot
Ci12b2lkIFNjcmlwdERlYnVnU2VydmVyOjpoYW5kbGVQYXVzZShKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBEZWJ1Z2dlcjo6UmVhc29uRm9yUGF1c2UpCi17Ci0gICAgZGlzcGF0Y2hGdW5j
dGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAg
ICAgICAgQVNTRVJUKGlzUGF1c2VkKCkpOwotICAgICAgICBhdXRvJiBkZWJ1Z2dlckNhbGxGcmFt
ZSA9IGN1cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOwotICAgICAgICBhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBkZWJ1Z2dlckNhbGxGcmFtZS5zY29wZSgpLT5nbG9iYWxPYmplY3QoKTsKLSAgICAgICAg
YXV0byBqc0NhbGxGcmFtZSA9IHRvSlMoZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QsIEphdmFT
Y3JpcHRDYWxsRnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSkucHRyKCkpOwotICAgICAg
ICBsaXN0ZW5lci5kaWRQYXVzZShnbG9iYWxPYmplY3QsIGpzQ2FsbEZyYW1lLCBleGNlcHRpb25P
ckNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCkpOwotICAgIH0pOwotCi0gICAgZGlkUGF1c2UoZ2xv
YmFsT2JqZWN0KTsKLQotICAgIG1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyA9IGZhbHNl
OwotICAgIHJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7Ci0KLSAgICBkaWRDb250aW51ZShnbG9i
YWxPYmplY3QpOwotCi0gICAgZGlzcGF0Y2hGdW5jdGlvblRvTGlzdGVuZXJzKFsmXSAoU2NyaXB0
RGVidWdMaXN0ZW5lciYgbGlzdGVuZXIpIHsKLSAgICAgICAgbGlzdGVuZXIuZGlkQ29udGludWUo
KTsKLSAgICB9KTsKLX0KLQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2Ny
aXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCi17Ci0gICAgQVNTRVJUKGxpc3RlbmVyKTsKLQot
ICAgIGJvb2wgd2FzRW1wdHkgPSBtX2xpc3RlbmVycy5pc0VtcHR5KCk7Ci0gICAgbV9saXN0ZW5l
cnMuYWRkKGxpc3RlbmVyKTsKLQotICAgIC8vIEZpcnN0IGxpc3RlbmVyLiBBdHRhY2ggdGhlIGRl
YnVnZ2VyLgotICAgIGlmICh3YXNFbXB0eSkKLSAgICAgICAgYXR0YWNoRGVidWdnZXIoKTsKLX0K
LQotdm9pZCBTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKLXsKLSAgICBBU1NFUlQobGlz
dGVuZXIpOwotCi0gICAgbV9saXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLQotICAgIC8vIExh
c3QgbGlzdGVuZXIuIERldGFjaCB0aGUgZGVidWdnZXIuCi0gICAgaWYgKG1fbGlzdGVuZXJzLmlz
RW1wdHkoKSkKLSAgICAgICAgZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ryb3llZCk7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSBTY3JpcHREZWJ1Z1NlcnZlcjo6ZXhjZXB0aW9uT3JDYXVnaHRWYWx1ZShK
U0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCi17Ci0gICAgaWYgKHJlYXNvbkZvclBh
dXNlKCkgPT0gUGF1c2VkRm9yRXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gY3VycmVudEV4Y2Vw
dGlvbigpOwotCi0gICAgZm9yIChSZWZQdHI8RGVidWdnZXJDYWxsRnJhbWU+IGZyYW1lID0gJmN1
cnJlbnREZWJ1Z2dlckNhbGxGcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+Y2FsbGVyRnJh
bWUoKSkgewotICAgICAgICBEZWJ1Z2dlclNjb3BlJiBzY29wZSA9ICpmcmFtZS0+c2NvcGUoKTsK
LSAgICAgICAgaWYgKHNjb3BlLmlzQ2F0Y2hTY29wZSgpKQotICAgICAgICAgICAgcmV0dXJuIHNj
b3BlLmNhdWdodFZhbHVlKGdsb2JhbE9iamVjdCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHsgfTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDE3YzExMGQ3NGMxMTMzYWI0ZmNmMzFmZmM0YjI1MjgwZmVkOTJiYzcuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oCisrKyAvZGV2L251bGwKQEAgLTEs
MTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMTMsIDIwMTQgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMTEgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAg
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
LSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0g
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
Ci0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0g
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRGVidWdnZXIuaCIK
LSNpbmNsdWRlICJTY3JpcHRCcmVha3BvaW50LmgiCi0jaW5jbHVkZSAiU2NyaXB0RGVidWdMaXN0
ZW5lci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+Ci0jaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJp
bmcuaD4KLQotbmFtZXNwYWNlIEpTQyB7Ci1jbGFzcyBDYWxsRnJhbWU7Ci1jbGFzcyBKU0dsb2Jh
bE9iamVjdDsKLWNsYXNzIFZNOwotfQotCi1uYW1lc3BhY2UgSW5zcGVjdG9yIHsKLQotY2xhc3Mg
SlNfRVhQT1JUX1BSSVZBVEUgU2NyaXB0RGVidWdTZXJ2ZXIgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dl
ciB7Ci0gICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoU2NyaXB0RGVidWdTZXJ2ZXIpOwotICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwotcHVibGljOgotCi0gICAgLy8gRklYTUU6IE1vdmUgQnJl
YWtwb2ludEFjdGlvbiBoYW5kbGluZyBpbnRvIEpTQzo6RGVidWdnZXIgb3IgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC4KLSAgICB2b2lkIHNldEJyZWFrcG9pbnRBY3Rpb25zKEpTQzo6QnJlYWtwb2lu
dElELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7Ci0gICAgdm9pZCByZW1vdmVCcmVha3BvaW50
QWN0aW9ucyhKU0M6OkJyZWFrcG9pbnRJRCk7Ci0gICAgdm9pZCBjbGVhckJyZWFrcG9pbnRBY3Rp
b25zKCk7Ci0KLSAgICBjb25zdCBCcmVha3BvaW50QWN0aW9ucyYgZ2V0QWN0aW9uc0ZvckJyZWFr
cG9pbnQoSlNDOjpCcmVha3BvaW50SUQpOwotCi0gICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHRE
ZWJ1Z0xpc3RlbmVyKik7Ci0gICAgdm9pZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3Rl
bmVyKiwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKLQotcHJvdGVjdGVkOgotICAgIFNjcmlwdERl
YnVnU2VydmVyKEpTQzo6Vk0mKTsKLSAgICB+U2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsK
LQotICAgIHZpcnR1YWwgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpID0gMDsKLSAgICB2aXJ0dWFsIHZv
aWQgZGV0YWNoRGVidWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSA9IDA7Ci0KLSAgICB2aXJ0
dWFsIHZvaWQgZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgZGlkQ29udGludWUoSlNDOjpKU0dsb2JhbE9iamVjdCopID0gMDsKLSAgICB2aXJ0dWFs
IHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
Q29udGVudFNjcmlwdChKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0
aW9uKikgY29uc3QgPSAwOwotCi0gICAgYm9vbCBldmFsdWF0ZUJyZWFrcG9pbnRBY3Rpb24oY29u
c3QgU2NyaXB0QnJlYWtwb2ludEFjdGlvbiYpOwotCi0gICAgYm9vbCBjYW5EaXNwYXRjaEZ1bmN0
aW9uVG9MaXN0ZW5lcnMoKSBjb25zdDsKLSAgICB2b2lkIGRpc3BhdGNoRnVuY3Rpb25Ub0xpc3Rl
bmVycyhGdW5jdGlvbjx2b2lkKFNjcmlwdERlYnVnTGlzdGVuZXImKT4gY2FsbGJhY2spOwotCi0g
ICAgYm9vbCBtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMgeyB0cnVlIH07Ci0KLXByaXZh
dGU6Ci0gICAgdHlwZWRlZiBIYXNoTWFwPEpTQzo6QnJlYWtwb2ludElELCBCcmVha3BvaW50QWN0
aW9ucz4gQnJlYWtwb2ludElEVG9BY3Rpb25zTWFwOwotCi0gICAgdm9pZCBzb3VyY2VQYXJzZWQo
SlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6U291cmNlUHJvdmlkZXIqLCBpbnQgZXJyb3JMaW5l
LCBjb25zdCBTdHJpbmcmIGVycm9yTXNnKSBmaW5hbDsKLSAgICB2b2lkIHdpbGxSdW5NaWNyb3Rh
c2soKSBmaW5hbDsKLSAgICB2b2lkIGRpZFJ1bk1pY3JvdGFzaygpIGZpbmFsOwotICAgIHZvaWQg
aGFuZGxlQnJlYWtwb2ludEhpdChKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgSlNDOjpCcmVh
a3BvaW50JikgZmluYWw7Ci0gICAgdm9pZCBoYW5kbGVFeGNlcHRpb25JbkJyZWFrcG9pbnRDb25k
aXRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3QgZmluYWw7
Ci0gICAgdm9pZCBoYW5kbGVQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpEZWJ1Z2dl
cjo6UmVhc29uRm9yUGF1c2UpIGZpbmFsOwotICAgIHZvaWQgbm90aWZ5RG9uZVByb2Nlc3NpbmdE
ZWJ1Z2dlckV2ZW50cygpIGZpbmFsOwotCi0gICAgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1
Z2h0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCopOwotCi0gICAgQnJlYWtwb2ludElEVG9BY3Rp
b25zTWFwIG1fYnJlYWtwb2ludElEVG9BY3Rpb25zOwotICAgIEhhc2hTZXQ8U2NyaXB0RGVidWdM
aXN0ZW5lcio+IG1fbGlzdGVuZXJzOwotICAgIGJvb2wgbV9jYWxsaW5nTGlzdGVuZXJzIHsgZmFs
c2UgfTsKLSAgICB1bnNpZ25lZCBtX25leHRQcm9iZVNhbXBsZUlkIHsgMSB9OwotICAgIHVuc2ln
bmVkIG1fY3VycmVudFByb2JlQmF0Y2hJZCB7IDAgfTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIElu
c3BlY3RvcgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAppbmRleCBiZmQ3Nzc0Y2YzZDczNWNk
ZWFlN2ViMTlkMWFlNDUyNDE2NWUzNWM2Li45N2NlYTk0YmQ1YWZhYTY1YWU0MDNhM2QwOTUwNTJl
ZDc5OTI5Mjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBdWRpdEFnZW50LmNwcApAQCAtMjYsMTAgKzI2LDEw
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQXVkaXRBZ2VudC5o
IgogCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkpTTG9jay5oIgogI2luY2x1ZGUgIk9iamVjdENvbnN0cnVjdG9yLmgiCi0jaW5j
bHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0J1aWxkZXIuaD4K
QEAgLTEwNSw5ICsxMDUsOSBAQCB2b2lkIEluc3BlY3RvckF1ZGl0QWdlbnQ6OnJ1bihFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgdGVzdCwgY29ucwogCiAgICAgT3B0aW9u
YWw8aW50PiBzYXZlZFJlc3VsdEluZGV4OwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNl
T25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gbV9zY3Jp
cHREZWJ1Z1NlcnZlci5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCk7CisgICAgYXV0byBwcmV2aW91
c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBtX3NjcmlwdERlYnVnU2VydmVyLnBhdXNlT25FeGNl
cHRpb25zU3RhdGUoKTsKIAotICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKKyAg
ICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoRGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucyk7CiAgICAgbXV0ZUNvbnNvbGUoKTsKIAogICAgIGluamVj
dGVkU2NyaXB0LmV4ZWN1dGUoZXJyb3JTdHJpbmcsIGZ1bmN0aW9uU3RyaW5nLnRvU3RyaW5nKCks
IFdURk1vdmUob3B0aW9ucyksIHJlc3VsdCwgd2FzVGhyb3duLCBzYXZlZFJlc3VsdEluZGV4KTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckF1ZGl0QWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckF1ZGl0QWdlbnQuaAppbmRleCA4M2JjY2E2Mjk3NTQ4ZGUzZjY4MDE5ZGU1ZmY1
MzEzZWY3NGEyNjhjLi4wNmIxYTgzZmQ4MjM1MzYwODAyNjVmOWI5YjIyZjA2NTY5MGNlYzQxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBdWRpdEFnZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yQXVkaXRBZ2VudC5oCkBAIC0zMiwxMSArMzIsMTQgQEAKICNpbmNsdWRlIDx3
dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogCituYW1lc3BhY2Ug
SlNDIHsKK2NsYXNzIERlYnVnZ2VyOworfQorCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAogY2xh
c3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFzcyBT
Y3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFzcyBK
U19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JBdWRpdEFnZW50IDogcHVibGljIEluc3BlY3RvckFn
ZW50QmFzZSwgcHVibGljIEF1ZGl0QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKQEAgLTcxLDcg
Kzc0LDcgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBSZWZQdHI8QXVkaXRCYWNrZW5kRGlz
cGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXIm
IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwotICAgIFNjcmlwdERlYnVnU2VydmVyJiBtX3Njcmlw
dERlYnVnU2VydmVyOworICAgIEpTQzo6RGVidWdnZXImIG1fc2NyaXB0RGVidWdTZXJ2ZXI7CiAK
ICAgICBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiBtX2luamVjdGVkV2ViSW5zcGVjdG9yQXVk
aXRWYWx1ZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDI5YzEz
MGI5NjVjYTI2NTY0MWM0MGY3NTA5OWNmNmViZDI2NDAwNzIuLjJhNGE5ZDQ5NzVkZTBkNmI1NTRh
NTY4NzNkNjZkMjA5YTA1OTNmNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3Bw
CkBAIC0zMiwxMiArMzIsMTYgQEAKIAogI2luY2x1ZGUgIkFzeW5jU3RhY2tUcmFjZS5oIgogI2lu
Y2x1ZGUgIkNvbnRlbnRTZWFyY2hVdGlsaXRpZXMuaCIKKyNpbmNsdWRlICJEZWJ1Z2dlci5oIgor
I2luY2x1ZGUgIkRlYnVnZ2VyU2NvcGUuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdC5oIgog
I2luY2x1ZGUgIkluamVjdGVkU2NyaXB0TWFuYWdlci5oIgorI2luY2x1ZGUgIkpTSmF2YVNjcmlw
dENhbGxGcmFtZS5oIgorI2luY2x1ZGUgIkphdmFTY3JpcHRDYWxsRnJhbWUuaCIKICNpbmNsdWRl
ICJSZWd1bGFyRXhwcmVzc2lvbi5oIgogI2luY2x1ZGUgIlNjcmlwdENhbGxTdGFjay5oIgogI2lu
Y2x1ZGUgIlNjcmlwdENhbGxTdGFja0ZhY3RvcnkuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1Nl
cnZlci5oIgorI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgogI2luY2x1ZGUgPHd0Zi9KU09OVmFs
dWVzLmg+CiAjaW5jbHVkZSA8d3RmL1N0b3B3YXRjaC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtNTAsOSArNTQsOSBAQCBjb25zdCBjaGFyKiBjb25zdCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCA9ICJiYWNrdHJhY2UiOwogLy8gYWNj
b3JkaW5nIHRvIHRoZSBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVyIGFzc2lnbmVkIGJ5IHRo
ZSBmcm9udGVuZC4gQSBicmVha3BvaW50IG1heQogLy8gaGF2ZSBzZXZlcmFsIG9iamVjdCBncm91
cHMsIGFuZCBvYmplY3RzIGZyb20gc2V2ZXJhbCBiYWNrZW5kIGJyZWFrcG9pbnQgYWN0aW9uIGlu
c3RhbmNlcyBtYXkKIC8vIGNyZWF0ZSBvYmplY3RzIGluIHRoZSBzYW1lIGdyb3VwLgotc3RhdGlj
IFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9pbnRBY3Rpb24oY29uc3QgU2NyaXB0QnJlYWtw
b2ludEFjdGlvbiYgYWN0aW9uKQorc3RhdGljIFN0cmluZyBvYmplY3RHcm91cEZvckJyZWFrcG9p
bnRBY3Rpb24oSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgaWQpCiB7Ci0gICAgcmV0dXJuIG1ha2VT
dHJpbmcoImJyZWFrcG9pbnQtYWN0aW9uLSIsIGFjdGlvbi5pZGVudGlmaWVyKTsKKyAgICByZXR1
cm4gbWFrZVN0cmluZygiYnJlYWtwb2ludC1hY3Rpb24tIiwgaWQpOwogfQogCiBzdGF0aWMgYm9v
bCBpc1dlYktpdEluamVjdGVkU2NyaXB0KGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQpAQCAtNjAs
NiArNjQsMTU2IEBAIHN0YXRpYyBib29sIGlzV2ViS2l0SW5qZWN0ZWRTY3JpcHQoY29uc3QgU3Ry
aW5nJiBzb3VyY2VVUkwpCiAgICAgcmV0dXJuIHNvdXJjZVVSTC5zdGFydHNXaXRoKCJfX0luamVj
dGVkU2NyaXB0XyIpICYmIHNvdXJjZVVSTC5lbmRzV2l0aCgiLmpzIik7CiB9CiAKK3N0YXRpYyBP
cHRpb25hbDxKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZT4gYnJlYWtwb2ludEFjdGlvblR5
cGVGb3JTdHJpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHR5cGVT
dHJpbmcpCit7CisgICAgYXV0byB0eXBlID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6SW5zcGVjdG9y
SGVscGVyczo6cGFyc2VFbnVtVmFsdWVGcm9tU3RyaW5nPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlPih0eXBlU3RyaW5nKTsKKyAgICBpZiAoIXR5
cGUpIHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtYWtlU3RyaW5nKCJVbmtub3duIGJyZWFrcG9p
bnQgYWN0aW9uIHR5cGU6ICJfcywgdHlwZVN0cmluZyk7CisgICAgICAgIHJldHVybiBXVEY6Om51
bGxvcHQ7CisgICAgfQorCisgICAgc3dpdGNoICgqdHlwZSkgeworICAgIGNhc2UgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkxvZzoKKyAgICAg
ICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpMb2c7CisKKyAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uOjpUeXBlOjpF
dmFsdWF0ZToKKyAgICAgICAgcmV0dXJuIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uOjpUeXBlOjpF
dmFsdWF0ZTsKKworICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kOgorICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50
OjpBY3Rpb246OlR5cGU6OlNvdW5kOworCisgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpE
ZWJ1Z2dlcjo6QnJlYWtwb2ludEFjdGlvbjo6VHlwZTo6UHJvYmU6CisgICAgICAgIHJldHVybiBK
U0M6OkJyZWFrcG9pbnQ6OkFjdGlvbjo6VHlwZTo6UHJvYmU7CisgICAgfQorCisgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKK30KKwordGVtcGxhdGUg
PHR5cGVuYW1lIFQ+CitzdGF0aWMgVCBwYXJzZUJyZWFrcG9pbnRPcHRpb25zKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5bG9hZCwgRnVuY3Rp
b248VChjb25zdCBTdHJpbmcmLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiwgYm9v
bCwgc2l6ZV90KT4gY2FsbGJhY2spCit7CisgICAgU3RyaW5nIGNvbmRpdGlvbjsKKyAgICBKU0M6
OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3IgYWN0aW9uczsKKyAgICBib29sIGF1dG9Db250aW51
ZSA9IGZhbHNlOworICAgIHNpemVfdCBpZ25vcmVDb3VudCA9IDA7CisKKyAgICBpZiAob3B0aW9u
c1BheWxvYWQpIHsKKyAgICAgICAgb3B0aW9uc1BheWxvYWQtPmdldFN0cmluZygiY29uZGl0aW9u
Il9zLCBjb25kaXRpb24pOworCisgICAgICAgIFJlZlB0cjxKU09OOjpBcnJheT4gYWN0aW9uc1Bh
eWxvYWQ7CisgICAgICAgIG9wdGlvbnNQYXlsb2FkLT5nZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0
aW9uc1BheWxvYWQpOworICAgICAgICBpZiAoYXV0byBjb3VudCA9IGFjdGlvbnNQYXlsb2FkID8g
YWN0aW9uc1BheWxvYWQtPmxlbmd0aCgpIDogMCkgeworICAgICAgICAgICAgYWN0aW9ucy5yZXNl
cnZlQ2FwYWNpdHkoY291bnQpOworCisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgeworICAgICAgICAgICAgICAgIFJlZlB0cjxKU09OOjpPYmplY3Q+IGFj
dGlvbk9iamVjdDsKKyAgICAgICAgICAgICAgICBpZiAoIWFjdGlvbnNQYXlsb2FkLT5nZXQoaSkt
PmFzT2JqZWN0KGFjdGlvbk9iamVjdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiVW5leHBlY3RlZCBub24tb2JqZWN0IGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICAgICBTdHJpbmcgYWN0aW9uVHlwZVN0cmluZzsKKyAgICAgICAgICAgICAgICBpZiAo
IWFjdGlvbk9iamVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCBhY3Rpb25UeXBlU3RyaW5nKSkgewor
ICAgICAgICAgICAgICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHR5cGUgZm9yIGl0ZW0g
aW4gZ2l2ZW4gYWN0aW9ucyJfczsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhdXRvIGFjdGlvblR5cGUgPSBicmVh
a3BvaW50QWN0aW9uVHlwZUZvclN0cmluZyhlcnJvclN0cmluZywgYWN0aW9uVHlwZVN0cmluZyk7
CisgICAgICAgICAgICAgICAgaWYgKCFhY3Rpb25UeXBlKQorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgICAgICAgICAgICAgSlNDOjpCcmVha3BvaW50OjpBY3Rpb24gYWN0
aW9uKCphY3Rpb25UeXBlKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdC0+Z2V0U3Ry
aW5nKCJkYXRhIl9zLCBhY3Rpb24uZGF0YSk7CisKKyAgICAgICAgICAgICAgICAvLyBTcGVjaWZ5
aW5nIGFuIGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRl
IHByb2JlIHNhbXBsZXMKKyAgICAgICAgICAgICAgICAvLyBpbiB0aGUgZnJvbnRlbmQgYWNyb3Nz
IG11bHRpcGxlIGJhY2tlbmQgcHJvYmUgYWN0aW9ucyBhbmQgc2VncmVnYXRlIG9iamVjdCBncm91
cHMuCisgICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKCJpZCJfcywgYWN0
aW9uLmlkKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbnMuYXBwZW5kKFdURk1vdmUoYWN0aW9u
KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBvcHRpb25zUGF5bG9hZC0+
Z2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOworICAgICAgICBvcHRp
b25zUGF5bG9hZC0+Z2V0SW50ZWdlcigiaWdub3JlQ291bnQiX3MsIGlnbm9yZUNvdW50KTsKKyAg
ICB9CisKKyAgICByZXR1cm4gY2FsbGJhY2soY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBh
dXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90
b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSlND
OjpTb3VyY2VJRCBzb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1u
TnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQoreworICAgIHJldHVy
biBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2ludD4+KGVy
cm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwg
SlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRvQ29udGlu
dWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9jb2xCcmVha3BvaW50PiB7
CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBXVEZNb3ZlKGFjdGlvbnMpLCBhdXRvQ29udGludWUs
IGlnbm9yZUNvdW50KTsKKyAgICB9KTsKK30KKworT3B0aW9uYWw8SW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6UHJvdG9jb2xCcmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2Nv
bEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQg
Y29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQoreworICAg
IHJldHVybiBwYXJzZUJyZWFrcG9pbnRPcHRpb25zPE9wdGlvbmFsPFByb3RvY29sQnJlYWtwb2lu
dD4+KGVycm9yU3RyaW5nLCBvcHRpb25zUGF5bG9hZCwgWyZdIChjb25zdCBTdHJpbmcmIGNvbmRp
dGlvbiwgSlNDOjpCcmVha3BvaW50OjpBY3Rpb25zVmVjdG9yJiYgYWN0aW9ucywgYm9vbCBhdXRv
Q29udGludWUsIHNpemVfdCBpZ25vcmVDb3VudCkgLT4gT3B0aW9uYWw8UHJvdG9jb2xCcmVha3Bv
aW50PiB7CisgICAgICAgIHJldHVybiBQcm90b2NvbEJyZWFrcG9pbnQodXJsLCBpc1JlZ2V4LCBs
aW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgV1RGTW92ZShhY3Rpb25zKSwgYXV0
b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAgfSk7Cit9CisKK0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJvdG9jb2xCcmVha3BvaW50KCkgPSBkZWZhdWx0
OworCitJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OlByb3RvY29s
QnJlYWtwb2ludChKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVyLCB1
bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uLCBKU0M6OkJyZWFr
cG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zLCBib29sIGF1dG9Db250aW51ZSwgc2l6ZV90
IGlnbm9yZUNvdW50KQorICAgIDogbV9pZChtYWtlU3RyaW5nKHNvdXJjZUlELCAnOicsIGxpbmVO
dW1iZXIsICc6JywgY29sdW1uTnVtYmVyKSkKKyNpZiBBU1NFUlRfRU5BQkxFRAorICAgICwgbV9z
b3VyY2VJRChzb3VyY2VJRCkKKyNlbmRpZgorICAgICwgbV9saW5lTnVtYmVyKGxpbmVOdW1iZXIp
CisgICAgLCBtX2NvbHVtbk51bWJlcihjb2x1bW5OdW1iZXIpCisgICAgLCBtX2NvbmRpdGlvbihj
b25kaXRpb24pCisgICAgLCBtX2FjdGlvbnMoV1RGTW92ZShhY3Rpb25zKSkKKyAgICAsIG1fYXV0
b0NvbnRpbnVlKGF1dG9Db250aW51ZSkKKyAgICAsIG1faWdub3JlQ291bnQoaWdub3JlQ291bnQp
Cit7Cit9CisKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2ludDo6UHJv
dG9jb2xCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVuc2lnbmVk
IGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRp
b24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJvb2wgYXV0b0Nv
bnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpCisgICAgOiBtX2lkKG1ha2VTdHJpbmcoaXNSZWdl
eCA/ICIvIiA6ICIiLCB1cmwsIGlzUmVnZXggPyAiLyIgOiAiIiwgJzonLCBsaW5lTnVtYmVyLCAn
OicsIGNvbHVtbk51bWJlcikpCisgICAgLCBtX3VybCh1cmwpCisgICAgLCBtX2lzUmVnZXgoaXNS
ZWdleCkKKyAgICAsIG1fbGluZU51bWJlcihsaW5lTnVtYmVyKQorICAgICwgbV9jb2x1bW5OdW1i
ZXIoY29sdW1uTnVtYmVyKQorICAgICwgbV9jb25kaXRpb24oY29uZGl0aW9uKQorICAgICwgbV9h
Y3Rpb25zKFdURk1vdmUoYWN0aW9ucykpCisgICAgLCBtX2F1dG9Db250aW51ZShhdXRvQ29udGlu
dWUpCisgICAgLCBtX2lnbm9yZUNvdW50KGlnbm9yZUNvdW50KQoreworfQorCitSZWY8SlNDOjpC
cmVha3BvaW50PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpQcm90b2NvbEJyZWFrcG9pbnQ6OmNy
ZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9p
bnRJRCwgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCkgY29uc3QKK3sKKyAgICBBU1NFUlQoZGVidWdn
ZXJCcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CisgICAgQVNTRVJUKHNvdXJj
ZUlEICE9IEpTQzo6bm9Tb3VyY2VJRCk7CisgICAgQVNTRVJUKHNvdXJjZUlEID09IG1fc291cmNl
SUQgfHwgbV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOworCisgICAgYXV0byBkZWJ1Z2dl
ckJyZWFrcG9pbnQgPSBKU0M6OkJyZWFrcG9pbnQ6OmNyZWF0ZShkZWJ1Z2dlckJyZWFrcG9pbnRJ
RCwgbV9jb25kaXRpb24sIGNvcHlUb1ZlY3RvcihtX2FjdGlvbnMpLCBtX2F1dG9Db250aW51ZSwg
bV9pZ25vcmVDb3VudCk7CisgICAgZGVidWdnZXJCcmVha3BvaW50LT5saW5rKHNvdXJjZUlELCBt
X2xpbmVOdW1iZXIsIG1fY29sdW1uTnVtYmVyKTsKKyAgICByZXR1cm4gZGVidWdnZXJCcmVha3Bv
aW50OworfQorCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OlByb3RvY29sQnJlYWtwb2lu
dDo6bWF0Y2hlc1NjcmlwdFVSTChjb25zdCBTdHJpbmcmIHNjcmlwdFVSTCkgY29uc3QKK3sKKyAg
ICBBU1NFUlQobV9zb3VyY2VJRCA9PSBKU0M6Om5vU291cmNlSUQpOworCisgICAgaWYgKG1faXNS
ZWdleCkgeworICAgICAgICBKU0M6OllhcnI6OlJlZ3VsYXJFeHByZXNzaW9uIHJlZ2V4KG1fdXJs
KTsKKyAgICAgICAgcmV0dXJuIHJlZ2V4Lm1hdGNoKHNjcmlwdFVSTCkgIT0gLTE7CisgICAgfQor
ICAgIHJldHVybiBtX3VybCA9PSBzY3JpcHRVUkw7Cit9CisKK1JlZlB0cjxKU0M6OkJyZWFrcG9p
bnQ+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRlYnVnZ2VyQnJlYWtwb2ludEZyb21QYXlsb2Fk
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0KiBvcHRpb25zUGF5
bG9hZCkKK3sKKyAgICByZXR1cm4gcGFyc2VCcmVha3BvaW50T3B0aW9uczxSZWZQdHI8SlNDOjpC
cmVha3BvaW50Pj4oZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkLCBbXSAoY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYmIGFjdGlvbnMsIGJv
b2wgYXV0b0NvbnRpbnVlLCBzaXplX3QgaWdub3JlQ291bnQpIHsKKyAgICAgICAgcmV0dXJuIEpT
Qzo6QnJlYWtwb2ludDo6Y3JlYXRlKEpTQzo6bm9CcmVha3BvaW50SUQsIGNvbmRpdGlvbiwgV1RG
TW92ZShhY3Rpb25zKSwgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7CisgICAgfSk7Cit9CisK
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoQWdlbnRDb250
ZXh0JiBjb250ZXh0KQogICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKCJEZWJ1Z2dlciJfcykKICAg
ICAsIG1fZnJvbnRlbmREaXNwYXRjaGVyKG1ha2VVbmlxdWU8RGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI+KGNvbnRleHQuZnJvbnRlbmRSb3V0ZXIpKQpAQCAtODcsNyArMjQxLDcgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKQogewogICAgIG1fZW5hYmxlZCA9IHRydWU7
CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLmFkZExpc3RlbmVyKHRoaXMpOworICAgIG1fc2Ny
aXB0RGVidWdTZXJ2ZXIuYWRkT2JzZXJ2ZXIoKnRoaXMpOwogCiAgICAgZm9yIChhdXRvKiBsaXN0
ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCiAgICAgICAgIGxpc3RlbmVyLT5kZWJ1
Z2dlcldhc0VuYWJsZWQoKTsKQEAgLTEwOCwxNSArMjYyLDEzIEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpCiAgICAgZm9yIChhdXRv
KiBsaXN0ZW5lciA6IGNvcHlUb1ZlY3RvcihtX2xpc3RlbmVycykpCiAgICAgICAgIGxpc3RlbmVy
LT5kZWJ1Z2dlcldhc0Rpc2FibGVkKCk7CiAKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92
ZUxpc3RlbmVyKHRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOworICAgIG1fc2NyaXB0RGVidWdTZXJ2
ZXIucmVtb3ZlT2JzZXJ2ZXIoKnRoaXMsIGlzQmVpbmdEZXN0cm95ZWQpOwogCiAgICAgY2xlYXJJ
bnNwZWN0b3JCcmVha3BvaW50U3RhdGUoKTsKIAogICAgIGlmICghaXNCZWluZ0Rlc3Ryb3llZCkK
ICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5kZWFjdGl2YXRlQnJlYWtwb2ludHMoKTsKIAot
ICAgIEFTU0VSVChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5pc0VtcHR5KCkpOwotCiAgICAgY2xl
YXJBc3luY1N0YWNrVHJhY2VEYXRhKCk7CiAKICAgICBtX3BhdXNlT25Bc3NlcnRpb25GYWlsdXJl
cyA9IGZhbHNlOwpAQCAtMjA2LDE3ICszNTgsMjIgQEAgc3RhdGljIFJlZlB0cjxKU09OOjpPYmpl
Y3Q+IGJ1aWxkQ1NQVmlvbGF0aW9uUGF1c2VSZWFzb24oY29uc3QgU3RyaW5nJiBkaXJlY3RpdmUK
ICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CiB9CiAKLVJlZlB0cjxKU09OOjpP
YmplY3Q+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJ1aWxkQnJlYWtwb2ludFBhdXNlUmVhc29u
KEpTQzo6QnJlYWtwb2ludElEIGRlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIpCitSZWZQdHI8
SlNPTjo6T2JqZWN0PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpidWlsZEJyZWFrcG9pbnRQYXVz
ZVJlYXNvbihKU0M6OkJyZWFrcG9pbnRJRCBkZWJ1Z2dlckJyZWFrcG9pbnRJRCkKIHsKLSAgICBB
U1NFUlQoZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllciAhPSBKU0M6Om5vQnJlYWtwb2ludElE
KTsKLSAgICBhdXRvIGl0ID0gbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0
b3JCcmVha3BvaW50SWRlbnRpZmllci5maW5kKGRlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXIp
OwotICAgIGlmIChpdCA9PSBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZpZXJUb0luc3BlY3Rv
ckJyZWFrcG9pbnRJZGVudGlmaWVyLmVuZCgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICBBU1NFUlQoZGVidWdnZXJCcmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCk7CiAK
LSAgICBhdXRvIHJlYXNvbiA9IFByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludFBhdXNlUmVh
c29uOjpjcmVhdGUoKQotICAgICAgICAuc2V0QnJlYWtwb2ludElkKGl0LT52YWx1ZSkKLSAgICAg
ICAgLnJlbGVhc2UoKTsKLSAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNzb3JzKCk7CisgICAg
Zm9yIChhdXRvJiBbcHJvdG9jb2xCcmVha3BvaW50SUQsIGRlYnVnZ2VyQnJlYWtwb2ludHNdIDog
bV9kZWJ1Z2dlckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQpIHsKKyAgICAgICAg
Zm9yIChhdXRvJiBkZWJ1Z2dlckJyZWFrcG9pbnQgOiBkZWJ1Z2dlckJyZWFrcG9pbnRzKSB7Cisg
ICAgICAgICAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50LT5pZCgpID09IGRlYnVnZ2VyQnJlYWtw
b2ludElEKSB7CisgICAgICAgICAgICAgICAgYXV0byByZWFzb24gPSBQcm90b2NvbDo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRQYXVzZVJlYXNvbjo6Y3JlYXRlKCkKKyAgICAgICAgICAgICAgICAgICAg
LnNldEJyZWFrcG9pbnRJZChwcm90b2NvbEJyZWFrcG9pbnRJRCkKKyAgICAgICAgICAgICAgICAg
ICAgLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVhc29uLT5vcGVuQWNjZXNz
b3JzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAogUmVmUHRyPEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
YnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBjb25zdCBJ
bmplY3RlZFNjcmlwdCYgaW5qZWN0ZWRTY3JpcHQpCkBAIC0yMzQsNyArMzkxLDcgQEAgUmVmUHRy
PEpTT046Ok9iamVjdD4gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnVpbGRFeGNlcHRpb25QYXVz
ZVJlYXNvbihKU0M6OkpTVmEKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpoYW5kbGVD
b25zb2xlQXNzZXJ0KGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKIHsKLSAgICBpZiAoIW1fc2NyaXB0
RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBpZiAoIWJyZWFrcG9pbnRzQWN0
aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3BhdXNlT25Bc3NlcnRpb25GYWls
dXJlcykKQEAgLTI1MSw3ICs0MDgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRp
ZFNjaGVkdWxlQXN5bmNDYWxsKEpTQzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIGlm
ICghbV9hc3luY1N0YWNrVHJhY2VEZXB0aCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFt
X3NjcmlwdERlYnVnU2VydmVyLmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3Bv
aW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8U2NyaXB0Q2FsbFN0YWNr
PiBjYWxsU3RhY2sgPSBjcmVhdGVTY3JpcHRDYWxsU3RhY2soZ2xvYmFsT2JqZWN0LCBtX2FzeW5j
U3RhY2tUcmFjZURlcHRoKTsKQEAgLTMzMywxMDcgKzQ5MCwxNSBAQCB2b2lkIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ6OmRpZERpc3BhdGNoQXN5bmNDYWxsKCkKICAgICAgICAgbV9wZW5kaW5nQXN5
bmNDYWxscy5yZW1vdmUoaWRlbnRpZmllcik7CiB9CiAKLXN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0
PiBidWlsZE9iamVjdEZvckJyZWFrcG9pbnRDb29raWUoY29uc3QgU3RyaW5nJiB1cmwsIGludCBs
aW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyLCBjb25zdCBTdHJpbmcmIGNvbmRpdGlvbiwgUmVm
UHRyPEpTT046OkFycmF5PiYgYWN0aW9ucywgYm9vbCBpc1JlZ2V4LCBib29sIGF1dG9Db250aW51
ZSwgdW5zaWduZWQgaWdub3JlQ291bnQpCitzdGF0aWMgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+IGJ1aWxkRGVidWdnZXJMb2NhdGlvbihjb25zdCBKU0M6OkJyZWFrcG9pbnQm
IGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBSZWY8SlNPTjo6T2JqZWN0PiBicmVha3BvaW50
T2JqZWN0ID0gSlNPTjo6T2JqZWN0OjpjcmVhdGUoKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5z
ZXRTdHJpbmcoInVybCJfcywgdXJsKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJbnRlZ2Vy
KCJsaW5lTnVtYmVyIl9zLCBsaW5lTnVtYmVyKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRJ
bnRlZ2VyKCJjb2x1bW5OdW1iZXIiX3MsIGNvbHVtbk51bWJlcik7Ci0gICAgYnJlYWtwb2ludE9i
amVjdC0+c2V0U3RyaW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0Qm9vbGVhbigiaXNSZWdleCJfcywgaXNSZWdleCk7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0Qm9vbGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOwotICAg
IGJyZWFrcG9pbnRPYmplY3QtPnNldEludGVnZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3Vu
dCk7Ci0KLSAgICBpZiAoYWN0aW9ucykKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0QXJy
YXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotCi0gICAgcmV0dXJuIGJyZWFrcG9pbnRPYmplY3Q7
Ci19Ci0KLXN0YXRpYyBib29sIG1hdGNoZXMoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgcGF0dGVybiwgYm9vbCBpc1JlZ2V4KQotewotICAgIGlmIChpc1JlZ2V4KSB7Ci0gICAgICAg
IEpTQzo6WWFycjo6UmVndWxhckV4cHJlc3Npb24gcmVnZXgocGF0dGVybik7Ci0gICAgICAgIHJl
dHVybiByZWdleC5tYXRjaCh1cmwpICE9IC0xOwotICAgIH0KLSAgICByZXR1cm4gdXJsID09IHBh
dHRlcm47Ci19Ci0KLXN0YXRpYyBib29sIGJyZWFrcG9pbnRBY3Rpb25UeXBlRm9yU3RyaW5nKGNv
bnN0IFN0cmluZyYgdHlwZVN0cmluZywgU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGUqIG91dHB1
dCkKLXsKLSAgICBpZiAodHlwZVN0cmluZyA9PSBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6
Z2V0RW51bUNvbnN0YW50VmFsdWUoUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9u
OjpUeXBlOjpMb2cpKSB7Ci0gICAgICAgICpvdXRwdXQgPSBTY3JpcHRCcmVha3BvaW50QWN0aW9u
VHlwZUxvZzsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5n
ID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90
b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OkV2YWx1YXRlKSkgewotICAg
ICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5cGVFdmFsdWF0ZTsKLSAgICAg
ICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJ
bnNwZWN0b3JIZWxwZXJzOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRBY3Rpb246OlR5cGU6OlNvdW5kKSkgewotICAgICAgICAqb3V0cHV0ID0gU2Ny
aXB0QnJlYWtwb2ludEFjdGlvblR5cGVTb3VuZDsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
fQotICAgIGlmICh0eXBlU3RyaW5nID09IFByb3RvY29sOjpJbnNwZWN0b3JIZWxwZXJzOjpnZXRF
bnVtQ29uc3RhbnRWYWx1ZShQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb246OlR5
cGU6OlByb2JlKSkgewotICAgICAgICAqb3V0cHV0ID0gU2NyaXB0QnJlYWtwb2ludEFjdGlvblR5
cGVQcm9iZTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNl
OwotfQotCi1ib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJv
bVByb3RvY29sKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTT046OkFycmF5PiYg
YWN0aW9ucywgQnJlYWtwb2ludEFjdGlvbnMqIHJlc3VsdCkKLXsKLSAgICBpZiAoIWFjdGlvbnMp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgdW5zaWduZWQgYWN0aW9uc0xlbmd0aCA9IGFj
dGlvbnMtPmxlbmd0aCgpOwotICAgIGlmICghYWN0aW9uc0xlbmd0aCkKLSAgICAgICAgcmV0dXJu
IHRydWU7Ci0KLSAgICByZXN1bHQtPnJlc2VydmVDYXBhY2l0eShhY3Rpb25zTGVuZ3RoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYWN0aW9uc0xlbmd0aDsgKytpKSB7Ci0gICAgICAg
IFJlZlB0cjxKU09OOjpWYWx1ZT4gdmFsdWUgPSBhY3Rpb25zLT5nZXQoaSk7Ci0gICAgICAgIFJl
ZlB0cjxKU09OOjpPYmplY3Q+IG9iamVjdDsKLSAgICAgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3Qo
b2JqZWN0KSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSAiVW5leHBlY3RlZCBub24tb2Jq
ZWN0IGl0ZW0gaW4gZ2l2ZW4gYWN0aW9ucyJfczsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgfQotCi0gICAgICAgIFN0cmluZyB0eXBlU3RyaW5nOwotICAgICAgICBpZiAoIW9i
amVjdC0+Z2V0U3RyaW5nKCJ0eXBlIl9zLCB0eXBlU3RyaW5nKSkgewotICAgICAgICAgICAgZXJy
b3JTdHJpbmcgPSAiTWlzc2luZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7Ci0g
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBTY3JpcHRCcmVh
a3BvaW50QWN0aW9uVHlwZSB0eXBlOwotICAgICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25UeXBl
Rm9yU3RyaW5nKHR5cGVTdHJpbmcsICZ0eXBlKSkgewotICAgICAgICAgICAgZXJyb3JTdHJpbmcg
PSAiTm9uLXN0cmluZyB0eXBlIGZvciBpdGVtIGluIGdpdmVuIGFjdGlvbnMiX3M7Ci0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBTcGVjaWZ5aW5nIGFu
IGlkZW50aWZpZXIgaXMgb3B0aW9uYWwuIFRoZXkgYXJlIHVzZWQgdG8gY29ycmVsYXRlIHByb2Jl
IHNhbXBsZXMKLSAgICAgICAgLy8gaW4gdGhlIGZyb250ZW5kIGFjcm9zcyBtdWx0aXBsZSBiYWNr
ZW5kIHByb2JlIGFjdGlvbnMgYW5kIHNlZ3JlZ2F0ZSBvYmplY3QgZ3JvdXBzLgotICAgICAgICBp
bnQgaWRlbnRpZmllciA9IDA7Ci0gICAgICAgIG9iamVjdC0+Z2V0SW50ZWdlcigiaWQiX3MsIGlk
ZW50aWZpZXIpOwotCi0gICAgICAgIFN0cmluZyBkYXRhOwotICAgICAgICBvYmplY3QtPmdldFN0
cmluZygiZGF0YSJfcywgZGF0YSk7Ci0KLSAgICAgICAgcmVzdWx0LT5hcHBlbmQoU2NyaXB0QnJl
YWtwb2ludEFjdGlvbih0eXBlLCBpZGVudGlmaWVyLCBkYXRhKSk7Ci0gICAgfQotCi0gICAgcmV0
dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4gYnVpbGREZWJ1Z2dlckxvY2F0aW9uKGNvbnN0IEpTQzo6QnJlYWtwb2ludCYgYnJlYWtwb2lu
dCkKLXsKLSAgICBBU1NFUlQoYnJlYWtwb2ludC5yZXNvbHZlZCk7CisgICAgQVNTRVJUKGRlYnVn
Z2VyQnJlYWtwb2ludC5pc1Jlc29sdmVkKCkpOwogCiAgICAgYXV0byBsb2NhdGlvbiA9IFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6TG9jYXRpb246OmNyZWF0ZSgpCi0gICAgICAgIC5zZXRTY3JpcHRJZChT
dHJpbmc6Om51bWJlcihicmVha3BvaW50LnNvdXJjZUlEKSkKLSAgICAgICAgLnNldExpbmVOdW1i
ZXIoYnJlYWtwb2ludC5saW5lKQorICAgICAgICAuc2V0U2NyaXB0SWQoU3RyaW5nOjpudW1iZXIo
ZGVidWdnZXJCcmVha3BvaW50LnNvdXJjZUlEKCkpKQorICAgICAgICAuc2V0TGluZU51bWJlcihk
ZWJ1Z2dlckJyZWFrcG9pbnQubGluZU51bWJlcigpKQogICAgICAgICAucmVsZWFzZSgpOwotICAg
IGxvY2F0aW9uLT5zZXRDb2x1bW5OdW1iZXIoYnJlYWtwb2ludC5jb2x1bW4pOworICAgIGxvY2F0
aW9uLT5zZXRDb2x1bW5OdW1iZXIoZGVidWdnZXJCcmVha3BvaW50LmNvbHVtbk51bWJlcigpKTsK
IAogICAgIHJldHVybiBsb2NhdGlvbjsKIH0KQEAgLTQ1OSw2OCArNTI0LDQ4IEBAIHN0YXRpYyBi
b29sIHBhcnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09OOjpP
YmplY3QmIGxvY2F0aW9uCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
aW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyog
b3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCog
b3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpE
ZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGlu
ZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25h
bFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpP
YmplY3QqIG9wdGlvbnNQYXlsb2FkLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCog
b3V0QnJlYWtwb2ludElkLCBSZWZQdHI8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6
OkxvY2F0aW9uPj4mIG91dExvY2F0aW9ucykKIHsKLSAgICBsb2NhdGlvbnMgPSBKU09OOjpBcnJh
eU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9w
dGlvbmFsVVJMID09ICFvcHRpb25hbFVSTFJlZ2V4KSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
IkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQiX3M7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKLSAgICBTdHJpbmcgdXJsID0gb3B0aW9uYWxVUkwgPyAqb3B0aW9uYWxV
UkwgOiAqb3B0aW9uYWxVUkxSZWdleDsKLSAgICBpbnQgY29sdW1uTnVtYmVyID0gb3B0aW9uYWxD
b2x1bW5OdW1iZXIgPyAqb3B0aW9uYWxDb2x1bW5OdW1iZXIgOiAwOwotICAgIGJvb2wgaXNSZWdl
eCA9IG9wdGlvbmFsVVJMUmVnZXg7CisgICAgYXV0byBwcm90b2NvbEJyZWFrcG9pbnQgPSBQcm90
b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKGVycm9yU3RyaW5nLCBvcHRpb25hbFVSTCA/ICpv
cHRpb25hbFVSTCA6ICpvcHRpb25hbFVSTFJlZ2V4LCAhIW9wdGlvbmFsVVJMUmVnZXgsIGxpbmVO
dW1iZXIsIG9wdGlvbmFsQ29sdW1uTnVtYmVyID8gKm9wdGlvbmFsQ29sdW1uTnVtYmVyIDogMCwg
b3B0aW9uc1BheWxvYWQpOworICAgIGlmICghcHJvdG9jb2xCcmVha3BvaW50KQorICAgICAgICBy
ZXR1cm47CiAKLSAgICBTdHJpbmcgYnJlYWtwb2ludElkZW50aWZpZXIgPSBtYWtlU3RyaW5nKGlz
UmVnZXggPyAiLyIgOiAiIiwgdXJsLCBpc1JlZ2V4ID8gIi86IiA6ICI6IiwgbGluZU51bWJlciwg
JzonLCBjb2x1bW5OdW1iZXIpOwotICAgIGlmIChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5jb250
YWlucyhicmVha3BvaW50SWRlbnRpZmllcikpIHsKKyAgICBpZiAobV9wcm90b2NvbEJyZWFrcG9p
bnRGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jb250YWlucyhwcm90b2NvbEJyZWFrcG9pbnQtPmlk
KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGxvY2F0
aW9uIGFscmVhZHkgZXhpc3RzLiJfczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0
cmluZyBjb25kaXRpb24gPSBlbXB0eVN0cmluZygpOwotICAgIGJvb2wgYXV0b0NvbnRpbnVlID0g
ZmFsc2U7Ci0gICAgdW5zaWduZWQgaWdub3JlQ291bnQgPSAwOwotICAgIFJlZlB0cjxKU09OOjpB
cnJheT4gYWN0aW9uczsKLSAgICBpZiAob3B0aW9ucykgewotICAgICAgICBvcHRpb25zLT5nZXRT
dHJpbmcoImNvbmRpdGlvbiJfcywgY29uZGl0aW9uKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0Qm9v
bGVhbigiYXV0b0NvbnRpbnVlIl9zLCBhdXRvQ29udGludWUpOwotICAgICAgICBvcHRpb25zLT5n
ZXRBcnJheSgiYWN0aW9ucyJfcywgYWN0aW9ucyk7Ci0gICAgICAgIG9wdGlvbnMtPmdldEludGVn
ZXIoImlnbm9yZUNvdW50Il9zLCBpZ25vcmVDb3VudCk7Ci0gICAgfQorICAgIG1fcHJvdG9jb2xC
cmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuc2V0KHByb3RvY29sQnJlYWtwb2ludC0+
aWQoKSwgKnByb3RvY29sQnJlYWtwb2ludCk7CiAKLSAgICBCcmVha3BvaW50QWN0aW9ucyBicmVh
a3BvaW50QWN0aW9uczsKLSAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKGVy
cm9yU3RyaW5nLCBhY3Rpb25zLCAmYnJlYWtwb2ludEFjdGlvbnMpKQotICAgICAgICByZXR1cm47
CisgICAgb3V0TG9jYXRpb25zID0gSlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6Okxv
Y2F0aW9uPjo6Y3JlYXRlKCk7CiAKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5zZXQoYnJl
YWtwb2ludElkZW50aWZpZXIsIGJ1aWxkT2JqZWN0Rm9yQnJlYWtwb2ludENvb2tpZSh1cmwsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhY3Rpb25zLCBpc1JlZ2V4LCBhdXRv
Q29udGludWUsIGlnbm9yZUNvdW50KSk7Ci0KLSAgICBmb3IgKGF1dG8mIGVudHJ5IDogbV9zY3Jp
cHRzKSB7Ci0gICAgICAgIFNjcmlwdCYgc2NyaXB0ID0gZW50cnkudmFsdWU7CisgICAgZm9yIChh
dXRvJiBbc291cmNlSUQsIHNjcmlwdF0gOiBtX3NjcmlwdHMpIHsKICAgICAgICAgU3RyaW5nIHNj
cmlwdFVSTEZvckJyZWFrcG9pbnRzID0gIXNjcmlwdC5zb3VyY2VVUkwuaXNFbXB0eSgpID8gc2Ny
aXB0LnNvdXJjZVVSTCA6IHNjcmlwdC51cmw7Ci0gICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRV
UkxGb3JCcmVha3BvaW50cywgdXJsLCBpc1JlZ2V4KSkKKyAgICAgICAgaWYgKCFwcm90b2NvbEJy
ZWFrcG9pbnQtPm1hdGNoZXNTY3JpcHRVUkwoc2NyaXB0VVJMRm9yQnJlYWtwb2ludHMpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCA9IGVu
dHJ5LmtleTsKLSAgICAgICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxp
bmVOdW1iZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNv
dW50KTsKLSAgICAgICAgcmVzb2x2ZUJyZWFrcG9pbnQoc2NyaXB0LCBicmVha3BvaW50KTsKLSAg
ICAgICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKQorICAgICAgICBhdXRvIGRlYnVnZ2VyQnJl
YWtwb2ludCA9IHByb3RvY29sQnJlYWtwb2ludC0+Y3JlYXRlRGVidWdnZXJCcmVha3BvaW50KG1f
bmV4dERlYnVnZ2VyQnJlYWtwb2ludElEKyssIHNvdXJjZUlEKTsKKworICAgICAgICBpZiAoIXJl
c29sdmVCcmVha3BvaW50KHNjcmlwdCwgZGVidWdnZXJCcmVha3BvaW50KSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogCi0gICAgICAgIGJvb2wgZXhpc3Rpbmc7Ci0gICAgICAgIHNldEJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgZXhpc3RpbmcpOwotICAgICAgICBpZiAoZXhpc3RpbmcpCisgICAgICAg
IGlmICghc2V0QnJlYWtwb2ludChkZWJ1Z2dlckJyZWFrcG9pbnQpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKLSAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBzY3JpcHRCcmVha3BvaW50KGJyZWFr
cG9pbnQubGluZSwgYnJlYWtwb2ludC5jb2x1bW4sIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlv
bnMsIGF1dG9Db250aW51ZSwgaWdub3JlQ291bnQpOwotICAgICAgICBkaWRTZXRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBzY3JpcHRCcmVha3BvaW50KTsKKyAg
ICAgICAgZGlkU2V0QnJlYWtwb2ludCgqcHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFr
cG9pbnQpOwogCi0gICAgICAgIGxvY2F0aW9ucy0+YWRkSXRlbShidWlsZERlYnVnZ2VyTG9jYXRp
b24oYnJlYWtwb2ludCkpOworICAgICAgICBvdXRMb2NhdGlvbnMtPmFkZEl0ZW0oYnVpbGREZWJ1
Z2dlckxvY2F0aW9uKGRlYnVnZ2VyQnJlYWtwb2ludCkpOwogICAgIH0KIAotICAgICpvdXRCcmVh
a3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOworICAgICpvdXRCcmVha3Bv
aW50SWQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmlkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEpTT046Ok9iamVjdCYgbG9jYXRpb24sIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9ucywgUHJv
dG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBS
ZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6T2JqZWN0
KiBvcHRpb25zUGF5bG9hZCwgUHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJy
ZWFrcG9pbnRJZCwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBvdXRBY3R1
YWxMb2NhdGlvbikKIHsKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVk
IGxpbmVOdW1iZXI7CkBAIC01MjgsOTEgKzU3Myw3MSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBKU09O
OgogICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywgbG9jYXRpb24sIHNvdXJjZUlE
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICByZXR1cm47CiAKLSAgICBTdHJp
bmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKLSAgICBib29sIGF1dG9Db250aW51ZSA9IGZh
bHNlOwotICAgIHVuc2lnbmVkIGlnbm9yZUNvdW50ID0gMDsKLSAgICBSZWZQdHI8SlNPTjo6QXJy
YXk+IGFjdGlvbnM7Ci0gICAgaWYgKG9wdGlvbnMpIHsKLSAgICAgICAgb3B0aW9ucy0+Z2V0U3Ry
aW5nKCJjb25kaXRpb24iX3MsIGNvbmRpdGlvbik7Ci0gICAgICAgIG9wdGlvbnMtPmdldEJvb2xl
YW4oImF1dG9Db250aW51ZSJfcywgYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgb3B0aW9ucy0+Z2V0
QXJyYXkoImFjdGlvbnMiX3MsIGFjdGlvbnMpOwotICAgICAgICBvcHRpb25zLT5nZXRJbnRlZ2Vy
KCJpZ25vcmVDb3VudCJfcywgaWdub3JlQ291bnQpOwotICAgIH0KLQotICAgIEJyZWFrcG9pbnRB
Y3Rpb25zIGJyZWFrcG9pbnRBY3Rpb25zOwotICAgIGlmICghYnJlYWtwb2ludEFjdGlvbnNGcm9t
UHJvdG9jb2woZXJyb3JTdHJpbmcsIGFjdGlvbnMsICZicmVha3BvaW50QWN0aW9ucykpCi0gICAg
ICAgIHJldHVybjsKLQogICAgIGF1dG8gc2NyaXB0SXRlcmF0b3IgPSBtX3NjcmlwdHMuZmluZChz
b3VyY2VJRCk7CiAgICAgaWYgKHNjcmlwdEl0ZXJhdG9yID09IG1fc2NyaXB0cy5lbmQoKSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9ICJNaXNzaW5nIHNjcmlwdCBmb3Igc2NyaXB0SWQgaW4gZ2l2
ZW4gbG9jYXRpb24iX3M7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHQmIHNj
cmlwdCA9IHNjcmlwdEl0ZXJhdG9yLT52YWx1ZTsKLSAgICBKU0M6OkJyZWFrcG9pbnQgYnJlYWtw
b2ludChzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBjb25kaXRpb24sIGF1dG9D
b250aW51ZSwgaWdub3JlQ291bnQpOwotICAgIHJlc29sdmVCcmVha3BvaW50KHNjcmlwdCwgYnJl
YWtwb2ludCk7Ci0gICAgaWYgKCFicmVha3BvaW50LnJlc29sdmVkKSB7CisgICAgYXV0byBwcm90
b2NvbEJyZWFrcG9pbnQgPSBQcm90b2NvbEJyZWFrcG9pbnQ6OmZyb21QYXlsb2FkKGVycm9yU3Ry
aW5nLCBzb3VyY2VJRCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyLCBvcHRpb25zUGF5bG9hZCk7
CisgICAgaWYgKCFwcm90b2NvbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIC8v
IERvbid0IHNhdmUgYHByb3RvY29sQnJlYWtwb2ludGAgaW4gYG1fcHJvdG9jb2xCcmVha3BvaW50
Rm9yUHJvdG9jb2xCcmVha3BvaW50SURgIGJlY2F1c2UgaXQKKyAgICAvLyB3YXMgc2V0IHNwZWNp
ZmljYWxseSBmb3IgdGhlIGdpdmVuIGBzb3VyY2VJRGAsIHdoaWNoIGlzIHVuaXF1ZSwgbWVhbmlu
ZyB0aGF0IGl0IHdpbGwgbmV2ZXIKKyAgICAvLyBiZSB1c2VkIGluc2lkZSBgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2VgLgorCisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9p
bnQgPSBwcm90b2NvbEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHRE
ZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICBpZiAoIXJlc29sdmVCcmVh
a3BvaW50KHNjcmlwdEl0ZXJhdG9yLT52YWx1ZSwgZGVidWdnZXJCcmVha3BvaW50KSkgewogICAg
ICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVzb2x2ZSBicmVha3BvaW50Il9zOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBleGlzdGluZzsKLSAgICBzZXRCcmVha3Bv
aW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICBpZiAoZXhpc3RpbmcpIHsKKyAgICBpZiAo
IXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9ICJCcmVha3BvaW50IGZvciBnaXZlbiBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cyJfczsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmllciA9
IG1ha2VTdHJpbmcoc291cmNlSUQsICc6JywgYnJlYWtwb2ludC5saW5lLCAnOicsIGJyZWFrcG9p
bnQuY29sdW1uKTsKLSAgICBTY3JpcHRCcmVha3BvaW50IHNjcmlwdEJyZWFrcG9pbnQoYnJlYWtw
b2ludC5saW5lLCBicmVha3BvaW50LmNvbHVtbiwgY29uZGl0aW9uLCBicmVha3BvaW50QWN0aW9u
cywgYXV0b0NvbnRpbnVlLCBpZ25vcmVDb3VudCk7Ci0gICAgZGlkU2V0QnJlYWtwb2ludChicmVh
a3BvaW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgZGlk
U2V0QnJlYWtwb2ludCgqcHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFrcG9pbnQpOwog
Ci0gICAgYWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24oYnJlYWtwb2ludCk7
Ci0gICAgKm91dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7Cisg
ICAgb3V0QWN0dWFsTG9jYXRpb24gPSBidWlsZERlYnVnZ2VyTG9jYXRpb24oZGVidWdnZXJCcmVh
a3BvaW50KTsKKyAgICAqb3V0QnJlYWtwb2ludElkID0gcHJvdG9jb2xCcmVha3BvaW50LT5pZCgp
OwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFNldEJyZWFrcG9pbnQoY29u
c3QgSlNDOjpCcmVha3BvaW50JiBicmVha3BvaW50LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBjb25zdCBTY3JpcHRCcmVha3BvaW50JiBzY3JpcHRCcmVha3BvaW50KQordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRTZXRCcmVha3BvaW50KFByb3RvY29sQnJlYWtw
b2ludCYgcHJvdG9jb2xCcmVha3BvaW50LCBKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtw
b2ludCkKIHsKLSAgICBKU0M6OkJyZWFrcG9pbnRJRCBpZCA9IGJyZWFrcG9pbnQuaWQ7Ci0gICAg
bV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50QWN0aW9ucyhpZCwgc2NyaXB0QnJlYWtw
b2ludCk7CisgICAgYXV0byYgZGVidWdnZXJCcmVha3BvaW50cyA9IG1fZGVidWdnZXJCcmVha3Bv
aW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELmVuc3VyZShwcm90b2NvbEJyZWFrcG9pbnQuaWQo
KSwgW10geworICAgICAgICByZXR1cm4gSlNDOjpCcmVha3BvaW50c1ZlY3RvcigpOworICAgIH0p
Lml0ZXJhdG9yLT52YWx1ZTsKIAotICAgIGF1dG8gZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRl
cmF0b3IgPSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMu
ZmluZChicmVha3BvaW50SWRlbnRpZmllcik7Ci0gICAgaWYgKGRlYnVnU2VydmVyQnJlYWtwb2lu
dElEc0l0ZXJhdG9yID09IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtw
b2ludElEcy5lbmQoKSkKLSAgICAgICAgZGVidWdTZXJ2ZXJCcmVha3BvaW50SURzSXRlcmF0b3Ig
PSBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMuc2V0KGJy
ZWFrcG9pbnRJZGVudGlmaWVyLCBWZWN0b3I8SlNDOjpCcmVha3BvaW50SUQ+KCkpLml0ZXJhdG9y
OwotICAgIGRlYnVnU2VydmVyQnJlYWtwb2ludElEc0l0ZXJhdG9yLT52YWx1ZS5hcHBlbmQoaWQp
OwotCi0gICAgbV9kZWJ1Z2dlckJyZWFrcG9pbnRJZGVudGlmaWVyVG9JbnNwZWN0b3JCcmVha3Bv
aW50SWRlbnRpZmllci5zZXQoaWQsIGJyZWFrcG9pbnRJZGVudGlmaWVyKTsKKyAgICBkZWJ1Z2dl
ckJyZWFrcG9pbnRzLmFwcGVuZChkZWJ1Z2dlckJyZWFrcG9pbnQpOwogfQogCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IFNjcmlwdCYgc2NyaXB0
LCBKU0M6OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnJlc29sdmVCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNjcmlwdCYgc2NyaXB0
LCBKU0M6OkJyZWFrcG9pbnQmIGRlYnVnZ2VyQnJlYWtwb2ludCkKIHsKLSAgICBpZiAoYnJlYWtw
b2ludC5saW5lIDwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNjcmlwdC5zdGFydExpbmUpIHx8IHN0
YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuZW5kTGluZSkgPCBicmVha3BvaW50LmxpbmUpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIoKSA8
IHN0YXRpY19jYXN0PHVuc2lnbmVkPihzY3JpcHQuc3RhcnRMaW5lKSB8fCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oc2NyaXB0LmVuZExpbmUpIDwgZGVidWdnZXJCcmVha3BvaW50LmxpbmVOdW1iZXIo
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZXNv
bHZlQnJlYWtwb2ludChicmVha3BvaW50LCBzY3JpcHQuc291cmNlUHJvdmlkZXIuZ2V0KCkpOwor
ICAgIHJldHVybiBtX3NjcmlwdERlYnVnU2VydmVyLnJlc29sdmVCcmVha3BvaW50KGRlYnVnZ2Vy
QnJlYWtwb2ludCwgc2NyaXB0LnNvdXJjZVByb3ZpZGVyLmdldCgpKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEpTQzo6QnJlYWtwb2ludCYgYnJlYWtw
b2ludCwgYm9vbCYgZXhpc3RpbmcpCitib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50JiBkZWJ1Z2dlckJyZWFrcG9pbnQpCiB7CiAgICAgSlND
OjpKU0xvY2tIb2xkZXIgbG9ja2VyKG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgbV9z
Y3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKKyAg
ICByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlci5zZXRCcmVha3BvaW50KGRlYnVnZ2VyQnJlYWtw
b2ludCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludElkZW50aWZpZXIpCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBj
b25zdCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkJiBwcm90b2Nv
bEJyZWFrcG9pbnRJRCkKIHsKLSAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5yZW1vdmUoYnJl
YWtwb2ludElkZW50aWZpZXIpOworICAgIG1fcHJvdG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xC
cmVha3BvaW50SUQucmVtb3ZlKHByb3RvY29sQnJlYWtwb2ludElEKTsKIAotICAgIGZvciAoSlND
OjpCcmVha3BvaW50SUQgYnJlYWtwb2ludElEIDogbV9icmVha3BvaW50SWRlbnRpZmllclRvRGVi
dWdTZXJ2ZXJCcmVha3BvaW50SURzLnRha2UoYnJlYWtwb2ludElkZW50aWZpZXIpKSB7Ci0gICAg
ICAgIG1fZGVidWdnZXJCcmVha3BvaW50SWRlbnRpZmllclRvSW5zcGVjdG9yQnJlYWtwb2ludElk
ZW50aWZpZXIucmVtb3ZlKGJyZWFrcG9pbnRJRCk7Ci0KLSAgICAgICAgY29uc3QgQnJlYWtwb2lu
dEFjdGlvbnMmIGJyZWFrcG9pbnRBY3Rpb25zID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5nZXRBY3Rp
b25zRm9yQnJlYWtwb2ludChicmVha3BvaW50SUQpOwotICAgICAgICBmb3IgKGF1dG8mIGFjdGlv
biA6IGJyZWFrcG9pbnRBY3Rpb25zKQotICAgICAgICAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFn
ZXIucmVsZWFzZU9iamVjdEdyb3VwKG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihhY3Rp
b24pKTsKKyAgICBmb3IgKGF1dG8mIGRlYnVnZ2VyQnJlYWtwb2ludCA6IG1fZGVidWdnZXJCcmVh
a3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELnRha2UocHJvdG9jb2xCcmVha3BvaW50SUQp
KSB7CisgICAgICAgIGZvciAoY29uc3QgYXV0byYgYWN0aW9uIDogZGVidWdnZXJCcmVha3BvaW50
LT5hY3Rpb25zKCkpCisgICAgICAgICAgICBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5yZWxlYXNl
T2JqZWN0R3JvdXAob2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlvbi5pZCkpOwog
CiAgICAgICAgIEpTQzo6SlNMb2NrSG9sZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZt
KCkpOwotICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnRBY3Rpb25z
KGJyZWFrcG9pbnRJRCk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtw
b2ludChicmVha3BvaW50SUQpOworICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLnJlbW92ZUJy
ZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KTsKICAgICB9CiB9CiAKQEAgLTYzMyw5ICs2NTgs
OSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaWYgKCFhc3NlcnRQYXVzZWQoZXJyb3JT
dHJpbmcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25C
cmVha3BvaW50SUQgIT0gSlNDOjpub0JyZWFrcG9pbnRJRCkgewotICAgICAgICBtX3NjcmlwdERl
YnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQobV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50
SUQpOwotICAgICAgICBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCA9IEpTQzo6bm9C
cmVha3BvaW50SUQ7CisgICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3Bv
aW50KSB7CisgICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIucmVtb3ZlQnJlYWtwb2ludCgqbV9j
b250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQpOworICAgICAgICBtX2NvbnRpbnVl
VG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCA9IG51bGxwdHI7CiAgICAgfQogCiAgICAgSlND
OjpTb3VyY2VJRCBzb3VyY2VJRDsKQEAgLTY1MiwyMiArNjc3LDIzIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFN0cmluZyBjb25kaXRpb247
Ci0gICAgYm9vbCBhdXRvQ29udGludWUgPSBmYWxzZTsKLSAgICB1bnNpZ25lZCBpZ25vcmVDb3Vu
dCA9IDA7Ci0gICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlciwgY29uZGl0aW9uLCBhdXRvQ29udGludWUsIGlnbm9yZUNvdW50KTsK
LSAgICBTY3JpcHQmIHNjcmlwdCA9IHNjcmlwdEl0ZXJhdG9yLT52YWx1ZTsKLSAgICByZXNvbHZl
QnJlYWtwb2ludChzY3JpcHQsIGJyZWFrcG9pbnQpOwotICAgIGlmICghYnJlYWtwb2ludC5yZXNv
bHZlZCkgeworICAgIGF1dG8gcHJvdG9jb2xCcmVha3BvaW50ID0gUHJvdG9jb2xCcmVha3BvaW50
Ojpmcm9tUGF5bG9hZChlcnJvclN0cmluZywgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51
bWJlcik7CisgICAgaWYgKCFwcm90b2NvbEJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKwor
ICAgIC8vIERvbid0IHNhdmUgYHByb3RvY29sQnJlYWtwb2ludGAgaW4gYG1fcHJvdG9jb2xCcmVh
a3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SURgIGJlY2F1c2UgaXQKKyAgICAvLyBpcyBhIHRl
bXBvcmFyeSBicmVha3BvaW50IHRoYXQgd2lsbCBiZSByZW1vdmVkIGFzIHNvb24gYXMgYGxvY2F0
aW9uYCBpcyByZWFjaGVkLgorCisgICAgYXV0byBkZWJ1Z2dlckJyZWFrcG9pbnQgPSBwcm90b2Nv
bEJyZWFrcG9pbnQtPmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFr
cG9pbnRJRCsrLCBzb3VyY2VJRCk7CisKKyAgICBpZiAoIXJlc29sdmVCcmVha3BvaW50KHNjcmlw
dEl0ZXJhdG9yLT52YWx1ZSwgZGVidWdnZXJCcmVha3BvaW50KSkgewogICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0
Y2hlci0+cmVzdW1lZCgpOwogICAgICAgICBlcnJvclN0cmluZyA9ICJDb3VsZCBub3QgcmVzb2x2
ZSBicmVha3BvaW50Il9zOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBleGlz
dGluZzsKLSAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICBpZiAo
ZXhpc3RpbmcpIHsKKyAgICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3BvaW50KSkg
ewogICAgICAgICAvLyBUaGVyZSBpcyBhbiBleGlzdGluZyBicmVha3BvaW50IGF0IHRoaXMgbG9j
YXRpb24uIEluc3RlYWQgb2YKICAgICAgICAgLy8gYWN0aW5nIGxpa2UgYSBzZXJpZXMgb2Ygc3Rl
cHMsIGp1c3QgcmVzdW1lIGFuZCB3ZSB3aWxsIGVpdGhlcgogICAgICAgICAvLyBoaXQgdGhpcyBu
ZXcgYnJlYWtwb2ludCBvciBub3QuCkBAIC02NzYsNyArNzAyLDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9jb250aW51ZVRvTG9jYXRp
b25CcmVha3BvaW50SUQgPSBicmVha3BvaW50LmlkOworICAgIG1fY29udGludWVUb0xvY2F0aW9u
RGVidWdnZXJCcmVha3BvaW50ID0gV1RGTW92ZShkZWJ1Z2dlckJyZWFrcG9pbnQpOwogCiAgICAg
Ly8gVHJlYXQgdGhpcyBhcyBhIHNlcmllcyBvZiBzdGVwcyB1bnRpbCByZWFjaGluZyB0aGUgbmV3
IGJyZWFrcG9pbnQuCiAgICAgLy8gU28gZG9uJ3QgaXNzdWUgYSByZXN1bWVkIGV2ZW50IHVubGVz
cyB3ZSBleGl0IHRoZSBWTSB3aXRob3V0IHBhdXNpbmcuCkBAIC03MTksNyArNzQ1LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdAogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWls
cyhlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgZGV0YWlscyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJlYXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRh
KQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlQXROZXh0T3Bwb3J0
dW5pdHkoRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbiByZWFzb24sIFJlZlB0cjxK
U09OOjpPYmplY3Q+JiYgZGF0YSkKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVs
ZWQpCiAgICAgICAgIHJldHVybjsKQEAgLTcyOSwxMCArNzU1LDEwIEBAIHZvaWQgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0CiAgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRhKHJlYXNvbiwgV1RGTW92ZShk
YXRhKSk7CiAKICAgICBKU0M6OkpTTG9ja0hvbGRlciBsb2NrZXIobV9zY3JpcHREZWJ1Z1NlcnZl
ci52bSgpKTsKLSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25OZXh0U3RhdGVtZW50
KHRydWUpOworICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIuc2NoZWR1bGVQYXVzZUF0TmV4dE9wcG9y
dHVuaXR5KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VP
bk5leHRTdGF0ZW1lbnQoKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjYW5jZWxQYXVz
ZUF0TmV4dE9wcG9ydHVuaXR5KCkKIHsKICAgICBpZiAoIW1famF2YVNjcmlwdFBhdXNlU2NoZWR1
bGVkKQogICAgICAgICByZXR1cm47CkBAIC03NDAsMTMgKzc2NiwzMyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OmNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50KCkKICAgICBtX2phdmFT
Y3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNlOwogCiAgICAgY2xlYXJQYXVzZURldGFpbHMoKTsK
LSAgICBtX3NjcmlwdERlYnVnU2VydmVyLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGZhbHNlKTsK
KyAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsK
ICAgICBtX2VuYWJsZVBhdXNlV2hlbklkbGUgPSBmYWxzZTsKIH0KIAorYm9vbCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzY2hlZHVsZVBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVh
a3BvaW50JiBicmVha3BvaW50LCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJl
YXNvbiwgUmVmUHRyPEpTT046Ok9iamVjdD4mJiBkYXRhKQoreworICAgIEpTQzo6SlNMb2NrSG9s
ZGVyIGxvY2tlcihtX3NjcmlwdERlYnVnU2VydmVyLnZtKCkpOworCisgICAgaWYgKCFtX3Njcmlw
dERlYnVnU2VydmVyLnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChicmVha3BvaW50
KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgdXBkYXRlUGF1c2VSZWFzb25BbmREYXRh
KHJlYXNvbiwgV1RGTW92ZShkYXRhKSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChKU0M6
OkJyZWFrcG9pbnQmIGJyZWFrcG9pbnQpCit7CisgICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQoYnJlYWtwb2ludCkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIGNsZWFyUGF1c2VEZXRhaWxzKCk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cGF1c2UoRXJyb3JTdHJpbmcmKQog
ewotICAgIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6UGF1c2VPbk5leHRTdGF0ZW1lbnQsIG51bGxwdHIpOworICAgIHNjaGVk
dWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVh
c29uOjpQYXVzZU9uTmV4dFN0YXRlbWVudCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6cmVzdW1lKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZykKQEAgLTc1Niw3ICs4MDIsNyBA
QCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlc3VtZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBjYW5jZWxQYXVzZU9uTmV4dFN0
YXRlbWVudCgpOworICAgIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICBtX3Nj
cmlwdERlYnVnU2VydmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgIG1fY29uZGl0aW9uVG9EaXNw
YXRjaFJlc3VtZWQgPSBTaG91bGREaXNwYXRjaFJlc3VtZWQ6OldoZW5Db250aW51ZWQ7CiB9CkBA
IC04MjIsNyArODY4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRCZWNvbWVJ
ZGxlKCkKICAgICBtX3JlZ2lzdGVyZWRJZGxlQ2FsbGJhY2sgPSBmYWxzZTsKIAogICAgIGlmICht
X2NvbmRpdGlvblRvRGlzcGF0Y2hSZXN1bWVkID09IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6V2hl
bklkbGUpIHsKLSAgICAgICAgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICAgICAg
Y2FuY2VsUGF1c2VBdE5leHRPcHBvcnR1bml0eSgpOwogICAgICAgICBtX3NjcmlwdERlYnVnU2Vy
dmVyLmNvbnRpbnVlUHJvZ3JhbSgpOwogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cmVz
dW1lZCgpOwogICAgIH0KQEAgLTk1OCw3ICsxMDA0LDcgQEAgUmVmPEpTT046OkFycmF5T2Y8UHJv
dG9jb2w6OkRlYnVnZ2VyOjpDYWxsRnJhbWU+PiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjdXJy
ZW4KICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQud3JhcENhbGxGcmFtZXMobV9jdXJyZW50Q2Fs
bFN0YWNrLmdldCgpKTsKIH0KIAotU3RyaW5nIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmIHNjcmlwdCkKK1N0cmluZyBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgSlNDOjpEZWJ1Z2dlcjo6
U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgcmV0dXJuIHNjcmlwdC5zb3VyY2VNYXBwaW5nVVJMOwog
fQpAQCAtOTc4LDcgKzEwMjQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFBh
dXNlRm9ySW50ZXJuYWxTY3JpcHRzKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bAogICAgIH0KIH0K
IAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJj
ZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQmIHNjcmlwdCkKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgSlND
OjpEZWJ1Z2dlcjo6U2NyaXB0JiBzY3JpcHQpCiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyID0g
U3RyaW5nOjpudW1iZXIoc291cmNlSUQpOwogICAgIGJvb2wgaGFzU291cmNlVVJMID0gIXNjcmlw
dC5zb3VyY2VVUkwuaXNFbXB0eSgpOwpAQCAtMTAwNCw0NCArMTA1MCwyMSBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQgc291cmNlSUQs
IGNvbnN0IFNjcmlwdAogICAgIGlmIChzY3JpcHRVUkxGb3JCcmVha3BvaW50cy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIGZvciAoYXV0byYgZW50cnkgOiBtX2phdmFTY3JpcHRC
cmVha3BvaW50cykgewotICAgICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBicmVha3BvaW50T2Jq
ZWN0ID0gZW50cnkudmFsdWU7Ci0KLSAgICAgICAgYm9vbCBpc1JlZ2V4OwotICAgICAgICBTdHJp
bmcgdXJsOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFuKCJpc1JlZ2V4Il9z
LCBpc1JlZ2V4KTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0U3RyaW5nKCJ1cmwiX3Ms
IHVybCk7Ci0gICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRVUkxGb3JCcmVha3BvaW50cywgdXJs
LCBpc1JlZ2V4KSkKKyAgICBmb3IgKGF1dG8mIHByb3RvY29sQnJlYWtwb2ludCA6IG1fcHJvdG9j
b2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQudmFsdWVzKCkpIHsKKyAgICAgICAg
aWYgKCFwcm90b2NvbEJyZWFrcG9pbnQubWF0Y2hlc1NjcmlwdFVSTChzY3JpcHRVUkxGb3JCcmVh
a3BvaW50cykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBTY3JpcHRCcmVha3Bv
aW50IHNjcmlwdEJyZWFrcG9pbnQ7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVn
ZXIoImxpbmVOdW1iZXIiX3MsIHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlcik7Ci0gICAgICAg
IGJyZWFrcG9pbnRPYmplY3QtPmdldEludGVnZXIoImNvbHVtbk51bWJlciJfcywgc2NyaXB0QnJl
YWtwb2ludC5jb2x1bW5OdW1iZXIpOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJp
bmcoImNvbmRpdGlvbiJfcywgc2NyaXB0QnJlYWtwb2ludC5jb25kaXRpb24pOwotICAgICAgICBi
cmVha3BvaW50T2JqZWN0LT5nZXRCb29sZWFuKCJhdXRvQ29udGludWUiX3MsIHNjcmlwdEJyZWFr
cG9pbnQuYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0SW50ZWdl
cigiaWdub3JlQ291bnQiX3MsIHNjcmlwdEJyZWFrcG9pbnQuaWdub3JlQ291bnQpOwotICAgICAg
ICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKLSAgICAgICAgUmVmUHRyPEpTT046OkFycmF5PiBh
Y3Rpb25zOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRBcnJheSgiYWN0aW9ucyJfcywg
YWN0aW9ucyk7Ci0gICAgICAgIGlmICghYnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woZXJy
b3JTdHJpbmcsIGFjdGlvbnMsICZzY3JpcHRCcmVha3BvaW50LmFjdGlvbnMpKSB7Ci0gICAgICAg
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB9CisgICAgICAgIGF1dG8gZGVidWdnZXJCcmVha3BvaW50ID0gcHJvdG9jb2xCcmVha3BvaW50
LmNyZWF0ZURlYnVnZ2VyQnJlYWtwb2ludChtX25leHREZWJ1Z2dlckJyZWFrcG9pbnRJRCsrLCBz
b3VyY2VJRCk7CiAKLSAgICAgICAgSlNDOjpCcmVha3BvaW50IGJyZWFrcG9pbnQoc291cmNlSUQs
IHNjcmlwdEJyZWFrcG9pbnQubGluZU51bWJlciwgc2NyaXB0QnJlYWtwb2ludC5jb2x1bW5OdW1i
ZXIsIHNjcmlwdEJyZWFrcG9pbnQuY29uZGl0aW9uLCBzY3JpcHRCcmVha3BvaW50LmF1dG9Db250
aW51ZSwgc2NyaXB0QnJlYWtwb2ludC5pZ25vcmVDb3VudCk7Ci0gICAgICAgIHJlc29sdmVCcmVh
a3BvaW50KHNjcmlwdCwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGlmICghYnJlYWtwb2ludC5yZXNv
bHZlZCkKKyAgICAgICAgaWYgKCFyZXNvbHZlQnJlYWtwb2ludChzY3JpcHQsIGRlYnVnZ2VyQnJl
YWtwb2ludCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBib29sIGV4aXN0aW5n
OwotICAgICAgICBzZXRCcmVha3BvaW50KGJyZWFrcG9pbnQsIGV4aXN0aW5nKTsKLSAgICAgICAg
aWYgKGV4aXN0aW5nKQorICAgICAgICBpZiAoIXNldEJyZWFrcG9pbnQoZGVidWdnZXJCcmVha3Bv
aW50KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgIFN0cmluZyBicmVha3BvaW50
SWRlbnRpZmllciA9IGVudHJ5LmtleTsKLSAgICAgICAgZGlkU2V0QnJlYWtwb2ludChicmVha3Bv
aW50LCBicmVha3BvaW50SWRlbnRpZmllciwgc2NyaXB0QnJlYWtwb2ludCk7CisgICAgICAgIGRp
ZFNldEJyZWFrcG9pbnQocHJvdG9jb2xCcmVha3BvaW50LCBkZWJ1Z2dlckJyZWFrcG9pbnQpOwog
Ci0gICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQoYnJlYWtw
b2ludElkZW50aWZpZXIsIGJ1aWxkRGVidWdnZXJMb2NhdGlvbihicmVha3BvaW50KSk7CisgICAg
ICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5icmVha3BvaW50UmVzb2x2ZWQocHJvdG9jb2xCcmVh
a3BvaW50LmlkKCksIGJ1aWxkRGVidWdnZXJMb2NhdGlvbihkZWJ1Z2dlckJyZWFrcG9pbnQpKTsK
ICAgICB9CiB9CiAKQEAgLTEwNTIsMzYgKzEwNzUsMzggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpmYWlsZWRUb1BhcnNlU291cmNlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcKIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp3aWxsUnVuTWljcm90YXNrKCkKIHsK
LSAgICBpZiAoIW1fc2NyaXB0RGVidWdTZXJ2ZXIuYnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICBp
ZiAoIWJyZWFrcG9pbnRzQWN0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChtX3Bh
dXNlT25NaWNyb3Rhc2tzKQotICAgICAgICBzY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Ok1pY3JvdGFzaywgbnVsbHB0cik7Cisg
ICAgICAgIHNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlz
cGF0Y2hlcjo6UmVhc29uOjpNaWNyb3Rhc2spOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpZFJ1bk1pY3JvdGFzaygpCiB7Ci0gICAgaWYgKCFtX3NjcmlwdERlYnVnU2VydmVy
LmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgaWYgKCFicmVha3BvaW50c0FjdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICBpZiAobV9wYXVzZU9uTWljcm90YXNrcykKLSAgICAgICAgY2Fu
Y2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICAgICAgY2FuY2VsUGF1c2VBdE5leHRPcHBv
cnR1bml0eSgpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZFBhdXNlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNDOjpKU1ZhbHVlIGNhbGxGcmFtZXMs
IEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKQordm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
Qzo6RGVidWdnZXJDYWxsRnJhbWUmIGRlYnVnZ2VyQ2FsbEZyYW1lLCBKU0M6OkpTVmFsdWUgZXhj
ZXB0aW9uT3JDYXVnaHRWYWx1ZSkKIHsKICAgICBBU1NFUlQoIW1fcGF1c2VkR2xvYmFsT2JqZWN0
KTsKICAgICBtX3BhdXNlZEdsb2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdDsKLSAgICBtX2N1cnJl
bnRDYWxsU3RhY2sgPSB7IGdsb2JhbE9iamVjdC0+dm0oKSwgY2FsbEZyYW1lcyB9OwogCi0gICAg
SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihnbG9iYWxPYmplY3QpOworICAgIGF1dG8qIGRlYnVnZ2VyR2xvYmFs
T2JqZWN0ID0gZGVidWdnZXJDYWxsRnJhbWUuc2NvcGUoKS0+Z2xvYmFsT2JqZWN0KCk7CisgICAg
bV9jdXJyZW50Q2FsbFN0YWNrID0geyBtX3BhdXNlZEdsb2JhbE9iamVjdC0+dm0oKSwgdG9KUyhk
ZWJ1Z2dlckdsb2JhbE9iamVjdCwgZGVidWdnZXJHbG9iYWxPYmplY3QsIEphdmFTY3JpcHRDYWxs
RnJhbWU6OmNyZWF0ZShkZWJ1Z2dlckNhbGxGcmFtZSkucHRyKCkpIH07CisKKyAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmluamVjdGVk
U2NyaXB0Rm9yKG1fcGF1c2VkR2xvYmFsT2JqZWN0KTsKIAogICAgIC8vIElmIGEgaGlnaCBsZXZl
bCBwYXVzZSBwYXVzZSByZWFzb24gaXMgbm90IGFscmVhZHkgc2V0LCB0cnkgdG8gaW5mZXIgYSBy
ZWFzb24gZnJvbSB0aGUgZGVidWdnZXIuCiAgICAgaWYgKG1fcGF1c2VSZWFzb24gPT0gRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6T3RoZXIpIHsKICAgICAgICAgc3dpdGNoICht
X3NjcmlwdERlYnVnU2VydmVyLnJlYXNvbkZvclBhdXNlKCkpIHsKICAgICAgICAgY2FzZSBKU0M6
OkRlYnVnZ2VyOjpQYXVzZWRGb3JCcmVha3BvaW50OiB7CiAgICAgICAgICAgICBhdXRvIGRlYnVn
Z2VyQnJlYWtwb2ludElkID0gbV9zY3JpcHREZWJ1Z1NlcnZlci5wYXVzaW5nQnJlYWtwb2ludElE
KCk7Ci0gICAgICAgICAgICBpZiAoZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SUQpCisgICAgICAgICAgICBpZiAoIW1fY29udGludWVUb0xvY2F0
aW9uRGVidWdnZXJCcmVha3BvaW50IHx8IGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGlu
dWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50LT5pZCgpKQogICAgICAgICAgICAgICAgIHVw
ZGF0ZVBhdXNlUmVhc29uQW5kRGF0YShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29u
OjpCcmVha3BvaW50LCBidWlsZEJyZWFrcG9pbnRQYXVzZVJlYXNvbihkZWJ1Z2dlckJyZWFrcG9p
bnRJZCkpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTExMTksNyArMTE0NCw3
IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTCiAKICAgICAgICAgUmVmUHRyPEpTT046Ok9iamVj
dD4gZGF0YTsKICAgICAgICAgaWYgKGF1dG8gZGVidWdnZXJCcmVha3BvaW50SWQgPSBtX3Njcmlw
dERlYnVnU2VydmVyLnBhdXNpbmdCcmVha3BvaW50SUQoKSkgewotICAgICAgICAgICAgQVNTRVJU
KGRlYnVnZ2VyQnJlYWtwb2ludElkICE9IG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElE
KTsKKyAgICAgICAgICAgIEFTU0VSVCghbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFr
cG9pbnQgfHwgZGVidWdnZXJCcmVha3BvaW50SWQgIT0gbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1
Z2dlckJyZWFrcG9pbnQtPmlkKCkpOwogICAgICAgICAgICAgZGF0YSA9IEpTT046Ok9iamVjdDo6
Y3JlYXRlKCk7CiAgICAgICAgICAgICBkYXRhLT5zZXRTdHJpbmcoIm9yaWdpbmFsUmVhc29uIl9z
LCBQcm90b2NvbDo6SW5zcGVjdG9ySGVscGVyczo6Z2V0RW51bUNvbnN0YW50VmFsdWUoRGVidWdn
ZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6QnJlYWtwb2ludCkpOwogICAgICAgICAgICAg
ZGF0YS0+c2V0VmFsdWUoIm9yaWdpbmFsRGF0YSJfcywgYnVpbGRCcmVha3BvaW50UGF1c2VSZWFz
b24oZGVidWdnZXJCcmVha3BvaW50SWQpKTsKQEAgLTExNTEsOSArMTE3Niw5IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU0M6OkpTCiAKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9IGZhbHNl
OwogCi0gICAgaWYgKG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEICE9IEpTQzo6bm9C
cmVha3BvaW50SUQpIHsKLSAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVCcmVha3Bv
aW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKLSAgICAgICAgbV9jb250aW51
ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIGlmICht
X2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCkgeworICAgICAgICBtX3Njcmlw
dERlYnVnU2VydmVyLnJlbW92ZUJyZWFrcG9pbnQoKm1fY29udGludWVUb0xvY2F0aW9uRGVidWdn
ZXJCcmVha3BvaW50KTsKKyAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFr
cG9pbnQgPSBudWxscHRyOwogICAgIH0KIAogICAgIGF1dG8mIHN0b3B3YXRjaCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLmluc3BlY3RvckVudmlyb25tZW50KCkuZXhlY3V0aW9uU3RvcHdhdGNo
KCk7CkBAIC0xMTYzLDE3ICsxMTg4LDE3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
ZGlkUGF1c2UoSlNDOjpKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU0M6OkpTCiAgICAg
fQogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3Vu
ZChpbnQgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3VuZChKU0M6OkJyZWFrcG9pbnRBY3Rpb25JRCBpZCkK
IHsKLSAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+cGxheUJyZWFrcG9pbnRBY3Rpb25Tb3VuZChi
cmVha3BvaW50QWN0aW9uSWRlbnRpZmllcik7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXItPnBs
YXlCcmVha3BvaW50QWN0aW9uU291bmQoaWQpOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIGNvbnN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mIGFjdGlvbiwgdW5zaWduZWQgYmF0
Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBzYW1wbGUpCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6OkpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTQzo6QnJlYWtwb2ludEFjdGlvbklEIGFjdGlvbklELCB1bnNp
Z25lZCBiYXRjaElkLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlNDOjpKU1ZhbHVlIHNhbXBsZSkKIHsK
ICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLmluamVjdGVkU2NyaXB0Rm9yKGdsb2JhbE9iamVjdCk7Ci0gICAgYXV0byBwYXlsb2FkID0g
aW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChzYW1wbGUsIG9iamVjdEdyb3VwRm9yQnJlYWtwb2lu
dEFjdGlvbihhY3Rpb24pLCB0cnVlKTsKKyAgICBhdXRvIHBheWxvYWQgPSBpbmplY3RlZFNjcmlw
dC53cmFwT2JqZWN0KHNhbXBsZSwgb2JqZWN0R3JvdXBGb3JCcmVha3BvaW50QWN0aW9uKGFjdGlv
bklEKSwgdHJ1ZSk7CiAgICAgYXV0byByZXN1bHQgPSBQcm90b2NvbDo6RGVidWdnZXI6OlByb2Jl
U2FtcGxlOjpjcmVhdGUoKQotICAgICAgICAuc2V0UHJvYmVJZChhY3Rpb24uaWRlbnRpZmllcikK
KyAgICAgICAgLnNldFByb2JlSWQoYWN0aW9uSUQpCiAgICAgICAgIC5zZXRCYXRjaElkKGJhdGNo
SWQpCiAgICAgICAgIC5zZXRTYW1wbGVJZChzYW1wbGVJZCkKICAgICAgICAgLnNldFRpbWVzdGFt
cChtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbnNwZWN0b3JFbnZpcm9ubWVudCgpLmV4ZWN1dGlv
blN0b3B3YXRjaCgpLmVsYXBzZWRUaW1lKCkuc2Vjb25kcygpKQpAQCAtMTIwOSwxMCArMTIzNCwx
NSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrUHJvZ3JhbShEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uIHJlYQogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpjbGVhckluc3BlY3RvckJyZWFrcG9pbnRTdGF0ZSgpCiB7CiAgICAgRXJyb3JTdHJpbmcgaWdu
b3JlZDsKLSAgICBmb3IgKGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciA6IGNvcHlUb1ZlY3Rvciht
X2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHMua2V5cygpKSkK
LSAgICAgICAgcmVtb3ZlQnJlYWtwb2ludChpZ25vcmVkLCBpZGVudGlmaWVyKTsKKyAgICBmb3Ig
KGF1dG8mIHByb3RvY29sQnJlYWtwb2ludElEIDogY29weVRvVmVjdG9yKG1fZGVidWdnZXJCcmVh
a3BvaW50c0ZvclByb3RvY29sQnJlYWtwb2ludElELmtleXMoKSkpCisgICAgICAgIHJlbW92ZUJy
ZWFrcG9pbnQoaWdub3JlZCwgcHJvdG9jb2xCcmVha3BvaW50SUQpOwogCi0gICAgbV9qYXZhU2Ny
aXB0QnJlYWtwb2ludHMuY2xlYXIoKTsKKyAgICBtX3Byb3RvY29sQnJlYWtwb2ludEZvclByb3Rv
Y29sQnJlYWtwb2ludElELmNsZWFyKCk7CisKKyAgICBpZiAobV9jb250aW51ZVRvTG9jYXRpb25E
ZWJ1Z2dlckJyZWFrcG9pbnQpIHsKKyAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5yZW1vdmVC
cmVha3BvaW50KCptX2NvbnRpbnVlVG9Mb2NhdGlvbkRlYnVnZ2VyQnJlYWtwb2ludCk7CisgICAg
ICAgIG1fY29udGludWVUb0xvY2F0aW9uRGVidWdnZXJCcmVha3BvaW50ID0gbnVsbHB0cjsKKyAg
ICB9CiAKICAgICBjbGVhckRlYnVnZ2VyQnJlYWtwb2ludFN0YXRlKCk7CiB9CkBAIC0xMjIxLDcg
KzEyNTEsNiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNsZWFyRGVidWdnZXJCcmVh
a3BvaW50U3RhdGUoKQogewogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgaG9sZGVy
KG1fc2NyaXB0RGVidWdTZXJ2ZXIudm0oKSk7Ci0gICAgICAgIG1fc2NyaXB0RGVidWdTZXJ2ZXIu
Y2xlYXJCcmVha3BvaW50QWN0aW9ucygpOwogICAgICAgICBtX3NjcmlwdERlYnVnU2VydmVyLmNs
ZWFyQnJlYWtwb2ludHMoKTsKICAgICAgICAgbV9zY3JpcHREZWJ1Z1NlcnZlci5jbGVhckJsYWNr
Ym94KCk7CiAgICAgfQpAQCAtMTIyOSw5ICsxMjU4LDEwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpCiAgICAgbV9wYXVzZWRHbG9i
YWxPYmplY3QgPSBudWxscHRyOwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IHsgfTsKICAgICBt
X3NjcmlwdHMuY2xlYXIoKTsKLSAgICBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZl
ckJyZWFrcG9pbnRJRHMuY2xlYXIoKTsKLSAgICBtX2RlYnVnZ2VyQnJlYWtwb2ludElkZW50aWZp
ZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyLmNsZWFyKCk7Ci0gICAgbV9jb250aW51
ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOworICAgIG1fcHJv
dG9jb2xCcmVha3BvaW50Rm9yUHJvdG9jb2xCcmVha3BvaW50SUQuY2xlYXIoKTsKKyAgICBtX2Rl
YnVnZ2VyQnJlYWtwb2ludHNGb3JQcm90b2NvbEJyZWFrcG9pbnRJRC5jbGVhcigpOworICAgIG1f
bmV4dERlYnVnZ2VyQnJlYWtwb2ludElEID0gSlNDOjpub0JyZWFrcG9pbnRJRCArIDE7CisgICAg
bV9jb250aW51ZVRvTG9jYXRpb25EZWJ1Z2dlckJyZWFrcG9pbnQgPSBudWxscHRyOwogICAgIGNs
ZWFyUGF1c2VEZXRhaWxzKCk7CiAgICAgbV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQgPSBmYWxz
ZTsKICAgICBtX2hhc0V4Y2VwdGlvblZhbHVlID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmgKaW5kZXggMzVhZjE2ZDI3ZDZmZjllNGRkNmJlNWUzMjdmZDhkNjgyMjhhN2MxNy4u
ZGIzMDBiZDlmNTMyMjEzZmU0YWM1ODcyZDM3ZWU4MTg0NTQ2OGNlMyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaApAQCAtMjksMTYgKzI5LDE4IEBACiAKICNwcmFnbWEgb25jZQogCisj
aW5jbHVkZSAiQnJlYWtwb2ludC5oIgogI2luY2x1ZGUgIkRlYnVnZ2VyLmgiCisjaW5jbHVkZSAi
RGVidWdnZXJQcmltaXRpdmVzLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQWdlbnRCYXNlLmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9yRnJvbnRlbmREaXNwYXRjaGVycy5oIgotI2luY2x1ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIK
LSNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+Cisj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CkBAIC00NiwxNSArNDgsMTYgQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7
CiBjbGFzcyBBc3luY1N0YWNrVHJhY2U7CiBjbGFzcyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIElu
amVjdGVkU2NyaXB0TWFuYWdlcjsKLWNsYXNzIFNjcmlwdERlYnVnU2VydmVyOwogdHlwZWRlZiBT
dHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgRGVidWdnZXJC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIsIHB1YmxpYyBTY3JpcHREZWJ1Z0xpc3RlbmVyIHsKK2Ns
YXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5z
cGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIs
IHB1YmxpYyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlciB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7
CiBwdWJsaWM6CiAgICAgfkluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSBvdmVycmlkZTsKIAorICAg
IHN0YXRpYyBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBkZWJ1Z2dlckJyZWFrcG9pbnRGcm9tUGF5
bG9hZChFcnJvclN0cmluZyYsIGNvbnN0IEpTT046Ok9iamVjdCogb3B0aW9uc1BheWxvYWQpOwor
CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGJhY2t0cmFjZU9iamVjdEdyb3VwOwogCiAg
ICAgLy8gSW5zcGVjdG9yQWdlbnRCYXNlCkBAIC02OCw3ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2
b2lkIHNldEFzeW5jU3RhY2tUcmFjZURlcHRoKEVycm9yU3RyaW5nJiwgaW50IGRlcHRoKSBmaW5h
bDsKICAgICB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBhY3Rp
dmUpIGZpbmFsOwogICAgIHZvaWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiwgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0
aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgSlNP
Tjo6T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJl
ZlB0cjxKU09OOjpBcnJheU9mPFByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRp
b25zKSBmaW5hbDsKLSAgICB2b2lkIHNldEJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBK
U09OOjpPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMsIFByb3Rv
Y29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPFByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgZmluYWw7CisgICAgdm9pZCBzZXRCcmVha3BvaW50
KEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSlNPTjo6
T2JqZWN0KiBvcHRpb25zLCBQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJl
YWtwb2ludElkLCBSZWZQdHI8UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIG91dEFjdHVh
bExvY2F0aW9uKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcm
LCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBmaW5hbDsKICAgICB2b2lkIGNv
bnRpbnVlVW50aWxOZXh0UnVuTG9vcChFcnJvclN0cmluZyYpIGZpbmFsOwogICAgIHZvaWQgY29u
dGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgSlNPTjo6T2JqZWN0JiBsb2NhdGlv
bikgZmluYWw7CkBAIC04OSwxNSArOTIsMTUgQEAgcHVibGljOgogICAgIHZvaWQgZXZhbHVhdGVP
bkNhbGxGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9v
bCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRp
b25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wq
IGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2ZVJlc3VsdCwgY29uc3QgYm9vbCogZW11
bGF0ZVVzZXJHZXN0dXJlLCBSZWZQdHI8UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4m
IHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9uYWw8aW50PiYgc2F2ZWRS
ZXN1bHRJbmRleCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRTaG91bGRCbGFja2JveFVSTChFcnJv
clN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsLCBib29sIHNob3VsZEJsYWNrYm94LCBjb25zdCBi
b29sKiBjYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBpc1JlZ2V4KSBmaW5hbDsKIAotICAgIC8v
IFNjcmlwdERlYnVnTGlzdGVuZXIKLSAgICB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNl
SUQsIGNvbnN0IFNjcmlwdCYpIGZpbmFsOworICAgIC8vIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVy
CisgICAgdm9pZCBkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlELCBjb25zdCBKU0M6OkRlYnVn
Z2VyOjpTY3JpcHQmKSBmaW5hbDsKICAgICB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3Qg
U3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9y
TGluZSwgY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIGZpbmFsOwogICAgIHZvaWQgd2lsbFJ1
bk1pY3JvdGFzaygpIGZpbmFsOwogICAgIHZvaWQgZGlkUnVuTWljcm90YXNrKCkgZmluYWw7Ci0g
ICAgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlIGNhbGxG
cmFtZXMsIEpTQzo6SlNWYWx1ZSBleGNlcHRpb25PckNhdWdodFZhbHVlKSBmaW5hbDsKKyAgICB2
b2lkIGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkRlYnVnZ2VyQ2FsbEZyYW1l
JiwgSlNDOjpKU1ZhbHVlIGV4Y2VwdGlvbk9yQ2F1Z2h0VmFsdWUpIGZpbmFsOwogICAgIHZvaWQg
ZGlkQ29udGludWUoKSBmaW5hbDsKLSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZChpbnQg
YnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIpIGZpbmFsOwotICAgIHZvaWQgYnJlYWtwb2ludEFj
dGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0
aW9uJiwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBz
YW1wbGUpIGZpbmFsOworICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKEpTQzo6QnJlYWtw
b2ludEFjdGlvbklEKSBmaW5hbDsKKyAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Qcm9iZShKU0M6
OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpCcmVha3BvaW50QWN0aW9uSUQsIHVuc2lnbmVkIGJhdGNo
SWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgc2FtcGxlKSBmaW5hbDsKIAogICAg
IGJvb2wgaXNQYXVzZWQoKSBjb25zdDsKICAgICBib29sIGJyZWFrcG9pbnRzQWN0aXZlKCkgY29u
c3Q7CkBAIC0xMTgsMTAgKzEyMSwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsRGlzcGF0Y2hB
c3luY0NhbGwoQXN5bmNDYWxsVHlwZSwgaW50IGNhbGxiYWNrSWQpOwogICAgIHZvaWQgZGlkRGlz
cGF0Y2hBc3luY0NhbGwoKTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVu
dChEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0
PiYmIGRhdGEpOwotICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKKyAgICB2
b2lkIHNjaGVkdWxlUGF1c2VBdE5leHRPcHBvcnR1bml0eShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0
Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEgPSBudWxscHRyKTsKKyAg
ICB2b2lkIGNhbmNlbFBhdXNlQXROZXh0T3Bwb3J0dW5pdHkoKTsKICAgICBib29sIHBhdXNlT25O
ZXh0U3RhdGVtZW50RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1famF2YVNjcmlwdFBhdXNlU2No
ZWR1bGVkOyB9CiAKKyAgICBib29sIHNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludChK
U0M6OkJyZWFrcG9pbnQmLCBEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQ
dHI8SlNPTjo6T2JqZWN0PiYmIGRhdGEgPSBudWxscHRyKTsKKyAgICBib29sIGNhbmNlbFBhdXNl
Rm9yU3BlY2lhbEJyZWFrcG9pbnQoSlNDOjpCcmVha3BvaW50Jik7CisKICAgICB2b2lkIGJyZWFr
UHJvZ3JhbShEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uLCBSZWZQdHI8SlNPTjo6
T2JqZWN0PiYmIGRhdGEpOwogICAgIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNv
bnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAKQEAgLTE0MiwxMiArMTQ4LDEyIEBAIHByb3Rl
Y3RlZDoKICAgICBJbmplY3RlZFNjcmlwdE1hbmFnZXImIGluamVjdGVkU2NyaXB0TWFuYWdlcigp
IGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOyB9CiAgICAgdmlydHVhbCBJ
bmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBp
bnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAwOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXImIHNj
cmlwdERlYnVnU2VydmVyKCkgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsgfQorICAgIEpT
Qzo6RGVidWdnZXImIHNjcmlwdERlYnVnU2VydmVyKCkgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsgfQogCiAgICAgdmlydHVhbCB2b2lkIG11dGVDb25zb2xlKCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgPSAwOwogCi0gICAgdmlydHVhbCBTdHJpbmcgc291cmNl
TWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYpOworICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJj
ZU1hcFVSTEZvclNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmKTsKIAogICAgIHZv
aWQgZGlkQ2xlYXJHbG9iYWxPYmplY3QoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2xlYXJBc3lu
Y1N0YWNrVHJhY2VEYXRhKCkgeyB9CkBAIC0xNTcsOSArMTYzLDQ0IEBAIHByaXZhdGU6CiAKICAg
ICBSZWY8SlNPTjo6QXJyYXlPZjxQcm90b2NvbDo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IGN1cnJl
bnRDYWxsRnJhbWVzKGNvbnN0IEluamVjdGVkU2NyaXB0Jik7CiAKLSAgICB2b2lkIHJlc29sdmVC
cmVha3BvaW50KGNvbnN0IFNjcmlwdCYsIEpTQzo6QnJlYWtwb2ludCYpOwotICAgIHZvaWQgc2V0
QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnQmLCBib29sJiBleGlzdGluZyk7Ci0gICAgdm9pZCBk
aWRTZXRCcmVha3BvaW50KGNvbnN0IEpTQzo6QnJlYWtwb2ludCYsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFNjcmlwdEJyZWFrcG9pbnQmKTsKKyAgICBjbGFzcyBQcm90b2NvbEJyZWFrcG9pbnQgewor
ICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBwdWJsaWM6CisgICAgICAgIHN0
YXRpYyBPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IGZyb21QYXlsb2FkKEVycm9yU3RyaW5n
JiwgSlNDOjpTb3VyY2VJRCwgdW5zaWduZWQgbGluZU51bWJlciwgdW5zaWduZWQgY29sdW1uTnVt
YmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkID0gbnVsbHB0cik7CisgICAg
ICAgIHN0YXRpYyBPcHRpb25hbDxQcm90b2NvbEJyZWFrcG9pbnQ+IGZyb21QYXlsb2FkKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiB1cmwsIGJvb2wgaXNSZWdleCwgdW5zaWduZWQgbGluZU51
bWJlciwgdW5zaWduZWQgY29sdW1uTnVtYmVyLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQ
YXlsb2FkID0gbnVsbHB0cik7CisKKyAgICAgICAgUHJvdG9jb2xCcmVha3BvaW50KCk7CisgICAg
ICAgIFByb3RvY29sQnJlYWtwb2ludChKU0M6OlNvdXJjZUlELCB1bnNpZ25lZCBsaW5lTnVtYmVy
LCB1bnNpZ25lZCBjb2x1bW5OdW1iZXIsIGNvbnN0IFN0cmluZyYgY29uZGl0aW9uID0gbnVsbFN0
cmluZygpLCBKU0M6OkJyZWFrcG9pbnQ6OkFjdGlvbnNWZWN0b3ImJiBhY3Rpb25zID0geyB9LCBi
b29sIGF1dG9Db250aW51ZSA9IGZhbHNlLCBzaXplX3QgaWdub3JlQ291bnQgPSAwKTsKKyAgICAg
ICAgUHJvdG9jb2xCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgdXJsLCBib29sIGlzUmVnZXgsIHVu
c2lnbmVkIGxpbmVOdW1iZXIsIHVuc2lnbmVkIGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBj
b25kaXRpb24gPSBudWxsU3RyaW5nKCksIEpTQzo6QnJlYWtwb2ludDo6QWN0aW9uc1ZlY3RvciYm
IGFjdGlvbnMgPSB7IH0sIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2UsIHNpemVfdCBpZ25vcmVD
b3VudCA9IDApOworCisgICAgICAgIFJlZjxKU0M6OkJyZWFrcG9pbnQ+IGNyZWF0ZURlYnVnZ2Vy
QnJlYWtwb2ludChKU0M6OkJyZWFrcG9pbnRJRCwgSlNDOjpTb3VyY2VJRCkgY29uc3Q7CisKKyAg
ICAgICAgY29uc3QgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCYg
aWQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisKKyAgICAgICAgYm9vbCBtYXRjaGVzU2NyaXB0
VVJMKGNvbnN0IFN0cmluZyYpIGNvbnN0OworCisgICAgcHJpdmF0ZToKKyAgICAgICAgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCBtX2lkOworCisjaWYgQVNTRVJU
X0VOQUJMRUQKKyAgICAgICAgSlNDOjpTb3VyY2VJRCBtX3NvdXJjZUlEIHsgSlNDOjpub1NvdXJj
ZUlEIH07CisjZW5kaWYKKyAgICAgICAgU3RyaW5nIG1fdXJsOworICAgICAgICBib29sIG1faXNS
ZWdleCB7IGZhbHNlIH07CisKKyAgICAgICAgLy8gRklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcv
Yi8xNjI3NzE+IFdlYiBJbnNwZWN0b3I6IEFkb3B0IFRleHRQb3NpdGlvbiBpbiBJbnNwZWN0b3Ig
dG8gYXZvaWQgb25lQmFzZWRJbnQvemVyb0Jhc2VkSW50IGFtYmlndWl0eQorICAgICAgICB1bnNp
Z25lZCBtX2xpbmVOdW1iZXIgeyAwIH07CisgICAgICAgIHVuc2lnbmVkIG1fY29sdW1uTnVtYmVy
IHsgMCB9OworCisgICAgICAgIFN0cmluZyBtX2NvbmRpdGlvbjsKKyAgICAgICAgSlNDOjpCcmVh
a3BvaW50OjpBY3Rpb25zVmVjdG9yIG1fYWN0aW9uczsKKyAgICAgICAgYm9vbCBtX2F1dG9Db250
aW51ZSB7IGZhbHNlIH07CisgICAgICAgIHNpemVfdCBtX2lnbm9yZUNvdW50IHsgMCB9OworICAg
IH07CisKKyAgICBib29sIHJlc29sdmVCcmVha3BvaW50KGNvbnN0IEpTQzo6RGVidWdnZXI6OlNj
cmlwdCYsIEpTQzo6QnJlYWtwb2ludCYpOworICAgIGJvb2wgc2V0QnJlYWtwb2ludChKU0M6OkJy
ZWFrcG9pbnQmKTsKKyAgICB2b2lkIGRpZFNldEJyZWFrcG9pbnQoUHJvdG9jb2xCcmVha3BvaW50
JiwgSlNDOjpCcmVha3BvaW50Jik7CiAKICAgICBib29sIGFzc2VydFBhdXNlZChFcnJvclN0cmlu
ZyYpOwogICAgIHZvaWQgY2xlYXJEZWJ1Z2dlckJyZWFrcG9pbnRTdGF0ZSgpOwpAQCAtMTc4LDE3
ICsyMTksMTUgQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8SlNPTjo6T2JqZWN0PiBidWlsZEJyZWFr
cG9pbnRQYXVzZVJlYXNvbihKU0M6OkJyZWFrcG9pbnRJRCk7CiAgICAgUmVmUHRyPEpTT046Ok9i
amVjdD4gYnVpbGRFeGNlcHRpb25QYXVzZVJlYXNvbihKU0M6OkpTVmFsdWUgZXhjZXB0aW9uLCBj
b25zdCBJbmplY3RlZFNjcmlwdCYpOwogCi0gICAgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Q
cm90b2NvbChFcnJvclN0cmluZyYsIFJlZlB0cjxKU09OOjpBcnJheT4mIGFjdGlvbnMsIEJyZWFr
cG9pbnRBY3Rpb25zKiByZXN1bHQpOwotCiAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8dW5zaWduZWQs
IGludD4gQXN5bmNDYWxsSWRlbnRpZmllcjsKICAgICBzdGF0aWMgQXN5bmNDYWxsSWRlbnRpZmll
ciBhc3luY0NhbGxJZGVudGlmaWVyKEFzeW5jQ2FsbFR5cGUsIGludCBjYWxsYmFja0lkKTsKIAog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcj4gbV9mcm9udGVu
ZERpc3BhdGNoZXI7CiAgICAgUmVmUHRyPERlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFj
a2VuZERpc3BhdGNoZXI7CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOwogICAgIEluamVj
dGVkU2NyaXB0TWFuYWdlciYgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci0gICAgSGFzaE1hcDxK
U0M6OlNvdXJjZUlELCBTY3JpcHQ+IG1fc2NyaXB0czsKKyAgICBIYXNoTWFwPEpTQzo6U291cmNl
SUQsIEpTQzo6RGVidWdnZXI6OlNjcmlwdD4gbV9zY3JpcHRzOwogCiAgICAgc3RydWN0IEJsYWNr
Ym94Q29uZmlnIHsKICAgICAgICAgU3RyaW5nIHVybDsKQEAgLTIwOSwxMCArMjQ4LDEyIEBAIHBy
aXZhdGU6CiAgICAgSlNDOjpKU0dsb2JhbE9iamVjdCogbV9wYXVzZWRHbG9iYWxPYmplY3QgeyBu
dWxscHRyIH07CiAgICAgSlNDOjpTdHJvbmc8SlNDOjpVbmtub3duPiBtX2N1cnJlbnRDYWxsU3Rh
Y2s7CiAKLSAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPj4gbV9i
cmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURzOwotICAgIEhhc2hN
YXA8U3RyaW5nLCBSZWZQdHI8SlNPTjo6T2JqZWN0Pj4gbV9qYXZhU2NyaXB0QnJlYWtwb2ludHM7
Ci0gICAgSGFzaE1hcDxKU0M6OkJyZWFrcG9pbnRJRCwgU3RyaW5nPiBtX2RlYnVnZ2VyQnJlYWtw
b2ludElkZW50aWZpZXJUb0luc3BlY3RvckJyZWFrcG9pbnRJZGVudGlmaWVyOwotICAgIEpTQzo6
QnJlYWtwb2ludElEIG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEIHsgSlNDOjpub0Jy
ZWFrcG9pbnRJRCB9OworICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6
OkJyZWFrcG9pbnRJZCwgUHJvdG9jb2xCcmVha3BvaW50PiBtX3Byb3RvY29sQnJlYWtwb2ludEZv
clByb3RvY29sQnJlYWtwb2ludElEOworICAgIEhhc2hNYXA8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkJyZWFrcG9pbnRJZCwgSlNDOjpCcmVha3BvaW50c1ZlY3Rvcj4gbV9kZWJ1Z2dl
ckJyZWFrcG9pbnRzRm9yUHJvdG9jb2xCcmVha3BvaW50SUQ7CisgICAgSlNDOjpCcmVha3BvaW50
SUQgbV9uZXh0RGVidWdnZXJCcmVha3BvaW50SUQgeyBKU0M6Om5vQnJlYWtwb2ludElEICsgMSB9
OworCisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9jb250aW51ZVRvTG9jYXRpb25EZWJ1
Z2dlckJyZWFrcG9pbnQ7CisKICAgICBTaG91bGREaXNwYXRjaFJlc3VtZWQgbV9jb25kaXRpb25U
b0Rpc3BhdGNoUmVzdW1lZCB7IFNob3VsZERpc3BhdGNoUmVzdW1lZDo6Tm8gfTsKIAogICAgIERl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb24gbV9wYXVzZVJlYXNvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRp
bWVBZ2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwCmluZGV4IDJmY2IyZTdiODc1ZmQ0NzljNGRmNjBjNGUzY2Nh
YzQ1NDNjZmQyYjkuLjNlYTBkYTMzZDgwZDUxYzc5MTZjNjUwNjg3OGFhZTJiMDFiMDA2NzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcApAQCAtMzQsMTIgKzM0LDEyIEBACiAKICNp
bmNsdWRlICJDb21wbGV0aW9uLmgiCiAjaW5jbHVkZSAiQ29udHJvbEZsb3dQcm9maWxlci5oIgor
I2luY2x1ZGUgIkRlYnVnZ2VyLmgiCiAjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKICNpbmNs
dWRlICJJbmplY3RlZFNjcmlwdEhvc3QuaCIKICNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKICNpbmNsdWRlICJKU0xvY2suaCIKICNpbmNsdWRlICJQYXJzZXJFcnJvci5oIgotI2lu
Y2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQ29kZS5oIgogI2lu
Y2x1ZGUgIlR5cGVQcm9maWxlci5oIgogI2luY2x1ZGUgIlR5cGVQcm9maWxlckxvZy5oIgpAQCAt
NzMsNyArNzMsNyBAQCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6On5JbnNwZWN0b3JSdW50aW1lQWdl
bnQoKQogewogfQogCi1zdGF0aWMgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25z
U3RhdGUgc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0
RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIG5l
d1N0YXRlKQorc3RhdGljIEpTQzo6RGVidWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgc2V0
UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyJiBzY3JpcHREZWJ1Z1NlcnZlciwg
SlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBuZXdTdGF0ZSkKIHsKICAgICBh
dXRvIHByZXNlbnRTdGF0ZSA9IHNjcmlwdERlYnVnU2VydmVyLnBhdXNlT25FeGNlcHRpb25zU3Rh
dGUoKTsKICAgICBpZiAocHJlc2VudFN0YXRlICE9IG5ld1N0YXRlKQpAQCAtMTIzLDkgKzEyMyw5
IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpldmFsdWF0ZShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZXhwCiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNl
T25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gU2NyaXB0
RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKKyAgICBhdXRvIHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9u
czsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkp
Ci0gICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQ
YXVzZU9uRXhjZXB0aW9ucyk7CisgICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpE
ZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1
c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAK
QEAgLTE2NSw5ICsxNjUsOSBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1bmN0
aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbgogICAgIGlmIChvcHRp
b25hbEFyZ3VtZW50cykKICAgICAgICAgYXJndW1lbnRzID0gb3B0aW9uYWxBcmd1bWVudHMtPnRv
SlNPTlN0cmluZygpOwogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25z
U3RhdGUgcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gU2NyaXB0RGVidWdTZXJ2ZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlv
bnNTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9uczsKICAgICBpZiAo
YXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSkpCi0gICAgICAgIHBy
ZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
bV9zY3JpcHREZWJ1Z1NlcnZlciwgU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0
aW9ucyk7CisgICAgICAgIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNl
T25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9u
dFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBpZiAoYXNCb29sKGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSkpCiAgICAgICAgIG11dGVDb25zb2xlKCk7CiAKQEAgLTE4Nyw3ICsx
ODcsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UHJldmlldyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgbwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcHJldmlvdXNQ
YXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShtX3Njcmlw
dERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKTsK
KyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBhdXNlT25FeGNl
cHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNl
T25FeGNlcHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0ZWRTY3JpcHQu
Z2V0UHJldmlldyhlcnJvclN0cmluZywgb2JqZWN0SWQsIHByZXZpZXcpOwpAQCAtMjE2LDcgKzIx
Niw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRQcm9wZXJ0aWVzKEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1Bh
dXNlT25FeGNlcHRpb25zU3RhdGUgPSBzZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKG1fc2NyaXB0
RGVidWdTZXJ2ZXIsIFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwor
ICAgIGF1dG8gcHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2Vw
dGlvbnNTdGF0ZShtX3NjcmlwdERlYnVnU2VydmVyLCBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VP
bkV4Y2VwdGlvbnMpOwogICAgIG11dGVDb25zb2xlKCk7CiAKICAgICBpbmplY3RlZFNjcmlwdC5n
ZXRQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwgYXNCb29sKG93blByb3BlcnRpZXMp
LCBzdGFydCwgY291bnQsIGFzQm9vbChnZW5lcmF0ZVByZXZpZXcpLCBwcm9wZXJ0aWVzKTsKQEAg
LTI0OSw3ICsyNDksNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0RGlzcGxheWFi
bGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYwogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgU2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUg
cHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlID0gc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShtX3NjcmlwdERlYnVnU2VydmVyLCBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zKTsKKyAgICBhdXRvIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNldFBh
dXNlT25FeGNlcHRpb25zU3RhdGUobV9zY3JpcHREZWJ1Z1NlcnZlciwgSlNDOjpEZWJ1Z2dlcjo6
RG9udFBhdXNlT25FeGNlcHRpb25zKTsKICAgICBtdXRlQ29uc29sZSgpOwogCiAgICAgaW5qZWN0
ZWRTY3JpcHQuZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKGVycm9yU3RyaW5nLCBvYmplY3RJZCwg
c3RhcnQsIGNvdW50LCBhc0Jvb2woZ2VuZXJhdGVQcmV2aWV3KSwgcHJvcGVydGllcyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JS
dW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGUzY2I2MjQ1NmMyY2ZjZjdmMzhjNTg3NWUwZDZl
ODNjOWU0NDMwZmYuLjlkNzY1ZDk2MDdhYTlmNjg2MmIwNzZhYjM5YzZjYmQyODU0ZDZkNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSA8
d3RmL05vbmNvcHlhYmxlLmg+CiAKIG5hbWVzcGFjZSBKU0MgeworY2xhc3MgRGVidWdnZXI7CiBj
bGFzcyBWTTsKIH0KIApAQCAtNDQsNyArNDUsNiBAQCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIAog
Y2xhc3MgSW5qZWN0ZWRTY3JpcHQ7CiBjbGFzcyBJbmplY3RlZFNjcmlwdE1hbmFnZXI7Ci1jbGFz
cyBTY3JpcHREZWJ1Z1NlcnZlcjsKIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCiBjbGFz
cyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JSdW50aW1lQWdlbnQgOiBwdWJsaWMgSW5zcGVj
dG9yQWdlbnRCYXNlLCBwdWJsaWMgUnVudGltZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7CkBA
IC05NCw3ICs5NCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDb250cm9sRmxvd1Byb2ZpbGVy
RW5hYmxlZFN0YXRlKGJvb2wpOwogCiAgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyJiBtX2luamVj
dGVkU2NyaXB0TWFuYWdlcjsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlciYgbV9zY3JpcHREZWJ1Z1Nl
cnZlcjsKKyAgICBKU0M6OkRlYnVnZ2VyJiBtX3NjcmlwdERlYnVnU2VydmVyOwogICAgIEpTQzo6
Vk0mIG1fdm07CiAgICAgYm9vbCBtX2VuYWJsZWQge2ZhbHNlfTsKICAgICBib29sIG1faXNUeXBl
UHJvZmlsaW5nRW5hYmxlZCB7ZmFsc2V9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJBZ2VudC5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9m
aWxlckFnZW50LmNwcAppbmRleCA5N2NjOTFmZjVlMjJjOTk4MTM5M2I0ZGZjNTQ4OWMyMTgzODgw
ZmE5Li5jMTJlYzY5YTAxNWY1YWRiNjE3Zjg3YWQxMjlmN2Q5NWZlZWViMmEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JTY3JpcHRQ
cm9maWxlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50LmNwcApAQCAtMjYsMTEgKzI2LDExIEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yU2NyaXB0UHJvZmlsZXJB
Z2VudC5oIgogCisjaW5jbHVkZSAiRGVidWdnZXIuaCIKICNpbmNsdWRlICJEZWZlckdDLmgiCiAj
aW5jbHVkZSAiSGVhcElubGluZXMuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JFbnZpcm9ubWVudC5o
IgogI2luY2x1ZGUgIlNhbXBsaW5nUHJvZmlsZXIuaCIKLSNpbmNsdWRlICJTY3JpcHREZWJ1Z1Nl
cnZlci5oIgogI2luY2x1ZGUgPHd0Zi9TdG9wd2F0Y2guaD4KIAogbmFtZXNwYWNlIEluc3BlY3Rv
ciB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCmluZGV4IDNiODhkZWFi
Nzc1M2VhNWRhMWFhNzNmYzAyYjJhM2UyNzFjM2UwMzQuLjZmNzkyNzhkNTMzMTcxZTFmZGQwYWVm
ZTlkZDI5YjMzYmZkMWZlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5oCkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAgICBKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQoSlNBZ2VudENvbnRleHQmLCBJbnNwZWN0b3JDb25zb2xlQWdlbnQqKTsKICAgICB+SlNH
bG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KCkgZmluYWw7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xp
c3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3Qq
LCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgor
ICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3Qg
U3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogcHJpdmF0ZToKICAgICBJbmplY3RlZFNjcmlwdCBpbmpl
Y3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcmLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCkgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9y
L3Byb3RvY29sL0RPTS5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9ET00uanNvbgppbmRleCBmM2E3NzUzNzAyOTk1ZWJjNTQzMTJlYWQwYjBjMDI4YTU4YmIx
OWI5Li45OThiYzRhZmU2OGVjNzA1MDJhMDA5YjdiZjVlZDFkZTk3NThhYjMxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29sL0RPTS5qc29uCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NLmpzb24KQEAgLTMx
Niw3ICszMTYsOCBAQAogICAgICAgICAgICAgImRlc2NyaXB0aW9uIjogIlNldCBhIGJyZWFrcG9p
bnQgb24gdGhlIGdpdmVuIGV2ZW50IGxpc3RlbmVyLiIsCiAgICAgICAgICAgICAidGFyZ2V0VHlw
ZXMiOiBbInBhZ2UiXSwKICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAgICAg
ICAgIHsgIm5hbWUiOiAiZXZlbnRMaXN0ZW5lcklkIiwgIiRyZWYiOiAiRXZlbnRMaXN0ZW5lcklk
IiB9CisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJldmVudExpc3RlbmVySWQiLCAiJHJlZiI6
ICJFdmVudExpc3RlbmVySWQiIH0sCisgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJvcHRpb25z
IiwgIiRyZWYiOiAiRGVidWdnZXIuQnJlYWtwb2ludE9wdGlvbnMiLCAib3B0aW9uYWwiOiB0cnVl
LCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBseSB0byB0aGlzIGJyZWFrcG9pbnQgdG8g
bW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAgICAgIF0KICAgICAgICAgfSwKICAgICAg
ICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90b2Nv
bC9ET01EZWJ1Z2dlci5qc29uIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9wcm90
b2NvbC9ET01EZWJ1Z2dlci5qc29uCmluZGV4IDVhMTg5NzYyODI0NDdmN2RlZWIwNmZkZmRlMzI4
OGUzYmEzNjllODEuLmVlZmE5MzNmOWY1ZDJjMWY0ZmM0ZGU3NTY1NzU3NDk0YmJlYjkzZTIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvcHJvdG9jb2wvRE9NRGVi
dWdnZXIuanNvbgorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Byb3RvY29s
L0RPTURlYnVnZ2VyLmpzb24KQEAgLTM5LDcgKzM5LDggQEAKICAgICAgICAgICAgICJkZXNjcmlw
dGlvbiI6ICJTZXRzIGJyZWFrcG9pbnQgb24gcGFydGljdWxhciBldmVudCBvZiBnaXZlbiB0eXBl
LiIsCiAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsKICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogImJyZWFrcG9pbnRUeXBlIiwgIiRyZWYiOiAiRXZlbnRCcmVha3BvaW50VHlwZSIgfSwKLSAg
ICAgICAgICAgICAgICB7ICJuYW1lIjogImV2ZW50TmFtZSIsICJ0eXBlIjogInN0cmluZyIsICJv
cHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJUaGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMg
ZXZlbnQgdG8gc3RvcCBvbi4iIH0KKyAgICAgICAgICAgICAgICB7ICJuYW1lIjogImV2ZW50TmFt
ZSIsICJ0eXBlIjogInN0cmluZyIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJU
aGUgbmFtZSBvZiB0aGUgc3BlY2lmaWMgZXZlbnQgdG8gc3RvcCBvbi4iIH0sCisgICAgICAgICAg
ICAgICAgeyAibmFtZSI6ICJvcHRpb25zIiwgIiRyZWYiOiAiRGVidWdnZXIuQnJlYWtwb2ludE9w
dGlvbnMiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiT3B0aW9ucyB0byBhcHBs
eSB0byB0aGlzIGJyZWFrcG9pbnQgdG8gbW9kaWZ5IGl0cyBiZWhhdmlvci4iIH0KICAgICAgICAg
ICAgIF0KICAgICAgICAgfSwKICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNNaWNyb3Rhc2suY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNNaWNyb3Rhc2suY3BwCmluZGV4IDAzZWU2MGIzNjU5NmFiODI4NWRmYThiNDM3MWQ5
OWZkNDRlOTk2MTQuLjQ0Yjg5NDU2NzMwYmVlMzYzZWRjMTVlMTgyMmMzOTgwZTFiYmFiNTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTTWljcm90YXNrLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU01pY3JvdGFzay5jcHAKQEAgLTkx
LDYgKzkxLDkgQEAgdm9pZCBKU01pY3JvdGFzazo6cnVuKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiAKICAgICBwcm9maWxlZENhbGwoZ2xvYmFsT2JqZWN0LCBQcm9maWxpbmdSZWFzb246
Ok1pY3JvdGFzaywgbV9qb2IuZ2V0KCksIGhhbmRsZXJDYWxsRGF0YSwganNVbmRlZmluZWQoKSwg
aGFuZGxlckFyZ3VtZW50cyk7CiAgICAgc2NvcGUuY2xlYXJFeGNlcHRpb24oKTsKKworICAgIGlm
IChVTkxJS0VMWShnbG9iYWxPYmplY3QtPmhhc0RlYnVnZ2VyKCkpKQorICAgICAgICBnbG9iYWxP
YmplY3QtPmRlYnVnZ2VyKCktPmRpZFJ1bk1pY3JvdGFzaygpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCmluZGV4IDFkYWMzNTQyNmU5NmQyZmZl
ZGI5YTE4ZTg0MTUzMDljMDM5MDg3NTguLjM1NGJlZTk5ODkxYjQ4YWRlN2RlZGUyY2RhZDk5MWJi
OWFkZmY0ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNwcApAQCAtMzMwLDcgKzMzMCw3
IEBAIHZvaWQgRXZlbnRUYXJnZXQ6OmlubmVySW52b2tlRXZlbnRMaXN0ZW5lcnMoRXZlbnQmIGV2
ZW50LCBFdmVudExpc3RlbmVyVmVjdG9yIGxpCiAKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjp3aWxsSGFuZGxlRXZlbnQoY29udGV4dCwgZXZlbnQsICpyZWdpc3RlcmVkTGlzdGVu
ZXIpOwogICAgICAgICByZWdpc3RlcmVkTGlzdGVuZXItPmNhbGxiYWNrKCkuaGFuZGxlRXZlbnQo
Y29udGV4dCwgZXZlbnQpOwotICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhh
bmRsZUV2ZW50KGNvbnRleHQpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRp
ZEhhbmRsZUV2ZW50KGNvbnRleHQsIGV2ZW50LCAqcmVnaXN0ZXJlZExpc3RlbmVyKTsKIAogICAg
ICAgICBpZiAocmVnaXN0ZXJlZExpc3RlbmVyLT5pc1Bhc3NpdmUoKSkKICAgICAgICAgICAgIGV2
ZW50LnNldEluUGFzc2l2ZUxpc3RlbmVyKGZhbHNlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggMTkxY2Y4ZDBl
MjU2MmM0MWQwM2M1ODMwYzhlZTA2YjIzOWE4ZmU4OS4uMGEwODE4MDc5OGZjOWRkY2M1ZGE3NWNm
ZTAzNWY1NmQ3NmUxMDg0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTQxOCwxMyArNDE4LDEzIEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lCiAgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPndpbGxIYW5kbGVF
dmVudChldmVudCwgbGlzdGVuZXIpOwogfQogCi12b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlv
bjo6ZGlkSGFuZGxlRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdB
Z2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSGFuZGxlRXZlbnRJbXBs
KEluc3RydW1lbnRpbmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMsIEV2ZW50JiBldmVudCwg
Y29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQogewogICAgIGlmIChhdXRv
KiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2Fs
bCgpOwogCiAgICAgaWYgKGF1dG8qIGRvbURlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdl
bnRzLmVuYWJsZWRET01EZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRvbURlYnVnZ2VyQWdlbnQt
PmRpZEhhbmRsZUV2ZW50KCk7CisgICAgICAgIGRvbURlYnVnZ2VyQWdlbnQtPmRpZEhhbmRsZUV2
ZW50KGV2ZW50LCBsaXN0ZW5lcik7CiB9CiAKIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWREaXNwYXRjaEV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBjb25zdCBFdmVudCYgZXZlbnQpCkBAIC00NzMsMTAgKzQ3MywxMiBAQCB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEZpcmVUaW1lckltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYgaW5zdHJ1bWVudAogICAgICAgICB0aW1lbGluZUFnZW50LT53aWxsRmlyZVRpbWVyKHRp
bWVySWQsIGZyYW1lRm9yU2NyaXB0RXhlY3V0aW9uQ29udGV4dChjb250ZXh0KSk7CiB9CiAKLXZv
aWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlVGltZXJJbXBsKEluc3RydW1lbnRp
bmdBZ2VudHMmIGluc3RydW1lbnRpbmdBZ2VudHMpCit2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkRmlyZVRpbWVySW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiBpbnN0cnVtZW50aW5n
QWdlbnRzLCBpbnQgLyogdGltZXJJZCAqLywgYm9vbCBvbmVTaG90KQogewogICAgIGlmIChhdXRv
KiB3ZWJEZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkV2ViRGVidWdn
ZXJBZ2VudCgpKQogICAgICAgICB3ZWJEZWJ1Z2dlckFnZW50LT5kaWREaXNwYXRjaEFzeW5jQ2Fs
bCgpOworICAgIGlmIChhdXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkRE9NRGVidWdnZXJBZ2VudCgpKQorICAgICAgICBkb21EZWJ1Z2dlckFnZW50LT5k
aWRGaXJlVGltZXIob25lU2hvdCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLnRyYWNraW5nVGltZWxpbmVBZ2VudCgpKQogICAgICAgICB0aW1lbGlu
ZUFnZW50LT5kaWRGaXJlVGltZXIoKTsKIH0KQEAgLTcxNiw2ICs3MTgsOSBAQCB2b2lkIEluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5zdHJ1bWVudGluZ0FnZW50
cyYgaW5zdHJ1bWVudAogICAgICAgICBpZiAoYXV0byogcGFnZURlYnVnZ2VyQWdlbnQgPSBpbnN0
cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRQYWdlRGVidWdnZXJBZ2VudCgpKQogICAgICAgICAgICAg
cGFnZURlYnVnZ2VyQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogCisgICAgICAgIGlmIChh
dXRvKiBkb21EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy5lbmFibGVkRE9NRGVi
dWdnZXJBZ2VudCgpKQorICAgICAgICAgICAgZG9tRGVidWdnZXJBZ2VudC0+bWFpbkZyYW1lTmF2
aWdhdGVkKCk7CisKICAgICAgICAgaWYgKGF1dG8qIGVuYWJsZWRQYWdlSGVhcEFnZW50ID0gaW5z
dHJ1bWVudGluZ0FnZW50cy5lbmFibGVkUGFnZUhlYXBBZ2VudCgpKQogICAgICAgICAgICAgZW5h
YmxlZFBhZ2VIZWFwQWdlbnQtPm1haW5GcmFtZU5hdmlnYXRlZCgpOwogICAgIH0KQEAgLTEyNjIs
NiArMTI2Nyw4IEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRGaXJlQW5pbWF0
aW9uRnJhbWVJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmIGluCiB7CiAgICAgaWYgKGF1dG8qIHdl
YkRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLmVuYWJsZWRXZWJEZWJ1Z2dlckFn
ZW50KCkpCiAgICAgICAgIHdlYkRlYnVnZ2VyQWdlbnQtPmRpZERpc3BhdGNoQXN5bmNDYWxsKCk7
CisgICAgaWYgKGF1dG8qIHBhZ2VET01EZWJ1Z2dlckFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy5lbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQoKSkKKyAgICAgICAgcGFnZURPTURlYnVnZ2Vy
QWdlbnQtPmRpZEZpcmVBbmltYXRpb25GcmFtZSgpOwogICAgIGlmIChhdXRvKiB0aW1lbGluZUFn
ZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy50cmFja2luZ1RpbWVsaW5lQWdlbnQoKSkKICAgICAg
ICAgdGltZWxpbmVBZ2VudC0+ZGlkRmlyZUFuaW1hdGlvbkZyYW1lKCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgKaW5kZXgg
NzMwZjMzMjUxZGQwMjc0NDA0YWRlZjhmNmYzZmI2ZTA5Y2Q2ZmUyOS4uNWFkNzllMGQxNmE5NTMy
YjgxYzhiNWFmODBhYWNhY2U1OTg2OWQxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaApAQCAtMTcxLDE0ICsxNzEsMTQgQEAg
cHVibGljOgogICAgIHN0YXRpYyB2b2lkIHdpbGxEaXNwYXRjaEV2ZW50KERvY3VtZW50JiwgY29u
c3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50KERvY3VtZW50Jiwg
Y29uc3QgRXZlbnQmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsSGFuZGxlRXZlbnQoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYsIEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsK
LSAgICBzdGF0aWMgdm9pZCBkaWRIYW5kbGVFdmVudChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7
CisgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYs
IEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAgICBzdGF0aWMgdm9p
ZCB3aWxsRGlzcGF0Y2hFdmVudE9uV2luZG93KEZyYW1lKiwgY29uc3QgRXZlbnQmLCBET01XaW5k
b3cmKTsKICAgICBzdGF0aWMgdm9pZCBkaWREaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqLCBj
b25zdCBFdmVudCYpOwogICAgIHN0YXRpYyB2b2lkIGV2ZW50RGlkUmVzZXRBZnRlckRpc3BhdGNo
KGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEV2YWx1YXRlU2NyaXB0KEZyYW1l
JiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29sdW1uTnVtYmVyKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdChGcmFtZSYpOwogICAgIHN0YXRpYyB2
b2lkIHdpbGxGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGludCB0aW1lcklkLCBi
b29sIG9uZVNob3QpOwotICAgIHN0YXRpYyB2b2lkIGRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRp
b25Db250ZXh0Jik7CisgICAgc3RhdGljIHZvaWQgZGlkRmlyZVRpbWVyKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKICAgICBzdGF0aWMgdm9pZCBk
aWRJbnZhbGlkYXRlTGF5b3V0KEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbExheW91dChG
cmFtZSYpOwogICAgIHN0YXRpYyB2b2lkIGRpZExheW91dChGcmFtZSYsIFJlbmRlck9iamVjdCYp
OwpAQCAtMzk0LDcgKzM5NCw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJvb2wgaXNFdmVudExp
c3RlbmVyRGlzYWJsZWRJbXBsKEluc3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudFRhcmdldCYsIGNv
bnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2FwdHVyZSk7
CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRJbXBsKEluc3RydW1lbnRpbmdBZ2Vu
dHMmLCBEb2N1bWVudCYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEhhbmRs
ZUV2ZW50SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVk
RXZlbnRMaXN0ZW5lciYpOwotICAgIHN0YXRpYyB2b2lkIGRpZEhhbmRsZUV2ZW50SW1wbChJbnN0
cnVtZW50aW5nQWdlbnRzJik7CisgICAgc3RhdGljIHZvaWQgZGlkSGFuZGxlRXZlbnRJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBFdmVudCYsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVy
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIGNvbnN0IEV2ZW50Jik7CiAgICAgc3RhdGljIHZvaWQgd2lsbERpc3BhdGNoRXZlbnRP
bldpbmRvd0ltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGNvbnN0IEV2ZW50JiwgRE9NV2luZG93
Jik7CiAgICAgc3RhdGljIHZvaWQgZGlkRGlzcGF0Y2hFdmVudE9uV2luZG93SW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzJiwgY29uc3QgRXZlbnQmKTsKQEAgLTQwMiw3ICs0MDIsNyBAQCBwcml2YXRl
OgogICAgIHN0YXRpYyB2b2lkIHdpbGxFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1bWVudGluZ0Fn
ZW50cyYsIEZyYW1lJiwgY29uc3QgU3RyaW5nJiB1cmwsIGludCBsaW5lTnVtYmVyLCBpbnQgY29s
dW1uTnVtYmVyKTsKICAgICBzdGF0aWMgdm9pZCBkaWRFdmFsdWF0ZVNjcmlwdEltcGwoSW5zdHJ1
bWVudGluZ0FnZW50cyYsIEZyYW1lJik7CiAgICAgc3RhdGljIHZvaWQgd2lsbEZpcmVUaW1lcklt
cGwoSW5zdHJ1bWVudGluZ0FnZW50cyYsIGludCB0aW1lcklkLCBib29sIG9uZVNob3QsIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmKTsKLSAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmKTsKKyAgICBzdGF0aWMgdm9pZCBkaWRGaXJlVGltZXJJbXBsKElu
c3RydW1lbnRpbmdBZ2VudHMmLCBpbnQgdGltZXJJZCwgYm9vbCBvbmVTaG90KTsKICAgICBzdGF0
aWMgdm9pZCBkaWRJbnZhbGlkYXRlTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRzJiwgRnJh
bWUmKTsKICAgICBzdGF0aWMgdm9pZCB3aWxsTGF5b3V0SW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
JiwgRnJhbWUmKTsKICAgICBzdGF0aWMgdm9pZCBkaWRMYXlvdXRJbXBsKEluc3RydW1lbnRpbmdB
Z2VudHMmLCBSZW5kZXJPYmplY3QmKTsKQEAgLTg5MiwxMSArODkyLDExIEBAIGlubGluZSB2b2lk
IEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6d2lsbEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvCiAgICAgICAgIHJldHVybiB3aWxsSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzLCBldmVudCwgbGlzdGVuZXIpOwogfQogCi1pbmxpbmUgdm9pZCBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRsZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCitpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEhhbmRs
ZUV2ZW50KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIEV2ZW50JiBldmVudCwgY29u
c3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImIGxpc3RlbmVyKQogewogICAgIEZBU1RfUkVUVVJO
X0lGX05PX0ZST05URU5EUyh2b2lkKCkpOwogICAgIGlmIChJbnN0cnVtZW50aW5nQWdlbnRzKiBp
bnN0cnVtZW50aW5nQWdlbnRzID0gaW5zdHJ1bWVudGluZ0FnZW50c0ZvckNvbnRleHQoY29udGV4
dCkpCi0gICAgICAgIHJldHVybiBkaWRIYW5kbGVFdmVudEltcGwoKmluc3RydW1lbnRpbmdBZ2Vu
dHMpOworICAgICAgICByZXR1cm4gZGlkSGFuZGxlRXZlbnRJbXBsKCppbnN0cnVtZW50aW5nQWdl
bnRzLCBldmVudCwgbGlzdGVuZXIpOwogfQogCiBpbmxpbmUgdm9pZCBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OndpbGxEaXNwYXRjaEV2ZW50T25XaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBF
dmVudCYgZXZlbnQsIERPTVdpbmRvdyYgd2luZG93KQpAQCAtOTQ2LDExICs5NDYsMTEgQEAgaW5s
aW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjp3aWxsRmlyZVRpbWVyKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnQKICAgICAgICAgd2lsbEZpcmVUaW1lckltcGwoKmluc3RydW1l
bnRpbmdBZ2VudHMsIHRpbWVySWQsIG9uZVNob3QsIGNvbnRleHQpOwogfQogCi1pbmxpbmUgdm9p
ZCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZEZpcmVUaW1lcihTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KQoraW5saW5lIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXIoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgaW50IHRpbWVySWQs
IGJvb2wgb25lU2hvdCkKIHsKICAgICBGQVNUX1JFVFVSTl9JRl9OT19GUk9OVEVORFModm9pZCgp
KTsKICAgICBpZiAoYXV0byogaW5zdHJ1bWVudGluZ0FnZW50cyA9IGluc3RydW1lbnRpbmdBZ2Vu
dHNGb3JDb250ZXh0KGNvbnRleHQpKQotICAgICAgICBkaWRGaXJlVGltZXJJbXBsKCppbnN0cnVt
ZW50aW5nQWdlbnRzKTsKKyAgICAgICAgZGlkRmlyZVRpbWVySW1wbCgqaW5zdHJ1bWVudGluZ0Fn
ZW50cywgdGltZXJJZCwgb25lU2hvdCk7CiB9CiAKIGlubGluZSB2b2lkIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91dChGcmFtZSYgZnJhbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4IDE3
YTY2ZjEwYzFhMjI2MWFmMWQ4ZDFlN2VhYmEyZTU4YTE5ZTI0ZGEuLjA1ZmVmYmNiZWM2ZDU2MjQ2
ZTcyOGY2MTkwNTdmODc2NjkxNjY3MjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC01NCwxOCArNTQsMjIgQEAgdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIHVzaW5nIG5hbWVzcGFjZSBJbnNwZWN0b3I7CiAKIFBhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlcjo6UGFnZVNjcmlwdERlYnVnU2VydmVyKFBhZ2UmIHBhZ2UpCi0gICAgOiBTY3Jp
cHREZWJ1Z1NlcnZlcihXZWJDb3JlOjpjb21tb25WTSgpKQorICAgIDogRGVidWdnZXIoV2ViQ29y
ZTo6Y29tbW9uVk0oKSkKICAgICAsIG1fcGFnZShwYWdlKQogewogfQogCiB2b2lkIFBhZ2VTY3Jp
cHREZWJ1Z1NlcnZlcjo6YXR0YWNoRGVidWdnZXIoKQogeworICAgIEpTQzo6RGVidWdnZXI6OmF0
dGFjaERlYnVnZ2VyKCk7CisKICAgICBtX3BhZ2Uuc2V0RGVidWdnZXIodGhpcyk7CiB9CiAKIHZv
aWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkZXRhY2hEZWJ1Z2dlcihib29sIGlzQmVpbmdEZXN0
cm95ZWQpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6ZGV0YWNoRGVidWdnZXIoaXNCZWluZ0Rlc3Ry
b3llZCk7CisKICAgICBtX3BhZ2Uuc2V0RGVidWdnZXIobnVsbHB0cik7CiAgICAgaWYgKCFpc0Jl
aW5nRGVzdHJveWVkKQogICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOwpAQCAtNzcs
MTggKzgxLDI0IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygpCiAgICAgRGVidWdnZXI6OnJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCk7CiB9CiAK
LXZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRQYXVzZShKU0dsb2JhbE9iamVjdCopCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkUGF1c2UoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpkaWRQYXVzZShnbG9iYWxPYmplY3QpOwor
CiAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChtX3BhZ2UuZ3JvdXAoKSwgdHJ1ZSk7CiB9CiAKLXZv
aWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpkaWRDb250aW51ZShKU0dsb2JhbE9iamVjdCopCit2
b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6ZGlkQ29udGludWUoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpkaWRDb250aW51ZShnbG9iYWxPYmpl
Y3QpOworCiAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChtX3BhZ2UuZ3JvdXAoKSwgZmFsc2UpOwog
fQogCiB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWQo
KQogeworICAgIEpTQzo6RGVidWdnZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCk7CisKICNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIC8vIE9uIGlPUywgcnVubmluZyBhbiBFdmVudExv
b3AgY2F1c2VzIHVzIHRvIHJ1biBhIG5lc3RlZCBXZWJSdW5Mb29wLgogICAgIC8vIFNpbmNlIHRo
ZSBXZWJUaHJlYWQgaXMgYXV0b3JlbGVhc2VkIGF0IHRoZSBlbmQgb2YgcnVuIGxvb3AgaXRlcmF0
aW9ucwpAQCAtMTE1LDcgKzEyNSw3IEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVyOjpydW5F
dmVudExvb3BXaGlsZVBhdXNlZEludGVybmFsKCkKIAogICAgIG1fcGFnZS5pbmNyZW1lbnROZXN0
ZWRSdW5Mb29wQ291bnQoKTsKIAotICAgIHdoaWxlICghbV9kb25lUHJvY2Vzc2luZ0RlYnVnZ2Vy
RXZlbnRzKSB7CisgICAgd2hpbGUgKCFkb25lUHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpIHsK
ICAgICAgICAgaWYgKCFwbGF0Zm9ybVNob3VsZENvbnRpbnVlUnVubmluZ0V2ZW50TG9vcFdoaWxl
UGF1c2VkKCkpCiAgICAgICAgICAgICBicmVhazsKICAgICB9CkBAIC0xMjUsMTEgKzEzNSwxMyBA
QCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6cnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRl
cm5hbCgpCiAKIGJvb2wgUGFnZVNjcmlwdERlYnVnU2VydmVyOjppc0NvbnRlbnRTY3JpcHQoSlNH
bG9iYWxPYmplY3QqIHN0YXRlKSBjb25zdAogewotICAgIHJldHVybiAmY3VycmVudFdvcmxkKCpz
dGF0ZSkgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpOworICAgIHJldHVybiAmY3VycmVudFdv
cmxkKCpzdGF0ZSkgIT0gJm1haW5UaHJlYWROb3JtYWxXb3JsZCgpIHx8IEpTQzo6RGVidWdnZXI6
OmlzQ29udGVudFNjcmlwdChzdGF0ZSk7CiB9CiAKIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpyZXBvcnRFeGNlcHRpb24oSlNHbG9iYWxPYmplY3QqIHN0YXRlLCBKU0M6OkV4Y2VwdGlvbiog
ZXhjZXB0aW9uKSBjb25zdAogeworICAgIEpTQzo6RGVidWdnZXI6OnJlcG9ydEV4Y2VwdGlvbihz
dGF0ZSwgZXhjZXB0aW9uKTsKKwogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlvbihzdGF0ZSwg
ZXhjZXB0aW9uKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1Bh
Z2VTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3Jp
cHREZWJ1Z1NlcnZlci5oCmluZGV4IDIyZDhjZjc4OWQ5NWI4ZDc4ZmVhZTNhNDlhMGEwZTVkYWMz
OWZlMDYuLmZmMzgxOWRiNDg1ZDQzMDc0NmRjNmZjOWRhYTU1Y2RhNmFhNzJjZDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmgKQEAgLTI2
LDcgKzI2LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHREZWJ1Z1NlcnZlci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyLmg+
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzQsNyArMzQsNyBAQCBjbGFzcyBGcmFtZTsK
IGNsYXNzIFBhZ2U7CiBjbGFzcyBQYWdlR3JvdXA7CiAKLWNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1Nl
cnZlciBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnU2VydmVyIHsKK2NsYXNz
IFBhZ2VTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBKU0M6OkRlYnVnZ2VyIHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlU2NyaXB0RGVidWdTZXJ2ZXIpOwogICAgIFdURl9N
QUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNDQsMTQgKzQ0LDE0IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHJlY29tcGlsZUFsbEpTRnVuY3Rpb25zKCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBhdHRhY2hEZWJ1Z2dlcigpIG92ZXJyaWRlOwotICAgIHZvaWQgZGV0YWNoRGVi
dWdnZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVycmlkZTsKLQotICAgIHZvaWQgZGlkUGF1
c2UoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgZGlkQ29udGludWUo
SlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlOwotICAgIHZvaWQgcnVuRXZlbnRMb29wV2hp
bGVQYXVzZWQoKSBvdmVycmlkZTsKLSAgICBib29sIGlzQ29udGVudFNjcmlwdChKU0M6OkpTR2xv
YmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlND
OjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhjZXB0aW9uKikgY29uc3Qgb3ZlcnJpZGU7CisgICAg
Ly8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKKyAgICB2
b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgZmluYWw7CisgICAgdm9p
ZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgZmluYWw7CisgICAgdm9pZCBkaWRDb250
aW51ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgZmluYWw7CisgICAgdm9pZCBydW5FdmVudExvb3BX
aGlsZVBhdXNlZCgpIGZpbmFsOworICAgIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6SlNHbG9i
YWxPYmplY3QqKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpT
R2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24qKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQg
cnVuRXZlbnRMb29wV2hpbGVQYXVzZWRJbnRlcm5hbCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwCmluZGV4IGNjNDViMWY0YzJi
MTEyNmRhYTFlMjBkZTE2Yjg3YTJjNjZiNzkyY2MuLmVlZGVkOGY0ODI5Y2U4NDMwNjQzMzIwNzdk
ODMwMmMzMWRkYTliM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuY3BwCkBAIC0zNiw3ICszNiw2IEBACiAjaW5jbHVkZSAiRmxvYXRR
dWFkLmgiCiAjaW5jbHVkZSAiSlNFeGVjU3RhdGUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9JbnNwZWN0b3JQcm90b2NvbE9iamVjdHMuaD4KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9T
Y3JpcHRCcmVha3BvaW50Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0
YWNrLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0Q2FsbFN0YWNrRmFjdG9yeS5o
PgogCkBAIC03MywxMCArNzIsMTAgQEAgUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRG
YWN0b3J5OjpjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29uc3QgU3RyaW5nJgogICAgIHJldHVy
biBkYXRhOwogfQogCi1SZWY8SlNPTjo6T2JqZWN0PiBUaW1lbGluZVJlY29yZEZhY3Rvcnk6OmNy
ZWF0ZVByb2JlU2FtcGxlRGF0YShjb25zdCBTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24s
IHVuc2lnbmVkIHNhbXBsZUlkKQorUmVmPEpTT046Ok9iamVjdD4gVGltZWxpbmVSZWNvcmRGYWN0
b3J5OjpjcmVhdGVQcm9iZVNhbXBsZURhdGEoSlNDOjpCcmVha3BvaW50QWN0aW9uSUQgYWN0aW9u
SUQsIHVuc2lnbmVkIHNhbXBsZUlkKQogewogICAgIFJlZjxKU09OOjpPYmplY3Q+IGRhdGEgPSBK
U09OOjpPYmplY3Q6OmNyZWF0ZSgpOwotICAgIGRhdGEtPnNldEludGVnZXIoInByb2JlSWQiX3Ms
IGFjdGlvbi5pZGVudGlmaWVyKTsKKyAgICBkYXRhLT5zZXRJbnRlZ2VyKCJwcm9iZUlkIl9zLCBh
Y3Rpb25JRCk7CiAgICAgZGF0YS0+c2V0SW50ZWdlcigic2FtcGxlSWQiX3MsIHNhbXBsZUlkKTsK
ICAgICByZXR1cm4gZGF0YTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9UaW1lbGluZVJlY29yZEZhY3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1l
bGluZVJlY29yZEZhY3RvcnkuaAppbmRleCA1MzA3NTU4NzU5YTM4Mzg1YmI4Yjg1ZTliOWNkZDE3
MGIxM2Q4MjgxLi40MWI2ZGQ2NDUwOWQwNGY3NjFmYWMzOTY0Zjc4N2QzMjg5NGUxMTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5oCkBA
IC0zMSwxNSArMzEsMTIgQEAKICAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSA8SmF2YVNjcmlw
dENvcmUvRGVidWdnZXJQcmltaXRpdmVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNp
bmNsdWRlIDx3dGYvSlNPTlZhbHVlcy5oPgogI2luY2x1ZGUgPHd0Zi9TZWNvbmRzLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLW5hbWVzcGFjZSBJbnNwZWN0b3Igewotc3Ry
dWN0IFNjcmlwdEJyZWFrcG9pbnRBY3Rpb247Ci19Ci0KIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Y2xhc3MgRXZlbnQ7CkBAIC01MSw3ICs0OCw3IEBAIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8
SlNPTjo6T2JqZWN0PiBjcmVhdGVGdW5jdGlvbkNhbGxEYXRhKGNvbnN0IFN0cmluZyYgc2NyaXB0
TmFtZSwgaW50IHNjcmlwdExpbmUsIGludCBzY3JpcHRDb2x1bW4pOwogICAgIHN0YXRpYyBSZWY8
SlNPTjo6T2JqZWN0PiBjcmVhdGVDb25zb2xlUHJvZmlsZURhdGEoY29uc3QgU3RyaW5nJiB0aXRs
ZSk7Ci0gICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZVByb2JlU2FtcGxlRGF0YShj
b25zdCBJbnNwZWN0b3I6OlNjcmlwdEJyZWFrcG9pbnRBY3Rpb24mLCB1bnNpZ25lZCBzYW1wbGVJ
ZCk7CisgICAgc3RhdGljIFJlZjxKU09OOjpPYmplY3Q+IGNyZWF0ZVByb2JlU2FtcGxlRGF0YShK
U0M6OkJyZWFrcG9pbnRBY3Rpb25JRCwgdW5zaWduZWQgc2FtcGxlSWQpOwogICAgIHN0YXRpYyBS
ZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVFdmVudERpc3BhdGNoRGF0YShjb25zdCBFdmVudCYpOwog
ICAgIHN0YXRpYyBSZWY8SlNPTjo6T2JqZWN0PiBjcmVhdGVHZW5lcmljVGltZXJEYXRhKGludCB0
aW1lcklkKTsKICAgICBzdGF0aWMgUmVmPEpTT046Ok9iamVjdD4gY3JlYXRlVGltZXJJbnN0YWxs
RGF0YShpbnQgdGltZXJJZCwgU2Vjb25kcyB0aW1lb3V0LCBib29sIHNpbmdsZVNob3QpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5j
cHAKaW5kZXggNGE2OTE5Njk3Y2JjMmZlOGQ5MzkxMmM1MTdkZWVmNWEyNDg4OWRlNi4uMzYxZGIx
NmM0ZDRhNGUxOTM5NDQ5NzgwOWU0YmYxYzNiYzliNGUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlclNjcmlwdERlYnVnU2VydmVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC00NCwxOCAr
NDQsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
IAogV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OldvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtl
ckdsb2JhbFNjb3BlJiBjb250ZXh0KQotICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoY29udGV4dC5z
Y3JpcHQoKS0+dm0oKSkKKyAgICA6IERlYnVnZ2VyKGNvbnRleHQuc2NyaXB0KCktPnZtKCkpCiAg
ICAgLCBtX3dvcmtlckdsb2JhbFNjb3BlKGNvbnRleHQpCiB7CiB9CiAKIHZvaWQgV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXI6OmF0dGFjaERlYnVnZ2VyKCkKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjph
dHRhY2hEZWJ1Z2dlcigpOworCiAgICAgbV93b3JrZXJHbG9iYWxTY29wZS5zY3JpcHQoKS0+YXR0
YWNoRGVidWdnZXIodGhpcyk7CiB9CiAKIHZvaWQgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXI6OmRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKKyAgICBKU0M6OkRlYnVnZ2Vy
OjpkZXRhY2hEZWJ1Z2dlcihpc0JlaW5nRGVzdHJveWVkKTsKKwogICAgIGlmIChtX3dvcmtlckds
b2JhbFNjb3BlLnNjcmlwdCgpKQogICAgICAgICBtX3dvcmtlckdsb2JhbFNjb3BlLnNjcmlwdCgp
LT5kZXRhY2hEZWJ1Z2dlcih0aGlzKTsKICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCkBAIC03
MCwxNiArNzQsMjAgQEAgdm9pZCBXb3JrZXJTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMoKQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVnU2VydmVyOjpydW5FdmVudExv
b3BXaGlsZVBhdXNlZCgpCiB7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cnVuRXZlbnRMb29wV2hpbGVQ
YXVzZWQoKTsKKwogICAgIFRpbWVyQmFzZTo6ZmlyZVRpbWVyc0luTmVzdGVkRXZlbnRMb29wKCk7
CiAKICAgICBNZXNzYWdlUXVldWVXYWl0UmVzdWx0IHJlc3VsdDsKICAgICBkbyB7CiAgICAgICAg
IHJlc3VsdCA9IG1fd29ya2VyR2xvYmFsU2NvcGUudGhyZWFkKCkucnVuTG9vcCgpLnJ1bkluRGVi
dWdnZXJNb2RlKG1fd29ya2VyR2xvYmFsU2NvcGUpOwotICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBN
ZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFtX2RvbmVQcm9jZXNzaW5nRGVidWdnZXJFdmVudHMp
OworICAgIH0gd2hpbGUgKHJlc3VsdCAhPSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkICYmICFkb25l
UHJvY2Vzc2luZ0RlYnVnZ2VyRXZlbnRzKCkpOwogfQogCiB2b2lkIFdvcmtlclNjcmlwdERlYnVn
U2VydmVyOjpyZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCogZXhlYywgSlNDOjpF
eGNlcHRpb24qIGV4Y2VwdGlvbikgY29uc3QKIHsKKyAgICBKU0M6OkRlYnVnZ2VyOjpyZXBvcnRF
eGNlcHRpb24oZXhlYywgZXhjZXB0aW9uKTsKKwogICAgIFdlYkNvcmU6OnJlcG9ydEV4Y2VwdGlv
bihleGVjLCBleGNlcHRpb24pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9Xb3JrZXJTY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGVhNzFmMWRlODhkMjYwM2U1NjZiMGQw
OTQyYjMyZWFmYTY0YmJhOTAuLmM4YmEzMmU0MzdjZDhmZjNjZWEzMmJmN2M4NDA2N2M5OWQ1OGNi
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJTY3JpcHREZWJ1
Z1NlcnZlci5oCkBAIC0zMSwzMCArMzEsMjcgQEAKIAogI3ByYWdtYSBvbmNlCiAKLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9TY3JpcHREZWJ1Z1NlcnZlci5oPgorI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0RlYnVnZ2VyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV29ya2Vy
R2xvYmFsU2NvcGU7CiAKLWNsYXNzIFdvcmtlclNjcmlwdERlYnVnU2VydmVyIGZpbmFsIDogcHVi
bGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXIgeworY2xhc3MgV29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXIgZmluYWwgOiBwdWJsaWMgSlNDOjpEZWJ1Z2dlciB7CiAgICAgV1RGX01BS0VfTk9O
Q09QWUFCTEUoV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOwogcHVibGljOgogICAgIFdvcmtlclNjcmlwdERlYnVnU2VydmVyKFdvcmtlckdsb2Jh
bFNjb3BlJik7CiAgICAgfldvcmtlclNjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGUgPSBkZWZh
dWx0OwogCi0gICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpIG92ZXJyaWRlOwogCiBw
cml2YXRlOgotICAgIHZvaWQgYXR0YWNoRGVidWdnZXIoKSBvdmVycmlkZTsKLSAgICB2b2lkIGRl
dGFjaERlYnVnZ2VyKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7Ci0KLSAgICB2b2lk
IGRpZFBhdXNlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGRp
ZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIHJ1
bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkgb3ZlcnJpZGU7Ci0gICAgYm9vbCBpc0NvbnRlbnRTY3Jp
cHQoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIGZhbHNlOyB9
Ci0gICAgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpKU0dsb2JhbE9iamVjdCosIEpTQzo6RXhj
ZXB0aW9uKikgY29uc3Qgb3ZlcnJpZGU7CisgICAgLy8gSlNDOjpEZWJ1Z2dlcgorICAgIHZvaWQg
YXR0YWNoRGVidWdnZXIoKSBmaW5hbDsKKyAgICB2b2lkIGRldGFjaERlYnVnZ2VyKGJvb2wgaXNC
ZWluZ0Rlc3Ryb3llZCkgZmluYWw7CisgICAgdm9pZCByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygp
IGZpbmFsOworICAgIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBmaW5hbDsKKyAgICB2
b2lkIHJlcG9ydEV4Y2VwdGlvbihKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpFeGNlcHRpb24q
KSBjb25zdCBmaW5hbDsKIAogICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3dvcmtlckdsb2JhbFNj
b3BlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JET01BZ2VudC5jcHAKaW5kZXggMzRkYTk1ODBhZTRhODZmNDliYzg5YjU2NzhlYTYzYzE5
OThjZjNkNi4uODM5YTU4YjU0ODg1NGRlNzU3NzBkMjYzM2Q4ZDU5YWY1OWYyNDExMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2Vu
dC5jcHAKQEAgLTExMiw2ICsxMTIsNyBAQAogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0lkZW50
aWZpZXJzRmFjdG9yeS5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luamVjdGVkU2NyaXB0
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgogI2luY2x1
ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KICNpbmNsdWRlIDxwYWwvY3J5cHRvL0Ny
eXB0b0RpZ2VzdC5oPgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgpAQCAtOTMxLDEzICs5MzIs
MTMgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KICAgICBhdXRvIGFkZExpc3RlbmVyID0gWyZd
IChSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgbGlzdGVuZXIsIGNvbnN0IEV2ZW50TGlzdGVuZXJJ
bmZvJiBpbmZvKSB7CiAgICAgICAgIGludCBpZGVudGlmaWVyID0gMDsKICAgICAgICAgYm9vbCBk
aXNhYmxlZCA9IGZhbHNlOwotICAgICAgICBib29sIGhhc0JyZWFrcG9pbnQgPSBmYWxzZTsKKyAg
ICAgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gYnJlYWtwb2ludDsKIAogICAgICAgICBmb3Ig
KGF1dG8mIGluc3BlY3RvckV2ZW50TGlzdGVuZXIgOiBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLnZh
bHVlcygpKSB7CiAgICAgICAgICAgICBpZiAoaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5tYXRjaGVz
KCppbmZvLmV2ZW50VGFyZ2V0LCBpbmZvLmV2ZW50VHlwZSwgbGlzdGVuZXIuY2FsbGJhY2soKSwg
bGlzdGVuZXIudXNlQ2FwdHVyZSgpKSkgewogICAgICAgICAgICAgICAgIGlkZW50aWZpZXIgPSBp
bnNwZWN0b3JFdmVudExpc3RlbmVyLmlkZW50aWZpZXI7CiAgICAgICAgICAgICAgICAgZGlzYWJs
ZWQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmRpc2FibGVkOwotICAgICAgICAgICAgICAgIGhh
c0JyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQ7CisgICAg
ICAgICAgICAgICAgYnJlYWtwb2ludCA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuYnJlYWtwb2lu
dDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
OTQ3LDEyICs5NDgsMTIgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6Z2V0RXZlbnRMaXN0ZW5l
cnNGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IG4KIAogICAgICAgICAgICAg
aWRlbnRpZmllciA9IGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaWRlbnRpZmllcjsKICAgICAgICAg
ICAgIGRpc2FibGVkID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5kaXNhYmxlZDsKLSAgICAgICAg
ICAgIGhhc0JyZWFrcG9pbnQgPSBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmhhc0JyZWFrcG9pbnQ7
CisgICAgICAgICAgICBicmVha3BvaW50ID0gaW5zcGVjdG9yRXZlbnRMaXN0ZW5lci5icmVha3Bv
aW50OwogCiAgICAgICAgICAgICBtX2V2ZW50TGlzdGVuZXJFbnRyaWVzLmFkZChpZGVudGlmaWVy
LCBpbnNwZWN0b3JFdmVudExpc3RlbmVyKTsKICAgICAgICAgfQogCi0gICAgICAgIGxpc3RlbmVy
c0FycmF5LT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihsaXN0ZW5lciwgaWRl
bnRpZmllciwgKmluZm8uZXZlbnRUYXJnZXQsIGluZm8uZXZlbnRUeXBlLCBkaXNhYmxlZCwgaGFz
QnJlYWtwb2ludCkpOworICAgICAgICBsaXN0ZW5lcnNBcnJheS0+YWRkSXRlbShidWlsZE9iamVj
dEZvckV2ZW50TGlzdGVuZXIobGlzdGVuZXIsIGlkZW50aWZpZXIsICppbmZvLmV2ZW50VGFyZ2V0
LCBpbmZvLmV2ZW50VHlwZSwgZGlzYWJsZWQsIGJyZWFrcG9pbnQpKTsKICAgICB9OwogCiAgICAg
Ly8gR2V0IENhcHR1cmluZyBMaXN0ZW5lcnMgKGluIHRoaXMgb3JkZXIpCkBAIC05ODgsNyArOTg5
LDcgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0RXZlbnRMaXN0ZW5lckRpc2FibGVkKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGUKICAgICBpdC0+dmFsdWUuZGlzYWJsZWQgPSBk
aXNhYmxlZDsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklk
KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklkLCBjb25zdCBKU09O
OjpPYmplY3QqIG9wdGlvbnNQYXlsb2FkKQogewogICAgIGF1dG8gaXQgPSBtX2V2ZW50TGlzdGVu
ZXJFbnRyaWVzLmZpbmQoZXZlbnRMaXN0ZW5lcklkKTsKICAgICBpZiAoaXQgPT0gbV9ldmVudExp
c3RlbmVyRW50cmllcy5lbmQoKSkgewpAQCAtOTk2LDcgKzk5NywxMiBAQCB2b2lkIEluc3BlY3Rv
ckRPTUFnZW50OjpzZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpdC0+dmFsdWUuaGFzQnJl
YWtwb2ludCA9IHRydWU7CisgICAgaWYgKGl0LT52YWx1ZS5icmVha3BvaW50KSB7CisgICAgICAg
IGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGV2ZW50TGlzdGVuZXJJZCBhbHJl
YWR5IGV4aXN0cyJfczsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGl0LT52YWx1ZS5i
cmVha3BvaW50ID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJCcmVha3BvaW50RnJv
bVBheWxvYWQoZXJyb3JTdHJpbmcsIG9wdGlvbnNQYXlsb2FkKTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6cmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBpbnQgZXZlbnRMaXN0ZW5lcklkKQpAQCAtMTAwNyw3ICsxMDEzLDEwIEBA
IHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVy
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBp
dC0+dmFsdWUuaGFzQnJlYWtwb2ludCA9IGZhbHNlOworICAgIGlmICghaXQtPnZhbHVlLmJyZWFr
cG9pbnQpCisgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIGdpdmVuIGV2ZW50
TGlzdGVuZXJJZCBtaXNzaW5nIl9zOworCisgICAgaXQtPnZhbHVlLmJyZWFrcG9pbnQgPSBudWxs
cHRyOwogfQogCiB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5UHJvcGVy
dGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5UHJvcGVydGllcz4mIGF4UHJv
cGVydGllcykKQEAgLTE3NTEsNyArMTc2MCw3IEBAIFJlZlB0cjxKU09OOjpBcnJheU9mPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTTo6Tm9kZT4+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZEFyCiAg
ICAgcmV0dXJuIHBzZXVkb0VsZW1lbnRzOwogfQogCi1SZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JET01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRM
aXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVkLCBib29sIGhhc0JyZWFrcG9pbnQp
CitSZWY8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPiBJbnNwZWN0b3JE
T01BZ2VudDo6YnVpbGRPYmplY3RGb3JFdmVudExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVu
dExpc3RlbmVyJiByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciwgaW50IGlkZW50aWZpZXIsIEV2ZW50
VGFyZ2V0JiBldmVudFRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRp
c2FibGVkLCBjb25zdCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYgYnJlYWtwb2ludCkKIHsKICAg
ICBSZWY8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lciA9IHJlZ2lzdGVyZWRFdmVudExpc3Rl
bmVyLmNhbGxiYWNrKCk7CiAKQEAgLTE4MzksOCArMTg0OCw4IEBAIFJlZjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpET006OkV2ZW50TGlzdGVuZXI+IEluc3BlY3RvckRPTUFnZW50OjpidWlsZE9iamVj
dEZvckV2CiAgICAgICAgIHZhbHVlLT5zZXRPbmNlKHRydWUpOwogICAgIGlmIChkaXNhYmxlZCkK
ICAgICAgICAgdmFsdWUtPnNldERpc2FibGVkKGRpc2FibGVkKTsKLSAgICBpZiAoaGFzQnJlYWtw
b2ludCkKLSAgICAgICAgdmFsdWUtPnNldEhhc0JyZWFrcG9pbnQoaGFzQnJlYWtwb2ludCk7Cisg
ICAgaWYgKGJyZWFrcG9pbnQpCisgICAgICAgIHZhbHVlLT5zZXRIYXNCcmVha3BvaW50KGJyZWFr
cG9pbnQpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMjU0OCwxMyArMjU1NywxMyBAQCB2
b2lkIEluc3BlY3RvckRPTUFnZW50OjpldmVudERpZFJlc2V0QWZ0ZXJEaXNwYXRjaChjb25zdCBF
dmVudCYgZXZlbnQpCiAgICAgbV9kaXNwYXRjaGVkRXZlbnRzLnJlbW92ZSgmZXZlbnQpOwogfQog
Ci1ib29sIEluc3BlY3RvckRPTUFnZW50OjpoYXNCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihF
dmVudFRhcmdldCYgdGFyZ2V0LCBjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIEV2ZW50TGlz
dGVuZXImIGxpc3RlbmVyLCBib29sIGNhcHR1cmUpCitSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBJ
bnNwZWN0b3JET01BZ2VudDo6YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJnZXQm
IHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBsaXN0
ZW5lciwgYm9vbCBjYXB0dXJlKQogewogICAgIGZvciAoYXV0byYgaW5zcGVjdG9yRXZlbnRMaXN0
ZW5lciA6IG1fZXZlbnRMaXN0ZW5lckVudHJpZXMudmFsdWVzKCkpIHsKICAgICAgICAgaWYgKGlu
c3BlY3RvckV2ZW50TGlzdGVuZXIubWF0Y2hlcyh0YXJnZXQsIGV2ZW50VHlwZSwgbGlzdGVuZXIs
IGNhcHR1cmUpKQotICAgICAgICAgICAgcmV0dXJuIGluc3BlY3RvckV2ZW50TGlzdGVuZXIuaGFz
QnJlYWtwb2ludDsKKyAgICAgICAgICAgIHJldHVybiBpbnNwZWN0b3JFdmVudExpc3RlbmVyLmJy
ZWFrcG9pbnQ7CiAgICAgfQotICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAogaW50IEluc3BlY3RvckRPTUFnZW50OjppZEZvckV2ZW50TGlzdGVuZXIoRXZlbnRUYXJn
ZXQmIHRhcmdldCwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiBs
aXN0ZW5lciwgYm9vbCBjYXB0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2FnZW50cy9JbnNwZWN0b3JET01BZ2VudC5oCmluZGV4IDdlNmQzZjY4ZDNkNjBjYWYzZDNhMDFh
Y2MzODBhMjYwNWY0MmQ2ZTMuLjNlMzc3MDdhZmVjZjc4ZjQyMThhYTgzMDFlMWVhMmQ0MWM3MjUx
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRPTUFnZW50LmgKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJFdmVudFRhcmdldC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQnJlYWtwb2ludC5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aE1hcC5oPgpAQCAtMTI1LDcgKzEyNiw3IEBAIHB1YmxpYzoKICNlbmRpZgogICAgIHZvaWQgZ2V0
RXZlbnRMaXN0ZW5lcnNGb3JOb2RlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEpT
T046OkFycmF5T2Y8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpFdmVudExpc3RlbmVyPj4mIGxp
c3RlbmVyc0FycmF5KSBvdmVycmlkZTsKICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJEaXNhYmxl
ZChFcnJvclN0cmluZyYsIGludCBldmVudExpc3RlbmVySWQsIGJvb2wgZGlzYWJsZWQpIG92ZXJy
aWRlOwotICAgIHZvaWQgc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoRXJyb3JTdHJpbmcm
LCBpbnQgZXZlbnRMaXN0ZW5lcklkKSBvdmVycmlkZTsKKyAgICB2b2lkIHNldEJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJZCwgY29uc3Qg
SlNPTjo6T2JqZWN0KiBvcHRpb25zKSBmaW5hbDsKICAgICB2b2lkIHJlbW92ZUJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKEVycm9yU3RyaW5nJiwgaW50IGV2ZW50TGlzdGVuZXJJZCkgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJp
bmcmLCBpbnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykgb3ZlcnJpZGU7CiAgICAgdm9pZCBwZXJm
b3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgSlNPTjo6
QXJyYXkqIG5vZGVJZHMsIGNvbnN0IGJvb2wqIGNhc2VTZW5zaXRpdmUsIFN0cmluZyogc2VhcmNo
SWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwpAQCAtMjA1LDcgKzIwNiw3IEBAIHB1Ymxp
YzoKICAgICBFbGVtZW50KiBhc3NlcnRFbGVtZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7
CiAgICAgRG9jdW1lbnQqIGFzc2VydERvY3VtZW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCk7
CiAKLSAgICBib29sIGhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKEV2ZW50VGFyZ2V0Jiwg
Y29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyJiwgYm9vbCBjYXB0dXJl
KTsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBicmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
cihFdmVudFRhcmdldCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5l
ciYsIGJvb2wgY2FwdHVyZSk7CiAgICAgaW50IGlkRm9yRXZlbnRMaXN0ZW5lcihFdmVudFRhcmdl
dCYsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgRXZlbnRMaXN0ZW5lciYsIGJvb2wgY2Fw
dHVyZSk7CiAKIHByaXZhdGU6CkBAIC0yMzEsNyArMjMyLDcgQEAgcHJpdmF0ZToKICAgICBSZWY8
SlNPTjo6QXJyYXlPZjxTdHJpbmc+PiBidWlsZEFycmF5Rm9yRWxlbWVudEF0dHJpYnV0ZXMoRWxl
bWVudCopOwogICAgIFJlZjxKU09OOjpBcnJheU9mPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6
Tm9kZT4+IGJ1aWxkQXJyYXlGb3JDb250YWluZXJDaGlsZHJlbihOb2RlKiBjb250YWluZXIsIGlu
dCBkZXB0aCwgTm9kZVRvSWRNYXAqIG5vZGVzTWFwKTsKICAgICBSZWZQdHI8SlNPTjo6QXJyYXlP
ZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006Ok5vZGU+PiBidWlsZEFycmF5Rm9yUHNldWRvRWxl
bWVudHMoY29uc3QgRWxlbWVudCYsIE5vZGVUb0lkTWFwKiBub2Rlc01hcCk7Ci0gICAgUmVmPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4gYnVpbGRPYmplY3RGb3JFdmVu
dExpc3RlbmVyKGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiwgaW50IGlkZW50aWZpZXIs
IEV2ZW50VGFyZ2V0JiwgY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBib29sIGRpc2FibGVk
LCBib29sIGhhc0JyZWFrcG9pbnQpOworICAgIFJlZjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006
OkV2ZW50TGlzdGVuZXI+IGJ1aWxkT2JqZWN0Rm9yRXZlbnRMaXN0ZW5lcihjb25zdCBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lciYsIGludCBpZGVudGlmaWVyLCBFdmVudFRhcmdldCYsIGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBkaXNhYmxlZCwgY29uc3QgUmVmUHRyPEpTQzo6QnJl
YWtwb2ludD4mKTsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3Np
YmlsaXR5UHJvcGVydGllcz4gYnVpbGRPYmplY3RGb3JBY2Nlc3NpYmlsaXR5UHJvcGVydGllcyhO
b2RlKik7CiAgICAgdm9pZCBwcm9jZXNzQWNjZXNzaWJpbGl0eUNoaWxkcmVuKEFYQ29yZU9iamVj
dCYsIEpTT046OkFycmF5T2Y8aW50PiYpOwogICAgIApAQCAtMjkwLDcgKzI5MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIEF0b21TdHJpbmcgZXZlbnRUeXBlOwogICAgICAgICBib29sIHVzZUNhcHR1
cmUgeyBmYWxzZSB9OwogICAgICAgICBib29sIGRpc2FibGVkIHsgZmFsc2UgfTsKLSAgICAgICAg
Ym9vbCBoYXNCcmVha3BvaW50IHsgZmFsc2UgfTsKKyAgICAgICAgUmVmUHRyPEpTQzo6QnJlYWtw
b2ludD4gYnJlYWtwb2ludDsKIAogICAgICAgICBJbnNwZWN0b3JFdmVudExpc3RlbmVyKCkgeyB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IDM1MmMxMzMzNzY0NjlhYmViYWRkMTk2
MTIzNjM4ODk2ZDMwZmM0MzEuLmVmOTU0NTY0MWQ0NDczOWE3MTRkMDY4ZDc3ZTM1NGQ2NmUyN2I3
OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcApAQCAtNzYsMTAgKzc2LDExIEBAIHZvaWQg
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlzYWJsZSgpCiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLnNldEVuYWJsZWRET01EZWJ1Z2dlckFnZW50KG51bGxwdHIpOwogCiAgICAgbV9saXN0
ZW5lckJyZWFrcG9pbnRzLmNsZWFyKCk7CisgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtw
b2ludCA9IG51bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IG51
bGxwdHI7CisgICAgbV9wYXVzZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbHB0cjsKKwog
ICAgIG1fdXJsQnJlYWtwb2ludHMuY2xlYXIoKTsKLSAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNF
bmFibGVkID0gZmFsc2U7Ci0gICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IGZhbHNl
OwotICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IGZhbHNlOwogICAgIG1fcGF1c2VP
bkFsbFVSTHNFbmFibGVkID0gZmFsc2U7CiB9CiAKQEAgLTExMSw3ICsxMTIsMjIgQEAgdm9pZCBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OjpkaXNjYXJkQWdlbnQoKQogICAgIG1fZGVidWdnZXJB
Z2VudCA9IG51bGxwdHI7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0
RXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBi
cmVha3BvaW50VHlwZVN0cmluZywgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpCit2b2lkIEluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRlZCgpCit7CisgICAgZm9yIChh
dXRvJiBicmVha3BvaW50IDogbV9saXN0ZW5lckJyZWFrcG9pbnRzLnZhbHVlcygpKQorICAgICAg
ICBicmVha3BvaW50LT5yZXNldEhpdENvdW50KCk7CisKKyAgICBpZiAobV9wYXVzZU9uQWxsSW50
ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgbV9wYXVzZU9uQWxsSW50ZXJ2YWxzQnJlYWtwb2lu
dC0+cmVzZXRIaXRDb3VudCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFr
cG9pbnQpCisgICAgICAgIG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQtPnJlc2V0SGl0
Q291bnQoKTsKKworICAgIGlmIChtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAg
ICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludC0+cmVzZXRIaXRDb3VudCgpOworfQor
Cit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2ludChFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5cGVTdHJpbmcs
IGNvbnN0IFN0cmluZyogZXZlbnROYW1lLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnNQYXls
b2FkKQogewogICAgIGlmIChicmVha3BvaW50VHlwZVN0cmluZy5pc0VtcHR5KCkpIHsKICAgICAg
ICAgZXJyb3JTdHJpbmcgPSAiYnJlYWtwb2ludFR5cGUgaXMgZW1wdHkiX3M7CkBAIC0xMjQsOSAr
MTQwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6c2V0RXZlbnRCcmVha3Bv
aW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKKyAgICBhdXRvIGJyZWFrcG9pbnQgPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dl
ckJyZWFrcG9pbnRGcm9tUGF5bG9hZChlcnJvclN0cmluZywgb3B0aW9uc1BheWxvYWQpOworICAg
IGlmICghYnJlYWtwb2ludCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgaWYgKGV2ZW50TmFtZSAm
JiAhZXZlbnROYW1lLT5pc0VtcHR5KCkpIHsKICAgICAgICAgaWYgKGJyZWFrcG9pbnRUeXBlLnZh
bHVlKCkgPT0gSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2lu
dFR5cGU6Okxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBpZiAoIW1fbGlzdGVuZXJCcmVha3BvaW50
cy5hZGQoKmV2ZW50TmFtZSkpCisgICAgICAgICAgICBpZiAoIW1fbGlzdGVuZXJCcmVha3BvaW50
cy5hZGQoKmV2ZW50TmFtZSwgYnJlYWtwb2ludC5yZWxlYXNlTm9uTnVsbCgpKSkKICAgICAgICAg
ICAgICAgICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IHdpdGggZXZlbnROYW1lIGFscmVhZHkg
ZXhpc3RzIl9zOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0xMzcsMjUgKzE1
NywyOCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OnNldEV2ZW50QnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbgogCiAgICAgc3dpdGNoIChicmVha3BvaW50
VHlwZS52YWx1ZSgpKSB7CiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dl
cjo6RXZlbnRCcmVha3BvaW50VHlwZTo6QW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgIHNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgdHJ1ZSk7CisgICAgICAgIHNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChlcnJvclN0cmluZywgV1RGTW92ZShicmVha3BvaW50KSk7CiAg
ICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBJbnNwZWN0b3I6OlByb3RvY29sOjpET01EZWJ1Z2dl
cjo6RXZlbnRCcmVha3BvaW50VHlwZTo6SW50ZXJ2YWw6Ci0gICAgICAgIGlmIChtX3BhdXNlT25B
bGxJbnRlcnZhbHNFbmFibGVkKQorICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0Jy
ZWFrcG9pbnQpCisgICAgICAgICAgICBtX3BhdXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50ID0g
V1RGTW92ZShicmVha3BvaW50KTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgZXJyb3JTdHJp
bmcgPSAiQnJlYWtwb2ludCBmb3IgSW50ZXJ2YWwgYWxyZWFkeSBleGlzdHMiX3M7Ci0gICAgICAg
IG1fcGF1c2VPbkFsbEludGVydmFsc0VuYWJsZWQgPSB0cnVlOwogICAgICAgICBicmVhazsKIAog
ICAgIGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2lu
dFR5cGU6Okxpc3RlbmVyOgotICAgICAgICBpZiAobV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxl
ZCkKKyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAg
ICAgICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2lu
dCk7CisgICAgICAgIGVsc2UKICAgICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQg
Zm9yIExpc3RlbmVyIGFscmVhZHkgZXhpc3RzIl9zOwotICAgICAgICBtX3BhdXNlT25BbGxMaXN0
ZW5lcnNFbmFibGVkID0gdHJ1ZTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpUaW1lb3V0Ogot
ICAgICAgICBpZiAobV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkKQorICAgICAgICBpZiAoIW1f
cGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIG1fcGF1c2VPbkFsbFRp
bWVvdXRzQnJlYWtwb2ludCA9IFdURk1vdmUoYnJlYWtwb2ludCk7CisgICAgICAgIGVsc2UKICAg
ICAgICAgICAgIGVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgZm9yIFRpbWVvdXQgYWxyZWFkeSBl
eGlzdHMiX3M7Ci0gICAgICAgIG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA9IHRydWU7CiAg
ICAgICAgIGJyZWFrOwogICAgIH0KIH0KQEAgLTE4Niw1MSArMjA5LDU3IEBAIHZvaWQgSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudDo6cmVtb3ZlRXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBl
cnJvclN0cmluZywKIAogICAgIHN3aXRjaCAoYnJlYWtwb2ludFR5cGUudmFsdWUoKSkgewogICAg
IGNhc2UgSW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NRGVidWdnZXI6OkV2ZW50QnJlYWtwb2ludFR5
cGU6OkFuaW1hdGlvbkZyYW1lOgotICAgICAgICBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQo
ZXJyb3JTdHJpbmcsIGZhbHNlKTsKKyAgICAgICAgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50
KGVycm9yU3RyaW5nLCBudWxscHRyKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpJbnRlcnZh
bDoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxJbnRlcnZhbHNFbmFibGVkKQorICAgICAgICBp
ZiAoIW1fcGF1c2VPbkFsbEludGVydmFsc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBlcnJvclN0
cmluZyA9ICJCcmVha3BvaW50IGZvciBJbnRlcnZhbHMgbWlzc2luZyJfczsKLSAgICAgICAgbV9w
YXVzZU9uQWxsSW50ZXJ2YWxzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3BhdXNlT25BbGxJ
bnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNl
IEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRUeXBlOjpM
aXN0ZW5lcjoKLSAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxMaXN0ZW5lcnNFbmFibGVkKQorICAg
ICAgICBpZiAoIW1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFrcG9pbnQpCiAgICAgICAgICAgICBl
cnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBMaXN0ZW5lcnMgbWlzc2luZyJfczsKLSAgICAg
ICAgbV9wYXVzZU9uQWxsTGlzdGVuZXJzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBtX3BhdXNl
T25BbGxMaXN0ZW5lcnNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAKICAg
ICBjYXNlIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTURlYnVnZ2VyOjpFdmVudEJyZWFrcG9pbnRU
eXBlOjpUaW1lb3V0OgotICAgICAgICBpZiAoIW1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCkK
KyAgICAgICAgaWYgKCFtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQpCiAgICAgICAgICAg
ICBlcnJvclN0cmluZyA9ICJCcmVha3BvaW50IGZvciBUaW1lb3V0cyBtaXNzaW5nIl9zOwotICAg
ICAgICBtX3BhdXNlT25BbGxUaW1lb3V0c0VuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgbV9wYXVz
ZU9uQWxsVGltZW91dHNCcmVha3BvaW50ID0gbnVsbHB0cjsKICAgICAgICAgYnJlYWs7CiAgICAg
fQogfQogCiB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OndpbGxIYW5kbGVFdmVudChF
dmVudCYgZXZlbnQsIGNvbnN0IFJlZ2lzdGVyZWRFdmVudExpc3RlbmVyJiByZWdpc3RlcmVkRXZl
bnRMaXN0ZW5lcikKIHsKLSAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3Rp
dmUoKSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgYXV0byBzdGF0ZSA9IGV2ZW50LnRhcmdldCgp
LT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpOwogICAgIGF1dG8gaW5qZWN0
ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5pbmplY3RlZFNjcmlwdEZvcihzdGF0
ZSk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKICAgICAgICAgcmV0dXJu
OwogCisgICAgLy8gU2V0IFdlYiBJbnNwZWN0b3IgY29uc29sZSBjb21tYW5kIGxpbmUgYCRldmVu
dGAgZ2V0dGVyLgogICAgIHsKICAgICAgICAgSlNDOjpKU0xvY2tIb2xkZXIgbG9jayhzdGF0ZSk7
CiAKICAgICAgICAgaW5qZWN0ZWRTY3JpcHQuc2V0RXZlbnRWYWx1ZSh0b0pTKHN0YXRlLCBkZXBy
ZWNhdGVkR2xvYmFsT2JqZWN0Rm9yUHJvdG90eXBlKHN0YXRlKSwgZXZlbnQpKTsKICAgICB9CiAK
KyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2ludHNBY3RpdmUoKSkKKyAgICAgICAg
cmV0dXJuOworCiAgICAgYXV0byogZG9tQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMucGVy
c2lzdGVudERPTUFnZW50KCk7CiAKLSAgICBib29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFn
ZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCBtX3BhdXNlT25BbGxMaXN0ZW5l
cnNFbmFibGVkIHx8IG1fbGlzdGVuZXJCcmVha3BvaW50cy5jb250YWlucyhldmVudC50eXBlKCkp
OwotICAgIGlmICghc2hvdWxkUGF1c2UgJiYgZG9tQWdlbnQpCi0gICAgICAgIHNob3VsZFBhdXNl
ID0gZG9tQWdlbnQtPmhhc0JyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKCpldmVudC5jdXJyZW50
VGFyZ2V0KCksIGV2ZW50LnR5cGUoKSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIuY2FsbGJhY2so
KSwgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIudXNlQ2FwdHVyZSgpKTsKLSAgICBpZiAoIXNob3Vs
ZFBhdXNlKQorICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFsbExpc3RlbmVyc0JyZWFr
cG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KSB7CisgICAgICAgIGF1dG8gaXQgPSBtX2xpc3Rl
bmVyQnJlYWtwb2ludHMuZmluZChldmVudC50eXBlKCkpOworICAgICAgICBpZiAoaXQgIT0gbV9s
aXN0ZW5lckJyZWFrcG9pbnRzLmVuZCgpKQorICAgICAgICAgICAgYnJlYWtwb2ludCA9IGl0LT52
YWx1ZS5jb3B5UmVmKCk7CisgICAgfQorICAgIGlmICghYnJlYWtwb2ludCAmJiBkb21BZ2VudCkK
KyAgICAgICAgYnJlYWtwb2ludCA9IGRvbUFnZW50LT5icmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5l
cigqZXZlbnQuY3VycmVudFRhcmdldCgpLCBldmVudC50eXBlKCksIHJlZ2lzdGVyZWRFdmVudExp
c3RlbmVyLmNhbGxiYWNrKCksIHJlZ2lzdGVyZWRFdmVudExpc3RlbmVyLnVzZUNhcHR1cmUoKSk7
CisgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICByZXR1cm47CiAKICAgICBSZWY8SlNPTjo6
T2JqZWN0PiBldmVudERhdGEgPSBKU09OOjpPYmplY3Q6OmNyZWF0ZSgpOwpAQCAtMjQxLDEyICsy
NzAsMzcgQEAgdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojp3aWxsSGFuZGxlRXZlbnQo
RXZlbnQmIGV2ZW50LCBjb25zdCBSZWdpc3RlcmVkRXYKICAgICAgICAgICAgIGV2ZW50RGF0YS0+
c2V0SW50ZWdlcigiZXZlbnRMaXN0ZW5lcklkIl9zLCBldmVudExpc3RlbmVySWQpOwogICAgIH0K
IAotICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNw
ZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246Okxpc3RlbmVyLCBXVEZN
b3ZlKGV2ZW50RGF0YSkpOworICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1bGVQYXVzZUZvclNw
ZWNpYWxCcmVha3BvaW50KCpicmVha3BvaW50LCBJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyOjpSZWFzb246Okxpc3RlbmVyLCBXVEZNb3ZlKGV2ZW50RGF0YSkpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6OmRpZEhhbmRsZUV2ZW50KCkKK3ZvaWQgSW5z
cGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6ZGlkSGFuZGxlRXZlbnQoRXZlbnQmIGV2ZW50LCBjb25z
dCBSZWdpc3RlcmVkRXZlbnRMaXN0ZW5lciYgcmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXIpCiB7Ci0g
ICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuY2xlYXJFdmVudFZhbHVlKCk7CisgICAgYXV0byBz
dGF0ZSA9IGV2ZW50LnRhcmdldCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0
ZSgpOworICAgIGF1dG8gaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5p
bmplY3RlZFNjcmlwdEZvcihzdGF0ZSk7CisgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gQ2xlYXIgV2ViIEluc3BlY3RvciBjb25z
b2xlIGNvbW1hbmQgbGluZSBgJGV2ZW50YCBnZXR0ZXIuCisgICAgeworICAgICAgICBKU0M6OkpT
TG9ja0hvbGRlciBsb2NrKHN0YXRlKTsKKworICAgICAgICBpbmplY3RlZFNjcmlwdC5jbGVhckV2
ZW50VmFsdWUoKTsKKyAgICB9CisKKyAgICBpZiAoIW1fZGVidWdnZXJBZ2VudC0+YnJlYWtwb2lu
dHNBY3RpdmUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byBicmVha3BvaW50ID0gbV9w
YXVzZU9uQWxsTGlzdGVuZXJzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJyZWFrcG9pbnQpCisgICAg
ICAgIGJyZWFrcG9pbnQgPSBtX2xpc3RlbmVyQnJlYWtwb2ludHMuZ2V0KGV2ZW50LnR5cGUoKSk7
CisgICAgaWYgKCFicmVha3BvaW50KSB7CisgICAgICAgIGlmIChhdXRvKiBkb21BZ2VudCA9IG1f
aW5zdHJ1bWVudGluZ0FnZW50cy5wZXJzaXN0ZW50RE9NQWdlbnQoKSkKKyAgICAgICAgICAgIGJy
ZWFrcG9pbnQgPSBkb21BZ2VudC0+YnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoKmV2ZW50LmN1
cnJlbnRUYXJnZXQoKSwgZXZlbnQudHlwZSgpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci5jYWxs
YmFjaygpLCByZWdpc3RlcmVkRXZlbnRMaXN0ZW5lci51c2VDYXB0dXJlKCkpOworICAgIH0KKyAg
ICBpZiAoIWJyZWFrcG9pbnQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGVidWdnZXJBZ2Vu
dC0+Y2FuY2VsUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDo6d2lsbEZpcmVUaW1lcihib29sIG9uZVNob3Qp
CkBAIC0yNTQsMTIgKzMwOCwyNCBAQCB2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Ondp
bGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVh
a3BvaW50c0FjdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFBhdXNl
ID0gbV9kZWJ1Z2dlckFnZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCAob25l
U2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzRW5hYmxlZCA6IG1fcGF1c2VPbkFsbEludGVydmFs
c0VuYWJsZWQpOwotICAgIGlmICghc2hvdWxkUGF1c2UpCisgICAgYXV0byBicmVha3BvaW50ID0g
b25lU2hvdCA/IG1fcGF1c2VPbkFsbFRpbWVvdXRzQnJlYWtwb2ludCA6IG1fcGF1c2VPbkFsbElu
dGVydmFsc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICByZXR1cm47
CiAKICAgICBhdXRvIGJyZWFrUmVhc29uID0gb25lU2hvdCA/IEluc3BlY3Rvcjo6RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6VGltZW91dCA6IEluc3BlY3Rvcjo6RGVidWdnZXJG
cm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6SW50ZXJ2YWw7Ci0gICAgbV9kZWJ1Z2dlckFnZW50
LT5zY2hlZHVsZVBhdXNlT25OZXh0U3RhdGVtZW50KGJyZWFrUmVhc29uLCBudWxscHRyKTsKKyAg
ICBtX2RlYnVnZ2VyQWdlbnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJl
YWtwb2ludCwgYnJlYWtSZWFzb24pOworfQorCit2b2lkIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQ6OmRpZEZpcmVUaW1lcihib29sIG9uZVNob3QpCit7CisgICAgaWYgKCFtX2RlYnVnZ2VyQWdl
bnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8gYnJl
YWtwb2ludCA9IG9uZVNob3QgPyBtX3BhdXNlT25BbGxUaW1lb3V0c0JyZWFrcG9pbnQgOiBtX3Bh
dXNlT25BbGxJbnRlcnZhbHNCcmVha3BvaW50OworICAgIGlmICghYnJlYWtwb2ludCkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9kZWJ1Z2dlckFnZW50LT5jYW5jZWxQYXVzZUZvclNwZWNpYWxC
cmVha3BvaW50KCpicmVha3BvaW50KTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50OjpzZXRVUkxCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmgKaW5kZXggMDFlM2JkY2YwMDRhZTY0MGRmYTk2M2ZmOWE1NGMzNWQyYWVjZDA1Mi4uOWY2ZTYz
OGUzM2VlMDMwOTQ5OWU2NzI2MDIxYmQwYzA4MTk0ZTg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50
LmgKQEAgLTMyLDEwICszMiwxMyBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJJbnNwZWN0
b3JXZWJBZ2VudEJhc2UuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXJzLmg+
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRl
IDx3dGYvSlNPTlZhbHVlcy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CkBAIC02NCw3ICs2
Nyw3IEBAIHB1YmxpYzoKICAgICAvLyBET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxl
cgogICAgIHZvaWQgc2V0VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgpIGZpbmFsOwogICAgIHZvaWQgcmVtb3Zl
VVJMQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgdXJsKSBmaW5hbDsKLSAg
ICB2b2lkIHNldEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJl
YWtwb2ludFR5cGUsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lKSBmaW5hbDsKKyAgICB2b2lkIHNl
dEV2ZW50QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgYnJlYWtwb2ludFR5
cGUsIGNvbnN0IFN0cmluZyogZXZlbnROYW1lLCBjb25zdCBKU09OOjpPYmplY3QqIG9wdGlvbnMp
IGZpbmFsOwogICAgIHZvaWQgcmVtb3ZlRXZlbnRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29u
c3QgU3RyaW5nJiBicmVha3BvaW50VHlwZSwgY29uc3QgU3RyaW5nKiBldmVudE5hbWUpIGZpbmFs
OwogCiAgICAgLy8gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIKQEAgLTcyLDE4ICs3
NSwyMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWJ1Z2dlcldhc0Rpc2FibGVkKCkgb3ZlcnJpZGU7
CiAKICAgICAvLyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICB2aXJ0dWFsIHZvaWQgbWFp
bkZyYW1lTmF2aWdhdGVkKCk7CiAgICAgdm9pZCB3aWxsU2VuZFhNTEh0dHBSZXF1ZXN0KGNvbnN0
IFN0cmluZyYgdXJsKTsKICAgICB2b2lkIHdpbGxGZXRjaChjb25zdCBTdHJpbmcmIHVybCk7CiAg
ICAgdm9pZCB3aWxsSGFuZGxlRXZlbnQoRXZlbnQmLCBjb25zdCBSZWdpc3RlcmVkRXZlbnRMaXN0
ZW5lciYpOwotICAgIHZvaWQgZGlkSGFuZGxlRXZlbnQoKTsKKyAgICB2b2lkIGRpZEhhbmRsZUV2
ZW50KEV2ZW50JiwgY29uc3QgUmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXImKTsKICAgICB2b2lkIHdp
bGxGaXJlVGltZXIoYm9vbCBvbmVTaG90KTsKKyAgICB2b2lkIGRpZEZpcmVUaW1lcihib29sIG9u
ZVNob3QpOwogCiBwcm90ZWN0ZWQ6CiAgICAgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudChXZWJB
Z2VudENvbnRleHQmLCBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBzZXRBbmltYXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBi
b29sIGVuYWJsZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVh
a3BvaW50KEVycm9yU3RyaW5nJiwgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikgPSAwOwogCiAg
ICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBtX2RlYnVnZ2VyQWdlbnQgeyBu
dWxscHRyIH07CiAKQEAgLTk0LDE0ICs5OSwxMyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxJbnNw
ZWN0b3I6OkRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CiAgICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXImIG1faW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyOwogCi0gICAgSGFzaFNldDxTdHJpbmc+IG1fbGlzdGVuZXJCcmVha3BvaW50czsKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmVmPEpTQzo6QnJlYWtwb2ludD4+IG1fbGlzdGVuZXJCcmVha3Bv
aW50czsKKyAgICBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiBtX3BhdXNlT25BbGxJbnRlcnZhbHNC
cmVha3BvaW50OworICAgIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbExpc3Rl
bmVyc0JyZWFrcG9pbnQ7CisgICAgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4gbV9wYXVzZU9uQWxs
VGltZW91dHNCcmVha3BvaW50OwogCiAgICAgZW51bSBjbGFzcyBVUkxCcmVha3BvaW50VHlwZSB7
IFJlZ3VsYXJFeHByZXNzaW9uLCBUZXh0IH07CiAgICAgSGFzaE1hcDxTdHJpbmcsIFVSTEJyZWFr
cG9pbnRUeXBlPiBtX3VybEJyZWFrcG9pbnRzOwotCi0gICAgYm9vbCBtX3BhdXNlT25BbGxJbnRl
cnZhbHNFbmFibGVkIHsgZmFsc2UgfTsKLSAgICBib29sIG1fcGF1c2VPbkFsbExpc3RlbmVyc0Vu
YWJsZWQgeyBmYWxzZSB9OwotICAgIGJvb2wgbV9wYXVzZU9uQWxsVGltZW91dHNFbmFibGVkIHsg
ZmFsc2UgfTsKICAgICBib29sIG1fcGF1c2VPbkFsbFVSTHNFbmFibGVkIHsgZmFsc2UgfTsKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
VGltZWxpbmVBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclRpbWVsaW5lQWdlbnQuY3BwCmluZGV4IDE0MGUxNTc4YzVmMDk2ZTQ0NGVkMTQ5MjA3NzE4
ZWU3Zjg2NDU1MjYuLjMwMWVmOTUyNTY0OWJhMDBkYjIyOTMzNDg1MjYxNzNjZDExOTI3YWMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yVGltZWxp
bmVBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JUaW1lbGluZUFnZW50LmNwcApAQCAtNTEsOSArNTEsOSBAQAogI2luY2x1ZGUgIlRpbWVsaW5l
UmVjb3JkRmFjdG9yeS5oIgogI2luY2x1ZGUgIldlYkNvbnNvbGVBZ2VudC5oIgogI2luY2x1ZGUg
IldlYkRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50
Lmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JTY3JpcHRQcm9maWxlckFnZW50Lmg+Ci0jaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvU2NyaXB0QnJlYWtwb2ludC5oPgogI2luY2x1ZGUgPHd0Zi9TdG9w
d2F0Y2guaD4KIAogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCkBAIC0xODcsNyArMTg3LDcgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjppbnRlcm5hbFN0YXJ0KGNvbnN0IGludCogbWF4
Q2FsbFN0YWNrRGVwdGgpCiAKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMuc2V0VHJhY2tpbmdU
aW1lbGluZUFnZW50KHRoaXMpOwogCi0gICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZl
cigpLmFkZExpc3RlbmVyKHRoaXMpOworICAgIG1fZW52aXJvbm1lbnQuc2NyaXB0RGVidWdTZXJ2
ZXIoKS5hZGRPYnNlcnZlcigqdGhpcyk7CiAKICAgICBtX3RyYWNraW5nID0gdHJ1ZTsKIApAQCAt
MjQxLDcgKzI0MSw3IEBAIHZvaWQgSW5zcGVjdG9yVGltZWxpbmVBZ2VudDo6aW50ZXJuYWxTdG9w
KCkKIAogICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy5zZXRUcmFja2luZ1RpbWVsaW5lQWdlbnQo
bnVsbHB0cik7CiAKLSAgICBtX2Vudmlyb25tZW50LnNjcmlwdERlYnVnU2VydmVyKCkucmVtb3Zl
TGlzdGVuZXIodGhpcywgdHJ1ZSk7CisgICAgbV9lbnZpcm9ubWVudC5zY3JpcHREZWJ1Z1NlcnZl
cigpLnJlbW92ZU9ic2VydmVyKCp0aGlzLCB0cnVlKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQog
ICAgIG1fZnJhbWVTdGFydE9ic2VydmVyID0gbnVsbHB0cjsKQEAgLTY2OSwxMSArNjY5LDkgQEAg
dm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpkaWRGaXJlT2JzZXJ2ZXJDYWxsYmFjaygpCiAg
ICAgZGlkQ29tcGxldGVDdXJyZW50UmVjb3JkKFRpbWVsaW5lUmVjb3JkVHlwZTo6T2JzZXJ2ZXJD
YWxsYmFjayk7CiB9CiAKLS8vIFNjcmlwdERlYnVnTGlzdGVuZXIKLQotdm9pZCBJbnNwZWN0b3JU
aW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCog
bGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3QgSW5zcGVjdG9yOjpTY3JpcHRCcmVha3BvaW50QWN0
aW9uJiBhY3Rpb24sIHVuc2lnbmVkIC8qYmF0Y2hJZCovLCB1bnNpZ25lZCBzYW1wbGVJZCwgSlND
OjpKU1ZhbHVlKQordm9pZCBJbnNwZWN0b3JUaW1lbGluZUFnZW50OjpicmVha3BvaW50QWN0aW9u
UHJvYmUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpCcmVh
a3BvaW50QWN0aW9uSUQgYWN0aW9uSUQsIHVuc2lnbmVkIC8qYmF0Y2hJZCovLCB1bnNpZ25lZCBz
YW1wbGVJZCwgSlNDOjpKU1ZhbHVlKQogewotICAgIGFwcGVuZFJlY29yZChUaW1lbGluZVJlY29y
ZEZhY3Rvcnk6OmNyZWF0ZVByb2JlU2FtcGxlRGF0YShhY3Rpb24sIHNhbXBsZUlkKSwgVGltZWxp
bmVSZWNvcmRUeXBlOjpQcm9iZVNhbXBsZSwgZmFsc2UsIGZyYW1lRnJvbUV4ZWNTdGF0ZShsZXhp
Y2FsR2xvYmFsT2JqZWN0KSk7CisgICAgYXBwZW5kUmVjb3JkKFRpbWVsaW5lUmVjb3JkRmFjdG9y
eTo6Y3JlYXRlUHJvYmVTYW1wbGVEYXRhKGFjdGlvbklELCBzYW1wbGVJZCksIFRpbWVsaW5lUmVj
b3JkVHlwZTo6UHJvYmVTYW1wbGUsIGZhbHNlLCBmcmFtZUZyb21FeGVjU3RhdGUobGV4aWNhbEds
b2JhbE9iamVjdCkpOwogfQogCiBzdGF0aWMgSW5zcGVjdG9yOjpQcm90b2NvbDo6VGltZWxpbmU6
OkV2ZW50VHlwZSB0b1Byb3RvY29sKFRpbWVsaW5lUmVjb3JkVHlwZSB0eXBlKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JUaW1lbGluZUFnZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdl
bnQuaAppbmRleCAzMGZjOTc5NTI0YTk0YmUwZDM0MTU1MWUxZmU4ZWRjZjlhNGY3YjNiLi45NWE4
ZTNlZDcyZDJmYjQ0NTE0YTMxM2ExNDFjMWE5YTc5ODkzODVjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclRpbWVsaW5lQWdlbnQuaApA
QCAtMzQsOSArMzQsMTAgQEAKIAogI2luY2x1ZGUgIkluc3BlY3RvcldlYkFnZW50QmFzZS5oIgog
I2luY2x1ZGUgIkxheW91dFJlY3QuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9EZWJ1Z2dl
ci5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0RlYnVnZ2VyUHJpbWl0aXZlcy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckJhY2tlbmREaXNwYXRjaGVycy5oPgogI2lu
Y2x1ZGUgPEphdmFTY3JpcHRDb3JlL0luc3BlY3RvckZyb250ZW5kRGlzcGF0Y2hlcnMuaD4KLSNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9TY3JpcHREZWJ1Z0xpc3RlbmVyLmg+CiAjaW5jbHVkZSA8
d3RmL0pTT05WYWx1ZXMuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTgxLDcgKzgy
LDcgQEAgZW51bSBjbGFzcyBUaW1lbGluZVJlY29yZFR5cGUgewogICAgIE9ic2VydmVyQ2FsbGJh
Y2ssCiB9OwogCi1jbGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IGZpbmFsIDogcHVibGljIElu
c3BlY3RvckFnZW50QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3Bh
dGNoZXJIYW5kbGVyICwgcHVibGljIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdMaXN0ZW5lciB7Citj
bGFzcyBJbnNwZWN0b3JUaW1lbGluZUFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckFnZW50
QmFzZSAsIHB1YmxpYyBJbnNwZWN0b3I6OlRpbWVsaW5lQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
ICwgcHVibGljIEpTQzo6RGVidWdnZXI6Ok9ic2VydmVyIHsKICAgICBXVEZfTUFLRV9OT05DT1BZ
QUJMRShJbnNwZWN0b3JUaW1lbGluZUFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RDsKIHB1YmxpYzoKQEAgLTEwMCwxNiArMTAxLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0QXV0
b0NhcHR1cmVFbmFibGVkKEVycm9yU3RyaW5nJiwgYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBz
ZXRJbnN0cnVtZW50cyhFcnJvclN0cmluZyYsIGNvbnN0IEpTT046OkFycmF5Jikgb3ZlcnJpZGU7
CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBkaWRQYXJzZVNvdXJjZShK
U0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHQmKSBvdmVycmlkZSB7IH0KLSAgICB2b2lkIGZhaWxl
ZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgaW50LCBpbnQsIGNv
bnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgd2lsbFJ1bk1pY3JvdGFzaygpIG92
ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkUnVuTWljcm90YXNrKCkgb3ZlcnJpZGUgeyB9Ci0gICAg
dm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNDOjpKU1ZhbHVlLCBKU0M6OkpT
VmFsdWUpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgZGlkQ29udGludWUoKSBvdmVycmlkZSB7IH0K
LSAgICB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Mb2coSlNDOjpKU0dsb2JhbE9iamVjdCosIGNvbnN0
IFN0cmluZyYpIG92ZXJyaWRlIHsgfQotICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvblNvdW5kKGlu
dCkgb3ZlcnJpZGUgeyB9Ci0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uUHJvYmUoSlNDOjpKU0ds
b2JhbE9iamVjdCosIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbiYsIHVu
c2lnbmVkIGJhdGNoSWQsIHVuc2lnbmVkIHNhbXBsZUlkLCBKU0M6OkpTVmFsdWUgcmVzdWx0KSBv
dmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQgYnJlYWtw
b2ludEFjdGlvblByb2JlKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBKU0M6OkJyZWFrcG9pbnRBY3Rp
b25JRCwgdW5zaWduZWQgYmF0Y2hJZCwgdW5zaWduZWQgc2FtcGxlSWQsIEpTQzo6SlNWYWx1ZSBy
ZXN1bHQpIGZpbmFsOwogCiAgICAgLy8gSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uCiAgICAgdm9p
ZCBkaWRJbnN0YWxsVGltZXIoaW50IHRpbWVySWQsIFNlY29uZHMgdGltZW91dCwgYm9vbCBzaW5n
bGVTaG90LCBGcmFtZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggMTM5YmJjNWUz
MDIxMDY2NTI0NzQ1NTczOTM1NWY4Y2RlNzRjMjE5MC4uN2Y0ODc1NGFmMTZhODRjODZkMzRkMmRi
MmM2ZTE3YWQ3ZmFhYmQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9wYWdlL1BhZ2VET01EZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC05NCw3ICs5
NCw4IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoKQogICAgIG1faW5zdHJ1
bWVudGluZ0FnZW50cy5zZXRFbmFibGVkUGFnZURPTURlYnVnZ2VyQWdlbnQobnVsbHB0cik7CiAK
ICAgICBtX2RvbUJyZWFrcG9pbnRzLmNsZWFyKCk7Ci0gICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9u
RnJhbWVzRW5hYmxlZCA9IGZhbHNlOworCisgICAgbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVz
QnJlYWtwb2ludCA9IG51bGxwdHI7CiAKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Ojpk
aXNhYmxlKCk7CiB9CkBAIC0xNTIsNiArMTUzLDE0IEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdl
bnQ6OnJlbW92ZURPTUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9k
CiAgICAgfQogfQogCit2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50OjptYWluRnJhbWVOYXZpZ2F0
ZWQoKQoreworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ6Om1haW5GcmFtZU5hdmlnYXRl
ZCgpOworCisgICAgaWYgKG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisg
ICAgICAgIG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQtPnJlc2V0SGl0Q291
bnQoKTsKK30KKwogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZnJhbWVEb2N1bWVudFVwZGF0
ZWQoRnJhbWUmIGZyYW1lKQogewogICAgIGlmICghZnJhbWUuaXNNYWluRnJhbWUoKSkKQEAgLTI1
MiwxMSArMjYxLDIzIEBAIHZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OndpbGxGaXJlQW5pbWF0
aW9uRnJhbWUoKQogICAgIGlmICghbV9kZWJ1Z2dlckFnZW50LT5icmVha3BvaW50c0FjdGl2ZSgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBib29sIHNob3VsZFBhdXNlID0gbV9kZWJ1Z2dlckFn
ZW50LT5wYXVzZU9uTmV4dFN0YXRlbWVudEVuYWJsZWQoKSB8fCBtX3BhdXNlT25BbGxBbmltYXRp
b25GcmFtZXNFbmFibGVkOwotICAgIGlmICghc2hvdWxkUGF1c2UpCisgICAgYXV0byBicmVha3Bv
aW50ID0gbV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludDsKKyAgICBpZiAoIWJy
ZWFrcG9pbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIG1fZGVidWdnZXJBZ2VudC0+c2NoZWR1
bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3I6OkRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkFuaW1hdGlvbkZyYW1lLCBudWxscHRyKTsKKyAgICBtX2RlYnVnZ2VyQWdl
bnQtPnNjaGVkdWxlUGF1c2VGb3JTcGVjaWFsQnJlYWtwb2ludCgqYnJlYWtwb2ludCwgSW5zcGVj
dG9yOjpEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpBbmltYXRpb25GcmFtZSk7
Cit9CisKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OmRpZEZpcmVBbmltYXRpb25GcmFtZSgp
Cit7CisgICAgaWYgKCFtX2RlYnVnZ2VyQWdlbnQtPmJyZWFrcG9pbnRzQWN0aXZlKCkpCisgICAg
ICAgIHJldHVybjsKKworICAgIGF1dG8gYnJlYWtwb2ludCA9IG1fcGF1c2VPbkFsbEFuaW1hdGlv
bkZyYW1lc0JyZWFrcG9pbnQ7CisgICAgaWYgKCFicmVha3BvaW50KQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2RlYnVnZ2VyQWdlbnQtPmNhbmNlbFBhdXNlRm9yU3BlY2lhbEJyZWFrcG9pbnQo
KmJyZWFrcG9pbnQpOwogfQogCiB2b2lkIFBhZ2VET01EZWJ1Z2dlckFnZW50Ojp3aWxsSW52YWxp
ZGF0ZVN0eWxlQXR0cihFbGVtZW50JiBlbGVtZW50KQpAQCAtMjcxLDEyICsyOTIsMTQgQEAgdm9p
ZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6d2lsbEludmFsaWRhdGVTdHlsZUF0dHIoRWxlbWVudCYg
ZWxlbWVudCkKICAgICB9CiB9CiAKLXZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1h
dGlvbkZyYW1lQnJlYWtwb2ludChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxl
ZCkKK3ZvaWQgUGFnZURPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIFJlZlB0cjxKU0M6OkJyZWFrcG9pbnQ+JiYgYnJl
YWtwb2ludCkKIHsKLSAgICBpZiAobV9wYXVzZU9uQWxsQW5pbWF0aW9uRnJhbWVzRW5hYmxlZCA9
PSBlbmFibGVkKQotICAgICAgICBlcnJvclN0cmluZyA9IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZy
YW1lc0VuYWJsZWQgPyAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgYWxyZWFkeSBleGlz
dHMiX3MgOiAiQnJlYWtwb2ludCBmb3IgQW5pbWF0aW9uRnJhbWUgbWlzc2luZyJfczsKKyAgICBp
ZiAoIW1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPT0gIWJyZWFrcG9pbnQp
IHsKKyAgICAgICAgZXJyb3JTdHJpbmcgPSBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50ID8gIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIGFscmVhZHkgZXhpc3RzIl9z
IDogIkJyZWFrcG9pbnQgZm9yIEFuaW1hdGlvbkZyYW1lIG1pc3NpbmciX3M7CisgICAgICAgIHJl
dHVybjsKKyAgICB9CiAKLSAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkID0g
ZW5hYmxlZDsKKyAgICBtX3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50ID0gV1RG
TW92ZShicmVha3BvaW50KTsKIH0KIAogdm9pZCBQYWdlRE9NRGVidWdnZXJBZ2VudDo6ZGVzY3Jp
cHRpb25Gb3JET01FdmVudChOb2RlJiB0YXJnZXQsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBp
bnNlcnRpb24sIEpTT046Ok9iamVjdCYgZGVzY3JpcHRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURPTURlYnVnZ2VyQWdlbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5o
CmluZGV4IDdkZGY0NTNiOTQxOWQyMGZhOTE0NmMxMTdmYWFiZmE1MWZmMzQ2MDQuLmJhNGVmNjAy
M2RhYjMwOGIxYWQ1MWJkODYyNDkwYmFiNTcwYTFhMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRE9NRGVidWdnZXJBZ2VudC5o
CkBAIC0yNiw2ICsyNiw4IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9CcmVha3BvaW50Lmg+
CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ3
LDYgKzQ5LDcgQEAgcHVibGljOgogICAgIHZvaWQgcmVtb3ZlRE9NQnJlYWtwb2ludChFcnJvclN0
cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdHlwZSkgb3ZlcnJpZGU7CiAKICAgICAv
LyBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24KKyAgICB2b2lkIG1haW5GcmFtZU5hdmlnYXRlZCgp
IGZpbmFsOwogICAgIHZvaWQgZnJhbWVEb2N1bWVudFVwZGF0ZWQoRnJhbWUmKTsKICAgICB2b2lk
IHdpbGxJbnNlcnRET01Ob2RlKE5vZGUmIHBhcmVudCk7CiAgICAgdm9pZCBkaWRJbnNlcnRET01O
b2RlKE5vZGUmKTsKQEAgLTU1LDEyICs1OCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCB3aWxsTW9k
aWZ5RE9NQXR0cihFbGVtZW50Jik7CiAgICAgdm9pZCB3aWxsSW52YWxpZGF0ZVN0eWxlQXR0cihF
bGVtZW50Jik7CiAgICAgdm9pZCB3aWxsRmlyZUFuaW1hdGlvbkZyYW1lKCk7CisgICAgdm9pZCBk
aWRGaXJlQW5pbWF0aW9uRnJhbWUoKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIGVuYWJsZSgpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlzYWJsZSgpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBzZXRBbmlt
YXRpb25GcmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQpIG92ZXJyaWRl
OworICAgIHZvaWQgc2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgUmVm
UHRyPEpTQzo6QnJlYWtwb2ludD4mJikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRlc2NyaXB0aW9u
Rm9yRE9NRXZlbnQoTm9kZSYsIGludCBicmVha3BvaW50VHlwZSwgYm9vbCBpbnNlcnRpb24sIEpT
T046Ok9iamVjdCYgZGVzY3JpcHRpb24pOwogICAgIHZvaWQgdXBkYXRlU3VidHJlZUJyZWFrcG9p
bnRzKE5vZGUqLCB1aW50MzJfdCByb290TWFzaywgYm9vbCBzZXQpOwpAQCAtNjgsNyArNzIsOCBA
QCBwcml2YXRlOgogICAgIGJvb2wgaGFzQnJlYWtwb2ludChOb2RlKiwgaW50IHR5cGUpOwogCiAg
ICAgSGFzaE1hcDxOb2RlKiwgdWludDMyX3Q+IG1fZG9tQnJlYWtwb2ludHM7Ci0gICAgYm9vbCBt
X3BhdXNlT25BbGxBbmltYXRpb25GcmFtZXNFbmFibGVkIHsgZmFsc2UgfTsKKworICAgIFJlZlB0
cjxKU0M6OkJyZWFrcG9pbnQ+IG1fcGF1c2VPbkFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQ7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1
MGNjOThiM2ZhMzBlM2RhMWY2ZTVlZGQyOTFjOWNjNjYzMTY2ZTcxLi4yMTdjYjU1ZTZjMGVkNzZj
OWU2NzQxOGE4YzMzNGEwNDE4ZmNlMmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9hZ2VudHMvcGFnZS9QYWdlRGVidWdnZXJBZ2VudC5jcHAKQEAgLTkwLDcg
KzkwLDcgQEAgdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShib29sIGlzQmVpbmdEZXN0
cm95ZWQpCiAgICAgV2ViRGVidWdnZXJBZ2VudDo6ZGlzYWJsZShpc0JlaW5nRGVzdHJveWVkKTsK
IH0KIAotU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29u
c3QgU2NyaXB0JiBzY3JpcHQpCitTdHJpbmcgUGFnZURlYnVnZ2VyQWdlbnQ6OnNvdXJjZU1hcFVS
TEZvclNjcmlwdChjb25zdCBKU0M6OkRlYnVnZ2VyOjpTY3JpcHQmIHNjcmlwdCkKIHsKICAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8U3RyaW5nPiBzb3VyY2VNYXBIVFRQSGVhZGVyKE1BS0VfU1RB
VElDX1NUUklOR19JTVBMKCJTb3VyY2VNYXAiKSk7CiAgICAgc3RhdGljIE5ldmVyRGVzdHJveWVk
PFN0cmluZz4gc291cmNlTWFwSFRUUEhlYWRlckRlcHJlY2F0ZWQoTUFLRV9TVEFUSUNfU1RSSU5H
X0lNUEwoIlgtU291cmNlTWFwIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2FnZW50cy9wYWdlL1BhZ2VEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvYWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAppbmRleCBkMTM5MTA4YmZiOTg4
MzQ5MzlhZDAyOWM2N2M5NmE4ZmUxOWM3NjNhLi40YzI3ZGQxYzc0YjEyZTg1N2I2Y2Y2NTEwZjg5
OTc2MDdhMTY2MjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRz
L3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
YWdlbnRzL3BhZ2UvUGFnZURlYnVnZ2VyQWdlbnQuaApAQCAtNTEsOCArNTEsOCBAQCBwdWJsaWM6
CiAgICAgLy8gRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIKICAgICB2b2lkIGV2YWx1
YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBj
b25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0
IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsIGNvbnN0IGJvb2wqIHNhdmVSZXN1bHQsIGNvbnN0IGJvb2wq
IGVtdWxhdGVVc2VyR2VzdHVyZSwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6
OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgT3B0aW9uYWw8Ym9vbD4mIHdhc1Rocm93biwgT3B0aW9u
YWw8aW50PiYgc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1
Z0xpc3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmpl
Y3QqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAgICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNl
cnZlcgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxvZyhKU0M6OkpTR2xvYmFsT2JqZWN0Kiwg
Y29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogICAgIC8vIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbgogICAgIHZvaWQgZGlkQ2xlYXJXaW5kb3dPYmplY3RJbldvcmxkKEZyYW1lJiwgRE9NV3Jh
cHBlcldvcmxkJik7CkBAIC02Nyw3ICs2Nyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbmFibGUo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSBvdmVy
cmlkZTsKIAotICAgIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0Jikg
b3ZlcnJpZGU7CisgICAgU3RyaW5nIHNvdXJjZU1hcFVSTEZvclNjcmlwdChjb25zdCBKU0M6OkRl
YnVnZ2VyOjpTY3JpcHQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgbXV0ZUNvbnNvbGUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHVubXV0ZUNvbnNvbGUoKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9N
RGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYWQ4M2Y2ZDM3YmQ2NGJjZTIyMWUzZGFjZDdhMjI5OTMx
MTJhOGY2Mi4uMTQ3NmZiYzgxOTYzNTdkOTEyYmM4MmEzYzM1NGU4M2E5NGE0NjE1NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3Jr
ZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgdm9pZCBXb3Jr
ZXJET01EZWJ1Z2dlckFnZW50OjpyZW1vdmVET01CcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgaW50IC8KICAgICBlcnJvclN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQog
Ci12b2lkIFdvcmtlckRPTURlYnVnZ2VyQWdlbnQ6OnNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2lu
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgLyogZW5hYmxlZCAqLykKK3ZvaWQgV29y
a2VyRE9NRGVidWdnZXJBZ2VudDo6c2V0QW5pbWF0aW9uRnJhbWVCcmVha3BvaW50KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgUmVmUHRyPEpTQzo6QnJlYWtwb2ludD4mJikKIHsKICAgICBlcnJv
clN0cmluZyA9ICJOb3Qgc3VwcG9ydGVkIl9zOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRE9NRGVidWdnZXJBZ2Vu
dC5oCmluZGV4IGIxMTI4NWUwNDYyZGEyMTEwZjg5NTY2ODY3ZDVmMDI5NjE3MzJlYjAuLmRhZDE4
ZjVjMGVjOGFhM2JjOGI0Zjc4YWRmZjRlOTA4ZmRkODNkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRPTURlYnVnZ2VyQWdlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJET01EZWJ1
Z2dlckFnZW50LmgKQEAgLTI2LDYgKzI2LDggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0Jy
ZWFrcG9pbnQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIApAQCAtNDEsNyArNDMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVET01CcmVha3Bv
aW50KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB0eXBlKSBvdmVycmlk
ZTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHNldEFuaW1hdGlvbkZyYW1lQnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGJvb2wgZW5hYmxlZCkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRBbmltYXRpb25G
cmFtZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SlNDOjpCcmVha3BvaW50PiYmKSBv
dmVycmlkZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdlbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvd29ya2VyL1dvcmtlckRlYnVnZ2VyQWdl
bnQuaAppbmRleCAzMTkxNjc2NjNjN2Q2NzhjNDBhMmRmZmU0MTQ2NWQ1NWIzZWUzNWEzLi40YWMw
N2Q2Y2MzN2MyMjgwMzMzOGViODBkMzQyMTk1MjFiOTZmM2RlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvYWdlbnRzL3dvcmtlci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2FnZW50cy93b3JrZXIvV29ya2VyRGVidWdnZXJB
Z2VudC5oCkBAIC0zOCw4ICszOCw4IEBAIHB1YmxpYzoKICAgICBXb3JrZXJEZWJ1Z2dlckFnZW50
KFdvcmtlckFnZW50Q29udGV4dCYpOwogICAgIH5Xb3JrZXJEZWJ1Z2dlckFnZW50KCkgb3ZlcnJp
ZGU7CiAKLSAgICAvLyBTY3JpcHREZWJ1Z0xpc3RlbmVyCi0gICAgdm9pZCBicmVha3BvaW50QWN0
aW9uTG9nKEpTQzo6SlNHbG9iYWxPYmplY3QqLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZTsKKyAg
ICAvLyBKU0M6OkRlYnVnZ2VyOjpPYnNlcnZlcgorICAgIHZvaWQgYnJlYWtwb2ludEFjdGlvbkxv
ZyhKU0M6OkpTR2xvYmFsT2JqZWN0KiwgY29uc3QgU3RyaW5nJiBkYXRhKSBmaW5hbDsKIAogcHJp
dmF0ZToKICAgICAvLyBXZSBkb24ndCBuZWVkIHRvIG11dGUgY29uc29sZSBmb3Igd29ya2Vycy4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NVGltZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01UaW1lci5jcHAKaW5kZXggNWI5MzFlZmExZjAzYWJhOWY2NzlmNzk1MmRk
OWFkZjczYzgxNjFjOC4uODY1NDA4ZGJmYTUwMzYyMWZhYzQxZjIwZjZjZmZiZjQ0MzU4YTYwZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01UaW1lci5jcHAKQEAgLTI4NCw2ICsyODQsOCBAQCB2b2lkIERPTVRp
bWVyOjpmaXJlZCgpCiAgICAgLy8gd2FpdCB1bml0IHRoZSBlbmQgb2YgdGhpcyBmdW5jdGlvbiB0
byBkZWxldGUgRE9NVGltZXIuCiAgICAgUmVmPERPTVRpbWVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlz
KTsKIAorICAgIGJvb2wgb25lU2hvdCA9ICFyZXBlYXRJbnRlcnZhbCgpOworCiAgICAgQVNTRVJU
KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSk7CiAgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCA9ICpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAKQEAgLTI5MSw3ICsyOTMsNyBA
QCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkg
ewogICAgICAgICBhdXRvJiBkb2N1bWVudCA9IGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsK
ICAgICAgICAgaWYgKGF1dG8qIGhvbGRpbmdUYW5rID0gZG9jdW1lbnQuZG9tVGltZXJIb2xkaW5n
VGFua0lmRXhpc3RzKCk7IGhvbGRpbmdUYW5rICYmIGhvbGRpbmdUYW5rLT5jb250YWlucygqdGhp
cykpIHsKLSAgICAgICAgICAgIGlmICghcmVwZWF0SW50ZXJ2YWwoKSkKKyAgICAgICAgICAgIGlm
IChvbmVTaG90KQogICAgICAgICAgICAgICAgIHN0YXJ0T25lU2hvdCgwX3MpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMDksNyArMzExLDcgQEAgdm9pZCBET01UaW1lcjo6
ZmlyZWQoKQogICAgIC8vIE9ubHkgdGhlIGZpcnN0IGV4ZWN1dGlvbiBvZiBhIG11bHRpLXNob3Qg
dGltZXIgc2hvdWxkIGdldCBhbiBhZmZpcm1hdGl2ZSB1c2VyIGdlc3R1cmUgaW5kaWNhdG9yLgog
ICAgIG1fdXNlckdlc3R1cmVUb2tlblRvRm9yd2FyZCA9IG51bGxwdHI7CiAKLSAgICBJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJlVGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsICFy
ZXBlYXRJbnRlcnZhbCgpKTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OndpbGxGaXJl
VGltZXIoY29udGV4dCwgbV90aW1lb3V0SWQsIG9uZVNob3QpOwogCiAgICAgLy8gU2ltcGxlIGNh
c2UgZm9yIG5vbi1vbmUtc2hvdCB0aW1lcnMuCiAgICAgaWYgKGlzQWN0aXZlKCkpIHsKQEAgLTMy
MCw3ICszMjIsNyBAQCB2b2lkIERPTVRpbWVyOjpmaXJlZCgpCiAKICAgICAgICAgbV9hY3Rpb24t
PmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpk
aWRGaXJlVGltZXIoY29udGV4dCk7CisgICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6
ZGlkRmlyZVRpbWVyKGNvbnRleHQsIG1fdGltZW91dElkLCBvbmVTaG90KTsKIAogICAgICAgICB1
cGRhdGVUaHJvdHRsaW5nU3RhdGVJZk5lY2Vzc2FyeShmaXJlU3RhdGUpOwogICAgICAgICByZXR1
cm47CkBAIC0zMzgsNyArMzQwLDcgQEAgdm9pZCBET01UaW1lcjo6ZmlyZWQoKQogI2VuZGlmCiAg
ICAgbV9hY3Rpb24tPmV4ZWN1dGUoY29udGV4dCk7CiAKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZEZpcmVUaW1lcihjb250ZXh0KTsKKyAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZEZpcmVUaW1lcihjb250ZXh0LCBtX3RpbWVvdXRJZCwgb25lU2hvdCk7CiAKICAgICAv
LyBDaGVjayBpZiB3ZSBzaG91bGQgdGhyb3R0bGUgbmVzdGVkIHNpbmdsZS1zaG90IHRpbWVycy4K
ICAgICBpZiAobmVzdGVkVGltZXJzKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9CYXNlL1NldHRpbmcuanMKaW5kZXggM2IxOTlmYTY4OGZiNTY5NjMyODE1
NzQzZjMwNGFmOGM0NTdhZjZmZC4uZWQ1YWIwMDk2YjJkMTA2Njc4ZmE5OTgyODUyZWM5OGI2ZjMy
MTU4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFz
ZS9TZXR0aW5nLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jh
c2UvU2V0dGluZy5qcwpAQCAtMTk3LDEyICsxOTcsOCBAQCBXSS5zZXR0aW5ncyA9IHsKICAgICBz
ZWFyY2hSZWd1bGFyRXhwcmVzc2lvbjogbmV3IFdJLlNldHRpbmcoInNlYXJjaC1yZWd1bGFyLWV4
cHJlc3Npb24iLCBmYWxzZSksCiAgICAgc2VsZWN0ZWROZXR3b3JrRGV0YWlsQ29udGVudFZpZXdJ
ZGVudGlmaWVyOiBuZXcgV0kuU2V0dGluZygibmV0d29yay1kZXRhaWwtY29udGVudC12aWV3LWlk
ZW50aWZpZXIiLCAicHJldmlldyIpLAogICAgIHNvdXJjZU1hcHNFbmFibGVkOiBuZXcgV0kuU2V0
dGluZygic291cmNlLW1hcHMtZW5hYmxlZCIsIHRydWUpLAotICAgIHNob3dBbGxBbmltYXRpb25G
cmFtZXNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtYW5pbWF0aW9uLWZyYW1l
cy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50OiBu
ZXcgV0kuU2V0dGluZygic2hvdy1hbGwtaW50ZXZlcmFscy1icmVha3BvaW50IiwgZmFsc2UpLAot
ICAgIHNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwt
bGlzdGVuZXJzLWJyZWFrcG9pbnQiLCBmYWxzZSksCiAgICAgc2hvd0FsbE1pY3JvdGFza3NCcmVh
a3BvaW50OiBuZXcgV0kuU2V0dGluZygic2hvdy1hbGwtbWljcm90YXNrcy1icmVha3BvaW50Iiwg
ZmFsc2UpLAogICAgIHNob3dBbGxSZXF1ZXN0c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJz
aG93LWFsbC1yZXF1ZXN0cy1icmVha3BvaW50IiwgZmFsc2UpLAotICAgIHNob3dBbGxUaW1lb3V0
c0JyZWFrcG9pbnQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50
IiwgZmFsc2UpLAogICAgIHNob3dBc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQ6IG5ldyBXSS5T
ZXR0aW5nKCJzaG93LWFzc2VydGlvbi1mYWlsdXJlcy1icmVha3BvaW50IiwgdHJ1ZSksCiAgICAg
c2hvd0NhbnZhc1BhdGg6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWNhbnZhcy1wYXRoIiwgZmFsc2Up
LAogICAgIHNob3dJbWFnZUdyaWQ6IG5ldyBXSS5TZXR0aW5nKCJzaG93LWltYWdlLWdyaWQiLCB0
cnVlKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJvbGxlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0JyZWFrcG9pbnRQb3BvdmVyQ29udHJv
bGxlci5qcwppbmRleCBhZTRjYzQ3YzUxY2NkNzgzMDg5NmFlYThjMzNjMjQxYjg4OTQxYzM1Li4w
OThjYTJkZmNjYmJhNmIxZDdhY2NiOTY0ZDEzODViN2JhNGJjODE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9CcmVha3BvaW50UG9w
b3ZlckNvbnRyb2xsZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvQ29udHJvbGxlcnMvQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyLmpzCkBAIC00MCw2MCAr
NDAsNTkgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtwb2lu
dFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGRvY3VtZW50LmJvZHkuY29udGFpbnMoYnJlYWtwb2ludERpc3BsYXlFbGVtZW50KSwg
IkJyZWFrcG9pbnQgcG9wb3ZlciBkaXNwbGF5IGVsZW1lbnQgbXVzdCBiZSBpbiB0aGUgRE9NLiIp
OwogCi0gICAgICAgIGNvbnN0IGVkaXRCcmVha3BvaW50ID0gKCkgPT4gewotICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX3BvcG92ZXIsICJCcmVha3BvaW50IHBvcG92ZXIgYWxyZWFk
eSBleGlzdHMuIik7Ci0gICAgICAgICAgICBpZiAodGhpcy5fcG9wb3ZlcikKLSAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIGlmIChicmVha3BvaW50LmVkaXRhYmxlKSB7CisgICAgICAg
ICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJFZGl0IEJyZWFrcG9pbnRc
dTIwMjYiKSwgKCkgPT4geworICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9w
b3BvdmVyLCAiQnJlYWtwb2ludCBwb3BvdmVyIGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICAg
ICAgICAgIGlmICh0aGlzLl9wb3BvdmVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpOwotICAg
ICAgICAgICAgdGhpcy5fcG9wb3ZlciA9IG5ldyBXSS5Qb3BvdmVyKHRoaXMpOwotICAgICAgICAg
ICAgdGhpcy5fcG9wb3Zlci5jb250ZW50ID0gdGhpcy5fcG9wb3ZlckNvbnRlbnRFbGVtZW50Owor
ICAgICAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVBvcG92ZXJDb250ZW50KGJyZWFrcG9pbnQpOwor
ICAgICAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBuZXcgV0kuUG9wb3Zlcih0aGlzKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLl9wb3BvdmVyLmNvbnRlbnQgPSB0aGlzLl9wb3BvdmVyQ29udGVu
dEVsZW1lbnQ7CiAKLSAgICAgICAgICAgIGxldCBib3VuZHMgPSBXSS5SZWN0LnJlY3RGcm9tQ2xp
ZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkp
OwotICAgICAgICAgICAgYm91bmRzLm9yaWdpbi54IC09IDE7IC8vIE1vdmUgdGhlIGFuY2hvciBs
ZWZ0IG9uZSBwaXhlbCBzbyBpdCBsb29rcyBtb3JlIGNlbnRlcmVkLgotICAgICAgICAgICAgdGhp
cy5fcG9wb3Zlci5wcmVzZW50KGJvdW5kcy5wYWQoMiksIFtXSS5SZWN0RWRnZS5NQVhfWV0pOwot
ICAgICAgICB9OworICAgICAgICAgICAgICAgIGxldCBib3VuZHMgPSBXSS5SZWN0LnJlY3RGcm9t
Q2xpZW50UmVjdChicmVha3BvaW50RGlzcGxheUVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0
KCkpOworICAgICAgICAgICAgICAgIGJvdW5kcy5vcmlnaW4ueCAtPSAxOyAvLyBNb3ZlIHRoZSBh
bmNob3IgbGVmdCBvbmUgcGl4ZWwgc28gaXQgbG9va3MgbW9yZSBjZW50ZXJlZC4KKyAgICAgICAg
ICAgICAgICB0aGlzLl9wb3BvdmVyLnByZXNlbnQoYm91bmRzLnBhZCgyKSwgW1dJLlJlY3RFZGdl
Lk1BWF9ZXSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQogCi0gICAgICAgIGNvbnN0IHJl
bW92ZUJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIu
cmVtb3ZlQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfTsKKyAgICAgICAgaWYgKCFi
cmVha3BvaW50LmRpc2FibGVkKSB7CisgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVt
KFdJLlVJU3RyaW5nKCJEaXNhYmxlIEJyZWFrcG9pbnQiKSwgKCkgPT4geworICAgICAgICAgICAg
ICAgIGJyZWFrcG9pbnQuZGlzYWJsZWQgPSAhYnJlYWtwb2ludC5kaXNhYmxlZDsKKyAgICAgICAg
ICAgIH0pOwogCi0gICAgICAgIGNvbnN0IHRvZ2dsZUJyZWFrcG9pbnQgPSAoKSA9PiB7Ci0gICAg
ICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAg
ICAgIH07CisgICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSAmJiBicmVha3BvaW50
LmF1dG9Db250aW51ZSkgeworICAgICAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0o
V0kuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgKCkgPT4geworICAgICAg
ICAgICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9ICFicmVha3BvaW50LmF1dG9D
b250aW51ZTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBl
bHNlIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkVu
YWJsZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50LmRp
c2FibGVkID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7CisgICAgICAgICAgICB9KTsKKyAgICAgICAg
fQogCi0gICAgICAgIGNvbnN0IHRvZ2dsZUF1dG9Db250aW51ZSA9ICgpID0+IHsKLSAgICAgICAg
ICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlOwot
ICAgICAgICB9OworICAgICAgICBpZiAoYnJlYWtwb2ludC5lZGl0YWJsZSAmJiAhYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlzYWJsZWQgJiYgYnJlYWtwb2ludC5hY3Rp
b25zLmxlbmd0aCkgeworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0
cmluZygiU2V0IHRvIEF1dG9tYXRpY2FsbHkgQ29udGludWUiKSwgKCkgPT4geworICAgICAgICAg
ICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gIWJyZWFrcG9pbnQuYXV0b0NvbnRpbnVl
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAotICAgICAgICBjb25zdCByZXZlYWxPcmln
aW5hbFNvdXJjZUNvZGVMb2NhdGlvbiA9ICgpID0+IHsKLSAgICAgICAgICAgIGNvbnN0IG9wdGlv
bnMgPSB7Ci0gICAgICAgICAgICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKLSAgICAgICAg
ICAgICAgICBpZ25vcmVTZWFyY2hUYWI6IHRydWUsCi0gICAgICAgICAgICB9OwotICAgICAgICAg
ICAgV0kuc2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2lu
dC5zb3VyY2VDb2RlTG9jYXRpb24sIG9wdGlvbnMpOwotICAgICAgICB9OworICAgICAgICBpZiAo
YnJlYWtwb2ludC5yZW1vdmFibGUpIHsKKyAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0
ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksICgpID0+IHsKKyAgICAgICAgICAg
ICAgICBicmVha3BvaW50LnJlbW92ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KIAot
ICAgICAgICBpZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludEVkaXRhYmxlKGJyZWFr
cG9pbnQpKQotICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygi
RWRpdCBCcmVha3BvaW50XHUyMDI2IiksIGVkaXRCcmVha3BvaW50KTsKLQotICAgICAgICBpZiAo
YnJlYWtwb2ludC5hdXRvQ29udGludWUgJiYgIWJyZWFrcG9pbnQuZGlzYWJsZWQpIHsKLSAgICAg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJlYWtw
b2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV0kuVUlTdHJpbmcoIkNhbmNlbCBBdXRvbWF0aWMgQ29udGludWUiKSwgdG9nZ2xlQXV0
b0NvbnRpbnVlKTsKLSAgICAgICAgfSBlbHNlIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAg
ICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJl
YWtwb2ludCIpLCB0b2dnbGVCcmVha3BvaW50KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
Y29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiRW5hYmxlIEJyZWFrcG9pbnQiKSwg
dG9nZ2xlQnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKCFicmVha3BvaW50LmF1dG9Db250aW51
ZSAmJiAhYnJlYWtwb2ludC5kaXNhYmxlZCAmJiBicmVha3BvaW50LmFjdGlvbnMubGVuZ3RoKQot
ICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiU2V0IHRvIEF1
dG9tYXRpY2FsbHkgQ29udGludWUiKSwgdG9nZ2xlQXV0b0NvbnRpbnVlKTsKLQotICAgICAgICBp
ZiAoV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KSkK
LSAgICAgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBC
cmVha3BvaW50IiksIHJlbW92ZUJyZWFrcG9pbnQpOwotCi0gICAgICAgIGlmIChicmVha3BvaW50
Ll9zb3VyY2VDb2RlTG9jYXRpb24uaGFzTWFwcGVkTG9jYXRpb24oKSkgeworICAgICAgICBpZiAo
YnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50ICYmIGJyZWFrcG9p
bnQuc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKICAgICAgICAgICAg
IGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOwotICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShXSS5VSVN0cmluZygiUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIiksIHJl
dmVhbE9yaWdpbmFsU291cmNlQ29kZUxvY2F0aW9uKTsKKyAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIlJldmVhbCBpbiBPcmlnaW5hbCBSZXNvdXJjZSIpLCAo
KSA9PiB7CisgICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9ucyA9IHsKKyAgICAgICAgICAgICAg
ICAgICAgaWdub3JlTmV0d29ya1RhYjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgaWdub3Jl
U2VhcmNoVGFiOiB0cnVlLAorICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgV0ku
c2hvd09yaWdpbmFsT3JGb3JtYXR0ZWRTb3VyY2VDb2RlTG9jYXRpb24oYnJlYWtwb2ludC5zb3Vy
Y2VDb2RlTG9jYXRpb24sIG9wdGlvbnMpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0KICAg
ICB9CiAKQEAgLTEyNCw3ICsxMjMsMjIgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVy
ID0gY2xhc3MgQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAg
ICAgbGV0IGNoZWNrYm94TGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsYWJlbCIpOwog
ICAgICAgICBjaGVja2JveExhYmVsLmNsYXNzTmFtZSA9ICJ0b2dnbGUiOwogICAgICAgICBjaGVj
a2JveExhYmVsLmFwcGVuZENoaWxkKGNoZWNrYm94RWxlbWVudCk7Ci0gICAgICAgIGNoZWNrYm94
TGFiZWwuYXBwZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlM
b2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgaWYgKHRoaXMuX2JyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkKKyAgICAgICAgICAgIGNoZWNrYm94TGFiZWwuYXBw
ZW5kKHRoaXMuX2JyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMb2NhdGlvblN0
cmluZygpKTsKKyAgICAgICAgZWxzZSBpZiAodGhpcy5fYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJ
LkV2ZW50QnJlYWtwb2ludCkgeworICAgICAgICAgICAgbGV0IGRpc3BsYXlOYW1lOworICAgICAg
ICAgICAgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRp
b25GcmFtZXNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlT
dHJpbmcoIkFsbCBBbmltYXRpb24gRnJhbWVzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVh
a3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkK
KyAgICAgICAgICAgICAgICBkaXNwbGF5TmFtZSA9IFdJLlVJU3RyaW5nKCJBbGwgSW50ZXJ2YWxz
Iik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVha3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWxsTGlzdGVuZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAgICBkaXNwbGF5TmFt
ZSA9IFdJLlVJU3RyaW5nKCJBbGwgRXZlbnRzIik7CisgICAgICAgICAgICBlbHNlIGlmIChicmVh
a3BvaW50ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50KQor
ICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gV0kuVUlTdHJpbmcoIkFsbCBUaW1lb3V0cyIp
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGRpc3BsYXlOYW1lID0gYnJlYWtw
b2ludC5ldmVudE5hbWU7CisgICAgICAgICAgICBjaGVja2JveExhYmVsLmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKGRpc3BsYXlOYW1lKSk7CisgICAgICAgIH0KIAogICAgICAg
ICBsZXQgdGFibGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0YWJsZSIpOwogCkBAIC0xNzYs
NyArMTkwLDcgQEAgV0kuQnJlYWtwb2ludFBvcG92ZXJDb250cm9sbGVyID0gY2xhc3MgQnJlYWtw
b2ludFBvcG92ZXJDb250cm9sbGVyIGV4dGVuZHMgV0kuT2IKICAgICAgICAgdGhpcy5faWdub3Jl
Q291bnRJbnB1dC5pZCA9ICJlZGl0LWJyZWFrcG9pbnQtcG9wb3Zlci1pZ25vcmUiOwogICAgICAg
ICB0aGlzLl9pZ25vcmVDb3VudElucHV0LnR5cGUgPSAibnVtYmVyIjsKICAgICAgICAgdGhpcy5f
aWdub3JlQ291bnRJbnB1dC5taW4gPSAwOwotICAgICAgICB0aGlzLl9pZ25vcmVDb3VudElucHV0
LnZhbHVlID0gMDsKKyAgICAgICAgdGhpcy5faWdub3JlQ291bnRJbnB1dC52YWx1ZSA9IGJyZWFr
cG9pbnQuaWdub3JlQ291bnQ7CiAgICAgICAgIHRoaXMuX2lnbm9yZUNvdW50SW5wdXQuYWRkRXZl
bnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5fcG9wb3Zlcklnbm9yZUlucHV0Q2hhbmdlZC5iaW5k
KHRoaXMpKTsKIAogICAgICAgICBpZ25vcmVDb3VudExhYmVsLnNldEF0dHJpYnV0ZSgiZm9yIiwg
dGhpcy5faWdub3JlQ291bnRJbnB1dC5pZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dlck1hbmFnZXIuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01EZWJ1Z2dl
ck1hbmFnZXIuanMKaW5kZXggZDI5Y2RiODQ5YmYxYzZmOWM1ZjkyOTAyZGZlMjA0MDkwN2FhYTUx
OC4uZTA1MDk5NTliOWYzMWUwNTE1ZWRlZDcyZjk2ZDA3MGIwMzY4NWQ0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NRGVidWdn
ZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Nv
bnRyb2xsZXJzL0RPTURlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMzMsMzYgKzMzLDI3IEBAIFdJLkRP
TURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICB0aGlzLl9kb21CcmVha3BvaW50RnJhbWVJZGVudGlmaWVyTWFwID0gbmV3
IE1hcDsKIAogICAgICAgICB0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzID0gW107CisgICAgICAg
IHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBudWxsOworICAgICAgICB0aGlz
Ll9hbGxJbnRlcnZhbHNCcmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCA9IG51bGw7CisgICAgICAgIHRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2lu
dCA9IG51bGw7CisKICAgICAgICAgdGhpcy5fdXJsQnJlYWtwb2ludHMgPSBbXTsKIAotICAgICAg
ICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tYWxsLWFuaW1hdGlvbi1mcmFtZXMiLCBmYWxzZSk7Ci0gICAg
ICAgIHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVh
a3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCB7Ci0gICAgICAg
ICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnRFbmFibGVk
U2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxz
QnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFsbC1p
bnRlcnZhbHMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQg
PSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFs
LCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnRF
bmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5fYWxsTGlz
dGVuZXJzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9u
LWFsbC1saXN0ZW5lcnMiLCBmYWxzZSk7Ci0gICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFr
cG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCB7Ci0gICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbExpc3RlbmVyc0JyZWFr
cG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKLSAgICAgICAgfSk7Ci0KLSAgICAgICAgdGhpcy5f
YWxsVGltZW91dHNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcgV0kuU2V0dGluZygiYnJl
YWstb24tYWxsLXRpbWVvdXRzIiwgZmFsc2UpOwotICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBl
LlRpbWVvdXQsIHsKLSAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsVGltZW91dHNCcmVh
a3BvaW50RW5hYmxlZFNldHRpbmcudmFsdWUsCi0gICAgICAgIH0pOwotCiAgICAgICAgIHRoaXMu
X2FsbFJlcXVlc3RzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nID0gbmV3IFdJLlNldHRpbmcoImJy
ZWFrLW9uLWFsbC1yZXF1ZXN0cyIsIGZhbHNlKTsKICAgICAgICAgdGhpcy5fYWxsUmVxdWVzdHNC
cmVha3BvaW50ID0gbmV3IFdJLlVSTEJyZWFrcG9pbnQoV0kuVVJMQnJlYWtwb2ludC5UeXBlLlRl
eHQsICIiLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX2FsbFJlcXVlc3RzQnJlYWtw
b2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAogICAgICAgICB9KTsKIAotICAgICAgICBXSS5ET01C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5EaXNhYmxl
ZFN0YXRlQ2hhbmdlZCwgdGhpcy5faGFuZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFu
Z2VkLCB0aGlzKTsKLSAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5k
bGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIFdJ
LlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5VUkxCcmVha3BvaW50LkV2ZW50LkRp
c2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVVUkxCcmVha3BvaW50RGlzYWJsZWRTdGF0
ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5ET01CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5k
bGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJ
LkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50RGlzYWJsZWRT
dGF0ZUNoYW5nZWQsIHRoaXMpOworICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5faGFu
ZGxlRXZlbnRCcmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eUNoYW5nZWQsIHRoaXMpOworICAgICAg
ICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50
Lklnbm9yZUNvdW50RGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJs
ZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0
aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7
CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlRXZlbnRCcmVha3BvaW50QWN0
aW9uc0NoYW5nZWQsIHRoaXMpOworCisgICAgICAgIFdJLlVSTEJyZWFrcG9pbnQuYWRkRXZlbnRM
aXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMu
X2hhbmRsZVVSTEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKICAgICAg
ICAgV0kuZG9tTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9k
ZVJlbW92ZWQsIHRoaXMuX25vZGVSZW1vdmVkLCB0aGlzKTsKICAgICAgICAgV0kuZG9tTWFuYWdl
ci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTU1hbmFnZXIuRXZlbnQuTm9kZUluc2VydGVkLCB0aGlz
Ll9ub2RlSW5zZXJ0ZWQsIHRoaXMpOwpAQCAtNzgsNyArNjksNyBAQCBXSS5ET01EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnRzID0gV0kuU2V0
dGluZy5taWdyYXRlVmFsdWUoa2V5KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5n
U2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGxl
dCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXplZEJyZWFr
cG9pbnRzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IG9iamVjdFN0b3JlLnB1
dE9iamVjdChjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3Bv
aW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXdhaXQgb2JqZWN0U3RvcmUucHV0
T2JqZWN0KGNvbnN0cnVjdG9yLmZyb21KU09OKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQp
KTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIApAQCAtODYsNyAr
NzcsNyBAQCBXSS5ET01EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAgICAgICAgIHRoaXMuX3Jlc3RvcmluZ0JyZWFr
cG9pbnRzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBzZXJpYWxpemVkQnJlYWtw
b2ludCBvZiBzZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKLSAgICAgICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBjb25zdHJ1Y3Rvci5kZXNlcmlhbGl6ZShzZXJpYWxpemVkQnJlYWtwb2lu
dCk7CisgICAgICAgICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gY29uc3RydWN0b3IuZnJv
bUpTT04oc2VyaWFsaXplZEJyZWFrcG9pbnQpOwogCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGtleSA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIG9iamVjdFN0b3JlLmFzc29jaWF0ZU9i
amVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAgLTEwNSw0MiAr
OTYsMjEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2Vy
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgaWYgKERPTURlYnVnZ2VyTWFuYWdlci5zdXBw
b3J0c0V2ZW50QnJlYWtwb2ludHMoKSB8fCBET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVu
dExpc3RlbmVyQnJlYWtwb2ludHMoKSkgewogICAgICAgICAgICAgbG9hZEJyZWFrcG9pbnRzKFdJ
LkV2ZW50QnJlYWtwb2ludCwgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMsIFsiZXZl
bnQtYnJlYWtwb2ludHMiXSwgKGJyZWFrcG9pbnQpID0+IHsKLSAgICAgICAgICAgICAgICAvLyBN
aWdyYXRlIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgLCBgc2V0VGltZW91dGAsIGFuZCBgc2V0SW50
ZXJ2YWxgIGdsb2JhbCBicmVha3BvaW50cy4KLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGJyZWFr
cG9pbnQudHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuQW5pbWF0aW9uRnJhbWU6Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMuX2FsbEFuaW1hdGlv
bkZyYW1lc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAg
ICAgICAgICAgICAgICBpZiAoIVdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50LnZhbHVlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5zZXR0aW5ncy5zaG93
QWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxBbmltYXRpb25GcmFt
ZXNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAg
ICBXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50cy5kZWxldGVPYmplY3QoYnJlYWtwb2lu
dCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAgICAgICAgIGNhc2Ug
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZXI6Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAoYnJlYWtwb2ludC5ldmVudE5hbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAic2V0
VGltZW91dCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFr
cG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlKSB7
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgV0kuc2V0dGluZ3Muc2hvd0FsbFRpbWVvdXRz
QnJlYWtwb2ludC52YWx1ZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhp
cy5hZGRFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50KTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgICAgICAgICAgICAgIGNhc2UgInNldEludGVydmFsIjoKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQuZGlzYWJsZWQgPSBicmVha3BvaW50
LmRpc2FibGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFXSS5zZXR0aW5ncy5zaG93
QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlID0gdHJ1ZTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEV2ZW50QnJlYWtwb2ludCh0aGlz
Ll9hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAg
ICAgICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMuZGVsZXRl
T2JqZWN0KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
ICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgdGhpcy5hZGRFdmVudEJyZWFrcG9pbnQoYnJl
YWtwb2ludCk7CiAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGxvYWRMZWdhY3lH
bG9iYWxFdmVudEJyZWFrcG9pbnQgPSAodHlwZSwgc2hvd25TZXR0aW5nc0tleSwgZW5hYmxlZFNl
dHRpbmdzS2V5KSA9PiB7CisgICAgICAgICAgICAgICAgaWYgKCFXSS5TZXR0aW5nLm1pZ3JhdGVW
YWx1ZShzaG93blNldHRpbmdzS2V5KSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5FdmVudEJyZWFrcG9pbnQodHlwZSwgeworICAg
ICAgICAgICAgICAgICAgICBkaXNhYmxlZDogIVdJLlNldHRpbmcubWlncmF0ZVZhbHVlKGVuYWJs
ZWRTZXR0aW5nc0tleSksCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9OworICAg
ICAgICAgICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCA/Pz0gbG9hZExlZ2Fj
eUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25G
cmFtZSwgInNob3ctYWxsLWFuaW1hdGlvbi1mcmFtZXMtYnJlYWtwb2ludCIsICJicmVhay1vbi1h
bGwtYW5pbWF0aW9uLWZyYW1lcyIpOworICAgICAgICAgICAgdGhpcy5fYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludCA/Pz0gbG9hZExlZ2FjeUdsb2JhbEV2ZW50QnJlYWtwb2ludChXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5JbnRlcnZhbCwgInNob3ctYWxsLWludGV2ZXJhbHMtYnJlYWtwb2ludCIsICJi
cmVhay1vbi1hbGwtaW50ZXJ2YWxzIik7CisgICAgICAgICAgICB0aGlzLl9hbGxMaXN0ZW5lcnNC
cmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLkxpc3RlbmVyLCAic2hvdy1hbGwtbGlzdGVuZXJzLWJyZWFrcG9pbnQiLCAi
YnJlYWstb24tYWxsLWxpc3RlbmVycyIpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNC
cmVha3BvaW50ID8/PSBsb2FkTGVnYWN5R2xvYmFsRXZlbnRCcmVha3BvaW50KFdJLkV2ZW50QnJl
YWtwb2ludC5UeXBlLlRpbWVvdXQsICJzaG93LWFsbC10aW1lb3V0cy1icmVha3BvaW50IiwgImJy
ZWFrLW9uLWFsbC10aW1lb3V0cyIpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKERPTURlYnVn
Z2VyTWFuYWdlci5zdXBwb3J0c1VSTEJyZWFrcG9pbnRzKCkgfHwgRE9NRGVidWdnZXJNYW5hZ2Vy
LnN1cHBvcnRzWEhSQnJlYWtwb2ludHMoKSkgewpAQCAtMTYwLDI0ICsxMzAsMjQgQEAgV0kuRE9N
RGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICBpZiAodGFyZ2V0ID09PSBXSS5hc3N1bWluZ01haW5UYXJnZXQoKSAm
JiB0YXJnZXQubWFpblJlc291cmNlKQogICAgICAgICAgICAgICAgIHRoaXMuX3NwZWN1bGF0aXZl
bHlSZXNvbHZlRE9NQnJlYWtwb2ludHNGb3JVUkwodGFyZ2V0Lm1haW5SZXNvdXJjZS51cmwpOwog
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQuZGlz
YWJsZWQpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZlbnRCcmVha3BvaW50KHRoaXMu
X2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICBpZiAo
dGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCAmJiAhdGhpcy5fYWxsQW5pbWF0aW9u
RnJhbWVzQnJlYWtwb2ludC5kaXNhYmxlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVu
dEJyZWFrcG9pbnQodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgdGFyZ2V0KTsK
IAotICAgICAgICAgICAgaWYgKCF0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LmRpc2FibGVk
KQotICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxJ
bnRlcnZhbHNCcmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgaWYgKHRoaXMuX2FsbElu
dGVydmFsc0JyZWFrcG9pbnQgJiYgIXRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQuZGlzYWJs
ZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fc2V0RXZlbnRCcmVha3BvaW50KHRoaXMuX2FsbElu
dGVydmFsc0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKLSAgICAgICAgICAgIGlmICghdGhpcy5fYWxs
TGlzdGVuZXJzQnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRh
dGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2ludCwgdGFyZ2V0KTsK
KyAgICAgICAgICAgIGlmICh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50ICYmICF0aGlzLl9h
bGxMaXN0ZW5lcnNCcmVha3BvaW50LmRpc2FibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3Nl
dEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCB0YXJnZXQpOwog
Ci0gICAgICAgICAgICBpZiAoIXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludC5kaXNhYmxlZCkK
LSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQodGhpcy5fYWxsVGlt
ZW91dHNCcmVha3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgaWYgKHRoaXMuX2FsbFRpbWVv
dXRzQnJlYWtwb2ludCAmJiAhdGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LmRpc2FibGVkKQor
ICAgICAgICAgICAgICAgIHRoaXMuX3NldEV2ZW50QnJlYWtwb2ludCh0aGlzLl9hbGxUaW1lb3V0
c0JyZWFrcG9pbnQsIHRhcmdldCk7CiAKICAgICAgICAgICAgIGlmICghdGhpcy5fYWxsUmVxdWVz
dHNCcmVha3BvaW50LmRpc2FibGVkKQogICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVVSTEJy
ZWFrcG9pbnQodGhpcy5fYWxsUmVxdWVzdHNCcmVha3BvaW50LCB0YXJnZXQpOwogCiAgICAgICAg
ICAgICBmb3IgKGxldCBicmVha3BvaW50IG9mIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMpIHsK
ICAgICAgICAgICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZGlzYWJsZWQpCi0gICAgICAgICAgICAg
ICAgICAgIHRoaXMuX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwor
ICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwg
dGFyZ2V0KTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZm9yIChsZXQgYnJlYWtwb2lu
dCBvZiB0aGlzLl91cmxCcmVha3BvaW50cykgewpAQCAtMjcwLDE1ICsyNDAsNiBAQCBXSS5ET01E
ZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICBnZXQgbGlzdGVuZXJCcmVha3BvaW50cygpIHsgcmV0dXJuIHRoaXMuX2xpc3RlbmVy
QnJlYWtwb2ludHM7IH0KICAgICBnZXQgdXJsQnJlYWtwb2ludHMoKSB7IHJldHVybiB0aGlzLl91
cmxCcmVha3BvaW50czsgfQogCi0gICAgaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50KQot
ICAgIHsKLSAgICAgICAgcmV0dXJuIGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbEFuaW1hdGlvbkZy
YW1lc0JyZWFrcG9pbnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2FsbElu
dGVydmFsc0JyZWFrcG9pbnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2Fs
bExpc3RlbmVyc0JyZWFrcG9pbnQKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMu
X2FsbFRpbWVvdXRzQnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhp
cy5fYWxsUmVxdWVzdHNCcmVha3BvaW50OwotICAgIH0KLQogICAgIGRvbUJyZWFrcG9pbnRzRm9y
Tm9kZShub2RlKQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQobm9kZSBpbnN0YW5jZW9m
IFdJLkRPTU5vZGUpOwpAQCAtMzE5LDcgKzI4MCw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9
IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAo
IWJyZWFrcG9pbnQgfHwgIWJyZWFrcG9pbnQudXJsKQogICAgICAgICAgICAgcmV0dXJuOwogCi0g
ICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAg
ICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgewogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2
ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkRPTUJyZWFrcG9pbnRB
ZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
MzQxLDcgKzMwMiw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2Vy
TWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lhbChi
cmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludC5zcGVjaWFsKSB7CiAgICAgICAg
ICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5ET01CcmVha3Bv
aW50UmVtb3ZlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM4Mywy
NCArMzQ0LDQ0IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lh
bChicmVha3BvaW50KSkgewotICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJl
YWtwb2ludH0pOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFicmVha3BvaW50LnNwZWNpYWwsIGJyZWFrcG9pbnQpOworCisgICAgICAgIHN3aXRjaCAo
YnJlYWtwb2ludC50eXBlKSB7CisgICAgICAgIGNhc2UgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
QW5pbWF0aW9uRnJhbWU6CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2lu
dCwgYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVh
a3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWw6CisgICAgICAgICAgICBjb25zb2xlLmFz
c2VydCghdGhpcy5fYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCwgdGhpcy5fYWxsSW50ZXJ2YWxzQnJl
YWtwb2ludCwgYnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxJbnRlcnZhbHNCcmVh
a3BvaW50ID0gYnJlYWtwb2ludDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Ug
V0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXI6CisgICAgICAgICAgICBpZiAoYnJlYWtw
b2ludC5ldmVudE5hbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbGlzdGVuZXJCcmVh
a3BvaW50cy5maW5kKChleGlzdGluZykgPT4gZXhpc3RpbmcuZXZlbnROYW1lID09PSBicmVha3Bv
aW50LmV2ZW50TmFtZSkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
ICAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsK
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXRo
aXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQsIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQs
IGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9p
bnQgPSBicmVha3BvaW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAg
ICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0OgorICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX2FsbFRpbWVvdXRzQnJlYWtwb2ludCwgdGhpcy5fYWxsVGlt
ZW91dHNCcmVha3BvaW50LCBicmVha3BvaW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbFRpbWVv
dXRzQnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRC
cmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGJyZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFz
c2VydChicmVha3BvaW50LmV2ZW50TmFtZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgaWYgKHRo
aXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuZmluZCgoZXhpc3RpbmcpID0+IGV4aXN0aW5nLmV2ZW50
TmFtZSA9PT0gYnJlYWtwb2ludC5ldmVudE5hbWUpKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMucHVzaChicmVha3BvaW50KTsK
KyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CiAKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwog
CiAgICAgICAgIGlmICghYnJlYWtwb2ludC5kaXNhYmxlZCkgewogICAgICAgICAgICAgZm9yIChs
ZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpCi0gICAgICAgICAgICAgICAgdGhpcy5fdXBkYXRlRXZl
bnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICAgICAgdGhpcy5f
c2V0RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIH0KIAogICAg
ICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQpAQCAtNDE1LDM4ICszOTYsNDYg
QEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdnZXJNYW5hZ2VyIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghYnJlYWtwb2ludCkKICAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICBpZiAodGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJyZWFrcG9pbnQpKSB7
Ci0gICAgICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRo
aXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5F
dmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwotICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50IGZpcnN0LCBzbyByZW1vdmluZyBh
Y3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50LgorICAgICAgICBicmVha3BvaW50
LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWtwb2ludC5jbGVhckFjdGlvbnMoKTsKKwor
ICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQudHlwZSkgeworICAgICAgICBjYXNlIFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lOgorICAgICAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgdGhpcy5fYWxsQW5pbWF0aW9u
RnJhbWVzQnJlYWtwb2ludCk7CisgICAgICAgICAgICB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNC
cmVha3BvaW50ID0gbnVsbDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWw6CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50LCB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3Bv
aW50KTsKKyAgICAgICAgICAgIHRoaXMuX2FsbEludGVydmFsc0JyZWFrcG9pbnQgPSBudWxsOwor
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlw
ZS5MaXN0ZW5lcjoKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50TmFtZSkgeworICAg
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2xpc3RlbmVyQnJlYWtwb2ludHMuaW5j
bHVkZXMoYnJlYWtwb2ludCksIGJyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIGlmICghdGhp
cy5fbGlzdGVuZXJCcmVha3BvaW50cy5pbmNsdWRlcyhicmVha3BvaW50KSkKKyAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAgdGhpcy5fbGlzdGVuZXJCcmVha3Bv
aW50cy5yZW1vdmUoYnJlYWtwb2ludCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2FsbExpc3RlbmVyc0JyZWFrcG9pbnQsIHRoaXMu
X2FsbExpc3RlbmVyc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgICAgIHRoaXMuX2FsbExpc3Rl
bmVyc0JyZWFrcG9pbnQgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5UaW1lb3V0OgorICAgICAg
ICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fYWxsVGltZW91dHNCcmVha3BvaW50LCB0aGlzLl9h
bGxUaW1lb3V0c0JyZWFrcG9pbnQpOworICAgICAgICAgICAgdGhpcy5fYWxsVGltZW91dHNCcmVh
a3BvaW50ID0gbnVsbDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlw
ZS5MaXN0ZW5lciwgYnJlYWtwb2ludCk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9p
bnQuZXZlbnROYW1lLCBicmVha3BvaW50KTsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlz
Ll9saXN0ZW5lckJyZWFrcG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9pbnQpLCBicmVha3BvaW50KTsK
LSAgICAgICAgaWYgKCF0aGlzLl9saXN0ZW5lckJyZWFrcG9pbnRzLmluY2x1ZGVzKGJyZWFrcG9p
bnQpKQotICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2xpc3RlbmVyQnJlYWtw
b2ludHMucmVtb3ZlKGJyZWFrcG9pbnQpOwotCiAgICAgICAgIGlmICghdGhpcy5fcmVzdG9yaW5n
QnJlYWtwb2ludHMpCiAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuZXZlbnRCcmVha3BvaW50
cy5kZWxldGVPYmplY3QoYnJlYWtwb2ludCk7CiAKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisKICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50
QnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7Ci0KLSAgICAgICAgaWYgKGJyZWFrcG9p
bnQuZGlzYWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgZm9yIChsZXQgdGFy
Z2V0IG9mIFdJLnRhcmdldHMpIHsKLSAgICAgICAgICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAx
Mik6IERPTURlYnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludCBkaWQgbm90IGV4aXN0LgotICAg
ICAgICAgICAgaWYgKHRhcmdldC5oYXNDb21tYW5kKCJET01EZWJ1Z2dlci5yZW1vdmVFdmVudEJy
ZWFrcG9pbnQiKSkKLSAgICAgICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1v
dmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludC50eXBlLCBicmVha3BvaW50LmV2ZW50TmFtZSk7
Ci0gICAgICAgICAgICBlbHNlIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQiKSkgewotICAgICAgICAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVu
ZXIpOwotICAgICAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnJlbW92ZUV2ZW50
TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQogICAgIH0KIAogICAgIHVybEJyZWFrcG9pbnRGb3JVUkwodXJsKQpAQCAtNDYw
LDcgKzQ0OSw3IEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBpZiAoIWJyZWFrcG9pbnQpCiAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgaWYgKHRoaXMuaXNCcmVha3BvaW50U3BlY2lh
bChicmVha3BvaW50KSkgeworICAgICAgICBpZiAoYnJlYWtwb2ludC5zcGVjaWFsKSB7CiAgICAg
ICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1Z2dlck1hbmFn
ZXIuRXZlbnQuVVJMQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwogICAgICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTQ5Myw3ICs0ODIsNyBAQCBXSS5ET01EZWJ1Z2dl
ck1hbmFnZXIgPSBjbGFzcyBET01EZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAg
ICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlm
ICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJy
ZWFrcG9pbnQuc3BlY2lhbCkgewogICAgICAgICAgICAgYnJlYWtwb2ludC5kaXNhYmxlZCA9IHRy
dWU7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01EZWJ1
Z2dlck1hbmFnZXIuRXZlbnQuVVJMQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAg
ICAgICAgICAgICByZXR1cm47CkBAIC02MzIsMjkgKzYyMSw4IEBAIFdJLkRPTURlYnVnZ2VyTWFu
YWdlciA9IGNsYXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgX3VwZGF0ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJn
ZXQpCisgICAgX2NvbW1hbmRBcmd1bWVudHNGb3JFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCkK
ICAgICB7Ci0gICAgICAgIC8vIFdvcmtlciB0YXJnZXRzIGRvIG5vdCBzdXBwb3J0IGByZXF1ZXN0
QW5pbWF0aW9uRnJhbWVgIGJyZWFrcG9pbnRzLgotICAgICAgICBpZiAoYnJlYWtwb2ludCA9PT0g
dGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCAmJiB0YXJnZXQudHlwZSA9PT0gV0ku
VGFyZ2V0VHlwZS5Xb3JrZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gQ09N
UEFUSUJJTElUWSAoaU9TIDEyKTogRE9NRGVidWdnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50IGRp
ZCBub3QgZXhpc3QuCi0gICAgICAgIGlmICh0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVidWdnZXIu
c2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQiKSAmJiB0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVi
dWdnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQiKSkgewotICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5M
aXN0ZW5lcik7Ci0gICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5kaXNhYmxlZCkKLSAgICAgICAg
ICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudExpc3RlbmVyQnJlYWtw
b2ludChicmVha3BvaW50LmV2ZW50TmFtZSk7Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1h
bmFnZXIuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQotICAgICAgICAgICAgICAgICAg
ICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVkID0gdHJ1ZTsKLQotICAgICAg
ICAgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50TGlzdGVuZXJCcmVha3Bv
aW50KGJyZWFrcG9pbnQuZXZlbnROYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICghdGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURl
YnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCIpIHx8ICF0YXJnZXQuaGFzQ29tbWFuZCgiRE9NRGVi
dWdnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50IikpCi0gICAgICAgICAgICByZXR1cm47Ci0KICAg
ICAgICAgbGV0IGNvbW1hbmRBcmd1bWVudHMgPSB7fTsKIAogICAgICAgICBzd2l0Y2ggKGJyZWFr
cG9pbnQpIHsKQEAgLTY5NiwxNiArNjY0LDYwIEBAIFdJLkRPTURlYnVnZ2VyTWFuYWdlciA9IGNs
YXNzIERPTURlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zdCBjYWxsYmFjayA9IG51bGw7CisgICAgICAg
IHJldHVybiBjb21tYW5kQXJndW1lbnRzOworICAgIH0KKworICAgIF9zZXRFdmVudEJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgdGFyZ2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWJy
ZWFrcG9pbnQuZGlzYWJsZWQsIGJyZWFrcG9pbnQpOworCisgICAgICAgIC8vIFdvcmtlciB0YXJn
ZXRzIGRvIG5vdCBzdXBwb3J0IGByZXF1ZXN0QW5pbWF0aW9uRnJhbWVgIGJyZWFrcG9pbnRzLgor
ICAgICAgICBpZiAoYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtw
b2ludCAmJiB0YXJnZXQudHlwZSA9PT0gV0kuVGFyZ2V0VHlwZS5Xb3JrZXIpCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDEyKTogRE9NRGVidWdn
ZXIuc2V0RXZlbnRCcmVha3BvaW50IGRpZCBub3QgZXhpc3QuCisgICAgICAgIGlmICh0YXJnZXQu
aGFzQ29tbWFuZCgiRE9NRGVidWdnZXIuc2V0RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQiKSkgewor
ICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC50eXBlID09PSBXSS5FdmVudEJy
ZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7CiAKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJs
ZWQpCi0gICAgICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5yZW1vdmVFdmVudEJyZWFr
cG9pbnQuaW52b2tlKGNvbW1hbmRBcmd1bWVudHMsIGNhbGxiYWNrKTsKLSAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1
Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQogICAgICAgICAgICAg
ICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQgPSB0cnVlOwogCi0gICAg
ICAgICAgICB0YXJnZXQuRE9NRGVidWdnZXJBZ2VudC5zZXRFdmVudEJyZWFrcG9pbnQuaW52b2tl
KGNvbW1hbmRBcmd1bWVudHMsIGNhbGxiYWNrKTsKKyAgICAgICAgICAgIHRhcmdldC5ET01EZWJ1
Z2dlckFnZW50LnNldEV2ZW50TGlzdGVuZXJCcmVha3BvaW50KGJyZWFrcG9pbnQuZXZlbnROYW1l
KTsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQorCisgICAgICAgIGlmICghdGFyZ2V0
Lmhhc0NvbW1hbmQoIkRPTURlYnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCIpKQorICAgICAgICAg
ICAgcmV0dXJuOworCisgICAgICAgIGxldCBjb21tYW5kQXJndW1lbnRzID0gdGhpcy5fY29tbWFu
ZEFyZ3VtZW50c0ZvckV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKKworICAgICAgICBpZiAo
IXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzICYmICFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtw
b2ludHNEaXNhYmxlZFRlbXBvcmFyaWx5KQorICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmJyZWFrcG9pbnRzRW5hYmxlZCA9IHRydWU7CisKKyAgICAgICAgY29tbWFuZEFyZ3VtZW50cy5v
cHRpb25zID0gYnJlYWtwb2ludC5vcHRpb25zVG9Qcm90b2NvbCgpOworCisgICAgICAgIHRhcmdl
dC5ET01EZWJ1Z2dlckFnZW50LnNldEV2ZW50QnJlYWtwb2ludC5pbnZva2UoY29tbWFuZEFyZ3Vt
ZW50cyk7CisgICAgfQorCisgICAgX3JlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0
YXJnZXQpCisgICAgeworICAgICAgICAvLyBXb3JrZXIgdGFyZ2V0cyBkbyBub3Qgc3VwcG9ydCBg
cmVxdWVzdEFuaW1hdGlvbkZyYW1lYCBicmVha3BvaW50cy4KKyAgICAgICAgaWYgKGJyZWFrcG9p
bnQgPT09IHRoaXMuX2FsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQgJiYgdGFyZ2V0LnR5cGUg
PT09IFdJLlRhcmdldFR5cGUuV29ya2VyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMik6IERPTURlYnVnZ2VyLnJlbW92ZUV2ZW50QnJlYWtw
b2ludCBkaWQgbm90IGV4aXN0LgorICAgICAgICBpZiAodGFyZ2V0Lmhhc0NvbW1hbmQoIkRPTURl
YnVnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXJCcmVha3BvaW50IikpIHsKKyAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQudHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
TGlzdGVuZXIpOworICAgICAgICAgICAgdGFyZ2V0LkRPTURlYnVnZ2VyQWdlbnQucmVtb3ZlRXZl
bnRMaXN0ZW5lckJyZWFrcG9pbnQoYnJlYWtwb2ludC5ldmVudE5hbWUpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCF0YXJnZXQuaGFzQ29tbWFuZCgiRE9N
RGVidWdnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50IikpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgbGV0IGNvbW1hbmRBcmd1bWVudHMgPSB0aGlzLl9jb21tYW5kQXJndW1lbnRzRm9y
RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCisgICAgICAgIHRhcmdldC5ET01EZWJ1Z2dl
ckFnZW50LnJlbW92ZUV2ZW50QnJlYWtwb2ludC5pbnZva2UoY29tbWFuZEFyZ3VtZW50cyk7CiAg
ICAgfQogCiAgICAgX3VwZGF0ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KQpAQCAt
NzU3LDMxICs3NjksNTEgQEAgV0kuRE9NRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRE9NRGVidWdn
ZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmIChicmVha3BvaW50LmV2ZW50
TGlzdGVuZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgZm9yIChsZXQgdGFyZ2V0
IG9mIFdJLnRhcmdldHMpCi0gICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgdGFyZ2V0KTsKLQotICAgICAgICBzd2l0Y2ggKGJyZWFrcG9pbnQpIHsKLSAg
ICAgICAgY2FzZSB0aGlzLl9hbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50OgotICAgICAgICAg
ICAgdGhpcy5fYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVl
ID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAg
Y2FzZSB0aGlzLl9hbGxJbnRlcnZhbHNCcmVha3BvaW50OgotICAgICAgICAgICAgdGhpcy5fYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlz
YWJsZWQ7Ci0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSB0aGlzLl9hbGxMaXN0
ZW5lcnNCcmVha3BvaW50OgotICAgICAgICAgICAgdGhpcy5fYWxsTGlzdGVuZXJzQnJlYWtwb2lu
dEVuYWJsZWRTZXR0aW5nLnZhbHVlID0gIWJyZWFrcG9pbnQuZGlzYWJsZWQ7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0KLSAgICAgICAgY2FzZSB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnQ6Ci0g
ICAgICAgICAgICB0aGlzLl9hbGxUaW1lb3V0c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1
ZSA9ICFicmVha3BvaW50LmRpc2FibGVkOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBm
b3IgKGxldCB0YXJnZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgaWYgKGJyZWFrcG9p
bnQuZGlzYWJsZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fcmVtb3ZlRXZlbnRCcmVha3BvaW50
KGJyZWFrcG9pbnQsIHRhcmdldCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAg
dGhpcy5fc2V0RXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQsIHRhcmdldCk7CiAgICAgICAgIH0K
IAogICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0JyZWFrcG9pbnRzKQogICAgICAgICAgICAg
V0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwog
ICAgIH0KIAorICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdl
ZChldmVudCkKKyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0Owor
CisgICAgICAgIC8vIFNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5k
bGVkIGJ5IGBET01NYW5hZ2VyYC4KKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5l
cikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoIXRoaXMuX3Jlc3RvcmluZ0Jy
ZWFrcG9pbnRzKQorICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmV2ZW50QnJlYWtwb2ludHMu
cHV0T2JqZWN0KGJyZWFrcG9pbnQpOworCisgICAgICAgIGlmIChicmVha3BvaW50LmRpc2FibGVk
KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGZvciAobGV0IHRhcmdldCBvZiBXSS50
YXJnZXRzKSB7CisgICAgICAgICAgICAvLyBDbGVhciB0aGUgb2xkIGJyZWFrcG9pbnQgZnJvbSB0
aGUgYmFja2VuZCBiZWZvcmUgc2V0dGluZyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgIHRoaXMu
X3JlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCisgICAgICAgICAgICB0
aGlzLl9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIF9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25zQ2hhbmdlZChldmVudCkK
KyAgICB7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OworCisgICAgICAg
IC8vIFNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5kbGVkIGJ5IGBE
T01NYW5hZ2VyYC4KKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0
YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCk7CisKKyAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgfQorCiAgICAgX2hh
bmRsZVVSTEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkKICAgICB7CiAgICAg
ICAgIGxldCBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0RPTU1hbmFnZXIu
anMKaW5kZXggNmYyOTc4ZDk0NGY2M2Y0ZDlkM2UxZjNhYjQxMjIxYzEzZDk2M2IxMy4uZmY3ZTIx
MTczMmU0ZDNjMTNkZWJhNjU0YTUyYjZmZmRjYWEzZWE2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvRE9NTWFuYWdlci5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9ET01NYW5h
Z2VyLmpzCkBAIC01MCw3ICs1MCwxMSBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFuYWdl
ciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9oYXNSZXF1ZXN0ZWREb2N1bWVudCA9
IGZhbHNlOwogICAgICAgICB0aGlzLl9wZW5kaW5nRG9jdW1lbnRSZXF1ZXN0Q2FsbGJhY2tzID0g
bnVsbDsKIAotICAgICAgICBXSS5FdmVudEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5F
dmVudEJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMuX2hhbmRsZUV2
ZW50QnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZl
bnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxl
ZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRl
Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJLkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVF
dmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZCwgdGhpcyk7CisgICAgICAgIFdJ
LkV2ZW50QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuSWdu
b3JlQ291bnREaWRDaGFuZ2UsIHRoaXMuX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJv
cGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAgICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIHRoaXMu
X2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkLCB0aGlzKTsKKyAg
ICAgICAgV0kuRXZlbnRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5F
dmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVFdmVudEJyZWFrcG9pbnRBY3Rpb25z
Q2hhbmdlZCwgdGhpcyk7CiAKICAgICAgICAgV0kuRnJhbWUuYWRkRXZlbnRMaXN0ZW5lcihXSS5G
cmFtZS5FdmVudC5NYWluUmVzb3VyY2VEaWRDaGFuZ2UsIHRoaXMuX21haW5SZXNvdXJjZURpZENo
YW5nZSwgdGhpcyk7CiAgICAgfQpAQCAtMTI2LDYgKzEzMCwxMiBAQCBXSS5ET01NYW5hZ2VyID0g
Y2xhc3MgRE9NTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgJiYgSW5zcGVj
dG9yQmFja2VuZC5oYXNDb21tYW5kKCJET00ucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIiKTsKICAgICB9CiAKKyAgICBzdGF0aWMgc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2lu
dENvbmZpZ3VyYXRpb24oKQorICAgIHsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElUWSAoaU9TIDE0
KTogRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIGRpZCBub3QgaGF2ZSBhbiAib3B0
aW9ucyIgcGFyYW1ldGVyIHlldC4KKyAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuaGFz
Q29tbWFuZCgiRE9NLnNldEJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyIiwgIm9wdGlvbnMiKTsK
KyAgICB9CisKICAgICBzdGF0aWMgc3VwcG9ydHNFZGl0aW5nVXNlckFnZW50U2hhZG93VHJlZXMo
e2Zyb250ZW5kT25seSwgdGFyZ2V0fSA9IHt9KQogICAgIHsKICAgICAgICAgdGFyZ2V0ID0gdGFy
Z2V0IHx8IEluc3BlY3RvckJhY2tlbmQ7CkBAIC02NjQsOSArNjc0LDExIEBAIFdJLkRPTU1hbmFn
ZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgZm9yIChs
ZXQgdGFyZ2V0IG9mIFdJLnRhcmdldHMpIHsKICAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzRG9t
YWluKCJET00iKSkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQo
YnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9zZXRFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKICAgICAgICAgfQogCisgICAgICAgIFdJLmRlYnVn
Z2VyTWFuYWdlci5hZGRQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworCiAgICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LkV2ZW50QnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0pOwog
ICAgIH0KIApAQCAtNjgwLDYgKzY5MiwxMiBAQCBXSS5ET01NYW5hZ2VyID0gY2xhc3MgRE9NTWFu
YWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIHRhcmdldC5ET01BZ2VudC5y
ZW1vdmVCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lcihldmVudExpc3RlbmVyLmV2ZW50TGlzdGVu
ZXJJZCk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBEaXNhYmxlIHRoZSBicmVha3BvaW50IGZp
cnN0LCBzbyByZW1vdmluZyBhY3Rpb25zIGRvZXNuJ3QgcmUtYWRkIHRoZSBicmVha3BvaW50Lgor
ICAgICAgICBicmVha3BvaW50LmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgYnJlYWtwb2ludC5j
bGVhckFjdGlvbnMoKTsKKworICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlUHJvYmVz
Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKKwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5F
dmVudEJyZWFrcG9pbnRSZW1vdmVkLCB7YnJlYWtwb2ludH0pOwogICAgIH0KIApAQCAtNjk5LDE5
ICs3MTcsMjggQEAgV0kuRE9NTWFuYWdlciA9IGNsYXNzIERPTU1hbmFnZXIgZXh0ZW5kcyBXSS5P
YmplY3QKIAogICAgIC8vIFByaXZhdGUKIAotICAgIF91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJl
YWtwb2ludCwgdGFyZ2V0KQorICAgIF9zZXRFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFy
Z2V0KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIWJyZWFrcG9pbnQuZGlzYWJsZWQs
IGJyZWFrcG9pbnQpOworCisgICAgICAgIGxldCBldmVudExpc3RlbmVyID0gYnJlYWtwb2ludC5l
dmVudExpc3RlbmVyOworICAgICAgICBjb25zb2xlLmFzc2VydChldmVudExpc3RlbmVyKTsKKwor
ICAgICAgICAgICAgaWYgKCFXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNEaXNhYmxlZFRl
bXBvcmFyaWx5KQorICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50
c0VuYWJsZWQgPSB0cnVlOworCisgICAgICAgIHRhcmdldC5ET01BZ2VudC5zZXRCcmVha3BvaW50
Rm9yRXZlbnRMaXN0ZW5lci5pbnZva2UoeworICAgICAgICAgICAgZXZlbnRMaXN0ZW5lcklkOiBl
dmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwKKyAgICAgICAgICAgIG9wdGlvbnM6IGJyZWFr
cG9pbnQub3B0aW9uc1RvUHJvdG9jb2woKSwKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgX3Jl
bW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpCiAgICAgewogICAgICAgICBs
ZXQgZXZlbnRMaXN0ZW5lciA9IGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcjsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoZXZlbnRMaXN0ZW5lcik7CiAKLSAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlz
YWJsZWQpCi0gICAgICAgICAgICB0YXJnZXQuRE9NQWdlbnQucmVtb3ZlQnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOwotICAgICAgICBlbHNl
IHsKLSAgICAgICAgICAgIGlmICghV0kuZGVidWdnZXJNYW5hZ2VyLmJyZWFrcG9pbnRzRGlzYWJs
ZWRUZW1wb3JhcmlseSkKLSAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtw
b2ludHNFbmFibGVkID0gdHJ1ZTsKLQotICAgICAgICAgICAgdGFyZ2V0LkRPTUFnZW50LnNldEJy
ZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGV2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsK
LSAgICAgICAgfQorICAgICAgICB0YXJnZXQuRE9NQWdlbnQucmVtb3ZlQnJlYWtwb2ludEZvckV2
ZW50TGlzdGVuZXIoZXZlbnRMaXN0ZW5lci5ldmVudExpc3RlbmVySWQpOwogICAgIH0KIAogICAg
IF9oYW5kbGVFdmVudEJyZWFrcG9pbnREaXNhYmxlZFN0YXRlQ2hhbmdlZChldmVudCkKQEAgLTcy
MywxMSArNzUwLDQ3IEBAIFdJLkRPTU1hbmFnZXIgPSBjbGFzcyBET01NYW5hZ2VyIGV4dGVuZHMg
V0kuT2JqZWN0CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9yIChsZXQgdGFyZ2V0
IG9mIFdJLnRhcmdldHMpIHsKLSAgICAgICAgICAgIGlmICh0YXJnZXQuaGFzRG9tYWluKCJET00i
KSkKLSAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2lu
dCwgdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICghdGFyZ2V0Lmhhc0RvbWFpbigiRE9NIikpCisg
ICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LmRp
c2FibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUV2ZW50QnJlYWtwb2ludChicmVh
a3BvaW50LCB0YXJnZXQpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMu
X3NldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwogICAgICAgICB9CiAgICAg
fQogCisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlDaGFuZ2VkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7CisKKyAg
ICAgICAgLy8gTm9uLXNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFyZSBoYW5k
bGVkIGJ5IGBET01EZWJ1Z2dlck1hbmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9pbnQuZXZl
bnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoYnJlYWtwb2lu
dC5kaXNhYmxlZCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCB0YXJn
ZXQgb2YgV0kudGFyZ2V0cykgeworICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIG9sZCBicmVha3Bv
aW50IGZyb20gdGhlIGJhY2tlbmQgYmVmb3JlIHNldHRpbmcgdGhlIG5ldyBvbmUuCisgICAgICAg
ICAgICB0aGlzLl9yZW1vdmVFdmVudEJyZWFrcG9pbnQoYnJlYWtwb2ludCwgdGFyZ2V0KTsKKyAg
ICAgICAgICAgIHRoaXMuX3NldEV2ZW50QnJlYWtwb2ludChicmVha3BvaW50LCB0YXJnZXQpOwor
ICAgICAgICB9CisgICAgfQorCisgICAgX2hhbmRsZUV2ZW50QnJlYWtwb2ludEFjdGlvbnNDaGFu
Z2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7
CisKKyAgICAgICAgLy8gTm9uLXNwZWNpZmljIGV2ZW50IGxpc3RlbmVyIGJyZWFrcG9pbnRzIGFy
ZSBoYW5kbGVkIGJ5IGBET01EZWJ1Z2dlck1hbmFnZXJgLgorICAgICAgICBpZiAoIWJyZWFrcG9p
bnQuZXZlbnRMaXN0ZW5lcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9o
YW5kbGVFdmVudEJyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5Q2hhbmdlZChldmVudCk7CisKKyAg
ICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7CisgICAgfQorCiAgICAgX21haW5SZXNvdXJjZURpZENoYW5nZShldmVudCkKICAgICB7
CiAgICAgICAgIGlmICghZXZlbnQudGFyZ2V0LmlzTWFpbkZyYW1lKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVycy9EZWJ1Z2dlck1h
bmFnZXIuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9EZWJ1Z2dlck1hbmFnZXIuanMKaW5kZXggYjQ5YmU1MGFiYTMzYzVlOWIyOGFjNjVhN2Q4MTI5
OGE4Y2U4ZmY1Ny4uN2Y0ZmQ0YzBkODMxZGRkZGY4M2E3NzIwMjFhMDMwZTY3OTRlNDY1MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMv
RGVidWdnZXJNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL0NvbnRyb2xsZXJzL0RlYnVnZ2VyTWFuYWdlci5qcwpAQCAtMjksMTIgKzI5LDEyIEBAIFdJ
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgIHsKICAgICAgICAgc3VwZXIoKTsKIAotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2Us
IHRoaXMuX2JyZWFrcG9pbnREaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOwotICAgICAg
ICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNh
YmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlzYWJsZWRTdGF0ZURpZENoYW5n
ZSwgdGhpcyk7Ci0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVh
a3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludEVkaXRhYmxl
UHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50
TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5f
YnJlYWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOwotICAgICAgICBXSS5C
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRvQ29udGlu
dWVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRFZGl0YWJsZVByb3BlcnR5RGlkQ2hhbmdlLCB0
aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9p
bnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgdGhpcy5faGFuZGxlQnJlYWtwb2ludEFjdGlvbnNE
aWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVu
dExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhp
cy5fYnJlYWtwb2ludERpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQu
Q29uZGl0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENo
YW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5JZ25vcmVDb3VudERpZENoYW5nZSwgdGhpcy5fYnJl
YWtwb2ludEVkaXRhYmxlUHJvcGVydHlEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZh
U2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQXV0
b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQcm9wZXJ0eURpZENo
YW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlz
dGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlLCB0aGlzLl9oYW5kbGVC
cmVha3BvaW50QWN0aW9uc0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgIFdJLkphdmFTY3JpcHRC
cmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQu
RGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50RGlzcGxheUxvY2F0aW9u
RGlkQ2hhbmdlLCB0aGlzKTsKIAogICAgICAgICBXSS50aW1lbGluZU1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXSS5UaW1lbGluZU1hbmFnZXIuRXZlbnQuQ2FwdHVyaW5nU3RhdGVDaGFuZ2VkLCB0
aGlzLl9oYW5kbGVUaW1lbGluZUNhcHR1cmluZ1N0YXRlQ2hhbmdlZCwgdGhpcyk7CiAKQEAgLTU2
LDMxICs1NiwzMSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgY29uc3Qgc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlv
biA9IG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24obnVsbCwgSW5maW5pdHksIEluZmluaXR5KTsK
IAogICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50RW5hYmxlZFNldHRp
bmcgPSBuZXcgV0kuU2V0dGluZygiYnJlYWstb24tZGVidWdnZXItc3RhdGVtZW50cyIsIHRydWUp
OwotICAgICAgICB0aGlzLl9kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbmV3IFdJLkJy
ZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9kZWJ1
Z2dlclN0YXRlbWVudHNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNw
ZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5f
ZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludEVuYWJsZWRTZXR0aW5nLnZhbHVlLAogICAgICAg
ICB9KTsKICAgICAgICAgdGhpcy5fZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludC5yZXNvbHZl
ZCA9IHRydWU7CiAKICAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVk
U2V0dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtZXhjZXB0aW9ucyIsIGZhbHNl
KTsKLSAgICAgICAgdGhpcy5fYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtw
b2ludChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX2FsbEV4Y2Vw
dGlvbnNCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVh
a3BvaW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAg
IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKIAogICAgICAg
ICB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVha3BvaW50RW5hYmxlZFNldHRpbmcgPSBuZXcg
V0kuU2V0dGluZygiYnJlYWstb24tdW5jYXVnaHQtZXhjZXB0aW9ucyIsIGZhbHNlKTsKLSAgICAg
ICAgdGhpcy5fdW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50
KHNwZWNpYWxCcmVha3BvaW50TG9jYXRpb24sIHsKKyAgICAgICAgdGhpcy5fdW5jYXVnaHRFeGNl
cHRpb25zQnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChzcGVjaWFsQnJl
YWtwb2ludExvY2F0aW9uLCB7CiAgICAgICAgICAgICBkaXNhYmxlZDogIXRoaXMuX3VuY2F1Z2h0
RXhjZXB0aW9uc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAg
ICAgICAgIHRoaXMuX3VuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQucmVzb2x2ZWQgPSB0cnVl
OwogCiAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludEVuYWJsZWRTZXR0
aW5nID0gbmV3IFdJLlNldHRpbmcoImJyZWFrLW9uLWFzc2VydGlvbi1mYWlsdXJlcyIsIGZhbHNl
KTsKLSAgICAgICAgdGhpcy5fYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50ID0gbmV3IFdJLkJy
ZWFrcG9pbnQoc3BlY2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgeworICAgICAgICB0aGlzLl9hc3Nl
cnRpb25GYWlsdXJlc0JyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQoc3Bl
Y2lhbEJyZWFrcG9pbnRMb2NhdGlvbiwgewogICAgICAgICAgICAgZGlzYWJsZWQ6ICF0aGlzLl9h
c3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAg
fSk7CiAgICAgICAgIHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludC5yZXNvbHZlZCA9
IHRydWU7CiAKICAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnRFbmFibGVkU2V0
dGluZyA9IG5ldyBXSS5TZXR0aW5nKCJicmVhay1vbi1hbGwtbWljcm90YXNrcyIsIGZhbHNlKTsK
LSAgICAgICAgdGhpcy5fYWxsTWljcm90YXNrc0JyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2lu
dChzcGVjaWFsQnJlYWtwb2ludExvY2F0aW9uLCB7CisgICAgICAgIHRoaXMuX2FsbE1pY3JvdGFz
a3NCcmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNwZWNpYWxCcmVha3Bv
aW50TG9jYXRpb24sIHsKICAgICAgICAgICAgIGRpc2FibGVkOiAhdGhpcy5fYWxsTWljcm90YXNr
c0JyZWFrcG9pbnRFbmFibGVkU2V0dGluZy52YWx1ZSwKICAgICAgICAgfSk7CiAgICAgICAgIHRo
aXMuX2FsbE1pY3JvdGFza3NCcmVha3BvaW50LnJlc29sdmVkID0gdHJ1ZTsKQEAgLTEyNiwxNCAr
MTI2LDE0IEBAIFdJLkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRl
bmRzIFdJLk9iamVjdAogICAgICAgICAgICAgbGV0IGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9p
bnRzID0gV0kuU2V0dGluZy5taWdyYXRlVmFsdWUoImJyZWFrcG9pbnRzIik7CiAgICAgICAgICAg
ICBpZiAoZXhpc3RpbmdTZXJpYWxpemVkQnJlYWtwb2ludHMpIHsKICAgICAgICAgICAgICAgICBm
b3IgKGxldCBleGlzdGluZ1NlcmlhbGl6ZWRCcmVha3BvaW50IG9mIGV4aXN0aW5nU2VyaWFsaXpl
ZEJyZWFrcG9pbnRzKQotICAgICAgICAgICAgICAgICAgICBhd2FpdCBXSS5vYmplY3RTdG9yZXMu
YnJlYWtwb2ludHMucHV0T2JqZWN0KFdJLkJyZWFrcG9pbnQuZnJvbUpTT04oZXhpc3RpbmdTZXJp
YWxpemVkQnJlYWtwb2ludCkpOworICAgICAgICAgICAgICAgICAgICBhd2FpdCBXSS5vYmplY3RT
dG9yZXMuYnJlYWtwb2ludHMucHV0T2JqZWN0KFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZyb21K
U09OKGV4aXN0aW5nU2VyaWFsaXplZEJyZWFrcG9pbnQpKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgbGV0IHNlcmlhbGl6ZWRCcmVha3BvaW50cyA9IGF3YWl0IFdJLm9iamVjdFN0b3Jl
cy5icmVha3BvaW50cy5nZXRBbGwoKTsKIAogICAgICAgICAgICAgdGhpcy5fcmVzdG9yaW5nQnJl
YWtwb2ludHMgPSB0cnVlOwogICAgICAgICAgICAgZm9yIChsZXQgc2VyaWFsaXplZEJyZWFrcG9p
bnQgb2Ygc2VyaWFsaXplZEJyZWFrcG9pbnRzKSB7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBXSS5CcmVha3BvaW50LmZyb21KU09OKHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKKyAg
ICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmZy
b21KU09OKHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKIAogICAgICAgICAgICAgICAgIGNvbnN0IGtl
eSA9IG51bGw7CiAgICAgICAgICAgICAgICAgV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmFz
c29jaWF0ZU9iamVjdChicmVha3BvaW50LCBrZXksIHNlcmlhbGl6ZWRCcmVha3BvaW50KTsKQEAg
LTM0MiwyNSArMzQyLDYgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5h
Z2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAg
IGlzQnJlYWtwb2ludFJlbW92YWJsZShicmVha3BvaW50KQotICAgIHsKLSAgICAgICAgcmV0dXJu
IGJyZWFrcG9pbnQgIT09IHRoaXMuX2RlYnVnZ2VyU3RhdGVtZW50c0JyZWFrcG9pbnQKLSAgICAg
ICAgICAgICYmIGJyZWFrcG9pbnQgIT09IHRoaXMuX2FsbEV4Y2VwdGlvbnNCcmVha3BvaW50Ci0g
ICAgICAgICAgICAmJiBicmVha3BvaW50ICE9PSB0aGlzLl91bmNhdWdodEV4Y2VwdGlvbnNCcmVh
a3BvaW50OwotICAgIH0KLQotICAgIGlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkKLSAg
ICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2lu
dCkKLSAgICAgICAgICAgIHx8IGJyZWFrcG9pbnQgPT09IHRoaXMuX2Fzc2VydGlvbkZhaWx1cmVz
QnJlYWtwb2ludAotICAgICAgICAgICAgfHwgYnJlYWtwb2ludCA9PT0gdGhpcy5fYWxsTWljcm90
YXNrc0JyZWFrcG9pbnQ7Ci0gICAgfQotCi0gICAgaXNCcmVha3BvaW50RWRpdGFibGUoYnJlYWtw
b2ludCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAhdGhpcy5pc0JyZWFrcG9pbnRTcGVjaWFsKGJy
ZWFrcG9pbnQpOwotICAgIH0KLQogICAgIGdldCBicmVha3BvaW50c0VuYWJsZWQoKQogICAgIHsK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnRzRW5hYmxlZFNldHRpbmcudmFsdWU7CkBA
IC02NTksMTEgKzY0MCwxMSBAQCBXSS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1h
bmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCkK
ICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5C
cmVha3BvaW50KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9m
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwo
YnJlYWtwb2ludCkpIHsKKyAgICAgICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgewogICAgICAg
ICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRGVidWdnZXJNYW5hZ2VyLkV2
ZW50LkJyZWFrcG9pbnRBZGRlZCwge2JyZWFrcG9pbnR9KTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtNjgyLDIyICs2NjMsMjIgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xh
c3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGlmICghdGhpcy5f
cmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBXSS5vYmplY3RTdG9yZXMuYnJlYWtw
b2ludHMucHV0T2JqZWN0KGJyZWFrcG9pbnQpOwogCi0gICAgICAgIHRoaXMuX2FkZFByb2Jlc0Zv
ckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRoaXMuYWRkUHJvYmVzRm9yQnJlYWtw
b2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludEFkZGVkLCB7YnJlYWtwb2ludH0p
OwogICAgIH0KIAogICAgIHJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCkKICAgICB7Ci0gICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50KTsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50KTsKICAgICAgICAgaWYgKCFicmVha3BvaW50KQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaXNCcmVha3BvaW50UmVtb3ZhYmxl
KGJyZWFrcG9pbnQpKTsKLSAgICAgICAgaWYgKCF0aGlzLmlzQnJlYWtwb2ludFJlbW92YWJsZShi
cmVha3BvaW50KSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5yZW1vdmFibGUp
OworICAgICAgICBpZiAoIWJyZWFrcG9pbnQucmVtb3ZhYmxlKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIGlmICh0aGlzLmlzQnJlYWtwb2ludFNwZWNpYWwoYnJlYWtwb2ludCkpIHsK
KyAgICAgICAgaWYgKGJyZWFrcG9pbnQuc3BlY2lhbCkgewogICAgICAgICAgICAgYnJlYWtwb2lu
dC5kaXNhYmxlZCA9IHRydWU7CiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3Rl
bmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludFJlbW92ZWQsIHticmVha3Bv
aW50fSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC03MjEsNyArNzAyLDcgQEAgV0kuRGVidWdn
ZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIGlmICghdGhpcy5fcmVzdG9yaW5nQnJlYWtwb2ludHMpCiAgICAgICAgICAgICBXSS5vYmpl
Y3RTdG9yZXMuYnJlYWtwb2ludHMuZGVsZXRlT2JqZWN0KGJyZWFrcG9pbnQpOwogCi0gICAgICAg
IHRoaXMuX3JlbW92ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgIHRo
aXMucmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKIAogICAgICAgICB0aGlz
LmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtw
b2ludFJlbW92ZWQsIHticmVha3BvaW50fSk7CiAgICAgfQpAQCAtNzMxLDYgKzcxMiw3NyBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgcmV0dXJuIHRoaXMuX25leHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcisr
OwogICAgIH0KIAorICAgIGFkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKKyAgICB7
CisgICAgICAgIGlmICh0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50Lmhh
cyhicmVha3BvaW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9rbm93
blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50LnNldChicmVha3BvaW50LCBuZXcgU2V0KTsK
KworICAgICAgICB0aGlzLnVwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Cisg
ICAgfQorCisgICAgcmVtb3ZlUHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fa25vd25Qcm9iZUlkZW50aWZpZXJzRm9yQnJl
YWtwb2ludC5oYXMoYnJlYWtwb2ludCkpOworCisgICAgICAgIHRoaXMudXBkYXRlUHJvYmVzRm9y
QnJlYWtwb2ludChicmVha3BvaW50KTsKKyAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlkZW50aWZp
ZXJzRm9yQnJlYWtwb2ludC5kZWxldGUoYnJlYWtwb2ludCk7CisgICAgfQorCisgICAgdXBkYXRl
UHJvYmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KQorICAgIHsKKyAgICAgICAgbGV0IGtub3du
UHJvYmVJZGVudGlmaWVycyA9IHRoaXMuX2tub3duUHJvYmVJZGVudGlmaWVyc0ZvckJyZWFrcG9p
bnQuZ2V0KGJyZWFrcG9pbnQpOworICAgICAgICBpZiAoIWtub3duUHJvYmVJZGVudGlmaWVycykg
eworICAgICAgICAgICAgLy8gU29tZXRpbWVzIGFjdGlvbnMgY2hhbmdlIGJlZm9yZSB0aGUgYWRk
ZWQgYnJlYWtwb2ludCBpcyBmdWxseSBkaXNwYXRjaGVkLgorICAgICAgICAgICAgdGhpcy5hZGRQ
cm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICB9CisKKyAgICAgICAgbGV0IHNlZW5Qcm9iZUlkZW50aWZpZXJzID0gbmV3IFNldDsKKwor
ICAgICAgICBmb3IgKGxldCBwcm9iZUFjdGlvbiBvZiBicmVha3BvaW50LnByb2JlQWN0aW9ucykg
eworICAgICAgICAgICAgbGV0IHByb2JlSWRlbnRpZmllciA9IHByb2JlQWN0aW9uLmlkOworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmVJZGVudGlmaWVyLCAiUHJvYmUgYWRkZWQgd2l0
aG91dCBicmVha3BvaW50IGFjdGlvbiBpZGVudGlmaWVyOiAiLCBicmVha3BvaW50KTsKKworICAg
ICAgICAgICAgc2VlblByb2JlSWRlbnRpZmllcnMuYWRkKHByb2JlSWRlbnRpZmllcik7CisgICAg
ICAgICAgICBpZiAoIWtub3duUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlmaWVyKSkg
eworICAgICAgICAgICAgICAgIC8vIE5ldyBwcm9iZTsgZmluZCBvciBjcmVhdGUgcmVsZXZhbnQg
cHJvYmUgc2V0LgorICAgICAgICAgICAgICAgIGtub3duUHJvYmVJZGVudGlmaWVycy5hZGQocHJv
YmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9i
ZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICAgICAgbGV0IG5ld1By
b2JlID0gbmV3IFdJLlByb2JlKHByb2JlSWRlbnRpZmllciwgYnJlYWtwb2ludCwgcHJvYmVBY3Rp
b24uZGF0YSk7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVyLnNldChw
cm9iZUlkZW50aWZpZXIsIG5ld1Byb2JlKTsKKyAgICAgICAgICAgICAgICBwcm9iZVNldC5hZGRQ
cm9iZShuZXdQcm9iZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGxldCBwcm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5nZXQocHJv
YmVJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHByb2JlLCAiUHJvYmUg
a25vd24gYnV0IGNvdWxkbid0IGJlIGZvdW5kIGJ5IGlkZW50aWZpZXI6ICIsIHByb2JlSWRlbnRp
Zmllcik7CisgICAgICAgICAgICAvLyBVcGRhdGUgcHJvYmUgZXhwcmVzc2lvbjsgaWYgaXQgZGlm
ZmVyZWQsIGNoYW5nZSBldmVudHMgd2lsbCBmaXJlLgorICAgICAgICAgICAgcHJvYmUuZXhwcmVz
c2lvbiA9IHByb2JlQWN0aW9uLmRhdGE7CisgICAgICAgIH0KKworICAgICAgICAvLyBMb29rIGZv
ciBtaXNzaW5nIHByb2JlcyBiYXNlZCBvbiB3aGF0IHdlIHNhdyBsYXN0LgorICAgICAgICBmb3Ig
KGxldCBwcm9iZUlkZW50aWZpZXIgb2Yga25vd25Qcm9iZUlkZW50aWZpZXJzKSB7CisgICAgICAg
ICAgICBpZiAoc2VlblByb2JlSWRlbnRpZmllcnMuaGFzKHByb2JlSWRlbnRpZmllcikpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIC8vIFRoZSBwcm9iZSBoYXMgZ29uZSBt
aXNzaW5nLCByZW1vdmUgaXQuCisgICAgICAgICAgICBsZXQgcHJvYmVTZXQgPSB0aGlzLl9wcm9i
ZVNldEZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICBsZXQgcHJvYmUgPSB0
aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZ2V0KHByb2JlSWRlbnRpZmllcik7CisgICAgICAgICAg
ICB0aGlzLl9wcm9iZXNCeUlkZW50aWZpZXIuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7CisgICAg
ICAgICAgICBrbm93blByb2JlSWRlbnRpZmllcnMuZGVsZXRlKHByb2JlSWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBwcm9iZVNldC5yZW1vdmVQcm9iZShwcm9iZSk7CisKKyAgICAgICAgICAgIC8v
IFJlbW92ZSB0aGUgcHJvYmUgc2V0IGlmIGl0IGhhcyBiZWNvbWUgZW1wdHkuCisgICAgICAgICAg
ICBpZiAoIXByb2JlU2V0LnByb2Jlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9w
cm9iZVNldHNCeUJyZWFrcG9pbnQuZGVsZXRlKHByb2JlU2V0LmJyZWFrcG9pbnQpOworICAgICAg
ICAgICAgICAgIHByb2JlU2V0LndpbGxSZW1vdmUoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRS
ZW1vdmVkLCB7cHJvYmVTZXR9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwog
ICAgIC8vIERlYnVnZ2VyT2JzZXJ2ZXIKIAogICAgIGJyZWFrcG9pbnRSZXNvbHZlZCh0YXJnZXQs
IGJyZWFrcG9pbnRJZGVudGlmaWVyLCBsb2NhdGlvbikKQEAgLTk5Nyw2MCArMTA0OSw2IEBAIFdJ
LkRlYnVnZ2VyTWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICByZXR1cm4gbmV3IFdJLlNjb3BlQ2hhaW5Ob2RlKHR5cGUsIFtvYmplY3RdLCBw
YXlsb2FkLm5hbWUsIHBheWxvYWQubG9jYXRpb24sIHBheWxvYWQuZW1wdHkpOwogICAgIH0KIAot
ICAgIF9kZWJ1Z2dlckJyZWFrcG9pbnRBY3Rpb25UeXBlKHR5cGUpCi0gICAgewotICAgICAgICBz
d2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9n
OgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5EZWJ1Z2dlci5CcmVh
a3BvaW50QWN0aW9uVHlwZS5Mb2c7Ci0gICAgICAgIGNhc2UgV0kuQnJlYWtwb2ludEFjdGlvbi5U
eXBlLkV2YWx1YXRlOgotICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvckJhY2tlbmQuRW51bS5E
ZWJ1Z2dlci5CcmVha3BvaW50QWN0aW9uVHlwZS5FdmFsdWF0ZTsKLSAgICAgICAgY2FzZSBXSS5C
cmVha3BvaW50QWN0aW9uLlR5cGUuU291bmQ6Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9y
QmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFrcG9pbnRBY3Rpb25UeXBlLlNvdW5kOwotICAgICAg
ICBjYXNlIFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Qcm9iZToKLSAgICAgICAgICAgIHJldHVy
biBJbnNwZWN0b3JCYWNrZW5kLkVudW0uRGVidWdnZXIuQnJlYWtwb2ludEFjdGlvblR5cGUuUHJv
YmU7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSk7
Ci0gICAgICAgICAgICByZXR1cm4gSW5zcGVjdG9yQmFja2VuZC5FbnVtLkRlYnVnZ2VyLkJyZWFr
cG9pbnRBY3Rpb25UeXBlLkxvZzsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF9kZWJ1Z2dlckJy
ZWFrcG9pbnRPcHRpb25zKGJyZWFrcG9pbnQpCi0gICAgewotICAgICAgICBsZXQgYWN0aW9ucyA9
IGJyZWFrcG9pbnQuYWN0aW9uczsKLSAgICAgICAgYWN0aW9ucyA9IGFjdGlvbnMubWFwKChhY3Rp
b24pID0+IGFjdGlvbi50b1Byb3RvY29sKCkpOwotICAgICAgICBhY3Rpb25zID0gYWN0aW9ucy5m
aWx0ZXIoKGFjdGlvbikgPT4gewotICAgICAgICAgICAgaWYgKGFjdGlvbi50eXBlICE9PSBXSS5C
cmVha3BvaW50QWN0aW9uLlR5cGUuTG9nKQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwot
Ci0gICAgICAgICAgICBpZiAoIS9cJFx7Lio/XH0vLnRlc3QoYWN0aW9uLmRhdGEpKQotICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwotCi0gICAgICAgICAgICBsZXQgbGV4ZXIgPSBuZXcgV0ku
QnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlcjsKLSAgICAgICAgICAgIGxldCB0b2tlbnMgPSBsZXhl
ci50b2tlbml6ZShhY3Rpb24uZGF0YSk7Ci0gICAgICAgICAgICBpZiAoIXRva2VucykKLSAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgICAgIGxldCB0ZW1wbGF0ZUxpdGVy
YWwgPSB0b2tlbnMucmVkdWNlKCh0ZXh0LCB0b2tlbikgPT4gewotICAgICAgICAgICAgICAgIGlm
ICh0b2tlbi50eXBlID09PSBXSS5CcmVha3BvaW50TG9nTWVzc2FnZUxleGVyLlRva2VuVHlwZS5Q
bGFpblRleHQpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0ICsgdG9rZW4uZGF0YS5l
c2NhcGVDaGFyYWN0ZXJzKCJgXFwiKTsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9
PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5Ub2tlblR5cGUuRXhwcmVzc2lvbikKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHRleHQgKyAiJHsiICsgdG9rZW4uZGF0YSArICJ9IjsK
LSAgICAgICAgICAgICAgICByZXR1cm4gdGV4dDsKLSAgICAgICAgICAgIH0sICIiKTsKLQotICAg
ICAgICAgICAgYWN0aW9uLmRhdGEgPSAiY29uc29sZS5sb2coYCIgKyB0ZW1wbGF0ZUxpdGVyYWwg
KyAiYCkiOwotICAgICAgICAgICAgYWN0aW9uLnR5cGUgPSBXSS5CcmVha3BvaW50QWN0aW9uLlR5
cGUuRXZhbHVhdGU7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfSk7Ci0KLSAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgIGNvbmRpdGlvbjogYnJlYWtwb2ludC5jb25kaXRp
b24sCi0gICAgICAgICAgICBpZ25vcmVDb3VudDogYnJlYWtwb2ludC5pZ25vcmVDb3VudCwKLSAg
ICAgICAgICAgIGF1dG9Db250aW51ZTogYnJlYWtwb2ludC5hdXRvQ29udGludWUsCi0gICAgICAg
ICAgICBhY3Rpb25zLAotICAgICAgICB9OwotICAgIH0KLQogICAgIF9zZXRCcmVha3BvaW50KGJy
ZWFrcG9pbnQsIHNwZWNpZmljVGFyZ2V0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
IWJyZWFrcG9pbnQuZGlzYWJsZWQpOwpAQCAtMTA4OCwxMiArMTA4Niw2IEBAIFdJLkRlYnVnZ2Vy
TWFuYWdlciA9IGNsYXNzIERlYnVnZ2VyTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogICAgICAg
ICBpZiAoIXNwZWNpZmljVGFyZ2V0KQogICAgICAgICAgICAgYnJlYWtwb2ludC5yZXNvbHZlZCA9
IGZhbHNlOwogCi0gICAgICAgIC8vIENvbnZlcnQgQnJlYWtwb2ludEFjdGlvbiB0eXBlcyB0byBE
ZWJ1Z2dlckFnZW50IHByb3RvY29sIHR5cGVzLgotICAgICAgICAvLyBOT1RFOiBCcmVha3BvaW50
Lm9wdGlvbnMgcmV0dXJucyBuZXcgb2JqZWN0cyBlYWNoIHRpbWUsIHNvIGl0IGlzIHNhZmUgdG8g
bW9kaWZ5LgotICAgICAgICBsZXQgb3B0aW9ucyA9IHRoaXMuX2RlYnVnZ2VyQnJlYWtwb2ludE9w
dGlvbnMoYnJlYWtwb2ludCk7Ci0gICAgICAgIGZvciAobGV0IGFjdGlvbiBvZiBvcHRpb25zLmFj
dGlvbnMpCi0gICAgICAgICAgICBhY3Rpb24udHlwZSA9IHRoaXMuX2RlYnVnZ2VyQnJlYWtwb2lu
dEFjdGlvblR5cGUoYWN0aW9uLnR5cGUpOwotCiAgICAgICAgIGlmIChicmVha3BvaW50LmNvbnRl
bnRJZGVudGlmaWVyKSB7CiAgICAgICAgICAgICBsZXQgdGFyZ2V0cyA9IHNwZWNpZmljVGFyZ2V0
ID8gW3NwZWNpZmljVGFyZ2V0XSA6IFdJLnRhcmdldHM7CiAgICAgICAgICAgICBmb3IgKGxldCB0
YXJnZXQgb2YgdGFyZ2V0cykgewpAQCAtMTEwMiwxNCArMTA5NCwxNCBAQCBXSS5EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
ICAgICAgICAgICAgdXJsOiBicmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyLAogICAgICAgICAg
ICAgICAgICAgICB1cmxSZWdleDogdW5kZWZpbmVkLAogICAgICAgICAgICAgICAgICAgICBjb2x1
bW5OdW1iZXI6IGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlciwKLSAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucworICAgICAgICAgICAgICAgICAgICBvcHRpb25zOiBi
cmVha3BvaW50Lm9wdGlvbnNUb1Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgfSwgZGlkU2V0
QnJlYWtwb2ludC5iaW5kKHRoaXMsIHRhcmdldCkpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmllcikgewogICAgICAgICAgICAgbGV0
IHRhcmdldCA9IGJyZWFrcG9pbnQudGFyZ2V0OwogICAgICAgICAgICAgdGFyZ2V0LkRlYnVnZ2Vy
QWdlbnQuc2V0QnJlYWtwb2ludC5pbnZva2UoewogICAgICAgICAgICAgICAgIGxvY2F0aW9uOiB7
c2NyaXB0SWQ6IGJyZWFrcG9pbnQuc2NyaXB0SWRlbnRpZmllciwgbGluZU51bWJlcjogYnJlYWtw
b2ludC5zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlciwgY29sdW1uTnVtYmVyOiBicmVha3Bv
aW50LnNvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5OdW1iZXJ9LAotICAgICAgICAgICAgICAgIG9w
dGlvbnMKKyAgICAgICAgICAgICAgICBvcHRpb25zOiBicmVha3BvaW50Lm9wdGlvbnNUb1Byb3Rv
Y29sKCksCiAgICAgICAgICAgICB9LCBkaWRTZXRCcmVha3BvaW50LmJpbmQodGhpcywgdGFyZ2V0
KSk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgV0kucmVwb3J0SW50ZXJuYWxFcnJvcigi
VW5rbm93biBzb3VyY2UgZm9yIGJyZWFrcG9pbnQuIik7CkBAIC0xMjMzLDggKzEyMjUsOCBAQCBX
SS5EZWJ1Z2dlck1hbmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgaWYgKGJyZWFrcG9pbnQuZGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5pc0JyZWFrcG9pbnRFZGl0YWJsZShicmVh
a3BvaW50KSk7Ci0gICAgICAgIGlmICghdGhpcy5pc0JyZWFrcG9pbnRFZGl0YWJsZShicmVha3Bv
aW50KSkKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludC5lZGl0YWJsZSk7CisgICAg
ICAgIGlmICghYnJlYWtwb2ludC5lZGl0YWJsZSkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICAvLyBSZW1vdmUgdGhlIGJyZWFrcG9pbnQgd2l0aCBpdHMgb2xkIGlkLgpAQCAtMTI1MCw3
ICsxMjQyLDcgQEAgV0kuRGVidWdnZXJNYW5hZ2VyID0gY2xhc3MgRGVidWdnZXJNYW5hZ2VyIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgewogICAgICAgICB0aGlzLl9icmVha3BvaW50RWRpdGFibGVQ
cm9wZXJ0eURpZENoYW5nZShldmVudCk7CiAKLSAgICAgICAgdGhpcy5fdXBkYXRlUHJvYmVzRm9y
QnJlYWtwb2ludChldmVudC50YXJnZXQpOworICAgICAgICB0aGlzLnVwZGF0ZVByb2Jlc0ZvckJy
ZWFrcG9pbnQoZXZlbnQudGFyZ2V0KTsKICAgICB9CiAKICAgICBfc3RhcnREaXNhYmxpbmdCcmVh
a3BvaW50c1RlbXBvcmFyaWx5KCkKQEAgLTE0MTMsNzcgKzE0MDUsNiBAQCBXSS5EZWJ1Z2dlck1h
bmFnZXIgPSBjbGFzcyBEZWJ1Z2dlck1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAg
dGhpcy5faWdub3JlQnJlYWtwb2ludERpc3BsYXlMb2NhdGlvbkRpZENoYW5nZUV2ZW50ID0gZmFs
c2U7CiAgICAgfQogCi0gICAgX2FkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAg
ICB7Ci0gICAgICAgIGlmICh0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50
LmhhcyhicmVha3BvaW50KSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9r
bm93blByb2JlSWRlbnRpZmllcnNGb3JCcmVha3BvaW50LnNldChicmVha3BvaW50LCBuZXcgU2V0
KTsKLQotICAgICAgICB0aGlzLl91cGRhdGVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwotICAgIH0KLQotICAgIF9yZW1vdmVQcm9iZXNGb3JCcmVha3BvaW50KGJyZWFrcG9pbnQpCi0g
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNG
b3JCcmVha3BvaW50LmhhcyhicmVha3BvaW50KSk7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlUHJv
YmVzRm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgdGhpcy5fa25vd25Qcm9iZUlk
ZW50aWZpZXJzRm9yQnJlYWtwb2ludC5kZWxldGUoYnJlYWtwb2ludCk7Ci0gICAgfQotCi0gICAg
X3VwZGF0ZVByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCkKLSAgICB7Ci0gICAgICAgIGxl
dCBrbm93blByb2JlSWRlbnRpZmllcnMgPSB0aGlzLl9rbm93blByb2JlSWRlbnRpZmllcnNGb3JC
cmVha3BvaW50LmdldChicmVha3BvaW50KTsKLSAgICAgICAgaWYgKCFrbm93blByb2JlSWRlbnRp
ZmllcnMpIHsKLSAgICAgICAgICAgIC8vIFNvbWV0aW1lcyBhY3Rpb25zIGNoYW5nZSBiZWZvcmUg
dGhlIGFkZGVkIGJyZWFrcG9pbnQgaXMgZnVsbHkgZGlzcGF0Y2hlZC4KLSAgICAgICAgICAgIHRo
aXMuX2FkZFByb2Jlc0ZvckJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0gICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgIH0KLQotICAgICAgICBsZXQgc2VlblByb2JlSWRlbnRpZmllcnMgPSBuZXcg
U2V0OwotCi0gICAgICAgIGZvciAobGV0IHByb2JlQWN0aW9uIG9mIGJyZWFrcG9pbnQucHJvYmVB
Y3Rpb25zKSB7Ci0gICAgICAgICAgICBsZXQgcHJvYmVJZGVudGlmaWVyID0gcHJvYmVBY3Rpb24u
aWQ7Ci0gICAgICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZUlkZW50aWZpZXIsICJQcm9iZSBh
ZGRlZCB3aXRob3V0IGJyZWFrcG9pbnQgYWN0aW9uIGlkZW50aWZpZXI6ICIsIGJyZWFrcG9pbnQp
OwotCi0gICAgICAgICAgICBzZWVuUHJvYmVJZGVudGlmaWVycy5hZGQocHJvYmVJZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIGlmICgha25vd25Qcm9iZUlkZW50aWZpZXJzLmhhcyhwcm9iZUlkZW50
aWZpZXIpKSB7Ci0gICAgICAgICAgICAgICAgLy8gTmV3IHByb2JlOyBmaW5kIG9yIGNyZWF0ZSBy
ZWxldmFudCBwcm9iZSBzZXQuCi0gICAgICAgICAgICAgICAga25vd25Qcm9iZUlkZW50aWZpZXJz
LmFkZChwcm9iZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgICAgIGxldCBwcm9iZVNldCA9IHRo
aXMuX3Byb2JlU2V0Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgICAgICAgICBs
ZXQgbmV3UHJvYmUgPSBuZXcgV0kuUHJvYmUocHJvYmVJZGVudGlmaWVyLCBicmVha3BvaW50LCBw
cm9iZUFjdGlvbi5kYXRhKTsKLSAgICAgICAgICAgICAgICB0aGlzLl9wcm9iZXNCeUlkZW50aWZp
ZXIuc2V0KHByb2JlSWRlbnRpZmllciwgbmV3UHJvYmUpOwotICAgICAgICAgICAgICAgIHByb2Jl
U2V0LmFkZFByb2JlKG5ld1Byb2JlKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
ICAgIH0KLQotICAgICAgICAgICAgbGV0IHByb2JlID0gdGhpcy5fcHJvYmVzQnlJZGVudGlmaWVy
LmdldChwcm9iZUlkZW50aWZpZXIpOwotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQocHJvYmUs
ICJQcm9iZSBrbm93biBidXQgY291bGRuJ3QgYmUgZm91bmQgYnkgaWRlbnRpZmllcjogIiwgcHJv
YmVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIC8vIFVwZGF0ZSBwcm9iZSBleHByZXNzaW9uOyBp
ZiBpdCBkaWZmZXJlZCwgY2hhbmdlIGV2ZW50cyB3aWxsIGZpcmUuCi0gICAgICAgICAgICBwcm9i
ZS5leHByZXNzaW9uID0gcHJvYmVBY3Rpb24uZGF0YTsKLSAgICAgICAgfQotCi0gICAgICAgIC8v
IExvb2sgZm9yIG1pc3NpbmcgcHJvYmVzIGJhc2VkIG9uIHdoYXQgd2Ugc2F3IGxhc3QuCi0gICAg
ICAgIGZvciAobGV0IHByb2JlSWRlbnRpZmllciBvZiBrbm93blByb2JlSWRlbnRpZmllcnMpIHsK
LSAgICAgICAgICAgIGlmIChzZWVuUHJvYmVJZGVudGlmaWVycy5oYXMocHJvYmVJZGVudGlmaWVy
KSkKLSAgICAgICAgICAgICAgICBicmVhazsKLQotICAgICAgICAgICAgLy8gVGhlIHByb2JlIGhh
cyBnb25lIG1pc3NpbmcsIHJlbW92ZSBpdC4KLSAgICAgICAgICAgIGxldCBwcm9iZVNldCA9IHRo
aXMuX3Byb2JlU2V0Rm9yQnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgICAgIGxldCBw
cm9iZSA9IHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5nZXQocHJvYmVJZGVudGlmaWVyKTsKLSAg
ICAgICAgICAgIHRoaXMuX3Byb2Jlc0J5SWRlbnRpZmllci5kZWxldGUocHJvYmVJZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIGtub3duUHJvYmVJZGVudGlmaWVycy5kZWxldGUocHJvYmVJZGVudGlm
aWVyKTsKLSAgICAgICAgICAgIHByb2JlU2V0LnJlbW92ZVByb2JlKHByb2JlKTsKLQotICAgICAg
ICAgICAgLy8gUmVtb3ZlIHRoZSBwcm9iZSBzZXQgaWYgaXQgaGFzIGJlY29tZSBlbXB0eS4KLSAg
ICAgICAgICAgIGlmICghcHJvYmVTZXQucHJvYmVzLmxlbmd0aCkgewotICAgICAgICAgICAgICAg
IHRoaXMuX3Byb2JlU2V0c0J5QnJlYWtwb2ludC5kZWxldGUocHJvYmVTZXQuYnJlYWtwb2ludCk7
Ci0gICAgICAgICAgICAgICAgcHJvYmVTZXQud2lsbFJlbW92ZSgpOwotICAgICAgICAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Q
cm9iZVNldFJlbW92ZWQsIHtwcm9iZVNldH0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0g
ICAgfQotCiAgICAgX3Byb2JlU2V0Rm9yQnJlYWtwb2ludChicmVha3BvaW50KQogICAgIHsKICAg
ICAgICAgbGV0IHByb2JlU2V0ID0gdGhpcy5fcHJvYmVTZXRzQnlCcmVha3BvaW50LmdldChicmVh
a3BvaW50KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL1RpbWVsaW5lTWFuYWdlci5qcwppbmRleCA1ZjVjMTg0
OTE2ZGNlNWY1MmZmNWIxNTliMWQ2ZWZhZjBjYTFiNzdmLi41ZjkwYWFkYmM0OTRkYWY0NjY4ZGIz
ZjVkOTE3MGRlYjUyOTkxZWFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Db250cm9sbGVycy9UaW1lbGluZU1hbmFnZXIuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvVGltZWxpbmVNYW5hZ2VyLmpz
CkBAIC05NTIsMTAgKzk1MiwxNCBAQCBXSS5UaW1lbGluZU1hbmFnZXIgPSBjbGFzcyBUaW1lbGlu
ZU1hbmFnZXIgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJy
ZWFrOwogCi0gICAgICAgIGNhc2UgSW5zcGVjdG9yQmFja2VuZC5FbnVtLlRpbWVsaW5lLkV2ZW50
VHlwZS5Qcm9iZVNhbXBsZToKKyAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGlt
ZWxpbmUuRXZlbnRUeXBlLlByb2JlU2FtcGxlOiB7CisgICAgICAgICAgICBsZXQgcHJvYmUgPSBX
SS5kZWJ1Z2dlck1hbmFnZXIucHJvYmVGb3JJZGVudGlmaWVyKHJlY29yZFBheWxvYWQuZGF0YS5w
cm9iZUlkKTsKKyAgICAgICAgICAgIGlmIChwcm9iZS5icmVha3BvaW50IGluc3RhbmNlb2YgV0ku
SmF2YVNjcmlwdEJyZWFrcG9pbnQpCisgICAgICAgICAgICAgICAgc291cmNlQ29kZUxvY2F0aW9u
ID0gcHJvYmUuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CisKICAgICAgICAgICAgIC8v
IFBhc3MgdGhlIHN0YXJ0VGltZSBhcyB0aGUgZW5kVGltZSBzaW5jZSB0aGlzIHJlY29yZCB0eXBl
IGhhcyBubyBkdXJhdGlvbi4KLSAgICAgICAgICAgIHNvdXJjZUNvZGVMb2NhdGlvbiA9IFdJLmRl
YnVnZ2VyTWFuYWdlci5wcm9iZUZvcklkZW50aWZpZXIocmVjb3JkUGF5bG9hZC5kYXRhLnByb2Jl
SWQpLmJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uOwogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXSS5TY3JpcHRUaW1lbGluZVJlY29yZChXSS5TY3JpcHRUaW1lbGluZVJlY29yZC5FdmVudFR5
cGUuUHJvYmVTYW1wbGVSZWNvcmRlZCwgc3RhcnRUaW1lLCBzdGFydFRpbWUsIGNhbGxGcmFtZXMs
IHNvdXJjZUNvZGVMb2NhdGlvbiwgcmVjb3JkUGF5bG9hZC5kYXRhLnByb2JlSWQpOworICAgICAg
ICB9CiAKICAgICAgICAgY2FzZSBJbnNwZWN0b3JCYWNrZW5kLkVudW0uVGltZWxpbmUuRXZlbnRU
eXBlLlRpbWVySW5zdGFsbDoKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlzTmFOKGVuZFRp
bWUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01h
aW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApp
bmRleCA1ZGIyNzE1ZWJjMjI4NGM5NmIxY2I2ZjlmNjM0ZTViNDI4N2Y2Yzc0Li45YTExNThmZTY1
NDZmOTlmYWJiZGIwNGZlMjlmZGM5ZmExMzgyMzE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0xMjcsNiArMTI3LDcgQEAKICAgICA8bGlu
ayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0lubGluZVN3YXRjaC5jc3MiPgogICAgIDxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iVmlld3MvSW5wdXRQb3BvdmVyLmNzcyI+CiAgICAg
PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9Jc3N1ZVRyZWVFbGVtZW50LmNzcyI+
CisgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJWaWV3cy9KYXZhU2NyaXB0QnJlYWtw
b2ludFRyZWVFbGVtZW50LmNzcyI+CiAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJW
aWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuY3NzIj4KICAgICA8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9IlZpZXdzL0xheWVyVHJlZURldGFpbHNTaWRlYmFyUGFuZWwuY3NzIj4KICAg
ICA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9IlZpZXdzL0xheWVyczNEQ29udGVudFZpZXcu
Y3NzIj4KQEAgLTM0OSw2ICszNTAsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9UaW1l
bGluZU9ic2VydmVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvV29y
a2VyT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVh
a3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0JyZWFrcG9pbnRB
Y3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ29sbGVjdGlvbi5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Db25zb2xlTWVzc2FnZS5qcyI+
PC9zY3JpcHQ+CkBAIC0zNjksNyArMzcxLDYgQEAKICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0Fw
cGxpY2F0aW9uQ2FjaGVNYW5pZmVzdC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1v
ZGVscy9CYWNrRm9yd2FyZEVudHJ5LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9k
ZWxzL0JveFNoYWRvdy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVh
a3BvaW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NQVUluc3RydW1l
bnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmUuanMi
Pjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQ1BVVGltZWxpbmVSZWNvcmQuanMi
Pjwvc2NyaXB0PgpAQCAtNDE2LDYgKzQxNyw3IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9J
bmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
Ik1vZGVscy9JbmRleGVkRGF0YWJhc2VPYmplY3RTdG9yZUluZGV4LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0lzc3VlTWVzc2FnZS5qcyI+PC9zY3JpcHQ+CisgICAgPHNj
cmlwdCBzcmM9Ik1vZGVscy9KYXZhU2NyaXB0QnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9Ik1vZGVscy9LZXlib2FyZFNob3J0Y3V0LmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iTW9kZWxzL0xheWVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0xheW91dEluc3RydW1lbnQuanMiPjwvc2NyaXB0PgpAQCAtNzE2LDYgKzcxOCw3IEBA
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0lubGluZVN3YXRjaC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0lucHV0UG9wb3Zlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0lzc3VlVHJlZUVsZW1lbnQuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJUcmVlRGF0YUdyaWROb2RlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvTGF5ZXJUcmVlRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzCmluZGV4IDlhMjA5ZTgyODZiYmU1YjY4
OTVmZWM0OTllMDBhZmRiYmJkZGNjOGMuLjY1MjkyNDRlNGY5M2QzYzc3ODIxOGY3ZjI2ZmFhNmVl
MGM1Y2I3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9CcmVha3BvaW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9CcmVha3BvaW50LmpzCkBAIC0yNSwxMDggKzI1LDYzIEBACiAKIFdJLkJy
ZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiB7Ci0gICAgY29u
c3RydWN0b3Ioc291cmNlQ29kZUxvY2F0aW9uLCB7Y29udGVudElkZW50aWZpZXIsIGRpc2FibGVk
LCBjb25kaXRpb24sIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9ID0ge30pCisgICAgY29uc3Ry
dWN0b3Ioe2Rpc2FibGVkLCBjb25kaXRpb24sIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9ID0g
e30pCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2RlTG9jYXRpb24gaW5z
dGFuY2VvZiBXSS5Tb3VyY2VDb2RlTG9jYXRpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydCgh
Y29udGVudElkZW50aWZpZXIgfHwgdHlwZW9mIGNvbnRlbnRJZGVudGlmaWVyID09PSAic3RyaW5n
Iik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFkaXNhYmxlZCB8fCB0eXBlb2YgZGlzYWJsZWQg
PT09ICJib29sZWFuIik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb25kaXRpb24gfHwgdHlw
ZW9mIGNvbmRpdGlvbiA9PT0gInN0cmluZyIpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghaWdu
b3JlQ291bnQgfHwgIWlzTmFOKGlnbm9yZUNvdW50KSk7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0
KCFhdXRvQ29udGludWUgfHwgdHlwZW9mIGF1dG9Db250aW51ZSA9PT0gImJvb2xlYW4iKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoIWRpc2FibGVkIHx8IHR5cGVvZiBkaXNhYmxlZCA9PT0gImJv
b2xlYW4iLCBkaXNhYmxlZCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFjb25kaXRpb24gfHwg
dHlwZW9mIGNvbmRpdGlvbiA9PT0gInN0cmluZyIsIGNvbmRpdGlvbik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFpZ25vcmVDb3VudCB8fCAhaXNOYU4oaWdub3JlQ291bnQpLCBpZ25vcmVDb3Vu
dCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFhdXRvQ29udGludWUgfHwgdHlwZW9mIGF1dG9D
b250aW51ZSA9PT0gImJvb2xlYW4iLCBhdXRvQ29udGludWUpOwogCiAgICAgICAgIHN1cGVyKCk7
CiAKLSAgICAgICAgdGhpcy5faWQgPSBudWxsOwotICAgICAgICB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24gPSBzb3VyY2VDb2RlTG9jYXRpb247CisgICAgICAgIC8vIFRoaXMgY2xhc3Mgc2hvdWxk
IG5vdCBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIENyZWF0ZSBhIGNvbmNyZXRlIHN1YmNsYXNz
IGluc3RlYWQuCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuY29uc3RydWN0b3IgIT09IFdJ
LkJyZWFrcG9pbnQgJiYgdGhpcyBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQpOwogCi0gICAgICAg
IGxldCBzb3VyY2VDb2RlID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGU7Ci0g
ICAgICAgIGlmIChzb3VyY2VDb2RlKSB7Ci0gICAgICAgICAgICB0aGlzLl9jb250ZW50SWRlbnRp
ZmllciA9IHNvdXJjZUNvZGUuY29udGVudElkZW50aWZpZXI7Ci0gICAgICAgICAgICBjb25zb2xl
LmFzc2VydCghY29udGVudElkZW50aWZpZXIgfHwgY29udGVudElkZW50aWZpZXIgPT09IHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyLCAiVGhlIGNvbnRlbnQgaWRlbnRpZmllciBmcm9tIHRoZSBzb3Vy
Y2UgY29kZSBzaG91bGQgbWF0Y2ggdGhlIGdpdmVuIHZhbHVlLiIpOwotICAgICAgICB9IGVsc2UK
LSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyID0gY29udGVudElkZW50aWZpZXIg
fHwgbnVsbDsKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fY29udGVudElkZW50aWZpZXIg
fHwgdGhpcy5faXNTcGVjaWFsKCksICJUaGVyZSBzaG91bGQgYWx3YXlzIGJlIGEgY29udGVudCBp
ZGVudGlmaWVyIGZvciBhIGJyZWFrcG9pbnQuIik7Ci0KLSAgICAgICAgdGhpcy5fc2NyaXB0SWRl
bnRpZmllciA9IHNvdXJjZUNvZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VDb2RlLmlk
IDogbnVsbDsKLSAgICAgICAgdGhpcy5fdGFyZ2V0ID0gc291cmNlQ29kZSBpbnN0YW5jZW9mIFdJ
LlNjcmlwdCA/IHNvdXJjZUNvZGUudGFyZ2V0IDogbnVsbDsKICAgICAgICAgdGhpcy5fZGlzYWJs
ZWQgPSBkaXNhYmxlZCB8fCBmYWxzZTsKICAgICAgICAgdGhpcy5fY29uZGl0aW9uID0gY29uZGl0
aW9uIHx8ICIiOwogICAgICAgICB0aGlzLl9pZ25vcmVDb3VudCA9IGlnbm9yZUNvdW50IHx8IDA7
CiAgICAgICAgIHRoaXMuX2F1dG9Db250aW51ZSA9IGF1dG9Db250aW51ZSB8fCBmYWxzZTsKICAg
ICAgICAgdGhpcy5fYWN0aW9ucyA9IFtdOwotICAgICAgICB0aGlzLl9yZXNvbHZlZCA9IGZhbHNl
OwotCi0gICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdJ
LlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5Mb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbkxvY2F0aW9uQ2hhbmdlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMuX3NvdXJjZUNv
ZGVMb2NhdGlvbi5hZGRFdmVudExpc3RlbmVyKFdJLlNvdXJjZUNvZGVMb2NhdGlvbi5FdmVudC5E
aXNwbGF5TG9jYXRpb25DaGFuZ2VkLCB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9j
YXRpb25DaGFuZ2VkLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBJbXBvcnQgLyBFeHBvcnQKIAot
ICAgIHN0YXRpYyBmcm9tSlNPTihqc29uKQotICAgIHsKLSAgICAgICAgY29uc3Qgc291cmNlQ29k
ZSA9IG51bGw7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IEJyZWFrcG9pbnQobmV3IFdJ
LlNvdXJjZUNvZGVMb2NhdGlvbihzb3VyY2VDb2RlLCBqc29uLmxpbmVOdW1iZXIgfHwgMCwganNv
bi5jb2x1bW5OdW1iZXIgfHwgMCksIHsKLSAgICAgICAgICAgIC8vIFRoZSAndXJsJyBmYWxsYmFj
ayBpcyBmb3IgdHJhbnNpdGlvbmluZyBmcm9tIG9sZGVyIGZyb250ZW5kcyBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQuCi0gICAgICAgICAgICBjb250ZW50SWRlbnRpZmllcjoganNvbi5jb250ZW50SWRl
bnRpZmllciB8fCBqc29uLnVybCwKLSAgICAgICAgICAgIGRpc2FibGVkOiBqc29uLmRpc2FibGVk
LAotICAgICAgICAgICAgY29uZGl0aW9uOiBqc29uLmNvbmRpdGlvbiwKLSAgICAgICAgICAgIGln
bm9yZUNvdW50OiBqc29uLmlnbm9yZUNvdW50LAotICAgICAgICAgICAgYXV0b0NvbnRpbnVlOiBq
c29uLmF1dG9Db250aW51ZSwKLSAgICAgICAgfSk7Ci0gICAgICAgIGJyZWFrcG9pbnQuX2FjdGlv
bnMgPSBqc29uLmFjdGlvbnMubWFwKChhY3Rpb25KU09OKSA9PiBXSS5CcmVha3BvaW50QWN0aW9u
LmZyb21KU09OKGFjdGlvbkpTT04sIGJyZWFrcG9pbnQpKTsKLSAgICAgICAgcmV0dXJuIGJyZWFr
cG9pbnQ7Ci0gICAgfQotCiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIC8vIFRoZSBp
ZCwgc2NyaXB0SWRlbnRpZmllciwgdGFyZ2V0LCBhbmQgcmVzb2x2ZWQgc3RhdGUgYXJlIHRpZWQg
dG8gdGhlIGN1cnJlbnQgc2Vzc2lvbiwgc28gZG9uJ3QgaW5jbHVkZSB0aGVtIGZvciBzZXJpYWxp
emF0aW9uLgotICAgICAgICBsZXQganNvbiA9IHsKLSAgICAgICAgICAgIGNvbnRlbnRJZGVudGlm
aWVyOiB0aGlzLl9jb250ZW50SWRlbnRpZmllciwKLSAgICAgICAgICAgIGxpbmVOdW1iZXI6IHRo
aXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyLAotICAgICAgICAgICAgY29sdW1uTnVt
YmVyOiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyLAotICAgICAgICAgICAg
ZGlzYWJsZWQ6IHRoaXMuX2Rpc2FibGVkLAotICAgICAgICAgICAgY29uZGl0aW9uOiB0aGlzLl9j
b25kaXRpb24sCi0gICAgICAgICAgICBpZ25vcmVDb3VudDogdGhpcy5faWdub3JlQ291bnQsCi0g
ICAgICAgICAgICBhY3Rpb25zOiB0aGlzLl9hY3Rpb25zLm1hcCgoYWN0aW9uKSA9PiBhY3Rpb24u
dG9KU09OKCkpLAotICAgICAgICAgICAgYXV0b0NvbnRpbnVlOiB0aGlzLl9hdXRvQ29udGludWUs
Ci0gICAgICAgIH07Ci0gICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5
bWJvbCkKLSAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmJyZWFrcG9pbnRzLmtleVBh
dGhdID0gdGhpcy5fY29udGVudElkZW50aWZpZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24ubGluZU51bWJlciArICI6IiArIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5jb2x1bW5O
dW1iZXI7CisgICAgICAgIGxldCBqc29uID0ge307CisgICAgICAgIGlmICh0aGlzLl9kaXNhYmxl
ZCkKKyAgICAgICAgICAgIGpzb24uZGlzYWJsZWQgPSB0aGlzLl9kaXNhYmxlZDsKKyAgICAgICAg
aWYgKHRoaXMuZWRpdGFibGUpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9jb25kaXRpb24pCisg
ICAgICAgICAgICAgICAganNvbi5jb25kaXRpb24gPSB0aGlzLl9jb25kaXRpb247CisgICAgICAg
ICAgICBpZiAodGhpcy5faWdub3JlQ291bnQpCisgICAgICAgICAgICAgICAganNvbi5pZ25vcmVD
b3VudCA9IHRoaXMuX2lnbm9yZUNvdW50OworICAgICAgICAgICAgaWYgKHRoaXMuX2FjdGlvbnMu
bGVuZ3RoKQorICAgICAgICAgICAgICAgIGpzb24uYWN0aW9ucyA9IHRoaXMuX2FjdGlvbnMubWFw
KChhY3Rpb24pID0+IGFjdGlvbi50b0pTT04oKSk7CisgICAgICAgICAgICBpZiAodGhpcy5fYXV0
b0NvbnRpbnVlKQorICAgICAgICAgICAgICAgIGpzb24uYXV0b0NvbnRpbnVlID0gdGhpcy5fYXV0
b0NvbnRpbnVlOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBqc29uOwogICAgIH0KIAogICAg
IC8vIFB1YmxpYwogCi0gICAgZ2V0IHNvdXJjZUNvZGVMb2NhdGlvbigpIHsgcmV0dXJuIHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbjsgfQotICAgIGdldCBjb250ZW50SWRlbnRpZmllcigpIHsgcmV0
dXJuIHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOyB9Ci0gICAgZ2V0IHNjcmlwdElkZW50aWZpZXIo
KSB7IHJldHVybiB0aGlzLl9zY3JpcHRJZGVudGlmaWVyOyB9Ci0gICAgZ2V0IHRhcmdldCgpIHsg
cmV0dXJuIHRoaXMuX3RhcmdldDsgfQotCi0gICAgZ2V0IGlkZW50aWZpZXIoKQorICAgIGdldCBz
cGVjaWFsKCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9pZDsKKyAgICAgICAgLy8gT3Zl
cnJpZGRlbiBieSBzdWJjbGFzc2VzIGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIH0KIAotICAgIHNldCBpZGVudGlmaWVyKGlkKQorICAgIGdldCByZW1vdmFibGUoKQogICAg
IHsKLSAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxsOworICAgICAgICAvLyBPdmVycmlkZGVu
IGJ5IHN1YmNsYXNzZXMgaWYgbmVlZGVkLgorICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAK
LSAgICBnZXQgcmVzb2x2ZWQoKQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fcmVzb2x2ZWQ7Ci0gICAgfQotCi0gICAgc2V0IHJlc29sdmVkKHJlc29sdmVk
KQotICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX3Jlc29sdmVkID09PSByZXNvbHZlZCkKLSAgICAg
ICAgICAgIHJldHVybjsKLQotICAgICAgICBjb25zb2xlLmFzc2VydCghcmVzb2x2ZWQgfHwgdGhp
cy5fc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgfHwgdGhpcy5faXNTcGVjaWFsKCksICJC
cmVha3BvaW50cyBtdXN0IGhhdmUgYSBTb3VyY2VDb2RlIHRvIGJlIHJlc29sdmVkLiIsIHRoaXMp
OwotCi0gICAgICAgIHRoaXMuX3Jlc29sdmVkID0gcmVzb2x2ZWQgfHwgZmFsc2U7Ci0KLSAgICAg
ICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNv
bHZlZFN0YXRlRGlkQ2hhbmdlKTsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2Vz
IGlmIG5lZWRlZC4KKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAogICAgIGdldCBkaXNh
YmxlZCgpCkBAIC0xNTEsNiArMTA2LDkgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9p
bnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHNldCBjb25kaXRpb24oY29uZGl0aW9uKQogICAg
IHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KHR5cGVvZiBjb25kaXRpb24gPT09ICJzdHJpbmciKTsKKwogICAgICAg
ICBpZiAodGhpcy5fY29uZGl0aW9uID09PSBjb25kaXRpb24pCiAgICAgICAgICAgICByZXR1cm47
CiAKQEAgLTE2MSwxMSArMTE5LDE1IEBAIFdJLkJyZWFrcG9pbnQgPSBjbGFzcyBCcmVha3BvaW50
IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBnZXQgaWdub3JlQ291bnQoKQogICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKICAgICAgICAgcmV0dXJu
IHRoaXMuX2lnbm9yZUNvdW50OwogICAgIH0KIAogICAgIHNldCBpZ25vcmVDb3VudChpZ25vcmVD
b3VudCkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMp
OworCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGlnbm9yZUNvdW50ID49IDAsICJJZ25vcmUgY291
bnQgY2Fubm90IGJlIG5lZ2F0aXZlLiIpOwogICAgICAgICBpZiAoaWdub3JlQ291bnQgPCAwKQog
ICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTgwLDExICsxNDIsMTUgQEAgV0kuQnJlYWtwb2ludCA9
IGNsYXNzIEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIGdldCBhdXRvQ29udGlu
dWUoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7
CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9Db250aW51ZTsKICAgICB9CiAKICAgICBzZXQg
YXV0b0NvbnRpbnVlKGNvbnQpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVk
aXRhYmxlLCB0aGlzKTsKKwogICAgICAgICBpZiAodGhpcy5fYXV0b0NvbnRpbnVlID09PSBjb250
KQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC0xOTUsMTEgKzE2MSwxNSBAQCBXSS5CcmVha3Bv
aW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IGFjdGlv
bnMoKQogICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7
CisKICAgICAgICAgcmV0dXJuIHRoaXMuX2FjdGlvbnM7CiAgICAgfQogCiAgICAgZ2V0IHByb2Jl
QWN0aW9ucygpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmVkaXRhYmxlLCB0
aGlzKTsKKwogICAgICAgICByZXR1cm4gdGhpcy5fYWN0aW9ucy5maWx0ZXIoZnVuY3Rpb24oYWN0
aW9uKSB7CiAgICAgICAgICAgICByZXR1cm4gYWN0aW9uLnR5cGUgPT09IFdJLkJyZWFrcG9pbnRB
Y3Rpb24uVHlwZS5Qcm9iZTsKICAgICAgICAgfSk7CkBAIC0yMDgsMjcgKzE3OCwzNCBAQCBXSS5C
cmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogICAgIGN5Y2xl
VG9OZXh0TW9kZSgpCiAgICAgewogICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgewotICAgICAg
ICAgICAgLy8gV2hlbiBjeWNsaW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdoZW4gZ29pbmcgZnJv
bSBkaXNhYmxlZCB0byBlbmFibGVkLgotICAgICAgICAgICAgdGhpcy5hdXRvQ29udGludWUgPSBm
YWxzZTsKKyAgICAgICAgICAgIGlmICh0aGlzLmVkaXRhYmxlKSB7CisgICAgICAgICAgICAgICAg
Ly8gV2hlbiBjeWNsaW5nLCBjbGVhciBhdXRvLWNvbnRpbnVlIHdoZW4gZ29pbmcgZnJvbSBkaXNh
YmxlZCB0byBlbmFibGVkLgorICAgICAgICAgICAgICAgIHRoaXMuYXV0b0NvbnRpbnVlID0gZmFs
c2U7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHRoaXMuZGlzYWJsZWQgPSBmYWxzZTsK
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLmF1dG9D
b250aW51ZSkgewotICAgICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuZWRpdGFibGUpIHsKKyAgICAg
ICAgICAgIGlmICh0aGlzLmF1dG9Db250aW51ZSkgeworICAgICAgICAgICAgICAgIHRoaXMuZGlz
YWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KIAot
ICAgICAgICBpZiAodGhpcy5hY3Rpb25zLmxlbmd0aCkgewotICAgICAgICAgICAgdGhpcy5hdXRv
Q29udGludWUgPSB0cnVlOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgaWYgKHRo
aXMuYWN0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmF1dG9Db250aW51ZSA9
IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAgICB9
CiAKICAgICAgICAgdGhpcy5kaXNhYmxlZCA9IHRydWU7CiAgICAgfQogCi0gICAgY3JlYXRlQWN0
aW9uKHR5cGUsIHByZWNlZGluZ0FjdGlvbiwgZGF0YSkKKyAgICBjcmVhdGVBY3Rpb24odHlwZSwg
e2RhdGEsIHByZWNlZGluZ0FjdGlvbn0gPSB7fSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBuZXdBY3Rpb24gPSBuZXcg
V0kuQnJlYWtwb2ludEFjdGlvbih0aGlzLCB0eXBlLCBkYXRhIHx8IG51bGwpOwogCiAgICAgICAg
IGlmICghcHJlY2VkaW5nQWN0aW9uKQpAQCAtMjQ5LDYgKzIyNiw4IEBAIFdJLkJyZWFrcG9pbnQg
PSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICByZWNyZWF0ZUFjdGlv
bih0eXBlLCBhY3Rpb25Ub1JlcGxhY2UpCiAgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCh0
aGlzLmVkaXRhYmxlLCB0aGlzKTsKKwogICAgICAgICBsZXQgaW5kZXggPSB0aGlzLl9hY3Rpb25z
LmluZGV4T2YoYWN0aW9uVG9SZXBsYWNlKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaW5kZXgg
IT09IC0xKTsKICAgICAgICAgaWYgKGluZGV4ID09PSAtMSkKQEAgLTI2NSw2ICsyNDQsOCBAQCBX
SS5CcmVha3BvaW50ID0gY2xhc3MgQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAg
cmVtb3ZlQWN0aW9uKGFjdGlvbikKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
ZWRpdGFibGUsIHRoaXMpOworCiAgICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5k
ZXhPZihhY3Rpb24pOwogICAgICAgICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogICAg
ICAgICBpZiAoaW5kZXggPT09IC0xKQpAQCAtMjgwLDYgKzI2MSw4IEBAIFdJLkJyZWFrcG9pbnQg
PSBjbGFzcyBCcmVha3BvaW50IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBjbGVhckFjdGlvbnMo
dHlwZSkKICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMp
OworCiAgICAgICAgIGlmICghdHlwZSkKICAgICAgICAgICAgIHRoaXMuX2FjdGlvbnMgPSBbXTsK
ICAgICAgICAgZWxzZQpAQCAtMjg4LDE3ICsyNzEsNjQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNz
IEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuQnJlYWtwb2ludC5FdmVudC5BY3Rpb25zRGlkQ2hhbmdlKTsKICAgICB9
CiAKLSAgICBzYXZlSWRlbnRpdHlUb0Nvb2tpZShjb29raWUpCisgICAgcmVtb3ZlKCkKICAgICB7
Ci0gICAgICAgIGNvb2tpZVsiYnJlYWtwb2ludC1jb250ZW50LWlkZW50aWZpZXIiXSA9IHRoaXMu
X2NvbnRlbnRJZGVudGlmaWVyOwotICAgICAgICBjb29raWVbImJyZWFrcG9pbnQtbGluZS1udW1i
ZXIiXSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbi5saW5lTnVtYmVyOwotICAgICAgICBjb29r
aWVbImJyZWFrcG9pbnQtY29sdW1uLW51bWJlciJdID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9u
LmNvbHVtbk51bWJlcjsKKyAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5yZW1vdmFibGUsIHRo
aXMpOworCisgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3NlcyBpZiBuZWVkZWQuCisg
ICAgfQorCisgICAgb3B0aW9uc1RvUHJvdG9jb2woKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQodGhpcy5lZGl0YWJsZSwgdGhpcyk7CisKKyAgICAgICAgbGV0IHBheWxvYWQgPSB7fTsK
KworICAgICAgICBpZiAodGhpcy5fY29uZGl0aW9uKQorICAgICAgICAgICAgcGF5bG9hZC5jb25k
aXRpb24gPSB0aGlzLl9jb25kaXRpb247CisKKyAgICAgICAgaWYgKHRoaXMuX2FjdGlvbnMubGVu
Z3RoKSB7CisgICAgICAgICAgICBwYXlsb2FkLmFjdGlvbnMgPSB0aGlzLl9hY3Rpb25zLm1hcCgo
YWN0aW9uKSA9PiBhY3Rpb24udG9Qcm90b2NvbCgpKS5maWx0ZXIoKGFjdGlvbikgPT4geworICAg
ICAgICAgICAgICAgIGlmIChhY3Rpb24udHlwZSAhPT0gV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBl
LkxvZykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgICAgICAg
ICBpZiAoIS9cJFx7Lio/XH0vLnRlc3QoYWN0aW9uLmRhdGEpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgICAgICAgICAgICAgIGxldCBsZXhlciA9IG5ldyBXSS5CcmVh
a3BvaW50TG9nTWVzc2FnZUxleGVyOworICAgICAgICAgICAgICAgIGxldCB0b2tlbnMgPSBsZXhl
ci50b2tlbml6ZShhY3Rpb24uZGF0YSk7CisgICAgICAgICAgICAgICAgaWYgKCF0b2tlbnMpCisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgIGxldCB0
ZW1wbGF0ZUxpdGVyYWwgPSB0b2tlbnMucmVkdWNlKCh0ZXh0LCB0b2tlbikgPT4geworICAgICAg
ICAgICAgICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VM
ZXhlci5Ub2tlblR5cGUuUGxhaW5UZXh0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHRleHQgKyB0b2tlbi5kYXRhLmVzY2FwZUNoYXJhY3RlcnMoImBcXCIpOworICAgICAgICAgICAg
ICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gV0kuQnJlYWtwb2ludExvZ01lc3NhZ2VMZXhlci5U
b2tlblR5cGUuRXhwcmVzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXh0
ICsgIiR7IiArIHRva2VuLmRhdGEgKyAifSI7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0
ZXh0OworICAgICAgICAgICAgICAgIH0sICIiKTsKKworICAgICAgICAgICAgICAgIGFjdGlvbi5k
YXRhID0gImNvbnNvbGUubG9nKGAiICsgdGVtcGxhdGVMaXRlcmFsICsgImApIjsKKyAgICAgICAg
ICAgICAgICBhY3Rpb24udHlwZSA9IFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5FdmFsdWF0ZTsK
KyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKHRoaXMuX2F1dG9Db250aW51ZSkKKyAgICAgICAgICAgIHBheWxvYWQu
YXV0b0NvbnRpbnVlID0gdGhpcy5fYXV0b0NvbnRpbnVlOworCisgICAgICAgIGlmICh0aGlzLl9p
Z25vcmVDb3VudCkKKyAgICAgICAgICAgIHBheWxvYWQuaWdub3JlQ291bnQgPSB0aGlzLl9pZ25v
cmVDb3VudDsKKworICAgICAgICByZXR1cm4gIWlzRW1wdHlPYmplY3QocGF5bG9hZCkgPyBwYXls
b2FkIDogdW5kZWZpbmVkOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZCAoQ2FsbGVkIGJ5IEJy
ZWFrcG9pbnRBY3Rpb24pCiAKICAgICBicmVha3BvaW50QWN0aW9uRGlkQ2hhbmdlKGFjdGlvbikK
ICAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuZWRpdGFibGUsIHRoaXMpOworCiAg
ICAgICAgIHZhciBpbmRleCA9IHRoaXMuX2FjdGlvbnMuaW5kZXhPZihhY3Rpb24pOwogICAgICAg
ICBjb25zb2xlLmFzc2VydChpbmRleCAhPT0gLTEpOwogICAgICAgICBpZiAoaW5kZXggPT09IC0x
KQpAQCAtMzA2LDM0ICszMzYsMTQgQEAgV0kuQnJlYWtwb2ludCA9IGNsYXNzIEJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFuZ2UpOwogICAgIH0KLQotICAgIC8v
IFByaXZhdGUKLQotICAgIF9pc1NwZWNpYWwoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMu
X3NvdXJjZUNvZGVMb2NhdGlvbi5pc0VxdWFsKG5ldyBXSS5Tb3VyY2VDb2RlTG9jYXRpb24obnVs
bCwgSW5maW5pdHksIEluZmluaXR5KSk7Ci0gICAgfQotCi0gICAgX3NvdXJjZUNvZGVMb2NhdGlv
bkxvY2F0aW9uQ2hhbmdlZChldmVudCkKLSAgICB7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkJyZWFrcG9pbnQuRXZlbnQuTG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50
LmRhdGEpOwotICAgIH0KLQotICAgIF9zb3VyY2VDb2RlTG9jYXRpb25EaXNwbGF5TG9jYXRpb25D
aGFuZ2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQnJlYWtwb2ludC5FdmVudC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRh
dGEpOwotICAgIH0KIH07CiAKIFdJLkJyZWFrcG9pbnQuVHlwZUlkZW50aWZpZXIgPSAiYnJlYWtw
b2ludCI7CiAKIFdJLkJyZWFrcG9pbnQuRXZlbnQgPSB7CiAgICAgRGlzYWJsZWRTdGF0ZURpZENo
YW5nZTogImJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtZGlkLWNoYW5nZSIsCi0gICAgUmVzb2x2
ZWRTdGF0ZURpZENoYW5nZTogImJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlkLWNoYW5nZSIs
CiAgICAgQ29uZGl0aW9uRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1jb25kaXRpb24tZGlkLWNoYW5n
ZSIsCiAgICAgSWdub3JlQ291bnREaWRDaGFuZ2U6ICJicmVha3BvaW50LWlnbm9yZS1jb3VudC1k
aWQtY2hhbmdlIiwKICAgICBBY3Rpb25zRGlkQ2hhbmdlOiAiYnJlYWtwb2ludC1hY3Rpb25zLWRp
ZC1jaGFuZ2UiLAogICAgIEF1dG9Db250aW51ZURpZENoYW5nZTogImJyZWFrcG9pbnQtYXV0by1j
b250aW51ZS1kaWQtY2hhbmdlIiwKLSAgICBMb2NhdGlvbkRpZENoYW5nZTogImJyZWFrcG9pbnQt
bG9jYXRpb24tZGlkLWNoYW5nZSIsCi0gICAgRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiAiYnJl
YWtwb2ludC1kaXNwbGF5LWxvY2F0aW9uLWRpZC1jaGFuZ2UiLAogfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9CcmVha3BvaW50QWN0aW9u
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9p
bnRBY3Rpb24uanMKaW5kZXggZDhiZTdmNWQyZThiZDg2YjUzYmJjNTliMjhmYTFmN2JmMDMyMDZk
Zi4uMzRmYjBhM2Q4YWFlZmU0NGU1MTMyNjc5MGZkNjYyNGExMjI2NWYyOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0JyZWFrcG9pbnRBY3Rp
b24uanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0Jy
ZWFrcG9pbnRBY3Rpb24uanMKQEAgLTI3LDggKzI3LDkgQEAgV0kuQnJlYWtwb2ludEFjdGlvbiA9
IGNsYXNzIEJyZWFrcG9pbnRBY3Rpb24KIHsKICAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB0
eXBlLCBkYXRhKQogICAgIHsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkJyZWFrcG9pbnQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFs
dWVzKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZSkuaW5jbHVkZXModHlwZSkpOworICAgICAgICBj
b25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgYnJlYWtw
b2ludCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuQnJlYWtwb2lu
dEFjdGlvbi5UeXBlKS5pbmNsdWRlcyh0eXBlKSwgdHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFkYXRhIHx8IHR5cGVvZiBkYXRhID09PSAic3RyaW5nIiwgZGF0YSk7CiAKICAgICAgICAg
dGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9pbnQ7CiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTUJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRE9NQnJlYWtwb2ludC5qcwppbmRleCA3OTk0NTliN2I2NDFmYzZmZGJhMDc1ZmIyODc5
M2Y5N2Q4MDc3ZjZlLi4wNTM3ZDM2YmJiN2QwZWVlMWFmZmEwYjM2ZGE0YTJmMTVjY2M0NTc4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9N
QnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvRE9NQnJlYWtwb2ludC5qcwpAQCAtMjMsMTQgKzIzLDE0IEBACiAgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERP
TUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBE
T01CcmVha3BvaW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludAogewogICAgIGNvbnN0cnVjdG9yKGRv
bU5vZGVPckluZm8sIHR5cGUsIHtkaXNhYmxlZH0gPSB7fSkKICAgICB7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGRvbU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlIHx8IHR5cGVvZiBk
b21Ob2RlT3JJbmZvID09PSAib2JqZWN0IiwgZG9tTm9kZU9ySW5mbyk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KE9iamVjdC52YWx1ZXMoV0kuRE9NQnJlYWtwb2ludC5UeXBlKS5pbmNsdWRlcyh0
eXBlKSwgdHlwZSk7CiAKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVk
fSk7CiAKICAgICAgICAgaWYgKGRvbU5vZGVPckluZm8gaW5zdGFuY2VvZiBXSS5ET01Ob2RlKSB7
CiAgICAgICAgICAgICB0aGlzLl9kb21Ob2RlSWRlbnRpZmllciA9IGRvbU5vZGVPckluZm8uaWQ7
CkBAIC00NCwxNSArNDQsMTQgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9p
bnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0
eXBlOwotICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVkIHx8IGZhbHNlOwogICAgIH0K
IAogICAgIC8vIFN0YXRpYwogCi0gICAgc3RhdGljIGRlc2VyaWFsaXplKHNlcmlhbGl6ZWRJbmZv
KQorICAgIHN0YXRpYyBmcm9tSlNPTihqc29uKQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBX
SS5ET01CcmVha3BvaW50KHNlcmlhbGl6ZWRJbmZvLCBzZXJpYWxpemVkSW5mby50eXBlLCB7Ci0g
ICAgICAgICAgICBkaXNhYmxlZDogISFzZXJpYWxpemVkSW5mby5kaXNhYmxlZCwKKyAgICAgICAg
cmV0dXJuIG5ldyBXSS5ET01CcmVha3BvaW50KGpzb24sIGpzb24udHlwZSwgeworICAgICAgICAg
ICAgZGlzYWJsZWQ6IGpzb24uZGlzYWJsZWQsCiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNjIs
MjEgKzYxLDYgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERPTUJyZWFrcG9pbnQgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICBnZXQgdXJsKCkgeyByZXR1cm4gdGhpcy5fdXJsOyB9CiAgICAgZ2V0
IHBhdGgoKSB7IHJldHVybiB0aGlzLl9wYXRoOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQotICAg
IHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVkOwotICAgIH0KLQotICAgIHNldCBkaXNh
YmxlZChkaXNhYmxlZCkKLSAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PT0gZGlz
YWJsZWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBk
aXNhYmxlZDsKLQotICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01C
cmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkKTsKLSAgICB9Ci0KICAgICBnZXQg
ZG9tTm9kZUlkZW50aWZpZXIoKQogICAgIHsKICAgICAgICAgcmV0dXJuIHRoaXMuX2RvbU5vZGVJ
ZGVudGlmaWVyOwpAQCAtOTYsNiArODAsMTMgQEAgV0kuRE9NQnJlYWtwb2ludCA9IGNsYXNzIERP
TUJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRE9NQnJlYWtwb2ludC5FdmVudC5ET01Ob2RlQ2hhbmdlZCwgZGF0YSk7
CiAgICAgfQogCisgICAgcmVtb3ZlKCkKKyAgICB7CisgICAgICAgIHN1cGVyLnJlbW92ZSgpOwor
CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVET01CcmVha3BvaW50KHRoaXMp
OworICAgIH0KKwogICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKICAgICB7CiAgICAg
ICAgIGNvb2tpZVsiZG9tLWJyZWFrcG9pbnQtdXJsIl0gPSB0aGlzLl91cmw7CkBAIC0xMDUsMTMg
Kzk2LDEwIEBAIFdJLkRPTUJyZWFrcG9pbnQgPSBjbGFzcyBET01CcmVha3BvaW50IGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICB0b0pTT04oa2V5KQogICAgIHsKLSAgICAgICAgbGV0IGpzb24gPSB7
Ci0gICAgICAgICAgICB1cmw6IHRoaXMuX3VybCwKLSAgICAgICAgICAgIHBhdGg6IHRoaXMuX3Bh
dGgsCi0gICAgICAgICAgICB0eXBlOiB0aGlzLl90eXBlLAotICAgICAgICB9OwotICAgICAgICBp
ZiAodGhpcy5fZGlzYWJsZWQpCi0gICAgICAgICAgICBqc29uLmRpc2FibGVkID0gdHJ1ZTsKKyAg
ICAgICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oa2V5KTsKKyAgICAgICAganNvbi51cmwgPSB0
aGlzLl91cmw7CisgICAgICAgIGpzb24ucGF0aCA9IHRoaXMuX3BhdGg7CisgICAgICAgIGpzb24u
dHlwZSA9IHRoaXMuX3R5cGU7CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRv
SlNPTlN5bWJvbCkKICAgICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLmRvbUJyZWFrcG9p
bnRzLmtleVBhdGhdID0gdGhpcy5fdXJsICsgIjoiICsgdGhpcy5fcGF0aCArICI6IiArIHRoaXMu
X3R5cGU7CiAgICAgICAgIHJldHVybiBqc29uOwpAQCAtMTI2LDUgKzExNCw0IEBAIFdJLkRPTUJy
ZWFrcG9pbnQuVHlwZSA9IHsKIAogV0kuRE9NQnJlYWtwb2ludC5FdmVudCA9IHsKICAgICBET01O
b2RlQ2hhbmdlZDogImRvbS1icmVha3BvaW50LWRvbS1ub2RlLWNoYW5nZWQiLAotICAgIERpc2Fi
bGVkU3RhdGVDaGFuZ2VkOiAiZG9tLWJyZWFrcG9pbnQtZGlzYWJsZWQtc3RhdGUtY2hhbmdlZCIs
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0V2ZW50QnJlYWtwb2ludC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9FdmVudEJyZWFrcG9pbnQuanMKaW5kZXggZmYxZTc5Y2ZlNGRiYTVkNmM0NDI4
YWI0N2ZjYWI0OTM1ZmViMDJhZS4uMzc2NjgyYzUzMDA0YzdhNWExOTFhNTNiMzVlNTZiNmE4M2Fk
OWU3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0V2ZW50QnJlYWtwb2ludC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvRXZlbnRCcmVha3BvaW50LmpzCkBAIC0yMywyOCArMjMsNDcgQEAKICAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5FdmVudEJyZWFrcG9p
bnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKK1dJLkV2ZW50QnJl
YWtwb2ludCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludCBleHRlbmRzIFdJLkJyZWFrcG9pbnQKIHsK
LSAgICBjb25zdHJ1Y3Rvcih0eXBlLCB7ZXZlbnROYW1lLCBldmVudExpc3RlbmVyLCBkaXNhYmxl
ZH0gPSB7fSkKKyAgICBjb25zdHJ1Y3Rvcih0eXBlLCB7ZXZlbnROYW1lLCBldmVudExpc3RlbmVy
LCBkaXNhYmxlZCwgYWN0aW9ucywgY29uZGl0aW9uLCBpZ25vcmVDb3VudCwgYXV0b0NvbnRpbnVl
fSA9IHt9KQogICAgIHsKLSAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgLy8gQ09NUEFUSUJJTElU
WSAoaU9TIDEzKTogRE9NRGVidWdnZXIuRXZlbnRCcmVha3BvaW50VHlwZXMuVGltZXIgd2FzIHJl
bW92ZWQuCisgICAgICAgIGlmICh0eXBlID09PSAidGltZXIiKSB7CisgICAgICAgICAgICBzd2l0
Y2ggKGV2ZW50TmFtZSkgeworICAgICAgICAgICAgY2FzZSAic2V0SW50ZXJ2YWwiOgorICAgICAg
ICAgICAgICAgIHR5cGUgPSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbDsKKyAgICAg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAic2V0VGltZW91dCI6CisgICAg
ICAgICAgICAgICAgdHlwZSA9IFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQ7CisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBj
b25zb2xlLmFzc2VydChPYmplY3QudmFsdWVzKFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlKS5pbmNs
dWRlcyh0eXBlKSwgdHlwZSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFldmVudE5hbWUgfHwg
dHlwZSA9PT0gV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSk7Cisg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFldmVudExpc3RlbmVyIHx8IHR5cGUgPT09IFdJLkV2ZW50
QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudExpc3RlbmVyKTsKKworICAgICAgICBzdXBl
cih7ZGlzYWJsZWQsIGNvbmRpdGlvbiwgYWN0aW9ucywgaWdub3JlQ291bnQsIGF1dG9Db250aW51
ZX0pOwogCiAgICAgICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgICAgICB0aGlzLl9ldmVudE5h
bWUgPSBldmVudE5hbWUgfHwgbnVsbDsKICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lciA9IGV2
ZW50TGlzdGVuZXIgfHwgbnVsbDsKLSAgICAgICAgdGhpcy5fZGlzYWJsZWQgPSBkaXNhYmxlZCB8
fCBmYWxzZTsKICAgICB9CiAKICAgICAvLyBTdGF0aWMKIAotICAgIHN0YXRpYyBkZXNlcmlhbGl6
ZShzZXJpYWxpemVkSW5mbykKKyAgICBzdGF0aWMgZnJvbUpTT04oanNvbikKICAgICB7Ci0gICAg
ICAgIHJldHVybiBuZXcgV0kuRXZlbnRCcmVha3BvaW50KHNlcmlhbGl6ZWRJbmZvLnR5cGUsIHsK
LSAgICAgICAgICAgIGV2ZW50TmFtZTogc2VyaWFsaXplZEluZm8uZXZlbnROYW1lLAotICAgICAg
ICAgICAgZGlzYWJsZWQ6ICEhc2VyaWFsaXplZEluZm8uZGlzYWJsZWQsCisgICAgICAgIGxldCBi
cmVha3BvaW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludChqc29uLnR5cGUsIHsKKyAgICAgICAg
ICAgIGV2ZW50TmFtZToganNvbi5ldmVudE5hbWUsCisgICAgICAgICAgICBkaXNhYmxlZDoganNv
bi5kaXNhYmxlZCwKKyAgICAgICAgICAgIGNvbmRpdGlvbjoganNvbi5jb25kaXRpb24sCisgICAg
ICAgICAgICBpZ25vcmVDb3VudDoganNvbi5pZ25vcmVDb3VudCwKKyAgICAgICAgICAgIGF1dG9D
b250aW51ZToganNvbi5hdXRvQ29udGludWUsCiAgICAgICAgIH0pOworICAgICAgICBicmVha3Bv
aW50Ll9hY3Rpb25zID0ganNvbi5hY3Rpb25zPy5tYXAoKGFjdGlvbkpTT04pID0+IFdJLkJyZWFr
cG9pbnRBY3Rpb24uZnJvbUpTT04oYWN0aW9uSlNPTiwgYnJlYWtwb2ludCkpIHx8IFtdOworICAg
ICAgICByZXR1cm4gYnJlYWtwb2ludDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTUzLDE5
ICs3MiwzNCBAQCBXSS5FdmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICBnZXQgZXZlbnROYW1lKCkgeyByZXR1cm4gdGhpcy5fZXZlbnRO
YW1lOyB9CiAgICAgZ2V0IGV2ZW50TGlzdGVuZXIoKSB7IHJldHVybiB0aGlzLl9ldmVudExpc3Rl
bmVyOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQorICAgIGdldCBzcGVjaWFsKCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICAgICAgc3dpdGNoICh0aGlzKSB7Cisg
ICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0Jy
ZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVy
c0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVv
dXRzQnJlYWtwb2ludDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHN1cGVyLnNwZWNpYWw7CiAgICAgfQogCi0gICAgc2V0IGRpc2FibGVkKGRp
c2FibGVkKQorICAgIGdldCBlZGl0YWJsZSgpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fZGlz
YWJsZWQgPT09IGRpc2FibGVkKQotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAvLyBDT01Q
QVRJQklMSVRZIChpT1MgMTQpOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIgZGlk
IG5vdCBoYXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAgICAvLyBDT01QQVRJ
QklMSVRZIChpT1MgMTQpOiBET01EZWJ1Z2dlci5zZXRFdmVudEJyZWFrcG9pbnQgZGlkIG5vdCBo
YXZlIGFuICJvcHRpb25zIiBwYXJhbWV0ZXIgeWV0LgorICAgICAgICByZXR1cm4gKHRoaXMuX2V2
ZW50TGlzdGVuZXIgPyBJbnNwZWN0b3JCYWNrZW5kLmhhc0NvbW1hbmQoIkRPTS5zZXRCcmVha3Bv
aW50Rm9yRXZlbnRMaXN0ZW5lciIsICJvcHRpb25zIikgOiBJbnNwZWN0b3JCYWNrZW5kLmhhc0Nv
bW1hbmQoIkRPTURlYnVnZ2VyLnNldEV2ZW50QnJlYWtwb2ludCIsICJvcHRpb25zIikpIHx8IHN1
cGVyLmVkaXRhYmxlOworICAgIH0KIAotICAgICAgICB0aGlzLl9kaXNhYmxlZCA9IGRpc2FibGVk
OworICAgIHJlbW92ZSgpCisgICAgeworICAgICAgICBzdXBlci5yZW1vdmUoKTsKIAotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5FdmVudEJyZWFrcG9pbnQuRXZlbnQu
RGlzYWJsZWRTdGF0ZUNoYW5nZWQpOworICAgICAgICBpZiAodGhpcy5fZXZlbnRMaXN0ZW5lcikK
KyAgICAgICAgICAgIFdJLmRvbU1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludEZvckV2ZW50TGlzdGVu
ZXIodGhpcy5fZXZlbnRMaXN0ZW5lcik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFdJLmRv
bURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQodGhpcyk7CiAgICAgfQogCiAg
ICAgc2F2ZUlkZW50aXR5VG9Db29raWUoY29va2llKQpAQCAtNzUsMTkgKzEwOSwxNCBAQCBXSS5F
dmVudEJyZWFrcG9pbnQgPSBjbGFzcyBFdmVudEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgICAgIGNvb2tpZVsiZXZlbnQtYnJlYWtwb2ludC1ldmVudC1uYW1lIl0gPSB0aGlz
Ll9ldmVudE5hbWU7CiAgICAgICAgIGlmICh0aGlzLl9ldmVudExpc3RlbmVyKQogICAgICAgICAg
ICAgY29va2llWyJldmVudC1icmVha3BvaW50LWV2ZW50LWxpc3RlbmVyIl0gPSB0aGlzLl9ldmVu
dExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZDsKLSAgICAgICAgaWYgKHRoaXMuX2Rpc2FibGVkKQot
ICAgICAgICAgICAgY29va2llWyJldmVudC1icmVha3BvaW50LWRpc2FibGVkIl0gPSB0aGlzLl9k
aXNhYmxlZDsKICAgICB9CiAKICAgICB0b0pTT04oa2V5KQogICAgIHsKLSAgICAgICAgbGV0IGpz
b24gPSB7Ci0gICAgICAgICAgICB0eXBlOiB0aGlzLl90eXBlLAotICAgICAgICB9OworICAgICAg
ICBsZXQganNvbiA9IHN1cGVyLnRvSlNPTihrZXkpOworICAgICAgICBqc29uLnR5cGUgPSB0aGlz
Ll90eXBlOwogICAgICAgICBpZiAodGhpcy5fZXZlbnROYW1lKQogICAgICAgICAgICAganNvbi5l
dmVudE5hbWUgPSB0aGlzLl9ldmVudE5hbWU7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCkK
LSAgICAgICAgICAgIGpzb24uZGlzYWJsZWQgPSB0cnVlOwogICAgICAgICBpZiAoa2V5ID09PSBX
SS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCiAgICAgICAgICAgICBqc29uW1dJLm9iamVjdFN0
b3Jlcy5ldmVudEJyZWFrcG9pbnRzLmtleVBhdGhdID0gdGhpcy5fdHlwZSArICh0aGlzLl9ldmVu
dE5hbWUgPyAiOiIgKyB0aGlzLl9ldmVudE5hbWUgOiAiIik7CiAgICAgICAgIHJldHVybiBqc29u
OwpAQCAtOTksMTEgKzEyOCw0IEBAIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlID0gewogICAgIElu
dGVydmFsOiAiaW50ZXJ2YWwiLAogICAgIExpc3RlbmVyOiAibGlzdGVuZXIiLAogICAgIFRpbWVv
dXQ6ICJ0aW1lb3V0IiwKLQotICAgIC8vIENPTVBBVElCSUxJVFkgKGlPUyAxMyk6IERPTURlYnVn
Z2VyLkV2ZW50QnJlYWtwb2ludFR5cGVzLlRpbWVyIHdhcyByZW1vdmVkLgotICAgIFRpbWVyOiAi
dGltZXIiLAotfTsKLQotV0kuRXZlbnRCcmVha3BvaW50LkV2ZW50ID0gewotICAgIERpc2FibGVk
U3RhdGVDaGFuZ2VkOiAiZXZlbnQtYnJlYWtwb2ludC1kaXNhYmxlZC1zdGF0ZS1jaGFuZ2VkIiwK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9pbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2QzM2E4
OGQ2Mjc2OTk2OTE4OWNlNTMyZDkzNGU2OWI0Nzc1Y2FmMQotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9KYXZhU2NyaXB0QnJlYWtw
b2ludC5qcwpAQCAtMCwwICsxLDE5NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAx
NCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLkphdmFTY3Jp
cHRCcmVha3BvaW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5CcmVh
a3BvaW50Cit7CisgICAgY29uc3RydWN0b3Ioc291cmNlQ29kZUxvY2F0aW9uLCB7Y29udGVudElk
ZW50aWZpZXIsIGRpc2FibGVkLCBjb25kaXRpb24sIGFjdGlvbnMsIGlnbm9yZUNvdW50LCBhdXRv
Q29udGludWV9ID0ge30pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChzb3VyY2VDb2Rl
TG9jYXRpb24gaW5zdGFuY2VvZiBXSS5Tb3VyY2VDb2RlTG9jYXRpb24pOworICAgICAgICBjb25z
b2xlLmFzc2VydCghY29udGVudElkZW50aWZpZXIgfHwgdHlwZW9mIGNvbnRlbnRJZGVudGlmaWVy
ID09PSAic3RyaW5nIik7CisKKyAgICAgICAgc3VwZXIoe2Rpc2FibGVkLCBjb25kaXRpb24sIGFj
dGlvbnMsIGlnbm9yZUNvdW50LCBhdXRvQ29udGludWV9KTsKKworICAgICAgICB0aGlzLl9pZCA9
IG51bGw7CisgICAgICAgIHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlvbiA9IHNvdXJjZUNvZGVMb2Nh
dGlvbjsKKworICAgICAgICBsZXQgc291cmNlQ29kZSA9IHRoaXMuX3NvdXJjZUNvZGVMb2NhdGlv
bi5zb3VyY2VDb2RlOworICAgICAgICBpZiAoc291cmNlQ29kZSkgeworICAgICAgICAgICAgdGhp
cy5fY29udGVudElkZW50aWZpZXIgPSBzb3VyY2VDb2RlLmNvbnRlbnRJZGVudGlmaWVyOworICAg
ICAgICAgICAgY29uc29sZS5hc3NlcnQoIWNvbnRlbnRJZGVudGlmaWVyIHx8IGNvbnRlbnRJZGVu
dGlmaWVyID09PSB0aGlzLl9jb250ZW50SWRlbnRpZmllciwgIlRoZSBjb250ZW50IGlkZW50aWZp
ZXIgZnJvbSB0aGUgc291cmNlIGNvZGUgc2hvdWxkIG1hdGNoIHRoZSBnaXZlbiB2YWx1ZS4iKTsK
KyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICB0aGlzLl9jb250ZW50SWRlbnRpZmllciA9IGNv
bnRlbnRJZGVudGlmaWVyIHx8IG51bGw7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2Nv
bnRlbnRJZGVudGlmaWVyIHx8IHRoaXMuX2lzU3BlY2lhbCgpLCAiVGhlcmUgc2hvdWxkIGFsd2F5
cyBiZSBhIGNvbnRlbnQgaWRlbnRpZmllciBmb3IgYSBicmVha3BvaW50LiIpOworCisgICAgICAg
IHRoaXMuX3NjcmlwdElkZW50aWZpZXIgPSBzb3VyY2VDb2RlIGluc3RhbmNlb2YgV0kuU2NyaXB0
ID8gc291cmNlQ29kZS5pZCA6IG51bGw7CisgICAgICAgIHRoaXMuX3RhcmdldCA9IHNvdXJjZUNv
ZGUgaW5zdGFuY2VvZiBXSS5TY3JpcHQgPyBzb3VyY2VDb2RlLnRhcmdldCA6IG51bGw7CisgICAg
ICAgIHRoaXMuX3Jlc29sdmVkID0gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxv
Y2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0kuU291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkxvY2F0
aW9uQ2hhbmdlZCwgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uTG9jYXRpb25DaGFuZ2VkLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmFkZEV2ZW50TGlzdGVuZXIoV0ku
U291cmNlQ29kZUxvY2F0aW9uLkV2ZW50LkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMuX3Nv
dXJjZUNvZGVMb2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQsIHRoaXMpOworICAgIH0KKwor
ICAgIC8vIEltcG9ydCAvIEV4cG9ydAorCisgICAgc3RhdGljIGZyb21KU09OKGpzb24pCisgICAg
eworICAgICAgICBjb25zdCBzb3VyY2VDb2RlID0gbnVsbDsKKyAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobmV3IFdJLlNvdXJjZUNvZGVMb2NhdGlv
bihzb3VyY2VDb2RlLCBqc29uLmxpbmVOdW1iZXIgfHwgMCwganNvbi5jb2x1bW5OdW1iZXIgfHwg
MCksIHsKKyAgICAgICAgICAgIC8vIFRoZSAndXJsJyBmYWxsYmFjayBpcyBmb3IgdHJhbnNpdGlv
bmluZyBmcm9tIG9sZGVyIGZyb250ZW5kcyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQuCisgICAgICAg
ICAgICBjb250ZW50SWRlbnRpZmllcjoganNvbi5jb250ZW50SWRlbnRpZmllciB8fCBqc29uLnVy
bCwKKyAgICAgICAgICAgIGRpc2FibGVkOiBqc29uLmRpc2FibGVkLAorICAgICAgICAgICAgY29u
ZGl0aW9uOiBqc29uLmNvbmRpdGlvbiwKKyAgICAgICAgICAgIGlnbm9yZUNvdW50OiBqc29uLmln
bm9yZUNvdW50LAorICAgICAgICAgICAgYXV0b0NvbnRpbnVlOiBqc29uLmF1dG9Db250aW51ZSwK
KyAgICAgICAgfSk7CisgICAgICAgIGJyZWFrcG9pbnQuX2FjdGlvbnMgPSBqc29uLmFjdGlvbnM/
Lm1hcCgoYWN0aW9uSlNPTikgPT4gV0kuQnJlYWtwb2ludEFjdGlvbi5mcm9tSlNPTihhY3Rpb25K
U09OLCBicmVha3BvaW50KSkgfHwgW107CisgICAgICAgIHJldHVybiBicmVha3BvaW50OworICAg
IH0KKworICAgIHRvSlNPTihrZXkpCisgICAgeworICAgICAgICAvLyBUaGUgaWQsIHNjcmlwdElk
ZW50aWZpZXIsIHRhcmdldCwgYW5kIHJlc29sdmVkIHN0YXRlIGFyZSB0aWVkIHRvIHRoZSBjdXJy
ZW50IHNlc3Npb24sIHNvIGRvbid0IGluY2x1ZGUgdGhlbSBmb3Igc2VyaWFsaXphdGlvbi4KKyAg
ICAgICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oa2V5KTsKKyAgICAgICAganNvbi5jb250ZW50
SWRlbnRpZmllciA9IHRoaXMuX2NvbnRlbnRJZGVudGlmaWVyOworICAgICAgICBqc29uLmxpbmVO
dW1iZXIgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICAgICAganNv
bi5jb2x1bW5OdW1iZXIgPSB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOwor
ICAgICAgICBpZiAoa2V5ID09PSBXSS5PYmplY3RTdG9yZS50b0pTT05TeW1ib2wpCisgICAgICAg
ICAgICBqc29uW1dJLm9iamVjdFN0b3Jlcy5icmVha3BvaW50cy5rZXlQYXRoXSA9IHRoaXMuX2Nv
bnRlbnRJZGVudGlmaWVyICsgIjoiICsgdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmxpbmVOdW1i
ZXIgKyAiOiIgKyB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uY29sdW1uTnVtYmVyOworICAgICAg
ICByZXR1cm4ganNvbjsKKyAgICB9CisKKyAgICAvLyBQdWJsaWMKKworICAgIGdldCBzb3VyY2VD
b2RlTG9jYXRpb24oKSB7IHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb247IH0KKyAgICBn
ZXQgY29udGVudElkZW50aWZpZXIoKSB7IHJldHVybiB0aGlzLl9jb250ZW50SWRlbnRpZmllcjsg
fQorICAgIGdldCBzY3JpcHRJZGVudGlmaWVyKCkgeyByZXR1cm4gdGhpcy5fc2NyaXB0SWRlbnRp
ZmllcjsgfQorICAgIGdldCB0YXJnZXQoKSB7IHJldHVybiB0aGlzLl90YXJnZXQ7IH0KKworICAg
IGdldCBzcGVjaWFsKCkKKyAgICB7CisgICAgICAgIHN3aXRjaCAodGhpcykgeworICAgICAgICBj
YXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5kZWJ1Z2dlclN0YXRlbWVudHNCcmVha3BvaW50OgorICAg
ICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxFeGNlcHRpb25zQnJlYWtwb2ludDoKKyAg
ICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIudW5jYXVnaHRFeGNlcHRpb25zQnJlYWtwb2lu
dDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVh
a3BvaW50OgorICAgICAgICBjYXNlIFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJl
YWtwb2ludDoKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHN1cGVyLnNwZWNpYWw7CisgICAgfQorCisgICAgZ2V0IHJlbW92YWJsZSgpCisgICAg
eworICAgICAgICBzd2l0Y2ggKHRoaXMpIHsKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWxsRXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdn
ZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3VwZXIucmVtb3ZhYmxlOwor
ICAgIH0KKworICAgIGdldCBlZGl0YWJsZSgpCisgICAgeworICAgICAgICBzd2l0Y2ggKHRoaXMp
IHsKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJl
YWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0aW9uc0Jy
ZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0
aW9uc0JyZWFrcG9pbnQ6CisgICAgICAgIGNhc2UgV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludDoKKyAgICAgICAgY2FzZSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxs
TWljcm90YXNrc0JyZWFrcG9pbnQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gc3VwZXIuZWRpdGFibGU7CisgICAgfQorCisgICAgZ2V0IGlk
ZW50aWZpZXIoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lkOworICAgIH0KKworICAg
IHNldCBpZGVudGlmaWVyKGlkKQorICAgIHsKKyAgICAgICAgdGhpcy5faWQgPSBpZCB8fCBudWxs
OworICAgIH0KKworICAgIGdldCByZXNvbHZlZCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhp
cy5fcmVzb2x2ZWQ7CisgICAgfQorCisgICAgc2V0IHJlc29sdmVkKHJlc29sdmVkKQorICAgIHsK
KyAgICAgICAgaWYgKHRoaXMuX3Jlc29sdmVkID09PSByZXNvbHZlZCkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICBjb25zb2xlLmFzc2VydCghcmVzb2x2ZWQgfHwgdGhpcy5fc291cmNl
Q29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgfHwgdGhpcy5faXNTcGVjaWFsKCksICJCcmVha3BvaW50
cyBtdXN0IGhhdmUgYSBTb3VyY2VDb2RlIHRvIGJlIHJlc29sdmVkLiIsIHRoaXMpOworCisgICAg
ICAgIHRoaXMuX3Jlc29sdmVkID0gcmVzb2x2ZWQgfHwgZmFsc2U7CisKKyAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVz
b2x2ZWRTdGF0ZURpZENoYW5nZSk7CisgICAgfQorCisgICAgcmVtb3ZlKCkKKyAgICB7CisgICAg
ICAgIHN1cGVyLnJlbW92ZSgpOworCisgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVC
cmVha3BvaW50KHRoaXMpOworICAgIH0KKworICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tp
ZSkKKyAgICB7CisgICAgICAgIGNvb2tpZVsiamF2YXNjcmlwdC1icmVha3BvaW50LWNvbnRlbnQt
aWRlbnRpZmllciJdID0gdGhpcy5fY29udGVudElkZW50aWZpZXI7CisgICAgICAgIGNvb2tpZVsi
amF2YXNjcmlwdC1icmVha3BvaW50LWxpbmUtbnVtYmVyIl0gPSB0aGlzLl9zb3VyY2VDb2RlTG9j
YXRpb24ubGluZU51bWJlcjsKKyAgICAgICAgY29va2llWyJqYXZhc2NyaXB0LWJyZWFrcG9pbnQt
Y29sdW1uLW51bWJlciJdID0gdGhpcy5fc291cmNlQ29kZUxvY2F0aW9uLmNvbHVtbk51bWJlcjsK
KyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaXNTcGVjaWFsKCkKKyAgICB7CisgICAg
ICAgIHJldHVybiB0aGlzLl9zb3VyY2VDb2RlTG9jYXRpb24uaXNFcXVhbChuZXcgV0kuU291cmNl
Q29kZUxvY2F0aW9uKG51bGwsIEluZmluaXR5LCBJbmZpbml0eSkpOworICAgIH0KKworICAgIF9z
b3VyY2VDb2RlTG9jYXRpb25Mb2NhdGlvbkNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVu
dC5Mb2NhdGlvbkRpZENoYW5nZSwgZXZlbnQuZGF0YSk7CisgICAgfQorCisgICAgX3NvdXJjZUNv
ZGVMb2NhdGlvbkRpc3BsYXlMb2NhdGlvbkNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0
aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVu
dC5EaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIGV2ZW50LmRhdGEpOworICAgIH0KK307CisKK1dJ
LkphdmFTY3JpcHRCcmVha3BvaW50LlR5cGVJZGVudGlmaWVyID0gImphdmFzY3JpcHQtYnJlYWtw
b2ludCI7CisKK1dJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50ID0geworICAgIFJlc29sdmVk
U3RhdGVEaWRDaGFuZ2U6ICJqYXZhc2NyaXB0LWJyZWFrcG9pbnQtcmVzb2x2ZWQtc3RhdGUtZGlk
LWNoYW5nZSIsCisgICAgTG9jYXRpb25EaWRDaGFuZ2U6ICJqYXZhc2NyaXB0LWJyZWFrcG9pbnQt
bG9jYXRpb24tZGlkLWNoYW5nZSIsCisgICAgRGlzcGxheUxvY2F0aW9uRGlkQ2hhbmdlOiAiamF2
YXNjcmlwdC1icmVha3BvaW50LWRpc3BsYXktbG9jYXRpb24tZGlkLWNoYW5nZSIsCit9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2Jl
U2V0LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Byb2Jl
U2V0LmpzCmluZGV4IGE1MTNjZTMxOGE2ZmIzOTJiNTQyMjc5ZWY1ZWU0OTk4OTFmZTdmMzguLjli
NjI3ZTU5ODg5OThiMmNjMzAwYWZlNmYyNjRmOTRmMGZiZTUxZDcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9Qcm9iZVNldC5qcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUHJvYmVTZXQuanMKQEAg
LTQyLDcgKzQyLDcgQEAgV0kuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9i
amVjdAogCiAgICAgICAgIFdJLkZyYW1lLmFkZEV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQu
TWFpblJlc291cmNlRGlkQ2hhbmdlLCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsK
ICAgICAgICAgV0kuUHJvYmUuYWRkRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVB
ZGRlZCwgdGhpcy5fc2FtcGxlQ29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZSwgdGhpcy5fYnJlYWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAg
ICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3Jp
cHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9p
bnRSZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMK
QEAgLTY4LDcgKzY4LDcgQEAgV0kuUHJvYmVTZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgY3JlYXRlUHJvYmUoZXhwcmVzc2lvbikKICAgICB7Ci0gICAgICAgIHRo
aXMuYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLlByb2Jl
LCBudWxsLCBleHByZXNzaW9uKTsKKyAgICAgICAgdGhpcy5icmVha3BvaW50LmNyZWF0ZUFjdGlv
bihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIHtkYXRhOiBleHByZXNzaW9ufSk7CiAg
ICAgfQogCiAgICAgYWRkUHJvYmUocHJvYmUpCkBAIC0xMDEsNyArMTAxLDcgQEAgV0kuUHJvYmVT
ZXQgPSBjbGFzcyBQcm9iZVNldCBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgIFdJLkZyYW1l
LnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRnJhbWUuRXZlbnQuTWFpblJlc291cmNlRGlkQ2hhbmdl
LCB0aGlzLl9tYWluUmVzb3VyY2VDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgV0kuUHJvYmUucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5Qcm9iZS5FdmVudC5TYW1wbGVBZGRlZCwgdGhpcy5fc2FtcGxl
Q29sbGVjdGVkLCB0aGlzKTsKLSAgICAgICAgV0kuQnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJl
YWtwb2ludFJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRSZXNvbHZlZFN0
YXRlRGlkQ2hhbmdlLCB0aGlzKTsKICAgICB9CiAKICAgICAvLyBQcml2YXRlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvVVJMQnJlYWtwb2lu
dC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVh
a3BvaW50LmpzCmluZGV4IDQ3ZWVmNjRlM2RjZGYxNjc0Mjk4OTYxMmNhNWY4ZDdmYmQ4NTY5YjMu
LjVkYTE4NTgwNjY5MGQ4YmM3NzE3YTc5YzUwZDQ1MmNkZDQ2YjAzY2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVha3BvaW50Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9VUkxCcmVh
a3BvaW50LmpzCkBAIC0yMywyNiArMjMsMjUgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi1XSS5VUkxCcmVha3BvaW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludCBl
eHRlbmRzIFdJLk9iamVjdAorV0kuVVJMQnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQg
ZXh0ZW5kcyBXSS5CcmVha3BvaW50CiB7CiAgICAgY29uc3RydWN0b3IodHlwZSwgdXJsLCB7ZGlz
YWJsZWR9ID0ge30pCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChPYmplY3QudmFsdWVz
KFdJLlVSTEJyZWFrcG9pbnQuVHlwZSkuaW5jbHVkZXModHlwZSksIHR5cGUpOwogICAgICAgICBj
b25zb2xlLmFzc2VydCh0eXBlb2YgdXJsID09PSAic3RyaW5nIiwgdXJsKTsKIAotICAgICAgICBz
dXBlcigpOworICAgICAgICBzdXBlcih7ZGlzYWJsZWR9KTsKIAogICAgICAgICB0aGlzLl90eXBl
ID0gdHlwZTsKICAgICAgICAgdGhpcy5fdXJsID0gdXJsOwotICAgICAgICB0aGlzLl9kaXNhYmxl
ZCA9IGRpc2FibGVkIHx8IGZhbHNlOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwogCi0gICAgc3Rh
dGljIGRlc2VyaWFsaXplKHNlcmlhbGl6ZWRJbmZvKQorICAgIHN0YXRpYyBmcm9tSlNPTihqc29u
KQogICAgIHsKLSAgICAgICAgcmV0dXJuIG5ldyBXSS5VUkxCcmVha3BvaW50KHNlcmlhbGl6ZWRJ
bmZvLnR5cGUsIHNlcmlhbGl6ZWRJbmZvLnVybCwgewotICAgICAgICAgICAgZGlzYWJsZWQ6ICEh
c2VyaWFsaXplZEluZm8uZGlzYWJsZWQsCisgICAgICAgIHJldHVybiBuZXcgV0kuVVJMQnJlYWtw
b2ludChqc29uLnR5cGUsIGpzb24udXJsLCB7CisgICAgICAgICAgICBkaXNhYmxlZDoganNvbi5k
aXNhYmxlZCwKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC01MSwxOSArNTAsMTYgQEAgV0kuVVJM
QnJlYWtwb2ludCA9IGNsYXNzIFVSTEJyZWFrcG9pbnQgZXh0ZW5kcyBXSS5PYmplY3QKICAgICBn
ZXQgdHlwZSgpIHsgcmV0dXJuIHRoaXMuX3R5cGU7IH0KICAgICBnZXQgdXJsKCkgeyByZXR1cm4g
dGhpcy5fdXJsOyB9CiAKLSAgICBnZXQgZGlzYWJsZWQoKQorICAgIGdldCBzcGVjaWFsKCkKICAg
ICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlZDsKKyAgICAgICAgcmV0dXJuIHRoaXMg
PT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxSZXF1ZXN0c0JyZWFrcG9pbnQgfHwgc3VwZXIu
c3BlY2lhbDsKICAgICB9CiAKLSAgICBzZXQgZGlzYWJsZWQoZGlzYWJsZWQpCisgICAgcmVtb3Zl
KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9kaXNhYmxlZCA9PT0gZGlzYWJsZWQpCi0gICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHN1cGVyLnJlbW92ZSgpOwogCi0gICAgICAgIHRoaXMu
X2Rpc2FibGVkID0gZGlzYWJsZWQ7Ci0KLSAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuVVJMQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCk7CisgICAg
ICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVVUkxCcmVha3BvaW50KHRoaXMpOwogICAg
IH0KIAogICAgIHNhdmVJZGVudGl0eVRvQ29va2llKGNvb2tpZSkKQEAgLTc0LDIyICs3MCwxNSBA
QCBXSS5VUkxCcmVha3BvaW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludCBleHRlbmRzIFdJLk9iamVj
dAogCiAgICAgdG9KU09OKGtleSkKICAgICB7Ci0gICAgICAgIGxldCBqc29uID0gewotICAgICAg
ICAgICAgdHlwZTogdGhpcy5fdHlwZSwKLSAgICAgICAgICAgIHVybDogdGhpcy5fdXJsLAotICAg
ICAgICB9OwotICAgICAgICBpZiAodGhpcy5fZGlzYWJsZWQpCi0gICAgICAgICAgICBqc29uLmRp
c2FibGVkID0gdHJ1ZTsKKyAgICAgICAgbGV0IGpzb24gPSBzdXBlci50b0pTT04oa2V5KTsKKyAg
ICAgICAganNvbi50eXBlID0gdGhpcy5fdHlwZTsKKyAgICAgICAganNvbi51cmwgPSB0aGlzLl91
cmw7CiAgICAgICAgIGlmIChrZXkgPT09IFdJLk9iamVjdFN0b3JlLnRvSlNPTlN5bWJvbCkKICAg
ICAgICAgICAgIGpzb25bV0kub2JqZWN0U3RvcmVzLnVybEJyZWFrcG9pbnRzLmtleVBhdGhdID0g
dGhpcy5fdHlwZSArICI6IiArIHRoaXMuX3VybDsKICAgICAgICAgcmV0dXJuIGpzb247CiAgICAg
fQogfTsKIAotV0kuVVJMQnJlYWtwb2ludC5FdmVudCA9IHsKLSAgICBEaXNhYmxlZFN0YXRlQ2hh
bmdlZDogInVybC1icmVha3BvaW50LWRpc2FibGVkLXN0YXRlLWNoYW5nZWQiLAotfTsKLQogV0ku
VVJMQnJlYWtwb2ludC5UeXBlID0gewogICAgIFRleHQ6ICJ0ZXh0IiwKICAgICBSZWd1bGFyRXhw
cmVzc2lvbjogInJlZ2V4IiwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1Rlc3QuaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1Rlc3QuaHRtbAppbmRleCAxZmE5YzllNGI4NWRhMGYxOTk3MDZkNjA1ZDA5NjAyMzI1ZjBiYjRk
Li5lZWRhOGViMTM1MmI3NzIwZjcxMjFjNjUwNThkMzg2ZmJlMjdkZGNjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9UZXN0Lmh0bWwKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVGVzdC5odG1sCkBAIC0xMDgsNiArMTA4LDcg
QEAKICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvVGltZWxpbmVPYnNlcnZlci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlByb3RvY29sL1dvcmtlck9ic2VydmVyLmpzIj48L3Njcmlw
dD4KIAorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9CcmVha3BvaW50QWN0aW9uLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iTW9kZWxzL0NvbGxlY3Rpb24uanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJNb2RlbHMvQ29uc29sZU1lc3NhZ2UuanMiPjwvc2NyaXB0PgpAQCAtMTI2LDcgKzEy
Nyw2IEBACiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9BbmltYXRpb24uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvQW5pbWF0aW9uQ29sbGVjdGlvbi5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Cb3hTaGFkb3cuanMiPjwvc2NyaXB0PgotICAgIDxz
Y3JpcHQgc3JjPSJNb2RlbHMvQnJlYWtwb2ludC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9Ik1vZGVscy9DUFVJbnN0cnVtZW50LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
TW9kZWxzL0NQVVRpbWVsaW5lLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTW9kZWxz
L0NQVVRpbWVsaW5lUmVjb3JkLmpzIj48L3NjcmlwdD4KQEAgLTE2OSw2ICsxNjksNyBAQAogICAg
IDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmUuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSW5kZXhlZERhdGFiYXNlT2JqZWN0U3RvcmVJ
bmRleC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9Jc3N1ZU1lc3NhZ2Uu
anMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvSmF2YVNjcmlwdEJyZWFrcG9p
bnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJNb2RlbHMvTGF5b3V0SW5zdHJ1bWVudC5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9Ik1vZGVscy9MYXlvdXRUaW1lbGluZVJlY29yZC5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9CcmVha3BvaW50QWN0aW9uVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCmluZGV4IDAzZjZjNjk3MWFh
MjY4NDlmYWMzMDg3Mzk0OGNmZjMyMzg1OWRjNjkuLjFiNWFjODEyMTEwZjgxZTA0NjRhYzFkOGI0
N2U1NGRmMDBiMmRmMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFrcG9pbnRBY3Rpb25WaWV3LmpzCkBAIC0x
MTUsNyArMTE1LDcgQEAgV0kuQnJlYWtwb2ludEFjdGlvblZpZXcgPSBjbGFzcyBCcmVha3BvaW50
QWN0aW9uVmlldyBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgX2FwcGVuZEFjdGlvbkJ1dHRvbkNs
aWNrZWQoZXZlbnQpCiAgICAgewotICAgICAgICB2YXIgbmV3QWN0aW9uID0gdGhpcy5fYWN0aW9u
LmJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKHRoaXMuX2FjdGlvbi50eXBlLCB0aGlzLl9hY3Rpb24p
OworICAgICAgICB2YXIgbmV3QWN0aW9uID0gdGhpcy5fYWN0aW9uLmJyZWFrcG9pbnQuY3JlYXRl
QWN0aW9uKHRoaXMuX2FjdGlvbi50eXBlLCB7cHJlY2VkaW5nQWN0aW9uOiB0aGlzLl9hY3Rpb259
KTsKICAgICAgICAgdGhpcy5fZGVsZWdhdGUuYnJlYWtwb2ludEFjdGlvblZpZXdBcHBlbmRBY3Rp
b25WaWV3KHRoaXMsIG5ld0FjdGlvbik7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuY3Nz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmNzcwppbmRleCAwNWFjNWZkZmVmYTg4MmE4YjRkNWI4NjhjNmM1ZGQ0MTNiNzY0
ZTg5Li5jMzRlMjUzMTM0NWYwMTZlNTUyMzk0MTE4N2YwZTY4NTNjYThkZWVhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9CcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0JyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKQEAgLTM0LDE1ICszNCw2IEBACiAKICAgICBm
aWxsOiB2YXIoLS1icmVha3BvaW50LWNvbG9yKTsKICAgICBzdHJva2U6IGhzbGEoMCwgMCUsIDEw
JSwgMC4zKTsKLSAgICBmaWx0ZXI6IGdyYXlzY2FsZSgpOwotfQotCi0uaXRlbS5icmVha3BvaW50
IC5zdGF0dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkIHsKLSAgICBmaWx0ZXI6IG5vbmU7Ci19
Ci0KLWJvZHk6bm90KC53aW5kb3ctaW5hY3RpdmUsIC53aW5kb3ctZG9ja2VkLWluYWN0aXZlKSAu
dHJlZS1vdXRsaW5lOmZvY3VzLXdpdGhpbiAuaXRlbS5icmVha3BvaW50LnNlbGVjdGVkIC5zdGF0
dXMgPiAuc3RhdHVzLWltYWdlLnJlc29sdmVkIHsKLSAgICBzdHJva2U6IHZhcigtLXNlbGVjdGVk
LWZvcmVncm91bmQtY29sb3IpOwogfQogCiAuaXRlbS5icmVha3BvaW50IC5zdGF0dXMgPiAuc3Rh
dHVzLWltYWdlLmF1dG8tY29udGludWU6OmFmdGVyIHsKQEAgLTU5LDgwICs1MCwxMiBAQCBib2R5
Om5vdCgud2luZG93LWluYWN0aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0
bGluZTpmb2N1cy13aXRoaW4gLgogICAgIGZpbGw6IHZhcigtLWJyZWFrcG9pbnQtY29sb3ItZGlz
YWJsZWQpOwogfQogCi0uaXRlbS5icmVha3BvaW50IC5zdWJ0aXRsZS5mb3JtYXR0ZWQtbG9jYXRp
b24gewotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLmJyZWFrcG9pbnQtZGVidWdnZXIt
c3RhdGVtZW50LWljb24gLmljb24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUlj
b25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1saWdodCk7Ci19Ci0KLS5icmVha3BvaW50LWV4Y2Vw
dGlvbi1pY29uIC5pY29uIHsKLSAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRXhjZXB0aW9uLWxpZ2h0KTsKLX0KLQotLmJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24gLmlj
b24gewotICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNBc3NlcnRpb24t
bGlnaHQpOwotfQotCi0uYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbiB7Ci0gICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI01pY3JvdGFzay1saWdodCk7Ci19Ci0K
LS5icmVha3BvaW50LXBhdXNlZC1pY29uIC5pY29uIHsKKy5pdGVtLmJyZWFrcG9pbnQucGF1c2Vk
IC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUGF1c2Vk
QnJlYWtwb2ludC1saWdodCk7CiB9CiAKLS8qIFdoZW4gYW5pbWF0aW5nIGEgbGF5ZXIgb24gdG9w
IG9mIGEgdHJlZSBlbGVtZW50J3MgaWNvbiwgbW92ZSB0aGUgbWFpbgotaWNvbiB0byB0aGUgaWNv
biBlbGVtZW50J3MgYmFja2dyb3VuZCBzbyBhbmltYXRpb25zIGFyZSBsYXllcmVkIG9uIHRvcC4g
Ki8KLS5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29uIHsKLSAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1saWdodCk7Ci0g
ICAgY29udGVudDogJyc7Ci19Ci0KLS5icmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIC5pY29u
ID4gc3BhbiB7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogMDsKLSAgICByaWdo
dDogMDsKLSAgICBib3R0b206IDA7Ci0gICAgbGVmdDogMDsKLQotICAgIGJvcmRlci1yYWRpdXM6
IDUwJTsKLSAgICB0cmFuc2Zvcm06IHNjYWxlKDApOwotICAgIHRyYW5zaXRpb246IG5vbmU7Ci0g
ICAgYmFja2dyb3VuZC1jb2xvcjogaHNsKDIxNiwgMzAlLCA0MiUpOwotfQotCi0uZGF0YS11cGRh
dGVkLmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gPiBzcGFuIHsKLSAgICBib3Jk
ZXItcmFkaXVzOiAwOwotICAgIHRyYW5zZm9ybTogc2NhbGUoMC44NSk7Ci0gICAgdHJhbnNpdGlv
bjogYWxsIC40cyBlYXNlLW91dDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDIxNiwgMzAl
LCA0MiUsIDAuMSk7Ci19Ci0KIEBtZWRpYSAocHJlZmVycy1jb2xvci1zY2hlbWU6IGRhcmspIHsK
LSAgICAuYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiAuaWNvbiB7Ci0gICAgICAg
IGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNEZWJ1Z2dlclN0YXRlbWVudC1k
YXJrKTsKLSAgICB9Ci0gICAgCi0gICAgLmJyZWFrcG9pbnQtZXhjZXB0aW9uLWljb24gLmljb24g
ewotICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXhjZXB0aW9u
LWRhcmspOwotICAgIH0KLQotICAgIC5icmVha3BvaW50LWFzc2VydGlvbi1pY29uIC5pY29uIHsK
LSAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlvbi1k
YXJrKTsKLSAgICB9Ci0KLSAgICAuYnJlYWtwb2ludC1taWNyb3Rhc2staWNvbiAuaWNvbiB7Ci0g
ICAgICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stZGFy
ayk7Ci0gICAgfQotCi0gICAgLmJyZWFrcG9pbnQtcGF1c2VkLWljb24gLmljb24geworICAgIC5p
dGVtLmJyZWFrcG9pbnQucGF1c2VkIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0lt
YWdlcy9UeXBlSWNvbnMuc3ZnI1BhdXNlZEJyZWFrcG9pbnQtZGFyayk7CiAgICAgfQotCi0gICAg
LmJyZWFrcG9pbnQtZ2VuZXJpYy1saW5lLWljb24gLmljb24gewotICAgICAgICBiYWNrZ3JvdW5k
LWltYWdlOiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1kYXJrKTsKLSAg
ICB9Ci0gICAgCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJlYWtwb2ludFRyZWVF
bGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQnJl
YWtwb2ludFRyZWVFbGVtZW50LmpzCmluZGV4IDI2M2YwN2MyOGU3ZjlkYmVjMDg3Y2FiM2FlNzU5
NjQxMGI1ZWZmZDUuLmNmMmUwNmVlOGY1NmQwNjdhYTZkYzA1OTJhNmE2MTkyZDA4ODlkZGQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0JyZWFr
cG9pbnRUcmVlRWxlbWVudC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTI1LDI2ICsyNSwyNiBAQAog
CiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBCcmVha3BvaW50VHJlZUVsZW1lbnQg
ZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3RvcihicmVha3Bv
aW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50
LCB7Y2xhc3NOYW1lcywgdGl0bGUsIHN1YnRpdGxlfSA9IHt9KQogICAgIHsKICAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQpOwogCi0gICAg
ICAgIGlmICghY2xhc3NOYW1lKQotICAgICAgICAgICAgY2xhc3NOYW1lID0gV0kuQnJlYWtwb2lu
dFRyZWVFbGVtZW50LkdlbmVyaWNMaW5lSWNvblN0eWxlQ2xhc3NOYW1lOworICAgICAgICBpZiAo
IUFycmF5LmlzQXJyYXkoY2xhc3NOYW1lcykpCisgICAgICAgICAgICBjbGFzc05hbWVzID0gW107
CisgICAgICAgIGNsYXNzTmFtZXMucHVzaCgiYnJlYWtwb2ludCIpOwogCi0gICAgICAgIGNvbnN0
IHN1YnRpdGxlID0gbnVsbDsKLSAgICAgICAgc3VwZXIoWyJicmVha3BvaW50IiwgY2xhc3NOYW1l
XSwgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKKyAgICAgICAgc3VwZXIoY2xhc3NOYW1l
cywgdGl0bGUsIHN1YnRpdGxlLCBicmVha3BvaW50KTsKKworICAgICAgICAvLyBUaGlzIGNsYXNz
IHNob3VsZCBub3QgYmUgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBDcmVhdGUgYSBjb25jcmV0ZSBz
dWJjbGFzcyBpbnN0ZWFkLgorICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLmNvbnN0cnVjdG9y
ICE9PSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgJiYgdGhpcyBpbnN0YW5jZW9mIFdJLkJyZWFr
cG9pbnRUcmVlRWxlbWVudCk7CiAKICAgICAgICAgdGhpcy5fYnJlYWtwb2ludCA9IGJyZWFrcG9p
bnQ7CiAgICAgICAgIHRoaXMuX3Byb2JlU2V0ID0gbnVsbDsKIAogICAgICAgICB0aGlzLl9saXN0
ZW5lclNldCA9IG5ldyBXSS5FdmVudExpc3RlbmVyU2V0KHRoaXMsICJCcmVha3BvaW50VHJlZUVs
ZW1lbnQgbGlzdGVuZXJzIik7Ci0gICAgICAgIGlmICghdGl0bGUpCi0gICAgICAgICAgICB0aGlz
Ll9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50Lkxv
Y2F0aW9uRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UpOwotICAg
ICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50
LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAg
ICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJLkJyZWFrcG9pbnQu
RXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVTdGF0dXMpOwotICAgICAg
ICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2
ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cyk7Ci0gICAgICAg
IHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdlciwgV0kuRGVidWdn
ZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwgdGhpcy5fdXBkYXRl
U3RhdHVzKTsKKyAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0ZXIoYnJlYWtwb2ludCwg
V0kuQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0
YXR1cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKGJyZWFrcG9pbnQsIFdJ
LkJyZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1
cyk7CisgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKFdJLmRlYnVnZ2VyTWFuYWdl
ciwgV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5nZSwg
dGhpcy51cGRhdGVTdGF0dXMpOwogICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3RlcihX
SS5kZWJ1Z2dlck1hbmFnZXIsIFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5Qcm9iZVNldEFkZGVk
LCB0aGlzLl9wcm9iZVNldEFkZGVkKTsKICAgICAgICAgdGhpcy5fbGlzdGVuZXJTZXQucmVnaXN0
ZXIoV0kuZGVidWdnZXJNYW5hZ2VyLCBXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUHJvYmVTZXRS
ZW1vdmVkLCB0aGlzLl9wcm9iZVNldFJlbW92ZWQpOwogCkBAIC01NSw4ICs1NSw4IEBAIFdJLkJy
ZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRz
IFdJLkdlbmVyYWxUcmVlRWxlCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVyKHRo
aXMuc3RhdHVzLCAiY2xpY2siLCB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKIAog
ICAgICAgICBpZiAoIXRpdGxlKQotICAgICAgICAgICAgdGhpcy5fdXBkYXRlVGl0bGVzKCk7Ci0g
ICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOworICAgICAgICAgICAgdGhpcy51cGRhdGVUaXRs
ZXMoKTsKKyAgICAgICAgdGhpcy51cGRhdGVTdGF0dXMoKTsKIAogICAgICAgICB0aGlzLl9pY29u
QW5pbWF0aW9uTGF5ZXJFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwog
ICAgICAgICB0aGlzLmljb25FbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX2ljb25BbmltYXRpb25M
YXllckVsZW1lbnQpOwpAQCAtNzAsMTEgKzcwLDYgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50
ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUK
ICAgICAgICAgcmV0dXJuIHRoaXMuX2JyZWFrcG9pbnQ7CiAgICAgfQogCi0gICAgZ2V0IGZpbHRl
cmFibGVEYXRhKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB7dGV4dDogW3RoaXMuYnJlYWtwb2lu
dC5jb250ZW50SWRlbnRpZmllcl19OwotICAgIH0KLQogICAgIG9uZGVsZXRlKCkKICAgICB7CiAg
ICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcgc28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxs
IHJlbW92ZSB0aGlzCkBAIC04Miw4ICs3Nyw4IEBAIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudCA9
IGNsYXNzIEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUcmVlRWxlCiAg
ICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChlLmcu
IFRleHRFZGl0b3IpLgogICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJkU2hv
cnRjdXQgPSB0cnVlOwogCi0gICAgICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3Bv
aW50UmVtb3ZhYmxlKHRoaXMuX2JyZWFrcG9pbnQpKSB7Ci0gICAgICAgICAgICBXSS5kZWJ1Z2dl
ck1hbmFnZXIucmVtb3ZlQnJlYWtwb2ludCh0aGlzLl9icmVha3BvaW50KTsKKyAgICAgICAgaWYg
KHRoaXMuX2JyZWFrcG9pbnQucmVtb3ZhYmxlKSB7CisgICAgICAgICAgICB0aGlzLl9icmVha3Bv
aW50LnJlbW92ZSgpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIApAQCAt
MTM0LDQxICsxMjksMjcgQEAgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xhc3MgQnJlYWtw
b2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGUKICAgICAgICAgc3VwZXIu
cG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwgZXZlbnQpOwogICAgIH0KIAotICAgIC8v
IFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF91cGRhdGVUaXRsZXMoKQotICAgIHsK
LSAgICAgICAgdmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX2JyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uOworICAgIGdldCBsaXN0ZW5lclNldCgpIHsgcmV0dXJuIHRoaXMuX2xpc3Rl
bmVyU2V0OyB9CiAKLSAgICAgICAgdmFyIGRpc3BsYXlMaW5lTnVtYmVyID0gc291cmNlQ29kZUxv
Y2F0aW9uLmRpc3BsYXlMaW5lTnVtYmVyOwotICAgICAgICB2YXIgZGlzcGxheUNvbHVtbk51bWJl
ciA9IHNvdXJjZUNvZGVMb2NhdGlvbi5kaXNwbGF5Q29sdW1uTnVtYmVyOwotICAgICAgICBpZiAo
ZGlzcGxheUNvbHVtbk51bWJlciA+IDApCi0gICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJ
LlVJU3RyaW5nKCJMaW5lICVkOiVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSwgZGlz
cGxheUNvbHVtbk51bWJlciArIDEpOyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUgYW5kIGNvbHVt
biBudW1iZXJzIGFyZSAxLWJhc2VkLgotICAgICAgICBlbHNlCi0gICAgICAgICAgICB0aGlzLm1h
aW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVy
ICsgMSk7IC8vIFRoZSB1c2VyIHZpc2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC4KLQotICAg
ICAgICBpZiAoc291cmNlQ29kZUxvY2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKLSAgICAg
ICAgICAgIHRoaXMuc3VidGl0bGUgPSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkTG9jYXRp
b25TdHJpbmcoKTsKLQotICAgICAgICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5oYXNGb3Jt
YXR0ZWRMb2NhdGlvbigpKQotICAgICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNs
YXNzTGlzdC5hZGQoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5
bGVDbGFzc05hbWUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHRoaXMuc3Vi
dGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZv
cm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05hbWUpOwotCi0gICAgICAgICAgICB0aGlzLnRvb2x0
aXAgPSB0aGlzLm1haW5UaXRsZSArICIgXHUyMDE0ICIgKyBXSS5VSVN0cmluZygib3JpZ2luYWxs
eSAlcyIpLmZvcm1hdChzb3VyY2VDb2RlTG9jYXRpb24ub3JpZ2luYWxMb2NhdGlvblN0cmluZygp
KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIF91cGRhdGVTdGF0dXMoKQorICAgIHVwZGF0ZVN0
YXR1cygpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuc3RhdHVzKQogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUoV0kuQnJlYWtwb2lu
dFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlRGlzYWJsZWRTdHlsZUNsYXNzTmFtZSwgdGhpcy5fYnJl
YWtwb2ludC5kaXNhYmxlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dnbGUo
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVDbGFz
c05hbWUsIHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgdGhpcy5zdGF0
dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VS
ZXNvbHZlZFN0eWxlQ2xhc3NOYW1lLCB0aGlzLl9icmVha3BvaW50LnJlc29sdmVkICYmIFdJLmRl
YnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBpZiAodGhpcy5fYnJl
YWtwb2ludC5lZGl0YWJsZSkKKyAgICAgICAgICAgIHRoaXMuc3RhdHVzLmNsYXNzTGlzdC50b2dn
bGUoV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlQXV0b0NvbnRpbnVlU3R5bGVD
bGFzc05hbWUsIHRoaXMuX2JyZWFrcG9pbnQuYXV0b0NvbnRpbnVlKTsKICAgICB9CiAKKyAgICB1
cGRhdGVUaXRsZXMoKQorICAgIHsKKyAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2Vz
IGlmIG5lZWRlZC4KKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKICAgICBfYWRkUHJvYmVTZXQo
cHJvYmVTZXQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5j
ZW9mIFdJLlByb2JlU2V0KTsKQEAgLTIzMCwxNyArMjExLDYgQEAgV0kuQnJlYWtwb2ludFRyZWVF
bGVtZW50ID0gY2xhc3MgQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRy
ZWVFbGUKICAgICAgICAgfSwgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0
ZWRBbmltYXRpb25EdXJhdGlvbik7CiAgICAgfQogCi0gICAgX2JyZWFrcG9pbnRMb2NhdGlvbkRp
ZENoYW5nZShldmVudCkKLSAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGV2ZW50LnRhcmdl
dCA9PT0gdGhpcy5fYnJlYWtwb2ludCk7Ci0KLSAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQgaGFz
IGEgbmV3IGRpc3BsYXkgU291cmNlQ29kZS4gVGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMsIGFu
ZCBvbmRldGFjaCgpIHdpbGwgY2xlYXIgbGlzdGVuZXJzLgotICAgICAgICBpZiAoZXZlbnQuZGF0
YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0gdGhpcy5fYnJlYWtwb2ludC5kaXNwbGF5U291cmNl
Q29kZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl91cGRhdGVUaXRsZXMo
KTsKLSAgICB9Ci0KICAgICBfc3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duKGV2ZW50KQogICAg
IHsKICAgICAgICAgLy8gVG8gcHJldmVudCB0aGUgdHJlZSBlbGVtZW50IGZyb20gc2VsZWN0aW5n
LgpAQCAtMjUzLDEyICsyMjMsOSBAQCBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBC
cmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZQogICAgIH0KIH07
CiAKLVdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5HZW5lcmljTGluZUljb25TdHlsZUNsYXNzTmFt
ZSA9ICJicmVha3BvaW50LWdlbmVyaWMtbGluZS1pY29uIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxl
bWVudC5TdGF0dXNJbWFnZUVsZW1lbnRTdHlsZUNsYXNzTmFtZSA9ICJzdGF0dXMtaW1hZ2UiOwot
V0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LlN0YXR1c0ltYWdlUmVzb2x2ZWRTdHlsZUNsYXNzTmFt
ZSA9ICJyZXNvbHZlZCI7CiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VBdXRv
Q29udGludWVTdHlsZUNsYXNzTmFtZSA9ICJhdXRvLWNvbnRpbnVlIjsKIFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUgPSAiZGlzYWJsZWQi
OwotV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50LkZvcm1hdHRlZExvY2F0aW9uU3R5bGVDbGFzc05h
bWUgPSAiZm9ybWF0dGVkLWxvY2F0aW9uIjsKIFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5Qcm9i
ZURhdGFVcGRhdGVkU3R5bGVDbGFzc05hbWUgPSAiZGF0YS11cGRhdGVkIjsKIAogV0kuQnJlYWtw
b2ludFRyZWVFbGVtZW50LlByb2JlRGF0YVVwZGF0ZWRBbmltYXRpb25EdXJhdGlvbiA9IDQwMDsg
Ly8gbWlsbGlzZWNvbmRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9DYWxsRnJhbWVUcmVlRWxlbWVudC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCmluZGV4IDc1
Y2M3ZDQ2YTZhODZiOGU2YTQ0MmJkYTAxYjk5YzUyZGQ5NGIyZDUuLjU3YzNjNDFiZjU0MDgyMzBk
NzY1ODVhZTBmM2Y2OGZlYjgyODRiNTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50LmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NhbGxGcmFtZVRyZWVFbGVtZW50
LmpzCkBAIC0xMDcsNiArMTA3LDE0IEBAIFdJLkNhbGxGcmFtZVRyZWVFbGVtZW50ID0gY2xhc3Mg
Q2FsbEZyYW1lVHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5HZW5lcmFsVHJlZUVsZW1lCiAgICAgICAg
IHRoaXMuX3VwZGF0ZVN0YXR1cygpOwogICAgIH0KIAorICAgIHBvcHVsYXRlQ29udGV4dE1lbnUo
Y29udGV4dE1lbnUsIGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2NhbGxGcmFtZS5z
b3VyY2VDb2RlTG9jYXRpb24pCisgICAgICAgICAgICBXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1z
Rm9yU291cmNlQ29kZShjb250ZXh0TWVudSwgdGhpcy5fY2FsbEZyYW1lLnNvdXJjZUNvZGVMb2Nh
dGlvbik7CisKKyAgICAgICAgc3VwZXIucG9wdWxhdGVDb250ZXh0TWVudShjb250ZXh0TWVudSwg
ZXZlbnQpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF91cGRhdGVTdGF0dXMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlldy5qcwppbmRleCAyOTZjMmE1NDIzYTBmNjkxZWFjN2QyZDBlOTM2MDBmNTE1NGYw
ZGU4Li4xOWY2NGJkMzk4ZmUxNWQyOTAxZWMyZDgyNzEzOGEyMTYyNGIxN2M5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5q
cworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
Vmlldy5qcwpAQCAtOTMsNyArOTMsNyBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuTWVkaWFU
aW1lbGluZVZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAg
fQogCi0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9p
bnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsKKyAg
ICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1ZU1lc3NhZ2UpIHsK
ICAgICAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24pCiAg
ICAgICAgICAgICAgICAgcmV0dXJuIFdJLkNvbnRlbnRWaWV3LmNyZWF0ZUZyb21SZXByZXNlbnRl
ZE9iamVjdChyZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJj
ZUNvZGUsIGV4dHJhQXJndW1lbnRzKTsKICAgICAgICAgfQpAQCAtMjM0LDcgKzIzNCw3IEBAIFdJ
LkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAg
IGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkZyYW1lKQogICAgICAgICAgICAg
cmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0Lm1haW5SZXNvdXJjZTsKIAotICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50IHx8IHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVNZXNzYWdlKSB7CisgICAgICAgIGlmIChyZXByZXNlbnRl
ZE9iamVjdCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50IHx8IHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuSXNzdWVNZXNzYWdlKSB7CiAgICAgICAgICAgICBpZiAocmVw
cmVzZW50ZWRPYmplY3Quc291cmNlQ29kZUxvY2F0aW9uKQogICAgICAgICAgICAgICAgIHJldHVy
biByZXByZXNlbnRlZE9iamVjdC5zb3VyY2VDb2RlTG9jYXRpb24uZGlzcGxheVNvdXJjZUNvZGU7
CiAgICAgICAgIH0KQEAgLTI3OSw3ICsyNzksNyBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg
ICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlRpbWVsaW5lKQogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLkJyZWFrcG9pbnQgfHwgcmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Jc3N1
ZU1lc3NhZ2UpCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkph
dmFTY3JpcHRCcmVha3BvaW50IHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuSXNz
dWVNZXNzYWdlKQogICAgICAgICAgICAgcmV0dXJuIHJlcHJlc2VudGVkT2JqZWN0LnNvdXJjZUNv
ZGVMb2NhdGlvbjsKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0ku
TG9jYWxSZXNvdXJjZU92ZXJyaWRlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZXh0TWVu
dVV0aWxpdGllcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCmluZGV4IGQwYjQwNTJkMzBkZWRjYWE5MjU2YmNmODVm
NDEyYzEzMWVkZjY3MjUuLmVjMmNjNjQ1ZWY5MzBiOWE3ODE4MGE3NDk1Y2ZhNjhiZTVkNjQwOTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRleHRNZW51VXRpbGl0aWVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbnRleHRNZW51VXRpbGl0aWVzLmpzCkBAIC0xMTgsNyArMTE4LDcgQEAg
V0kuYXBwZW5kQ29udGV4dE1lbnVJdGVtc0ZvclNvdXJjZUNvZGUgPSBmdW5jdGlvbihjb250ZXh0
TWVudSwgc291cmNlQ29kZU9yTG9jYXQKICAgICAgICAgICAgIH0pOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRlbShXSS5VSVN0cmluZygiQWRkIEJy
ZWFrcG9pbnQiKSwgKCkgPT4gewotICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5h
ZGRCcmVha3BvaW50KG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKSk7CisgICAgICAgICAgICAg
ICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQobmV3IFdJLkphdmFTY3JpcHRCcmVh
a3BvaW50KGxvY2F0aW9uKSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfQogICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJy
ZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCmluZGV4IDZiMzNiMmNlM2Mx
ZjJlZTRlYWExM2M4M2FmYTM0YWRkYmYwYTQ0NzYuLjE3NGQyMmEzNzAwZDkxOGJmOWJiZDYxZjQ1
YWI5ZDMwNTVjMDg3ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LmNzcwpAQCAtMjMsMjggKzIzLDI4IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCiAgKi8KIAotLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLXN1YnRyZWUtbW9kaWZp
ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50
LmRvbS5zdWJ0cmVlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29udGVudDog
dXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRTdWJ0cmVlTW9kaWZpZWQt
bGlnaHQpOwogfQogCi0uYnJlYWtwb2ludC5kb20uYnJlYWtwb2ludC1mb3ItYXR0cmlidXRlLW1v
ZGlmaWVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtw
b2ludC5kb20uYXR0cmlidXRlLW1vZGlmaWVkOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRBdHRyaWJ1dGVN
b2RpZmllZC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1ub2Rl
LXJlbW92ZWQ6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVh
a3BvaW50LmRvbS5ub2RlLXJlbW92ZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9NQnJlYWtwb2ludE5vZGVSZW1vdmVkLWxp
Z2h0KTsKIH0KIAogQG1lZGlhIChwcmVmZXJzLWNvbG9yLXNjaGVtZTogZGFyaykgewotICAgIC5i
cmVha3BvaW50LmRvbS5icmVha3BvaW50LWZvci1zdWJ0cmVlLW1vZGlmaWVkOm5vdCguYnJlYWtw
b2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVtLmJyZWFrcG9pbnQuZG9tLnN1YnRy
ZWUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4u
L0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRTdWJ0cmVlTW9kaWZpZWQtZGFyayk7
CiAgICAgfQogCi0gICAgLmJyZWFrcG9pbnQuZG9tLmJyZWFrcG9pbnQtZm9yLWF0dHJpYnV0ZS1t
b2RpZmllZDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKyAgICAuaXRlbS5i
cmVha3BvaW50LmRvbS5hdHRyaWJ1dGUtbW9kaWZpZWQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAg
ICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RPTUJyZWFrcG9pbnRB
dHRyaWJ1dGVNb2RpZmllZC1kYXJrKTsKICAgICB9CiAKLSAgICAuYnJlYWtwb2ludC5kb20uYnJl
YWtwb2ludC1mb3Itbm9kZS1yZW1vdmVkOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmlj
b24geworICAgIC5pdGVtLmJyZWFrcG9pbnQuZG9tLm5vZGUtcmVtb3ZlZDpub3QoLnBhdXNlZCkg
Lmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRE9N
QnJlYWtwb2ludE5vZGVSZW1vdmVkLWRhcmspOwogICAgIH0KLX0KXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01CcmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5k
ZXggYWQ2YmIxYTE0OTIyMmNjM2Q2NzFiNmZkYmUyYzQ0ODJjMGQ1MGI2Ny4uNjNlNjE2YTkxN2Ey
MDYwMzc3YjNmNWFlMDRhZmMwNmIwM2I5N2MwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTUJyZWFrcG9p
bnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMjYgKzIzLDIwIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50ID0gY2xh
c3MgRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRyZWVFbGVtZW50
CitXSS5ET01CcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBET01CcmVha3BvaW50VHJlZUVs
ZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQKIHsKLSAgICBjb25zdHJ1Y3Rv
cihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAgICBjb25zdHJ1Y3Rvcihi
cmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30pCiAgICAgewogICAgICAgICBjb25z
b2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuRE9NQnJlYWtwb2ludCk7CiAKLSAg
ICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJyZWFrcG9pbnQiLCAiZG9tIiwgYGJyZWFrcG9pbnQt
Zm9yLSR7YnJlYWtwb2ludC50eXBlfWBdOwotICAgICAgICBpZiAoY2xhc3NOYW1lKQotICAgICAg
ICAgICAgY2xhc3NOYW1lcy5wdXNoKGNsYXNzTmFtZSk7CisgICAgICAgIGlmICghQXJyYXkuaXNB
cnJheShjbGFzc05hbWVzKSkKKyAgICAgICAgICAgIGNsYXNzTmFtZXMgPSBbXTsKKyAgICAgICAg
Y2xhc3NOYW1lcy5wdXNoKCJkb20iLCBicmVha3BvaW50LnR5cGUpOwogCiAgICAgICAgIGlmICgh
dGl0bGUpCiAgICAgICAgICAgICB0aXRsZSA9IFdJLkRPTUJyZWFrcG9pbnRUcmVlRWxlbWVudC5k
aXNwbGF5TmFtZUZvclR5cGUoYnJlYWtwb2ludC50eXBlKTsKIAotICAgICAgICBjb25zdCBzdWJ0
aXRsZSA9IG51bGw7Ci0gICAgICAgIHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwg
YnJlYWtwb2ludCk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxpdGllcy51
c2VTVkdTeW1ib2woIkltYWdlcy9CcmVha3BvaW50LnN2ZyIpOwotICAgICAgICB0aGlzLnN0YXR1
cy5jbGFzc05hbWUgPSBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50
U3R5bGVDbGFzc05hbWU7Ci0KLSAgICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkg
PSB0cnVlOworICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsK
ICAgICB9CiAKICAgICAvLyBTdGF0aWMKQEAgLTYxLDEwOCArNTUsNCBAQCBXSS5ET01CcmVha3Bv
aW50VHJlZUVsZW1lbnQgPSBjbGFzcyBET01CcmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBX
SS5HZW5lcmFsVAogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KICAgICB9Ci0K
LSAgICAvLyBQcm90ZWN0ZWQKLQotICAgIG9uYXR0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVy
Lm9uYXR0YWNoKCk7Ci0KLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdJLkRPTUJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZUNoYW5nZWQsIHRoaXMu
X3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5CcmVha3BvaW50c0VuYWJsZWREaWRD
aGFuZ2UsIHRoaXMuX3VwZGF0ZVN0YXR1cywgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fYm91bmRT
dGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gdGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tl
ZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3Vz
ZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkLmJpbmQodGhpcyk7Ci0gICAgICAg
IHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gdGhpcy5fc3RhdHVzSW1h
Z2VFbGVtZW50TW91c2VEb3duLmJpbmQodGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuYWRk
RXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNr
ZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMu
X2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFk
ZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50
TW91c2VEb3duKTsKLQotICAgICAgICB0aGlzLl91cGRhdGVTdGF0dXMoKTsKLSAgICB9Ci0KLSAg
ICBvbmRldGFjaCgpCi0gICAgewotICAgICAgICBzdXBlci5vbmRldGFjaCgpOwotCi0gICAgICAg
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0
aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIobnVs
bCwgbnVsbCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5l
cigiY2xpY2siLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQpOwotICAgICAg
ICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJmb2N1cyIsIHRoaXMuX2JvdW5kU3Rh
dHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCk7Ci0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50
TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VE
b3duKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQgPSBu
dWxsOwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQgPSBudWxs
OwotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IG51bGw7
Ci0gICAgfQotCi0gICAgb25kZWxldGUoKQotICAgIHsKLSAgICAgICAgLy8gV2Ugc2V0IHRoaXMg
ZmxhZyBzbyB0aGF0IFRyZWVPdXRsaW5lcyB0aGF0IHdpbGwgcmVtb3ZlIHRoaXMKLSAgICAgICAg
Ly8gQnJlYWtwb2ludFRyZWVFbGVtZW50IHdpbGwga25vdyB3aGV0aGVyIGl0IHdhcyBkZWxldGVk
IGZyb20KLSAgICAgICAgLy8gd2l0aGluIHRoZSBUcmVlT3V0bGluZSBvciBmcm9tIG91dHNpZGUg
aXQgKGUuZy4gVGV4dEVkaXRvcikuCi0gICAgICAgIHRoaXMuX19kZWxldGVkVmlhRGVsZXRlS2V5
Ym9hcmRTaG9ydGN1dCA9IHRydWU7Ci0KLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJl
bW92ZURPTUJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAgICB0aGlzLl90
b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9u
c3BhY2UoKQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRN
ZW51LCBldmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXByZXNl
bnRlZE9iamVjdDsKLSAgICAgICAgbGV0IGxhYmVsID0gYnJlYWtwb2ludC5kaXNhYmxlZCA/IFdJ
LlVJU3RyaW5nKCJFbmFibGUgQnJlYWtwb2ludCIpIDogV0kuVUlTdHJpbmcoIkRpc2FibGUgQnJl
YWtwb2ludCIpOwotICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxhYmVsLCB0aGlzLl90
b2dnbGVCcmVha3BvaW50LmJpbmQodGhpcykpOwotCi0gICAgICAgIGNvbnRleHRNZW51LmFwcGVu
ZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSBCcmVha3BvaW50IiksIGZ1bmN0aW9uKCkgewotICAg
ICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZURPTUJyZWFrcG9pbnQoYnJlYWtw
b2ludCk7Ci0gICAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9zdGF0
dXNJbWFnZUVsZW1lbnRDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xl
QnJlYWtwb2ludCgpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKGV2
ZW50KQotICAgIHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIG91dGxpbmUgZm9jdXMuCi0gICAg
ICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVs
ZW1lbnRNb3VzZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgZWxl
bWVudCBzZWxlY3Rpb24uCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0K
LQotICAgIF90b2dnbGVCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QuZGlzYWJsZWQgPSAhdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZDsKLSAg
ICB9Ci0KLSAgICBfdXBkYXRlU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5zdGF0
dXMpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0
LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxl
Q2xhc3NOYW1lLCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkKTsKLSAgICAgICAgdGhp
cy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVz
SW1hZ2VSZXNvbHZlZFN0eWxlQ2xhc3NOYW1lLCBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2lu
dHNFbmFibGVkKTsKLSAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRE9NVHJlZUNvbnRlbnRWaWV3LmpzCmluZGV4
IDc5OWY2OGNjYjYyZGEwYmE1M2JkYTA0OTliYWIyMWZmMTExNmRkZTEuLmY1M2IxZjQ1NDVmYTg2
ZDhiMWMyMmU0NWJmNmQxM2UzZGVkNjQ4MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RPTVRyZWVDb250ZW50Vmlldy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9ET01UcmVlQ29udGVudFZpZXcu
anMKQEAgLTk1LDcgKzk1LDcgQEAgV0kuRE9NVHJlZUNvbnRlbnRWaWV3ID0gY2xhc3MgRE9NVHJl
ZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIFdJLmRvbURl
YnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVu
dC5ET01CcmVha3BvaW50QWRkZWQsIHRoaXMuX2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwg
dGhpcyk7CiAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5l
cihXSS5ET01EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuRE9NQnJlYWtwb2ludFJlbW92ZWQsIHRoaXMu
X2RvbUJyZWFrcG9pbnRBZGRlZE9yUmVtb3ZlZCwgdGhpcyk7CiAKLSAgICAgICAgICAgIFdJLkRP
TUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50LkRpc2Fi
bGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RGlzYWJsZWRTdGF0ZUNo
YW5nZWQsIHRoaXMpOworICAgICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5faGFu
ZGxlRE9NQnJlYWtwb2ludERpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzKTsKICAgICAgICAgICAg
IFdJLkRPTUJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5ET01CcmVha3BvaW50LkV2ZW50
LkRPTU5vZGVDaGFuZ2VkLCB0aGlzLl9oYW5kbGVET01CcmVha3BvaW50RE9NTm9kZUNoYW5nZWQs
IHRoaXMpOwogCiAgICAgICAgICAgICB0aGlzLl9icmVha3BvaW50c0VuYWJsZWREaWRDaGFuZ2Uo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcwppbmRleCA0
ZmMzYzRhNmZkY2Y2ZjkxNjQzZGJhZTg2ZDIyMjYyZjUxZjEzMjUzLi4xNjFjZWRjZjEyN2U4ZjJi
YjM1ZTUxZjY2ZmYzNDE5MWQzNGU2M2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3Bv
aW50VHJlZUVsZW1lbnQuY3NzCkBAIC0yMywzNiArMjMsMzYgQEAKICAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0uYnJlYWtwb2ludC5ldmVudC5icmVha3BvaW50LWZv
ci1hbmltYXRpb24tZnJhbWU6bm90KC5icmVha3BvaW50LXBhdXNlZC1pY29uKSAuaWNvbiB7Cisu
aXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBhdXNlZCkgLmljb24g
ewogICAgIGNvbnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9p
bnRBbmltYXRpb25GcmFtZS1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9p
bnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0
ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRlcnZhbDpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNv
bnRlbnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRJbnRlcnZh
bC1saWdodCk7CiB9CiAKLS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVy
Om5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworLml0ZW0uYnJlYWtwb2ludC5l
dmVudC5saXN0ZW5lcjpub3QoLnBhdXNlZCkgLmljb24gewogICAgIGNvbnRlbnQ6IHVybCguLi9J
bWFnZXMvVHlwZUljb25zLnN2ZyNFdmVudEJyZWFrcG9pbnRMaXN0ZW5lci1saWdodCk7CiB9CiAK
LS5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3BvaW50
LXBhdXNlZC1pY29uKSAuaWNvbiB7CisuaXRlbS5icmVha3BvaW50LmV2ZW50LnRpbWVvdXQ6bm90
KC5wYXVzZWQpIC5pY29uIHsKICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRXZlbnRCcmVha3BvaW50VGltZW91dC1saWdodCk7CiB9CiAKIEBtZWRpYShwcmVmZXJzLWNv
bG9yLXNjaGVtZTogZGFyaykgewotICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9y
LWFuaW1hdGlvbi1mcmFtZTpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5pY29uIHsKKyAg
ICAuaXRlbS5icmVha3BvaW50LmV2ZW50LmFuaW1hdGlvbi1mcmFtZTpub3QoLnBhdXNlZCkgLmlj
b24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXZlbnRC
cmVha3BvaW50QW5pbWF0aW9uRnJhbWUtZGFyayk7CiAgICAgfQotICAgIAotICAgIC5icmVha3Bv
aW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWludGVydmFsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQt
aWNvbikgLmljb24geworCisgICAgLml0ZW0uYnJlYWtwb2ludC5ldmVudC5pbnRlcnZhbDpub3Qo
LnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29u
cy5zdmcjRXZlbnRCcmVha3BvaW50SW50ZXJ2YWwtZGFyayk7CiAgICAgfQotICAgIAotICAgIC5i
cmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLWxpc3RlbmVyOm5vdCguYnJlYWtwb2ludC1w
YXVzZWQtaWNvbikgLmljb24geworCisgICAgLml0ZW0uYnJlYWtwb2ludC5ldmVudC5saXN0ZW5l
cjpub3QoLnBhdXNlZCkgLmljb24gewogICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5
cGVJY29ucy5zdmcjRXZlbnRCcmVha3BvaW50TGlzdGVuZXItZGFyayk7CiAgICAgfQotICAgIAot
ICAgIC5icmVha3BvaW50LmV2ZW50LmJyZWFrcG9pbnQtZm9yLXRpbWVvdXQ6bm90KC5icmVha3Bv
aW50LXBhdXNlZC1pY29uKSAuaWNvbiB7CisKKyAgICAuaXRlbS5icmVha3BvaW50LmV2ZW50LnRp
bWVvdXQ6bm90KC5wYXVzZWQpIC5pY29uIHsKICAgICAgICAgY29udGVudDogdXJsKC4uL0ltYWdl
cy9UeXBlSWNvbnMuc3ZnI0V2ZW50QnJlYWtwb2ludFRpbWVvdXQtZGFyayk7Ci0gICAgfSAgIAor
ICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL0V2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMKaW5k
ZXggZTBiZmViZjExZDkxNjAyZDQ5OTBmMjdiMzg3YWFlOWJiMGFjMWQ4OS4uOWNmNGE3ZDViOWI0
YjM5NzgzYzlmY2RhZjlkZDU4YzQ2ODVmZWY5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRCcmVh
a3BvaW50VHJlZUVsZW1lbnQuanMKQEAgLTIzLDEzNiArMjMsMTkgQEAKICAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi1XSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVu
dCA9IGNsYXNzIEV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2VuZXJhbFRy
ZWVFbGVtZW50CitXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIEV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50CiB7Ci0g
ICAgY29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZSwgdGl0bGV9ID0ge30pCisgICAg
Y29uc3RydWN0b3IoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxlfSA9IHt9KQogICAgIHsK
ICAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkV2ZW50QnJl
YWtwb2ludCk7CiAKLSAgICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJyZWFrcG9pbnQiLCAiZXZl
bnQiLCBgYnJlYWtwb2ludC1mb3ItJHticmVha3BvaW50LnR5cGV9YF07Ci0gICAgICAgIGlmIChj
bGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2goY2xhc3NOYW1lKTsKKyAgICAg
ICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1l
cyA9IFtdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goImV2ZW50IiwgYnJlYWtwb2ludC50eXBl
KTsKIAogICAgICAgICBpZiAoIXRpdGxlKQogICAgICAgICAgICAgdGl0bGUgPSBicmVha3BvaW50
LmV2ZW50TmFtZTsKIAotICAgICAgICBjb25zdCBzdWJ0aXRsZSA9IG51bGw7Ci0gICAgICAgIHN1
cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAgICAg
dGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2woIkltYWdlcy9CcmVh
a3BvaW50LnN2ZyIpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc05hbWUgPSBXSS5CcmVha3Bv
aW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0KLSAgICAg
ICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotICAgIH0KLQotICAgIC8v
IFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25hdHRh
Y2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIo
V0kuRXZlbnRCcmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVDaGFuZ2VkLCB0aGlzLl91cGRh
dGVTdGF0dXMsIHRoaXMpOwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0
ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuQnJlYWtwb2ludHNFbmFibGVkRGlkQ2hhbmdl
LCB0aGlzLl91cGRhdGVTdGF0dXMsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVz
SW1hZ2VFbGVtZW50Q2xpY2tlZCA9IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQuYmlu
ZCh0aGlzKTsKLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0g
dGhpcy5fc3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZC5iaW5kKHRoaXMpOwotICAgICAgICB0aGlz
Ll9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93biA9IHRoaXMuX3N0YXR1c0ltYWdlRWxl
bWVudE1vdXNlRG93bi5iaW5kKHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50
TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsK
LSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3Vu
ZFN0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNl
RG93bik7Ci0KLSAgICAgICAgdGhpcy5fdXBkYXRlU3RhdHVzKCk7Ci0gICAgfQotCi0gICAgb25k
ZXRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25kZXRhY2goKTsKLQotICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7
Ci0gICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51
bGwsIHRoaXMpOwotCi0gICAgICAgIHRoaXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImNs
aWNrIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkKTsKLSAgICAgICAgdGhp
cy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0ZW5lcigiZm9jdXMiLCB0aGlzLl9ib3VuZFN0YXR1c0lt
YWdlRWxlbWVudEZvY3VzZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3Rl
bmVyKCJtb3VzZWRvd24iLCB0aGlzLl9ib3VuZFN0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bik7
Ci0KLSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkID0gbnVsbDsK
LSAgICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkID0gbnVsbDsKLSAg
ICAgICAgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSBudWxsOwotICAg
IH0KLQotICAgIG9uZGVsZXRlKCkKLSAgICB7Ci0gICAgICAgIC8vIFdlIHNldCB0aGlzIGZsYWcg
c28gdGhhdCBUcmVlT3V0bGluZXMgdGhhdCB3aWxsIHJlbW92ZSB0aGlzCi0gICAgICAgIC8vIEJy
ZWFrcG9pbnRUcmVlRWxlbWVudCB3aWxsIGtub3cgd2hldGhlciBpdCB3YXMgZGVsZXRlZCBmcm9t
Ci0gICAgICAgIC8vIHdpdGhpbiB0aGUgVHJlZU91dGxpbmUgb3IgZnJvbSBvdXRzaWRlIGl0IChl
LmcuIFRleHRFZGl0b3IpLgotICAgICAgICB0aGlzLl9fZGVsZXRlZFZpYURlbGV0ZUtleWJvYXJk
U2hvcnRjdXQgPSB0cnVlOwotCi0gICAgICAgIGlmICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmV2
ZW50TGlzdGVuZXIpCi0gICAgICAgICAgICBXSS5kb21NYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyKHRoaXMucmVwcmVzZW50ZWRPYmplY3QuZXZlbnRMaXN0ZW5lcik7Ci0g
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dEJyZWFrcG9pbnQodGhpcy5yZXByZXNlbnRlZE9iamVjdCk7Ci0KLSAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgfQotCi0gICAgb25lbnRlcigpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVC
cmVha3BvaW50KCk7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIG9uc3BhY2Uo
KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2ludCgpOwotICAgICAgICByZXR1
cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwb3B1bGF0ZUNvbnRleHRNZW51KGNvbnRleHRNZW51LCBl
dmVudCkKLSAgICB7Ci0gICAgICAgIGxldCBicmVha3BvaW50ID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdDsKLQotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVkID8gV0kuVUlT
dHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3Bv
aW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRoaXMuX3RvZ2ds
ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAgICAgICAgICAg
aWYgKGJyZWFrcG9pbnQuZXZlbnRMaXN0ZW5lcikKLSAgICAgICAgICAgICAgICBXSS5kb21NYW5h
Z2VyLnJlbW92ZUJyZWFrcG9pbnRGb3JFdmVudExpc3RlbmVyKGJyZWFrcG9pbnQuZXZlbnRMaXN0
ZW5lcik7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAgfSk7Ci0g
ICAgfQotCi0gICAgLy8gUHJpdmF0ZQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudENsaWNrZWQo
ZXZlbnQpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgfQot
Ci0gICAgX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQoZXZlbnQpCi0gICAgewotICAgICAgICAv
LyBQcmV2ZW50IHRyZWUgb3V0bGluZSBmb2N1cy4KLSAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0
aW9uKCk7Ci0gICAgfQotCi0gICAgX3N0YXR1c0ltYWdlRWxlbWVudE1vdXNlRG93bihldmVudCkK
LSAgICB7Ci0gICAgICAgIC8vIFByZXZlbnQgdHJlZSBlbGVtZW50IHNlbGVjdGlvbi4KLSAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7Ci0gICAgfQotCi0gICAgX3RvZ2dsZUJyZWFrcG9p
bnQoKQotICAgIHsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZCA9ICF0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkOwotICAgIH0KLQotICAgIF91cGRhdGVTdGF0
dXMoKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykKLSAgICAgICAgICAgIHJldHVy
bjsKLQotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKFdJLkJyZWFrcG9pbnRU
cmVlRWxlbWVudC5TdGF0dXNJbWFnZURpc2FibGVkU3R5bGVDbGFzc05hbWUsIHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuZGlzYWJsZWQpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9n
Z2xlKFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudC5TdGF0dXNJbWFnZVJlc29sdmVkU3R5bGVDbGFz
c05hbWUsIFdJLmRlYnVnZ2VyTWFuYWdlci5icmVha3BvaW50c0VuYWJsZWQpOworICAgICAgICBz
dXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsKICAgICB9CiB9OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0
ZW5lclNlY3Rpb25Hcm91cC5jc3MgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcwppbmRleCA0NzY1NzUyZTJmMDAz
Y2NlNDNjNDlhMmI2ZTdjYWRmZGFjMjk4ZjI5Li5jZDVkZmZiNGU3ZmEzYjY0YjlmMThmNmRiZDhk
MDZkYmE5ODdmYjNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmNzcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3Vw
LmNzcwpAQCAtMzQsMyArMzQsMTEgQEAKICAgICBoZWlnaHQ6IDEycHg7CiAgICAgbWFyZ2luOiAw
OwogfQorCisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNo
ZWNrYm94Il0gKyAuZ28tdG8tYXJyb3cgeworICAgIHZlcnRpY2FsLWFsaWduOiAtMnB4OworfQor
CisuZXZlbnQtbGlzdGVuZXItc2VjdGlvbiA+IC5jb250ZW50IGlucHV0W3R5cGU9ImNoZWNrYm94
Il06bm90KDpjaGVja2VkKSArIC5nby10by1hcnJvdyB7CisgICAgZGlzcGxheTogbm9uZTsKK30K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0V2
ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwLmpzCmluZGV4IDY4NmY5Zjc5
NWZhZjE4OTBjNmIwOWNlODAzNTgwYWNiNjdjOWI1YjUuLmVmMWJhMzViYzNiN2I5YWU5Y2EzMDc2
OGMwODQ4NzUzODlkYTZmMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0V2ZW50TGlzdGVuZXJTZWN0aW9uR3JvdXAuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRXZlbnRMaXN0ZW5lclNlY3Rpb25H
cm91cC5qcwpAQCAtNzIsNyArNzIsOSBAQCBXSS5FdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwID0g
Y2xhc3MgRXZlbnRMaXN0ZW5lclNlY3Rpb25Hcm91cCBleHRlbmRzIFdJLkRldGFpbAogICAgICAg
ICAgICAgfQogCiAgICAgICAgICAgICBpZiAoV0kuRE9NTWFuYWdlci5zdXBwb3J0c0V2ZW50TGlz
dGVuZXJCcmVha3BvaW50cygpKSB7Ci0gICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQi
KTsKKyAgICAgICAgICAgICAgICBsZXQgdG9nZ2xlQ29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgic3BhbiIpOworCisgICAgICAgICAgICAgICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJy
ZWFrcG9pbnRUb2dnbGVFbGVtZW50ID0gdG9nZ2xlQ29udGFpbmVyLmFwcGVuZENoaWxkKGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImlucHV0IikpOwogICAgICAgICAgICAgICAgIHRoaXMuX2V2ZW50
TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVudC50eXBlID0gImNoZWNrYm94IjsKICAgICAg
ICAgICAgICAgICB0aGlzLl91cGRhdGVCcmVha3BvaW50VG9nZ2xlKCk7CiAgICAgICAgICAgICAg
ICAgdGhpcy5fZXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRUb2dnbGVFbGVtZW50LmFkZEV2ZW50TGlz
dGVuZXIoImNoYW5nZSIsIChldmVudCkgPT4gewpAQCAtODAsMTMgKzgyLDI2IEBAIFdJLkV2ZW50
TGlzdGVuZXJTZWN0aW9uR3JvdXAgPSBjbGFzcyBFdmVudExpc3RlbmVyU2VjdGlvbkdyb3VwIGV4
dGVuZHMgV0kuRGV0YWlsCiAgICAgICAgICAgICAgICAgICAgIHRoaXMuaGFzRXZlbnRMaXN0ZW5l
ckJyZWFrcG9pbnQgPSAhIXRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xlRWxlbWVu
dC5jaGVja2VkOwogICAgICAgICAgICAgICAgIH0pOwogCisgICAgICAgICAgICAgICAgaWYgKFdJ
LkRPTU1hbmFnZXIuc3VwcG9ydHNFdmVudExpc3RlbmVyQnJlYWtwb2ludENvbmZpZ3VyYXRpb24o
KSkgeworICAgICAgICAgICAgICAgICAgICBsZXQgcmV2ZWFsQnJlYWtwb2ludEdvVG9BcnJvdyA9
IHRvZ2dsZUNvbnRhaW5lci5hcHBlbmRDaGlsZChXSS5jcmVhdGVHb1RvQXJyb3dCdXR0b24oKSk7
CisgICAgICAgICAgICAgICAgICAgIHJldmVhbEJyZWFrcG9pbnRHb1RvQXJyb3cudGl0bGUgPSBX
SS5VSVN0cmluZygiUmV2ZWFsIGluIFNvdXJjZXMgVGFiIik7CisgICAgICAgICAgICAgICAgICAg
IHJldmVhbEJyZWFrcG9pbnRHb1RvQXJyb3cuYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuaGFz
RXZlbnRMaXN0ZW5lckJyZWFrcG9pbnQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBsZXQg
YnJlYWtwb2ludFRvU2VsZWN0ID0gV0kuZG9tTWFuYWdlci5icmVha3BvaW50Rm9yRXZlbnRMaXN0
ZW5lcklkKHRoaXMuX2V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnRUb1NlbGVjdCk7CisKKyAgICAg
ICAgICAgICAgICAgICAgICAgIFdJLnNob3dTb3VyY2VzVGFiKHticmVha3BvaW50VG9TZWxlY3R9
KTsKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAg
ICAgICAgICAgbGV0IHRvZ2dsZUxhYmVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIp
OwogICAgICAgICAgICAgICAgIHRvZ2dsZUxhYmVsLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmco
IkJyZWFrcG9pbnQiKTsKICAgICAgICAgICAgICAgICB0b2dnbGVMYWJlbC5hZGRFdmVudExpc3Rl
bmVyKCJjbGljayIsIChldmVudCkgPT4gewogICAgICAgICAgICAgICAgICAgICB0aGlzLl9ldmVu
dExpc3RlbmVyQnJlYWtwb2ludFRvZ2dsZUVsZW1lbnQuY2xpY2soKTsKICAgICAgICAgICAgICAg
ICB9KTsKIAotICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXcgV0kuRGV0YWlsc1NlY3Rpb25T
aW1wbGVSb3codG9nZ2xlTGFiZWwsIHRoaXMuX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50VG9nZ2xl
RWxlbWVudCkpOworICAgICAgICAgICAgICAgIHJvd3MucHVzaChuZXcgV0kuRGV0YWlsc1NlY3Rp
b25TaW1wbGVSb3codG9nZ2xlTGFiZWwsIHRvZ2dsZUNvbnRhaW5lcikpOwogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRU
cmVlRWxlbWVudC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjFlOWExMTllMDVhZGM3MTE1MWM1MmNkOGFjNDIy
ZDQ5MzM2ZGFlMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0phdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQuY3NzCkBAIC0w
LDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMjAgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisuaXRlbS5icmVha3BvaW50LmphdmFzY3Jp
cHQgLnN0YXR1cyA+IC5zdGF0dXMtaW1hZ2UgeworICAgIGZpbHRlcjogZ3JheXNjYWxlKCk7Cit9
CisKKy5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdCAuc3RhdHVzID4gLnN0YXR1cy1pbWFnZS5y
ZXNvbHZlZCB7CisgICAgZmlsdGVyOiBub25lOworfQorCitib2R5Om5vdCgud2luZG93LWluYWN0
aXZlLCAud2luZG93LWRvY2tlZC1pbmFjdGl2ZSkgLnRyZWUtb3V0bGluZTpmb2N1cy13aXRoaW4g
Lml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LnNlbGVjdGVkIC5zdGF0dXMgPiAuc3RhdHVzLWlt
YWdlLnJlc29sdmVkIHsKKyAgICBzdHJva2U6IHZhcigtLXNlbGVjdGVkLWZvcmVncm91bmQtY29s
b3IpOworfQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQgLnN1YnRpdGxlLmZvcm1hdHRl
ZC1sb2NhdGlvbiB7CisgICAgZm9udC1zdHlsZTogaXRhbGljOworfQorCisvKiBXaGVuIGFuaW1h
dGluZyBhIGxheWVyIG9uIHRvcCBvZiBhIHRyZWUgZWxlbWVudCdzIGljb24sIG1vdmUgdGhlIG1h
aW4KK2ljb24gdG8gdGhlIGljb24gZWxlbWVudCdzIGJhY2tncm91bmQgc28gYW5pbWF0aW9ucyBh
cmUgbGF5ZXJlZCBvbiB0b3AuICovCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQubGluZSAu
aWNvbiB7CisgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3Zn
I1Jlc3VsdExpbmUtbGlnaHQpOworICAgIGNvbnRlbnQ6ICcnOworfQorCisuaXRlbS5icmVha3Bv
aW50LmphdmFzY3JpcHQubGluZSAuaWNvbiA+IHNwYW4geworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICB0b3A6IDA7CisgICAgcmlnaHQ6IDA7CisgICAgYm90dG9tOiAwOworICAgIGxlZnQ6
IDA7CisKKyAgICBib3JkZXItcmFkaXVzOiA1MCU7CisgICAgdHJhbnNmb3JtOiBzY2FsZSgwKTsK
KyAgICB0cmFuc2l0aW9uOiBub25lOworICAgIGJhY2tncm91bmQtY29sb3I6IGhzbCgyMTYsIDMw
JSwgNDIlKTsKK30KKworLmRhdGEtdXBkYXRlZC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5s
aW5lIC5pY29uID4gc3BhbiB7CisgICAgYm9yZGVyLXJhZGl1czogMDsKKyAgICB0cmFuc2Zvcm06
IHNjYWxlKDAuODUpOworICAgIHRyYW5zaXRpb246IGFsbCAuNHMgZWFzZS1vdXQ7CisgICAgYmFj
a2dyb3VuZC1jb2xvcjogaHNsYSgyMTYsIDMwJSwgNDIlLCAwLjEpOworfQorCisuaXRlbS5icmVh
a3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uIHsKKyAgICBjb250ZW50
OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRGVidWdnZXJTdGF0ZW1lbnQtbGlnaHQpOwor
fQorCisuaXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZXhjZXB0aW9uIC5pY29uIHsKKyAgICBj
b250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjRXhjZXB0aW9uLWxpZ2h0KTsKK30K
KworLml0ZW0uYnJlYWtwb2ludC5qYXZhc2NyaXB0LmFzc2VydGlvbiAuaWNvbiB7CisgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0Fzc2VydGlvbi1saWdodCk7Cit9CisK
Ky5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmljb24geworICAgIGNvbnRl
bnQ6IHVybCguLi9JbWFnZXMvVHlwZUljb25zLnN2ZyNNaWNyb3Rhc2stbGlnaHQpOworfQorCitA
bWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7CisgICAgLml0ZW0uYnJlYWtwb2lu
dC5qYXZhc2NyaXB0LmxpbmUgLmljb24geworICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwo
Li4vSW1hZ2VzL1R5cGVJY29ucy5zdmcjUmVzdWx0TGluZS1kYXJrKTsKKyAgICB9CisKKyAgICAu
aXRlbS5icmVha3BvaW50LmphdmFzY3JpcHQuZGVidWdnZXItc3RhdGVtZW50IC5pY29uIHsKKyAg
ICAgICAgY29udGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI0RlYnVnZ2VyU3RhdGVt
ZW50LWRhcmspOworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNjcmlwdC5leGNl
cHRpb24gLmljb24geworICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5cGVJY29ucy5z
dmcjRXhjZXB0aW9uLWRhcmspOworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9pbnQuamF2YXNj
cmlwdC5hc3NlcnRpb24gLmljb24geworICAgICAgICBjb250ZW50OiB1cmwoLi4vSW1hZ2VzL1R5
cGVJY29ucy5zdmcjQXNzZXJ0aW9uLWRhcmspOworICAgIH0KKworICAgIC5pdGVtLmJyZWFrcG9p
bnQuamF2YXNjcmlwdC5taWNyb3Rhc2sgLmljb24geworICAgICAgICBjb250ZW50OiB1cmwoLi4v
SW1hZ2VzL1R5cGVJY29ucy5zdmcjTWljcm90YXNrLWRhcmspOworICAgIH0KK30KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50LmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9p
bnRUcmVlRWxlbWVudC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40ZTY0NmMyNWM5ZDYxZjc2MzljZjZhM2U1MWQ3
NGUxYzBjNjBiODE3Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAt
MCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzLTIwMTUgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRy
ZWVFbGVtZW50ID0gY2xhc3MgSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudCBleHRlbmRz
IFdJLkJyZWFrcG9pbnRUcmVlRWxlbWVudAoreworICAgIGNvbnN0cnVjdG9yKGJyZWFrcG9pbnQs
IHtjbGFzc05hbWVzLCB0aXRsZX0gPSB7fSkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCk7CisKKyAgICAg
ICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAgICAgICAgICAgY2xhc3NOYW1l
cyA9IFsibGluZSJdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goImphdmFzY3JpcHQiKTsKKwor
ICAgICAgICBzdXBlcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9KTsKKworICAgICAg
ICBpZiAoIXRpdGxlKQorICAgICAgICAgICAgdGhpcy5saXN0ZW5lclNldC5yZWdpc3RlcihicmVh
a3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5Mb2NhdGlvbkRpZENoYW5nZSwg
dGhpcy5fYnJlYWtwb2ludExvY2F0aW9uRGlkQ2hhbmdlKTsKKyAgICAgICAgdGhpcy5saXN0ZW5l
clNldC5yZWdpc3RlcihicmVha3BvaW50LCBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5S
ZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLnVwZGF0ZVN0YXR1cyk7CisgICAgfQorCisgICAg
Ly8gUHVibGljCisKKyAgICBnZXQgZmlsdGVyYWJsZURhdGEoKQorICAgIHsKKyAgICAgICAgcmV0
dXJuIHt0ZXh0OiBbdGhpcy5icmVha3BvaW50LmNvbnRlbnRJZGVudGlmaWVyXX07CisgICAgfQor
CisgICAgLy8gUHJvdGVjdGVkCisKKyAgICB1cGRhdGVTdGF0dXMoKQorICAgIHsKKyAgICAgICAg
c3VwZXIudXBkYXRlU3RhdHVzKCk7CisKKyAgICAgICAgaWYgKCF0aGlzLnN0YXR1cykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc0xpc3QudG9nZ2xlKCJy
ZXNvbHZlZCIsIHRoaXMuYnJlYWtwb2ludC5yZXNvbHZlZCAmJiBXSS5kZWJ1Z2dlck1hbmFnZXIu
YnJlYWtwb2ludHNFbmFibGVkKTsKKyAgICB9CisKKyAgICB1cGRhdGVUaXRsZXMoKQorICAgIHsK
KyAgICAgICAgc3VwZXIudXBkYXRlVGl0bGVzKCk7CisKKyAgICAgICAgbGV0IHNvdXJjZUNvZGVM
b2NhdGlvbiA9IHRoaXMuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb247CisKKyAgICAgICAg
bGV0IGRpc3BsYXlMaW5lTnVtYmVyID0gc291cmNlQ29kZUxvY2F0aW9uLmRpc3BsYXlMaW5lTnVt
YmVyOworICAgICAgICBsZXQgZGlzcGxheUNvbHVtbk51bWJlciA9IHNvdXJjZUNvZGVMb2NhdGlv
bi5kaXNwbGF5Q29sdW1uTnVtYmVyOworICAgICAgICBpZiAoZGlzcGxheUNvbHVtbk51bWJlciA+
IDApCisgICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5nKCJMaW5lICVkOiVk
IikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSwgZGlzcGxheUNvbHVtbk51bWJlciArIDEp
OyAvLyBUaGUgdXNlciB2aXNpYmxlIGxpbmUgYW5kIGNvbHVtbiBudW1iZXJzIGFyZSAxLWJhc2Vk
LgorICAgICAgICBlbHNlCisgICAgICAgICAgICB0aGlzLm1haW5UaXRsZSA9IFdJLlVJU3RyaW5n
KCJMaW5lICVkIikuZm9ybWF0KGRpc3BsYXlMaW5lTnVtYmVyICsgMSk7IC8vIFRoZSB1c2VyIHZp
c2libGUgbGluZSBudW1iZXIgaXMgMS1iYXNlZC4KKworICAgICAgICBpZiAoc291cmNlQ29kZUxv
Y2F0aW9uLmhhc01hcHBlZExvY2F0aW9uKCkpIHsKKyAgICAgICAgICAgIHRoaXMuc3VidGl0bGUg
PSBzb3VyY2VDb2RlTG9jYXRpb24uZm9ybWF0dGVkTG9jYXRpb25TdHJpbmcoKTsKKworICAgICAg
ICAgICAgaWYgKHNvdXJjZUNvZGVMb2NhdGlvbi5oYXNGb3JtYXR0ZWRMb2NhdGlvbigpKQorICAg
ICAgICAgICAgICAgIHRoaXMuc3VidGl0bGVFbGVtZW50LmNsYXNzTGlzdC5hZGQoImZvcm1hdHRl
ZC1sb2NhdGlvbiIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuc3Vi
dGl0bGVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImZvcm1hdHRlZC1sb2NhdGlvbiIpOworCisg
ICAgICAgICAgICB0aGlzLnRvb2x0aXAgPSB0aGlzLm1haW5UaXRsZSArICIgXHUyMDE0ICIgKyBX
SS5VSVN0cmluZygib3JpZ2luYWxseSAlcyIpLmZvcm1hdChzb3VyY2VDb2RlTG9jYXRpb24ub3Jp
Z2luYWxMb2NhdGlvblN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIFByaXZh
dGUKKworICAgIF9icmVha3BvaW50TG9jYXRpb25EaWRDaGFuZ2UoZXZlbnQpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChldmVudC50YXJnZXQgPT09IHRoaXMuYnJlYWtwb2ludCk7CisK
KyAgICAgICAgLy8gVGhlIEJyZWFrcG9pbnQgaGFzIGEgbmV3IGRpc3BsYXkgU291cmNlQ29kZS4g
VGhlIHNpZGViYXIgd2lsbCByZW1vdmUgdXMsIGFuZCBvbmRldGFjaCgpIHdpbGwgY2xlYXIgbGlz
dGVuZXJzLgorICAgICAgICBpZiAoZXZlbnQuZGF0YS5vbGREaXNwbGF5U291cmNlQ29kZSA9PT0g
dGhpcy5icmVha3BvaW50LmRpc3BsYXlTb3VyY2VDb2RlKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHRoaXMudXBkYXRlVGl0bGVzKCk7CisgICAgfQorfTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1By
b2JlRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCAxMzQ1M2MyNWNhY2YyOTIyMGZkZWU0NDgw
ZTE5ZGIwZTYzODE5OWU3Li44ODMwZjNjMWQ3MGQ3ODFkMjdmNWU2YTEwN2U1NDBiY2VmM2IzMWQ3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Q
cm9iZURldGFpbHNTaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC02OCw2ICs2
OCwxMSBAQCBXSS5Qcm9iZURldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBQcm9iZURldGFpbHNT
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWxzUwogICAgICAgICB9KTsKIAogICAgICAgICBp
bnNwZWN0ZWRQcm9iZVNldHMuc29ydChmdW5jdGlvbiBzb3J0QnlTb3VyY2VMb2NhdGlvbihhUHJv
YmVTZXQsIGJQcm9iZVNldCkgeworICAgICAgICAgICAgaWYgKCEoYVByb2JlU2V0IGluc3RhbmNl
b2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAgICAgaWYgKCEoYlByb2JlU2V0IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQpKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKwogICAgICAgICAgICAgdmFyIGFM
b2NhdGlvbiA9IGFQcm9iZVNldC5icmVha3BvaW50LnNvdXJjZUNvZGVMb2NhdGlvbjsKICAgICAg
ICAgICAgIHZhciBiTG9jYXRpb24gPSBiUHJvYmVTZXQuYnJlYWtwb2ludC5zb3VyY2VDb2RlTG9j
YXRpb247CiAgICAgICAgICAgICB2YXIgY29tcGFyaXNvblJlc3VsdCA9IGFMb2NhdGlvbi5zb3Vy
Y2VDb2RlLmRpc3BsYXlOYW1lLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiTG9jYXRpb24uc291cmNl
Q29kZS5kaXNwbGF5TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUHJvYmVTZXREZXRhaWxzU2VjdGlvbi5qcwpp
bmRleCA4Mzc3MzdjMGQzYWQyOGY4ZjY1MDZkNzZmZjE1OTA2ZTgzNTcxNTllLi5jNTRkZDc3MjJm
ZjcxZDM5Y2Y1ZDcwYjAyNjg2ODBmNzY2ZWI4YzA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Qcm9iZVNldERldGFpbHNTZWN0aW9uLmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Byb2JlU2V0RGV0
YWlsc1NlY3Rpb24uanMKQEAgLTMwLDYgKzMwLDIwIEBAIFdJLlByb2JlU2V0RGV0YWlsc1NlY3Rp
b24gPSBjbGFzcyBQcm9iZVNldERldGFpbHNTZWN0aW9uIGV4dGVuZHMgV0kuRGV0YWlsc1NlY3Rp
CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChwcm9iZVNldCBpbnN0YW5jZW9mIFdJLlBy
b2JlU2V0LCAiSW52YWxpZCBQcm9iZVNldCBhcmd1bWVudDoiLCBwcm9iZVNldCk7CiAKKyAgICAg
ICAgbGV0IHRpdGxlID0gIiI7CisgICAgICAgIGlmIChwcm9iZVNldC5icmVha3BvaW50IGluc3Rh
bmNlb2YgV0kuRXZlbnRCcmVha3BvaW50KSB7CisgICAgICAgICAgICBpZiAocHJvYmVTZXQuYnJl
YWtwb2ludCA9PT0gV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFr
cG9pbnQpCisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIEFuaW1hdGlv
biBGcmFtZXMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KQorICAgICAgICAg
ICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIkFsbCBJbnRlcnZhbHMiKTsKKyAgICAgICAgICAg
IGVsc2UgaWYgKHByb2JlU2V0LmJyZWFrcG9pbnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJp
bmcoIkFsbCBFdmVudHMiKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHByb2JlU2V0LmJyZWFrcG9p
bnQgPT09IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9pbnQpCisgICAg
ICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiQWxsIFRpbWVvdXRzIik7CisgICAgICAg
ICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGl0bGUgPSBwcm9iZVNldC5icmVha3BvaW50LmV2
ZW50TmFtZTsKKyAgICAgICAgfQorCiAgICAgICAgIHZhciBvcHRpb25zRWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB2YXIgZGF0YUdyaWQgPSBuZXcgV0ku
UHJvYmVTZXREYXRhR3JpZChwcm9iZVNldCk7CiAKQEAgLTM4LDcgKzUyLDcgQEAgV0kuUHJvYmVT
ZXREZXRhaWxzU2VjdGlvbiA9IGNsYXNzIFByb2JlU2V0RGV0YWlsc1NlY3Rpb24gZXh0ZW5kcyBX
SS5EZXRhaWxzU2VjdGkKIAogICAgICAgICB2YXIgcHJvYmVTZWN0aW9uR3JvdXAgPSBuZXcgV0ku
RGV0YWlsc1NlY3Rpb25Hcm91cChbc2luZ2xldG9uUm93XSk7CiAKLSAgICAgICAgc3VwZXIoInBy
b2JlIiwgIiIsIFtwcm9iZVNlY3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50KTsKKyAgICAgICAg
c3VwZXIoInByb2JlIiwgdGl0bGUsIFtwcm9iZVNlY3Rpb25Hcm91cF0sIG9wdGlvbnNFbGVtZW50
KTsKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgicHJvYmUtc2V0Iik7CiAK
QEAgLTY1LDEwICs3OSwxMiBAQCBXSS5Qcm9iZVNldERldGFpbHNTZWN0aW9uID0gY2xhc3MgUHJv
YmVTZXREZXRhaWxzU2VjdGlvbiBleHRlbmRzIFdJLkRldGFpbHNTZWN0aQogICAgICAgICB0aGlz
Ll9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldCwgV0kuUHJvYmVTZXQuRXZlbnQu
U2FtcGxlQWRkZWQsIHRoaXMuX3Byb2JlU2V0U2FtcGxlc0NoYW5nZWQpOwogICAgICAgICB0aGlz
Ll9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlzLl9wcm9iZVNldCwgV0kuUHJvYmVTZXQuRXZlbnQu
U2FtcGxlc0NsZWFyZWQsIHRoaXMuX3Byb2JlU2V0U2FtcGxlc0NoYW5nZWQpOwogCi0gICAgICAg
IC8vIFVwZGF0ZSB0aGUgc291cmNlIGxpbmsgd2hlbiB0aGUgYnJlYWtwb2ludCdzIHJlc29sdmVk
IHN0YXRlIGNoYW5nZXMsCi0gICAgICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlY29tZSBhIGxpdmUg
bG9jYXRpb24gbGluayB3aGVuIHBvc3NpYmxlLgotICAgICAgICB0aGlzLl91cGRhdGVMaW5rRWxl
bWVudCgpOwotICAgICAgICB0aGlzLl9saXN0ZW5lclNldC5yZWdpc3Rlcih0aGlzLl9wcm9iZVNl
dC5icmVha3BvaW50LCBXSS5CcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2Us
IHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KTsKKyAgICAgICAgaWYgKHRoaXMuX3Byb2JlU2V0LmJy
ZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCkgeworICAgICAgICAg
ICAgLy8gVXBkYXRlIHRoZSBzb3VyY2UgbGluayB3aGVuIHRoZSBicmVha3BvaW50J3MgcmVzb2x2
ZWQgc3RhdGUgY2hhbmdlcywKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgaXQgY2FuIGJlY29tZSBh
IGxpdmUgbG9jYXRpb24gbGluayB3aGVuIHBvc3NpYmxlLgorICAgICAgICAgICAgdGhpcy5fdXBk
YXRlTGlua0VsZW1lbnQoKTsKKyAgICAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0LnJlZ2lzdGVy
KHRoaXMuX3Byb2JlU2V0LmJyZWFrcG9pbnQsIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50
LlJlc29sdmVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX3VwZGF0ZUxpbmtFbGVtZW50KTsKKyAgICAg
ICAgfQogCiAgICAgICAgIHRoaXMuX2xpc3RlbmVyU2V0Lmluc3RhbGwoKTsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Tb3VyY2VD
b2RlVGV4dEVkaXRvci5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCmluZGV4IDZhMzBiZGQyZjE3MGQ3ZWZmZTIxNGFl
ZDYyYTUxNzAwYTJkYjZiMjAuLjQ2NjE5YmY2YTMxY2YyMjUxN2E1OWNjNWE4MDU5NzhiZjExMmY1
NDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL1NvdXJjZUNvZGVUZXh0RWRpdG9yLmpzCkBAIC02NiwxMCArNjYsMTEg
QEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBl
eHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQo
InNvdXJjZS1jb2RlIik7CiAKICAgICAgICAgaWYgKHRoaXMuX3N1cHBvcnRzRGVidWdnaW5nKSB7
Ci0gICAgICAgICAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5EaXNhYmxlZFN0YXRlRGlkQ2hhbmdlLCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlk
Q2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5l
cihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtw
b2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7Ci0gICAgICAgICAgICBXSS5CcmVha3BvaW50LmFk
ZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdl
LCB0aGlzLl9icmVha3BvaW50U3RhdHVzRGlkQ2hhbmdlLCB0aGlzKTsKLSAgICAgICAgICAgIFdJ
LkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkxvY2F0aW9u
RGlkQ2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMpOworICAgICAg
ICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIHRoaXMuX2JyZWFrcG9pbnRTdGF0dXNE
aWRDaGFuZ2UsIHRoaXMpOworICAgICAgICAgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51ZURpZENoYW5nZSwg
dGhpcy5fYnJlYWtwb2ludFN0YXR1c0RpZENoYW5nZSwgdGhpcyk7CisKKyAgICAgICAgICAgIFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgdGhpcy5fYnJlYWtwb2ludFN0YXR1
c0RpZENoYW5nZSwgdGhpcyk7CisgICAgICAgICAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LkxvY2F0aW9uRGlk
Q2hhbmdlLCB0aGlzLl91cGRhdGVCcmVha3BvaW50TG9jYXRpb24sIHRoaXMpOwogCiAgICAgICAg
ICAgICBXSS50YXJnZXRNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuVGFyZ2V0TWFuYWdlci5F
dmVudC5UYXJnZXRBZGRlZCwgdGhpcy5fdGFyZ2V0QWRkZWQsIHRoaXMpOwogICAgICAgICAgICAg
V0kudGFyZ2V0TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLlRhcmdldE1hbmFnZXIuRXZlbnQu
VGFyZ2V0UmVtb3ZlZCwgdGhpcy5fdGFyZ2V0UmVtb3ZlZCwgdGhpcyk7CkBAIC0xNjcsNyArMTY4
LDcgQEAgV0kuU291cmNlQ29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRv
ciBleHRlbmRzIFdJLlRleHRFZGl0b3IKICAgICBjbG9zZSgpCiAgICAgewogICAgICAgICBpZiAo
dGhpcy5fc3VwcG9ydHNEZWJ1Z2dpbmcpIHsKLSAgICAgICAgICAgIFdJLkJyZWFrcG9pbnQucmVt
b3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKyAgICAgICAgICAgIFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CiAg
ICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKICAgICAgICAgICAgIFdJLnRhcmdldE1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIApAQCAtMTMwNSw3ICsxMzA2LDcgQEAgV0kuU291cmNl
Q29kZVRleHRFZGl0b3IgPSBjbGFzcyBTb3VyY2VDb2RlVGV4dEVkaXRvciBleHRlbmRzIFdJLlRl
eHRFZGl0b3IKICAgICAgICAgdmFyIGVkaXRvckxpbmVJbmZvID0ge2xpbmVOdW1iZXIsIGNvbHVt
bk51bWJlcn07CiAgICAgICAgIHZhciB1bmZvcm1hdHRlZExpbmVJbmZvID0gdGhpcy5fdW5mb3Jt
YXR0ZWRMaW5lSW5mb0ZvckVkaXRvckxpbmVJbmZvKGVkaXRvckxpbmVJbmZvKTsKICAgICAgICAg
dmFyIHNvdXJjZUNvZGVMb2NhdGlvbiA9IHRoaXMuX3NvdXJjZUNvZGUuY3JlYXRlU291cmNlQ29k
ZUxvY2F0aW9uKHVuZm9ybWF0dGVkTGluZUluZm8ubGluZU51bWJlciwgdW5mb3JtYXR0ZWRMaW5l
SW5mby5jb2x1bW5OdW1iZXIpOwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVh
a3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3
IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CiAKICAgICAgICAg
dmFyIGxpbmVJbmZvID0gdGhpcy5fZWRpdG9yTGluZUluZm9Gb3JTb3VyY2VDb2RlTG9jYXRpb24o
YnJlYWtwb2ludC5zb3VyY2VDb2RlTG9jYXRpb24pOwogICAgICAgICB0aGlzLl9hZGRCcmVha3Bv
aW50V2l0aEVkaXRvckxpbmVJbmZvKGJyZWFrcG9pbnQsIGxpbmVJbmZvKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NvdXJjZXNOYXZpZ2F0
aW9uU2lkZWJhclBhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKaW5kZXggZmFiZjNlYzFlZjlj
YjEzNmNiMjg3MGE1NDg2NzRkMWJhODQzMzU1MS4uNDI1YzVhZTEyN2VlNDcxMDk3ZDQzN2YwYzM3
ZDFlNzA4MjdiYTNiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU291cmNlc05hdmlnYXRpb25TaWRl
YmFyUGFuZWwuanMKQEAgLTE2OSw3ICsxNjksNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwog
ICAgICAgICB0aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLm9uZGVsZXRlID0gKHNlbGVjdGVk
VHJlZUVsZW1lbnQpID0+IHsKICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVkVHJl
ZUVsZW1lbnQuc2VsZWN0ZWQpOwogCi0gICAgICAgICAgICBpZiAoIVdJLmRlYnVnZ2VyTWFuYWdl
ci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9i
amVjdCkpIHsKKyAgICAgICAgICAgIGlmICghc2VsZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRl
ZE9iamVjdC5yZW1vdmFibGUpIHsKICAgICAgICAgICAgICAgICBsZXQgdHJlZUVsZW1lbnRUb1Nl
bGVjdCA9IHNlbGVjdGVkVHJlZUVsZW1lbnQubmV4dFNlbGVjdGFibGVTaWJsaW5nOwogICAgICAg
ICAgICAgICAgIGlmICh0cmVlRWxlbWVudFRvU2VsZWN0KSB7CiAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IG9taXRGb2N1cyA9IHRydWU7CkBAIC0zMjYsNyArMzI2LDcgQEAgV0kuU291cmNlc05h
dmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCBleHRlbmRzIFcKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIo
V0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkFjdGl2ZUNhbGxGcmFtZURpZENoYW5nZSwgdGhpcy5f
aGFuZGxlRGVidWdnZXJBY3RpdmVDYWxsRnJhbWVEaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZl
bnQuV2FpdGluZ1RvUGF1c2UsIHRoaXMuX2hhbmRsZURlYnVnZ2VyV2FpdGluZ1RvUGF1c2UsIHRo
aXMpOwogCi0gICAgICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRGVidWdnZXJP
YmplY3REaXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOworICAgICAgICBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2
ZW50LkRpc3BsYXlMb2NhdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlRGVidWdnZXJPYmplY3RE
aXNwbGF5TG9jYXRpb25EaWRDaGFuZ2UsIHRoaXMpOwogICAgICAgICBXSS5Jc3N1ZU1lc3NhZ2Uu
YWRkRXZlbnRMaXN0ZW5lcihXSS5Jc3N1ZU1lc3NhZ2UuRXZlbnQuRGlzcGxheUxvY2F0aW9uRGlk
Q2hhbmdlLCB0aGlzLl9oYW5kbGVEZWJ1Z2dlck9iamVjdERpc3BsYXlMb2NhdGlvbkRpZENoYW5n
ZSwgdGhpcyk7CiAKICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJ
LkRPTUJyZWFrcG9pbnQuRXZlbnQuRE9NTm9kZUNoYW5nZWQsIHRoaXMuX2hhbmRsZURPTUJyZWFr
cG9pbnRET01Ob2RlQ2hhbmdlZCwgdGhpcyk7CkBAIC0zODcsMTcgKzM4NywxNyBAQCBXSS5Tb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJh
clBhbmVsIGV4dGVuZHMgVwogICAgICAgICB9CiAKICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2Vy
TWFuYWdlci5zdXBwb3J0ZWQpIHsKLSAgICAgICAgICAgIGlmIChXSS5zZXR0aW5ncy5zaG93QWxs
QW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludC52YWx1ZSkKLSAgICAgICAgICAgICAgICBXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5h
bGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmIChXSS5kb21EZWJ1
Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgICAg
ICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRpb25G
cmFtZXNCcmVha3BvaW50KTsKIAotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dBbGxU
aW1lb3V0c0JyZWFrcG9pbnQudmFsdWUpCi0gICAgICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJN
YW5hZ2VyLmFkZEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91
dHNCcmVha3BvaW50KTsKKyAgICAgICAgICAgIGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
VGltZW91dHNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFrcG9pbnQo
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCk7CiAKLSAgICAgICAg
ICAgIGlmIChXSS5zZXR0aW5ncy5zaG93QWxsSW50ZXJ2YWxzQnJlYWtwb2ludC52YWx1ZSkKLSAg
ICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KFdJ
LmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50KTsKKyAgICAgICAgICAg
IGlmIChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAg
ICAgICAgICAgICB0aGlzLl9hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJ
bnRlcnZhbHNCcmVha3BvaW50KTsKIAotICAgICAgICAgICAgaWYgKFdJLnNldHRpbmdzLnNob3dB
bGxMaXN0ZW5lcnNCcmVha3BvaW50LnZhbHVlKQotICAgICAgICAgICAgICAgIFdJLmRvbURlYnVn
Z2VyTWFuYWdlci5hZGRFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExp
c3RlbmVyc0JyZWFrcG9pbnQpOworICAgICAgICAgICAgaWYgKFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50KQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZEJyZWFr
cG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbExpc3RlbmVyc0JyZWFrcG9pbnQpOwogCiAg
ICAgICAgICAgICBmb3IgKGxldCBldmVudEJyZWFrcG9pbnQgb2YgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLmxpc3RlbmVyQnJlYWtwb2ludHMpCiAgICAgICAgICAgICAgICAgdGhpcy5fYWRkQnJlYWtw
b2ludChldmVudEJyZWFrcG9pbnQpOwpAQCAtNDUyLDcgKzQ1Miw3IEBAIFdJLlNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwg
ZXh0ZW5kcyBXCiAgICAgICAgIFdJLm5ldHdvcmtNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFn
ZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKLSAgICAgICAgV0kuQnJl
YWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworICAgICAgICBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRo
aXMpOwogICAgICAgICBXSS5Jc3N1ZU1lc3NhZ2UucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKICAgICAgICAgV0kuRE9NQnJlYWtwb2ludC5yZW1vdmVFdmVudExpc3RlbmVy
KG51bGwsIG51bGwsIHRoaXMpOwogICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwpAQCAtMTIwMSw3ICsxMjAxLDcgQEAgV0kuU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVF
bGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWxsRXhjZXB0
aW9uc0JyZWFrcG9pbnQsCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVlRWxl
bWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhj
ZXB0aW9uc0JyZWFrcG9pbnQsCiAgICAgICAgICAgICAgICAgKHRyZWVFbGVtZW50KSA9PiB0cmVl
RWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFzc2VydGlv
bkZhaWx1cmVzQnJlYWtwb2ludCwKLSAgICAgICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRy
ZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50IHx8IHRyZWVFbGVt
ZW50IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VUcmVlRWxlbWVudCB8fCB0cmVlRWxlbWVudCBpbnN0
YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50LAorICAgICAgICAgICAgICAgICh0cmVlRWxlbWVu
dCkgPT4gdHJlZUVsZW1lbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVF
bGVtZW50IHx8IHRyZWVFbGVtZW50IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VUcmVlRWxlbWVudCB8
fCB0cmVlRWxlbWVudCBpbnN0YW5jZW9mIFdJLlNjcmlwdFRyZWVFbGVtZW50LAogICAgICAgICAg
ICAgICAgICh0cmVlRWxlbWVudCkgPT4gdHJlZUVsZW1lbnQucmVwcmVzZW50ZWRPYmplY3QgPT09
IFdJLmRlYnVnZ2VyTWFuYWdlci5hbGxNaWNyb3Rhc2tzQnJlYWtwb2ludCwKICAgICAgICAgICAg
ICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0ID09PSBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCwKICAgICAg
ICAgICAgICAgICAodHJlZUVsZW1lbnQpID0+IHRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0
ID09PSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50LApAQCAtMTIy
NCw4ICsxMjI0LDggQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBT
b3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIDE7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChhIGluc3RhbmNl
b2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50ICYmIGIgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50
VHJlZUVsZW1lbnQpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBhcmVCcmVha3Bv
aW50VHJlZUVsZW1lbnRzKGEsIGIpOworICAgICAgICAgICAgaWYgKGEgaW5zdGFuY2VvZiBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50ICYmIGIgaW5zdGFuY2VvZiBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KQorICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9j
b21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYik7CiAKICAgICAgICAg
ICAgIHJldHVybiBhLm1haW5UaXRsZS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYi5tYWluVGl0bGUp
IHx8IGEuc3VidGl0bGUuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGIuc3VidGl0bGUpOwogICAgICAg
ICB9OwpAQCAtMTIzMyw3ICsxMjMzLDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFu
ZWwgPSBjbGFzcyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAg
ICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQodHJlZUVsZW1lbnQsIGluc2VydGlvbklu
ZGV4Rm9yT2JqZWN0SW5MaXN0U29ydGVkQnlGdW5jdGlvbih0cmVlRWxlbWVudCwgcGFyZW50VHJl
ZUVsZW1lbnQuY2hpbGRyZW4sIGNvbXBhcmF0b3IpKTsKICAgICB9CiAKLSAgICBfY29tcGFyZUJy
ZWFrcG9pbnRUcmVlRWxlbWVudHMoYSwgYikKKyAgICBfY29tcGFyZUphdmFTY3JpcHRCcmVha3Bv
aW50VHJlZUVsZW1lbnRzKGEsIGIpCiAgICAgewogICAgICAgICBpZiAoIWEucmVwcmVzZW50ZWRP
YmplY3QgfHwgIWIucmVwcmVzZW50ZWRPYmplY3QpCiAgICAgICAgICAgICByZXR1cm4gMDsKQEAg
LTEyNTEsNyArMTI1MSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xh
c3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgIGlmICh0
aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChicmVha3BvaW50KSkK
ICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIGxldCBjb25zdHJ1Y3RvciA9IFdJ
LkJyZWFrcG9pbnRUcmVlRWxlbWVudDsKKyAgICAgICAgbGV0IGNvbnN0cnVjdG9yID0gV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnRUcmVlRWxlbWVudDsKICAgICAgICAgbGV0IG9wdGlvbnMgPSB7fTsK
ICAgICAgICAgbGV0IHBhcmVudFRyZWVFbGVtZW50ID0gdGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0
bGluZTsKIApAQCAtMTI2OSwxOSArMTI2OSwxOSBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwog
ICAgICAgICB9OwogCiAgICAgICAgIGlmIChicmVha3BvaW50ID09PSBXSS5kZWJ1Z2dlck1hbmFn
ZXIuZGVidWdnZXJTdGF0ZW1lbnRzQnJlYWtwb2ludCkgewotICAgICAgICAgICAgb3B0aW9ucy5j
bGFzc05hbWUgPSAiYnJlYWtwb2ludC1kZWJ1Z2dlci1zdGF0ZW1lbnQtaWNvbiI7CisgICAgICAg
ICAgICBvcHRpb25zLmNsYXNzTmFtZXMgPSBbImRlYnVnZ2VyLXN0YXRlbWVudCJdOwogICAgICAg
ICAgICAgb3B0aW9ucy50aXRsZSA9IFdJLlVJU3RyaW5nKCJEZWJ1Z2dlciBTdGF0ZW1lbnRzIik7
CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFs
bEV4Y2VwdGlvbnNCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZSA9
ICJicmVha3BvaW50LWV4Y2VwdGlvbi1pY29uIjsKKyAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NO
YW1lcyA9IFsiZXhjZXB0aW9uIl07CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxlID0gV0kucmVw
ZWF0ZWRVSVN0cmluZy5hbGxFeGNlcHRpb25zKCk7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtw
b2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLnVuY2F1Z2h0RXhjZXB0aW9uc0JyZWFrcG9pbnQp
IHsKLSAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtZXhjZXB0aW9u
LWljb24iOworICAgICAgICAgICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJleGNlcHRpb24iXTsK
ICAgICAgICAgICAgIG9wdGlvbnMudGl0bGUgPSBXSS5yZXBlYXRlZFVJU3RyaW5nLnVuY2F1Z2h0
RXhjZXB0aW9ucygpOwogICAgICAgICB9IGVsc2UgaWYgKGJyZWFrcG9pbnQgPT09IFdJLmRlYnVn
Z2VyTWFuYWdlci5hc3NlcnRpb25GYWlsdXJlc0JyZWFrcG9pbnQpIHsKLSAgICAgICAgICAgIG9w
dGlvbnMuY2xhc3NOYW1lID0gImJyZWFrcG9pbnQtYXNzZXJ0aW9uLWljb24iOworICAgICAgICAg
ICAgb3B0aW9ucy5jbGFzc05hbWVzID0gWyJhc3NlcnRpb24iXTsKICAgICAgICAgICAgIG9wdGlv
bnMudGl0bGUgPSBXSS5yZXBlYXRlZFVJU3RyaW5nLmFzc2VydGlvbkZhaWx1cmVzKCk7CiAgICAg
ICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCA9PT0gV0kuZGVidWdnZXJNYW5hZ2VyLmFsbE1pY3Jv
dGFza3NCcmVha3BvaW50KSB7Ci0gICAgICAgICAgICBvcHRpb25zLmNsYXNzTmFtZSA9ICJicmVh
a3BvaW50LW1pY3JvdGFzay1pY29uIjsKKyAgICAgICAgICAgIG9wdGlvbnMuY2xhc3NOYW1lcyA9
IFsibWljcm90YXNrIl07CiAgICAgICAgICAgICBvcHRpb25zLnRpdGxlID0gV0kuVUlTdHJpbmco
IkFsbCBNaWNyb3Rhc2tzIik7CiAgICAgICAgIH0gZWxzZSBpZiAoYnJlYWtwb2ludCBpbnN0YW5j
ZW9mIFdJLkRPTUJyZWFrcG9pbnQpIHsKICAgICAgICAgICAgIGlmICghYnJlYWtwb2ludC5kb21O
b2RlSWRlbnRpZmllcikKQEAgLTEzNjQsNyArMTM2NCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXCiAgICAgX3JlbW92ZUFsbEJyZWFrcG9pbnRzKGJyZWFrcG9pbnRzKQogICAgIHsKICAgICAg
ICAgZm9yIChsZXQgYnJlYWtwb2ludCBvZiBicmVha3BvaW50cykgewotICAgICAgICAgICAgaWYg
KFdJLmRlYnVnZ2VyTWFuYWdlci5pc0JyZWFrcG9pbnRSZW1vdmFibGUoYnJlYWtwb2ludCkpCisg
ICAgICAgICAgICBpZiAoYnJlYWtwb2ludC5yZW1vdmFibGUpCiAgICAgICAgICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIH0K
ICAgICB9CkBAIC0xMzgzLDcgKzEzODMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogCiAg
ICAgICAgIGxldCBicmVha3BvaW50cyA9IFtdOwogICAgICAgICBmb3IgKGxldCBjaGlsZCBvZiB0
cmVlRWxlbWVudC5jaGlsZHJlbikgewotICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY2hpbGQg
aW5zdGFuY2VvZiBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQpOworICAgICAgICAgICAgY29uc29s
ZS5hc3NlcnQoY2hpbGQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVt
ZW50KTsKICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gY2hpbGQuYnJlYWtwb2ludDsKICAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQpOwogICAgICAgICAgICAgaWYgKGJy
ZWFrcG9pbnQpCkBAIC0xNDAzLDcgKzE0MDMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGVi
YXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwog
CiAgICAgICAgICAgICBpc3N1ZVRyZWVFbGVtZW50ID0gbmV3IFdJLklzc3VlVHJlZUVsZW1lbnQo
aXNzdWVNZXNzYWdlKTsKIAotICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuaW5zZXJ0Q2hp
bGQoaXNzdWVUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRC
eUZ1bmN0aW9uKGlzc3VlVHJlZUVsZW1lbnQsIHBhcmVudFRyZWVFbGVtZW50LmNoaWxkcmVuLCB0
aGlzLl9jb21wYXJlQnJlYWtwb2ludFRyZWVFbGVtZW50cykpOworICAgICAgICAgICAgcGFyZW50
VHJlZUVsZW1lbnQuaW5zZXJ0Q2hpbGQoaXNzdWVUcmVlRWxlbWVudCwgaW5zZXJ0aW9uSW5kZXhG
b3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9uKGlzc3VlVHJlZUVsZW1lbnQsIHBhcmVudFRy
ZWVFbGVtZW50LmNoaWxkcmVuLCB0aGlzLl9jb21wYXJlSmF2YVNjcmlwdEJyZWFrcG9pbnRUcmVl
RWxlbWVudHMpKTsKICAgICAgICAgICAgIGlmIChwYXJlbnRUcmVlRWxlbWVudC5jaGlsZHJlbi5s
ZW5ndGggPT09IDEpCiAgICAgICAgICAgICAgICAgcGFyZW50VHJlZUVsZW1lbnQuZXhwYW5kKCk7
CiAgICAgICAgIH0KQEAgLTE1NTAsNyArMTU1MCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lk
ZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBX
CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVD
b250ZW50VHJlZU91dGxpbmUoe3N1cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAg
ICAgIGxldCBldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJl
YWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQtcGF1c2Vk
LWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAg
ICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUgRmlyZWQi
KSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0
bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xNTk1LDgg
KzE1OTUsOCBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJj
ZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1
c2VSZWFzb25UcmVlT3V0bGluZS5hZGRFdmVudExpc3RlbmVyKFdJLlRyZWVPdXRsaW5lLkV2ZW50
LlNlbGVjdGlvbkRpZENoYW5nZSwgdGhpcy5faGFuZGxlVHJlZVNlbGVjdGlvbkRpZENoYW5nZSwg
dGhpcyk7CiAKICAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmJyZWFrcG9pbnRGb3JJZGVudGlmaWVyKHBhdXNlRGF0YS5icmVha3BvaW50SWQpOwotICAgICAg
ICAgICAgbGV0IGJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5CcmVha3BvaW50VHJlZUVs
ZW1lbnQoYnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9p
bnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnRUcmVlRWxlbWVudCA9
IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludFRyZWVFbGVtZW50KGJyZWFrcG9pbnQsIHsKKyAg
ICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAgICAgICAgICAgICAgIHRp
dGxlOiBXSS5VSVN0cmluZygiVHJpZ2dlcmVkIEJyZWFrcG9pbnQiKSwKICAgICAgICAgICAgIH0p
OwogICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnREZXRhaWxzU2VjdGlvbiA9IG5ldyBXSS5EZXRh
aWxzU2VjdGlvblJvdzsKQEAgLTE2NDUsNyArMTY0NSw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9u
U2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXCiAKICAgICAgICAgICAgIGxldCB0eXBlID0gV0kuRE9NQnJlYWtwb2ludFRyZWVFbGVtZW50
LmRpc3BsYXlOYW1lRm9yVHlwZShkb21CcmVha3BvaW50LnR5cGUpOwogICAgICAgICAgICAgbGV0
IGRvbUJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IG5ldyBXSS5ET01CcmVha3BvaW50VHJlZUVsZW1l
bnQoZG9tQnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9p
bnQtcGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0s
CiAgICAgICAgICAgICAgICAgdGl0bGU6IHR5cGUsCiAgICAgICAgICAgICB9KTsKICAgICAgICAg
ICAgIGxldCBkb21CcmVha3BvaW50Um93ID0gbmV3IFdJLkRldGFpbHNTZWN0aW9uUm93OwpAQCAt
MTcxNSw3ICsxNzE1LDcgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFz
cyBTb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgICAgIHRo
aXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNvbnRlbnRUcmVlT3V0bGlu
ZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAgICAgbGV0IGV2ZW50QnJl
YWtwb2ludFRyZWVFbGVtZW50ID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KGV2
ZW50QnJlYWtwb2ludCwgewotICAgICAgICAgICAgICAgIGNsYXNzTmFtZTogImJyZWFrcG9pbnQt
cGF1c2VkLWljb24iLAorICAgICAgICAgICAgICAgIGNsYXNzTmFtZXM6IFsicGF1c2VkIl0sCiAg
ICAgICAgICAgICAgICAgdGl0bGU6IFdJLlVJU3RyaW5nKCJcdTIwMUMlc1x1MjAxRCBFdmVudCBG
aXJlZCIpLmZvcm1hdChwYXVzZURhdGEuZXZlbnROYW1lKSwKICAgICAgICAgICAgIH0pOwogICAg
ICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJy
ZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xNzU4LDcgKzE3NTgsNyBAQCBXSS5Tb3VyY2VzTmF2
aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVs
IGV4dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZSA9IHRo
aXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0ZpbHRlcmluZzogdHJ1ZX0pOwog
CiAgICAgICAgICAgICBsZXQgZXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuRXZl
bnRCcmVha3BvaW50VHJlZUVsZW1lbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFs
c0JyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICBjbGFzc05hbWU6ICJicmVha3BvaW50LXBh
dXNlZC1pY29uIiwKKyAgICAgICAgICAgICAgICBjbGFzc05hbWVzOiBbInBhdXNlZCJdLAogICAg
ICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmluZygic2V0SW50ZXJ2YWwgRmlyZWQiKSwKICAg
ICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFzb25UcmVlT3V0bGluZS5h
cHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudCk7CkBAIC0xODAyLDcgKzE4MDIs
NyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZp
Z2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAgICAgICAgdGhpcy5fcGF1c2VSZWFz
b25UcmVlT3V0bGluZSA9IHRoaXMuY3JlYXRlQ29udGVudFRyZWVPdXRsaW5lKHtzdXBwcmVzc0Zp
bHRlcmluZzogdHJ1ZX0pOwogCiAgICAgICAgICAgICBsZXQgZXZlbnRCcmVha3BvaW50VHJlZUVs
ZW1lbnQgPSBuZXcgV0kuRXZlbnRCcmVha3BvaW50VHJlZUVsZW1lbnQoZXZlbnRCcmVha3BvaW50
LCB7Ci0gICAgICAgICAgICAgICAgY2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIs
CisgICAgICAgICAgICAgICAgY2xhc3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAg
ICB0aXRsZTogV0kuVUlTdHJpbmcoIiVzIEZpcmVkIikuZm9ybWF0KHBhdXNlRGF0YS5ldmVudE5h
bWUpLAogICAgICAgICAgICAgfSk7CiAgICAgICAgICAgICB0aGlzLl9wYXVzZVJlYXNvblRyZWVP
dXRsaW5lLmFwcGVuZENoaWxkKGV2ZW50QnJlYWtwb2ludFRyZWVFbGVtZW50KTsKQEAgLTE4MTgs
NyArMTgxOCw3IEBAIFdJLlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291
cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICB0aGlzLl9w
YXVzZVJlYXNvblRyZWVPdXRsaW5lID0gdGhpcy5jcmVhdGVDb250ZW50VHJlZU91dGxpbmUoe3N1
cHByZXNzRmlsdGVyaW5nOiB0cnVlfSk7CiAKICAgICAgICAgICAgIGxldCBldmVudEJyZWFrcG9p
bnRUcmVlRWxlbWVudCA9IG5ldyBXSS5FdmVudEJyZWFrcG9pbnRUcmVlRWxlbWVudChXSS5kb21E
ZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3BvaW50LCB7Ci0gICAgICAgICAgICAgICAg
Y2xhc3NOYW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgY2xh
c3NOYW1lczogWyJwYXVzZWQiXSwKICAgICAgICAgICAgICAgICB0aXRsZTogV0kuVUlTdHJpbmco
InNldFRpbWVvdXQgRmlyZWQiKSwKICAgICAgICAgICAgIH0pOwogICAgICAgICAgICAgdGhpcy5f
cGF1c2VSZWFzb25UcmVlT3V0bGluZS5hcHBlbmRDaGlsZChldmVudEJyZWFrcG9pbnRUcmVlRWxl
bWVudCk7CkBAIC0xODQ0LDcgKzE4NDQsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQ
YW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAg
ICAgICAgICAgICAgIHRoaXMuX3BhdXNlUmVhc29uVHJlZU91dGxpbmUgPSB0aGlzLmNyZWF0ZUNv
bnRlbnRUcmVlT3V0bGluZSh7c3VwcHJlc3NGaWx0ZXJpbmc6IHRydWV9KTsKIAogICAgICAgICAg
ICAgICAgIGxldCB1cmxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBuZXcgV0kuVVJMQnJlYWtwb2lu
dFRyZWVFbGVtZW50KHVybEJyZWFrcG9pbnQsIHsKLSAgICAgICAgICAgICAgICAgICAgY2xhc3NO
YW1lOiAiYnJlYWtwb2ludC1wYXVzZWQtaWNvbiIsCisgICAgICAgICAgICAgICAgICAgIGNsYXNz
TmFtZXM6IFsicGF1c2VkIl0sCiAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBXSS5VSVN0cmlu
ZygiVHJpZ2dlcmVkIFVSTCBCcmVha3BvaW50IiksCiAgICAgICAgICAgICAgICAgfSk7CiAgICAg
ICAgICAgICAgICAgbGV0IHVybEJyZWFrcG9pbnRSb3cgPSBuZXcgV0kuRGV0YWlsc1NlY3Rpb25S
b3c7CkBAIC0xOTUwLDkgKzE5NTAsOSBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNpZGViYXJQYW5l
bCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMgVwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHRyZWVFbGVtZW50IGluc3Rh
bmNlb2YgV0kuQnJlYWtwb2ludFRyZWVFbGVtZW50KSB7CisgICAgICAgIGlmICh0cmVlRWxlbWVu
dCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50VHJlZUVsZW1lbnQpIHsKICAgICAg
ICAgICAgIGxldCBicmVha3BvaW50ID0gdHJlZUVsZW1lbnQuYnJlYWtwb2ludDsKLSAgICAgICAg
ICAgIGlmIChXSS5kZWJ1Z2dlck1hbmFnZXIuaXNCcmVha3BvaW50U3BlY2lhbChicmVha3BvaW50
KSkKKyAgICAgICAgICAgIGlmIChicmVha3BvaW50LnNwZWNpYWwpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCiAgICAgICAgICAgICBsZXQgc291cmNlQ29kZSA9IGJyZWFrcG9pbnQuc291cmNl
Q29kZUxvY2F0aW9uLmRpc3BsYXlTb3VyY2VDb2RlOwpAQCAtMTk4MSwyNSArMTk4MSw5IEBAIFdJ
LlNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsID0gY2xhc3MgU291cmNlc05hdmlnYXRpb25T
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXCiAgICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Mu
c2hvd0FsbE1pY3JvdGFza3NCcmVha3BvaW50OwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAg
ICAgY2FzZSBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2lu
dDoKLSAgICAgICAgICAgIHNldHRpbmcgPSBXSS5zZXR0aW5ncy5zaG93QWxsQW5pbWF0aW9uRnJh
bWVzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuZG9t
RGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBzZXR0
aW5nID0gV0kuc2V0dGluZ3Muc2hvd0FsbEludGVydmFsc0JyZWFrcG9pbnQ7Ci0gICAgICAgICAg
ICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5l
cnNCcmVha3BvaW50OgotICAgICAgICAgICAgc2V0dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxM
aXN0ZW5lcnNCcmVha3BvaW50OwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSBX
SS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsUmVxdWVzdHNCcmVha3BvaW50OgogICAgICAgICAgICAg
c2V0dGluZyA9IFdJLnNldHRpbmdzLnNob3dBbGxSZXF1ZXN0c0JyZWFrcG9pbnQ7CiAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1l
b3V0c0JyZWFrcG9pbnQ6Ci0gICAgICAgICAgICBzZXR0aW5nID0gV0kuc2V0dGluZ3Muc2hvd0Fs
bFRpbWVvdXRzQnJlYWtwb2ludDsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKHNldHRpbmcpCkBAIC0yMDA4LDcgKzE5OTIsNyBAQCBXSS5Tb3VyY2VzTmF2aWdh
dGlvblNpZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4
dGVuZHMgVwogICAgICAgICBpZiAoZXZlbnQudHlwZSA9PT0gV0kuVHJlZU91dGxpbmUuRXZlbnQu
RWxlbWVudFJlbW92ZWQpIHsKICAgICAgICAgICAgIGxldCBzZWxlY3RlZFRyZWVFbGVtZW50ID0g
dGhpcy5fYnJlYWtwb2ludHNUcmVlT3V0bGluZS5zZWxlY3RlZFRyZWVFbGVtZW50OwogICAgICAg
ICAgICAgaWYgKHNlbGVjdGVkVHJlZUVsZW1lbnQpIHsKLSAgICAgICAgICAgICAgICBpZiAoc2Vs
ZWN0ZWRUcmVlRWxlbWVudC5yZXByZXNlbnRlZE9iamVjdCA9PT0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmFzc2VydGlvbkZhaWx1cmVzQnJlYWtwb2ludCB8fCAhV0kuZGVidWdnZXJNYW5hZ2VyLmlzQnJl
YWtwb2ludFJlbW92YWJsZShzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0KSkg
eworICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2Jq
ZWN0ID09PSBXSS5kZWJ1Z2dlck1hbmFnZXIuYXNzZXJ0aW9uRmFpbHVyZXNCcmVha3BvaW50IHx8
ICFzZWxlY3RlZFRyZWVFbGVtZW50LnJlcHJlc2VudGVkT2JqZWN0LnJlbW92YWJsZSkgewogICAg
ICAgICAgICAgICAgICAgICBjb25zdCBza2lwVW5yZXZlYWxlZCA9IHRydWU7CiAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IGRvbnRQb3B1bGF0ZSA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAg
IGxldCB0cmVlRWxlbWVudFRvU2VsZWN0ID0gc2VsZWN0ZWRUcmVlRWxlbWVudC50cmF2ZXJzZU5l
eHRUcmVlRWxlbWVudChza2lwVW5yZXZlYWxlZCwgZG9udFBvcHVsYXRlKTsKQEAgLTIwNTIsMjUg
KzIwMzYsMjMgQEAgV0kuU291cmNlc05hdmlnYXRpb25TaWRlYmFyUGFuZWwgPSBjbGFzcyBTb3Vy
Y2VzTmF2aWdhdGlvblNpZGViYXJQYW5lbCBleHRlbmRzIFcKICAgICAgICAgfQogCiAgICAgICAg
IGlmIChXSS5ET01EZWJ1Z2dlck1hbmFnZXIuc3VwcG9ydHNFdmVudEJyZWFrcG9pbnRzKCkgfHwg
V0kuRE9NRGVidWdnZXJNYW5hZ2VyLnN1cHBvcnRzRXZlbnRMaXN0ZW5lckJyZWFrcG9pbnRzKCkp
IHsKLSAgICAgICAgICAgIGZ1bmN0aW9uIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9p
bnQoYnJlYWtwb2ludCwgbGFiZWwsIGNoZWNrZWQpIHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIGFk
ZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQobGFiZWwsIGJyZWFrcG9pbnQsIHR5cGUp
IHsKICAgICAgICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRDaGVja2JveEl0ZW0obGFiZWws
ICgpID0+IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoZWNrZWQpCisgICAgICAgICAgICAg
ICAgICAgIGlmIChicmVha3BvaW50KQogICAgICAgICAgICAgICAgICAgICAgICAgV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChicmVha3BvaW50KTsKLSAgICAgICAg
ICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LmRp
c2FibGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1h
bmFnZXIuYWRkRXZlbnRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwotICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgfSwgY2hlY2tlZCk7CisgICAgICAgICAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgICAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hZGRFdmVu
dEJyZWFrcG9pbnQobmV3IFdJLkV2ZW50QnJlYWtwb2ludCh0eXBlKSk7CisgICAgICAgICAgICAg
ICAgfSwgISFicmVha3BvaW50KTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYWRkVG9n
Z2xlRm9yU3BlY2lhbEV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5p
bWF0aW9uRnJhbWVzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFsbCBBbmltYXRpb24gRnJhbWVz
IiksIFdJLnNldHRpbmdzLnNob3dBbGxBbmltYXRpb25GcmFtZXNCcmVha3BvaW50LnZhbHVlKTsK
LSAgICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCwgV0kuVUlTdHJpbmcoIkFsbCBUaW1l
b3V0cyIpLCBXSS5zZXR0aW5ncy5zaG93QWxsVGltZW91dHNCcmVha3BvaW50LnZhbHVlKTsKLSAg
ICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwgSW50ZXJ2
YWxzIiksIFdJLnNldHRpbmdzLnNob3dBbGxJbnRlcnZhbHNCcmVha3BvaW50LnZhbHVlKTsKKyAg
ICAgICAgICAgIGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuVUlTdHJpbmco
IkFsbCBBbmltYXRpb24gRnJhbWVzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxBbmltYXRp
b25GcmFtZXNCcmVha3BvaW50LCBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5BbmltYXRpb25GcmFt
ZSk7CisgICAgICAgICAgICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJ
U3RyaW5nKCJBbGwgVGltZW91dHMiKSwgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRz
QnJlYWtwb2ludCwgV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91dCk7CisgICAgICAgICAg
ICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJU3RyaW5nKCJBbGwgSW50
ZXJ2YWxzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxJbnRlcnZhbHNCcmVha3BvaW50LCBX
SS5FdmVudEJyZWFrcG9pbnQuVHlwZS5JbnRlcnZhbCk7CiAKICAgICAgICAgICAgIGNvbnRleHRN
ZW51LmFwcGVuZFNlcGFyYXRvcigpOwogCiAgICAgICAgICAgICBpZiAoV0kuRE9NRGVidWdnZXJN
YW5hZ2VyLnN1cHBvcnRzQWxsTGlzdGVuZXJzQnJlYWtwb2ludCgpKQotICAgICAgICAgICAgICAg
IGFkZFRvZ2dsZUZvclNwZWNpYWxFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbExpc3RlbmVyc0JyZWFrcG9pbnQsIFdJLlVJU3RyaW5nKCJBbGwgRXZlbnRzIiksIFdJLnNl
dHRpbmdzLnNob3dBbGxMaXN0ZW5lcnNCcmVha3BvaW50LnZhbHVlKTsKKyAgICAgICAgICAgICAg
ICBhZGRUb2dnbGVGb3JTcGVjaWFsRXZlbnRCcmVha3BvaW50KFdJLlVJU3RyaW5nKCJBbGwgRXZl
bnRzIiksIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50LCBXSS5F
dmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lcik7CiAKICAgICAgICAgICAgIGNvbnRleHRNZW51
LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkV2ZW50IEJyZWFrcG9pbnRcdTIwMjYiKSwgKCkgPT4g
ewogICAgICAgICAgICAgICAgIGxldCBwb3BvdmVyID0gbmV3IFdJLkV2ZW50QnJlYWtwb2ludFBv
cG92ZXIodGhpcyk7CkBAIC0yNDIxLDcgKzI0MDMsNyBAQCBXSS5Tb3VyY2VzTmF2aWdhdGlvblNp
ZGViYXJQYW5lbCA9IGNsYXNzIFNvdXJjZXNOYXZpZ2F0aW9uU2lkZWJhclBhbmVsIGV4dGVuZHMg
VwogICAgICAgICBsZXQgd2FzU2VsZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgbGV0IG9sZERlYnVn
Z2VyVHJlZUVsZW1lbnQgPSBudWxsOwogICAgICAgICBsZXQgbmV3RGVidWdnZXJUcmVlRWxlbWVu
dCA9IG51bGw7Ci0gICAgICAgIGlmIChkZWJ1Z2dlck9iamVjdCBpbnN0YW5jZW9mIFdJLkJyZWFr
cG9pbnQpIHsKKyAgICAgICAgaWYgKGRlYnVnZ2VyT2JqZWN0IGluc3RhbmNlb2YgV0kuSmF2YVNj
cmlwdEJyZWFrcG9pbnQpIHsKICAgICAgICAgICAgIG9sZERlYnVnZ2VyVHJlZUVsZW1lbnQgPSB0
aGlzLl9icmVha3BvaW50c1RyZWVPdXRsaW5lLmZpbmRUcmVlRWxlbWVudChkZWJ1Z2dlck9iamVj
dCk7CiAgICAgICAgICAgICBpZiAob2xkRGVidWdnZXJUcmVlRWxlbWVudCkKICAgICAgICAgICAg
ICAgICB3YXNTZWxlY3RlZCA9IG9sZERlYnVnZ2VyVHJlZUVsZW1lbnQuc2VsZWN0ZWQ7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UZXh0UmVz
b3VyY2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCmluZGV4IGY5MmRkMmIzMTBlNDNhY2Qz
ZDFhNTM1MGRlMjA0M2JiOWJhNzUxOGUuLmY3ZDJkZWZmNDE0Zjg5ZjEwMzE4MTFmNDhhZWU1NTE5
MzBjYmMyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RleHRSZXNvdXJjZUNvbnRlbnRWaWV3LmpzCkBAIC05
OCw3ICs5OCw3IEBAIFdJLlRleHRSZXNvdXJjZUNvbnRlbnRWaWV3ID0gY2xhc3MgVGV4dFJlc291
cmNlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5SZXNvdXJjZUNvCiAgICAgZ2V0IHN1cHBsZW1lbnRh
bFJlcHJlc2VudGVkT2JqZWN0cygpCiAgICAgewogICAgICAgICBsZXQgb2JqZWN0cyA9IFdJLmRl
YnVnZ2VyTWFuYWdlci5wcm9iZVNldHMuZmlsdGVyKGZ1bmN0aW9uKHByb2JlU2V0KSB7Ci0gICAg
ICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2UuY29udGVudElkZW50aWZpZXIgPT09IHByb2Jl
U2V0LmJyZWFrcG9pbnQuY29udGVudElkZW50aWZpZXI7CisgICAgICAgICAgICByZXR1cm4gIShw
cm9iZVNldC5icmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpIHx8
IHRoaXMuX3Jlc291cmNlLmNvbnRlbnRJZGVudGlmaWVyID09PSBwcm9iZVNldC5icmVha3BvaW50
LmNvbnRlbnRJZGVudGlmaWVyOwogICAgICAgICB9LCB0aGlzKTsKIAogICAgICAgICAvLyBJZiB0
aGUgU291cmNlQ29kZVRleHRFZGl0b3IgaGFzIGFuIGV4ZWN1dGlvbkxpbmVOdW1iZXIsIHdlIGNh
biBhc3N1bWUKQEAgLTMxOSw3ICszMTksNyBAQCBXSS5UZXh0UmVzb3VyY2VDb250ZW50VmlldyA9
IGNsYXNzIFRleHRSZXNvdXJjZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuUmVzb3VyY2VDbwogICAg
IF9wcm9iZVNldHNDaGFuZ2VkKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBldmVudC5kYXRhLnByb2JlU2V0LmJyZWFrcG9pbnQ7Ci0gICAgICAgIGlmIChicmVha3BvaW50
LnNvdXJjZUNvZGVMb2NhdGlvbi5zb3VyY2VDb2RlID09PSB0aGlzLnJlc291cmNlKQorICAgICAg
ICBpZiAoIShicmVha3BvaW50IGluc3RhbmNlb2YgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQpIHx8
IGJyZWFrcG9pbnQuc291cmNlQ29kZUxvY2F0aW9uLnNvdXJjZUNvZGUgPT09IHRoaXMucmVzb3Vy
Y2UpCiAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50
Vmlldy5FdmVudC5TdXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5jc3MKaW5kZXggMGYy
NDg5NGYzODljNjg3MjIxZWFhYzljMzVkNWYxNzU5ZmYxM2E1Zi4uMDIxZGJlZTA1ZTMwODdiZjk2
ZGJiNGJjMzY1ZjRmNDc5ZWVjNTg0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50LmNzcworKysgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJl
ZUVsZW1lbnQuY3NzCkBAIC0yMywxNiArMjMsMTYgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0uYnJlYWtwb2ludC51cmwgLnN1YnRpdGxlIHsKKy5pdGVtLmJy
ZWFrcG9pbnQudXJsIC5zdWJ0aXRsZSB7CiAgICAgZm9udC1mYW1pbHk6IE1lbmxvLCBtb25vc3Bh
Y2U7CiB9CiAKLS5icmVha3BvaW50LnVybDpub3QoLmJyZWFrcG9pbnQtcGF1c2VkLWljb24pIC5p
Y29uIHsKKy5pdGVtLmJyZWFrcG9pbnQudXJsOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgY29u
dGVudDogdXJsKC4uL0ltYWdlcy9UeXBlSWNvbnMuc3ZnI1VSTEJyZWFrcG9pbnQtbGlnaHQpOwog
fQogCiBAbWVkaWEgKHByZWZlcnMtY29sb3Itc2NoZW1lOiBkYXJrKSB7Ci0gICAgLmJyZWFrcG9p
bnQudXJsOm5vdCguYnJlYWtwb2ludC1wYXVzZWQtaWNvbikgLmljb24geworICAgIC5pdGVtLmJy
ZWFrcG9pbnQudXJsOm5vdCgucGF1c2VkKSAuaWNvbiB7CiAgICAgICAgIGNvbnRlbnQ6IHVybCgu
Li9JbWFnZXMvVHlwZUljb25zLnN2ZyNVUkxCcmVha3BvaW50LWRhcmspOwogICAgIH0KLX0KXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9VUkxCcmVha3BvaW50VHJl
ZUVsZW1lbnQuanMKaW5kZXggMDI4YTUwNmY3MTI1YjJlODQ3ZGFjZmQ1MDU4YWI5Mjc2MGNkMDI3
YS4uOGQyNzZkNDNjODY3ZDg4MDQwYzIxODQyYWI2OGVlZjgzMGNiYTUwMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1VSTEJyZWFrcG9pbnRUcmVlRWxlbWVudC5qcwpAQCAtMjMsMTUgKzIzLDE1IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotV0kuVVJMQnJlYWtwb2ludFRy
ZWVFbGVtZW50ID0gY2xhc3MgVVJMQnJlYWtwb2ludFRyZWVFbGVtZW50IGV4dGVuZHMgV0kuR2Vu
ZXJhbFRyZWVFbGVtZW50CitXSS5VUkxCcmVha3BvaW50VHJlZUVsZW1lbnQgPSBjbGFzcyBVUkxC
cmVha3BvaW50VHJlZUVsZW1lbnQgZXh0ZW5kcyBXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQKIHsK
LSAgICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lLCB0aXRsZX0gPSB7fSkKKyAg
ICBjb25zdHJ1Y3RvcihicmVha3BvaW50LCB7Y2xhc3NOYW1lcywgdGl0bGV9ID0ge30pCiAgICAg
ewogICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuVVJMQnJl
YWtwb2ludCk7CiAKLSAgICAgICAgbGV0IGNsYXNzTmFtZXMgPSBbImJyZWFrcG9pbnQiLCAidXJs
Il07Ci0gICAgICAgIGlmIChjbGFzc05hbWUpCi0gICAgICAgICAgICBjbGFzc05hbWVzLnB1c2go
Y2xhc3NOYW1lKTsKKyAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNsYXNzTmFtZXMpKQorICAg
ICAgICAgICAgY2xhc3NOYW1lcyA9IFtdOworICAgICAgICBjbGFzc05hbWVzLnB1c2goInVybCIp
OwogCiAgICAgICAgIGxldCBzdWJ0aXRsZTsKICAgICAgICAgaWYgKCF0aXRsZSkgewpAQCAtNDIs
MTE1ICs0Miw2IEBAIFdJLlVSTEJyZWFrcG9pbnRUcmVlRWxlbWVudCA9IGNsYXNzIFVSTEJyZWFr
cG9pbnRUcmVlRWxlbWVudCBleHRlbmRzIFdJLkdlbmVyYWxUCiAgICAgICAgICAgICAgICAgc3Vi
dGl0bGUgPSAiLyIgKyBicmVha3BvaW50LnVybCArICIvIjsKICAgICAgICAgfQogCi0gICAgICAg
IHN1cGVyKGNsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRsZSwgYnJlYWtwb2ludCk7Ci0KLSAgICAg
ICAgdGhpcy5zdGF0dXMgPSBXSS5JbWFnZVV0aWxpdGllcy51c2VTVkdTeW1ib2woIkltYWdlcy9C
cmVha3BvaW50LnN2ZyIpOwotICAgICAgICB0aGlzLnN0YXR1cy5jbGFzc05hbWUgPSBXSS5CcmVh
a3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VFbGVtZW50U3R5bGVDbGFzc05hbWU7Ci0KLSAg
ICAgICAgdGhpcy50b29sdGlwSGFuZGxlZFNlcGFyYXRlbHkgPSB0cnVlOwotICAgIH0KLQotICAg
IC8vIFByb3RlY3RlZAotCi0gICAgb25hdHRhY2goKQotICAgIHsKLSAgICAgICAgc3VwZXIub25h
dHRhY2goKTsKLQotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuVVJMQnJlYWtwb2ludC5FdmVudC5EaXNhYmxlZFN0YXRlQ2hhbmdlZCwgdGhpcy5fdXBk
YXRlU3RhdHVzLCB0aGlzKTsKLSAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlz
dGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LkJyZWFrcG9pbnRzRW5hYmxlZERpZENoYW5n
ZSwgdGhpcy5fdXBkYXRlU3RhdHVzLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9ib3VuZFN0YXR1
c0ltYWdlRWxlbWVudENsaWNrZWQgPSB0aGlzLl9zdGF0dXNJbWFnZUVsZW1lbnRDbGlja2VkLmJp
bmQodGhpcyk7Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9
IHRoaXMuX3N0YXR1c0ltYWdlRWxlbWVudEZvY3VzZWQuYmluZCh0aGlzKTsKLSAgICAgICAgdGhp
cy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24gPSB0aGlzLl9zdGF0dXNJbWFnZUVs
ZW1lbnRNb3VzZURvd24uYmluZCh0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5hZGRFdmVu
dExpc3RlbmVyKCJjbGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7
Ci0gICAgICAgIHRoaXMuc3RhdHVzLmFkZEV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91
bmRTdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMuYWRkRXZl
bnRMaXN0ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3Vz
ZURvd24pOwotCi0gICAgICAgIHRoaXMuX3VwZGF0ZVN0YXR1cygpOwotICAgIH0KLQotICAgIG9u
ZGV0YWNoKCkKLSAgICB7Ci0gICAgICAgIHN1cGVyLm9uZGV0YWNoKCk7Ci0KLSAgICAgICAgdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMp
OwotICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBu
dWxsLCB0aGlzKTsKLQotICAgICAgICB0aGlzLnN0YXR1cy5yZW1vdmVFdmVudExpc3RlbmVyKCJj
bGljayIsIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCk7Ci0gICAgICAgIHRo
aXMuc3RhdHVzLnJlbW92ZUV2ZW50TGlzdGVuZXIoImZvY3VzIiwgdGhpcy5fYm91bmRTdGF0dXNJ
bWFnZUVsZW1lbnRGb2N1c2VkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMucmVtb3ZlRXZlbnRMaXN0
ZW5lcigibW91c2Vkb3duIiwgdGhpcy5fYm91bmRTdGF0dXNJbWFnZUVsZW1lbnRNb3VzZURvd24p
OwotCi0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Q2xpY2tlZCA9IG51bGw7
Ci0gICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50Rm9jdXNlZCA9IG51bGw7Ci0g
ICAgICAgIHRoaXMuX2JvdW5kU3RhdHVzSW1hZ2VFbGVtZW50TW91c2VEb3duID0gbnVsbDsKLSAg
ICB9Ci0KLSAgICBvbmRlbGV0ZSgpCi0gICAgewotICAgICAgICAvLyBXZSBzZXQgdGhpcyBmbGFn
IHNvIHRoYXQgVHJlZU91dGxpbmVzIHRoYXQgd2lsbCByZW1vdmUgdGhpcwotICAgICAgICAvLyBC
cmVha3BvaW50VHJlZUVsZW1lbnQgd2lsbCBrbm93IHdoZXRoZXIgaXQgd2FzIGRlbGV0ZWQgZnJv
bQotICAgICAgICAvLyB3aXRoaW4gdGhlIFRyZWVPdXRsaW5lIG9yIGZyb20gb3V0c2lkZSBpdCAo
ZS5nLiBUZXh0RWRpdG9yKS4KLSAgICAgICAgdGhpcy5fX2RlbGV0ZWRWaWFEZWxldGVLZXlib2Fy
ZFNob3J0Y3V0ID0gdHJ1ZTsKLQotICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3Zl
VVJMQnJlYWtwb2ludCh0aGlzLnJlcHJlc2VudGVkT2JqZWN0KTsKLQotICAgICAgICByZXR1cm4g
dHJ1ZTsKLSAgICB9Ci0KLSAgICBvbmVudGVyKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX3RvZ2ds
ZUJyZWFrcG9pbnQoKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgb25zcGFj
ZSgpCi0gICAgewotICAgICAgICB0aGlzLl90b2dnbGVCcmVha3BvaW50KCk7Ci0gICAgICAgIHJl
dHVybiB0cnVlOwotICAgIH0KLQotICAgIHBvcHVsYXRlQ29udGV4dE1lbnUoY29udGV4dE1lbnUs
IGV2ZW50KQotICAgIHsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0OwotICAgICAgICBsZXQgbGFiZWwgPSBicmVha3BvaW50LmRpc2FibGVkID8gV0kuVUlT
dHJpbmcoIkVuYWJsZSBCcmVha3BvaW50IikgOiBXSS5VSVN0cmluZygiRGlzYWJsZSBCcmVha3Bv
aW50Iik7Ci0gICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0obGFiZWwsIHRoaXMuX3RvZ2ds
ZUJyZWFrcG9pbnQuYmluZCh0aGlzKSk7Ci0KLSAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kSXRl
bShXSS5VSVN0cmluZygiRGVsZXRlIEJyZWFrcG9pbnQiKSwgKCkgPT4gewotICAgICAgICAgICAg
V0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZVVSTEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7Ci0g
ICAgICAgIH0pOwotICAgIH0KLQotICAgIC8vIFByaXZhdGUKLQotICAgIF9zdGF0dXNJbWFnZUVs
ZW1lbnRDbGlja2VkKGV2ZW50KQotICAgIHsKLSAgICAgICAgdGhpcy5fdG9nZ2xlQnJlYWtwb2lu
dCgpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRGb2N1c2VkKGV2ZW50KQotICAg
IHsKLSAgICAgICAgLy8gUHJldmVudCB0cmVlIG91dGxpbmUgZm9jdXMuCi0gICAgICAgIGV2ZW50
LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF9zdGF0dXNJbWFnZUVsZW1lbnRNb3Vz
ZURvd24oZXZlbnQpCi0gICAgewotICAgICAgICAvLyBQcmV2ZW50IHRyZWUgZWxlbWVudCBzZWxl
Y3Rpb24uCi0gICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOwotICAgIH0KLQotICAgIF90
b2dnbGVCcmVha3BvaW50KCkKLSAgICB7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3Qu
ZGlzYWJsZWQgPSAhdGhpcy5yZXByZXNlbnRlZE9iamVjdC5kaXNhYmxlZDsKLSAgICB9Ci0KLSAg
ICBfdXBkYXRlU3RhdHVzKCkKLSAgICB7Ci0gICAgICAgIGlmICghdGhpcy5zdGF0dXMpCi0gICAg
ICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdGhpcy5zdGF0dXMuY2xhc3NMaXN0LnRvZ2dsZShX
SS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VEaXNhYmxlZFN0eWxlQ2xhc3NOYW1l
LCB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmRpc2FibGVkKTsKLSAgICAgICAgdGhpcy5zdGF0dXMu
Y2xhc3NMaXN0LnRvZ2dsZShXSS5CcmVha3BvaW50VHJlZUVsZW1lbnQuU3RhdHVzSW1hZ2VSZXNv
bHZlZFN0eWxlQ2xhc3NOYW1lLCBXSS5kZWJ1Z2dlck1hbmFnZXIuYnJlYWtwb2ludHNFbmFibGVk
KTsKKyAgICAgICAgc3VwZXIoYnJlYWtwb2ludCwge2NsYXNzTmFtZXMsIHRpdGxlLCBzdWJ0aXRs
ZX0pOwogICAgIH0KIH07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMTMzNjg2MThiNzc4MWIwYjJkOWIwYjBhYjZhMmM4MmUz
NzllMzU3Zi4uZTY4NTY1NWFjMjNjMjRjNmI3OTViYTI3NTQwMmFjNTI3MWI2NWFlMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQ2IEBACisyMDIwLTA4LTIzICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBhbGxvdyBldmVudCBicmVha3BvaW50cyB0
byBiZSBjb25maWd1cmVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMTUzNjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY2OTMyOTIxPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL3Jlc291cmNlcy9ldmVudC1icmVha3BvaW50LXV0aWxpdGllcy5qczoKKyAgICAgICAg
KFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9p
bnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMpOiBBZGRlZC4KKyAgICAgICAgKFRlc3RQ
YWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXN5
bmMgdGVhcmRvd24pOgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KToKKyAgICAgICAgKFRl
c3RQYWdlLnJlZ2lzdGVySW5pdGlhbGl6ZXIuSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
cmVtb3ZlQnJlYWtwb2ludCk6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS9icmVha3BvaW50LWZv
ci1ldmVudC1saXN0ZW5lci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kb20vYnJlYWtwb2lu
dC1mb3ItZXZlbnQtbGlzdGVuZXItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9k
b20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1lLWJyZWFrcG9pbnRzLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtw
b2ludHMtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9kb20tZGVidWdnZXIvZXZl
bnQtaW50ZXJ2YWwtYnJlYWtwb2ludHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWw6
CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3Bv
aW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVu
dC10aW1lb3V0LWJyZWFrcG9pbnRzLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RvbS1kZWJ1
Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgQWRk
IHRlc3RzIGZvciBuZXcgZXZlbnQgYnJlYWtwb2ludCBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisK
KyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0Lmpz
OgorICAgICAgICAoVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplci5JbnNwZWN0b3JUZXN0LnN0
YXJ0VHJhY2luZ0JyZWFrcG9pbnRzKToKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9y
ZXNvdXJjZXMvcHJvYmUtdGVzdC5qczoKKyAgICAgICAgKFRlc3RQYWdlLnJlZ2lzdGVySW5pdGlh
bGl6ZXIuUHJvdG9jb2xUZXN0LlByb2JlLmluc3RhbGxUcmFjaW5nTGlzdGVuZXJzKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tZXZhbC5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRtbDoKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1jb2x1bW5zLmh0bWw6CisgICAg
ICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtc2NvcGUuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItc3RhY2stb3ZlcmZsb3cuaHRtbDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWw6CisgICAgICAgICogaW5z
cGVjdG9yL2RlYnVnZ2VyL3Byb2JlLW1hbmFnZXItYWRkLXJlbW92ZS1hY3Rpb25zLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0
b0NvbnRpbnVlLWJyZWFrcG9pbnQuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
dGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVlLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9y
L2RlYnVnZ2VyL3RhaWwtcmVjdXJzaW9uLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3dvcmtl
ci9kZWJ1Z2dlci1wYXVzZS5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci93b3JrZXIvZGVidWdn
ZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRtbDoKKyAgICAgICAgVXBkYXRlIGV4aXN0aW5nIGJyZWFr
cG9pbnQgdGVzdHMgdG8gdXNlIG5ldyBtb2RlbCBvYmplY3RzLgorCiAyMDIwLTA4LTIwICBIZWN0
b3IgTG9wZXogIDxoZWN0b3JfaV9sb3BlekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lP
TihyMTU2NTQ2KTogMTggbWVkaWEgdGVzdHMgYnJva2VuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZGVidWdnZXItdGVzdC5qcwppbmRl
eCA0NmFhN2MzNDljYWU1MDAwMWU5NTc5MTljYjAwMDZlMzJkOGY5M2YzLi4yZTI3MjMzYzE1OWQ2
NGZjOTg1ZTUyOGU5OGU5ZjRkMDJhY2NiYmI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci10ZXN0LmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXRlc3QuanMKQEAgLTEz
LDM3ICsxMywzNyBAQCBJbnNwZWN0b3JUZXN0LnN0YXJ0VHJhY2luZ0JyZWFrcG9pbnRzID0gZnVu
Y3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCB3YXMgcmVtb3Zl
ZC4iKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5C
cmVha3BvaW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7
CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3Bv
aW50LkV2ZW50LkRpc2FibGVkU3RhdGVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAg
ICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2Vy
dChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0
IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBX
SS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgZGlzYWJsZWQgc3RhdGUgY2hhbmdl
ZDogIiArIGJyZWFrcG9pbnQuZGlzYWJsZWQpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2lu
dC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENo
YW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRF
dmVudExpc3RlbmVyKFdJLkphdmFTY3JpcHRCcmVha3BvaW50LkV2ZW50LlJlc29sdmVkU3RhdGVE
aWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZl
bnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwg
IlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkJyZWFrcG9pbnQgcmVzb2x2ZWQgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQucmVzb2x2
ZWQpOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuQXV0b0NvbnRpbnVlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewor
ICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2lu
dC5FdmVudC5BdXRvQ29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAg
IHZhciBicmVha3BvaW50ID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChi
cmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5
cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFrcG9pbnQgYXV0b2NvbnRpbnVlIHN0YXRlIGNoYW5n
ZWQ6ICIgKyBicmVha3BvaW50LmF1dG9Db250aW51ZSk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVh
a3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5Db25kaXRpb25EaWRD
aGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQuYWRk
RXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVu
Y3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0g
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50
LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJl
YWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBv
YmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBj
b25kaXRpb24gY2hhbmdlZDogIiArIGJyZWFrcG9pbnQuY29uZGl0aW9uKTsKICAgICB9KTsKIAot
ICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFj
dGlvbnNEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJyZWFr
cG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkFjdGlvbnNEaWRDaGFu
Z2UsIGZ1bmN0aW9uKGV2ZW50KSB7CiAgICAgICAgIHZhciBicmVha3BvaW50ID0gZXZlbnQudGFy
Z2V0OwotICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2YgV0kuQnJl
YWtwb2ludCwgIlVuZXhwZWN0ZWQgb2JqZWN0IHR5cGUhIik7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludCwgIlVuZXhw
ZWN0ZWQgb2JqZWN0IHR5cGUhIik7CiAKICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkJyZWFr
cG9pbnQgYWN0aW9ucyBjaGFuZ2VkLiBOZXcgY291bnQ6ICIgKyBicmVha3BvaW50LmFjdGlvbnMu
bGVuZ3RoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yL3Jlc291cmNlcy9wcm9iZS10ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9p
bnNwZWN0b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKaW5kZXggNzY5YWU0YWYwNDQwYzRmMTNm
MzY1YjE3Y2EwYmI1MDI2ZDBmYzM5Ni4uMTFlZWQyZTU4MWI2YTcwMGFkN2ZhYzYwYmVhNTcxYzU0
MjRlODliMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvcmVz
b3VyY2VzL3Byb2JlLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0
b3IvcmVzb3VyY2VzL3Byb2JlLXRlc3QuanMKQEAgLTYwLDM3ICs2MCwzNyBAQCBQcm90b2NvbFRl
c3QuUHJvYmUuaW5zdGFsbFRyYWNpbmdMaXN0ZW5lcnMgPSBmdW5jdGlvbigpCiAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IHdhcyByZW1vdmVkLiIpOwogICAgIH0pOwogCi0g
ICAgV0kuQnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlz
YWJsZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0
QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuRGlzYWJsZWRT
dGF0ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQg
PSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFu
Y2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3Bv
aW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiQnJlYWtwb2ludCBkaXNhYmxlZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5k
aXNhYmxlZCk7CiAgICAgfSk7CiAKLSAgICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIo
V0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVu
dCkgeworICAgIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuSmF2
YVNjcmlwdEJyZWFrcG9pbnQuRXZlbnQuUmVzb2x2ZWRTdGF0ZURpZENoYW5nZSwgZnVuY3Rpb24o
ZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5l
eHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2lu
dCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3Qg
dHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCByZXNvbHZl
ZCBzdGF0ZSBjaGFuZ2VkOiAiICsgYnJlYWtwb2ludC5yZXNvbHZlZCk7CiAgICAgfSk7CiAKLSAg
ICBXSS5CcmVha3BvaW50LmFkZEV2ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5BdXRv
Q29udGludWVEaWRDaGFuZ2UsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgV0kuSmF2YVNjcmlwdEJy
ZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkF1dG9Db250aW51
ZURpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQpIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBl
dmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2Vv
ZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50
LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEiKTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQnJlYWtwb2ludCBhdXRvY29udGludWUgc3RhdGUgY2hhbmdlZDogIiArIGJyZWFrcG9pbnQu
YXV0b0NvbnRpbnVlKTsKICAgICB9KTsKIAotICAgIFdJLkJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0
ZW5lcihXSS5CcmVha3BvaW50LkV2ZW50LkNvbmRpdGlvbkRpZENoYW5nZSwgZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3RlbmVyKFdJLkJy
ZWFrcG9pbnQuRXZlbnQuQ29uZGl0aW9uRGlkQ2hhbmdlLCBmdW5jdGlvbihldmVudCkgewogICAg
ICAgICB2YXIgYnJlYWtwb2ludCA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQoYnJlYWtwb2ludCBpbnN0YW5jZW9mIFdJLkJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVj
dCB0eXBlISIpOworICAgICAgICBjb25zb2xlLmFzc2VydChicmVha3BvaW50IGluc3RhbmNlb2Yg
V0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQsICJVbmV4cGVjdGVkIG9iamVjdCB0eXBlISIpOwogCiAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJCcmVha3BvaW50IGNvbmRpdGlvbiBjaGFuZ2VkOiAi
ICsgYnJlYWtwb2ludC5jb25kaXRpb24pOwogICAgIH0pOwogCi0gICAgV0kuQnJlYWtwb2ludC5h
ZGRFdmVudExpc3RlbmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVu
Y3Rpb24oZXZlbnQpIHsKKyAgICBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludC5hZGRFdmVudExpc3Rl
bmVyKFdJLkJyZWFrcG9pbnQuRXZlbnQuQWN0aW9uc0RpZENoYW5nZSwgZnVuY3Rpb24oZXZlbnQp
IHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGJyZWFrcG9pbnQgaW5zdGFuY2VvZiBXSS5CcmVha3BvaW50LCAiVW5leHBlY3Rl
ZCBvYmplY3QgdHlwZSEiKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoYnJlYWtwb2ludCBpbnN0
YW5jZW9mIFdJLkphdmFTY3JpcHRCcmVha3BvaW50LCAiVW5leHBlY3RlZCBvYmplY3QgdHlwZSEi
KTsKIAogICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQnJlYWtwb2ludCBhY3Rpb25zIGNoYW5n
ZWQuIE5ldyBjb3VudDogIiArIGJyZWFrcG9pbnQuYWN0aW9ucy5sZW5ndGgpOwogICAgIH0pOwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0
aW9uLWV2YWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50
LWFjdGlvbi1ldmFsLmh0bWwKaW5kZXggNTU2MmUyYjMzZjZlNjNmNmY3MTYyMTNhMTVhMzE1OGEz
ODdiMDkwNC4uZDU1NDdiY2M2NzBhNzE5OTI2MTE1MmJlNzUxNDcwZGMyOTM4MDQwZiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWV2
YWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1h
Y3Rpb24tZXZhbC5odG1sCkBAIC0yOCw5ICsyOCw5IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ICAgIHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24o
NCwgMCk7CiAgICAgICAgIC8vIENyZWF0ZSB0aGUgYnJlYWtwb2ludCBhbmQgaXRzIGFjdGlvbnMg
YmVmb3JlIHNlbmRpbmcgYW55dGhpbmcgdG8gdGhlIGJhY2tlbmQuCi0gICAgICAgIHZhciBicmVh
a3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtw
b2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgIGJy
ZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKLSAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVB
Y3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCBudWxsLCAiYWN0aW9uKGEs
IGIpIik7CisgICAgICAgIGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rp
b24uVHlwZS5FdmFsdWF0ZSwge2RhdGE6ICJhY3Rpb24oYSwgYikifSk7CiAKICAgICAgICAgV0ku
ZGVidWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWFjdGlvbi1sb2cu
aHRtbAppbmRleCBiN2NjMjNkYzM4NTVmNmZmNzc4MGJmZjZlNzg5NmY5NmRlNDQ4N2VlLi5lZTA5
NTVhNWI2M2I1YTY0NDA3MWYyZDU3MmE1M2RmYTQ3MWViMWRkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1hY3Rpb24tbG9nLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtYWN0aW9uLWxvZy5odG1s
CkBAIC0yNCwxMSArMjQsMTEgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICAgICAgICAg
IHJldHVybjsKIAogICAgICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5j
cmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwgMCk7Ci0gICAgICAgICAgICAgICAgbGV0IGJyZWFr
cG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICAgICAgbGV0
IGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9jYXRpb24pOwogICAg
ICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRpbnVlID0gdHJ1ZTsKIAogICAgICAgICAg
ICAgICAgIGZ1bmN0aW9uIGFkZExvZ0FjdGlvbihkYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAg
IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIGJy
ZWFrcG9pbnQuYWN0aW9ucy5sYXN0VmFsdWUsIGRhdGEpOworICAgICAgICAgICAgICAgICAgICBi
cmVha3BvaW50LmNyZWF0ZUFjdGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuTG9nLCB7ZGF0
YX0pOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIGFkZExvZ0FjdGlvbigi
YCR7YX1gIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1jb2x1bW5zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1jb2x1bW5zLmh0bWwKaW5kZXggZDAyZThlM2I5ZmMxNGU3MDgzZGU5ZWE3MTk4ZGVj
YmY4NzFjYWVjOS4uMTQxNzQ4NTg0M2Y3OGZmMWI4YWY3MTNkN2ZmZDJiYTY1MmI0ZjYyNyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtY29sdW1u
cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LWNv
bHVtbnMuaHRtbApAQCAtMzgsNyArMzgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFy
IHRlc3RJbmZvID0gdGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhdOwogICAgICAgICAKICAg
ICAgICAgdmFyIGxvY2F0aW9uID0gY3VycmVudFNjcmlwdHNbdGVzdEluZm8uc2NyaXB0SW5kZXhd
LmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbih0ZXN0SW5mby5saW5lLCB0ZXN0SW5mby5jb2x1bW4p
OwotICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsK
KyAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuSmF2YVNjcmlwdEJyZWFrcG9pbnQobG9j
YXRpb24pOwogCiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFr
cG9pbnQpOwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJl
YWtwb2ludC1zY29wZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtc2NvcGUuaHRtbAppbmRleCAyNDExNDQ2MDhkODg1OTE1Yjk2NWJjOTExMGQyNGM0NDRm
ZjI0MTQ1Li5mMGFjYzFhNDI0NGFhZjMxY2NkZDAwOTYxNmJiY2UzMWMzY2Y2N2UyIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1zY29wZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LXNjb3BlLmh0
bWwKQEAgLTI5LDcgKzI5LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgdmFyIHRlc3RJ
bmZvID0gdGVzdEluZm9MaXN0W2N1cnJlbnRUZXN0SW5kZXhdOwogICAgICAgICB2YXIgbG9jYXRp
b24gPSBzY3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUs
IHRlc3RJbmZvLmNvbHVtbik7Ci0gICAgICAgIHZhciBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFr
cG9pbnQobG9jYXRpb24pOworICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2Ny
aXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLmFk
ZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UodGVzdEluZm8uc3RhcnRGdW5jKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9kZWJ1Z2dlci1zdGFjay1vdmVyZmxvdy5odG1sIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKaW5kZXggNGQ5
NTdjODA5MjczN2ExZmYyNGIxZDNhNzViMjRjYzExOWRhYjFjZi4uMmM3ZjdkYTY0NGQ1YzUxMmEw
ZTQ1NzMwM2Q1MWEwZmM2NWZkMzExYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2RlYnVnZ2VyLXN0YWNrLW92ZXJmbG93Lmh0bWwKQEAgLTE1LDcg
KzE1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIDAgYmFzZWQgaW5kaWNlcy4KICAg
ICAgICAgbGV0IHRlc3RJbmZvID0ge2xpbmU6IDgsIGNvbHVtbjogOH07CiAgICAgICAgIGxldCBs
b2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24odGVzdEluZm8u
bGluZSwgdGVzdEluZm8uY29sdW1uKTsKLSAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBuZXcgV0ku
QnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkph
dmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoInN0YXJ0KCkiKTsKICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvcGF1c2UtcmVhc29uLmh0bWwKaW5kZXggYWNjMTk1M2I2MzIzMzNiZWYzMWI5NWNm
ZTA4YmRkMzBjZDVhOWZiYy4uYTZhZmQ0NDRlOGZhMWUzZDQ0NmRlN2VkMDE1MWI5OWU3OWI2NGQy
MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNlLXJlYXNv
bi5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1yZWFzb24u
aHRtbApAQCAtMTYsNyArMTYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgaWYgKCEvcGF1
c2UtcmVhc29uc1wuanMkLy50ZXN0KHNjcmlwdC51cmwpKQogICAgICAgICAgICAgY29udGludWU7
CiAgICAgICAgIGxldCBzb3VyY2VDb2RlTG9jYXRpb24gPSBzY3JpcHQuY3JlYXRlU291cmNlQ29k
ZUxvY2F0aW9uKDMsIDApOwotICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3Bv
aW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CisgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJ
LkphdmFTY3JpcHRCcmVha3BvaW50KHNvdXJjZUNvZGVMb2NhdGlvbik7CiAgICAgICAgIFdJLmRl
YnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICBicmVhazsK
ICAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcHJvYmUt
bWFuYWdlci1hZGQtcmVtb3ZlLWFjdGlvbnMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCmluZGV4IGJmNGFh
ZjIxYzIyNjllNmMzMTFiNGUzMWYzMTdlN2E5YTE4ZWVjYmIuLmY1NmEzNmIzNjNiMjg4NDA2Yjc3
ZTk0NDQyZjJiNTM4MjM5Mjc0ZDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9ucy5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wcm9iZS1tYW5hZ2VyLWFkZC1yZW1vdmUtYWN0aW9u
cy5odG1sCkBAIC0zMywxNCArMzMsMTQgQEAgZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAg
IHZhciBsb2NhdGlvbiA9IHNjcmlwdE9iamVjdC5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oNCwg
MCk7CiAgICAgICAgICAgICAvLyBDcmVhdGUgdGhlIGJyZWFrcG9pbnQgYW5kIGl0cyBhY3Rpb25z
IGJlZm9yZSBzZW5kaW5nIGFueXRoaW5nIHRvIHRoZSBiYWNrZW5kLgotICAgICAgICAgICAgdmFy
IGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICB2
YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAg
ICAgICAgICAgICBicmVha3BvaW50LmF1dG9Db250aW51ZSA9IHRydWU7CiAgICAgICAgICAgICBm
b3IgKHZhciBpIG9mIFswLCAxXSkKLSAgICAgICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFj
dGlvbihXSS5CcmVha3BvaW50QWN0aW9uLlR5cGUuUHJvYmUsIG51bGwsICJhIik7CisgICAgICAg
ICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5UeXBl
LlByb2JlLCB7ZGF0YTogImEifSk7CiAKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5h
ZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogCi0gICAgICAgICAgICBicmVha3BvaW50LmFkZEV2
ZW50TGlzdGVuZXIoV0kuQnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIGJyZWFrcG9pbnQuYWRkRXZlbnRMaXN0ZW5lcihXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludC5FdmVudC5SZXNvbHZlZFN0YXRlRGlkQ2hhbmdlLCBmdW5jdGlv
bigpIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRoYXQoYnJlYWtwb2lu
dC5yZXNvbHZlZCwgIkJyZWFrcG9pbnQgc2hvdWxkIGJlIHJlc29sdmVkLiIpOwogICAgICAgICAg
ICAgfSk7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVw
cGluZy9zdGVwcGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc3RlcHBpbmcvc3RlcHBpbmctdGhyb3VnaC1hdXRv
Q29udGludWUtYnJlYWtwb2ludC5odG1sCmluZGV4IGExNzI1Y2ZiZjlhNTAyNjgyZDBmZjZkZGQw
NjFjMDZiMzg5MDFkYzkuLmZmZmFlMGUyOTk4MTg3MTYyYzRhNDg5ZDcyMDkyNjQ2YzJhOWJhYTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zdGVwcGluZy9zdGVw
cGluZy10aHJvdWdoLWF1dG9Db250aW51ZS1icmVha3BvaW50Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3N0ZXBwaW5nL3N0ZXBwaW5nLXRocm91Z2gtYXV0b0NvbnRp
bnVlLWJyZWFrcG9pbnQuaHRtbApAQCAtMjQsOSArMjQsOSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIC8vIFNldCBhdXRvQ29udGludWUgYnJlYWtwb2ludC4KICAgICAgICAgICAgIGxl
dCBzY3JpcHQgPSBXSS5uZXR3b3JrTWFuYWdlci5tYWluRnJhbWUubWFpblJlc291cmNlLnNjcmlw
dHNbMF07CiAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBzY3JpcHQuY3JlYXRlU291cmNlQ29k
ZUxvY2F0aW9uKDgsIDApOwotICAgICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJl
YWtwb2ludChsb2NhdGlvbik7CisgICAgICAgICAgICB2YXIgYnJlYWtwb2ludCA9IG5ldyBXSS5K
YXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlvbik7CiAgICAgICAgICAgICBicmVha3BvaW50LmF1
dG9Db250aW51ZSA9IHRydWU7Ci0gICAgICAgICAgICBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihX
SS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIG51bGwsICJhbGVydCgxLjUpOyIpOwor
ICAgICAgICAgICAgYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtwb2ludEFjdGlvbi5U
eXBlLkV2YWx1YXRlLCB7ZGF0YTogImFsZXJ0KDEuNSk7In0pOwogICAgICAgICAgICAgV0kuZGVi
dWdnZXJNYW5hZ2VyLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludCk7CiAKICAgICAgICAgICAgIC8v
IFN0ZXAgdGhyb3VnaCB0aGUgYnJlYWtwb2ludC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFsdWUuaHRtbCBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci90YWlsLWRlbGV0ZWQtZnJhbWVzLXRoaXMtdmFs
dWUuaHRtbAppbmRleCAzOTc1OWRjYjY1NGFjYjAwMmYxZGE5MTAzMTQ2OWY4OTMxYTRiOWM4Li5j
NzJiYmNlMmI2MWMyOTgyZTk3MjVmZTkzNDYyMzQzNzYyZTc3ODBkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1kZWxldGVkLWZyYW1lcy10aGlzLXZhbHVl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtZGVsZXRlZC1m
cmFtZXMtdGhpcy12YWx1ZS5odG1sCkBAIC0xNSw3ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQog
ICAgICAgICAvLyAwIGJhc2VkIGluZGljZXMuCiAgICAgICAgIGxldCB0ZXN0SW5mbyA9IHtsaW5l
OiAzLCBjb2x1bW46IDR9OwogICAgICAgICBsZXQgbG9jYXRpb24gPSBzY3JpcHRPYmplY3QuY3Jl
YXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJbmZvLmNvbHVtbik7Ci0g
ICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkJyZWFrcG9pbnQobG9jYXRpb24pOworICAg
ICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5KYXZhU2NyaXB0QnJlYWtwb2ludChsb2NhdGlv
bik7CiAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKCJzdGFydEFCQygpIik7CiAg
ICAgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3RhaWwtcmVj
dXJzaW9uLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNp
b24uaHRtbAppbmRleCA4Y2JhYmExYWQyZWMzZDczY2IyNjMwODk4YTFlZWFiMTE3NTNhMmQwLi42
NWIwY2M2MWFlMzgxMThiNmE3MDZkYTM4MTMxMDZhNzAyYjQ0MDU4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvdGFpbC1yZWN1cnNpb24uaHRtbApAQCAtMjQsNyAr
MjQsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIHRlc3RJbmZvcyA9IFt7bGluZSA6
IDMsIGNvbHVtbiA6IDh9LCB7bGluZSA6IDQsIGNvbHVtbiA6IDh9XTsKICAgICAgICAgZm9yIChs
ZXQgdGVzdEluZm8gb2YgdGVzdEluZm9zKSB7CiAgICAgICAgICAgICBsZXQgbG9jYXRpb24gPSBz
Y3JpcHRPYmplY3QuY3JlYXRlU291cmNlQ29kZUxvY2F0aW9uKHRlc3RJbmZvLmxpbmUsIHRlc3RJ
bmZvLmNvbHVtbik7Ci0gICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3Bv
aW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAgIGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFT
Y3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQpOwogICAgICAgICB9CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoInN0YXJ0UmVjdXJzZSgpIik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVh
a3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2Vy
L2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggOTBi
MjZhNzdiZDU1NjY5NWYxYjAxZmYxNzI5ZDY1YTVkZjI4YzcxYy4uZjllZjA0Zjc5ZDZjYjgzZDg5
YWExNWQyOGI0NWE4NWFhM2VkMWQ4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS1kZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0
aW9uLWZyYW1lLWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dApAQCAtMSw4ICsxLDEzIEBACitDT05T
T0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NBR0U6IEJS
RUFLUE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9O
IExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBUZXN0cyBm
b3IgRXZlbnQgQW5pbWF0aW9uRnJhbWUgYnJlYWtwb2ludHMuCiAKIAogPT0gUnVubmluZyB0ZXN0
IHN1aXRlOiBET01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZQogLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLkFkZEJyZWFrcG9pbnQKK0Ny
ZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiYW5p
bWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRp
b25GcmFtZSIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50IGhh
bmRsZXIgaXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0gUnVu
bmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIu
RXZlbnQuQW5pbWF0aW9uRnJhbWUuQWRkRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAiYW5p
bWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImFuaW1hdGlvbi1mcmFt
ZSIgRXZlbnQgQnJlYWtwb2ludC4uLgogRGlzYWJsaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiBvbiB3aW5kb3cu
Li4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQg
YnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0
IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLlJlbW92ZUJyZWFrcG9pbnQK
K0NyZWF0aW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAi
YW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmluZyAiYW5pbWF0aW9u
LWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInJlcXVlc3RBbmltYXRpb25GcmFt
ZSIgb24gd2luZG93Li4uCkBAIC0yOSw2ICszNiw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2Ug
Zm9yIHJlbW92ZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0g
UnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LkFuaW1hdGlvbkZyYW1lLlJlbW92
ZURpc2FibGVkQnJlYWtwb2ludAorQ3JlYXRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJl
YWtwb2ludC4uLgogQWRkaW5nICJhbmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4K
IERpc2FibGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCiBSZW1vdmlu
ZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCkBAIC0zNiwzICs0NCwxMDMg
QEAgRmlyaW5nICJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hv
dWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBicmVha3BvaW50LgogLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuQW5pbWF0aW9uRnJhbWUuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJhbmltYXRpb24t
ZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVu
dCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdmYWxzZScuLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK1NldHRpbmcgY29u
ZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1
c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBE
T01EZWJ1Z2dlci5FdmVudC5BbmltYXRpb25GcmFtZS5PcHRpb25zLklnbm9yZUNvdW50CitDcmVh
dGluZyAiYW5pbWF0aW9uLWZyYW1lIiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1h
dGlvbi1mcmFtZSIgRXZlbnQgQnJlYWtwb2ludC4uLgorCitTZXR0aW5nIGlnbm9yZUNvdW50IHRv
ICcyJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1
c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmluZyB0ZXN0
IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuQW5p
bWF0aW9uRnJhbWUuT3B0aW9ucy5BY3Rpb24uTG9nCitDcmVhdGluZyAiYW5pbWF0aW9uLWZyYW1l
IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImFuaW1hdGlvbi1mcmFtZSIgRXZlbnQgQnJl
YWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBhdXRvLWNvbnRp
bnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUg
YnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitFZGl0aW5nIGxv
ZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCistLSBSdW5u
aW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5F
dmVudC5BbmltYXRpb25GcmFtZS5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5nICJh
bmltYXRpb24tZnJhbWUiIEV2ZW50IEJyZWFrcG9pbnQuLi4KK0FkZGluZyAiYW5pbWF0aW9uLWZy
YW1lIiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKwor
VHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50
IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24u
Li4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVh
a3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBh
Y3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3Bv
aW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNo
b3VsZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1h
dGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1k
ZWJ1Z2dlci9ldmVudC1hbmltYXRpb24tZnJhbWUtYnJlYWtwb2ludHMuaHRtbAppbmRleCBmMGJh
NDdiNDYyNTI1ZTI5ZWVlMDZkN2YxMmZhNTI3OTNjYTM0MDcxLi5mZmFlZjhiNGU0NzM0Zjg3Mzhh
OWJkOGJhOTA4MGIwNzM1ZjkzNTFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZG9tLWRlYnVnZ2VyL2V2ZW50LWFuaW1hdGlvbi1mcmFtZS1icmVha3BvaW50cy5odG1sCisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtYW5pbWF0aW9uLWZyYW1l
LWJyZWFrcG9pbnRzLmh0bWwKQEAgLTQ1LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3Bv
aW50LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAg
ICAgICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgIH0sCkBAIC01OCw3ICs1OCw3IEBAIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWpl
Y3QsIFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5BbmltYXRpb25GcmFtZSwgZXZlbnRO
YW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCkKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZl
bnRCcmVha3BvaW50LlR5cGUuQW5pbWF0aW9uRnJhbWUpCiAgICAgICAgICAgICAudGhlbihJbnNw
ZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAg
IC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIs
IGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTcyLDcgKzcyLDcg
QEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29s
dmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkFuaW1hdGlvbkZyYW1l
LCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7
CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9p
bnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50
KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQogICAgICAgICAgICAgLnRo
ZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAg
ICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndp
bmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg2LDcg
Kzg2LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNl
KHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkFuaW1hdGlv
bkZyYW1lLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVk
IGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1l
c0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5j
cmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lKQog
ICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJy
ZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKQEAgLTk1LDYgKzk1
LDggQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5F
dmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2
ZW50QnJlYWtwb2ludC5UeXBlLkFuaW1hdGlvbkZyYW1lLCBldmVudE5hbWUpOworCiAgICAgc3Vp
dGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2YWwtYnJlYWtwb2lu
dHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVu
dC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKaW5kZXggNWVjNDgwYTc4YjVkODNi
Y2Q3MGVhYjczYTk3YTIwZGZkZWI4MzY4ZC4uYWNiNzA5ZmYwZjgyYWQ4MGY1Zjc1YTQ1NDcwNDI4
MzdkZTdlM2EwMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3BvaW50cy1leHBl
Y3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAotVGVzdHMgZm9yIEV2ZW50IFRpbWVyIGJyZWFrcG9p
bnRzLgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBN
RVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BP
SU5UIEFDVElPTiBMT0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cg
NAorVGVzdHMgZm9yIEV2ZW50IEludGVydmFsIGJyZWFrcG9pbnRzLgogCiAKLT09IFJ1bm5pbmcg
dGVzdCBzdWl0ZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIKKz09IFJ1bm5pbmcgdGVzdCBzdWl0
ZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01E
ZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5BZGRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIEZpcmluZyAic2V0SW50ZXJ2YWwiIG9uIHdpbmRvdy4uLgogUEFTUzogU2hvdWxkIHBhdXNl
IGJlZm9yZSBldmVudCBoYW5kbGVyIGlzIHJ1bi4KQEAgLTE1LDYgKzIwLDcgQEAgQVNZTkMgQ0FM
TCBTVEFDSzoKIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNh
c2U6IERPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsLkFkZERpc2FibGVkQnJlYWtwb2ludAorQ3Jl
YXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgImludGVydmFsIiBF
dmVudCBCcmVha3BvaW50Li4uCiBEaXNhYmxpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50
Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAg
UEFTUzogU2hvdWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5p
bmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2
ZW50LkludGVydmFsLlJlbW92ZUJyZWFrcG9pbnQKK0NyZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQg
QnJlYWtwb2ludC4uLgogQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVt
b3ZpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFs
IiBvbiB3aW5kb3cuLi4KQEAgLTI5LDYgKzM2LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBwYXVzZSBm
b3IgcmVtb3ZlZCBicmVha3BvaW50LgogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBS
dW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuUmVtb3ZlRGlzYWJs
ZWRCcmVha3BvaW50CitDcmVhdGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFk
ZGluZyAiaW50ZXJ2YWwiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIERpc2FibGluZyAiaW50ZXJ2YWwi
IEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2lu
dC4uLgpAQCAtMzcsNiArNDUsNyBAQCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVk
IGRpc2FibGVkIGJyZWFrcG9pbnQuCiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5SZXBlYXRGaXJlQnJl
YWtwb2ludAorQ3JlYXRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcg
ImludGVydmFsIiBFdmVudCBCcmVha3BvaW50Li4uCiBGaXJpbmcgInNldEludGVydmFsIiBvbiB3
aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBiZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4u
CkBAIC01NSwzICs2NCwxMDMgQEAgQVNZTkMgQ0FMTCBTVEFDSzoKIDM6IFtQXSBHbG9iYWwgQ29k
ZQogLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9N
RGVidWdnZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJpbnRl
cnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtw
b2ludC4uLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0
byAndHJ1ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1
c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuSW50ZXJ2YWwuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgImludGVydmFs
IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRpbmcgImludGVydmFsIiBFdmVudCBCcmVha3BvaW50
Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVz
dCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5PcHRpb25zLkFjdGlvbi5Mb2cKK0Ny
ZWF0aW5nICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIg
RXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitF
ZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01E
ZWJ1Z2dlci5FdmVudC5JbnRlcnZhbC5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5n
ICJpbnRlcnZhbCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJpbnRlcnZhbCIgRXZlbnQg
QnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdn
ZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rp
b24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCitF
bmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFT
UzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRlcnZhbC1icmVha3Bv
aW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1pbnRl
cnZhbC1icmVha3BvaW50cy5odG1sCmluZGV4IGIzYjJhZmZlODY0ZmMwMjc5YWE4ODllMjY0ZTgz
YjdjMWM4OGM0NjQuLjAyODRiZGEyOWFlYmI4Yzc4MmE0NTE1ZDVmNzU5ZWFkMDNiODI5YmMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtaW50ZXJ2
YWwtYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LWludGVydmFsLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTksMjAgKzksMjAgQEAKIGxl
dCBpbnRlcnZhbElEID0gTmFOOwogCiBmdW5jdGlvbiBoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2YWwo
KSB7Ci0gICAgVGVzdFBhZ2UuZGlzcGF0Y2hFdmVudFRvRnJvbnRlbmQoIlRlc3RQYWdlLXNldElu
dGVydmFsIik7Ci0KICAgICByZXBlYXRDbGVhckludGVydmFsKCk7CisKKyAgICBUZXN0UGFnZS5k
aXNwYXRjaEV2ZW50VG9Gcm9udGVuZCgiVGVzdFBhZ2Utc2V0SW50ZXJ2YWwiKTsKIH0KIAogZnVu
Y3Rpb24gaGFuZGxlUmVwZWF0KCkgewogfQogCiBmdW5jdGlvbiB0cmlnZ2VyX3NldEludGVydmFs
KCkgewotICAgIGludGVydmFsSUQgPSBzZXRJbnRlcnZhbChoYW5kbGVXaW5kb3dfc2V0SW50ZXJ2
YWwsIDEwMCk7CisgICAgaW50ZXJ2YWxJRCA9IHNldEludGVydmFsKGhhbmRsZVdpbmRvd19zZXRJ
bnRlcnZhbCwgMTApOwogfQogCiBmdW5jdGlvbiByZXBlYXRTZXRJbnRlcnZhbCgpIHsKLSAgICBp
bnRlcnZhbElEID0gc2V0SW50ZXJ2YWwoaGFuZGxlUmVwZWF0LCAxMDApOworICAgIGludGVydmFs
SUQgPSBzZXRJbnRlcnZhbChoYW5kbGVSZXBlYXQsIDEwKTsKIH0KIAogZnVuY3Rpb24gcmVwZWF0
Q2xlYXJJbnRlcnZhbCgpIHsKQEAgLTMzLDcgKzMzLDcgQEAgZnVuY3Rpb24gcmVwZWF0Q2xlYXJJ
bnRlcnZhbCgpIHsKIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgY29uc3QgZXZlbnROYW1lID0gInNl
dEludGVydmFsIjsKIAotICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNT
dWl0ZSgiRE9NRGVidWdnZXIuRXZlbnQuVGltZXIiKTsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0
b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUoIkRPTURlYnVnZ2VyLkV2ZW50LkludGVydmFsIik7CiAK
ICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAgICAgIG5hbWU6IGBET01EZWJ1Z2dlci5FdmVu
dC5JbnRlcnZhbC5BZGRCcmVha3BvaW50YCwKQEAgLTYxLDcgKzYxLDcgQEAgZnVuY3Rpb24gdGVz
dCgpIHsKICAgICAgICAgICAgICAgICByZXNvbHZlKCk7CiAgICAgICAgICAgICB9KTsKIAotICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVh
a3BvaW50LlR5cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQogICAgICAgICAg
ICAgLmNhdGNoKHJlamVjdCk7CiAgICAgICAgIH0sCkBAIC03NCw3ICs3NCw3IEBAIGZ1bmN0aW9u
IHRlc3QoKSB7CiAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5mYWlsT25QYXVzZShyZXNvbHZlLCByZWplY3Qs
IFdJLkRlYnVnZ2VyTWFuYWdlci5QYXVzZVJlYXNvbi5JbnRlcnZhbCwgZXZlbnROYW1lLCAiU2hv
dWxkIG5vdCBwYXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIuYWxsSW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuSW50ZXJ2YWwpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAg
ICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTg4LDcgKzg4LDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsK
ICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdn
ZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkludGVydmFsLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBh
dXNlIGZvciByZW1vdmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFs
bEludGVydmFsc0JyZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFs
KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQucmVtb3Zl
QnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0Y2go
cmVqZWN0KTsKQEAgLTEwMiw3ICsxMDIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIu
UGF1c2VSZWFzb24uSW50ZXJ2YWwsIGV2ZW50TmFtZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJl
bW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxs
SW50ZXJ2YWxzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwp
CiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxl
QnJlYWtwb2ludCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LnJlbW92ZUJyZWFrcG9pbnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2
ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtMTM0LDcg
KzEzNCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJy
ZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpCisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50
KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkludGVydmFsKQogICAgICAgICAgICAgLnRoZW4oKCkg
PT4gewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGaXJpbmcgXCJzZXRJbnRl
cnZhbFwiIG9uIHdpbmRvdy4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJbnNwZWN0b3JU
ZXN0LmV2YWx1YXRlSW5QYWdlKGByZXBlYXRTZXRJbnRlcnZhbCgpYCk7CkBAIC0xNDQsMTEgKzE0
NCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5hZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0ku
RXZlbnRCcmVha3BvaW50LlR5cGUuSW50ZXJ2YWwsIGV2ZW50TmFtZSk7CisKICAgICBzdWl0ZS5y
dW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkgb25s
b2FkPSJydW5UZXN0KCkiPgotICAgIDxwPlRlc3RzIGZvciBFdmVudCBUaW1lciBicmVha3BvaW50
cy48L3A+CisgICAgPHA+VGVzdHMgZm9yIEV2ZW50IEludGVydmFsIGJyZWFrcG9pbnRzLjwvcD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtbGlzdGVuZXItYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1l
eHBlY3RlZC50eHQKaW5kZXggNzgxYjdjZDJkZDBhNTgwZWU5OTQ1Mzc5ZTQzYWI2OGFjM2E1MGEy
YS4uYTllZjhmZjhhZGZjZmFiNDA1MjM4YjVlNDFhNGUwMDA0OTUzZTVjNiAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVha3Bv
aW50cy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dl
ci9ldmVudC1saXN0ZW5lci1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsMyArMSw3IEBA
CitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAxCitDT05TT0xFIE1FU1NB
R0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyAyCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQg
QUNUSU9OIExPRyAzCitDT05TT0xFIE1FU1NBR0U6IEJSRUFLUE9JTlQgQUNUSU9OIExPRyA0CiBU
ZXN0cyBmb3IgRXZlbnQgTGlzdGVuZXIgYnJlYWtwb2ludHMuCiAKIApAQCAtNzUsNiArNzksNyBA
QCBQQVNTOiBTaG91bGQgbm90IHBhdXNlIGZvciByZW1vdmVkIGRpc2FibGVkIGJyZWFrcG9pbnQu
CiAtLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCiAKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01E
ZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5BbGxFdmVudHNCcmVha3BvaW50CitDcmVhdGluZyAibGlz
dGVuZXIiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGluZyAibGlzdGVuZXIiIEV2ZW50IEJyZWFr
cG9pbnQuLi4KIEZpcmluZyAiY2xpY2siIG9uIGJvZHkuLi4KIFBBU1M6IFNob3VsZCBwYXVzZSBi
ZWZvcmUgZXZlbnQgaGFuZGxlciBpcyBydW4uCkBAIC0xMjEsMyArMTI2LDEwMyBAQCBEaXNhYmxp
bmcgYnJlYWtwb2ludHMuLi4KIFBBU1M6IFNob3VsZCBoYXZlIHBhdXNlZCBvbmNlLgogLS0gUnVu
bmluZyB0ZXN0IHRlYXJkb3duLgogCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIu
RXZlbnQuTGlzdGVuZXIuT3B0aW9ucy5Db25kaXRpb24KK0NyZWF0aW5nICJjbGljayIgRXZlbnQg
QnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZlbnQgQnJlYWtwb2ludC4u
LgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1
ZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorLS0gUnVubmlu
ZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdnZXIuRXZl
bnQuTGlzdGVuZXIuT3B0aW9ucy5JZ25vcmVDb3VudAorQ3JlYXRpbmcgImNsaWNrIiBFdmVudCBC
cmVha3BvaW50Li4uCitBZGRpbmcgImxpc3RlbmVyOmNsaWNrIiBFdmVudCBCcmVha3BvaW50Li4u
CisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4u
CitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BB
U1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91
bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBj
YXNlOiBET01EZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkFjdGlvbi5Mb2cKK0NyZWF0
aW5nICJjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIg
RXZlbnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5n
IGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgor
UEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCitFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxk
IGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitF
ZGl0aW5nIGxvZyBhY3Rpb24uLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBT
aG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01E
ZWJ1Z2dlci5FdmVudC5MaXN0ZW5lci5PcHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKK0NyZWF0aW5n
ICJjbGljayIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJsaXN0ZW5lcjpjbGljayIgRXZl
bnQgQnJlYWtwb2ludC4uLgorCitBZGRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJp
bmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24u
CitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1Ry
aWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBh
Y3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4u
CitFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgor
UEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgbm90
IHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFr
cG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzog
U2hvdWxkIG5vdCBwYXVzZS4KKy0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1saXN0ZW5lci1icmVh
a3BvaW50cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC1s
aXN0ZW5lci1icmVha3BvaW50cy5odG1sCmluZGV4IGZiYjQ5ODA4ZWZlOTc4Y2I1NWQ0NjE0Mzll
ZTBlYmI4ZGE3YmI1NzEuLjY3NDYxNmE4NTg4ZDNlNDkyMzZiNDM5NTNhMGJhYWQ0OGIzZDhjZjkg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQtbGlz
dGVuZXItYnJlYWtwb2ludHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRl
YnVnZ2VyL2V2ZW50LWxpc3RlbmVyLWJyZWFrcG9pbnRzLmh0bWwKQEAgLTU4LDcgKzU4LDcgQEAg
ZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAg
ICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwg
ZXZlbnROYW1lKQorICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIHtldmVu
dE5hbWV9KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3Bv
aW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQogICAgICAgICAgICAgICAgIC5jYXRj
aChyZWplY3QpOwogICAgICAgICAgICAgfSwKQEAgLTcxLDcgKzcxLDcgQEAgZnVuY3Rpb24gdGVz
dCgpIHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVq
ZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFtZSwg
IlNob3VsZCBub3QgcGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJ
LkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCBldmVudE5hbWUpCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVu
dEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAg
LnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZGlzYWJsZUJyZWFrcG9pbnQpCiAg
ICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRF
dmVudCgiYm9keSIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAgICAgLmNhdGNoKHJlamVjdCk7
CkBAIC04NSw3ICs4NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICB0ZXN0KHJl
c29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVidWdnZXJNYW5hZ2VyLlBh
dXNlUmVhc29uLkxpc3RlbmVyLCBldmVudE5hbWUsICJTaG91bGQgbm90IHBhdXNlIGZvciByZW1v
dmVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50
QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3Rl
bmVyLCBldmVudE5hbWUpCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwg
e2V2ZW50TmFtZX0pCiAgICAgICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQucmVtb3ZlQnJlYWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0
b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2FpdEV2ZW50KCJib2R5IiwgZXZlbnROYW1lKSkKICAg
ICAgICAgICAgICAgICAuY2F0Y2gocmVqZWN0KTsKQEAgLTk5LDcgKzk5LDcgQEAgZnVuY3Rpb24g
dGVzdCgpIHsKICAgICAgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7CiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwg
cmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uTGlzdGVuZXIsIGV2ZW50TmFt
ZSwgIlNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4iKTsK
IAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJy
ZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIsIGV2ZW50TmFtZSkKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3Bv
aW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCB7ZXZlbnROYW1lfSkKICAgICAg
ICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJl
YWtwb2ludCkKICAgICAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5yZW1vdmVCcmVha3BvaW50KQogICAgICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRl
c3QuRXZlbnRCcmVha3BvaW50LmF3YWl0RXZlbnQoImJvZHkiLCBldmVudE5hbWUpKQpAQCAtMTI4
LDcgKzEyOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgLmNhdGNoKHJl
amVjdCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVu
dEJyZWFrcG9pbnQuYWRkQnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsTGlzdGVu
ZXJzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50
LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuTGlzdGVuZXIpCiAgICAg
ICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkZpcmluZyBcImNsaWNrXCIgb24gYm9keS4uLiIpOwogICAgICAgICAgICAgICAgIHJldHVybiBJ
bnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyX2NsaWNrKClgKTsKQEAgLTE3Myw3
ICsxNzMsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIHJlc29sdmUoKTsK
ICAgICAgICAgICAgIH0pOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtw
b2ludC5jcmVhdGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxpc3RlbmVyLCAi
Y2xpY2siKQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRl
QnJlYWtwb2ludChXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5MaXN0ZW5lciwge2V2ZW50TmFtZTog
ImNsaWNrIn0pCiAgICAgICAgICAgICAudGhlbigoKSA9PiB7CiAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5sb2coIkZpcmluZyBcImNsaWNrXCIgb24gZGl2I3guLi4iKTsKICAgICAgICAg
ICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tYKClgKTsK
QEAgLTIxMSw3ICsyMTEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICAgICAgICAgIC50
aGVuKHJlc29sdmUsIHJlamVjdCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludChXSS5FdmVudEJyZWFr
cG9pbnQuVHlwZS5MaXN0ZW5lciwgImNsaWNrIikKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
RXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUu
TGlzdGVuZXIsIHtldmVudE5hbWU6ICJjbGljayJ9KQogICAgICAgICAgICAgLnRoZW4oKCkgPT4g
ewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJGaXJpbmcgXCJjbGlja1wiIG9u
IGRpdiN4Li4uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEluc3BlY3RvclRlc3QuZXZhbHVh
dGVJblBhZ2UoYGNsaWNrWCgpYCk7CkBAIC0yMjEsNiArMjIxLDggQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJk
b3duLAogICAgIH0pOwogCisgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYWRkQnJl
YWtwb2ludE9wdGlvbnNUZXN0Q2FzZXMoc3VpdGUsIFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLkxp
c3RlbmVyLCAiY2xpY2siKTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwog
fQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVn
Z2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RvbS1kZWJ1Z2dlci9ldmVudC10aW1lb3V0LWJyZWFrcG9pbnRzLWV4cGVjdGVk
LnR4dAppbmRleCBjYTVkMDEwZGVlYzlhYTQ5Y2JiYjQxYjRlNGVhM2ZjYjQ4ZDNhN2RiLi45YTZi
ZjhhZDFiMmFhNzk2MjliODYzZGU3ZTNkNGRmYjUxODgzMzJjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQtYnJlYWtwb2ludHMtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
dGltZW91dC1icmVha3BvaW50cy1leHBlY3RlZC50eHQKQEAgLTEsOCArMSwxMyBAQAorQ09OU09M
RSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgMQorQ09OU09MRSBNRVNTQUdFOiBCUkVB
S1BPSU5UIEFDVElPTiBMT0cgMgorQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBM
T0cgMworQ09OU09MRSBNRVNTQUdFOiBCUkVBS1BPSU5UIEFDVElPTiBMT0cgNAogVGVzdHMgZm9y
IEV2ZW50IFRpbWVyIGJyZWFrcG9pbnRzLgogCiAKID09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogRE9N
RGVidWdnZXIuRXZlbnQuVGltZXIKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5F
dmVudC5UaW1lb3V0LkFkZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVh
a3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAi
c2V0VGltZW91dCIgb24gd2luZG93Li4uCiBQQVNTOiBTaG91bGQgcGF1c2UgYmVmb3JlIGV2ZW50
IGhhbmRsZXIgaXMgcnVuLgpAQCAtMTUsNiArMjAsNyBAQCBBU1lOQyBDQUxMIFNUQUNLOgogLS0g
UnVubmluZyB0ZXN0IHRlYXJkb3duLgogCiAtLSBSdW5uaW5nIHRlc3QgY2FzZTogRE9NRGVidWdn
ZXIuRXZlbnQuVGltZW91dC5BZGREaXNhYmxlZEJyZWFrcG9pbnQKK0NyZWF0aW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCiBBZGRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQu
Li4KIERpc2FibGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogRmlyaW5nICJzZXRU
aW1lb3V0IiBvbiB3aW5kb3cuLi4KQEAgLTIyLDYgKzI4LDcgQEAgUEFTUzogU2hvdWxkIG5vdCBw
YXVzZSBmb3IgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4K
IAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVvdXQuUmVtb3Zl
QnJlYWtwb2ludAorQ3JlYXRpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIEFkZGlu
ZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogUmVtb3ZpbmcgInRpbWVvdXQiIEV2ZW50
IEJyZWFrcG9pbnQuLi4KIEZpcmluZyAic2V0VGltZW91dCIgb24gd2luZG93Li4uCkBAIC0yOSw2
ICszNiw3IEBAIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9yIHJlbW92ZWQgYnJlYWtwb2ludC4K
IC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4KIAogLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURl
YnVnZ2VyLkV2ZW50LlRpbWVvdXQuUmVtb3ZlRGlzYWJsZWRCcmVha3BvaW50CitDcmVhdGluZyAi
dGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgogQWRkaW5nICJ0aW1lb3V0IiBFdmVudCBCcmVh
a3BvaW50Li4uCiBEaXNhYmxpbmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KIFJlbW92
aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCkBAIC0zNiwzICs0NCwxMDMgQEAgRmly
aW5nICJzZXRUaW1lb3V0IiBvbiB3aW5kb3cuLi4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgZm9y
IHJlbW92ZWQgZGlzYWJsZWQgYnJlYWtwb2ludC4KIC0tIFJ1bm5pbmcgdGVzdCB0ZWFyZG93bi4K
IAorLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTURlYnVnZ2VyLkV2ZW50LlRpbWVyLk9wdGlvbnMu
Q29uZGl0aW9uCitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5n
ICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgY29uZGl0aW9uIHRvICdm
YWxzZScuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBh
dXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2Uu
CisKK1NldHRpbmcgY29uZGl0aW9uIHRvICd0cnVlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQ
QVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24uCisKKy0tIFJ1bm5p
bmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25zLklnbm9yZUNvdW50
CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCisKK1NldHRpbmcgaWdub3JlQ291bnQgdG8gJzInLi4uCisK
K1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgbm90IHBhdXNlLgorCitUcmlnZ2Vy
aW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCistLSBSdW5uaW5nIHRlc3QgdGVhcmRvd24u
CisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET01EZWJ1Z2dlci5FdmVudC5UaW1lci5PcHRpb25z
LkFjdGlvbi5Mb2cKK0NyZWF0aW5nICJ0aW1lb3V0IiBFdmVudCBCcmVha3BvaW50Li4uCitBZGRp
bmcgInRpbWVvdXQiIEV2ZW50IEJyZWFrcG9pbnQuLi4KKworQWRkaW5nIGxvZyBhY3Rpb24uLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4u
CisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtw
b2ludCBhY3Rpb24uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4u
LgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5v
dCBwYXVzZS4KKworRWRpdGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2lu
dC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNTOiBTaG91
bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCistLSBSdW5uaW5nIHRl
c3QgY2FzZTogRE9NRGVidWdnZXIuRXZlbnQuVGltZXIuT3B0aW9ucy5BY3Rpb25zLkV2YWx1YXRl
CitDcmVhdGluZyAidGltZW91dCIgRXZlbnQgQnJlYWtwb2ludC4uLgorQWRkaW5nICJ0aW1lb3V0
IiBFdmVudCBCcmVha3BvaW50Li4uCisKK0FkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJp
Z2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFj
dGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4K
KworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3Bv
aW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rp
b24uLi4KK0VuYWJsaW5nIGF1dG8tY29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50
Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3Vs
ZCBub3QgcGF1c2UuCisKK0VkaXRpbmcgZXZhbHVhdGUgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcg
YnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQ
QVNTOiBTaG91bGQgbm90IHBhdXNlLgorLS0gUnVubmluZyB0ZXN0IHRlYXJkb3duLgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tLWRlYnVnZ2VyL2V2ZW50LXRpbWVvdXQt
YnJlYWtwb2ludHMuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZl
bnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCmluZGV4IGE0MWVjZDY5ZWNiN2QxMzg0ZDA3N2I5
NTBjYzEwMDU3YWU0MTAwOTEuLjZhMzQ5YTRiNzcyMzVlOWJiMTg4YzRjMWExY2I4YjNhNzNhNDIx
YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvZXZlbnQt
dGltZW91dC1icmVha3BvaW50cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20t
ZGVidWdnZXIvZXZlbnQtdGltZW91dC1icmVha3BvaW50cy5odG1sCkBAIC0xMSw3ICsxMSw3IEBA
IGZ1bmN0aW9uIGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0KCkgewogfQogCiBmdW5jdGlvbiB0cmln
Z2VyX3NldFRpbWVvdXQoKSB7Ci0gICAgc2V0VGltZW91dChoYW5kbGVXaW5kb3dfc2V0VGltZW91
dCwgMTAwKTsKKyAgICBzZXRUaW1lb3V0KGhhbmRsZVdpbmRvd19zZXRUaW1lb3V0LCAxMCk7CiB9
CiAKIGZ1bmN0aW9uIHRlc3QoKSB7CkBAIC00NSw3ICs0NSw3IEBAIGZ1bmN0aW9uIHRlc3QoKSB7
CiAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOwogICAgICAgICAgICAgfSk7CiAKLSAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVi
dWdnZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50
LlR5cGUuVGltZW91dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmF3YWl0RXZlbnQoIndpbmRvdyIsIGV2ZW50TmFtZSkpCiAgICAgICAgICAgICAuY2F0
Y2gocmVqZWN0KTsKICAgICAgICAgfSwKQEAgLTU4LDcgKzU4LDcgQEAgZnVuY3Rpb24gdGVzdCgp
IHsKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmZhaWxPblBhdXNlKHJlc29sdmUsIHJlamVjdCwgV0kuRGVi
dWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLlRpbWVvdXQsIGV2ZW50TmFtZSwgIlNob3VsZCBub3Qg
cGF1c2UgZm9yIGRpc2FibGVkIGJyZWFrcG9pbnQuIik7CiAKLSAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmFkZEJyZWFrcG9pbnQoV0kuZG9tRGVidWdnZXJNYW5hZ2Vy
LmFsbFRpbWVvdXRzQnJlYWtwb2ludCkKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuRXZlbnRC
cmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQoV0kuRXZlbnRCcmVha3BvaW50LlR5cGUuVGltZW91
dCkKICAgICAgICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmRpc2Fi
bGVCcmVha3BvaW50KQogICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFr
cG9pbnQuYXdhaXRFdmVudCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRj
aChyZWplY3QpOwpAQCAtNzIsNyArNzIsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0
ZXN0KHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQuZmFpbE9uUGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIu
UGF1c2VSZWFzb24uVGltZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVt
b3ZlZCBicmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJl
YWtwb2ludC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0Jy
ZWFrcG9pbnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVh
dGVCcmVha3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpCiAgICAgICAgICAg
ICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5yZW1vdmVCcmVha3BvaW50KQog
ICAgICAgICAgICAgLnRoZW4oSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuYXdhaXRFdmVu
dCgid2luZG93IiwgZXZlbnROYW1lKSkKICAgICAgICAgICAgIC5jYXRjaChyZWplY3QpOwpAQCAt
ODYsNyArODYsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgewogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuZmFpbE9u
UGF1c2UocmVzb2x2ZSwgcmVqZWN0LCBXSS5EZWJ1Z2dlck1hbmFnZXIuUGF1c2VSZWFzb24uVGlt
ZW91dCwgZXZlbnROYW1lLCAiU2hvdWxkIG5vdCBwYXVzZSBmb3IgcmVtb3ZlZCBkaXNhYmxlZCBi
cmVha3BvaW50LiIpOwogCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2lu
dC5hZGRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxUaW1lb3V0c0JyZWFrcG9p
bnQpCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVh
a3BvaW50KFdJLkV2ZW50QnJlYWtwb2ludC5UeXBlLlRpbWVvdXQpCiAgICAgICAgICAgICAudGhl
bihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5kaXNhYmxlQnJlYWtwb2ludCkKICAgICAg
ICAgICAgIC50aGVuKEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnJlbW92ZUJyZWFrcG9p
bnQpCiAgICAgICAgICAgICAudGhlbihJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5hd2Fp
dEV2ZW50KCJ3aW5kb3ciLCBldmVudE5hbWUpKQpAQCAtOTUsNiArOTUsOCBAQCBmdW5jdGlvbiB0
ZXN0KCkgewogICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
dGVhcmRvd24sCiAgICAgfSk7CiAKKyAgICBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5h
ZGRCcmVha3BvaW50T3B0aW9uc1Rlc3RDYXNlcyhzdWl0ZSwgV0kuRXZlbnRCcmVha3BvaW50LlR5
cGUuVGltZW91dCwgZXZlbnROYW1lKTsKKwogICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlz
aCgpOwogfQogPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9t
LWRlYnVnZ2VyL3Jlc291cmNlcy9ldmVudC1icmVha3BvaW50LXV0aWxpdGllcy5qcyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQt
dXRpbGl0aWVzLmpzCmluZGV4IDE5YjI1ZDFhZGQyMGIyZjVlMGExYjJmN2Q4MzMyOGZmYmJlMTZk
YzYuLmU0MDEzYTgxYmNlNGQzZDRlYTUzMmFlZjMxZDM2MTdhYjUyNzRhNDUgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdnZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFr
cG9pbnQtdXRpbGl0aWVzLmpzCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20tZGVidWdn
ZXIvcmVzb3VyY2VzL2V2ZW50LWJyZWFrcG9pbnQtdXRpbGl0aWVzLmpzCkBAIC0xLDE0ICsxLDE5
OSBAQAogVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXplcigoKSA9PiB7CiAgICAgSW5zcGVjdG9y
VGVzdC5FdmVudEJyZWFrcG9pbnQgPSB7fTsKIAorICAgIEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LmFkZEJyZWFrcG9pbnRPcHRpb25zVGVzdENhc2VzID0gZnVuY3Rpb24oc3VpdGUsIHR5
cGUsIGV2ZW50TmFtZSkgeworICAgICAgICBhc3luYyBmdW5jdGlvbiB0cmlnZ2VyQnJlYWtwb2lu
dCgpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4iKTsKKyAgICAgICAgICAgIHJldHVybiBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hd2FpdEV2ZW50KCJUZXN0UGFnZS0iICsgZXZlbnROYW1lKSwKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2VyXyR7ZXZl
bnROYW1lfSgpYCksCisgICAgICAgICAgICBdKTsKKyAgICAgICAgfQorCisgICAgICAgIHN1aXRl
LmFkZFRlc3RDYXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMu
Q29uZGl0aW9uIiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCB0aGUgZGVi
dWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVha3BvaW50IGhhcyBhIHRydXRoeSBi
cmVha3BvaW50IGNvbmRpdGlvbi4iLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAg
ICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlz
dGVuZXIgPSBXSS5kZWJ1Z2dlck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1h
bmFnZXIuRXZlbnQuUGF1c2VkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytw
YXVzZUNvdW50OworICAgICAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1l
KCk7CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2lu
dCA9IGF3YWl0IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQo
dHlwZSwge2V2ZW50TmFtZX0pOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXds
aW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBjb25k
aXRpb24gdG8gJ2ZhbHNlJy4uLiIpOworICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0
aW9uID0gImZhbHNlIjsKKworICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1ZScuLi4i
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuY29uZGl0aW9uID0gInRydWUi
OworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dlckJyZWFr
cG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCAwLCAiU2hv
dWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpIC0gMiwg
IlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBX
SS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIu
RXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgdGVh
cmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVha3BvaW50LnRlYXJkb3duLAorICAgICAgICB9
KTsKKworICAgICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgICAgICBuYW1lOiBzdWl0
ZS5uYW1lICsgIi5PcHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAgICAgIGRlc2NyaXB0aW9u
OiAiQ2hlY2sgdGhhdCB0aGUgZGVidWdnZXIgd2lsbCBub3QgcGF1c2UgdW5sZXNzIHRoZSBicmVh
a3BvaW50IGlzIGhpdCBhdCBsZWFzdCBhcyBtYW55IHRpbWVzIGFzIGl0J3MgYGlnbm9yZUNvdW50
YC4iLAorICAgICAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgICAgICBsZXQgcGF1
c2VDb3VudCA9IDA7CisKKyAgICAgICAgICAgICAgICBsZXQgbGlzdGVuZXIgPSBXSS5kZWJ1Z2dl
ck1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2Vk
LCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAg
ICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVzdW1lKCk7CisgICAgICAgICAgICAg
ICAgfSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IEluc3BlY3Rv
clRlc3QuRXZlbnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQodHlwZSwge2V2ZW50TmFtZX0p
OworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiU2V0dGluZyBpZ25vcmVDb3VudCB0byAnMicuLi4i
KTsKKyAgICAgICAgICAgICAgICBicmVha3BvaW50Lmlnbm9yZUNvdW50ID0gMjsKKworICAgICAg
ICAgICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgICAgIGF3YWl0
IHRyaWdnZXJCcmVha3BvaW50KCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPD0gMikK
KyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VD
b3VudCwgMCwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UK
KyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VD
b3VudCwgaSAtIDIsICJTaG91bGQgcGF1c2UuIik7CisgICAgICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgbGlzdGVuZXIpOworICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgIHRlYXJkb3duOiBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC50ZWFyZG93
biwKKyAgICAgICAgfSk7CisKKyAgICAgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICAg
ICAgbmFtZTogc3VpdGUubmFtZSArICIuT3B0aW9ucy5BY3Rpb24uTG9nIiwKKyAgICAgICAgICAg
IGRlc2NyaXB0aW9uOiAiQ2hlY2sgdGhhdCBsb2cgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUg
d2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwKKyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7
CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291bnQgPSAwOworCisgICAgICAgICAgICAgICAg
bGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVi
dWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2Vy
LnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgbGV0IGJy
ZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVh
a3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubmV3bGluZSgpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGlu
ZyBsb2cgYWN0aW9uLi4uIik7CisgICAgICAgICAgICAgICAgbGV0IGFjdGlvbiA9IGJyZWFrcG9p
bnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24uVHlwZS5Mb2csIHtkYXRhOiAiQlJF
QUtQT0lOVCBBQ1RJT04gTE9HIDEifSk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBpID0g
MTsgaSA8PSA0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgPiAxKSB7CisgICAg
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVkaXRpbmcgbG9nIGFjdGlvbi4uLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HICR7aX1gOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFbmFibGluZyBh
dXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2lu
dC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXds
aW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgbGV0IFttZXNzYWdlQWRkZWRFdmVudF0gPSBh
d2FpdCBQcm9taXNlLmFsbChbCisgICAgICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFu
YWdlci5hd2FpdEV2ZW50KFdJLkNvbnNvbGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisg
ICAgICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyQnJlYWtwb2ludCgpLAorICAgICAgICAgICAg
ICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKG1lc3NhZ2VBZGRlZEV2ZW50LmRhdGEubWVzc2FnZS5tZXNzYWdlVGV4dCwgYWN0aW9uLmRh
dGEsICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHBhdXNlQ291bnQsIDIsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVu
dExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxpc3RlbmVyKTsKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICB0ZWFyZG93bjogSW5zcGVjdG9yVGVzdC5FdmVudEJy
ZWFrcG9pbnQudGVhcmRvd24sCisgICAgICAgIH0pOworCisgICAgICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgICAgIG5hbWU6IHN1aXRlLm5hbWUgKyAiLk9wdGlvbnMuQWN0aW9ucy5F
dmFsdWF0ZSIsCisgICAgICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgZXZhbHVhdGUg
YnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBpcyBoaXQuIiwK
KyAgICAgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICAgICAgbGV0IHBhdXNlQ291
bnQgPSAwOworCisgICAgICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5h
Z2VyLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2
ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAg
ICAgICAgICAgV0kuZGVidWdnZXJNYW5hZ2VyLnJlc3VtZSgpOworICAgICAgICAgICAgICAgIH0p
OworCisgICAgICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBhd2FpdCBJbnNwZWN0b3JUZXN0
LkV2ZW50QnJlYWtwb2ludC5jcmVhdGVCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KTsKKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAg
ICAgICAgICAgICBsZXQgYWN0aW9uID0gYnJlYWtwb2ludC5jcmVhdGVBY3Rpb24oV0kuQnJlYWtw
b2ludEFjdGlvbi5UeXBlLkV2YWx1YXRlLCB7ZGF0YTogIndpbmRvdy5CUkVBS1BPSU5UX0FDVElP
Tl9FVkFMVUFURSA9IDE7In0pOworCisgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkg
PD0gNDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4uLiIp
OworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFLUE9J
TlRfQUNUSU9OX0VWQUxVQVRFID0gJHtpfTtgOworCisgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoaSA9PT0gMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCJFbmFibGluZyBhdXRvLWNvbnRpbnVlLi4uIik7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYnJlYWtwb2ludC5hdXRvQ29udGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgdHJpZ2dl
ckJyZWFrcG9pbnQoKTsKKworICAgICAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFjdGlv
bkV2YWx1YXRlUmVzdWx0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd2lu
ZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFYCk7CisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoYnJlYWtwb2ludEFjdGlvbkV2YWx1YXRlUmVzdWx0LCBp
LCAiU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uIik7CisKKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXhwZWN0RXF1YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChwYXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRM
aXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5lcik7CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgdGVhcmRvd246IEluc3BlY3RvclRlc3QuRXZlbnRCcmVh
a3BvaW50LnRlYXJkb3duLAorICAgICAgICB9KTsKKyAgICB9OworCiAgICAgSW5zcGVjdG9yVGVz
dC5FdmVudEJyZWFrcG9pbnQudGVhcmRvd24gPSBmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsK
LSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92ZUV2ZW50QnJlYWtwb2ludChXSS5k
b21EZWJ1Z2dlck1hbmFnZXIuYWxsQW5pbWF0aW9uRnJhbWVzQnJlYWtwb2ludCk7Ci0gICAgICAg
IFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFrcG9pbnQoV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbEludGVydmFsc0JyZWFrcG9pbnQpOwotICAgICAgICBXSS5kb21EZWJ1Z2dl
ck1hbmFnZXIucmVtb3ZlRXZlbnRCcmVha3BvaW50KFdJLmRvbURlYnVnZ2VyTWFuYWdlci5hbGxM
aXN0ZW5lcnNCcmVha3BvaW50KTsKLSAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLnJlbW92
ZUV2ZW50QnJlYWtwb2ludChXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsVGltZW91dHNCcmVha3Bv
aW50KTsKKyAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5hZ2VyLmFsbEFuaW1hdGlvbkZyYW1lc0Jy
ZWFrcG9pbnQ/LnJlbW92ZSgpOworICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIuYWxsSW50
ZXJ2YWxzQnJlYWtwb2ludD8ucmVtb3ZlKCk7CisgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdl
ci5hbGxMaXN0ZW5lcnNCcmVha3BvaW50Py5yZW1vdmUoKTsKKyAgICAgICAgV0kuZG9tRGVidWdn
ZXJNYW5hZ2VyLmFsbFRpbWVvdXRzQnJlYWtwb2ludD8ucmVtb3ZlKCk7CiAKICAgICAgICAgZm9y
IChsZXQgYnJlYWtwb2ludCBvZiBXSS5kb21EZWJ1Z2dlck1hbmFnZXIubGlzdGVuZXJCcmVha3Bv
aW50cykKLSAgICAgICAgICAgIFdJLmRvbURlYnVnZ2VyTWFuYWdlci5yZW1vdmVFdmVudEJyZWFr
cG9pbnQoYnJlYWtwb2ludCk7CisgICAgICAgICAgICBicmVha3BvaW50LnJlbW92ZSgpOwogCiAg
ICAgICAgIHJlc29sdmUoKTsKICAgICB9OwpAQCAtNDIsOCArMjI3LDExIEBAIFRlc3RQYWdlLnJl
Z2lzdGVySW5pdGlhbGl6ZXIoKCkgPT4gewogICAgICAgICB9KTsKICAgICB9OwogCi0gICAgSW5z
cGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQuY3JlYXRlQnJlYWtwb2ludCA9IGZ1bmN0aW9uKHR5
cGUsIGV2ZW50TmFtZSkgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZyhgQ3JlYXRpbmcgIiR7
ZXZlbnROYW1lfSIgRXZlbnQgQnJlYWtwb2ludC4uLmApOworICAgIEluc3BlY3RvclRlc3QuRXZl
bnRCcmVha3BvaW50LmNyZWF0ZUJyZWFrcG9pbnQgPSBmdW5jdGlvbih0eXBlLCB7ZXZlbnROYW1l
fSA9IHt9KSB7CisgICAgICAgIGlmICh0eXBlICE9PSBXSS5FdmVudEJyZWFrcG9pbnQuVHlwZS5M
aXN0ZW5lcikKKyAgICAgICAgICAgIGV2ZW50TmFtZSA9IG51bGw7CisKKyAgICAgICAgSW5zcGVj
dG9yVGVzdC5sb2coYENyZWF0aW5nICIke2V2ZW50TmFtZSB8fCB0eXBlfSIgRXZlbnQgQnJlYWtw
b2ludC4uLmApOwogICAgICAgICByZXR1cm4gSW5zcGVjdG9yVGVzdC5FdmVudEJyZWFrcG9pbnQu
YWRkQnJlYWtwb2ludChuZXcgV0kuRXZlbnRCcmVha3BvaW50KHR5cGUsIHtldmVudE5hbWV9KSk7
CiAgICAgfTsKIApAQCAtNzQsNyArMjYyLDcgQEAgVGVzdFBhZ2UucmVnaXN0ZXJJbml0aWFsaXpl
cigoKSA9PiB7CiAgICAgICAgICAgICAgICAgcmVzb2x2ZShicmVha3BvaW50KTsKICAgICAgICAg
ICAgIH0pOwogCi0gICAgICAgICAgICBXSS5kb21EZWJ1Z2dlck1hbmFnZXIucmVtb3ZlRXZlbnRC
cmVha3BvaW50KGJyZWFrcG9pbnQpOworICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsK
ICAgICAgICAgfSk7CiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RvbS9icmVha3BvaW50LWZvci1ldmVudC1saXN0ZW5lci1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVk
LnR4dAppbmRleCA3NmE4NjQ0OGJjOWUxNzNmMzZkNmQ3Y2YzMDRmMGNlNzcwNmFhNTBmLi41OGY5
NTYyMmNlY2RjZTA0MjAzYjY4N2NkYzg0OTM1MmIxYzA2NWMxIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9pbnQtZm9yLWV2ZW50
LWxpc3RlbmVyLWV4cGVjdGVkLnR4dApAQCAtMSwzICsxLDcgQEAKK0NPTlNPTEUgTUVTU0FHRTog
QlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJ
T04gTE9HIDIKK0NPTlNPTEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDMKK0NPTlNP
TEUgTUVTU0FHRTogQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDQKIFRlc3RpbmcgRE9NQWdlbnQuc2V0
QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIgYW5kIERPTUFnZW50LnJlbW92ZUJyZWFrcG9pbnRG
b3JFdmVudExpc3RlbmVyLgogCiAgIApAQCAtMTksNiArMjMsOTQgQEAgUEFTUzogU2hvdWxkIG5v
dCBwYXVzZSBiZWZvcmUgYnV0dG9uMiBldmVudCBoYW5kbGVyIGlzIHJ1bi4KIENsaWNraW5nIGJ1
dHRvbjEuLi4KIFBBU1M6IFNob3VsZCBub3QgcGF1c2UgYmVmb3JlIGJ1dHRvbjEgZXZlbnQgaGFu
ZGxlciBpcyBydW4uCiAKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZv
ckV2ZW50TGlzdGVuZXIuT3B0aW9ucy5Db25kaXRpb24KKworU2V0dGluZyBjb25kaXRpb24gdG8g
J2ZhbHNlJy4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBub3Qg
cGF1c2UuCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVz
ZS4KKworU2V0dGluZyBjb25kaXRpb24gdG8gJ3RydWUnLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtw
b2ludC4uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4K
K1BBU1M6IFNob3VsZCBwYXVzZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVh
a3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25zLklnbm9yZUNvdW50CisKK1NldHRpbmcgaWdu
b3JlQ291bnQgdG8gJzInLi4uCisKK1RyaWdnZXJpbmcgYnJlYWtwb2ludC4uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQg
bm90IHBhdXNlLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBwYXVz
ZS4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgcGF1c2UuCisKKy0t
IFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuT3B0
aW9ucy5BY3Rpb24uTG9nCisKK0FkZGluZyBsb2cgYWN0aW9uLi4uCisKK1RyaWdnZXJpbmcgYnJl
YWtwb2ludC4uLgorUEFTUzogU2hvdWxkIGV4ZWN1dGUgYnJlYWtwb2ludCBhY3Rpb24uCitQQVNT
OiBTaG91bGQgcGF1c2UuCisKK0VkaXRpbmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJy
ZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFT
UzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGxvZyBhY3Rpb24uLi4KK0VuYWJsaW5nIGF1dG8t
Y29udGludWUuLi4KKworVHJpZ2dlcmluZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhl
Y3V0ZSBicmVha3BvaW50IGFjdGlvbi4KK1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKK0VkaXRp
bmcgbG9nIGFjdGlvbi4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3Vs
ZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIG5vdCBwYXVzZS4KKwor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IERPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5P
cHRpb25zLkFjdGlvbnMuRXZhbHVhdGUKKworQWRkaW5nIGV2YWx1YXRlIGFjdGlvbi4uLgorCitU
cmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQg
YWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFjdGlvbi4u
LgorCitUcmlnZ2VyaW5nIGJyZWFrcG9pbnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFr
cG9pbnQgYWN0aW9uLgorUEFTUzogU2hvdWxkIHBhdXNlLgorCitFZGl0aW5nIGV2YWx1YXRlIGFj
dGlvbi4uLgorRW5hYmxpbmcgYXV0by1jb250aW51ZS4uLgorCitUcmlnZ2VyaW5nIGJyZWFrcG9p
bnQuLi4KK1BBU1M6IFNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLgorUEFTUzogU2hv
dWxkIG5vdCBwYXVzZS4KKworRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4KKworVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uCitQQVNTOiBTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4K
K1BBU1M6IFNob3VsZCBub3QgcGF1c2UuCisKIC0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBET00uc2V0
QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZAogUEFTUzogU2hvdWxkIHByb2R1Y2Ug
YW4gZXJyb3IuCiBFcnJvcjogTWlzc2luZyBldmVudCBsaXN0ZW5lciBmb3IgZ2l2ZW4gZXZlbnRM
aXN0ZW5lcklkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2JyZWFrcG9p
bnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZG9tL2Jy
ZWFrcG9pbnQtZm9yLWV2ZW50LWxpc3RlbmVyLmh0bWwKaW5kZXggMGQyZmVhNWFhNTJkNDU0NGEx
MWYyNDY4MTA1Y2U0ODM3ZmI0MzZhYS4uZjMwYzkyYTZkMDcxYWI4YWRkYzg5OTJmZmM3OTAwNzNk
ZjU1NjUzZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RvbS9icmVha3BvaW50
LWZvci1ldmVudC1saXN0ZW5lci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kb20v
YnJlYWtwb2ludC1mb3ItZXZlbnQtbGlzdGVuZXIuaHRtbApAQCAtMjMsOSArMjMsMjIgQEAgZnVu
Y3Rpb24gdGVzdCgpIHsKICAgICBsZXQgYnV0dG9uMU5vZGUgPSBudWxsOwogICAgIGxldCBidXR0
b24yTm9kZSA9IG51bGw7CiAKLSAgICBmdW5jdGlvbiBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5l
cihub2RlSWQpIHsKLSAgICAgICAgcmV0dXJuIERPTUFnZW50LmdldEV2ZW50TGlzdGVuZXJzRm9y
Tm9kZShub2RlSWQpCi0gICAgICAgIC50aGVuKCh7bGlzdGVuZXJzfSkgPT4gbGlzdGVuZXJzLmZp
bmQoKGV2ZW50TGlzdGVuZXIpID0+IGV2ZW50TGlzdGVuZXIudHlwZSA9PT0gImNsaWNrIikpOwor
ICAgIGFzeW5jIGZ1bmN0aW9uIGdldENsaWNrRXZlbnRMaXN0ZW5lcihub2RlSWQpIHsKKyAgICAg
ICAgbGV0IHtsaXN0ZW5lcnN9ID0gYXdhaXQgRE9NQWdlbnQuZ2V0RXZlbnRMaXN0ZW5lcnNGb3JO
b2RlKG5vZGVJZCk7CisgICAgICAgIHJldHVybiBsaXN0ZW5lcnMuZmluZCgoZXZlbnRMaXN0ZW5l
cikgPT4gZXZlbnRMaXN0ZW5lci50eXBlID09PSAiY2xpY2siKTsKKyAgICB9CisKKyAgICBhc3lu
YyBmdW5jdGlvbiBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKG5vZGUpIHsKKyAg
ICAgICAgbGV0IGNsaWNrRXZlbnRMaXN0ZW5lciA9IGF3YWl0IGdldENsaWNrRXZlbnRMaXN0ZW5l
cihub2RlLmlkKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWNsaWNrRXZlbnRMaXN0
ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hv
dWxkIG5vdCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKKworICAgICAgICByZXR1cm4gbmV3IFByb21p
c2UoKHJlc29sdmUsIHJlamVjdCkgPT4geworICAgICAgICAgICAgV0kuZG9tRGVidWdnZXJNYW5h
Z2VyLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTURlYnVnZ2VyTWFuYWdlci5FdmVudC5F
dmVudEJyZWFrcG9pbnRBZGRlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAgcmVzb2x2
ZShldmVudC5kYXRhLmJyZWFrcG9pbnQpOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAg
IFdJLmRvbU1hbmFnZXIuc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIoY2xpY2tFdmVudExp
c3RlbmVyKTsKKyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgbGV0IHN1aXRlID0gSW5zcGVjdG9y
VGVzdC5jcmVhdGVBc3luY1N1aXRlKCJET00uQnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIiKTsK
QEAgLTQ5LDcgKzYyLDcgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHRhcmdldERhdGEucGF1c2VSZWFzb24sIFdJLkRlYnVnZ2Vy
TWFuYWdlci5QYXVzZVJlYXNvbi5MaXN0ZW5lciwgYFBhdXNlIHJlYXNvbiBzaG91bGQgYmUgTGlz
dGVuZXIuYCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbCh0YXJn
ZXREYXRhLnBhdXNlRGF0YS5ldmVudE5hbWUsICJjbGljayIsIGBQYXVzZSBkYXRhIGV2ZW50TmFt
ZSBzaG91bGQgYmUgImNsaWNrIi5gKTsKIAotICAgICAgICAgICAgICAgIGF3YWl0R2V0Q2xpY2tF
dmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAgICAgICAgICAgICAgIGdldENsaWNrRXZl
bnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgICAgICAudGhlbigoY2xpY2tF
dmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0KHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TGlzdGVuZXJJZCA9PT0gY2xpY2tFdmVudExp
c3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwgYFBhdXNlIGRhdGEgZXZlbnRMaXN0ZW5lcklkIHNob3Vs
ZCBiZSAiJHtjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRMaXN0ZW5lcklkfSIuYCk7CiAgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KGNsaWNrRXZlbnRMaXN0ZW5lci5oYXNC
cmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hvdWxkIGhhdmUg
YSBicmVha3BvaW50LiIpOwpAQCAtNzcsNyArOTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkgewogICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgp
YCk7CiAgICAgICAgICAgICB9KTsKIAotICAgICAgICAgICAgYXdhaXRHZXRDbGlja0V2ZW50TGlz
dGVuZXIoYnV0dG9uMU5vZGUuaWQpCisgICAgICAgICAgICBnZXRDbGlja0V2ZW50TGlzdGVuZXIo
YnV0dG9uMU5vZGUuaWQpCiAgICAgICAgICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9
PiB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQoIWNsaWNrRXZlbnRMaXN0
ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIgZm9yIGJ1dHRvbjEgc2hv
dWxkIG5vdCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKIApAQCAtMTExLDcgKzEyNCw3IEBAIGZ1bmN0
aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnQodGFyZ2V0
RGF0YS5wYXVzZVJlYXNvbiwgV0kuRGVidWdnZXJNYW5hZ2VyLlBhdXNlUmVhc29uLkxpc3RlbmVy
LCBgUGF1c2UgcmVhc29uIHNob3VsZCBiZSBMaXN0ZW5lci5gKTsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydCh0YXJnZXREYXRhLnBhdXNlRGF0YS5ldmVudE5hbWUsICJjbGlj
ayIsIGBQYXVzZSBkYXRhIGV2ZW50TmFtZSBzaG91bGQgYmUgImNsaWNrIi5gKTsKIAotICAgICAg
ICAgICAgICAgIGF3YWl0R2V0Q2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlLmlkKQorICAg
ICAgICAgICAgICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAg
ICAgICAgICAgICAudGhlbigoY2xpY2tFdmVudExpc3RlbmVyKSA9PiB7CiAgICAgICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHRhcmdldERhdGEucGF1c2VEYXRhLmV2ZW50TGlz
dGVuZXJJZCA9PT0gY2xpY2tFdmVudExpc3RlbmVyLmV2ZW50TGlzdGVuZXJJZCwgYFBhdXNlIGRh
dGEgZXZlbnRMaXN0ZW5lcklkIHNob3VsZCBiZSAiJHtjbGlja0V2ZW50TGlzdGVuZXIuZXZlbnRM
aXN0ZW5lcklkfSIuYCk7CiAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0
KGNsaWNrRXZlbnRMaXN0ZW5lci5oYXNCcmVha3BvaW50LCAiQ2xpY2sgZXZlbnQgbGlzdGVuZXIg
Zm9yIGJ1dHRvbjEgc2hvdWxkIGhhdmUgYSBicmVha3BvaW50LiIpOwpAQCAtMTM5LDcgKzE1Miw3
IEBAIGZ1bmN0aW9uIHRlc3QoKSB7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKTsKICAgICAgICAgICAgIH0pOwogCi0gICAgICAg
ICAgICBhd2FpdEdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKKyAgICAgICAg
ICAgIGdldENsaWNrRXZlbnRMaXN0ZW5lcihidXR0b24xTm9kZS5pZCkKICAgICAgICAgICAgIC50
aGVuKChjbGlja0V2ZW50TGlzdGVuZXIpID0+IHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFzc2VydChjbGlja0V2ZW50TGlzdGVuZXIuaGFzQnJlYWtwb2ludCwgIkNsaWNrIGV2ZW50
IGxpc3RlbmVyIGZvciBidXR0b24xIHNob3VsZCBoYXZlIGEgYnJlYWtwb2ludC4iKTsKIApAQCAt
MTU0LDYgKzE2NywxOTUgQEAgZnVuY3Rpb24gdGVzdCgpIHsKICAgICAgICAgfQogICAgIH0pOwog
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiRE9NLnNldEJyZWFrcG9p
bnRGb3JFdmVudExpc3RlbmVyLk9wdGlvbnMuQ29uZGl0aW9uIiwKKyAgICAgICAgZGVzY3JpcHRp
b246ICJDaGVjayB0aGF0IHRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJy
ZWFrcG9pbnQgaGFzIGEgdHJ1dGh5IGJyZWFrcG9pbnQgY29uZGl0aW9uLiIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAg
ICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVz
dW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBh
d2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAnZmFsc2UnLi4uIik7CisgICAgICAg
ICAgICBicmVha3BvaW50LmNvbmRpdGlvbiA9ICJmYWxzZSI7CisKKyAgICAgICAgICAgIGZvciAo
bGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJTZXR0aW5nIGNvbmRpdGlvbiB0byAndHJ1
ZScuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5jb25kaXRpb24gPSAidHJ1
ZSI7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5u
ZXdsaW5lKCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmlu
ZyBicmVha3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0
dG9uMUNsaWNrIiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYGNsaWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAg
ICAgICAgICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChwYXVzZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2Vy
TWFuYWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVz
ZWQsIGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RD
YXNlKHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5P
cHRpb25zLklnbm9yZUNvdW50IiwKKyAgICAgICAgZGVzY3JpcHRpb246ICJDaGVjayB0aGF0IHRo
ZSBkZWJ1Z2dlciB3aWxsIG5vdCBwYXVzZSB1bmxlc3MgdGhlIGJyZWFrcG9pbnQgaXMgaGl0IGF0
IGxlYXN0IGFzIG1hbnkgdGltZXMgYXMgaXQncyBgaWdub3JlQ291bnRgLiIsCisgICAgICAgIGFz
eW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAgICAgICAg
ICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJ
LkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVz
dW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9pbnQgPSBh
d2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2RlKTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJTZXR0aW5nIGlnbm9yZUNvdW50IHRvICcyJy4uLiIpOworICAgICAgICAg
ICAgYnJlYWtwb2ludC5pZ25vcmVDb3VudCA9IDI7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkg
PSAxOyBpIDw9NDsgKytpKSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5l
KCk7CisKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVh
a3BvaW50Li4uIik7CisgICAgICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNs
aWNrIiksCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2Uo
YGNsaWNrQnV0dG9uMSgpYCksCisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAg
ICBpZiAoaSA8PSAyKQorICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKHBhdXNlQ291bnQsIDAsICJTaG91bGQgbm90IHBhdXNlLiIpOworICAgICAgICAgICAgICAg
IGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXVz
ZUNvdW50LCBpIC0gMiwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdl
ci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIGxp
c3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsK
KyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRpb25z
LkFjdGlvbi5Mb2ciLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQgbG9nIGJyZWFr
cG9pbnQgYWN0aW9ucyBleGVjdXRlIHdoZW4gdGhlIGJyZWFrcG9pbnQgaXMgaGl0LiIsCisgICAg
ICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBsZXQgcGF1c2VDb3VudCA9IDA7CisKKyAg
ICAgICAgICAgIGxldCBsaXN0ZW5lciA9IFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRFdmVudExpc3Rl
bmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQsIChldmVudCkgPT4geworICAgICAg
ICAgICAgICAgICsrcGF1c2VDb3VudDsKKyAgICAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFn
ZXIucmVzdW1lKCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgbGV0IGJyZWFrcG9p
bnQgPSBhd2FpdCBzZXRCcmVha3BvaW50Rm9yQ2xpY2tFdmVudExpc3RlbmVyKGJ1dHRvbjFOb2Rl
KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAg
IEluc3BlY3RvclRlc3QubG9nKCJBZGRpbmcgbG9nIGFjdGlvbi4uLiIpOworICAgICAgICAgICAg
bGV0IGFjdGlvbiA9IGJyZWFrcG9pbnQuY3JlYXRlQWN0aW9uKFdJLkJyZWFrcG9pbnRBY3Rpb24u
VHlwZS5Mb2csIHtkYXRhOiAiQlJFQUtQT0lOVCBBQ1RJT04gTE9HIDEifSk7CisKKyAgICAgICAg
ICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChp
ID4gMSkgeworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKwor
ICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRWRpdGluZyBsb2cgYWN0aW9u
Li4uIik7CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5kYXRhID0gYEJSRUFLUE9JTlQgQUNU
SU9OIExPRyAke2l9YDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PT0gMykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkVuYWJsaW5nIGF1dG8tY29u
dGludWUuLi4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrcG9pbnQuYXV0b0NvbnRp
bnVlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubmV3bGluZSgpOworCisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5sb2coIlRyaWdnZXJpbmcgYnJlYWtwb2ludC4uLiIpOworICAgICAg
ICAgICAgICAgIGxldCBbbWVzc2FnZUFkZGVkRXZlbnRdID0gYXdhaXQgUHJvbWlzZS5hbGwoWwor
ICAgICAgICAgICAgICAgICAgICBXSS5jb25zb2xlTWFuYWdlci5hd2FpdEV2ZW50KFdJLkNvbnNv
bGVNYW5hZ2VyLkV2ZW50Lk1lc3NhZ2VBZGRlZCksCisgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXdhaXRFdmVudCgiVGVzdFBhZ2VCdXR0b24xQ2xpY2siKSwKKyAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgY2xpY2tCdXR0b24xKClgKSwK
KyAgICAgICAgICAgICAgICBdKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhw
ZWN0RXF1YWwobWVzc2FnZUFkZGVkRXZlbnQuZGF0YS5tZXNzYWdlLm1lc3NhZ2VUZXh0LCBhY3Rp
b24uZGF0YSwgIlNob3VsZCBleGVjdXRlIGJyZWFrcG9pbnQgYWN0aW9uLiIpOworCisgICAgICAg
ICAgICAgICAgaWYgKGkgPD0gMikKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXVzZUNvdW50LCBpLCAiU2hvdWxkIHBhdXNlLiIpOworICAgICAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChw
YXVzZUNvdW50LCAyLCAiU2hvdWxkIG5vdCBwYXVzZS4iKTsKKyAgICAgICAgICAgIH0KKworICAg
ICAgICAgICAgYnJlYWtwb2ludC5yZW1vdmUoKTsKKyAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFu
YWdlci5yZW1vdmVFdmVudExpc3RlbmVyKFdJLkRlYnVnZ2VyTWFuYWdlci5FdmVudC5QYXVzZWQs
IGxpc3RlbmVyKTsKKyAgICAgICAgfSwKKyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNl
KHsKKyAgICAgICAgbmFtZTogIkRPTS5zZXRCcmVha3BvaW50Rm9yRXZlbnRMaXN0ZW5lci5PcHRp
b25zLkFjdGlvbnMuRXZhbHVhdGUiLAorICAgICAgICBkZXNjcmlwdGlvbjogIkNoZWNrIHRoYXQg
ZXZhbHVhdGUgYnJlYWtwb2ludCBhY3Rpb25zIGV4ZWN1dGUgd2hlbiB0aGUgYnJlYWtwb2ludCBp
cyBoaXQuIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIGxldCBwYXVzZUNv
dW50ID0gMDsKKworICAgICAgICAgICAgbGV0IGxpc3RlbmVyID0gV0kuZGVidWdnZXJNYW5hZ2Vy
LmFkZEV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBhdXNlZCwgKGV2ZW50
KSA9PiB7CisgICAgICAgICAgICAgICAgKytwYXVzZUNvdW50OworICAgICAgICAgICAgICAgIFdJ
LmRlYnVnZ2VyTWFuYWdlci5yZXN1bWUoKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAg
ICBsZXQgYnJlYWtwb2ludCA9IGF3YWl0IHNldEJyZWFrcG9pbnRGb3JDbGlja0V2ZW50TGlzdGVu
ZXIoYnV0dG9uMU5vZGUpOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsK
KworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkFkZGluZyBldmFsdWF0ZSBhY3Rpb24u
Li4iKTsKKyAgICAgICAgICAgIGxldCBhY3Rpb24gPSBicmVha3BvaW50LmNyZWF0ZUFjdGlvbihX
SS5CcmVha3BvaW50QWN0aW9uLlR5cGUuRXZhbHVhdGUsIHtkYXRhOiAid2luZG93LkJSRUFLUE9J
TlRfQUNUSU9OX0VWQUxVQVRFID0gMTsifSk7CisKKyAgICAgICAgICAgIGZvciAobGV0IGkgPSAx
OyBpIDw9IDQ7ICsraSkgeworICAgICAgICAgICAgICAgIGlmIChpID4gMSkgeworICAgICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lm5ld2xpbmUoKTsKKworICAgICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmxvZygiRWRpdGluZyBldmFsdWF0ZSBhY3Rpb24uLi4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uLmRhdGEgPSBgd2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VW
QUxVQVRFID0gJHtpfTtgOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAzKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRW5hYmxpbmcgYXV0by1j
b250aW51ZS4uLiIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludC5hdXRvQ29u
dGludWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5uZXdsaW5lKCk7CisKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZygiVHJpZ2dlcmluZyBicmVha3BvaW50Li4uIik7CisgICAg
ICAgICAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoWworICAgICAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmF3YWl0RXZlbnQoIlRlc3RQYWdlQnV0dG9uMUNsaWNrIiksCisgICAgICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoYGNsaWNrQnV0dG9uMSgpYCks
CisgICAgICAgICAgICAgICAgXSk7CisKKyAgICAgICAgICAgICAgICBsZXQgYnJlYWtwb2ludEFj
dGlvbkV2YWx1YXRlUmVzdWx0ID0gYXdhaXQgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShg
d2luZG93LkJSRUFLUE9JTlRfQUNUSU9OX0VWQUxVQVRFYCk7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RFcXVhbChicmVha3BvaW50QWN0aW9uRXZhbHVhdGVSZXN1bHQsIGks
ICJTaG91bGQgZXhlY3V0ZSBicmVha3BvaW50IGFjdGlvbi4iKTsKKworICAgICAgICAgICAgICAg
IGlmIChpIDw9IDIpCisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1
YWwocGF1c2VDb3VudCwgaSwgIlNob3VsZCBwYXVzZS4iKTsKKyAgICAgICAgICAgICAgICBlbHNl
CisgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGF1c2VDb3Vu
dCwgMiwgIlNob3VsZCBub3QgcGF1c2UuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAg
IGJyZWFrcG9pbnQucmVtb3ZlKCk7CisgICAgICAgICAgICBXSS5kZWJ1Z2dlck1hbmFnZXIucmVt
b3ZlRXZlbnRMaXN0ZW5lcihXSS5EZWJ1Z2dlck1hbmFnZXIuRXZlbnQuUGF1c2VkLCBsaXN0ZW5l
cik7CisgICAgICAgIH0sCisgICAgfSk7CisKICAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CiAgICAg
ICAgIG5hbWU6ICJET00uc2V0QnJlYWtwb2ludEZvckV2ZW50TGlzdGVuZXIuSW52YWxpZCIsCiAg
ICAgICAgIGRlc2NyaXB0aW9uOiAiSW52YWxpZCBldmVudCBsaXN0ZW5lciBpZGVudGlmaWVycyBz
aG91bGQgY2F1c2UgYW4gZXJyb3IuIiwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci93b3JrZXIvZGVidWdnZXItcGF1c2UuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci93b3Jr
ZXIvZGVidWdnZXItcGF1c2UuaHRtbAppbmRleCBlZTNhMTI1YTcxZDE4YTMyNTg1MTIyOGMzYjFk
YWE2OTQxNjU2NzFiLi41YWNiZDE5MmZlMGUyZDgxYjQzZDczYTJlMzVmZjlmMzcyZDQwODNhIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29ya2VyL2RlYnVnZ2VyLXBhdXNlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtlci9kZWJ1Z2dlci1wYXVzZS5odG1s
CkBAIC02Myw3ICs2Myw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICBkZXNjcmlwdGlvbjog
IldvcmtlciBzaG91bGQgcGF1c2Ugb24gYnJlYWtwb2ludC4iLAogICAgICAgICB0ZXN0KHJlc29s
dmUsIHJlamVjdCkgewogICAgICAgICAgICAgbGV0IGxvY2F0aW9uID0gd29ya2VyVGFyZ2V0Lm1h
aW5SZXNvdXJjZS5jcmVhdGVTb3VyY2VDb2RlTG9jYXRpb24oOCwgMCk7Ci0gICAgICAgICAgICBs
ZXQgYnJlYWtwb2ludCA9IG5ldyBXSS5CcmVha3BvaW50KGxvY2F0aW9uKTsKKyAgICAgICAgICAg
IGxldCBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9uKTsK
ICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9pbnQp
OwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgd29ya2VyLnBvc3RN
ZXNzYWdlKCJ0cmlnZ2VyQnJlYWtwb2ludCIpYCk7CiAgICAgICAgICAgICBXSS5kZWJ1Z2dlck1h
bmFnZXIuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRGVidWdnZXJNYW5hZ2VyLkV2ZW50LlBh
dXNlZCwgKGV2ZW50KSA9PiB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivd29y
a2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3Ivd29ya2VyL2RlYnVnZ2VyLXNoYXJlZC1icmVha3BvaW50Lmh0bWwKaW5kZXggYTNiMzM0YzRk
NjYzM2JlMzY5NzBiNzg5ZWI2ZWM4OWM4YjYxY2QzMi4uYTNmMjZmZGQwMmQ3NDcwMTYyYTZkYmNi
NzM4ZDE1ZGE3MzZiM2RmNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3dvcmtl
ci9kZWJ1Z2dlci1zaGFyZWQtYnJlYWtwb2ludC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci93b3JrZXIvZGVidWdnZXItc2hhcmVkLWJyZWFrcG9pbnQuaHRtbApAQCAtOTQsNyArOTQs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3QpIHsKICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0KHdvcmtlclRhcmdldDEubWFpblJlc291cmNl
IGluc3RhbmNlb2YgV0kuU2NyaXB0KTsKICAgICAgICAgICAgIGxldCBsb2NhdGlvbiA9IHdvcmtl
clRhcmdldDEubWFpblJlc291cmNlLmNyZWF0ZVNvdXJjZUNvZGVMb2NhdGlvbig4LCAwKTsKLSAg
ICAgICAgICAgIGJyZWFrcG9pbnQgPSBuZXcgV0kuQnJlYWtwb2ludChsb2NhdGlvbik7CisgICAg
ICAgICAgICBicmVha3BvaW50ID0gbmV3IFdJLkphdmFTY3JpcHRCcmVha3BvaW50KGxvY2F0aW9u
KTsKICAgICAgICAgICAgIFdJLmRlYnVnZ2VyTWFuYWdlci5hZGRCcmVha3BvaW50KGJyZWFrcG9p
bnQpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGB0cmlnZ2Vy
V29ya2VyQnJlYWtwb2ludFBhdXNlcygpYCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>