<?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>230558</bug_id>
          
          <creation_ts>2021-09-21 09:19:03 -0700</creation_ts>
          <short_desc>AX: Refactoring of TextMarkers and TextMarkerRanges support on Mac.</short_desc>
          <delta_ts>2023-01-21 07:09:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tyler_w</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1795589</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-09-21 09:19:03 -0700</bug_when>
    <thetext>Refactoring of AXTextMarker and AXTextMarkerRange support on Mac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795676</commentid>
    <comment_count>1</comment_count>
      <attachid>438839</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-09-21 11:30:38 -0700</bug_when>
    <thetext>Created attachment 438839
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795701</commentid>
    <comment_count>2</comment_count>
      <attachid>438839</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-09-21 12:07:18 -0700</bug_when>
    <thetext>Comment on attachment 438839
Patch

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

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:29
&gt; +#include &quot;HTmLInputElement.h&quot;

this casing is wrong
HTmLInputElement.h

&gt; Source/WebCore/accessibility/AXTextMarker.h:76
&gt; +    AXObjectCache* m_axObjectCache { nullptr };

should this be WeakPtr?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:4043
&gt; +            return (id)AXTextMarkerRange(AXTextMarker((AXTextMarkerRef)[array objectAtIndex:0]), AXTextMarker((AXTextMarkerRef)[array objectAtIndex:1])).platformObject();

is there a way to overload casting for AXTextMarker so the casting and init methods are called automatically?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1797912</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-28 09:19:14 -0700</bug_when>
    <thetext>&lt;rdar://problem/83625620&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917109</commentid>
    <comment_count>4</comment_count>
      <attachid>463912</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-06 18:14:15 -0800</bug_when>
    <thetext>Created attachment 463912
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917153</commentid>
    <comment_count>5</comment_count>
      <attachid>463912</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-06 23:57:14 -0800</bug_when>
    <thetext>Comment on attachment 463912
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2530
&gt; +    textMarkerData.node = node;

it seems like we should be able to only store axID. then when we want the axObject again we can look it up. no need to store node or objectWrapper</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1917369</commentid>
    <comment_count>6</comment_count>
      <attachid>463912</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-12-07 14:54:29 -0800</bug_when>
    <thetext>Comment on attachment 463912
Patch

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

&gt; Source/WebCore/SourcesCocoa.txt:129
&gt; +accessibility/cocoa/AXTextMarkerCocoa.mm @no-unify

Why no-unify?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2516
&gt; +    auto* object = getOrCreate(node);

Is it OK to downgrade this RefPtr to a raw pointer? Can any of the code below cause side effects that would destroy this object while we have a pointer to it?

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:29
&gt; +#include &quot;HTmLInputElement.h&quot;

The capitalization seems wrong here — HTmLInputElement

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:48
&gt; +    if (is&lt;HTMLInputElement&gt;(*domNode) &amp;&amp; downcast&lt;HTMLInputElement&gt;(*domNode).isPasswordField())

I think both derefs of domNode on this line aren&apos;t necessary, but if you prefer this style then feel free to keep them.

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:53
&gt; +    auto characterOffset = m_axObjectCache-&gt;characterOffsetFromVisiblePosition(visiblePosition);

Do we need to null-check m_axObjectCache?

&gt; Source/WebCore/accessibility/AXTextMarker.h:67
&gt; +    AXObjectCache* m_axObjectCache { nullptr };

Should this be a WeakPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1918207</commentid>
    <comment_count>7</comment_count>
      <attachid>463978</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-10 12:48:59 -0800</bug_when>
    <thetext>Created attachment 463978
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1918685</commentid>
    <comment_count>8</comment_count>
      <attachid>464016</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-12 18:25:34 -0800</bug_when>
    <thetext>Created attachment 464016
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1918688</commentid>
    <comment_count>9</comment_count>
      <attachid>464017</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-12 18:34:27 -0800</bug_when>
    <thetext>Created attachment 464017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1918699</commentid>
    <comment_count>10</comment_count>
      <attachid>464017</attachid>
    <who name="Tyler Wilcock">tyler_w</who>
    <bug_when>2022-12-12 19:18:02 -0800</bug_when>
    <thetext>Comment on attachment 464017
Patch

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

&gt; Source/WebCore/SourcesCocoa.txt:129
&gt; +accessibility/cocoa/AXTextMarkerCocoa.mm @no-unify

Why no-unify?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2526
&gt; +    auto object = getOrCreate(node);

AXObjectCache::getOrCreate returns an AccessibilityObject*, so I think we either want auto* or RefPtr. If you intended auto*, is it safe to downgrade this RefPtr to a raw pointer?

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2545
&gt; +    // Since TextMarkerData.ignored is not assigned here, it allows to return valid TextMarkers for ignored AX objects.

I think you&apos;re missing a word here: &quot;it allows to return&quot;

Maybe:

// TextMarkerData.ignored is deliberately not assigned here so we can return valid TextMarkers for ignored AX objects.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2861
&gt; +    auto object = cache-&gt;getOrCreate(domNode);

AXObjectCache::getOrCreate returns an AccessibilityObject*, so I think we either want auto* or RefPtr. If you intended auto*, is it safe to downgrade this RefPtr to a raw pointer?

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:64
&gt; +/*
&gt; + if (deepPosition.anchorType() == Position::PositionIsAfterAnchor
&gt; +        || deepPosition.anchorType() == Position::PositionIsAfterChildren) {
&gt; +        TextMarkerData textMarkerData;
&gt; +        textMarkerDataForCharacterOffset(textMarkerData, characterOffset);
&gt; +        return;
&gt; +    }
&gt; +*/

Do we need this code? Or is this still a WIP patch?

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:66
&gt; +    m_axObjectCache-&gt;setNodeInUse(node);

Is it OK not to null-check the cache?

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:78
&gt; +    if (is&lt;HTMLInputElement&gt;(*domNode) &amp;&amp; downcast&lt;HTMLInputElement&gt;(*domNode).isPasswordField()) {

The derefs on this line aren&apos;t necessary and could even cause a crash if domNode is null.

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:84
&gt; +    auto visiblePosition = m_axObjectCache-&gt;visiblePositionFromCharacterOffset(characterOffset);

Is it OK not to null-check the cache?

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:85
&gt; +    unsigned vpOffset = 0;

I think WebKit style guidelines recommend spelling out all variables names, i.e. visiblePositionOffset vs. vpOffset.

&gt; Source/WebCore/accessibility/AXTextMarker.h:70
&gt; +    AXObjectCache* m_axObjectCache { nullptr };

Should this be a WeakPtr?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3364
&gt; +//        auto visiblePosition = visiblePositionForTextMarker(cache, textMarker);

Can this be removed? Or this still a WIP patch?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3691
&gt; +//            auto* cache = uiElement.get()-&gt;axObjectCache();
&gt; +//            if (!cache)
&gt; +//                return nil;
&gt; +//            return AXTextMarkerRange(cache, uiElement.get()-&gt;elementRange()).platformObject();

Can this be removed?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3978
&gt; +//        return Accessibility::retrieveAutoreleasedValueFromMainThread&lt;id&gt;([&amp;textMarkerRange, protectedSelf = retainPtr(self)] () -&gt; RetainPtr&lt;id&gt; {
&gt; +//            auto* backingObject = protectedSelf.get().axBackingObject;
&gt; +//            if (!backingObject)
&gt; +//                return nil;
&gt; +//
&gt; +//            auto range = rangeForTextMarkerRange(backingObject-&gt;axObjectCache(), textMarkerRange);
&gt; +//
&gt; +//            return (id)startOrEndTextMarkerForRange(backingObject-&gt;axObjectCache(), range, true);
&gt; +//        });

Can this be removed?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3991
&gt; +//        return Accessibility::retrieveAutoreleasedValueFromMainThread&lt;id&gt;([&amp;textMarkerRange, protectedSelf = retainPtr(self)] () -&gt; RetainPtr&lt;id&gt; {
&gt; +//            auto* backingObject = protectedSelf.get().axBackingObject;
&gt; +//            if (!backingObject)
&gt; +//                return nil;
&gt; +//
&gt; +//            auto range = rangeForTextMarkerRange(backingObject-&gt;axObjectCache(), textMarkerRange);
&gt; +//            return (id)startOrEndTextMarkerForRange(backingObject-&gt;axObjectCache(), range, false);
&gt; +//        });

Can this be removed?

&gt; LayoutTests/accessibility/mac/visible-position-crash-for-text-node.html:24
&gt; +//        output += expect(&quot;element.domIdentifier&quot;, &quot;&apos;content&apos;&quot;);

Is this `expect` still valid?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1918963</commentid>
    <comment_count>11</comment_count>
      <attachid>464031</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-13 15:58:22 -0800</bug_when>
    <thetext>Created attachment 464031
Patch

Thanks Tyler. Addressed most of your comments, but this is still a WIP. Stay tuned...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919174</commentid>
    <comment_count>12</comment_count>
      <attachid>464045</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-14 08:03:13 -0800</bug_when>
    <thetext>Created attachment 464045
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919252</commentid>
    <comment_count>13</comment_count>
      <attachid>464049</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-14 12:16:57 -0800</bug_when>
    <thetext>Created attachment 464049
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919272</commentid>
    <comment_count>14</comment_count>
      <attachid>464049</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-14 13:06:26 -0800</bug_when>
    <thetext>Comment on attachment 464049
Patch

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

we need to do something to clean up the AccessibilityObjectWrappers that we&apos;re storing in the TextMarkerData. this is the reason we are calling setNodeInUse(), -- so that it knows to validate the node before using it again

Basically I think we need to update this to check for the validity of the object wrapper

inline bool AXTextMarker::isNull() const
 102{
 103    return !m_axObjectCache || !node() || !m_axObjectCache-&gt;isNodeInUse(node());
 104}

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:99
&gt; +    m_data.node = node;

is it possible to structure these initializers so that we only need to write this code once, and that we have the common initialization handle this work

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:181
&gt; +    if (isIgnored() || isNull())

do we really want to check isIgnored here?that will prevent us from using markers for ignored nodes

&gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:69
&gt; +    return (AXTextMarkerRef)&amp;m_data;

this seems like it can&apos;t work. we&apos;re expecting to return an object that is created and retained. but here&apos; we are just casting it.

feel like this code should be the same on Mac and iOS and probably do what macOS is doing

&gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:89
&gt; +        , adoptCF(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&amp;start.m_data, sizeof(start.m_data))).get()

can we just call platformObject() on start and end, which looks like returns the right data for us</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919273</commentid>
    <comment_count>15</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-14 13:07:12 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #14)
&gt; Comment on attachment 464049 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464049&amp;action=review
&gt; 
&gt; we need to do something to clean up the AccessibilityObjectWrappers that
&gt; we&apos;re storing in the TextMarkerData. this is the reason we are calling
&gt; setNodeInUse(), -- so that it knows to validate the node before using it
&gt; again
&gt; 
&gt; Basically I think we need to update this to check for the validity of the
&gt; object wrapper
&gt; 
&gt; inline bool AXTextMarker::isNull() const
&gt;  102{
&gt;  103    return !m_axObjectCache || !node() ||
&gt; !m_axObjectCache-&gt;isNodeInUse(node());
&gt;  104}
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:99
&gt; &gt; +    m_data.node = node;
&gt; 
&gt; is it possible to structure these initializers so that we only need to write
&gt; this code once, and that we have the common initialization handle this work
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:181
&gt; &gt; +    if (isIgnored() || isNull())
&gt; 
&gt; do we really want to check isIgnored here?that will prevent us from using
&gt; markers for ignored nodes
&gt; 
&gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:69
&gt; &gt; +    return (AXTextMarkerRef)&amp;m_data;
&gt; 
&gt; this seems like it can&apos;t work. we&apos;re expecting to return an object that is
&gt; created and retained. but here&apos; we are just casting it.
&gt; 
&gt; feel like this code should be the same on Mac and iOS and probably do what
&gt; macOS is doing
&gt; 
&gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:89
&gt; &gt; +        , adoptCF(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&amp;start.m_data, sizeof(start.m_data))).get()
&gt; 
&gt; can we just call platformObject() on start and end, which looks like returns
&gt; the right data for us

With us storing the objectWrapper, I wonder whether we need to also store axID() now... it seems like we could just use the wrapper for that</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919294</commentid>
    <comment_count>16</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2022-12-14 14:00:34 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #15)
&gt; (In reply to chris fleizach from comment #14)
&gt; &gt; Comment on attachment 464049 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=464049&amp;action=review
&gt; &gt; 
&gt; &gt; we need to do something to clean up the AccessibilityObjectWrappers that
&gt; &gt; we&apos;re storing in the TextMarkerData. this is the reason we are calling
&gt; &gt; setNodeInUse(), -- so that it knows to validate the node before using it
&gt; &gt; again
&gt; &gt; 
&gt; &gt; Basically I think we need to update this to check for the validity of the
&gt; &gt; object wrapper
&gt; &gt; 
&gt; &gt; inline bool AXTextMarker::isNull() const
&gt; &gt;  102{
&gt; &gt;  103    return !m_axObjectCache || !node() ||
&gt; &gt; !m_axObjectCache-&gt;isNodeInUse(node());
&gt; &gt;  104}
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:99
&gt; &gt; &gt; +    m_data.node = node;
&gt; &gt; 
&gt; &gt; is it possible to structure these initializers so that we only need to write
&gt; &gt; this code once, and that we have the common initialization handle this work
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:181
&gt; &gt; &gt; +    if (isIgnored() || isNull())
&gt; &gt; 
&gt; &gt; do we really want to check isIgnored here?that will prevent us from using
&gt; &gt; markers for ignored nodes
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:69
&gt; &gt; &gt; +    return (AXTextMarkerRef)&amp;m_data;
&gt; &gt; 
&gt; &gt; this seems like it can&apos;t work. we&apos;re expecting to return an object that is
&gt; &gt; created and retained. but here&apos; we are just casting it.
&gt; &gt; 
&gt; &gt; feel like this code should be the same on Mac and iOS and probably do what
&gt; &gt; macOS is doing
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:89
&gt; &gt; &gt; +        , adoptCF(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&amp;start.m_data, sizeof(start.m_data))).get()
&gt; &gt; 
&gt; &gt; can we just call platformObject() on start and end, which looks like returns
&gt; &gt; the right data for us
&gt; 
&gt; With us storing the objectWrapper, I wonder whether we need to also store
&gt; axID() now... it seems like we could just use the wrapper for that

We may be able to remove that duplication. Now it is complicated because you have things like the following in a cpp file:

VisiblePosition AXObjectCache::visiblePositionForTextMarkerData(TextMarkerData&amp; textMarkerData)
{
...
    if (cache &amp;&amp; !cache-&gt;m_idsInUse.contains(textMarkerData.axID))
...
and I&apos;m not sure how to retrieve a property from an ObjC object in a cpp. We can come back to this once we figure out how to better validate the TextMarkers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1919325</commentid>
    <comment_count>17</comment_count>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2022-12-14 15:16:53 -0800</bug_when>
    <thetext>
&gt; VisiblePosition
&gt; AXObjectCache::visiblePositionForTextMarkerData(TextMarkerData&amp;
&gt; textMarkerData)
&gt; {
&gt; ...
&gt;     if (cache &amp;&amp; !cache-&gt;m_idsInUse.contains(textMarkerData.axID))
&gt; ...
&gt; and I&apos;m not sure how to retrieve a property from an ObjC object in a cpp. We
&gt; can come back to this once we figure out how to better validate the
&gt; TextMarkers.

We would change this to

if (cache &amp;&amp; !cache-&gt;objectWrappersInUse(textMarkerData.axObject))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1924961</commentid>
    <comment_count>18</comment_count>
      <attachid>464461</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-11 18:18:26 -0800</bug_when>
    <thetext>Created attachment 464461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1925004</commentid>
    <comment_count>19</comment_count>
      <attachid>464461</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-01-11 23:49:35 -0800</bug_when>
    <thetext>Comment on attachment 464461
Patch

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

&gt; COMMIT_MESSAGE:10
&gt; +AXTextMarker encapsulates the AXIDs of the backing AXObjectCache and AXIsolatedTree, as well as the AXID of the corresponding AXCoreObject. This allow for the retrieval of the TextMarker properties without having to resource to the underlying DOM and RenderTree objects.

This allows

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:-2533
&gt; -    textMarkerData.axID = obj-&gt;objectID();

It looks like we have a constructor for AXTextMarker that would take one of these parameters and fill in all the data here.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2724
&gt; +    if (data.node != marker.m_data.node) {

this usage makes me thing textMarkerDataForPreviousCharacterOffset() should return a TextMarkerData, instead of us passing in data that we need to replace

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:-2826
&gt; -    textMarkerData.axID = obj-&gt;objectID();

It looks like we have a constructor for AXTextMarker that would take one of these parameters and fill in all the data here.

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2897
&gt;      TextMarkerData textMarkerData;

can we use a TextMarker constructor here and then do

return TextMarker(object).data();

&gt; Source/WebCore/accessibility/AXObjectCache.h:63
&gt; +    AXID treeID;

this parameter seems like it&apos;s being used for the cacheID rather than the treeID. is that correct?

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:41
&gt; +    Position deepPosition = visiblePosition.deepEquivalent();

auto deepPosition

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:117
&gt; +    if (!cache)

can we combine some of this code in the constructors into helper methods? I feel like there&apos;s a lot of duplication and a lot of things to get right. for example, you have to remember to call setNodeInUse each time, rather than just having one call site

&gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:57
&gt; +RetainPtr&lt;AXTextMarkerRef&gt; AXTextMarker::platformObject() const

wonder if we should call this copyPlatformObject() so callers know to release it

&gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:62
&gt; +    return (AXTextMarkerRef)&amp;m_data;

I&apos;m worried this does not return an allocated object. I think we&apos;re going to overrelease this on iOS

&gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:69
&gt; +    , m_end(AXTextMarkerRangeCopyEndMarker(textMarkerRangeRef))

I think we need to release these start and end markers, because we copy them here, but we&apos;re not storing or releasing them

&gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:77
&gt; +        , adoptCF(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&amp;m_start.m_data, sizeof(m_start.m_data))).get()

I think we need to autorelease the start and end markers here, otherwise no one else will release them right?

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3740
&gt; +            return (id)AXTextMarker(backingObject-&gt;visiblePositionForPoint(webCorePoint)).platformObject().autorelease();

I think we can use bridgingAutorelease() and then we don&apos;t have to cast to (id)

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3830
&gt; +        return (id)AXTextMarkerRange { { (AXTextMarkerRef)[array objectAtIndex:0] }, { (AXTextMarkerRef)[array objectAtIndex:1] } }.platformObject().autorelease();

I think we can use bridgingAutorelease() and then we don&apos;t have to cast to (id)

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3967
&gt; +        return (id)axTextMarkerRange.start().platformObject().autorelease();

I think we can use bridgingAutorelease() and then we don&apos;t have to cast to (id)

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3972
&gt; +        return (id)axTextMarkerRange.end().platformObject().autorelease();

I think we can use bridgingAutorelease() and then we don&apos;t have to cast to (id)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1925869</commentid>
    <comment_count>20</comment_count>
      <attachid>464516</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-16 14:36:40 -0800</bug_when>
    <thetext>Created attachment 464516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1925978</commentid>
    <comment_count>21</comment_count>
      <attachid>464525</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-17 06:32:10 -0800</bug_when>
    <thetext>Created attachment 464525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926280</commentid>
    <comment_count>22</comment_count>
      <attachid>464537</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-18 09:18:41 -0800</bug_when>
    <thetext>Created attachment 464537
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926284</commentid>
    <comment_count>23</comment_count>
      <attachid>464538</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-18 09:23:37 -0800</bug_when>
    <thetext>Created attachment 464538
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926399</commentid>
    <comment_count>24</comment_count>
      <attachid>464545</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-18 13:53:39 -0800</bug_when>
    <thetext>Created attachment 464545
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926407</commentid>
    <comment_count>25</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-18 14:10:32 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #19)
&gt; Comment on attachment 464461 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464461&amp;action=review
&gt; 
&gt; &gt; COMMIT_MESSAGE:10
&gt; &gt; +AXTextMarker encapsulates the AXIDs of the backing AXObjectCache and AXIsolatedTree, as well as the AXID of the corresponding AXCoreObject. This allow for the retrieval of the TextMarker properties without having to resource to the underlying DOM and RenderTree objects.
&gt; 
&gt; This allows

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:-2533
&gt; &gt; -    textMarkerData.axID = obj-&gt;objectID();
&gt; 
&gt; It looks like we have a constructor for AXTextMarker that would take one of
&gt; these parameters and fill in all the data here.

Added constructors for the TextMarkerData struct that make the code cleaner.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:2724
&gt; &gt; +    if (data.node != marker.m_data.node) {
&gt; 
&gt; this usage makes me thing textMarkerDataForPreviousCharacterOffset() should
&gt; return a TextMarkerData, instead of us passing in data that we need to
&gt; replace

Made several methods return an TextMarkerData instead of taking an out param.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:-2826
&gt; &gt; -    textMarkerData.axID = obj-&gt;objectID();
&gt; 
&gt; It looks like we have a constructor for AXTextMarker that would take one of
&gt; these parameters and fill in all the data here.

Yes, same as above.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:2897
&gt; &gt;      TextMarkerData textMarkerData;
&gt; 
&gt; can we use a TextMarker constructor here and then do
&gt; 
&gt; return TextMarker(object).data();

Not sure that I follow this suggestion, but I did rework this code using the new constructors for TextMarkerData and methods that return TextMarkerData
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.h:63
&gt; &gt; +    AXID treeID;
&gt; 
&gt; this parameter seems like it&apos;s being used for the cacheID rather than the
&gt; treeID. is that correct?

I use treeID for both the ID of the Cache and the ID of the IsolatedTree.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:41
&gt; &gt; +    Position deepPosition = visiblePosition.deepEquivalent();
&gt; 
&gt; auto deepPosition
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:117
&gt; &gt; +    if (!cache)
&gt; 
&gt; can we combine some of this code in the constructors into helper methods? I
&gt; feel like there&apos;s a lot of duplication and a lot of things to get right. for
&gt; example, you have to remember to call setNodeInUse each time, rather than
&gt; just having one call site

Yes,, reduced the duplication with the TextMarkerData constructors.
&gt; 
&gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:57
&gt; &gt; +RetainPtr&lt;AXTextMarkerRef&gt; AXTextMarker::platformObject() const
&gt; 
&gt; wonder if we should call this copyPlatformObject() so callers know to
&gt; release it

Renamed to platformData, since that&apos;s what it returns.
&gt; 
&gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:62
&gt; &gt; +    return (AXTextMarkerRef)&amp;m_data;

&gt; 
&gt; I&apos;m worried this does not return an allocated object. I think we&apos;re going to
&gt; overrelease this on iOS

Fixed by introducing PlatformTextMarkerData and serialization/deserialization of TextMarkerData for the specific platform.
&gt; 
&gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:69
&gt; &gt; +    , m_end(AXTextMarkerRangeCopyEndMarker(textMarkerRangeRef))
&gt; 
&gt; I think we need to release these start and end markers, because we copy them
&gt; here, but we&apos;re not storing or releasing them

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/cocoa/AXTextMarkerCocoa.mm:77
&gt; &gt; +        , adoptCF(AXTextMarkerCreate(kCFAllocatorDefault, (const UInt8*)&amp;m_start.m_data, sizeof(m_start.m_data))).get()
&gt; 
&gt; I think we need to autorelease the start and end markers here, otherwise no
&gt; one else will release them right?

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3740
&gt; &gt; +            return (id)AXTextMarker(backingObject-&gt;visiblePositionForPoint(webCorePoint)).platformObject().autorelease();
&gt; 
&gt; I think we can use bridgingAutorelease() and then we don&apos;t have to cast to
&gt; (id)
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3830
&gt; &gt; +        return (id)AXTextMarkerRange { { (AXTextMarkerRef)[array objectAtIndex:0] }, { (AXTextMarkerRef)[array objectAtIndex:1] } }.platformObject().autorelease();
&gt; 
&gt; I think we can use bridgingAutorelease() and then we don&apos;t have to cast to
&gt; (id)
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3967
&gt; &gt; +        return (id)axTextMarkerRange.start().platformObject().autorelease();
&gt; 
&gt; I think we can use bridgingAutorelease() and then we don&apos;t have to cast to
&gt; (id)
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperMac.mm:3972
&gt; &gt; +        return (id)axTextMarkerRange.end().platformObject().autorelease();
&gt; 
&gt; I think we can use bridgingAutorelease() and then we don&apos;t have to cast to
&gt; (id)

Fixed, bridgingRelease() all of the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926414</commentid>
    <comment_count>26</comment_count>
      <attachid>464546</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-18 14:32:25 -0800</bug_when>
    <thetext>Created attachment 464546
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926424</commentid>
    <comment_count>27</comment_count>
      <attachid>464546</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2023-01-18 14:54:38 -0800</bug_when>
    <thetext>Comment on attachment 464546
Patch

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

&gt; Source/WebCore/accessibility/AXObjectCache.cpp:2794
&gt; +    cache-&gt;setNodeInUse(node);

should we put the nodeInUse in the contractor for the Marker? it will at least reduce chance someone forgets that step

&gt; Source/WebCore/accessibility/AXTextMarker.cpp:41
&gt; +    Node* node = visiblePosition.deepEquivalent().anchorNode();

auto* node

&gt; Source/WebCore/accessibility/AXTextMarker.h:47
&gt; +    TextMarkerData()

should we allow this to be made without arguments? aka - do we need this constructor?

&gt; Source/WebCore/accessibility/AXTextMarker.h:58
&gt; +        memset(static_cast&lt;void*&gt;(this), 0, sizeof(*this));

should we have this constructor call into the other one to reduce duplicated code?

&gt; Source/WebCore/accessibility/AXTextMarker.h:74
&gt; +        if (cache) {

should we assert and return error if cache is nil?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926622</commentid>
    <comment_count>28</comment_count>
      <attachid>464563</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-19 08:39:49 -0800</bug_when>
    <thetext>Created attachment 464563
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926631</commentid>
    <comment_count>29</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-19 08:49:36 -0800</bug_when>
    <thetext>(In reply to chris fleizach from comment #27)
&gt; Comment on attachment 464546 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=464546&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXObjectCache.cpp:2794
&gt; &gt; +    cache-&gt;setNodeInUse(node);
&gt; 
&gt; should we put the nodeInUse in the contractor for the Marker? it will at
&gt; least reduce chance someone forgets that step

This is a private method of the cache, and I think it belongs there. I don&apos;t anticipate that we need to do this any where else.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.cpp:41
&gt; &gt; +    Node* node = visiblePosition.deepEquivalent().anchorNode();
&gt; 
&gt; auto* node

Fixed.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.h:47
&gt; &gt; +    TextMarkerData()
&gt; 
&gt; should we allow this to be made without arguments? aka - do we need this
&gt; constructor?

We do need this default constructor because the AXTextMarker and AXTextMarkerRange classes have default constructors and thus the m_data member has to have one.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.h:58
&gt; &gt; +        memset(static_cast&lt;void*&gt;(this), 0, sizeof(*this));
&gt; 
&gt; should we have this constructor call into the other one to reduce duplicated
&gt; code?

Calling other constructor will create a different object. An init function could be added but since it is just a function call that is shared, didn&apos;t think it was worthy.
&gt; 
&gt; &gt; Source/WebCore/accessibility/AXTextMarker.h:74
&gt; &gt; +        if (cache) {
&gt; 
&gt; should we assert and return error if cache is nil?

Changed it to take a cache by reference, so we don&apos;t have to check in here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1926985</commentid>
    <comment_count>30</comment_count>
      <attachid>464582</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2023-01-20 11:23:40 -0800</bug_when>
    <thetext>Created attachment 464582
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1927103</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2023-01-21 07:09:44 -0800</bug_when>
    <thetext>Committed 259169@main (a805e7d61cce): &lt;https://commits.webkit.org/259169@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 464582.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438839</attachid>
            <date>2021-09-21 11:30:38 -0700</date>
            <delta_ts>2022-12-06 18:14:10 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20210921143037.patch</filename>
            <type>text/plain</type>
            <size>91059</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzVmZGM5NDQ2NWI1MmMw
OTgwYWYwOTdmMzA4MTdkMTRjZjEzOTA4Mi4uODQ5OTAzNDgwMGQ0YTNhZmQwZGYxMzkwN2Q1MDdm
YjYxODczZjdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwOSBAQAorMjAyMS0wOS0yMSAgQW5k
cmVzIEdvbnphbGV6ICA8YW5kcmVzZ18yMkBhcHBsZS5jb20+CisKKyAgICAgICAgUmVmYWN0b3Jp
bmcgb2YgQVhUZXh0TWFya2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBzdXBwb3J0IG9uIE1hYy4K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1OAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRs
eSBhY2Nlc3NpYmlsaXR5IHVzZXMgdGhyZWUgZGlmZmVyZW50IHR5cGVzIHRvIHJlZmVyIHRvIGEK
KyAgICAgICAgcGFydGljdWxhciBwb3NpdGlvbiBpbiBhIHBhZ2U6IEFYVGV4dE1hcmtlclJlZiwg
Q2hhcmFjdGVyT2Zmc2V0IGFuZCBWaXNpYmxlUG9zaXRpb24uIFRoaXMgcGF0Y2ggaXMgYSBzdGVw
IGluIGNvbnNvbG9kYXRpbmcgdGhpcyB0aHJlZSB0eXBlcyBpbiBhIHNpbmdsZQorICAgICAgICBj
bGFzcywgQVhUZXh0TWFya2VyLCB0aGF0IHByb3ZpZGVzIHRoZSBmdW5jdGlvbmFsaXR5IG5lZWRl
ZCB0aHJvdWdob3V0IHRoZSBhY2Nlc3NpYmlsaXR5IGNvcmUgY29kZSBhbmQgcGxhdGZvcm0gd3Jh
cHBlcnMuCisKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRUZXh0
TWFya2VyRm9yUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1h
cmtlckZvck5leHRDaGFyYWN0ZXJPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29u
dHJvbCk6CisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25G
b3JUZXh0TWFya2VyRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBWE9iamVjdENh
Y2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBWE9iamVjdENhY2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJP
ZmZzZXQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6c3RhcnRP
ckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6
QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0
Q2hhcmFjdGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRl
eHRNYXJrZXJEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFYT2JqZWN0Q2FjaGU6
OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4
dENvbnRyb2wpOiBEZWxldGVkLgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcik6CisgICAgICAgIChX
ZWJDb3JlOjpBWFRleHRNYXJrZXI6OnBsYXRmb3JtT2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFYVGV4dE1hcmtlcjo6c2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpBWFRleHRN
YXJrZXI6Om9wZXJhdG9yIFZpc2libGVQb3NpdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpBWFRleHRNYXJrZXI6Om9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpBWFRleHRNYXJrZXI6OmF4T2JqZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OkFYVGV4dE1hcmtlcjo6ZGVidWdEZXNjcmlwdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJD
b3JlOjpBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6QVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0IGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5n
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpBWFRleHRNYXJrZXJSYW5nZTo6c2ltcGxlUmFu
Z2UgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmg6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFya2VyOjpvcGVyYXRvciBBWFRleHRNYXJrZXJS
ZWYgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFya2VyOjpkYXRhIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlcjo6bm9kZSBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpBWFRleHRNYXJrZXI6OmF4SUQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhU
ZXh0TWFya2VyOjppc0lnbm9yZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6QVhUZXh0TWFy
a2VyUmFuZ2U6Om9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdlUmVmIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkFYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRvciBib29sIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkFYVGV4dE1hcmtlcjo6aXNOdWxsIGNvbnN0KToKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlPYmplY3RJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0Lmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0
eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW06CisgICAgICAgIChXZWJD
b3JlOjpBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlIGNvbnN0KToK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90
aWZpY2F0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZFRleHRNYXJrZXJGb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6QVhUZXh0TWFya2VyUmFuZ2UpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6dGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnMpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QVhUZXh0TWFya2VyUmFuZ2VTdGFydCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpB
WFRleHRNYXJrZXJSYW5nZUVuZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpnZXRCeXRl
c0Zyb21BWFRleHRNYXJrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6YWNjZXNzaWJp
bGl0eU9iamVjdEZvclRleHRNYXJrZXIpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6dGV4
dE1hcmtlckZvclZpc2libGVQb3NpdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjp2
aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6
OnRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OnZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcik6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpyYW5nZUZvclRleHRNYXJrZXJSYW5nZSk6IERlbGV0
ZWQuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0eU9iamVjdE1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRNYXJrZXJSYW5n
ZUZvck5TUmFuZ2UgY29uc3QpOgorICAgICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmg6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgIChpc1RleHRNYXJr
ZXJSYW5nZVJlZik6CisgICAgICAgIChhY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbkZvclBhcmFt
ZXRlcml6ZWRBdHRyaWJ1dGUpOgorICAgICAgICAoYWNjZXNzaWJpbGl0eU1pc3NwZWxsaW5nU2Vh
cmNoQ3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKToKKyAgICAgICAgKG5leHRUZXh0
TWFya2VyKToKKyAgICAgICAgKHByZXZpb3VzVGV4dE1hcmtlcik6CisgICAgICAgICgtW1dlYkFj
Y2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlOnNwZWxsQ2hlY2s6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIHNlbGVjdGVkVGV4dE1hcmtlclJhbmdlXSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAg
ICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX2FjY2Vzc2liaWxpdHlTZXRWYWx1
ZTpmb3JBdHRyaWJ1dGU6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyIF9pbmRleEZvclRleHRNYXJrZXI6XSk6CisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIF90ZXh0TWFya2VyRm9ySW5kZXg6XSk6Cisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGRlYnVnRGVzY3JpcHRpb25G
b3JUZXh0TWFya2VyOl0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciBkZWJ1Z0Rlc2NyaXB0aW9uRm9yVGV4dE1hcmtlclJhbmdlOl0pOgorICAgICAgICAoLVtXZWJB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBzaG93Tm9kZUZvclRleHRNYXJrZXI6XSk6CisgICAg
ICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHNob3dOb2RlVHJlZUZvclRleHRN
YXJrZXI6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRN
YXJrZXJSYW5nZUF0VGV4dE1hcmtlcjpmb3JVbml0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlciBsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcjpmb3JV
bml0Ol0pOgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciB0ZXh0TWFy
a2VyRm9yVGV4dE1hcmtlcjphdFVuaXQ6XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpmb3JQYXJhbWV0ZXI6XSk6
CisgICAgICAgIChBWE9iamVjdElzVGV4dE1hcmtlclJhbmdlKTogRGVsZXRlZC4KKyAgICAgICAg
KG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KTogRGVsZXRlZC4KKyAgICAgICAgKHBy
ZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldCk6IERlbGV0ZWQuCisgICAgICAgICgt
W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0Ol0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlciBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6XSk6IERlbGV0ZWQuCisg
ICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIHRleHRNYXJrZXJGb3JWaXNp
YmxlUG9zaXRpb246XSk6IERlbGV0ZWQuCisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIHRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbDpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgdGV4dE1hcmtl
clJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6ZW5kUG9zaXRpb246XSk6IERlbGV0ZWQuCisKIDIw
MjEtMDktMTMgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW21hY09TXSAtdG9nZ2xlQXV0b21hdGljU3BlbGxpbmdDb3JyZWN0aW9uOiBtZW51IGl0ZW0g
dmFsaWRhdGlvbiBzaG91bGRuJ3QgcmVxdWlyZSBwb3N0LWxheW91dCBlZGl0b3Igc3RhdGUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggMzhhN2QzNDc1MDVkOTQwYzNmMGUzNGQzZDY5NzMzODM0Mzc5Y2EyMi4u
MzI5MmFhM2U4OTFiYTIyNmU2OTc4MTUzZGEyMDc1NzJiNDQ5ZWM5ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQK
QEAgLTM3Niw2ICszNzYsNyBAQCBNb2R1bGVzL3dlYnhyL1hSU2Vzc2lvbkV2ZW50LmNwcCBAbm8t
dW5pZnkKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIu
Y3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCithY2Nlc3NpYmlsaXR5L0FYVGV4
dE1hcmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZDIxMzQ0ZWM4MjMwY2MzYjMzODE1MGQ3
MzRkMDlhNGZhNzVjZjUxOS4uYzcxMjU5ZTE5ZTJmMTlhMGM4NTc2YWFkMTc0OGM3ZTQzZjAwZGU4
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTQ3NTIsNiArMTQ3NTIsOCBAQAogCQlDMDQwMEM3RTI2MUNCM0RCMDBBRjQ0RkEg
LyogQVhJbWFnZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWEltYWdlLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA0NkUxQUIxMjA4QTlGRTAwQkEyQ0Y3IC8qIExvY2FsaXpl
ZFN0cmluZ3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTG9jYWxp
emVkU3RyaW5ncy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNDkzRUI3MjQ0
Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMDZBNzEwMjI2
RjAyM0IzMDA4RTZDMEQgLyogQVhUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVGV4dE1h
cmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMDZBNzEwNDI2RjAyOTg1MDA4
RTZDMEQgLyogQVhUZXh0TWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYVGV4dE1hcmtl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5
QzVDOCAvKiBBWElzb2xhdGVkT2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJ
c29sYXRlZE9iamVjdE1hYy5tbTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyog
QVhMb2dnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNz
aWJpbGl0eS50YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSAic291cmNlY29kZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGli
QWNjZXNzaWJpbGl0eS50YmQ7IHBhdGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBz
b3VyY2VUcmVlID0gU0RLUk9PVDsgfTsKQEAgLTE5MTg1LDYgKzE5MTg3LDggQEAKIAkJCQlDMDQ5
M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgy
MkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMx
RDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywKKwkJCQlDMDZBNzEwNDI2RjAyOTg1MDA4
RTZDMEQgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKKwkJCQlDMDZBNzEwMjI2RjAyM0IzMDA4RTZD
MEQgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJOTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFDIC8q
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggKi8sCiAJCQkJQkM0QTUzMzAyNTYwNTkwMzAwMjhD
NTkyIC8qIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZS5oICovLAogCQkJKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDg5ZjhhNjViMTVm
ZTI4NmM0N2NkZjJkMjdhMjVkN2Q3Y2Q3OTc4ZjkuLjhjMGNlODg0ZjE5MTgyNjhmOWZiNzg4Y2Fi
NzA2NTk0ZDY2NzVjYzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmpl
Y3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYTG9nZ2VyLmgi
CisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFH
cmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgogI2luY2x1ZGUg
IkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgpAQCAtMTkyMCw0NCArMTkyMSw2IEBAIHZvaWQg
QVhPYmplY3RDYWNoZTo6c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKQogICAg
IG1fY29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZSA9IG51bGxwdHI7CiB9CiAKLVZpc2libGVQ
b3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShU
ZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEpCi17Ci0gICAgaWYgKCFpc05vZGVJblVzZSh0
ZXh0TWFya2VyRGF0YS5ub2RlKQotICAgICAgICB8fCB0ZXh0TWFya2VyRGF0YS5ub2RlLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgIGF1dG8gdmlzaWJsZVBv
c2l0aW9uID0gVmlzaWJsZVBvc2l0aW9uKHsgdGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtl
ckRhdGEub2Zmc2V0LCB0ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBlIH0sIHRleHRNYXJrZXJEYXRh
LmFmZmluaXR5KTsKLSAgICBhdXRvIGRlZXBQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpOwotICAgIGlmIChkZWVwUG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybiB7IH07Ci0KLSAgICBhdXRvKiByZW5kZXJlciA9IGRlZXBQb3NpdGlvbi5kZXByZWNhdGVk
Tm9kZSgpLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiB7
IH07Ci0KLSAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKTsKLSAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRleHRN
YXJrZXJEYXRhLmF4SUQpKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgcmV0dXJuIHZpc2li
bGVQb3NpdGlvbjsKLX0KLQotQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rl
ck9mZnNldEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkK
LXsKLSAgICBpZiAoIWlzTm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpKQotICAgICAgICBy
ZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgaWYgKHRleHRNYXJrZXJEYXRhLmln
bm9yZWQpCi0gICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKLSAgICAKLSAgICBDaGFy
YWN0ZXJPZmZzZXQgcmVzdWx0ID0gQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLm5vZGUs
IHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgsIHRleHRNYXJrZXJEYXRhLmNoYXJh
Y3Rlck9mZnNldCk7Ci0gICAgLy8gV2hlbiB3ZSBhcmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBW
aXNpYmxlUG9zaXRpb24gaXMgdXBzdHJlYW0sIGl0IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBh
dCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lLgotICAgIC8vIFdlIHVzZSB0aGUgcHJldmlv
dXMgQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQgaXQgd2lsbCBtYXRjaCB0aGUgUmFuZ2UuCi0gICAg
aWYgKHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKLSAgICAg
ICAgcmV0dXJuIHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwgZmFsc2UpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjp0cmF2ZXJz
ZVRvT2Zmc2V0SW5SYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGludCBvZmZzZXQsIFRy
YXZlcnNlT3B0aW9uIG9wdGlvbiwgYm9vbCBzdGF5V2l0aGluUmFuZ2UpCiB7CiAgICAgYm9vbCB0
b05vZGVFbmQgPSBvcHRpb24gJiBUcmF2ZXJzZU9wdGlvblRvTm9kZUVuZDsKQEAgLTIyMjIsMzkg
KzIxODUsNiBAQCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5n
ZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29ucwogICAgIHJldHVybiB7IHsgKnN0YXJ0
LCAqIGVuZCB9IH07CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFX
aXRoQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCi17Ci0gICAgaWYgKGNoYXJhY3Rlck9m
ZnNldC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIE5vZGUqIGRvbU5vZGUg
PSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRv
bU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3Jk
RmllbGQoKSkgewotICAgICAgICB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkID0gdHJ1ZTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
b2JqID0gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7Ci0gICAgaWYgKCFvYmopCi0gICAgICAg
IHJldHVybjsKLSAgICAKLSAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRpb24uCi0gICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZyb21DaGFy
YWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpbnQgdnBPZmZzZXQgPSAwOwotICAg
IGlmICghdmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKSB7Ci0gICAgICAgIFBvc2l0aW9uIGRlZXBQ
b3MgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKLSAgICAgICAgdnBPZmZzZXQg
PSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgfQotICAgIAotICAgIHRl
eHRNYXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9iamVjdElEKCk7Ci0gICAgdGV4dE1hcmtl
ckRhdGEubm9kZSA9IGRvbU5vZGU7Ci0gICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0
ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKLSAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJT
dGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXg7Ci0gICAgdGV4dE1hcmtlckRh
dGEub2Zmc2V0ID0gdnBPZmZzZXQ7Ci0gICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2aXNp
YmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKLSAgICAKLSAgICB0aGlzLT5zZXROb2RlSW5Vc2UoZG9t
Tm9kZSk7Ci19Ci0KIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hh
cmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3Rh
cnQsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMpCiB7CiAgICAgLy8gV2hlbiBnZXR0aW5nIHRoZSBl
bmQgQ2hhcmFjdGVyT2Zmc2V0IGF0IG5vZGUgYm91bmRhcnksIHdlIGRvbid0IHdhbnQgdG8gY29s
bGFwc2UgdG8gdGhlIHByZXZpb3VzIG5vZGUuCkBAIC0yMjg2LDE3ICsyMjE2LDkgQEAgQ2hhcmFj
dGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5n
ZShjb25zdCBTaW1wbGVSYW4KICAgICByZXR1cm4gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UoY29w
eVJhbmdlLCBvZmZzZXQsIG9wdGlvbnMsIHN0YXlXaXRoaW5SYW5nZSk7CiB9CiAKLXZvaWQgQVhP
YmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoVGV4dE1hcmtlckRh
dGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFy
dCkKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kVGV4dE1hcmtlckZvclJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQogewotICAgIC8vIFRo
aXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBj
YW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6IFRoaXMg
aXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0
eXBlLgotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwg
c2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShyYW5nZSwgaXNT
dGFydCk7Ci0gICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldCh0ZXh0TWFy
a2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICByZXR1cm4geyB0aGlzLCBzdGFydE9yRW5k
Q2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UocmFuZ2UsIGlzU3RhcnQpIH07CiB9CiAKIENoYXJhY3Rl
ck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5v
ZGUmIG5vZGUsIGludCBvZmZzZXQsIFRyYXZlcnNlT3B0aW9uIG9wdGlvbikKQEAgLTIzNDUsMTUg
KzIyNjcsNiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0
Rm9yTm9kZUFuZE9mZnNldChOb2RlJiBub2RlLCBpbnQgbwogICAgIHJldHVybiBjaGFyYWN0ZXJP
ZmZzZXQ7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0
ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKLXsKLSAgICAvLyBUaGlzIG1lbW9yeSBtdXN0IGJlIHpl
cm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0
ZS1lcXVpdmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBiYWQgYmVj
YXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KLSAgICBtZW1zZXQoc3Rh
dGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0
YSkpOwotCi0gICAgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJr
ZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotfQotCiBib29sIEFYT2JqZWN0Q2FjaGU6OnNob3Vs
ZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3VzLCBjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmIG5leHQpCiB7CiAgICAgLy8gTWF0Y2ggdGhlIGJlaGF2aW9yIG9mIFZpc2li
bGVQb3NpdGlvbiwgd2Ugc2hvdWxkIHNraXAgdGhlIG5vZGUgYm91bmRhcnkgd2hlbiB0aGVyZSdz
IG5vIHZpc3VhbCBzcGFjZSBvciBuZXcgbGluZSBjaGFyYWN0ZXIuCkBAIC0yMzcyLDkgKzIyODUs
MTEgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpzaG91bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0JiBwcmV2aW91cywgY29uc3QgQ2gKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
LSAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVy
T2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjp0ZXh0
TWFya2VyRm9yTmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJh
Y3Rlck9mZnNldCkKIHsKKyAgICBBWFRleHRNYXJrZXIgdGV4dE1hcmtlcjsKKwogICAgIENoYXJh
Y3Rlck9mZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwogICAgIENoYXJhY3Rlck9mZnNldCBw
cmV2aW91cyA9IGNoYXJhY3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwpAQCAt
MjM4MywzMCArMjI5OCwzNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9y
TmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogICAgICAgICBuZXh0
ID0gbmV4dENoYXJhY3Rlck9mZnNldChuZXh0LCBmYWxzZSk7CiAgICAgICAgIGlmIChzaG91bGRT
a2lwQm91bmRhcnkocHJldmlvdXMsIG5leHQpKQogICAgICAgICAgICAgbmV4dCA9IG5leHRDaGFy
YWN0ZXJPZmZzZXQobmV4dCwgZmFsc2UpOwotICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgbmV4dCk7Ci0gICAgICAgIAorICAgICAgICB0ZXh0
TWFya2VyID0gQVhUZXh0TWFya2VyKHRoaXMsIG5leHQpOworCiAgICAgICAgIC8vIFdlIHNob3Vs
ZCBza2lwIG5leHQgQ2hhcmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAg
ICAgICAgIGlmICghbGVuZ3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZz
ZXRzKHByZXZpb3VzLCBuZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7
CiAgICAgICAgIHByZXZpb3VzID0gbmV4dDsKLSAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5p
Z25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsKKyAgICB9IHdoaWxlICh0ZXh0TWFya2VyLmlzSWdu
b3JlZCgpIHx8IHNob3VsZENvbnRpbnVlKTsKKworICAgIHJldHVybiB0ZXh0TWFya2VyOwogfQog
Ci12b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJP
ZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjp0ZXh0TWFy
a2VyRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFy
YWN0ZXJPZmZzZXQpCiB7CisgICAgQVhUZXh0TWFya2VyIHRleHRNYXJrZXI7CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OwogICAgIENoYXJhY3Rlck9mZnNl
dCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwogICAgIGJvb2wgc2hvdWxkQ29udGludWU7CiAgICAg
ZG8gewogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNlOwogICAgICAgICBwcmV2aW91cyA9
IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzLCBmYWxzZSk7Ci0gICAgICAgIHRleHRN
YXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBwcmV2aW91cyk7Ci0g
ICAgICAgIAorICAgICAgICB0ZXh0TWFya2VyID0gQVhUZXh0TWFya2VyKHRoaXMsIHByZXZpb3Vz
KTsKKwogICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQg
aWYgaXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFsZW5ndGhGb3JSYW5nZShy
YW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMsIG5leHQpKSkKICAgICAg
ICAgICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgbmV4dCA9IHByZXZpb3VzOwot
ICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOwor
ICAgIH0gd2hpbGUgKHRleHRNYXJrZXIuaXNJZ25vcmVkKCkgfHwgc2hvdWxkQ29udGludWUpOwor
CisgICAgcmV0dXJuIHRleHRNYXJrZXI7CiB9CiAKIE5vZGUqIEFYT2JqZWN0Q2FjaGU6Om5leHRO
b2RlKE5vZGUqIG5vZGUpIGNvbnN0CkBAIC0yNDk1LDg4ICsyNDE1LDE1IEBAIENoYXJhY3Rlck9m
ZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKGNv
bnN0IFZpc2libGVQCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQWNjZXNzaWJpbGl0eU9iamVj
dCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRl
eHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkKLXsKLSAgICBpZiAoIWlzTm9kZUluVXNlKHRl
eHRNYXJrZXJEYXRhLm5vZGUpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICAKLSAgICBO
b2RlKiBkb21Ob2RlID0gdGV4dE1hcmtlckRhdGEubm9kZTsKLSAgICByZXR1cm4gdGhpcy0+Z2V0
T3JDcmVhdGUoZG9tTm9kZSk7Ci19Ci0KLXN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFY
T2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdmlzaWJsZVBvcykKLXsKLSAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2
aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogZG9tTm9kZSA9IGRlZXBQb3Mu
YW5jaG9yTm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2RlKTsKLSAgICBpZiAoIWRvbU5vZGUpCi0g
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVu
dD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIC8vIElm
IHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBhbiBhbmNob3IgdHlwZSByZWZlcnJpbmcgdG8gYSBu
b2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVkIG5vZGUsIHdlIHNob3VsZAotICAgIC8vIHNldCB0
aGUgdGV4dCBtYXJrZXIgZGF0YSB3aXRoIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IHRoZSBvZmZz
ZXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBub2RlLgotICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQ
b3MpOwotICAgIGlmIChkZWVwUG9zLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25J
c0FmdGVyQW5jaG9yIHx8IGRlZXBQb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJDaGlsZHJlbikgewotICAgICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0
YTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRh
dGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKLSAg
ICB9Ci0KLSAgICAvLyBmaW5kIG9yIGNyZWF0ZSBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3Ig
dGhpcyBub2RlCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb21Ob2RlLT5kb2N1bWVudCgp
LmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSBjYWNoZS0+Z2V0
T3JDcmVhdGUoZG9tTm9kZSk7Ci0KLSAgICAvLyBUaGlzIG1lbW9yeSBtdXN0IGJlIHplcm8nZCBz
byBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0ZS1lcXVp
dmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBiYWQgYmVjYXVzZSBU
ZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KLSAgICBUZXh0TWFya2VyRGF0YSB0
ZXh0TWFya2VyRGF0YTsKLSAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2Vy
RGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAgIAotICAgIHRleHRNYXJrZXJE
YXRhLmF4SUQgPSBvYmouZ2V0KCktPm9iamVjdElEKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEubm9k
ZSA9IGRvbU5vZGU7Ci0gICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpOwotICAgIHRleHRNYXJrZXJEYXRhLmFuY2hvclR5cGUgPSBkZWVw
UG9zLmFuY2hvclR5cGUoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQ
b3MuYWZmaW5pdHkoKTsKLQotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNo
YXJhY3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJ
bmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwotCi0gICAgY2FjaGUtPnNldE5vZGVJ
blVzZShkb21Ob2RlKTsKLQotICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKLX0KLQogLy8gVGhp
cyBmdW5jdGlvbiBleGl0cyBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCBh
IHN5bmNocm9ub3VzIGxheW91dC4KLXN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2Jq
ZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRN
TFRleHRGb3JtQ29udHJvbEVsZW1lbnQmIHRleHRDb250cm9sKQorc3RkOjpvcHRpb25hbDxBWFRl
eHRNYXJrZXI+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0
Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7CiAgICAg
aWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50Pih0ZXh0Q29udHJvbCkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHRleHRDb250cm9s
LmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2Jq
ID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZ0ZXh0Q29udHJvbCk7Ci0gICAgaWYgKCFvYmopCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICAvLyBUaGlzIG1lbW9yeSBtdXN0IGJlIHpl
cm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0
ZS1lcXVpdmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBiYWQgYmVj
YXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KLSAgICBUZXh0TWFya2Vy
RGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0
TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAgIAotICAgIHRleHRN
YXJrZXJEYXRhLmF4SUQgPSBvYmouZ2V0KCktPm9iamVjdElEKCk7Ci0gICAgdGV4dE1hcmtlckRh
dGEubm9kZSA9ICZ0ZXh0Q29udHJvbDsKLQotICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UoJnRleHRD
b250cm9sKTsKLQotICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKKyAgICBpZiAoYXV0byogY2Fj
aGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgcmV0
dXJuIHt7IGNhY2hlLCAmdGV4dENvbnRyb2wgfX07CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRDaGFyYWN0ZXJPZmZzZXQo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJvb2wgaWdub3JlTmV4dE5v
ZGVTdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
aW5kZXggNDM5ZjZiNGU3OWJkOGUzNWM0N2YyYjY4ZjMyZDMyYWE2YjdkY2FhOS4uNjE1Y2I0NDlh
ZTg1ZGZmYWIwYWUyNDdiNGFlNjY0NzVmMWJhYTE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ2LDYgKzQ2LDcgQEAgY2xhc3MgVGV4dFN0
cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRleHRNYXJrZXI7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUZXh0Rm9ybUNv
bnRyb2xFbGVtZW50OwpAQCAtNTgsMTkgKzU5LDYgQEAgY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNz
IFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsKIAotc3RydWN0IFRleHRNYXJrZXJEYXRh
IHsKLSAgICBBWElEIGF4SUQgeyAwIH07Ci0KLSAgICBOb2RlKiBub2RlIHsgbnVsbHB0ciB9Owot
ICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKLSAgICBQb3NpdGlvbjo6QW5jaG9yVHlwZSBhbmNo
b3JUeXBlIHsgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciB9OwotICAgIEFmZmlu
aXR5IGFmZmluaXR5IHsgQWZmaW5pdHk6OkRvd25zdHJlYW0gfTsKLQotICAgIGludCBjaGFyYWN0
ZXJTdGFydEluZGV4IHsgMCB9OwotICAgIGludCBjaGFyYWN0ZXJPZmZzZXQgeyAwIH07Ci0gICAg
Ym9vbCBpZ25vcmVkIHsgZmFsc2UgfTsKLX07Ci0KIHN0cnVjdCBDaGFyYWN0ZXJPZmZzZXQgewog
ICAgIE5vZGUqIG5vZGU7CiAgICAgaW50IHN0YXJ0SW5kZXg7CkBAIC0xNDMsNiArMTMxLDcgQEAg
ZW51bSBjbGFzcyBQb3N0VGFyZ2V0IHsgRWxlbWVudCwgT2JzZXJ2YWJsZVBhcmVudCB9OwogY2xh
c3MgQVhPYmplY3RDYWNoZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RDYWNo
ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBXVEY6OlRleHRTdHJlYW0m
IG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQVhPYmplY3RDYWNoZSYpOworICAgIGZyaWVu
ZCBBWFRleHRNYXJrZXI7CiBwdWJsaWM6CiAgICAgZXhwbGljaXQgQVhPYmplY3RDYWNoZShEb2N1
bWVudCYpOwogICAgIH5BWE9iamVjdENhY2hlKCk7CkBAIC0yMjksMTkgKzIxOCwxNCBAQCBwdWJs
aWM6CiAgICAgVmVjdG9yPFJlZlB0cjxBWENvcmVPYmplY3Q+PiBvYmplY3RzRm9ySURzKGNvbnN0
IFZlY3RvcjxBWElEPiYpIGNvbnN0OwogCiAgICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0aWVzLgot
ICAgIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yVmlzaWJs
ZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotICAgIHN0ZDo6b3B0aW9uYWw8VGV4
dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2wo
SFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKTsKLSAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7
Ci0gICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtl
ckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICB2b2lkIHRleHRNYXJrZXJEYXRh
Rm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1h
cmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKLSAgICAvLyBVc2UgaWdu
b3JlTmV4dE5vZGVTdGFydC9pZ25vcmVQcmV2aW91c05vZGVFbmQgdG8gZGV0ZXJtaW5lIHRoZSBi
ZWhhdmlvciB3aGVuIHdlIGFyZSBhdCBub2RlIGJvdW5kYXJ5LiAKKyAgICBzdGQ6Om9wdGlvbmFs
PEFYVGV4dE1hcmtlcj4gdGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7CisgICAgQVhUZXh0TWFya2VyIHRleHRNYXJrZXJG
b3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4
dE1hcmtlciB0ZXh0TWFya2VyRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0Jik7CisgICAgLy8gVXNlIGlnbm9yZU5leHROb2RlU3RhcnQvaWdub3JlUHJldmlv
dXNOb2RlRW5kIHRvIGRldGVybWluZSB0aGUgYmVoYXZpb3Igd2hlbiB3ZSBhcmUgYXQgbm9kZSBi
b3VuZGFyeS4KICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZU5leHROb2RlU3RhcnQgPSB0cnVlKTsKICAgICBD
aGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0JiwgYm9vbCBpZ25vcmVQcmV2aW91c05vZGVFbmQgPSB0cnVlKTsKLSAgICB2b2lkIHN0YXJ0
T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJEYXRhJiwgY29uc3QgU2ltcGxl
UmFuZ2UmLCBib29sKTsKKyAgICBBWFRleHRNYXJrZXIgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wpOwogICAgIENoYXJhY3Rlck9mZnNldCBzdGFy
dE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sLCBi
b29sIGVudGVyVGV4dENvbnRyb2xzID0gZmFsc2UpOwotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwog
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVy
T2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsK
ICAgICBzdGF0aWMgU2ltcGxlUmFuZ2UgcmFuZ2VGb3JOb2RlQ29udGVudHMoTm9kZSYpOwogICAg
IHN0YXRpYyBpbnQgbGVuZ3RoRm9yUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mKTsKQEAgLTQyMyw3ICs0MDcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgQ2hhcmFjdGVyT2Zmc2V0
IHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgaW50LCBUcmF2ZXJz
ZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCwgYm9vbCBzdGF5V2l0aGluUmFuZ2UgPSBm
YWxzZSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJP
ZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0g
ICAgdm9pZCBzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRh
dGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hhcjMyIGNoYXJhY3RlckFmdGVy
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlKGNv
bnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNlT3B0aW9uID0gVHJhdmVyc2VP
cHRpb25EZWZhdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFy
a2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yODkxODc3NzlmMjFhMDcyMzVlMmU5YWQ1ZmFhM2ZlN2IxZThl
ZGUwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRl
eHRNYXJrZXIuY3BwCkBAIC0wLDAgKzEsMjczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJBWFRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFYT2JqZWN0
Q2FjaGUuaCIKKyNpbmNsdWRlICJIVG1MSW5wdXRFbGVtZW50LmgiCisjaW5jbHVkZSA8cGFsL3Nw
aS9tYWMvSElTZXJ2aWNlc1NQSS5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1h
cmtlcjo6QVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIHZpc2libGVQb3NpdGlvbikKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5p
c051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUG9zaXRpb24gZGVlcFBvc2l0aW9uID0g
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CisgICAgTm9kZSogZG9tTm9kZSA9IGRl
ZXBQb3NpdGlvbi5hbmNob3JOb2RlKCk7CisgICAgQVNTRVJUKGRvbU5vZGUpOworICAgIGlmICgh
ZG9tTm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNz
d29yZEZpZWxkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSB2aXNpYmxlIHBv
c2l0aW9uIGhhcyBhbiBhbmNob3IgdHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4g
dGhlIGFuY2hvcmVkIG5vZGUsIHdlIHNob3VsZAorICAgIC8vIHNldCB0aGUgdGV4dCBtYXJrZXIg
ZGF0YSB3aXRoIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNw
b25kIHRvIHRoZSBub2RlLgorICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gbV9heE9iamVjdENh
Y2hlLT5jaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7
CisvKgorIGlmIChkZWVwUG9zaXRpb24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlv
bklzQWZ0ZXJBbmNob3IKKyAgICAgICAgfHwgZGVlcFBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQ
b3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pIHsKKyAgICAgICAgVGV4dE1hcmtlckRh
dGEgdGV4dE1hcmtlckRhdGE7CisgICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zm
c2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorKi8KKyAgICBzZXREYXRhKGRvbU5vZGUsIGRlZXBQb3NpdGlvbi5kZXByZWNhdGVkRWRp
dGluZ09mZnNldCgpLCBkZWVwUG9zaXRpb24uYW5jaG9yVHlwZSgpLCB2aXNpYmxlUG9zaXRpb24u
YWZmaW5pdHkoKSwgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rlck9mZnNldC5v
ZmZzZXQpOworICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKGRvbU5vZGUpOworfQor
CitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUo
Y2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChjaGFyYWN0
ZXJPZmZzZXQuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5vZGUqIGRvbU5vZGUg
PSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRv
bU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3Jk
RmllbGQoKSkgeworICAgICAgICBtX2RhdGEuaWdub3JlZCA9IHRydWU7CisgICAgICAgIHJldHVy
bjsKKyAgICB9CisKKyAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRpb24uCisgICAgYXV0
byB2aXNpYmxlUG9zaXRpb24gPSBtX2F4T2JqZWN0Q2FjaGUtPnZpc2libGVQb3NpdGlvbkZyb21D
aGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCB2cE9mZnNldCA9
IDA7CisgICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHZwT2Zmc2V0
ID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKTsKKworICAgIHNldERhdGEoZG9tTm9kZSwgdnBPZmZzZXQsIHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpLmFuY2hvclR5cGUoKSwgdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCks
IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0KTsKKyAg
ICBtX2F4T2JqZWN0Q2FjaGUtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKK30KKworQVhUZXh0TWFy
a2VyOjpBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5vZGUpCisgICAg
OiBtX2F4T2JqZWN0Q2FjaGUoY2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIG1fZGF0YS5ub2RlID0gbm9kZTsKKyAgICBtX2F4T2JqZWN0Q2FjaGUtPnNldE5vZGVJ
blVzZShtX2RhdGEubm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFYVGV4
dE1hcmtlclJlZiB0ZXh0TWFya2VyUmVmKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBpZiAoIXRleHRNYXJrZXJSZWYpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7
CisgICAgaWYgKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpICE9IEFYVGV4dE1hcmtlckdldFR5
cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoQVhUZXh0TWFya2VyR2V0TGVu
Z3RoKHRleHRNYXJrZXJSZWYpID09IHNpemVvZihtX2RhdGEpKTsKKyAgICBpZiAoQVhUZXh0TWFy
a2VyR2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpICE9IHNpemVvZihtX2RhdGEpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBtZW1jcHkoJm1fZGF0YSwgQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cih0ZXh0
TWFya2VyUmVmKSwgc2l6ZW9mKG1fZGF0YSkpOworCisgICAgaWYgKCFub2RlKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fYXhPYmplY3RDYWNoZSA9IG5vZGUoKS0+ZG9jdW1lbnQoKS5heE9i
amVjdENhY2hlKCk7Cit9CisKK0FYVGV4dE1hcmtlclJlZiBBWFRleHRNYXJrZXI6OnBsYXRmb3Jt
T2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRh
KSkpLmF1dG9yZWxlYXNlKCk7Cit9CisKK3ZvaWQgQVhUZXh0TWFya2VyOjpzZXREYXRhKE5vZGUq
IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSwg
QWZmaW5pdHkgYWZmaW5pdHksIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2lnbmVk
IGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFT
U0VSVChtX2F4T2JqZWN0Q2FjaGUpOworCisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX2RhdGEubm9kZSA9IG5vZGU7CisgICAgbV9kYXRhLm9mZnNldCA9IG9mZnNldDsK
KyAgICBtX2RhdGEuYW5jaG9yVHlwZSA9IGFuY2hvclR5cGU7CisgICAgbV9kYXRhLmFmZmluaXR5
ID0gYWZmaW5pdHk7CisKKyAgICBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rl
clN0YXJ0SW5kZXg7CisgICAgbV9kYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNl
dDsKKworICAgIGF1dG8gb2JqZWN0ID0gbV9heE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShub2Rl
KTsKKyAgICBtX2RhdGEuYXhJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICAvLyBpZ25vcmVk
Pz8/Cit9CisKK0FYVGV4dE1hcmtlcjo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uKCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzTnVsbCgpIHx8IG5v
ZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBQb3Np
dGlvbiBwb3NpdGlvbjsKKyAgICBpZiAobV9kYXRhLmFuY2hvclR5cGUgPT0gUG9zaXRpb246OlBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvcikKKyAgICAgICAgcG9zaXRpb24gPSBQb3NpdGlvbihub2Rl
KCksIG1fZGF0YS5vZmZzZXQsIG1fZGF0YS5hbmNob3JUeXBlKTsKKyAgICBlbHNlCisgICAgICAg
IHBvc2l0aW9uID0gUG9zaXRpb24obm9kZSgpLCBtX2RhdGEuYW5jaG9yVHlwZSk7CisKKyAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uLCBtX2RhdGEuYWZmaW5pdHkp
OworICAgIGF1dG8gZGVlcFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCk7CisgICAgaWYgKGRlZXBQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIGF1dG8qIHJlbmRlcmVyID0gZGVlcFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJl
bmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGF1dG8qIGNhY2hlID0gcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAg
IGlmIChjYWNoZSAmJiAhY2FjaGUtPm1faWRzSW5Vc2UuY29udGFpbnMobV9kYXRhLmF4SUQpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbjsKK30KKwor
QVhUZXh0TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG5vZGUo
KSwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOwor
ICAgIC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9u
IGlzIHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0
aGUgcHJldmlvdXMgbGluZS4KKyAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9m
ZnNldCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZm
aW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKQorICAgICAgICByZXR1cm4gbV9heE9iamVjdENh
Y2hlLT5wcmV2aW91c0NoYXJhY3Rlck9mZnNldChyZXN1bHQsIGZhbHNlKTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWFRleHRNYXJrZXI6OmF4T2JqZWN0
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdu
b3JlZCgpIHx8IGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBtX2F4T2JqZWN0Q2FjaGUtPmdldChub2RlKCkpOworfQorCisjaWYgRU5BQkxFKFRSRUVfREVC
VUdHSU5HKQorU3RyaW5nIEFYVGV4dE1hcmtlcjo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gIjxudWxsPiJfczsKKworICAgIGF1
dG8gc2VwYXJhdG9yID0gIiwgIl9zOworICAgIHJldHVybiBtYWtlU3RyaW5nKG5vZGUoKS0+ZGVi
dWdEZXNjcmlwdGlvbigpLCBzZXBhcmF0b3IsCisgICAgICAgICJvZmZzZXQgIiwgbV9kYXRhLm9m
ZnNldCwgc2VwYXJhdG9yLAorICAgICAgICAiQW5jaG9yVHlwZSAiLCBtX2RhdGEuYW5jaG9yVHlw
ZSwgc2VwYXJhdG9yLAorICAgICAgICAiQWZmaW5pdHkgIiwgbV9kYXRhLmFmZmluaXR5LCBzZXBh
cmF0b3IsCisgICAgICAgICJjaGFyYWN0ZXJTdGFydEluZGV4ICIsIG1fZGF0YS5jaGFyYWN0ZXJT
dGFydEluZGV4LCBzZXBhcmF0b3IsCisgICAgICAgICJjaGFyYWN0ZXJPZmZzZXQgIiwgbV9kYXRh
LmNoYXJhY3Rlck9mZnNldCwgc2VwYXJhdG9yLAorICAgICAgICAiYXhJRCAiLCBheElEKCksIHNl
cGFyYXRvciwKKyAgICAgICAgImlzSWdub3JlZCAiLCBpc0lnbm9yZWQoKSk7Cit9CisjZW5kaWYK
KworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdl
UmVmIHRleHRNYXJrZXJSYW5nZVJlZikKKyAgICA6IHN0YXJ0KEFYVGV4dE1hcmtlclJhbmdlQ29w
eVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZikpCisgICAgLCBlbmQoQVhUZXh0TWFya2Vy
UmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZikpCit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJhbmdlUmVm
KSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKK30KKworQVhUZXh0TWFya2VyUmFu
Z2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nZSYgcmFuZ2UpCisgICAgOiBzdGFydChjYWNoZSwgcmFuZ2Uuc3RhcnQpCisg
ICAgLCBlbmQoY2FjaGUsIHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChjYWNoZSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJr
ZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
IXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydCA9IEFYVGV4dE1hcmtlcihjYWNo
ZSwgY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIHRydWUp
KTsKKyAgICBlbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFj
dGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRNYXJrZXJSYW5n
ZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25zdCBBWFRleHRN
YXJrZXImIGUpCisgICAgOiBzdGFydChzKQorICAgICwgZW5kKGUpCit7Cit9CisKK0FYVGV4dE1h
cmtlclJhbmdlUmVmIEFYVGV4dE1hcmtlclJhbmdlOjpwbGF0Zm9ybU9iamVjdCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgc3RhcnQsIGVuZCkpLmF1dG9yZWxlYXNlKCk7Cit9CisKK0FYVGV4dE1hcmtlclJh
bmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBzdGFydCwgZW5kIH07Cit9CisKK3N0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYVGV4dE1hcmtlclJhbmdlOjpzaW1wbGVSYW5nZSgpIGNv
bnN0Cit7CisgICAgYXV0byBzdGFydEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChz
dGFydCk7CisgICAgYXV0byBlbmRCb3VuZGFyeVBvaW50ID0gbWFrZUJvdW5kYXJ5UG9pbnQoZW5k
KTsKKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2ludCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4ge3sgKnN0YXJ0Qm91bmRhcnlQ
b2ludCwgKmVuZEJvdW5kYXJ5UG9pbnQgfX07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ3MzNhNzU5MDRlOTYwZjMxM2FlZmFkZGJmZjM3NzRhNGNlZjY2ZGQKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0wLDAg
KzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQWNjZXNz
aWJpbGl0eU9iamVjdEludGVyZmFjZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFjY2Vzc2liaWxpdHlPYmplY3Q7CitzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0OworCitjbGFzcyBB
WFRleHRNYXJrZXIgeworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycworICAgIEFYVGV4dE1h
cmtlcihBWE9iamVjdENhY2hlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgQVhUZXh0
TWFya2VyKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRl
eHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIE5vZGUqKTsKKyAgICBBWFRleHRNYXJrZXIoQVhUZXh0
TWFya2VyUmVmKTsKKyAgICBBWFRleHRNYXJrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlz
TnVsbCgpIGNvbnN0OworICAgIEFYVGV4dE1hcmtlclJlZiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0
OworCisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uKCkgY29uc3Q7CisgICAgb3BlcmF0b3Ig
Q2hhcmFjdGVyT2Zmc2V0KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmVmKCkg
Y29uc3QgeyByZXR1cm4gcGxhdGZvcm1PYmplY3QoKTsgfQorCisgICAgQWNjZXNzaWJpbGl0eU9i
amVjdCogYXhPYmplY3QoKSBjb25zdDsKKworICAgIHN0cnVjdCBEYXRhIHsKKyAgICAgICAgTm9k
ZSogbm9kZSB7IG51bGxwdHIgfTsKKyAgICAgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworICAg
ICAgICBQb3NpdGlvbjo6QW5jaG9yVHlwZSBhbmNob3JUeXBlIHsgUG9zaXRpb246OlBvc2l0aW9u
SXNPZmZzZXRJbkFuY2hvciB9OworICAgICAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5
OjpEb3duc3RyZWFtIH07CisKKyAgICAgICAgdW5zaWduZWQgY2hhcmFjdGVyU3RhcnRJbmRleCB7
IDAgfTsKKyAgICAgICAgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0IHsgMCB9OworCisgICAgICAg
IEFYSUQgYXhJRCB7IEludmFsaWRBWElEIH07CisgICAgICAgIGJvb2wgaWdub3JlZCB7IGZhbHNl
IH07CisgICAgfTsKKyAgICBEYXRhIGNvbnN0JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
OyB9CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ub2RlOyB9CisgICAg
QVhJRCBheElEKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmF4SUQ7IH0KKyAgICBib29sIGlzSWdu
b3JlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5pZ25vcmVkOyB9CisKKyNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRp
ZgorCitwcml2YXRlOgorICAgIHZvaWQgc2V0RGF0YShOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCBQ
b3NpdGlvbjo6QW5jaG9yVHlwZSwgQWZmaW5pdHksIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5k
ZXgsIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldCk7CisKKyAgICBBWE9iamVjdENhY2hlKiBtX2F4
T2JqZWN0Q2FjaGUgeyBudWxscHRyIH07CisgICAgRGF0YSBtX2RhdGE7Cit9OworCitzdHJ1Y3Qg
QVhUZXh0TWFya2VyUmFuZ2UgeworICAgIEFYVGV4dE1hcmtlciBzdGFydDsKKyAgICBBWFRleHRN
YXJrZXIgZW5kOworCisgICAgLy8gQ29uc3RydWN0b3JzLgorICAgIEFYVGV4dE1hcmtlclJhbmdl
KEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKKyAgICBBWFRleHRNYXJrZXJSYW5nZShBWE9iamVjdENh
Y2hlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsKKyAgICBBWFRleHRNYXJrZXJSYW5n
ZShBWE9iamVjdENhY2hlKiwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKyAg
ICBBWFRleHRNYXJrZXJSYW5nZShjb25zdCBBWFRleHRNYXJrZXImLCBjb25zdCBBWFRleHRNYXJr
ZXImKTsKKyAgICBBWFRleHRNYXJrZXJSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIEFYVGV4dE1h
cmtlclJhbmdlUmVmIHBsYXRmb3JtT2JqZWN0KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0
TWFya2VyUmFuZ2VSZWYoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVjdCgpOyB9CisgICAg
b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNvbnN0OworICAgIG9wZXJhdG9yIGJvb2woKSBj
b25zdCB7IHJldHVybiAhc3RhcnQuaXNOdWxsKCkgJiYgIWVuZC5pc051bGwoKTsgfQorfTsKKwor
aW5saW5lIGJvb2wgQVhUZXh0TWFya2VyOjppc051bGwoKSBjb25zdAoreworICAgIHJldHVybiAh
bV9heE9iamVjdENhY2hlIHx8ICFub2RlKCkgfHwgIW1fYXhPYmplY3RDYWNoZS0+aXNOb2RlSW5V
c2Uobm9kZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAppbmRleCAyODM5ZGE4
ZDBlNTcwODhlMGViZTcxODg1ODM4NDBiZmY1YmI5ZjAzLi4wNmExOTUwNjM0MGQ0M2VkNjA0MWU2
MGE3NDg5OWE0MTdiNjNkYjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaApAQCAtNTQwLDcgKzU0MCw3IEBAIHB1YmxpYzoKIAog
ICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlRm9yUGxhaW5UZXh0UmFuZ2UoY29u
c3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlkZTsKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5nZShjb25zdCBO
U1JhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtl
clJhbmdlRm9yTlNSYW5nZShjb25zdCBOU1JhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAjZW5kaWYK
IAogICAgIHN0YXRpYyBTdHJpbmcgc3RyaW5nRm9yVmlzaWJsZVBvc2l0aW9uUmFuZ2UoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdEludGVyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKaW5kZXggMjE2ODQ1
NDhiYTQzYThiYjQxZmM2YjkzNWJhYzJkYzQ1NWM0ZGJjNy4uZGEwMzAxNmUwNGE4OTk4ZmFjNWZi
MzYzNjcyYTY5YjdjNmJmYjQ5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0SW50ZXJmYWNlLmgKQEAgLTY3LDYgKzY3
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBWENvcmVPYmplY3Q7CiBjbGFzcyBB
WE9iamVjdENhY2hlOworc3RydWN0IEFYVGV4dE1hcmtlclJhbmdlOwogY2xhc3MgQWNjZXNzaWJp
bGl0eVNjcm9sbFZpZXc7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEVsZW1lbnQ7CkBAIC0xMjc3
LDEwICsxMjc4LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
c2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwg
c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JQbGFpblRleHRSYW5nZShjb25zdCBQ
bGFpblRleHRSYW5nZSYpIGNvbnN0ID0gMDsKLSNpZiBQTEFURk9STShNQUMpCi0gICAgLy8gRklY
TUU6IG1ha2UgdGhpcyBhIENPQ09BIG1ldGhvZC4KLSAgICB2aXJ0dWFsIEFYVGV4dE1hcmtlclJh
bmdlUmVmIHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0ID0g
MDsKLSNlbmRpZgorICAgIHZpcnR1YWwgQVhUZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdl
Rm9yTlNSYW5nZShjb25zdCBOU1JhbmdlJikgY29uc3QgPSAwOwogCiAgICAgdmlydHVhbCBTdHJp
bmcgc3RyaW5nRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmKSBjb25zdCA9IDA7CiAgICAgdmly
dHVhbCBJbnRSZWN0IGJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQ
b3NpdGlvblJhbmdlJikgY29uc3QgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvQVhJc29sYXRlZE9iamVjdC5oCmluZGV4IDZm
YjFhZGFjOGRhZTNmMjYzN2FlNGI2NDE1NGExNDQ1YWQwOTVkYTcuLmZjYTY2ZTE3NDc2ZjZjODQ2
MDcxNzBmNTg1MzRlNWExY2Q0MmJjNzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaXNvbGF0ZWR0cmVlL0FYSXNvbGF0ZWRPYmplY3QuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2lzb2xhdGVkdHJlZS9BWElzb2xhdGVkT2JqZWN0LmgKQEAgLTQw
Myw5ICs0MDMsNyBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQ
b3NpdGlvblJhbmdlRm9yUmFuZ2UoY29uc3QgUGxhaW5UZXh0UmFuZ2UmKSBjb25zdCBvdmVycmlk
ZTsKICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSBsaW5lUmFuZ2VGb3JQb3NpdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mKSBjb25zdCBvdmVycmlkZTsKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBs
ZVJhbmdlPiByYW5nZUZvclBsYWluVGV4dFJhbmdlKGNvbnN0IFBsYWluVGV4dFJhbmdlJikgY29u
c3Qgb3ZlcnJpZGU7Ci0jaWYgUExBVEZPUk0oTUFDKQotICAgIEFYVGV4dE1hcmtlclJhbmdlUmVm
IHRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYpIGNvbnN0IG92ZXJyaWRl
OwotI2VuZGlmCisgICAgQVhUZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlRm9yTlNSYW5n
ZShjb25zdCBOU1JhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgU3RyaW5nIHN0cmluZ0ZvclJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgSW50UmVjdCBib3Vu
ZHNGb3JWaXNpYmxlUG9zaXRpb25SYW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpIGNv
bnN0IG92ZXJyaWRlOwogICAgIEludFJlY3QgYm91bmRzRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFu
Z2UmKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvaXNvbGF0ZWR0cmVlL21hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMu
bW0KaW5kZXggYzBiZjU5YmUwYjQ2ODU1MzQwYzM3ODk0ODM1MDE5MTdhMDE1NWE5Ni4uODlmMjEy
OTc1M2FjYWQzYjhlOThlMTkzZjVhZDZlNjhiYjBkOTI3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pc29sYXRlZHRyZWUvbWFjL0FY
SXNvbGF0ZWRPYmplY3RNYWMubW0KQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShBQ0NF
U1NJQklMSVRZX0lTT0xBVEVEX1RSRUUpICYmIFBMQVRGT1JNKE1BQykKIAorI2ltcG9ydCAiQVhU
ZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OSw3ICs2MCw3IEBAIHZvaWQgQVhJc29sYXRl
ZE9iamVjdDo6ZGV0YWNoUGxhdGZvcm1XcmFwcGVyKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlw
ZSBkZXRhY2htCiAgICAgW3dyYXBwZXIoKSBkZXRhY2hJc29sYXRlZE9iamVjdDpkZXRhY2htZW50
VHlwZV07CiB9CiAKLUFYVGV4dE1hcmtlclJhbmdlUmVmIEFYSXNvbGF0ZWRPYmplY3Q6OnRleHRN
YXJrZXJSYW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYgcmFuZ2UpIGNvbnN0CitBWFRleHRN
YXJrZXJSYW5nZSBBWElzb2xhdGVkT2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKGNv
bnN0IE5TUmFuZ2UmIHJhbmdlKSBjb25zdAogewogICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZVZhbHVlRnJvbU1haW5UaHJlYWQ8QVhUZXh0TWFya2VyUmFuZ2VSZWY+KFsmcmFuZ2Us
IHRoaXNdICgpIC0+IEFYVGV4dE1hcmtlclJhbmdlUmVmIHsKICAgICAgICAgYXV0byogYXhPYmpl
Y3QgPSBhc3NvY2lhdGVkQVhPYmplY3QoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IGU1YTc4NjdlZTZiNjg5ZWM5
NjQyZjY1NjhmNjg2Yjc1YmI5NDE1YTkuLjk3MDkwZDZhNjk4ZTNhMTQ4NzEwZDliYmUxMTI3M2E0
NDJlY2IzYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtMjksNiArMjksNyBAQAogI2lmIEVOQUJMRShBQ0NFU1NJ
QklMSVRZKSAmJiBQTEFURk9STShNQUMpCiAKICNpbXBvcnQgIkFYSXNvbGF0ZWRPYmplY3QuaCIK
KyNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eU9iamVjdC5o
IgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eVRhYmxlLmgiCiAjaW1wb3J0ICJSZW5kZXJPYmplY3Qu
aCIKQEAgLTQ2MCw4ICs0NjEsOCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVD
aGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBWENvcmVPYmplY3QqIG9iamVjdAogICAgICAgICB9
CiAgICAgfQogICAgIGlmICghc2VsZWN0aW9uLmlzTm9uZSgpKSB7Ci0gICAgICAgIGlmIChhdXRv
IHRleHRNYXJrZXJSYW5nZSA9IHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKHRo
aXMsIHNlbGVjdGlvbi52aXNpYmxlU3RhcnQoKSwgc2VsZWN0aW9uLnZpc2libGVFbmQoKSkpCi0g
ICAgICAgICAgICBbdXNlckluZm8gc2V0T2JqZWN0OihpZCl0ZXh0TWFya2VyUmFuZ2UgZm9yS2V5
Ok5TQWNjZXNzaWJpbGl0eVNlbGVjdGVkVGV4dE1hcmtlclJhbmdlQXR0cmlidXRlXTsKKyAgICAg
ICAgQVhUZXh0TWFya2VyUmFuZ2UgdGV4dE1hcmtlclJhbmdlKHRoaXMsIHsgc2VsZWN0aW9uLnZp
c2libGVTdGFydCgpLCBzZWxlY3Rpb24udmlzaWJsZUVuZCgpIH0pOworICAgICAgICBbdXNlcklu
Zm8gc2V0T2JqZWN0OihpZCkoQVhUZXh0TWFya2VyUmFuZ2VSZWYpdGV4dE1hcmtlclJhbmdlIGZv
cktleTpOU0FjY2Vzc2liaWxpdHlTZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV07CiAg
ICAgfQogCiAgICAgaWYgKGlkIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKSkKQEAgLTQ3OCwx
NCArNDc5LDIyIEBAIHN0YXRpYyB2b2lkIGFkZFRleHRNYXJrZXJGb3IoTlNNdXRhYmxlRGljdGlv
bmFyeSogY2hhbmdlLCBBWENvcmVPYmplY3QmIG9iamVjdCwKIHsKICAgICBpZiAocG9zaXRpb24u
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAoaWQgdGV4dE1hcmtlciA9IFtvYmpl
Y3Qud3JhcHBlcigpIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246cG9zaXRpb25dKQotICAg
ICAgICBbY2hhbmdlIHNldE9iamVjdDp0ZXh0TWFya2VyIGZvcktleTpOU0FjY2Vzc2liaWxpdHlU
ZXh0Q2hhbmdlVmFsdWVTdGFydE1hcmtlcl07CisKKyAgICBhdXRvKiBjYWNoZSA9IG9iamVjdC5h
eE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
W2NoYW5nZSBzZXRPYmplY3Q6KGlkKUFYVGV4dE1hcmtlcihjYWNoZSwgcG9zaXRpb24pLnBsYXRm
b3JtT2JqZWN0KCkgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZVN0YXJ0TWFy
a2VyXTsKIH0KIAogc3RhdGljIHZvaWQgYWRkVGV4dE1hcmtlckZvcihOU011dGFibGVEaWN0aW9u
YXJ5KiBjaGFuZ2UsIEFYQ29yZU9iamVjdCYgb2JqZWN0LCBIVE1MVGV4dEZvcm1Db250cm9sRWxl
bWVudCYgdGV4dENvbnRyb2wpCiB7Ci0gICAgaWYgKGF1dG8gdGV4dE1hcmtlciA9IFtvYmplY3Qu
d3JhcHBlcigpIHRleHRNYXJrZXJGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbDp0ZXh0Q29u
dHJvbF0pCi0gICAgICAgIFtjaGFuZ2Ugc2V0T2JqZWN0OnRleHRNYXJrZXIuYnJpZGdpbmdBdXRv
cmVsZWFzZSgpIGZvcktleTpOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVTdGFydE1hcmtl
cl07CisgICAgYXV0byogY2FjaGUgPSBvYmplY3QuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICgh
Y2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIHRleHRNYXJrZXIgPSBjYWNo
ZS0+dGV4dE1hcmtlckZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKHRleHRDb250cm9sKSkK
KyAgICAgICAgW2NoYW5nZSBzZXRPYmplY3Q6KGlkKXRleHRNYXJrZXItPnBsYXRmb3JtT2JqZWN0
KCkgZm9yS2V5Ok5TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZVN0YXJ0TWFya2VyXTsKIH0K
IAogdGVtcGxhdGUgPHR5cGVuYW1lIFRleHRNYXJrZXJUYXJnZXRUeXBlPgpAQCAtNjAwLDE4OSAr
NjA5LDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpwbGF0Zm9ybVBlcmZvcm1EZWZlcnJlZENhY2hl
VXBkYXRlKCkKIHsKIH0KIAotLy8gVGV4dE1hcmtlciBhbmQgVGV4dE1hcmtlclJhbmdlIGZ1bmNz
dGlvbnMuCi0vLyBGSVhNRTogVGV4dE1hcmtlciBhbmQgVGV4dE1hcmtlclJhbmdlIHNob3VsZCBi
ZWNvbWUgY2xhc3NlcyB3cmFwcGluZyB0aGUgc3lzdGVtIG9iamVjdHMuCi0KLXN0YXRpYyBSZXRh
aW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IEFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtl
clJlZiBzdGFydE1hcmtlciwgQVhUZXh0TWFya2VyUmVmIGVuZE1hcmtlcikKLXsKLSAgICBBU1NF
UlQoc3RhcnRNYXJrZXIpOwotICAgIEFTU0VSVChlbmRNYXJrZXIpOwotICAgIEFTU0VSVChDRkdl
dFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXN0YXJ0TWFya2VyKSA9PSBBWFRleHRNYXJrZXJH
ZXRUeXBlSUQoKSk7Ci0gICAgQVNTRVJUKENGR2V0VHlwZUlEKChfX2JyaWRnZSBDRlR5cGVSZWYp
ZW5kTWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0gICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgc3RhcnRNYXJr
ZXIsIGVuZE1hcmtlcikpOwotfQotCi1SZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHRl
eHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyMSwgQVhU
ZXh0TWFya2VyUmVmIHRleHRNYXJrZXIyKQotewotICAgIGlmICghdGV4dE1hcmtlcjEgfHwgIXRl
eHRNYXJrZXIyKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgcmV0dXJuIEFYVGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXIxLCB0ZXh0TWFya2VyMik7Ci19Ci0KLXN0YXRpYyBSZXRhaW5QdHI8
QVhUZXh0TWFya2VyUmVmPiBBWFRleHRNYXJrZXJSYW5nZVN0YXJ0KEFYVGV4dE1hcmtlclJhbmdl
UmVmIHRleHRNYXJrZXJSYW5nZSkKLXsKLSAgICBBU1NFUlQodGV4dE1hcmtlclJhbmdlKTsKLSAg
ICBBU1NFUlQoQ0ZHZXRUeXBlSUQoKF9fYnJpZGdlIENGVHlwZVJlZil0ZXh0TWFya2VyUmFuZ2Up
ID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlwZUlEKCkpOwotICAgIHJldHVybiBhZG9wdENGKEFY
VGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZSkpOwotfQotCi1z
dGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gQVhUZXh0TWFya2VyUmFuZ2VFbmQoQVhU
ZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlKQotewotICAgIEFTU0VSVCh0ZXh0TWFy
a2VyUmFuZ2UpOwotICAgIEFTU0VSVChDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKXRl
eHRNYXJrZXJSYW5nZSkgPT0gQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKSk7Ci0gICAgcmV0
dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJSYW5n
ZSkpOwotfQotCi1zdGF0aWMgVGV4dE1hcmtlckRhdGEgZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2Vy
KEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyKQotewotICAgIFRleHRNYXJrZXJEYXRhIGRhdGE7
Ci0gICAgaWYgKCF0ZXh0TWFya2VyKQotICAgICAgICByZXR1cm4gZGF0YTsKLQotICAgIEFTU0VS
VChDRkdldFR5cGVJRCh0ZXh0TWFya2VyKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7Ci0g
ICAgaWYgKENGR2V0VHlwZUlEKHRleHRNYXJrZXIpICE9IEFYVGV4dE1hcmtlckdldFR5cGVJRCgp
KQotICAgICAgICByZXR1cm4gZGF0YTsKLQotICAgIEFTU0VSVChBWFRleHRNYXJrZXJHZXRMZW5n
dGgodGV4dE1hcmtlcikgPT0gc2l6ZW9mKGRhdGEpKTsKLSAgICBpZiAoQVhUZXh0TWFya2VyR2V0
TGVuZ3RoKHRleHRNYXJrZXIpICE9IHNpemVvZihkYXRhKSkKLSAgICAgICAgcmV0dXJuIGRhdGE7
Ci0KLSAgICBtZW1jcHkoJmRhdGEsIEFYVGV4dE1hcmtlckdldEJ5dGVQdHIodGV4dE1hcmtlciks
IHNpemVvZihkYXRhKSk7Ci0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLUFjY2Vzc2liaWxpdHlPYmpl
Y3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hl
LCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwotICAgIGlmICghY2FjaGUgfHwgIXRleHRNYXJrZXIpCi0gICAgICAgIHJldHVybiBudWxs
cHRyOwotCi0gICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGdldEJ5dGVzRnJvbUFYVGV4dE1hcmtl
cih0ZXh0TWFya2VyKTsKLSAgICBpZiAodGV4dE1hcmtlckRhdGEuaWdub3JlZCkKLSAgICAgICAg
cmV0dXJuIG51bGxwdHI7Ci0KLSAgICByZXR1cm4gY2FjaGUtPmFjY2Vzc2liaWxpdHlPYmplY3RG
b3JUZXh0TWFya2VyRGF0YSh0ZXh0TWFya2VyRGF0YSk7Ci19Ci0KLS8vIFRleHRNYXJrZXIgPC0+
IFZpc2libGVQb3NpdGlvbiBjb252ZXJzaW9uLgotCi1BWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtl
ckZvclZpc2libGVQb3NpdGlvbihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAg
aWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gdGV4dE1hcmtlckRh
dGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvcyk7
Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJl
dHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YS52YWx1ZSgpLCBzaXplb2YodGV4dE1hcmtlckRhdGEu
dmFsdWUoKSkpKS5hdXRvcmVsZWFzZSgpOwotfQotCi1WaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uRm9yVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgQVhUZXh0TWFya2VyUmVm
IHRleHRNYXJrZXIpCi17Ci0gICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKLSAgICBpZiAoIWNh
Y2hlIHx8ICF0ZXh0TWFya2VyKQotICAgICAgICByZXR1cm4geyB9OwotCi0gICAgYXV0byB0ZXh0
TWFya2VyRGF0YSA9IGdldEJ5dGVzRnJvbUFYVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICBy
ZXR1cm4gY2FjaGUtPnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKHRleHRNYXJrZXJE
YXRhKTsKLX0KLQotLy8gVGV4dE1hcmtlclJhbmdlIDwtPiBWaXNpYmxlUG9zaXRpb25SYW5nZSBj
b252ZXJzaW9uLgotCi1BWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlz
aWJsZVBvc2l0aW9ucyhBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBzdGFydFBvc2l0aW9uLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGVuZFBvc2l0aW9uKQotewot
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgIGF1dG8gc3RhcnRUZXh0TWFya2VyID0gdGV4dE1hcmtlckZvclZpc2li
bGVQb3NpdGlvbihjYWNoZSwgc3RhcnRQb3NpdGlvbik7Ci0gICAgYXV0byBlbmRUZXh0TWFya2Vy
ID0gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihjYWNoZSwgZW5kUG9zaXRpb24pOwotICAg
IHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycyhzdGFydFRleHRNYXJrZXIsIGVuZFRl
eHRNYXJrZXIpLmF1dG9yZWxlYXNlKCk7Ci19Ci0KLVZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBB
WFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2UpCi17Ci0gICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLQotICAgIHJldHVybiB7Ci0gICAgICAgIHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXIoY2FjaGUsIEFYVGV4dE1hcmtlclJhbmdlU3RhcnQodGV4dE1hcmtlclJhbmdlKS5n
ZXQoKSksCi0gICAgICAgIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIEFYVGV4
dE1hcmtlclJhbmdlRW5kKHRleHRNYXJrZXJSYW5nZSkuZ2V0KCkpCi0gICAgfTsKLX0KLQotLy8g
VGV4dE1hcmtlciA8LT4gQ2hhcmFjdGVyT2Zmc2V0IGNvbnZlcnNpb24uCi0KLUFYVGV4dE1hcmtl
clJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKLXsKLSAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOwotCi0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsK
LSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdub3JlZCkK
LSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwg
c2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7Ci19Ci0KLUNoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBB
WFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlcikKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIGlmICghY2FjaGUgfHwgIXRleHRNYXJrZXIpCi0gICAgICAgIHJldHVybiB7IH07Ci0K
LSAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gZ2V0Qnl0ZXNGcm9tQVhUZXh0TWFya2VyKHRleHRN
YXJrZXIpOwotICAgIHJldHVybiBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlckRh
dGEodGV4dE1hcmtlckRhdGEpOwotfQotCi0vLyBUZXh0TWFya2VyUmFuZ2UgPC0+IFNpbXBsZVJh
bmdlIGNvbnZlcnNpb24uCi0KLUFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1hcmtlckZv
clJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYgcmFuZ2UsIGJvb2wgaXNTdGFydCkKLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OwotICAgIGlmICghY2FjaGUgfHwgIXJhbmdlKQotICAgICAgICByZXR1cm4gbmlsOwotCi0gICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0
TWFya2VyRGF0YUZvclJhbmdlKHRleHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAg
IGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIHJl
dHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9y
ZWxlYXNlKCk7Ci19Ci0KLUFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21S
YW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mIHJhbmdlKQotewotICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7Ci0gICAgaWYgKCFjYWNo
ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgIGF1dG8gc3RhcnRUZXh0TWFya2VyID0gc3Rh
cnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShjYWNoZSwgcmFuZ2UsIHRydWUpOwotICAgIGF1dG8g
ZW5kVGV4dE1hcmtlciA9IHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoY2FjaGUsIHJhbmdl
LCBmYWxzZSk7Ci0gICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKHN0YXJ0VGV4
dE1hcmtlciwgZW5kVGV4dE1hcmtlcikuYXV0b3JlbGVhc2UoKTsKLX0KLQotc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSogY2Fj
aGUsIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZSkKLXsKLSAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOwotICAgIGlmICghY2FjaGUgfHwgIXRleHRNYXJrZXJSYW5nZSkKLSAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGF1dG8gc3RhcnRUZXh0TWFya2VyID0g
QVhUZXh0TWFya2VyUmFuZ2VTdGFydCh0ZXh0TWFya2VyUmFuZ2UpOwotICAgIGF1dG8gZW5kVGV4
dE1hcmtlciA9IEFYVGV4dE1hcmtlclJhbmdlRW5kKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgaWYg
KCFzdGFydFRleHRNYXJrZXIgfHwgIWVuZFRleHRNYXJrZXIpCi0gICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci0KLSAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRDaGFyYWN0ZXJPZmZzZXQgPSBj
aGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCBzdGFydFRleHRNYXJrZXIuZ2V0KCkp
OwotICAgIENoYXJhY3Rlck9mZnNldCBlbmRDaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZz
ZXRGb3JUZXh0TWFya2VyKGNhY2hlLCBlbmRUZXh0TWFya2VyLmdldCgpKTsKLSAgICByZXR1cm4g
Y2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhzdGFydENoYXJhY3Rlck9m
ZnNldCwgZW5kQ2hhcmFjdGVyT2Zmc2V0KTsKLX0KLQotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCiAjZW5kaWYgLy8gRU5BQkxFKEFDQ0VTU0lCSUxJVFkpICYmIFBMQVRGT1JNKE1BQykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlP
YmplY3RNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BY2Nlc3NpYmls
aXR5T2JqZWN0TWFjLm1tCmluZGV4IDI4ZTE1NWEyNjZmNWJlZjVmMzUzMDIzZjljYzMwYmQ5Zjc2
OGY0MTIuLjkyYjEyZjZkN2RkODJiNWEzYTAzZWVkZDA3NjA5YmExODliZGMyNjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FjY2Vzc2liaWxpdHlPYmplY3RN
YWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQWNjZXNzaWJpbGl0
eU9iamVjdE1hYy5tbQpAQCAtMjgwLDExICsyODAsMTEgQEAgU3RyaW5nIEFjY2Vzc2liaWxpdHlP
YmplY3Q6OnJvbGVQbGF0Zm9ybURlc2NyaXB0aW9uKCkgY29uc3QKICAgICByZXR1cm4gU3RyaW5n
KCk7CiB9CiAKLUFYVGV4dE1hcmtlclJhbmdlUmVmIEFjY2Vzc2liaWxpdHlPYmplY3Q6OnRleHRN
YXJrZXJSYW5nZUZvck5TUmFuZ2UoY29uc3QgTlNSYW5nZSYgcmFuZ2UpIGNvbnN0CitBWFRleHRN
YXJrZXJSYW5nZSBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojp0ZXh0TWFya2VyUmFuZ2VGb3JOU1Jhbmdl
KGNvbnN0IE5TUmFuZ2UmIHJhbmdlKSBjb25zdAogewotICAgIHJldHVybiB0ZXh0TWFya2VyUmFu
Z2VGcm9tVmlzaWJsZVBvc2l0aW9ucyhheE9iamVjdENhY2hlKCksCi0gICAgICAgIHZpc2libGVQ
b3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKSwKLSAgICAgICAgdmlzaWJsZVBvc2l0aW9u
Rm9ySW5kZXgocmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpKTsKKyAgICBpZiAoYXV0byog
Y2FjaGUgPSBheE9iamVjdENhY2hlKCkpCisgICAgICAgIHJldHVybiB7IGNhY2hlLCB7IHZpc2li
bGVQb3NpdGlvbkZvckluZGV4KHJhbmdlLmxvY2F0aW9uKSwgdmlzaWJsZVBvc2l0aW9uRm9ySW5k
ZXgocmFuZ2UubG9jYXRpb24gKyByYW5nZS5sZW5ndGgpIH19OworICAgIHJldHVybiB7IH07CiB9
CiAKIG5hbWVzcGFjZSBBY2Nlc3NpYmlsaXR5IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5oCmluZGV4IDA4ZjliZDc1MTYzNDM3YzVjMjk1MTg4NjBhZmJiYzEyNTE4MDMyNTIu
LjUxZWFlN2NiOGQ4NThhMjM3Y2EzMzZiY2I0MzQ4YWJjNGNhYzk2NDYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaApAQCAtMzksMTIgKzM5LDYgQEAKIAogQGludGVyZmFj
ZSBXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciA6IFdlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyQmFzZQogCi0vLyBGSVhNRTogUmVtb3ZlIHRoZXNlIG1ldGhvZHMgc2luY2UgY2xpZW50
cyBzaG91bGQgbm90IG5lZWQgdG8gY2FsbCB0aGVtIGFuZCBoZW5jZSBzaG91bGQgbm90IGJlIGV4
cG9zZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuCi0vLyBJbnNpZGUgV2ViQ29yZSwgdXNlIHRo
ZSBXZWJDb3JlIGhvbW9ueW1vdXMgZGVjbGFyZWQgYmVsb3cgaW5zdGVhZC4KLS0gKGlkKXRleHRN
YXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOihjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9z
aXRpb24mKXN0YXJ0UG9zaXRpb24gZW5kUG9zaXRpb246KGNvbnN0IFdlYkNvcmU6OlZpc2libGVQ
b3NpdGlvbiYpZW5kUG9zaXRpb247Ci0tIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9u
Oihjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mKXZpc2libGVQb3M7Ci0tIChSZXRhaW5Q
dHI8QVhUZXh0TWFya2VyUmVmPil0ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRy
b2w6KFdlYkNvcmU6OkhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jil0ZXh0Q29udHJvbDsKLQog
Ly8gV2hlbiBhIHBsdWdpbiB1c2VzIGEgV2ViS2l0IGNvbnRyb2wgdG8gYWN0IGFzIGEgc3Vycm9n
YXRlIHZpZXcgKGUuZy4gUERGIHVzZSBXZWJLaXQgdG8gY3JlYXRlIHRleHQgZmllbGRzKS4KIC0g
KGlkKWFzc29jaWF0ZWRQbHVnaW5QYXJlbnQ7CiAKQEAgLTU2LDMzICs1MCwzIEBAIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IF9fQVhUZXh0TWFya2VyKiBBWFRleHRNYXJrZXJSZWY7CiB0eXBlZGVmIGNv
bnN0IHN0cnVjdCBfX0FYVGV4dE1hcmtlclJhbmdlKiBBWFRleHRNYXJrZXJSYW5nZVJlZjsKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBB
Y2Nlc3NpYmlsaXR5T2JqZWN0Owotc3RydWN0IENoYXJhY3Rlck9mZnNldDsKLQotLy8gVGV4dE1h
cmtlciBhbmQgVGV4dE1hcmtlclJhbmdlIHB1YmxpYyBmdW5jc3Rpb25zLgotLy8gRklYTUU6IFRl
eHRNYXJrZXIgYW5kIFRleHRNYXJrZXJSYW5nZSBzaG91bGQgYmVjb21lIGNsYXNzZXMgb24gdGhl
aXIgb3duIHJpZ2h0LCB3cmFwcGluZyB0aGUgc3lzdGVtIG9iamVjdHMuCi0KLVJldGFpblB0cjxB
WFRleHRNYXJrZXJSYW5nZVJlZj4gdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnMoQVhUZXh0TWFy
a2VyUmVmLCBBWFRleHRNYXJrZXJSZWYpOwotQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eU9iamVjdEZvclRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIEFYVGV4dE1hcmtlclJlZik7
Ci0KLS8vIFRleHRNYXJrZXIgPC0+IFZpc2libGVQb3NpdGlvbiBjb252ZXJzaW9uLgotQVhUZXh0
TWFya2VyUmVmIHRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oQVhPYmplY3RDYWNoZSosIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpOwotVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIEFYVGV4dE1hcmtlclJlZik7Ci0KLS8vIFRleHRN
YXJrZXJSYW5nZSA8LT4gVmlzaWJsZVBvc2l0aW9uUmFuZ2UgY29udmVyc2lvbi4KLUFYVGV4dE1h
cmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFYT2JqZWN0
Q2FjaGUqLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsK
LVZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlRm9yVGV4dE1hcmtlclJh
bmdlKEFYT2JqZWN0Q2FjaGUqLCBBWFRleHRNYXJrZXJSYW5nZVJlZik7Ci0KLS8vIFRleHRNYXJr
ZXIgPC0+IENoYXJhY3Rlck9mZnNldCBjb252ZXJzaW9uLgotQVhUZXh0TWFya2VyUmVmIHRleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSosIGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpOwotQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoQVhP
YmplY3RDYWNoZSosIEFYVGV4dE1hcmtlclJlZik7Ci0KLS8vIFRleHRNYXJrZXJSYW5nZSA8LT4g
U2ltcGxlUmFuZ2UgY29udmVyc2lvbi4KLUFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYsIGJvb2wgaXNTdGFydCk7Ci1BWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFu
Z2U+Jik7Ci1zdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5nZUZvclRleHRNYXJrZXJSYW5n
ZShBWE9iamVjdENhY2hlKiwgQVhUZXh0TWFya2VyUmFuZ2VSZWYpOwotCi19CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDBjMDRhZjRjNTRkMzdkYzAxNzE3Mzhj
ZGQ1ZjQyZDMwNDgxOGNiODAuLjY5Yjk5OWEwMjc0MGVhY2ViOGM4NzJkNzUwYWU0MTk0MjBmNzI5
NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC0zMyw2ICsz
Myw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgi
CisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3Jp
ZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5TGlzdC5oIgpAQCAtNTg2LDcgKzU4Nyw3IEBAIHN0YXRpYyBpbmxpbmUgQk9PTCBBWE9i
amVjdElzVGV4dE1hcmtlcihpZCBvYmplY3QpCiAgICAgcmV0dXJuIG9iamVjdCAmJiBDRkdldFR5
cGVJRCgoX19icmlkZ2UgQ0ZUeXBlUmVmKW9iamVjdCkgPT0gQVhUZXh0TWFya2VyR2V0VHlwZUlE
KCk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgQk9PTCBBWE9iamVjdElzVGV4dE1hcmtlclJhbmdlKGlk
IG9iamVjdCkKK3N0YXRpYyBpbmxpbmUgQk9PTCBpc1RleHRNYXJrZXJSYW5nZVJlZihpZCBvYmpl
Y3QpCiB7CiAgICAgcmV0dXJuIG9iamVjdCAmJiBDRkdldFR5cGVJRCgoX19icmlkZ2UgQ0ZUeXBl
UmVmKW9iamVjdCkgPT0gQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKTsKIH0KQEAgLTY4MSw3
ICs2ODIsNyBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVNlYXJjaFRleHRDcml0ZXJpYSBhY2Nlc3Np
YmlsaXR5U2VhcmNoVGV4dENyaXRlcmlhRm9yUGFyYW1ldAogICAgIHJldHVybiBjcml0ZXJpYTsK
IH0KIAotc3RhdGljIEFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uIGFjY2Vzc2liaWxpdHlUZXh0
T3BlcmF0aW9uRm9yUGFyYW1ldGVyaXplZEF0dHJpYnV0ZShBWE9iamVjdENhY2hlKiBheE9iamVj
dENhY2hlLCBjb25zdCBOU0RpY3Rpb25hcnkgKnBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUpCitzdGF0
aWMgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24gYWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb25G
b3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNvbnN0IE5TRGljdGlvbmFyeSAqcGFyYW1ldGVyaXpl
ZEF0dHJpYnV0ZSkKIHsKICAgICBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBvcGVyYXRpb247
CiAKQEAgLTY5MCw5ICs2OTEsOSBAQCBzdGF0aWMgQWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb24g
YWNjZXNzaWJpbGl0eVRleHRPcGVyYXRpb25Gb3JQYXJhbWV0ZXJpemVkQXR0cgogICAgIE5TU3Ry
aW5nICpyZXBsYWNlbWVudFN0cmluZyA9IFtwYXJhbWV0ZXJpemVkQXR0cmlidXRlIG9iamVjdEZv
cktleTpOU0FjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uUmVwbGFjZW1lbnRTdHJpbmddOwogCiAg
ICAgaWYgKFttYXJrZXJSYW5nZXMgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKSB7Ci0g
ICAgICAgIG9wZXJhdGlvbi50ZXh0UmFuZ2VzID0gbWFrZVZlY3RvcihtYXJrZXJSYW5nZXMsIFsm
YXhPYmplY3RDYWNoZV0gKGlkIG1hcmtlclJhbmdlKSB7Ci0gICAgICAgICAgICBBU1NFUlQoQVhP
YmplY3RJc1RleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkpOwotICAgICAgICAgICAgcmV0dXJu
IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGF4T2JqZWN0Q2FjaGUsIChBWFRleHRNYXJrZXJSYW5n
ZVJlZiltYXJrZXJSYW5nZSk7CisgICAgICAgIG9wZXJhdGlvbi50ZXh0UmFuZ2VzID0gbWFrZVZl
Y3RvcihtYXJrZXJSYW5nZXMsIFtdIChpZCBtYXJrZXJSYW5nZVJlZikgeworICAgICAgICAgICAg
QVNTRVJUKGlzVGV4dE1hcmtlclJhbmdlUmVmKG1hcmtlclJhbmdlUmVmKSk7CisgICAgICAgICAg
ICByZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UoKEFYVGV4dE1hcmtlclJhbmdlUmVmKW1hcmtlclJh
bmdlUmVmKS5zaW1wbGVSYW5nZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTcxMywxNCAr
NzE0LDE0IEBAIHN0YXRpYyBBY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbiBhY2Nlc3NpYmlsaXR5
VGV4dE9wZXJhdGlvbkZvclBhcmFtZXRlcml6ZWRBdHRyCiAgICAgcmV0dXJuIG9wZXJhdGlvbjsK
IH0KIAotc3RhdGljIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gYWNjZXNzaWJpbGl0eU1pc3NwZWxsaW5nU2VhcmNoQ3Jp
dGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKEFYT2JqZWN0Q2FjaGUqIGF4T2JqZWN0Q2Fj
aGUsIGNvbnN0IE5TRGljdGlvbmFyeSAqcGFyYW1zKQorc3RhdGljIHN0ZDo6cGFpcjxzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gYWNjZXNz
aWJpbGl0eU1pc3NwZWxsaW5nU2VhcmNoQ3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRl
KGNvbnN0IE5TRGljdGlvbmFyeSAqcGFyYW1zKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKICAgICBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2li
aWxpdHlTZWFyY2hEaXJlY3Rpb24+IGNyaXRlcmlhOwogCi0gICAgQVNTRVJUKEFYT2JqZWN0SXNU
ZXh0TWFya2VyUmFuZ2UoW3BhcmFtcyBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJh
bmdlIl0pKTsKLSAgICBjcml0ZXJpYS5maXJzdCA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGF4
T2JqZWN0Q2FjaGUsIChBWFRleHRNYXJrZXJSYW5nZVJlZilbcGFyYW1zIG9iamVjdEZvcktleTpA
IkFYU3RhcnRUZXh0TWFya2VyUmFuZ2UiXSk7CisgICAgQVNTRVJUKGlzVGV4dE1hcmtlclJhbmdl
UmVmKFtwYXJhbXMgb2JqZWN0Rm9yS2V5OkAiQVhTdGFydFRleHRNYXJrZXJSYW5nZSJdKSk7Cisg
ICAgY3JpdGVyaWEuZmlyc3QgPSBBWFRleHRNYXJrZXJSYW5nZSgoQVhUZXh0TWFya2VyUmFuZ2VS
ZWYpW3BhcmFtcyBvYmplY3RGb3JLZXk6QCJBWFN0YXJ0VGV4dE1hcmtlclJhbmdlIl0pLnNpbXBs
ZVJhbmdlKCk7CiAKICAgICBOU051bWJlciAqZm9yd2FyZCA9IFtwYXJhbXMgb2JqZWN0Rm9yS2V5
Ok5TQWNjZXNzaWJpbGl0eVNlYXJjaFRleHREaXJlY3Rpb25dOwogICAgIGlmIChbZm9yd2FyZCBp
c0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQpAQCAtNzMzLDY2ICs3MzQsMjAgQEAgc3Rh
dGljIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0eVNl
YXJjaERpcmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFya2VyIGhlbHBlcnMK
IAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFya2VyRm9yQ2hh
cmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJh
Y3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1h
cmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCiB7
Ci0gICAgaWYgKCFjYWNoZSkKKyAgICBhdXRvIG5leHRNYXJrZXIgPSBjYWNoZS0+dGV4dE1hcmtl
ckZvck5leHRDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKKyAgICBpZiAobmV4dE1hcmtlci5heElE
KCkgPT0gSW52YWxpZEFYSUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1h
cmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4
dENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBp
ZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJu
IGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBV
SW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0
dXJuIG5leHRNYXJrZXIucGxhdGZvcm1PYmplY3QoKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxB
WFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9i
amVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0
aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0
Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsKLSAgICBpZiAoIWNh
Y2hlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRN
YXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVy
T2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4dE1h
cmtlckRhdGEuYXhJRCkKKyAgICBhdXRvIHByZXZpb3VzTWFya2VyID0gY2FjaGUtPnRleHRNYXJr
ZXJGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChtYXJrZXIpOworICAgIGlmIChwcmV2aW91c01h
cmtlci5heElEKCkgPT0gSW52YWxpZEFYSUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0
dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7Ci19Ci0K
LS0gKFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBu
ZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0
TWFya2VyUmVmPilwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rl
ck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAgcmV0dXJuIHByZXZpb3VzVGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCBjaGFyYWN0ZXJPZmZzZXQpOwotfQotCi0vLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIHNp
bmNlIGNsaWVudHMgc2hvdWxkIG5vdCBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QgYW5kIHNob3Vs
ZCBub3QgYmUgZXhwb3NlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4KLS8vIEluc2lkZSBXZWJD
b3JlLCB1c2UgV2ViQ29yZTo6dGV4dE1hcmtlckZyb21WaXNpYmxlUG9zaXRpb24gaW5zdGVhZC4K
LS0gKGlkKXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb246KGNvbnN0IFZpc2libGVQb3NpdGlv
biYpcG9zaXRpb24KLXsKLSAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgIGF1dG8gKmJh
Y2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKLSAgICByZXR1cm4gYmFja2luZ09i
amVjdCA/IChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4
T2JqZWN0Q2FjaGUoKSwgcG9zaXRpb24pIDogbmlsOwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0
TWFya2VyUmVmPil0ZXh0TWFya2VyRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2w6KEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50ICYpdGV4dENvbnRyb2wKLXsKLSAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOwotCi0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2Jq
ZWN0OwotICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
IGF1dG8qIGNhY2hlID0gYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwotICAgIGlmICgh
Y2FjaGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0g
Y2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2wodGV4dENv
bnRyb2wpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEpCi0gICAgICAgIHJldHVybiBuaWw7Ci0K
LSAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEudmFsdWUoKSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhLnZhbHVlKCkpKSk7CisgICAgcmV0dXJuIHByZXZpb3VzTWFya2VyLnBsYXRmb3JtT2Jq
ZWN0KCk7CiB9CiAKIC8vIFdoZW4gbW9kaWZ5aW5nIGF0dHJpYnV0ZWQgc3RyaW5ncywgdGhlIHJh
bmdlIGNhbiBjb21lIGZyb20gYSBzb3VyY2Ugd2hpY2ggbWF5IHByb3ZpZGUgZmF1bHR5IGluZm9y
bWF0aW9uIChlLmcuIHRoZSBzcGVsbCBjaGVja2VyKS4KQEAgLTEwODIsMTYgKzEwMzcsMTcgQEAg
c3RhdGljIE5TU3RyaW5nKiBuc1N0cmluZ0ZvclJlcGxhY2VkTm9kZShOb2RlKiByZXBsYWNlZE5v
ZGUpCiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoQ2hhcmFjdGVyczomYXR0YWNobWVu
dENoYXIgbGVuZ3RoOjFdOwogfQogCi0tIChOU0F0dHJpYnV0ZWRTdHJpbmcgKilkb0FYQXR0cmli
dXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTooQVhUZXh0TWFya2VyUmFuZ2VSZWYpdGV4dE1h
cmtlclJhbmdlIHNwZWxsQ2hlY2s6KEJPT0wpc3BlbGxDaGVjaworLSAoTlNBdHRyaWJ1dGVkU3Ry
aW5nICopZG9BWEF0dHJpYnV0ZWRTdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2U6KGNvbnN0IEFYVGV4
dE1hcmtlclJhbmdlJil0ZXh0TWFya2VyUmFuZ2Ugc3BlbGxDaGVjazooQk9PTClzcGVsbENoZWNr
CiB7CiAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVG
cm9tTWFpblRocmVhZDxOU0F0dHJpYnV0ZWRTdHJpbmcgKj4oWyZ0ZXh0TWFya2VyUmFuZ2UsICZz
cGVsbENoZWNrLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5Q
dHI8TlNBdHRyaWJ1dGVkU3RyaW5nPiB7CiAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBw
cm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKICAgICAgICAgaWYgKCFiYWNraW5n
T2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBhdXRvIHJhbmdlID0g
cmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0
ZXh0TWFya2VyUmFuZ2UpOworICAgICAgICBhdXRvIHJhbmdlID0gdGV4dE1hcmtlclJhbmdlLnNp
bXBsZVJhbmdlKCk7CiAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAgICAgICByZXR1cm4gbmls
OworCiAgICAgICAgIGF1dG8gYXR0clN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7CiAgICAgICAgIFRleHRJdGVyYXRvciBpdCgqcmFuZ2Up
OwogICAgICAgICB3aGlsZSAoIWl0LmF0RW5kKCkpIHsKQEAgLTExMjgsMTkgKzEwODQsNiBAQCBz
dGF0aWMgTlNTdHJpbmcqIG5zU3RyaW5nRm9yUmVwbGFjZWROb2RlKE5vZGUqIHJlcGxhY2VkTm9k
ZSkKICAgICB9KTsKIH0KIAotLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBzaW5jZSBjbGll
bnRzIHNob3VsZCBub3QgbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kIGFuZCBzaG91bGQgbm90IGJl
IGV4cG9zZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuCi0vLyBJbnNpZGUgV2ViQ29yZSwgdXNl
IFdlYkNvcmU6OnRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zIGluc3RlYWQuCi0t
IChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9uczooY29uc3QgVmlzaWJsZVBv
c2l0aW9uJilzdGFydFBvc2l0aW9uIGVuZFBvc2l0aW9uOihjb25zdCBWaXNpYmxlUG9zaXRpb24m
KWVuZFBvc2l0aW9uCi17Ci0gICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3Jl
bGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZzdGFydFBvc2l0aW9uLCAmZW5kUG9zaXRp
b24sIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4g
ewotICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3Q7Ci0gICAgICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJs
ZVBvc2l0aW9ucyhiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHN0YXJ0UG9zaXRpb24s
IGVuZFBvc2l0aW9uKTsKLSAgICB9KTsKLX0KLQogQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfQkVHSU4KIC0gKE5TQXJyYXkqKWFjY2Vzc2liaWxpdHlBY3Rpb25OYW1lcwogQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECkBAIC0xNjkzLDcgKzE2MzYsNyBAQCBzdGF0
aWMgdm9pZCBjb252ZXJ0VG9WZWN0b3IoTlNBcnJheSogYXJyYXksIEFjY2Vzc2liaWxpdHlPYmpl
Y3Q6OkFjY2Vzc2liaWxpdHlDaAogICAgICAgICBhdXRvIHNlbGVjdGVkVmlzaWJsZVBvc2l0aW9u
UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5zZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlKCk7CiAg
ICAgICAgIGlmIChzZWxlY3RlZFZpc2libGVQb3NpdGlvblJhbmdlLmlzTnVsbCgpKQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNp
YmxlUG9zaXRpb25zKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgc2VsZWN0ZWRWaXNp
YmxlUG9zaXRpb25SYW5nZS5zdGFydCwgc2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5nZS5lbmQp
OworICAgICAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJhbmdlUmVmKUFYVGV4dE1hcmtlclJhbmdl
KGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgc2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25S
YW5nZSk7CiAgICAgfSk7CiB9CiAKQEAgLTI2MjEsNyArMjU2NCw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4
dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCks
IHN0YXJ0T2ZEb2N1bWVudChiYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpKSk7CisgICAgICAgICAg
ICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCks
IHN0YXJ0T2ZEb2N1bWVudChiYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpKSkucGxhdGZvcm1PYmpl
Y3QoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0yNjMxLDcgKzI1NzQsNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4g
KGlkKXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oYmFja2luZ09iamVjdC0+YXhPYmplY3RD
YWNoZSgpLCBlbmRPZkRvY3VtZW50KGJhY2tpbmdPYmplY3QtPmRvY3VtZW50KCkpKTsKKyAgICAg
ICAgICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKSwgZW5kT2ZEb2N1bWVudChiYWNraW5nT2JqZWN0LT5kb2N1bWVudCgpKSkucGxhdGZvcm1P
YmplY3QoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zMzMxLDE1ICszMjc0LDE1IEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlID0gbmlsOworICAg
IEFYVGV4dE1hcmtlclJhbmdlIHRleHRNYXJrZXJSYW5nZTsKICAgICBOU051bWJlciogICAgICAg
ICAgICAgICBudW1iZXIgPSBuaWw7CiAgICAgTlNTdHJpbmcqICAgICAgICAgICAgICAgc3RyaW5n
ID0gbmlsOwogICAgIE5TUmFuZ2UgICAgICAgICAgICAgICAgIHJhbmdlID0gezAsIDB9OwogICAg
IE5TQXJyYXkqICAgICAgICAgICAgICAgIGFycmF5ID0gbmlsOwogCiAgICAgLy8gZGVjb2RlIHRo
ZSBwYXJhbWV0ZXIKLSAgICBpZiAoQVhPYmplY3RJc1RleHRNYXJrZXJSYW5nZSh2YWx1ZSkpCi0g
ICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IChBWFRleHRNYXJrZXJSYW5nZVJlZil2YWx1ZTsKKyAg
ICBpZiAoaXNUZXh0TWFya2VyUmFuZ2VSZWYodmFsdWUpKQorICAgICAgICB0ZXh0TWFya2VyUmFu
Z2UgPSBBWFRleHRNYXJrZXJSYW5nZSgoQVhUZXh0TWFya2VyUmFuZ2VSZWYpdmFsdWUpOwogICAg
IGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAg
ICBudW1iZXIgPSB2YWx1ZTsKICAgICBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKQEAgLTMzNTEsMTAgKzMyOTQsOSBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKIAogICAgIC8vIGhhbmRsZSB0aGUgY29tbWFuZAogICAgIGlmIChb
YXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6IEAiQVhTZWxlY3RlZFRleHRNYXJrZXJSYW5n
ZSJdKSB7Ci0gICAgICAgIEFTU0VSVCh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBBY2Nlc3Np
YmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQoWyZ0ZXh0TWFya2VyUmFuZ2UsIHBy
b3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildIHsKICAgICAgICAgICAgIGlmIChhdXRvKiBi
YWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3QpCi0gICAg
ICAgICAgICAgICAgYmFja2luZ09iamVjdC0+c2V0U2VsZWN0ZWRWaXNpYmxlUG9zaXRpb25SYW5n
ZSh2aXNpYmxlUG9zaXRpb25SYW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5h
eE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSkpOworICAgICAgICAgICAgICAgIGJhY2tp
bmdPYmplY3QtPnNldFNlbGVjdGVkVmlzaWJsZVBvc2l0aW9uUmFuZ2UodGV4dE1hcmtlclJhbmdl
KTsKICAgICAgICAgfSk7CiAgICAgfSBlbHNlIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9T
dHJpbmc6IE5TQWNjZXNzaWJpbGl0eUZvY3VzZWRBdHRyaWJ1dGVdKSB7CiAgICAgICAgIGJhY2tp
bmdPYmplY3QtPnNldEZvY3VzZWQoW251bWJlciBib29sVmFsdWVdKTsKQEAgLTM0NDQsNyArMzM4
Niw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAogICAgICAgICBhdXRvIHdlYlJhbmdlID0gYmFja2luZ09iamVjdC0+cmFu
Z2VGb3JQbGFpblRleHRSYW5nZShyYW5nZSk7Ci0gICAgICAgIHJldHVybiBbcHJvdGVjdGVkU2Vs
ZiBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2VG
cm9tUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB3ZWJSYW5nZSkgc3BlbGxD
aGVjazpZRVNdOworICAgICAgICBpZiAoIXdlYlJhbmdlKQorICAgICAgICAgICAgcmV0dXJuIG5p
bDsKKyAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlOkFYVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKSwgKndlYlJhbmdlKSBzcGVsbENoZWNrOllFU107CiAgICAgfSk7CiB9CiAKQEAgLTM0
NzUsOCArMzQxOSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAg
ICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiAKICAgICAgICAgaWYgKGF1dG8qIGNhY2hlID0g
YmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpKSB7Ci0gICAgICAgICAgICBDaGFyYWN0ZXJP
ZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNo
ZSwgbWFya2VyKTsKLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9y
ZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNoYXJhY3Rlck9mZnNldCwgY2hhcmFjdGVyT2Zmc2V0KTsK
KyAgICAgICAgICAgIEFYVGV4dE1hcmtlciB0ZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgICAg
ICBhdXRvIHJhbmdlID0gY2FjaGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyh0
ZXh0TWFya2VyLCB0ZXh0TWFya2VyKTsKICAgICAgICAgICAgIGlmICghcmFuZ2UpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIE5TTm90Rm91bmQ7CiAKQEAgLTM1MDYsMTAgKzM0NTAsOCBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgaWYgKCFkb2N1bWVudEVs
ZW1lbnQpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgIGF1dG8gYm91bmRhcnkg
PSByZXNvbHZlQ2hhcmFjdGVyTG9jYXRpb24obWFrZVJhbmdlU2VsZWN0aW5nTm9kZUNvbnRlbnRz
KCpkb2N1bWVudEVsZW1lbnQpLCB0ZXh0SW5kZXgpOwotICAgICAgICBhdXRvIGNoYXJhY3Rlck9m
ZnNldCA9IGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UobWFrZVNpbXBs
ZVJhbmdlKGJvdW5kYXJ5KSwgdHJ1ZSk7Ci0KLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJGb3JD
aGFyYWN0ZXJPZmZzZXQoY2FjaGUsIGNoYXJhY3Rlck9mZnNldCk7CisgICAgICAgIGF1dG8gcG9z
aXRpb24gPSBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24ocmVzb2x2ZUNoYXJhY3RlckxvY2F0
aW9uKG1ha2VSYW5nZVNlbGVjdGluZ05vZGVDb250ZW50cygqZG9jdW1lbnRFbGVtZW50KSwgdGV4
dEluZGV4KSk7CisgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXIoY2FjaGUsIHBvc2l0aW9uKS5w
bGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNTI0LDI5ICszNDY2LDMwIEBAIEFM
TE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogI2lmIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKIC0gKE5TU3RyaW5nICopZGVidWdEZXNjcmlwdGlvbkZvclRleHRNYXJrZXI6KEFYVGV4
dE1hcmtlclJlZil0ZXh0TWFya2VyCiB7Ci0gICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXIoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtl
cikuZGVidWdEZXNjcmlwdGlvbigpOworICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtl
cik7CisgICAgcmV0dXJuIG1hcmtlci5kZWJ1Z0Rlc2NyaXB0aW9uKCk7CiB9CiAKLS0gKE5TU3Ry
aW5nICopZGVidWdEZXNjcmlwdGlvbkZvclRleHRNYXJrZXJSYW5nZTooQVhUZXh0TWFya2VyUmFu
Z2VSZWYpdGV4dE1hcmtlclJhbmdlCistIChOU1N0cmluZyAqKWRlYnVnRGVzY3JpcHRpb25Gb3JU
ZXh0TWFya2VyUmFuZ2U6KEFYVGV4dE1hcmtlclJhbmdlUmVmKXRleHRNYXJrZXJSYW5nZVJlZgog
ewogICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdDsKICAgICBp
ZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgIHJldHVybiBAIjxudWxsPiI7CiAKLSAgICBhdXRv
IHZpc2libGVQb3NpdGlvblJhbmdlID0gdmlzaWJsZVBvc2l0aW9uUmFuZ2VGb3JUZXh0TWFya2Vy
UmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwot
ICAgIGlmICh2aXNpYmxlUG9zaXRpb25SYW5nZS5pc051bGwoKSkKKyAgICBBWFRleHRNYXJrZXJS
YW5nZSB0ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlUmVmKTsKKyAgICBpZiAoIXRleHRN
YXJrZXJSYW5nZSkKICAgICAgICAgcmV0dXJuIEAiPG51bGw+IjsKIAogICAgIGNoYXIgZGVzY3Jp
cHRpb25bMjA0OF07Ci0gICAgZm9ybWF0Rm9yRGVidWdnZXIodmlzaWJsZVBvc2l0aW9uUmFuZ2Us
IGRlc2NyaXB0aW9uLCBzaXplb2YoZGVzY3JpcHRpb24pKTsKKyAgICBmb3JtYXRGb3JEZWJ1Z2dl
cih0ZXh0TWFya2VyUmFuZ2UsIGRlc2NyaXB0aW9uLCBzaXplb2YoZGVzY3JpcHRpb24pKTsKIAog
ICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aFVURjhTdHJpbmc6ZGVzY3JpcHRpb25dOwog
fQogCiAtICh2b2lkKXNob3dOb2RlRm9yVGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVmKXRleHRN
YXJrZXIKIHsKLSAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXIoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtl
cik7Ci0gICAgTm9kZSogbm9kZSA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCk7CisgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAg
ICBOb2RlKiBub2RlID0gbWFya2VyLm5vZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJl
dHVybjsKICAgICBub2RlLT5zaG93Tm9kZSgpOwpAQCAtMzU1NSw4ICszNDk4LDggQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKIC0gKHZvaWQpc2hvd05vZGVUcmVlRm9y
VGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVmKXRleHRNYXJrZXIKIHsKLSAgICBhdXRvIHZpc2li
bGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoc2VsZi5heEJhY2tpbmdP
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlcik7Ci0gICAgTm9kZSogbm9kZSA9IHZp
c2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCk7CisgICAgQVhU
ZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICBOb2RlKiBub2RlID0gbWFya2VyLm5v
ZGUoKTsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKICAgICBub2RlLT5zaG93VHJl
ZUZvclRoaXMoKTsKQEAgLTM1OTcsMjcgKzM1NDAsMjkgQEAgZW51bSBjbGFzcyBUZXh0VW5pdCB7
CiAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAg
IGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNo
ZSwgdGV4dE1hcmtlcik7CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdlOwogICAgICAgICBzd2l0
Y2ggKHRleHRVbml0KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRXb3JkOgotICAgICAg
ICAgICAgcmFuZ2UgPSBjYWNoZS0+bGVmdFdvcmRSYW5nZShjaGFyYWN0ZXJPZmZzZXQpOworICAg
ICAgICAgICAgcmFuZ2UgPSBjYWNoZS0+bGVmdFdvcmRSYW5nZShtYXJrZXIpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OlJpZ2h0V29yZDoKLSAgICAgICAgICAg
IHJhbmdlID0gY2FjaGUtPnJpZ2h0V29yZFJhbmdlKGNoYXJhY3Rlck9mZnNldCk7CisgICAgICAg
ICAgICByYW5nZSA9IGNhY2hlLT5yaWdodFdvcmRSYW5nZShtYXJrZXIpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OlNlbnRlbmNlOgotICAgICAgICAgICAgcmFu
Z2UgPSBjYWNoZS0+c2VudGVuY2VGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsK
KyAgICAgICAgICAgIHJhbmdlID0gY2FjaGUtPnNlbnRlbmNlRm9yQ2hhcmFjdGVyT2Zmc2V0KG1h
cmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6UGFyYWdy
YXBoOgotICAgICAgICAgICAgcmFuZ2UgPSBjYWNoZS0+cGFyYWdyYXBoRm9yQ2hhcmFjdGVyT2Zm
c2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgICAgICAgICByYW5nZSA9IGNhY2hlLT5wYXJhZ3Jh
cGhGb3JDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9t
UmFuZ2UoY2FjaGUsIHJhbmdlKTsKKyAgICAgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgICAgIHJl
dHVybiBuaWw7CisgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXJSYW5nZShjYWNoZSwgKnJhbmdl
KS5wbGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNjMyLDI0ICszNTc3LDI0IEBA
IGVudW0gY2xhc3MgVGV4dFVuaXQgewogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOworICAgICAgICBBWFRleHRNYXJr
ZXIgbWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNp
YmxlUG9zaXRpb25SYW5nZTsKICAgICAgICAgc3dpdGNoICh0ZXh0VW5pdCkgewogICAgICAgICBj
YXNlIFRleHRVbml0OjpMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBi
YWNraW5nT2JqZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAg
ICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5lUmFuZ2VG
b3JQb3NpdGlvbihtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4
dFVuaXQ6OkxlZnRMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNr
aW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7
CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxlZnRM
aW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRleHRVbml0OjpSaWdodExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRp
b25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZp
c2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tp
bmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtlcik7CiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4g
dGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoY2FjaGUsIHZpc2libGVQb3NpdGlv
blJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQpOworICAgICAgICByZXR1cm4g
QVhUZXh0TWFya2VyUmFuZ2UoY2FjaGUsIHZpc2libGVQb3NpdGlvblJhbmdlKS5wbGF0Zm9ybU9i
amVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNjY0LDQxICszNjA5LDM3IEBAIGVudW0gY2xhc3Mg
VGV4dFVuaXQgewogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgb2xkT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9y
VGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJr
ZXIodGV4dE1hcmtlcik7CiAgICAgICAgIENoYXJhY3Rlck9mZnNldCBuZXdPZmZzZXQ7CiAgICAg
ICAgIHN3aXRjaCAodGV4dFVuaXQpIHsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TmV4dFdvcmRF
bmQ6Ci0gICAgICAgICAgICBuZXdPZmZzZXQgPSBjYWNoZS0+bmV4dFdvcmRFbmRDaGFyYWN0ZXJP
ZmZzZXQob2xkT2Zmc2V0KTsKKyAgICAgICAgICAgIG5ld09mZnNldCA9IGNhY2hlLT5uZXh0V29y
ZEVuZENoYXJhY3Rlck9mZnNldChtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IGNhc2UgVGV4dFVuaXQ6OlByZXZpb3VzV29yZFN0YXJ0OgotICAgICAgICAgICAgbmV3T2Zmc2V0
ID0gY2FjaGUtPnByZXZpb3VzV29yZFN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KG9sZE9mZnNldCk7Cisg
ICAgICAgICAgICBuZXdPZmZzZXQgPSBjYWNoZS0+cHJldmlvdXNXb3JkU3RhcnRDaGFyYWN0ZXJP
ZmZzZXQobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0
OjpOZXh0U2VudGVuY2VFbmQ6Ci0gICAgICAgICAgICBuZXdPZmZzZXQgPSBjYWNoZS0+bmV4dFNl
bnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KG9sZE9mZnNldCk7CisgICAgICAgICAgICBuZXdPZmZz
ZXQgPSBjYWNoZS0+bmV4dFNlbnRlbmNlRW5kQ2hhcmFjdGVyT2Zmc2V0KG1hcmtlcik7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6UHJldmlvdXNTZW50ZW5jZVN0
YXJ0OgotICAgICAgICAgICAgbmV3T2Zmc2V0ID0gY2FjaGUtPnByZXZpb3VzU2VudGVuY2VTdGFy
dENoYXJhY3Rlck9mZnNldChvbGRPZmZzZXQpOworICAgICAgICAgICAgbmV3T2Zmc2V0ID0gY2Fj
aGUtPnByZXZpb3VzU2VudGVuY2VTdGFydENoYXJhY3Rlck9mZnNldChtYXJrZXIpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6Ok5leHRQYXJhZ3JhcGhFbmQ6Ci0g
ICAgICAgICAgICBuZXdPZmZzZXQgPSBjYWNoZS0+bmV4dFBhcmFncmFwaEVuZENoYXJhY3Rlck9m
ZnNldChvbGRPZmZzZXQpOworICAgICAgICAgICAgbmV3T2Zmc2V0ID0gY2FjaGUtPm5leHRQYXJh
Z3JhcGhFbmRDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRleHRVbml0OjpQcmV2aW91c1BhcmFncmFwaFN0YXJ0OgotICAgICAgICAgICAg
bmV3T2Zmc2V0ID0gY2FjaGUtPnByZXZpb3VzUGFyYWdyYXBoU3RhcnRDaGFyYWN0ZXJPZmZzZXQo
b2xkT2Zmc2V0KTsKKyAgICAgICAgICAgIG5ld09mZnNldCA9IGNhY2hlLT5wcmV2aW91c1BhcmFn
cmFwaFN0YXJ0Q2hhcmFjdGVyT2Zmc2V0KG1hcmtlcik7CiAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgY2FzZSBUZXh0VW5pdDo6TmV4dExpbmVFbmQ6IHsKLSAgICAgICAgICAgIGF1dG8gdmlz
aWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1h
cmtlcik7Ci0gICAgICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihj
YWNoZSwgYmFja2luZ09iamVjdC0+bmV4dExpbmVFbmRQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24p
KTsKLSAgICAgICAgfQotICAgICAgICBjYXNlIFRleHRVbml0OjpQcmV2aW91c0xpbmVTdGFydDog
ewotICAgICAgICAgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JU
ZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVybiB0ZXh0TWFy
a2VyRm9yVmlzaWJsZVBvc2l0aW9uKGNhY2hlLCBiYWNraW5nT2JqZWN0LT5wcmV2aW91c0xpbmVT
dGFydFBvc2l0aW9uKHZpc2libGVQb3NpdGlvbikpOwotICAgICAgICB9CisgICAgICAgIGNhc2Ug
VGV4dFVuaXQ6Ok5leHRMaW5lRW5kOgorICAgICAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlcihj
YWNoZSwgYmFja2luZ09iamVjdC0+bmV4dExpbmVFbmRQb3NpdGlvbihtYXJrZXIpKS5wbGF0Zm9y
bU9iamVjdCgpOworICAgICAgICBjYXNlIFRleHRVbml0OjpQcmV2aW91c0xpbmVTdGFydDoKKyAg
ICAgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXIoY2FjaGUsIGJhY2tpbmdPYmplY3QtPnByZXZp
b3VzTGluZVN0YXJ0UG9zaXRpb24obWFya2VyKSkucGxhdGZvcm1PYmplY3QoKTsKICAgICAgICAg
ZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdGV4dE1hcmtlckZvckNoYXJhY3Rl
ck9mZnNldChjYWNoZSwgbmV3T2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlcihj
YWNoZSwgbmV3T2Zmc2V0KS5wbGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNzI2
LDcgKzM2NjcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAogICAgIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyID0gbmlsOwot
ICAgIEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZSA9IG5pbDsKKyAgICBBWFRl
eHRNYXJrZXJSYW5nZSB0ZXh0TWFya2VyUmFuZ2U7CiAgICAgTlNOdW1iZXIqIG51bWJlciA9IG5p
bDsKICAgICBOU0FycmF5KiBhcnJheSA9IG5pbDsKICAgICBOU0RpY3Rpb25hcnkqIGRpY3Rpb25h
cnkgPSBuaWw7CkBAIC0zNzQyLDggKzM2ODMsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAvLyBhIHBhcmFtZXRlciBvZiB0aGUgd3JvbmcgdHlwZS4KICAgICBp
ZiAoQVhPYmplY3RJc1RleHRNYXJrZXIocGFyYW1ldGVyKSkKICAgICAgICAgdGV4dE1hcmtlciA9
IChBWFRleHRNYXJrZXJSZWYpcGFyYW1ldGVyOwotICAgIGVsc2UgaWYgKEFYT2JqZWN0SXNUZXh0
TWFya2VyUmFuZ2UocGFyYW1ldGVyKSkKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gKEFYVGV4
dE1hcmtlclJhbmdlUmVmKXBhcmFtZXRlcjsKKyAgICBlbHNlIGlmIChpc1RleHRNYXJrZXJSYW5n
ZVJlZihwYXJhbWV0ZXIpKQorICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBBWFRleHRNYXJrZXJS
YW5nZSgoQVhUZXh0TWFya2VyUmFuZ2VSZWYpcGFyYW1ldGVyKTsKICAgICBlbHNlIGlmIChbcGFy
YW1ldGVyIGlzS2luZE9mQ2xhc3M6W1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGNsYXNz
XV0pCiAgICAgICAgIHVpRWxlbWVudCA9IFsoV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
KXBhcmFtZXRlciBheEJhY2tpbmdPYmplY3RdOwogICAgIGVsc2UgaWYgKFtwYXJhbWV0ZXIgaXNL
aW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKQEAgLTM3OTQsNyArMzczNSw3IEBAIEFMTE9X
X0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKHJhbmdlcy5p
c0VtcHR5KCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgICAgIHJldHVy
biBjcmVhdGVOU0FycmF5KHJhbmdlcywgWyZdIChhdXRvJiByYW5nZSkgewotICAgICAgICAgICAg
ICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVJhbmdlKGJhY2tpbmdPYmplY3QtPmF4
T2JqZWN0Q2FjaGUoKSwgcmFuZ2UpOworICAgICAgICAgICAgICAgIHJldHVybiAoaWQpQVhUZXh0
TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSkucGxhdGZv
cm1PYmplY3QoKTsKICAgICAgICAgICAgIH0pLmF1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwog
ICAgIH0KQEAgLTM4MDUsNyArMzc0Niw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICAgICAgICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOwogCi0gICAgICAgICAgICBhdXRvIHRleHRPcGVyYXRp
b24gPSBhY2Nlc3NpYmlsaXR5VGV4dE9wZXJhdGlvbkZvclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUo
YmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBkaWN0aW9uYXJ5KTsKKyAgICAgICAgICAg
IGF1dG8gdGV4dE9wZXJhdGlvbiA9IGFjY2Vzc2liaWxpdHlUZXh0T3BlcmF0aW9uRm9yUGFyYW1l
dGVyaXplZEF0dHJpYnV0ZShkaWN0aW9uYXJ5KTsKICAgICAgICAgICAgIHJldHVybiBiYWNraW5n
T2JqZWN0LT5wZXJmb3JtVGV4dE9wZXJhdGlvbih0ZXh0T3BlcmF0aW9uKTsKICAgICAgICAgfSk7
CiAgICAgICAgIGlmIChvcGVyYXRpb25SZXN1bHQuaXNFbXB0eSgpKQpAQCAtMzg2OSw3ICszODEw
LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBJ
bnRSZWN0IHdlYkNvcmVSZWN0ID0gW3Byb3RlY3RlZFNlbGYgc2NyZWVuVG9Db250ZW50czplbmNs
b3NpbmdJbnRSZWN0KHJlY3QpXTsKICAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0
ZXJPZmZzZXQgPSBjYWNoZS0+Y2hhcmFjdGVyT2Zmc2V0Rm9yQm91bmRzKHdlYkNvcmVSZWN0LCBm
YWxzZSk7CiAKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldChjYWNoZSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpQVhU
ZXh0TWFya2VyKGNhY2hlLCBjaGFyYWN0ZXJPZmZzZXQpLnBsYXRmb3JtT2JqZWN0KCk7CiAgICAg
ICAgIH0pOwogICAgIH0KIApAQCAtMzg4NiwxMyArMzgyNywxMyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIEludFJlY3Qgd2ViQ29yZVJlY3QgPSBb
cHJvdGVjdGVkU2VsZiBzY3JlZW5Ub0NvbnRlbnRzOmVuY2xvc2luZ0ludFJlY3QocmVjdCldOwog
ICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNhY2hlLT5jaGFy
YWN0ZXJPZmZzZXRGb3JCb3VuZHMod2ViQ29yZVJlY3QsIHRydWUpOwogCi0gICAgICAgICAgICBy
ZXR1cm4gKGlkKXRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoY2FjaGUsIGNoYXJhY3Rlck9m
ZnNldCk7CisgICAgICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlcihjYWNoZSwgY2hhcmFj
dGVyT2Zmc2V0KS5wbGF0Zm9ybU9iamVjdCgpOwogICAgICAgICB9KTsKICAgICB9CiAKICAgICAv
LyBUZXh0TWFya2VyUmFuZ2UgYXR0cmlidXRlcy4KICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFs
VG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvck5TUmFuZ2UiXSkKLSAgICAgICAgcmV0dXJu
IChpZCliYWNraW5nT2JqZWN0LT50ZXh0TWFya2VyUmFuZ2VGb3JOU1JhbmdlKHJhbmdlKTsKKyAg
ICAgICAgcmV0dXJuIChpZCliYWNraW5nT2JqZWN0LT50ZXh0TWFya2VyUmFuZ2VGb3JOU1Jhbmdl
KHJhbmdlKS5wbGF0Zm9ybU9iamVjdCgpOwogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOk5TQWNjZXNzaWJpbGl0eUxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyUGFy
YW1ldGVyaXplZEF0dHJpYnV0ZV0pCiAgICAgICAgIHJldHVybiAoaWQpW3NlbGYgbGluZVRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXI6dGV4dE1hcmtlciBmb3JVbml0OlRleHRVbml0OjpMaW5l
XTsKQEAgLTM5MDcsOSArMzg0OCw5IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgICAgICAgICBhdXRvIGNyaXRlcmlhID0gYWNjZXNzaWJpbGl0eU1pc3NwZWxsaW5n
U2VhcmNoQ3JpdGVyaWFGb3JQYXJhbWV0ZXJpemVkQXR0cmlidXRlKGNhY2hlLCBkaWN0aW9uYXJ5
KTsKKyAgICAgICAgICAgIGF1dG8gY3JpdGVyaWEgPSBhY2Nlc3NpYmlsaXR5TWlzc3BlbGxpbmdT
ZWFyY2hDcml0ZXJpYUZvclBhcmFtZXRlcml6ZWRBdHRyaWJ1dGUoZGljdGlvbmFyeSk7CiAgICAg
ICAgICAgICBpZiAoYXV0byBtaXNzcGVsbGluZ1JhbmdlID0gYmFja2luZ09iamVjdC0+bWlzc3Bl
bGxpbmdSYW5nZSgqY3JpdGVyaWEuZmlyc3QsIGNyaXRlcmlhLnNlY29uZCkpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UoY2FjaGUsICptaXNzcGVs
bGluZ1JhbmdlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlclJhbmdl
KGNhY2hlLCAqbWlzc3BlbGxpbmdSYW5nZSkucGxhdGZvcm1PYmplY3QoKTsKIAogICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICAgICAgfSk7CkBAIC0zOTIxLDcgKzM4NjIsOCBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICAgICAgICAgIHJldHVy
biAhdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENh
Y2hlKCksIHRleHRNYXJrZXIpLmlzTnVsbCgpOworICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1h
cmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJldHVybiAhbWFya2VyLmlzTnVsbCgpOwog
ICAgICAgICB9KTsKIAogICAgICAgICByZXR1cm4gW05TTnVtYmVyIG51bWJlcldpdGhCb29sOnJl
c3VsdF07CkBAIC0zOTM5LDcgKzM4ODEsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGFjY2Vzc2liaWxp
dHlPYmplY3RGb3JUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4
dE1hcmtlcik7CisgICAgICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOwor
ICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBtYXJrZXIuYXhPYmplY3QoKTsKICAgICAgICAg
ICAgIGlmICghYXhPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzk1
Miw3ICszODk1LDExIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JV
SUVsZW1lbnQiXSkgewogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRv
cmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0YWlu
UHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5n
ZSh1aUVsZW1lbnQuZ2V0KCktPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LmdldCgpLT5lbGVt
ZW50UmFuZ2UoKSk7CisgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHVpRWxlbWVudC5nZXQoKS0+
YXhPYmplY3RDYWNoZSgpOworICAgICAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlclJhbmdl
KGNhY2hlLCB1aUVsZW1lbnQuZ2V0KCktPmVsZW1lbnRSYW5nZSgpKS5wbGF0Zm9ybU9iamVjdCgp
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5NjIsOCArMzkwOSw4IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICAgICAgYXV0byB2aXNpYmxl
UG9zID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVj
dENhY2hlKCksIHRleHRNYXJrZXIpOwotICAgICAgICAgICAgcmV0dXJuIGJhY2tpbmdPYmplY3Qt
PmxpbmVGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBt
YXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+bGlu
ZUZvclBvc2l0aW9uKG1hcmtlcik7CiAgICAgICAgIH0pOwogICAgICAgICByZXR1cm4gQChyZXN1
bHQpOwogICAgIH0KQEAgLTM5NzgsNyArMzkyNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKFtudW1iZXIgdW5zaWduZWRJbnRlZ2VyVmFs
dWVdICE9IE5TTm90Rm91bmQpCiAgICAgICAgICAgICAgICAgdnBSYW5nZSA9IGJhY2tpbmdPYmpl
Y3QtPnZpc2libGVQb3NpdGlvblJhbmdlRm9yTGluZShbbnVtYmVyIHVuc2lnbmVkSW50VmFsdWVd
KTsKIAotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBv
c2l0aW9ucyhiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHZwUmFuZ2Uuc3RhcnQsIHZw
UmFuZ2UuZW5kKTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyUmFuZ2UoYmFj
a2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB2cFJhbmdlKS5wbGF0Zm9ybU9iamVjdCgpOwog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5ODgsNyArMzkzNSw3IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQog
ICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgICAgICAgICAgYXV0byByYW5n
ZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUo
KSwgdGV4dE1hcmtlclJhbmdlKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSB0ZXh0TWFya2Vy
UmFuZ2Uuc2ltcGxlUmFuZ2UoKTsKICAgICAgICAgICAgIHJldHVybiByYW5nZSA/IGJhY2tpbmdP
YmplY3QtPnN0cmluZ0ZvclJhbmdlKCpyYW5nZSkgOiBTdHJpbmcoKTsKICAgICAgICAgfSk7CiAg
ICAgfQpAQCAtNDAwMyw3ICszOTUwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJs
ZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KSk7CisgICAgICAgICAgICByZXR1
cm4gKGlkKUFYVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tp
bmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpLnBsYXRmb3Jt
T2JqZWN0KCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtNDAxMyw3ICszOTYwLDcgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tp
bmdPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIENHUmVjdFplcm87CiAKLSAgICAgICAg
ICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5h
eE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7CisgICAgICAgICAgICBhdXRvIHJhbmdl
ID0gdGV4dE1hcmtlclJhbmdlLnNpbXBsZVJhbmdlKCk7CiAgICAgICAgICAgICBpZiAoIXJhbmdl
KQogICAgICAgICAgICAgICAgIHJldHVybiBDR1JlY3RaZXJvOwogCkBAIC00MDY0LDE2ICs0MDEx
LDE2IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0KIAogICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYQXR0cmlidXRlZFN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSJdKQotICAgICAgICByZXR1cm4gW3NlbGYgZG9BWEF0dHJpYnV0ZWRTdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2U6dGV4dE1hcmtlclJhbmdlIHNwZWxsQ2hlY2s6WUVTXTsKKyAg
ICAgICAgcmV0dXJuIFtzZWxmIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
OkFYVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgc3BlbGxDaGVjazpZRVNdOwogCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhBdHRyaWJ1dGVkU3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlV2l0aE9wdGlvbnMiXSkgewogICAgICAgICBpZiAodGV4dE1hcmtlclJh
bmdlKQotICAgICAgICAgICAgcmV0dXJuIFtzZWxmIGRvQVhBdHRyaWJ1dGVkU3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlOnRleHRNYXJrZXJSYW5nZSBzcGVsbENoZWNrOk5PXTsKKyAgICAgICAgICAg
IHJldHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTpBWFRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIHNwZWxsQ2hlY2s6Tk9dOwogCiAgICAgICAg
IGlmIChkaWN0aW9uYXJ5KSB7CiAgICAgICAgICAgICBBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0
TWFya2VyUmFuZ2UgPSBuaWw7CiAgICAgICAgICAgICBpZCBwYXJhbWV0ZXIgPSBbZGljdGlvbmFy
eSBvYmplY3RGb3JLZXk6QCJBWFRleHRNYXJrZXJSYW5nZSJdOwotICAgICAgICAgICAgaWYgKEFY
T2JqZWN0SXNUZXh0TWFya2VyUmFuZ2UocGFyYW1ldGVyKSkKKyAgICAgICAgICAgIGlmIChpc1Rl
eHRNYXJrZXJSYW5nZVJlZihwYXJhbWV0ZXIpKQogICAgICAgICAgICAgICAgIHRleHRNYXJrZXJS
YW5nZSA9IChBWFRleHRNYXJrZXJSYW5nZVJlZilwYXJhbWV0ZXI7CiAKICAgICAgICAgICAgIEJP
T0wgc3BlbGxDaGVjayA9IE5POwpAQCAtNDA4MSw3ICs0MDI4LDcgQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoW3BhcmFtZXRlciBpc0tpbmRP
ZkNsYXNzOltOU051bWJlciBjbGFzc11dKQogICAgICAgICAgICAgICAgIHNwZWxsQ2hlY2sgPSBb
cGFyYW1ldGVyIGJvb2xWYWx1ZV07CiAKLSAgICAgICAgICAgIHJldHVybiBbc2VsZiBkb0FYQXR0
cmlidXRlZFN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZTp0ZXh0TWFya2VyUmFuZ2Ugc3BlbGxDaGVj
azpzcGVsbENoZWNrXTsKKyAgICAgICAgICAgIHJldHVybiBbc2VsZiBkb0FYQXR0cmlidXRlZFN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZTpBWFRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
IHNwZWxsQ2hlY2s6c3BlbGxDaGVja107CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gbmls
OwpAQCAtNDA5Myw3ICs0MDQwLDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0
SW5kZXg6MV0pKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZh
cnJheV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRN
YXJrZXJSYW5nZUZyb21NYXJrZXJzKChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5k
ZXg6MF0sIChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pLmdldCgpOwor
ICAgICAgICAgICAgcmV0dXJuIChpZClBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXIoKEFY
VGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSksIEFYVGV4dE1hcmtlcigoQVhU
ZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjFdKSkucGxhdGZvcm1PYmplY3QoKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00MTE1LDExICs0MDYyLDEyIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBhdXRvIGNoYXJhY3Rlck9mZnNl
dDEgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyMSk7Ci0g
ICAgICAgICAgICBhdXRvIGNoYXJhY3Rlck9mZnNldDIgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0
TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyMik7Ci0gICAgICAgICAgICBhdXRvIHJhbmdlID0gY2Fj
aGUtPnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjaGFyYWN0ZXJPZmZzZXQxLCBj
aGFyYWN0ZXJPZmZzZXQyKTsKLQotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFu
Z2VGcm9tUmFuZ2UoY2FjaGUsIHJhbmdlKTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJr
ZXIxKHRleHRNYXJrZXIxKTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIyKHRleHRN
YXJrZXIyKTsKKyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBjYWNoZS0+cmFuZ2VGb3JVbm9yZGVy
ZWRDaGFyYWN0ZXJPZmZzZXRzKG1hcmtlcjEsIG1hcmtlcjIpOworICAgICAgICAgICAgaWYgKCFy
YW5nZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIChp
ZClBWFRleHRNYXJrZXJSYW5nZShjYWNoZSwgKnJhbmdlKS5wbGF0Zm9ybU9iamVjdCgpOwogICAg
ICAgICB9KTsKICAgICB9CiAKQEAgLTQxMzMsOCArNDA4MSw4IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7
Ci0gICAgICAgICAgICByZXR1cm4gW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRNYXJrZXJGb3JDaGFy
YWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CisgICAg
ICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0
dXJuIG5leHRUZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00MTQ4LDggKzQwOTYsOCBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJh
Y3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJr
ZXIpOwotICAgICAgICAgICAgcmV0dXJuIFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdLmJyaWRnaW5nQXV0b3JlbGVhc2Uo
KTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAg
ICAgICByZXR1cm4gcHJldmlvdXNUZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0
b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC00MjA1LDIzICs0MTUzLDE2IEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFj
YWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvcyA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUs
IHRleHRNYXJrZXIpOwotICAgICAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdnBSYW5nZSA9
IGJhY2tpbmdPYmplY3QtPnN0eWxlUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zKTsKKyAgICAg
ICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICBhdXRv
IHZwUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5zdHlsZVJhbmdlRm9yUG9zaXRpb24obWFya2VyKTsK
IAotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0
aW9ucyhjYWNoZSwgdnBSYW5nZS5zdGFydCwgdnBSYW5nZS5lbmQpOworICAgICAgICAgICAgcmV0
dXJuIChpZClBWFRleHRNYXJrZXJSYW5nZShjYWNoZSwgdnBSYW5nZSkucGxhdGZvcm1PYmplY3Qo
KTsKICAgICAgICAgfSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhMZW5ndGhGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewogICAgICAgICBpbnQgbGVuZ3Ro
ID0gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVWYWx1ZUZyb21NYWluVGhyZWFkPGludD4oWyZ0ZXh0
TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IGludCB7
Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5h
eEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRl
eHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJS
YW5nZSk7Ci0gICAgICAgICAgICBpZiAoIXJhbmdlKQotICAgICAgICAgICAgICAgIHJldHVybiAw
OwotICAgICAgICAgICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6Omxlbmd0aEZvclJhbmdlKFNpbXBs
ZVJhbmdlIHsgKnJhbmdlIH0pOworICAgICAgICAgICAgcmV0dXJuIEFYT2JqZWN0Q2FjaGU6Omxl
bmd0aEZvclJhbmdlKHRleHRNYXJrZXJSYW5nZS5zaW1wbGVSYW5nZSgpKTsKICAgICAgICAgfSk7
CiAgICAgICAgIGlmIChsZW5ndGggPCAwKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKQEAgLTQy
MzEsMjQgKzQxNzIsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIChzbyBmYXIpLgogICAgIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlIl0pIHsKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVh
c2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNl
bGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAg
YXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0
OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5n
ZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7Ci0KLSAg
ICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShiYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCB0cnVlKTsKKyAgICAgICAgICAgIHJldHVy
biAoaWQpdGV4dE1hcmtlclJhbmdlLnN0YXJ0LnBsYXRmb3JtT2JqZWN0KCk7CiAgICAgICAgIH0p
OwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1h
cmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5Q
dHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxm
LmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvIHJhbmdlID0g
cmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0
ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIGZhbHNl
KTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlLmVuZC5wbGF0Zm9ybU9i
amVjdCgpOwogICAgICAgICB9KTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463912</attachid>
            <date>2022-12-06 18:14:15 -0800</date>
            <delta_ts>2022-12-10 12:48:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221206211413.patch</filename>
            <type>text/plain</type>
            <size>64401</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA4ZjU3MDIwYzE0NWNlYjExZjA1NmVlOTc2MjFmNGJmODVmNjBkODBlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTggKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8ICA0OSArKy0KIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAxMiArCiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAyODUgKysrKysrKysrKysrKysr
KysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oICAgfCAgOTUg
KysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAgfCAg
MzkgKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAg
OTMgKysrLS0tCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCAg
fCAgMTkgKy0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAgICAgICAgICB8
ICA1MSArKy0tCiAuLi4vdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sICAgICAgICAgICAg
fCAxNzUgKysrKystLS0tLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVk
LnR4dCAgICB8ICA3OCArKy0tLQogMTMgZmlsZXMgY2hhbmdlZCwgNjc1IGluc2VydGlvbnMoKyks
IDI0MSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291
cmNlcy50eHQKaW5kZXggN2M3MDgzYjY5M2RkLi4xZjFhYTgxNmFlY2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0
CkBAIC00NTIsNiArNDUyLDcgQEAgTW9kdWxlcy93ZWJ4ci9YUlNlc3Npb25FdmVudC5jcHAKIGFj
Y2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCithY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5j
cHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmls
aXR5QVJJQUdyaWRSb3cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCA0ZWM0MmQ0ZWNm
OTcuLjgzODVhODdkMGNhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xMjYsNiArMTI2
LDcgQEAgTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1v
ZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQogTW9kdWxl
cy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMvd2ViZGF0
YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KK2FjY2Vzc2liaWxpdHkvY29jb2Ev
QVhUZXh0TWFya2VyQ29jb2EubW0gQG5vLXVuaWZ5CiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVj
dENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IGRiYzY5NjQzNDY4MC4uMjc1NzgxMTI2MGI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTE4LDYgKzQ1MTgsOCBAQAog
CQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2
MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1i
aW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThD
OEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5w
bSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMEUy
MDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyog
QVhUZXh0TWFya2VyLmggKi87IH07CisJCUMwRTIwOEI2MjkzOTNERDAwMEMwRDJEMyAvKiBBWFRl
eHRNYXJrZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5tbSAq
LzsgfTsKIAkJQzBFMkYzMjcyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJk
IGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMkYz
MjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFdlYWssICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUz
NCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMxMDVEQTY0
MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjMwRjNBQTZCODAwMURENDRG
IC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CkBAIC0xNjM0OSw2ICsxNjM1MSw5IEBA
CiAJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVjdE1hYy5tbSAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBhdGggPSBtYWMv
QVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA4
RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QTAyOTM3
OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBF
MjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29j
b2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWFRleHRNYXJr
ZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYzMjUyNDEyQkYy
OTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1keWxpYi1k
ZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0gdXNyL2xpYi9s
aWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCUMwRjJBNDNG
MTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gcHJl
cHJvY2Vzc29yLnBtOyBwYXRoID0gc2NyaXB0cy9wcmVwcm9jZXNzb3IucG07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAvKiBUZXh0RW5jb2Rp
bmdEZXRlY3RvcklDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBU
ZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHA7IHBhdGggPSAuLi8uLi9QQUwvcGFsL3RleHQvVGV4
dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MjEzMDcsNiArMjEzMTIsNyBAQAogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNjZXNz
aWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJ
QzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICovLAogCQkJCUFBQTcyOEVGMTZEMUQ4
QkMwMEQzQkJDNiAvKiBpb3MgKi8sCiAJCQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlz
b2xhdGVkdHJlZSAqLywKIAkJCQkyOUE4MTIwNTBGQkI5QjUyMDA1MTAyOTMgLyogbWFjICovLApA
QCAtMjEzODMsNiArMjEzODksOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBB
WExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENh
Y2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNo
ZS5oICovLAorCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3Bw
ICovLAorCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywK
IAkJCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQu
aCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAzMDAyOEM1OTIgLyogRm9yY2VkQWNjZXNzaWJpbGl0
eVZhbHVlLmggKi8sCiAJCQkpOwpAQCAtMzEyOTUsNiArMzEzMDMsMTQgQEAKIAkJCW5hbWUgPSBt
YWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDMEUyMDhCNzI5MzkzRTFB
MDBDMEQyRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsKKwkJCWNoaWxkcmVu
ID0gKAorCQkJCUMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5t
bSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OworCQl9OwogCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVkaW8gKi8gPSB7CiAJCQlp
c2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzQ4NjQsNiArMzQ4ODAsNyBAQAog
CQkJCTI5QUUyMTM1MjFBQkE0OEEwMDg2OTI4MyAvKiBBWElzb2xhdGVkT2JqZWN0LmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyOUFFMjEyRDIxQUI5RUVCMDA4NjkyODMgLyogQVhJc29sYXRlZFRyZWUu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVj
dENhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyog
QVhUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2
MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzdF
Nzc3MEJGNDEzNEEwMDE1Mjg3MiAvKiBCYWNrRm9yd2FyZENhY2hlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRDbGllbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDAxMDgsNiArNDAxMjUsNyBAQAogCQkJCTA3MzhFNUVDMjQ5OTgzOTAw
MERBMTAxQyAvKiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0UGlja2VyLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8qIEFWVHJhY2tQcml2
YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OTk2QzBGNjI3MTc3NDg4MDAy
QzEyNUQgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAqLywKKwkJCQlDMEUy
MDhCNjI5MzkzREQwMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0gaW4gU291cmNlcyAq
LywKIAkJCQlDREY0QjcxNTFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmNwcCBpbiBTb3VyY2VzICov
LAogCQkJCUNEQjcwNDVCMUY3NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxheVN0cmVhbWluZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMyMjQyODFGNzU2OTY2MDA1RjA3N0IgLyogQ0RNSW5z
dGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDA1OTI1MWQ1
ZTljOC4uMWYzOTk1OGIyZmYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBWElzb2xhdGVk
T2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dl
ci5oIgorI2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlB
UklBR3JpZC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKQEAgLTI1MDUsMzMgKzI1MDYsMzQgQEAg
dm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQo
VGV4dE1hcmtlckRhdGEmIHRleHRNYXIKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVs
bCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rl
ck9mZnNldC5ub2RlOwotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYg
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7
CisKKyAgICBOb2RlKiBub2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7CisgICAgaWYgKGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2Rl
KS5pc1Bhc3N3b3JkRmllbGQoKSkgewogICAgICAgICB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkID0g
dHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4gb2JqID0gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7Ci0gICAgaWYgKCFv
YmopCisKKyAgICBhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZShub2RlKTsKKyAgICBpZiAoIW9i
amVjdCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gQ29udmVydCB0byB2aXNpYmxl
IHBvc2l0aW9uLgotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxl
UG9zaXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgYXV0byB2
aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJh
Y3Rlck9mZnNldCk7CiAgICAgaW50IHZwT2Zmc2V0ID0gMDsKICAgICBpZiAoIXZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkgewogICAgICAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIHZwT2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNh
dGVkRWRpdGluZ09mZnNldCgpOwogICAgIH0KLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElE
ID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwor
CisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICB0ZXh0
TWFya2VyRGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgdGV4dE1h
cmtlckRhdGEubm9kZSA9IG5vZGU7CiAgICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0
ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJT
dGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXg7CiAgICAgdGV4dE1hcmtlckRh
dGEub2Zmc2V0ID0gdnBPZmZzZXQ7CiAgICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2aXNp
YmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKLSAgICAKLSAgICB0aGlzLT5zZXROb2RlSW5Vc2UoZG9t
Tm9kZSk7CisKKyAgICBzZXROb2RlSW5Vc2Uobm9kZSk7CiB9CiAKIENoYXJhY3Rlck9mZnNldCBB
WE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2lt
cGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMpCkBA
IC0yNjUxLDcgKzI2NTMsNyBAQCBib29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFNraXBCb3VuZGFy
eShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3VzLCBjb25zdCBDaAogICAgIAogICAgIHJl
dHVybiB0cnVlOwogfQotICAgIAorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRh
Rm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEsIGNv
bnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewogICAgIENoYXJhY3Rlck9m
ZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwpAQCAtMjY2Myw3ICsyNjY1LDcgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1h
cmtlckRhdGEmIHRleHRNYXIKICAgICAgICAgaWYgKHNob3VsZFNraXBCb3VuZGFyeShwcmV2aW91
cywgbmV4dCkpCiAgICAgICAgICAgICBuZXh0ID0gbmV4dENoYXJhY3Rlck9mZnNldChuZXh0LCBm
YWxzZSk7CiAgICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJr
ZXJEYXRhLCBuZXh0KTsKLSAgICAgICAgCisKICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgbmV4
dCBDaGFyYWN0ZXJPZmZzZXQgaWYgaXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYg
KCFsZW5ndGhGb3JSYW5nZShyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlv
dXMsIG5leHQpKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKQEAgLTI2NzEs
NiArMjY3MywyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENo
YXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogICAgIH0gd2hpbGUgKHRleHRN
YXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOwogfQogCitBWFRleHRNYXJrZXIg
QVhPYmplY3RDYWNoZTo6bmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIp
Cit7CisgICAgQVhUZXh0TWFya2VyIHJlc3VsdDsKKworICAgIFRleHRNYXJrZXJEYXRhIGRhdGEg
eyBtYXJrZXIuZGF0YSgpIH07CisgICAgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zm
c2V0KGRhdGEsIG1hcmtlcik7CisgICAgaWYgKGRhdGEubm9kZSAhPSBtYXJrZXIubV9kYXRhLm5v
ZGUpIHsKKyAgICAgICAgLy8gU2luY2UgdGhlIE5vZGUgY2hhbmdlZCwgbmVlZCB0byB1cGRhdGUg
dGhlIG9iamVjdCB3cmFwcGVyLgorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gZ2V0T3JDcmVh
dGUoZGF0YS5ub2RlKSkKKyAgICAgICAgICAgIGRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+
d3JhcHBlcigpOworICAgIH0KKworICAgIHJlc3VsdC5tX2F4T2JqZWN0Q2FjaGUgPSB0aGlzOwor
ICAgIHJlc3VsdC5tX2RhdGEgPSBkYXRhOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQg
QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChU
ZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hh
cmFjdGVyT2Zmc2V0KQogewogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IGNoYXJhY3Rl
ck9mZnNldDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgK
aW5kZXggMmUxZTI1YjU3NGQxLi4yMTU5YTZiYjhjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00Myw2ICs0Myw3IEBAIGNsYXNzIFRleHRT
dHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhUZXh0TWFya2VyOwogY2xh
c3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBIVE1MVGFibGVFbGVt
ZW50OwpAQCAtNTYsNiArNTcsNyBAQCBjbGFzcyBTY3JvbGxWaWV3OwogY2xhc3MgVmlzaWJsZVBv
c2l0aW9uOwogY2xhc3MgV2lkZ2V0OwogCisvLyBGSVhNRTogTW92ZSBpbnRvIEFYVGV4dE1hcmtl
ciBjbGFzcy4KIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7CiAgICAgQVhJRCBheElEOwogCkBAIC02
Nyw2ICs2OSwxNCBAQCBzdHJ1Y3QgVGV4dE1hcmtlckRhdGEgewogICAgIGludCBjaGFyYWN0ZXJT
dGFydEluZGV4IHsgMCB9OwogICAgIGludCBjaGFyYWN0ZXJPZmZzZXQgeyAwIH07CiAgICAgYm9v
bCBpZ25vcmVkIHsgZmFsc2UgfTsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyKiBvYmplY3RXcmFwcGVyIHsgbnVsbHB0ciB9OworI2VsaWYgUExB
VEZPUk0oV0lOKQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBvYmplY3RXcmFwcGVy
OworI2VsaWYgVVNFKEFUU1BJKQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogb2JqZWN0
V3JhcHBlcjsKKyNlbmRpZgogfTsKIAogc3RydWN0IENoYXJhY3Rlck9mZnNldCB7CkBAIC0xNDcs
NiArMTU3LDcgQEAgY2xhc3MgQVhPYmplY3RDYWNoZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxB
WE9iamVjdENhY2hlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RDYWNoZSk7
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBBWElzb2xhdGVkVHJl
ZTsKICAgICBmcmllbmQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0cmVh
bSYsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBmcmllbmQgQVhUZXh0TWFya2VyOwogcHVibGljOgog
ICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+QVhPYmplY3RDYWNo
ZSgpOwpAQCAtMjM2LDYgKzI0Nyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFRleHRN
YXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvckNo
YXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwog
ICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJE
YXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyIG5leHRUZXh0
TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JQ
cmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2Vy
RGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uNmI4ZTgzYTQ3ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBAIC0wLDAgKzEsMjg1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBWFRleHRNYXJrZXIu
aCIKKworI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIkhUbUxJbnB1dEVsZW1l
bnQuaCIKKyNpbmNsdWRlIDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisKK25hbWVzcGFj
ZSBXZWJDb3JlIHsKKworQVhUZXh0TWFya2VyOjpBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSog
Y2FjaGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQorICAgIDogbV9h
eE9iamVjdENhY2hlKGNhY2hlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQ
b3NpdGlvbiBkZWVwUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsK
KyAgICBOb2RlKiBkb21Ob2RlID0gZGVlcFBvc2l0aW9uLmFuY2hvck5vZGUoKTsKKyAgICBBU1NF
UlQoZG9tTm9kZSk7CisgICAgaWYgKCFkb21Ob2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgLy8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVycmlu
ZyB0byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCisgICAg
Ly8gc2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQg
dGhlIG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCisgICAgYXV0byBjaGFyYWN0
ZXJPZmZzZXQgPSBtX2F4T2JqZWN0Q2FjaGUtPmNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9z
aXRpb24odmlzaWJsZVBvc2l0aW9uKTsKKy8qCisgaWYgKGRlZXBQb3NpdGlvbi5hbmNob3JUeXBl
KCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcgorICAgICAgICB8fCBkZWVwUG9z
aXRpb24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikg
eworICAgICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKKyAgICAgICAgdGV4dE1h
cmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNl
dCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisqLworICAgIHNldERhdGEoZG9tTm9kZSwgZGVl
cFBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGRlZXBQb3NpdGlvbi5hbmNob3JU
eXBlKCksIHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpLCBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJ
bmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCk7CisgICAgbV9heE9iamVjdENhY2hlLT5zZXRO
b2RlSW5Vc2UoZG9tTm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkK
KyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworCisgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOworICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CisgICAgICAgIG1fZGF0YS5pZ25vcmVk
ID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENvbnZlcnQgdG8gdmlz
aWJsZSBwb3NpdGlvbi4KKyAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IG1fYXhPYmplY3RDYWNo
ZS0+dmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwor
ICAgIHVuc2lnbmVkIHZwT2Zmc2V0ID0gMDsKKyAgICBpZiAoIXZpc2libGVQb3NpdGlvbi5pc051
bGwoKSkKKyAgICAgICAgdnBPZmZzZXQgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQo
KS5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworCisgICAgc2V0RGF0YShkb21Ob2RlLCB2cE9m
ZnNldCwgdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yVHlwZSgpLCB2aXNp
YmxlUG9zaXRpb24uYWZmaW5pdHkoKSwgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJh
Y3Rlck9mZnNldC5vZmZzZXQpOworICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKGRv
bU5vZGUpOworfQorCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBj
YWNoZSwgTm9kZSogbm9kZSkKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgbV9kYXRhLm5vZGUgPSBub2RlOworICAgIG1f
YXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKG1fZGF0YS5ub2RlKTsKK30KKworQVhUZXh0TWFy
a2VyOjpBWFRleHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJSZWYpCit7CisgICAg
aWYgKCF0ZXh0TWFya2VyUmVmKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoQ0ZHZXRU
eXBlSUQodGV4dE1hcmtlclJlZikgPT0gQVhUZXh0TWFya2VyR2V0VHlwZUlEKCkpOworICAgIGlm
IChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSAhPSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKEFYVGV4dE1hcmtlckdldExlbmd0aCh0ZXh0
TWFya2VyUmVmKSA9PSBzaXplb2YobV9kYXRhKSk7CisgICAgaWYgKEFYVGV4dE1hcmtlckdldExl
bmd0aCh0ZXh0TWFya2VyUmVmKSAhPSBzaXplb2YobV9kYXRhKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbWVtY3B5KCZtX2RhdGEsIEFYVGV4dE1hcmtlckdldEJ5dGVQdHIodGV4dE1hcmtlclJl
ZiksIHNpemVvZihtX2RhdGEpKTsKKworICAgIEFjY2Vzc2liaWxpdHk6OnBlcmZvcm1GdW5jdGlv
bk9uTWFpblRocmVhZChbdGhpc10gKCkgeworICAgICAgICBpZiAoIW5vZGUoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICBtX2F4T2JqZWN0Q2FjaGUgPSBub2RlKCktPmRvY3VtZW50
KCkuYXhPYmplY3RDYWNoZSgpOworICAgIH0pOworfQorCitSZXRhaW5QdHI8QVhUZXh0TWFya2Vy
UmVmPiBBWFRleHRNYXJrZXI6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
YWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJ
bnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOworfQorCit2b2lkIEFYVGV4dE1hcmtlcjo6
c2V0RGF0YShOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIFBvc2l0aW9uOjpBbmNob3JUeXBl
IGFuY2hvclR5cGUsIEFmZmluaXR5IGFmZmluaXR5LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydElu
ZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICBBU1NFUlQobV9heE9iamVjdENhY2hlKTsKKworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLm5vZGUgPSBub2RlOworICAgIG1fZGF0YS5vZmZz
ZXQgPSBvZmZzZXQ7CisgICAgbV9kYXRhLmFuY2hvclR5cGUgPSBhbmNob3JUeXBlOworICAgIG1f
ZGF0YS5hZmZpbml0eSA9IGFmZmluaXR5OworCisgICAgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5k
ZXggPSBjaGFyYWN0ZXJTdGFydEluZGV4OworICAgIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBj
aGFyYWN0ZXJPZmZzZXQ7CisKKyAgICBhdXRvKiBvYmplY3QgPSBtX2F4T2JqZWN0Q2FjaGUtPmdl
dE9yQ3JlYXRlKG5vZGUpOworICAgIG1fZGF0YS5heElEID0gb2JqZWN0LT5vYmplY3RJRCgpOwor
ICAgIG1fZGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgbV9kYXRh
Lmlnbm9yZWQgPSBvYmplY3QtPmFjY2Vzc2liaWxpdHlJc0lnbm9yZWQoKTsKK30KKworQVhUZXh0
TWFya2VyOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNOdWxsKCkgfHwgbm9kZSgpLT5pc1BzZXVkb0Vs
ZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFBvc2l0aW9uIHBvc2l0aW9uOwor
ICAgIGlmIChtX2RhdGEuYW5jaG9yVHlwZSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldElu
QW5jaG9yKQorICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwgbV9kYXRhLm9mZnNl
dCwgbV9kYXRhLmFuY2hvclR5cGUpOworICAgIGVsc2UKKyAgICAgICAgcG9zaXRpb24gPSBQb3Np
dGlvbihub2RlKCksIG1fZGF0YS5hbmNob3JUeXBlKTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2
aXNpYmxlUG9zaXRpb24ocG9zaXRpb24sIG1fZGF0YS5hZmZpbml0eSk7CisgICAgYXV0byBkZWVw
UG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBpZiAoZGVl
cFBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogcmVu
ZGVyZXIgPSBkZWVwUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogY2FjaGUgPSBy
ZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKGNhY2hlICYmICFj
YWNoZS0+bV9pZHNJblVzZS5jb250YWlucyhtX2RhdGEuYXhJRCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICByZXR1cm4gdmlzaWJsZVBvc2l0aW9uOworfQorCitBWFRleHRNYXJrZXI6Om9w
ZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKworICAgIGlmIChpc0lnbm9yZWQoKSB8fCBpc051bGwoKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKworICAgIENoYXJhY3Rlck9mZnNldCByZXN1bHQobm9kZSgpLCBtX2RhdGEuY2hhcmFj
dGVyU3RhcnRJbmRleCwgbV9kYXRhLmNoYXJhY3Rlck9mZnNldCk7CisgICAgLy8gV2hlbiB3ZSBh
cmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBWaXNpYmxlUG9zaXRpb24gaXMgdXBzdHJlYW0sIGl0
IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5l
LgorICAgIC8vIFdlIHVzZSB0aGUgcHJldmlvdXMgQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQgaXQg
d2lsbCBtYXRjaCB0aGUgUmFuZ2UuCisgICAgaWYgKG1fZGF0YS5hZmZpbml0eSA9PSBBZmZpbml0
eTo6VXBzdHJlYW0pCisgICAgICAgIHJldHVybiBtX2F4T2JqZWN0Q2FjaGUtPnByZXZpb3VzQ2hh
cmFjdGVyT2Zmc2V0KHJlc3VsdCwgZmFsc2UpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0Fj
Y2Vzc2liaWxpdHlPYmplY3QqIEFYVGV4dE1hcmtlcjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgp
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtX2F4T2JqZWN0Q2FjaGUt
PmdldChub2RlKCkpOworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogQVhUZXh0TWFy
a2VyOjpvYmplY3RXcmFwcGVyKCkgY29uc3QKK3sKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1fZGF0YS5vYmpl
Y3RXcmFwcGVyOworfQorCisjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQorU3RyaW5nIEFYVGV4
dE1hcmtlcjo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4gIjxudWxsPiJfczsKKworICAgIGF1dG8gc2VwYXJhdG9yID0gIiwgIjsK
KyAgICByZXR1cm4gbWFrZVN0cmluZyhub2RlKCktPmRlYnVnRGVzY3JpcHRpb24oKQorICAgICAg
ICAsIHNlcGFyYXRvciwgIm9mZnNldCAiLCBtX2RhdGEub2Zmc2V0CisgICAgICAgICwgc2VwYXJh
dG9yLCAiQW5jaG9yVHlwZSAiLCBtX2RhdGEuYW5jaG9yVHlwZQorICAgICAgICAsIHNlcGFyYXRv
ciwgIkFmZmluaXR5ICIsIG1fZGF0YS5hZmZpbml0eQorICAgICAgICAsIHNlcGFyYXRvciwgImNo
YXJhY3RlclN0YXJ0SW5kZXggIiwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgKKyAgICAgICAg
LCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJPZmZzZXQgIiwgbV9kYXRhLmNoYXJhY3Rlck9mZnNldAor
ICAgICAgICAsIHNlcGFyYXRvciwgImF4SUQgIiwgYXhJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAg
ICAgICAsIHNlcGFyYXRvciwgImlzSWdub3JlZCAiLCBpc0lnbm9yZWQoKQorICAgICk7Cit9Cisj
ZW5kaWYKKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtl
clJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZVJlZikKKyAgICA6IHN0YXJ0KEFYVGV4dE1hcmtlclJh
bmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZikpCisgICAgLCBlbmQoQVhUZXh0
TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZikpCit7CisgICAgQVNT
RVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSYW5nZVJlZikgPT0gQVhUZXh0TWFya2VyUmFuZ2VH
ZXRUeXBlSUQoKSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQor
ICAgIDogc3RhcnQoY2FjaGUsIHJhbmdlLnN0YXJ0KQorICAgICwgZW5kKGNhY2hlLCByYW5nZS5l
bmQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQoY2FjaGUpOwor
fQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSog
Y2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgc3RhcnQgPSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hlLT5zdGFydE9yRW5kQ2hh
cmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCB0cnVlKSk7CisgICAgZW5kID0gQVhUZXh0TWFy
a2VyKGNhY2hlLCBjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKCpyYW5n
ZSwgZmFsc2UpKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKGNv
bnN0IEFYVGV4dE1hcmtlciYgcywgY29uc3QgQVhUZXh0TWFya2VyJiBlKQorICAgIDogc3RhcnQo
cykKKyAgICAsIGVuZChlKQoreworfQorCitSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+
IEFYVGV4dE1hcmtlclJhbmdlOjpwbGF0Zm9ybU9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdAorICAg
ICAgICAsIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChj
b25zdCBVSW50OCopJnN0YXJ0Lm1fZGF0YSwgc2l6ZW9mKHN0YXJ0Lm1fZGF0YSkpKS5nZXQoKQor
ICAgICAgICAsIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJmVuZC5tX2RhdGEsIHNpemVvZihlbmQubV9kYXRhKSkpLmdldCgpCisg
ICAgKSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25S
YW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4g
eyBzdGFydCwgZW5kIH07Cit9CisKK3N0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYVGV4dE1h
cmtlclJhbmdlOjpzaW1wbGVSYW5nZSgpIGNvbnN0Cit7CisgICAgYXV0byBzdGFydEJvdW5kYXJ5
UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChzdGFydCk7CisgICAgYXV0byBlbmRCb3VuZGFyeVBv
aW50ID0gbWFrZUJvdW5kYXJ5UG9pbnQoZW5kKTsKKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2lu
dCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4ge3sgKnN0YXJ0Qm91bmRhcnlQb2ludCwgKmVuZEJvdW5kYXJ5UG9pbnQgfX07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
OTlkNWMwZjA1MGEzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFRleHRNYXJrZXIuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CitzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0
OworCitjbGFzcyBBWFRleHRNYXJrZXIgeworICAgIGZyaWVuZCBjbGFzcyBBWE9iamVjdENhY2hl
OworICAgIGZyaWVuZCBjbGFzcyBBWFRleHRNYXJrZXJSYW5nZTsKK3B1YmxpYzoKKyAgICAvLyBD
b25zdHJ1Y3RvcnMKKyAgICBBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOworICAgIEFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqLCBOb2RlKik7
CisgICAgQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZik7CisgICAgQVhUZXh0TWFya2VyKCkg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8QVhU
ZXh0TWFya2VyUmVmPiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0OworCisgICAgb3BlcmF0b3IgVmlz
aWJsZVBvc2l0aW9uKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29u
c3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZv
cm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmplY3QoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3Jh
cHBlcigpIGNvbnN0OworCisgICAgVGV4dE1hcmtlckRhdGEgY29uc3QmIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KKyAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
Lm5vZGU7IH0KKyAgICBBWElEIGF4SUQoKSBjb25zdDsKKyAgICBib29sIGlzSWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pZ25vcmVkOyB9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIHZvaWQgc2V0RGF0YShOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCBQb3NpdGlvbjo6
QW5jaG9yVHlwZSwgQWZmaW5pdHksIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGNoYXJhY3Rlck9mZnNldCk7CisKKyAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2Fj
aGUgeyBudWxscHRyIH07CisgICAgVGV4dE1hcmtlckRhdGEgbV9kYXRhOworfTsKKworY2xhc3Mg
QVhUZXh0TWFya2VyUmFuZ2UgeworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycy4KKyAgICBB
WFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJlZik7CisgICAgQVhUZXh0TWFya2Vy
UmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAg
QVhUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+Jik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiwg
Y29uc3QgQVhUZXh0TWFya2VyJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7
CisKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBsYXRmb3JtT2JqZWN0KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmFuZ2VSZWYoKSBjb25zdCB7IHJldHVy
biBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7IH0KKyAgICBvcGVyYXRvciBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNp
bXBsZVJhbmdlKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFz
dGFydC5pc051bGwoKSAmJiAhZW5kLmlzTnVsbCgpOyB9CisvL3ByaXZhdGU6CisgICAgQVhUZXh0
TWFya2VyIHN0YXJ0OworICAgIEFYVGV4dE1hcmtlciBlbmQ7Cit9OworCitpbmxpbmUgYm9vbCBB
WFRleHRNYXJrZXI6OmlzTnVsbCgpIGNvbnN0Cit7CisgICAgcmV0dXJuICFtX2F4T2JqZWN0Q2Fj
aGUgfHwgIW5vZGUoKSB8fCAhbV9heE9iamVjdENhY2hlLT5pc05vZGVJblVzZShub2RlKCkpOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmU3ODI4MmY3MjA1ZgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0K
QEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIkFYVGV4dE1hcmtlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorI2ltcG9ydCAiV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK0FYSUQgQVhUZXh0TWFya2VyOjpheElEKCkgY29uc3QKK3sKKyAgICByZXR1cm4gW29i
amVjdFdyYXBwZXIoKSBpZGVudGlmaWVyXTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCBkZTNjMzU0NWE3N2Yu
LmI5NzU4MTRjYmVmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
QEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2Jq
ZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNpbXBv
cnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCkBAIC03MTMsMTYgKzcxNCwxNSBAQCBzdGF0aWMgc3Rk
OjpwYWlyPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGly
ZWN0aW9uPiBhY2NlcwogCiAjcHJhZ21hIG1hcmsgVGV4dCBNYXJrZXIgaGVscGVycwogCi1zdGF0
aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zm
c2V0KQorc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFya2VyKEFY
T2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsKICAgICBp
ZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRh
IHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0
ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0
TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byBuZXh0TWFya2VyID0gY2FjaGUtPm5leHRUZXh0
TWFya2VyKG1hcmtlcik7CisgICAgaWYgKCFuZXh0TWFya2VyLmF4SUQoKS5pc1ZhbGlkKCkpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXpl
b2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIG5leHRNYXJrZXIucGxhdGZvcm1PYmpl
Y3QoKTsKIH0KIAogc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4
dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVy
T2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCkBAIC03MzcsMTEgKzczNyw2IEBAIHN0YXRpYyBSZXRh
aW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZz
ZXQoQVhPYmplY3RDCiAgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4
dE1hcmtlckRhdGEpKSk7CiB9CiAKLS0gKFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+KW5leHRU
ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9m
ZnNldAotewotICAgIHJldHVybiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxm
LmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOwotfQot
CiAtIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPilwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFy
YWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7CiAgICAgcmV0
dXJuIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09i
amVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOwpAQCAtMzY3OSwyNSArMzY3
NCwyMiBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0
dXJuIChpZClbc2VsZiBfdGV4dE1hcmtlckZvckluZGV4OltudW1iZXIgaW50ZWdlclZhbHVlXV07
CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFVJRWxlbWVudEZvclRl
eHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRv
cmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXIsIHByb3RlY3RlZFNl
bGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAg
YXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0
OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVy
biBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYWNjZXNzaWJpbGl0eU9iamVj
dEZvclRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2Vy
KTsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSAmJiBbYXhPYmpl
Y3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFth
eE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgQVhUZXh0TWFya2Vy
IG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgYXV0byogd3JhcHBlciA9IG1hcmtlci5vYmpl
Y3RXcmFwcGVyKCk7CisgICAgICAgIGlmICghd3JhcHBlcikKKyAgICAgICAgICAgIHJldHVybiBu
aWw7CiAKLSAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICB9
KTsKKyAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50Vmll
dykKKyAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKKyAgICAgICAgcmV0dXJuIHdy
YXBwZXI7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhU
ZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJp
bGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnVpRWxl
bWVudF0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRN
YXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQuZ2V0KCktPmF4T2JqZWN0Q2FjaGUoKSwgdWlF
bGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKSk7CisgICAgICAgIHJldHVybiAoaWQpQWNjZXNz
aWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPEFYVGV4dE1h
cmtlclJhbmdlUmVmPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0YWluUHRyPEFYVGV4dE1hcmtlclJh
bmdlUmVmPiB7CisgICAgICAgICAgICBhdXRvKiBjYWNoZSA9IHVpRWxlbWVudC5nZXQoKS0+YXhP
YmplY3RDYWNoZSgpOworICAgICAgICAgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gbmlsOworICAgICAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJhbmdlKGNhY2hlLCB1
aUVsZW1lbnQuZ2V0KCktPmVsZW1lbnRSYW5nZSgpKS5wbGF0Zm9ybU9iamVjdCgpOwogICAgICAg
ICB9KTsKICAgICB9CiAKQEAgLTM4MzcsOSArMzgyOSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2VyKFth
cnJheSBvYmplY3RBdEluZGV4OjBdKQogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFy
a2VyKFthcnJheSBvYmplY3RBdEluZGV4OjFdKSkKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJv
bU1haW5UaHJlYWQ8aWQ+KFsmYXJyYXldICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAg
ICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycygoQVhUZXh0TWFya2VyUmVm
KVthcnJheSBvYmplY3RBdEluZGV4OjBdLCAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RB
dEluZGV4OjFdKS5nZXQoKTsKLSAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIChpZClBWFRl
eHRNYXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDow
XSB9LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gfSB9LnBsYXRm
b3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJz
Il0pIHsKQEAgLTM4NzgsOCArMzg2OSwxMCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNo
YXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICAg
ICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIG5leHRUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0pOworICAgICAgICAgICAgQVhUZXh0TWFy
a2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXh0VGV4dE1hcmtl
cihjYWNoZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CisvLyAgICAgICAgICAgIENo
YXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFy
a2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKKy8vICAgICAgICAgICAgcmV0dXJuIGJyaWRnZV9pZF9j
YXN0KFtwcm90ZWN0ZWRTZWxmIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJh
Y3Rlck9mZnNldF0pOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5NzUsMjYgKzM5NjgsMzAg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICAvLyBVc2VkIG9u
bHkgYnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAg
ICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21N
YWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0
cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5n
T2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAg
ICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAg
ICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLQotICAgICAgICAgICAgcmV0
dXJuIChpZClzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2Jq
ZWN0Q2FjaGUoKSwgcmFuZ2UsIHRydWUpOwotICAgICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFy
a2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAg
cmV0dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5zdGFydC5wbGF0Zm9ybU9iamVjdCgpLmF1dG9y
ZWxlYXNlKCk7CisvLyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3Jl
bGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4geworLy8gICAgICAg
ICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdP
YmplY3Q7CisvLyAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkKKy8vICAgICAgICAgICAg
ICAgIHJldHVybiBuaWw7CisvLworLy8gICAgICAgICAgICBhdXRvIHJhbmdlID0gcmFuZ2VGb3JU
ZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2Vy
UmFuZ2UpOworLy8KKy8vICAgICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4dE1hcmtl
ckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIHRydWUpOwor
Ly8gICAgICAgIH0pOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmlu
ZzpAIkFYRW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8
aWQ+KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBw
cm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFj
a2luZ09iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBh
dXRvIHJhbmdlID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmpl
Y3RDYWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICAgICAgcmV0dXJuIChpZClzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwg
cmFuZ2UsIGZhbHNlKTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4
VGV4dE1hcmtlclJhbmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiAoaWQp
YXhUZXh0TWFya2VyUmFuZ2UuZW5kLnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKKy8v
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFp
blB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CisvLyAgICAgICAgICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKKy8vICAg
ICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorLy8gICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKKy8vCisvLyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5n
ZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7CisvLyAg
ICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShiYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBmYWxzZSk7CisvLyAgICAgICAgfSk7CiAg
ICAgfQogCiAjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIt
ZXhwZWN0ZWQudHh0CmluZGV4IDVkMzNkYWNiMmQzZi4uNTA0NjAyNThmYzMzIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1m
b3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDE3ICsxLDE0IEBACi10ZXh0IGhlcmUK
LXRleHQgYmxvY2sKLXRleHQgaGVyZQogVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVt
IHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2Vy
LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1BBU1M6IHRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHJhbmdlKSA9PT0gMTAKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKHN0YXJ0KS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmQpLmlzRXF1YWwodGV4dCkgPT09IHRy
dWUKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSA9PT0gMTAKK1BB
U1M6IG5ld1JhbmdlLmlzRXF1YWwocmFuZ2UpID09PSB0cnVlCiAKLVBBU1MgdGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMSkgaXMgMTAKLVBBU1MgdGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMg
dHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJr
ZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aChuZXdNYXJrZXJSYW5nZSkgaXMgMTAKLVBBU1MgbmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0
TWFya2VyUmFuZ2UxKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAK
IFRFU1QgQ09NUExFVEUKLQordGV4dCBoZXJlCit0ZXh0IGJsb2NrCit0ZXh0IGhlcmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFy
a2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0
LW1hcmtlci5odG1sCmluZGV4IGQ0OTM2YWQyMmQxOC4uMzQwYWIxZTE5ODBjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5o
dG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQt
bWFya2VyLmh0bWwKQEAgLTEsNTEgKzEsNDIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlk
PSJib2R5Ij4KKzxib2R5PgogCiB0ZXh0IGhlcmUKLTxkaXYgaWQ9InRleHQxIiB0YWJpbmRleD0i
MCI+dGV4dCBibG9jazwvZGl2PgorPGRpdiBpZD0idGV4dDEiPnRleHQgYmxvY2s8L2Rpdj4KIHRl
eHQgaGVyZQogCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwv
ZGl2PgotCiA8c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHRleHQg
bWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4g
YSB0ZXh0IG1hcmtlci4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKKyAgICAgICAgbGV0IHRlc3RPdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJr
ZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRl
eHQgbWFya2VyLlxuXG4iOwogCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRl
eHQxIikuZm9jdXMoKTsKLSAgICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDEiKS5jaGlsZEF0SW5kZXgoMCk7CiAK
LSAgICAgICAgICAvLyBHZXQgdGhlIGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgICAgdGV4dCA9
IHRleHQuY2hpbGRBdEluZGV4KDApOworICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQg
dGhlIHN0YXJ0IG1hcmtlciBmb3IgdGhpcyBlbGVtZW50J3MgcmFuZ2UuCisgICAgICAgIHZhciBy
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSIsICIx
MCIpOworICAgICAgICB2YXIgc3RhcnQgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShyYW5nZSk7CiAKLSAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhl
IHN0YXJ0IG1hcmtlciBmb3IgdGhpcyByYW5nZS4KLSAgICAgICAgICB2YXIgdGV4dE1hcmtlclJh
bmdlMSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgICBz
aG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMSkiLCAi
MTAiKTsKLSAgICAgICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UxKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhh
dCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQgd2Ug
c3RhcnRlZCB3aXRoLgorICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIp
OwogCi0gICAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1
cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQgd2Ugc3RhcnRlZCB3aXRoLgotICAgICAgICAgIHNob3Vs
ZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJr
ZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAgICAgLy8gR2V0IHRoZSBlbmQgbWFya2VyIGFuZCBj
aGVjayB0aGF0IGl0IGdpdmVzIHVzIHRoZSBzYW1lIGVsZW1lbnQuCisgICAgICAgIHZhciBlbmQg
PSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB0
ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoZW5kKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEdldCB0aGUg
ZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50Lgot
ICAgICAgICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlMSk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCki
KTsKKyAgICAgICAgLy8gTWFrZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBl
bmQgbWFya2VycyBhbmQgY2hlY2sgdGhlIGxlbmd0aC4KKyAgICAgICAgdmFyIG5ld1JhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0LCBlbmQpOworICAgICAgICB0ZXN0
T3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpIiwg
IjEwIik7CiAKLSAgICAgICAgICAvLyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3Rh
cnQgYW5kIGVuZCBtYXJrZXJzIGFuZCBjaGVjayB0aGUgbGVuZ3RoCi0gICAgICAgICAgdmFyIG5l
d01hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2Vy
LCBlbmRNYXJrZXIpOwotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxl
bmd0aChuZXdNYXJrZXJSYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBp
dCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAorICAgICAgICB0
ZXN0T3V0cHV0ICs9IGV4cGVjdCgibmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkiLCAidHJ1ZSIpOwog
Ci0gICAgICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJh
bmdlIHdlIHN0YXJ0ZWQgd2l0aAotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3TWFya2VyUmFu
Z2UuaXNFcXVhbCh0ZXh0TWFya2VyUmFuZ2UxKSIpOworICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0
KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3Vz
LW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1t
YXJrZXItcHJldmlvdXMtbmV4dC5odG1sCmluZGV4IDVlZDNiZDBkMDZkZS4uMzhmMTNlZDdhM2Vj
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQt
bWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbApAQCAtMSwxNSArMSwx
NyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIu
anMiPjwvc2NyaXB0PgogPG1ldGEgY2hhcnNldD0iVVRGLTE2Ij4KIDwvaGVhZD4KIDxzdHlsZT4K
IC51c2Vyc2VsZWN0IHsgdXNlci1zZWxlY3Q6IG5vbmU7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5v
bmU7IH0KIDwvc3R5bGU+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAotPGRpdiBpZD0idGV4
dCIgdGFiaW5kZXg9IjAiPnRleHQ8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorPGRpdiBpZD0i
dGV4dCI+dGV4dDwvZGl2PgogPGJyPgogdGV4dDEKIApAQCAtMzIsMjkgKzM0LDQ1IEBAIGYKIDxw
IGlkPSJ0ZXh0NiI+YSAgICAgYjwvcD4KIAogPHAgaWQ9InRleHQ3Ij5hdWRpbzxhdWRpbyBjb250
cm9scz48L2F1ZGlvPmZpbGU8L3A+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBp
ZD0iY29uc29sZSI+PC9kaXY+Cis8L2Rpdj4KIAogPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBmb3J3
YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgcHJldmlvdXNN
YXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5u
ZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
eworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgY3Vy
cmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGJh
Y2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgeworICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIHByZXZp
b3VzTWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7CisgICAg
ICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6
IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAg
ICAgICB9OworICAgIH0KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBuZXh0L3By
ZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LiIp
OwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAg
ICAgCi0gICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0gICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9k
ZS4KLSAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAKKyAgICAg
ICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2Vy
IGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LlxuXG4iOworCisgICAgICAgIHZh
ciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0
ZXh0IikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdl
dCB0aGUgc3RhcnQvZW5kIG1hcmtlciBmb3IgdGhpcyByYW5nZS4KICAgICAgICAgdmFyIHRleHRN
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSki
LCAiNCIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisKICAgICAgICAgdmFyIHN0
YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1h
cmtlclJhbmdlKTsKICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICBzaG91bGRCZVRydWUo
InRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0Vx
dWFsKHRleHQpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIAor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVu
ZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gQ2hlY2sgbmV4
dCB0ZXh0IG1hcmtlci4gKEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgPGJy
Pi4pCiAgICAgICAgIHZhciBjdXJyZW50TWFya2VyLCBwcmV2aW91c01hcmtlciwgbWFya2VyUmFu
Z2U7OwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgc3Rh
cnRNYXJrZXIsIHRleHQpOwpAQCAtNjIsNTggKzgwLDU3IEBAIGYKICAgICAgICAgY3VycmVudE1h
cmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAg
ICAgIHZhciBuZXdsaW5lID0gJ1xuJzsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAgICAgIC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hh
cmFjdGVycywgaXQgd2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQxIi4KICAgICAgICAgcmVzdWx0
ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAg
ICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFy
a2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICIndCciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKwogICAgICAgICAvLyBD
aGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgY2hhcmFj
dGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygx
LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0
LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7
Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAgICAgIC8vIFRyYXZl
cnNlIGJhY2t3YXJkcyBvbmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFz
dCBjaGFyYWN0ZXIgb2YgInRleHQiLgogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcHJl
dmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtl
ciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJy
ZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIGlmIChhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gIm1hYyIpCi0gICAgICAgICAgICBzaG91bGRC
ZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5l
d2xpbmUiKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCcgKyBuZXdsaW5lIik7CiAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAiJ3QnIik7CisgICAgICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CiAKICAgICAg
ICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCByZXBsYWNlZCBub2RlCiAgICAgICAgIHZhciB0ZXh0
MiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIi
KTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTIgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KHRleHQyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnRleHRNYXJrZXJSYW5n
ZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7
CiAgICAgICAgIHZhciBzdHIgPSB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1h
cmtlclJhbmdlMikucmVwbGFjZShTdHJpbmcuZnJvbUNoYXJDb2RlKDY1NTMyKSwgIltBVFRBQ0hN
RU5UXSIpOwotICAgICAgICBkZWJ1ZygiT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6ICIgKyBzdHIp
OwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTog
JHtzdHJ9XG5gOworCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7CiAgICAgICAgIC8vIEFkdmFu
Y2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgImQiLgogICAgICAgICByZXN1bHQgPSBm
b3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAg
IHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2Vy
ID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IidkJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKKwogICAgICAgICAvLyBU
cmF2ZXJzZSBiYWNrd2FyZHMgNiBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgdGhlIGxhc3Qg
Y2hhcmFjdGVyIG9mICJ0ZXh0MSIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcyg2LCBwcmV2
aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtl
ciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJy
ZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4
dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKLSAgICAg
ICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJzEnIik7CisKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ug
d2l0aCB1c2VyLXNlbGVjdDpub25lLCBuZXh0VGV4dE1hcmtlci9wcmV2aW91c1RleHRNYXJrZXIg
c2hvdWxkIHN0aWxsIHdvcmsuCi0gICAgICAgIHZhciB0ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKTsKLSAgICAgICAgdGV4dDMgPSB0
ZXh0My5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAorICAgICAgICB2YXIgdGV4dDMgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIikuY2hpbGRB
dEluZGV4KDApOworCiAgICAgICAgIC8vIEFkdmFuY2UgdG8gbGFuZCBhdCB1c2VyLXNlbGVjdDpu
b25lIG5vZGUuCiAgICAgICAgIHZhciBtYXJrZXIxLCBtYXJrZXIyOwogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDE4OyBpKyspIHsKQEAgLTEyNSwzNCArMTQyLDMxIEBAIGYKICAgICAgICAg
fQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgbWFya2VyUmFuZ2Ug
PSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKG1hcmtlcjEsIG1hcmtlcjIpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInZWN0JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0My5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidlY3QnIik7CiAgICAgICAgIC8vIEl0ZXJh
dGUgYmFja3dhcmRzIHRoZSBzZWNvbmQgbWFya2VyIGZvciA2IGNoYXJhY3RlcnMsIHRoZSByYW5n
ZSBzaG91bGQgYmUgInNlbCIKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50
TWFya2VyID0gdGV4dDMucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAg
ICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidzZWwnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsKIAogICAgICAgICAvLyBD
aGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZpZWxkLgogICAgICAgICB2YXIgcHN3ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwc3ciKTsKICAgICAg
ICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChw
c3cpOwogICAgICAgICB2YXIgc3RhcnQgPSBwc3cuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOwotICAgICAgICBzaG91bGRCZVRydWUoIiFwc3cuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIpOwotICAgICAgICAKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgiIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnQpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBDaGVjayBuZXh0L3ByZXZpb3VzIHRl
eHQgbWFya2VyIGNhbGwgd2lsbCBza2lwIHBhc3N3b3JkIGZpZWxkCiAgICAgICAgIC8vIFdlIHN0
YXJ0IGZyb20gdGV4dDIgYW5kIGFkdmFuY2UgNiBjaGFyYWN0ZXJzLCBpdCBzaG91bGQgc2tpcCB0
aGUgcGFzc3dvcmQgZmllbGQgYW5kIGxhbmQgb24gdGV4dDMuCiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlMik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRl
eHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0Vx
dWFsKHRleHQzKSIsICJ0cnVlIik7CiAgICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFy
a2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIg
PSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAg
ICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIpOwotICAgICAg
ICAKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxk
QXRJbmRleCgyKSkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRleHQg
bm9kZSB3aXRoIGxpbmUgYnJlYWtzLCB3ZSBjYW4gZ28gdGhyb3VnaCBpdCB3aXRoIG5leHQvcHJl
dmlvdXMgY2FsbC4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGV4dDQiKTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwpAQCAtMTYzLDg3ICsxNzcsNjQgQEAg
ZgogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVu
dE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAi
J2YnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7CisKICAgICAgICAgZW5kTWFy
a2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5n
ZSk7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBlbmRNYXJrZXI7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNzsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsr
KQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAg
ICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRl
c3QgY2FzZSB3aXRoIGVtb2ppLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NSIpOwogICAgICAgICB2YXIgZW1vamlUZXh0
TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJS
YW5nZSkiLCAiNCIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwogICAgICAgICAvLyBNYWtl
IHN1cmUgbmF2aWdhdGluZyBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGlzIGJ5IGVtb2ppLgog
ICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKGVtb2ppVGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgyLCBw
cmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIs
ICIn8J+YjyciKTsKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YgyciKTsKLSAgICAgICAgCisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSki
LCAiJ/CfmIMnIik7CisKICAgICAgICAgLy8gVGVzdCBjYXNlIHdpdGggY29sbGFwc2VkIHdoaXRl
c3BhY2UuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInRleHQ2Iik7CiAgICAgICAgIHZhciBjb2xsYXBzZWRXaGl0ZXNwYWNlTWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNl
TWFya2VyUmFuZ2UpIiwgIjMiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7
CiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0g
Zm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAgICAgICBz
aG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsK
KyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQpKSIsICInYSciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7
CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIiwgIidiJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOwogICAgICAgICByZXN1bHQg
PSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwg
IicgJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwg
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOwotICAgICAg
ICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSIsICInYSciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCByZXBsYWNl
ZCBlbGVtZW50cyAoc2hvdWxkIHVzZSBvYmplY3QgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4KICAg
ICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgidGV4dDciKTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNmaWxlJyIpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFu
Z2UpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgewogICAgICAgICAgICAg
cHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtl
ciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAg
ICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IidcdUZGRkMnIik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1h
cmtlcjsKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtl
cihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKIAotICAgICAg
ICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
b2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAg
ICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJl
dmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRN
YXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0
aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikg
ewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAg
ICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3Vz
TWFya2VyKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVy
biB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAgICAg
ICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0K
KyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmls
aXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQotCiA8L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAppbmRleCAyOTI2
NDFhN2UwMzguLjVhMGEzMmMyOGQ3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
dGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKQEAgLTEs
NTIgKzEsNDAgQEAKLXRleHQKLQotdGV4dDEKLWMgIGQKLQotY2FuJ3Qgc2VsZWN0Ci1hYmMgZGUg
Zgot8J+Yg/CfmI8KLQotYSBiCi0KLWF1ZGlvZmlsZQotCiBUaGlzIHRlc3RzIHRoZSBuZXh0L3By
ZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5Lgog
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFT
UyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1
YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAndCcgKyBuZXdsaW5lCi1QQVNTIHRleHQyLnRleHRNYXJrZXJSYW5n
ZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSBpcyA1CitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQor
UEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5p
c0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnICsgbmV3bGluZQorUEFTUzogdGV4dDIu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpID09PSA1CiBPYmplY3Qgc3Ry
aW5nIGZvciByYW5nZTogYyBbQVRUQUNITUVOVF0gZAotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdkJwotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICcxJwotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMp
IGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSBpcyB0cnVlCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZicKLVBBU1Mg
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdhJwotUEFTUyB0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iPJwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iDJwotUEFTUyB0ZXh0
LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIGlz
IDMKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBB
U1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYicKLVBBU1MgdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSBpcyAnYXVkaW/vv7xmaWxlJwotUEFTUyB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcKLVBBU1MgdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfvv7wnCitQQVNTOiB0ZXh0
Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZCcKK1BBU1M6IHRl
eHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICcxJworUEFTUzog
dGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2VjdCcKK1BB
U1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdzZWwn
CitQQVNTOiAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgPT09
IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hp
bGRBdEluZGV4KDIpKSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpID09PSAnZicKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iPJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmIMnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxl
bmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpID09PSAzCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2InCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dE1hcmtlclJhbmdlKSA9PT0gJ2F1ZGlv77+8ZmlsZScKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKKwogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>463978</attachid>
            <date>2022-12-10 12:48:59 -0800</date>
            <delta_ts>2022-12-12 18:25:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221210154857.patch</filename>
            <type>text/plain</type>
            <size>90861</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBmOTI4YWIzNDExMDdiY2Q0YWFlZDliODMyNDY3MzdlNDZlOGE4N2M3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTggKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8ICA4MiArKystLQogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDEzICsKIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCB8IDI4NCArKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8ICA5
NSArKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tICB8
ICAzOSArKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8
IDEyMyArKysrLS0tLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50
eHQgIHwgIDE5ICstCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwgICAgICAg
ICAgfCAgNTEgKystLQogLi4ucmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0IHwgIDE1ICstCiAuLi5zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0
bWwgfCAgNjMgKystLQogLi4uYXJrZXItcmFuZ2UtZm9yLW5vZGUtd2l0aG91dC1jaGlsZHJlbi5o
dG1sIHwgIDMwICstCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0
ICAgfCAyMTAgKysrKystLS0tLS0tLQogLi4uL21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5n
ZS5odG1sICAgICAgIHwgIDQ4ICsrLQogLi4uLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUt
ZXhwZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4
dC1ub2RlLmh0bWwgfCAgNDAgKy0tCiAuLi4vdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1s
ICAgICAgICAgICAgfCAxNzUgKysrKystLS0tLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91cy1u
ZXh0LWV4cGVjdGVkLnR4dCAgICB8ICA3OCArKy0tLQogMjAgZmlsZXMgY2hhbmdlZCwgODc1IGlu
c2VydGlvbnMoKyksIDUxNSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0
NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJD
b2NvYS5tbQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNl
L1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggNzVlYTBmM2Y3Y2NiLi4xODkyNjgyMzQ5OTYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXMudHh0CkBAIC00NTUsNiArNDU1LDcgQEAgTW9kdWxlcy93ZWJ4ci9YUlNlc3Npb25F
dmVudC5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFnZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhMb2dn
ZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCithY2Nlc3NpYmlsaXR5L0FY
VGV4dE1hcmtlci5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAog
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAogYWNjZXNzaWJpbGl0
eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRl
eCA3ZjEzZTQ4MGFjZmMuLjMyZTUyOTMwNWFhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
U291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBA
IC0xMjYsNiArMTI2LDcgQEAgTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXpl
clRhc2subW0KIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9j
ay5tbQogTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UubW0KIE1v
ZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KK2FjY2Vzc2li
aWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0gQG5vLXVuaWZ5CiBhY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDg0MGMyMzdhZjUzZS4uNTQ0OWM5YjU5YmFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTI0LDYg
KzQ1MjQsOCBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5w
bSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1
MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAv
KiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5n
cy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8q
IElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyMDhBMDI5Mzc5QzZF
MDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CisJCUMwRTIwOEI2MjkzOTNERDAwMEMw
RDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBBWFRleHRNYXJr
ZXJDb2NvYS5tbSAqLzsgfTsKIAkJQzBFMkYzMjcyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vz
c2liaWxpdHkudGJkIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBFMkYzMjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFdlYWssICk7IH07IH07CiAJCUMwRjJBNDQxMTM4
NjlBQUIwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJv
Y2Vzc29yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCUMxMDVEQTY0MEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzEwNURBNjMwRjNB
QTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmggKi87IH07CkBAIC0xNjM3NCw2
ICsxNjM3Niw5IEBACiAJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9i
amVjdE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07
IHBhdGggPSBtYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzA4RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
QzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhU
ZXh0TWFya2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBBWFRleHRNYXJrZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBF
MkYzMjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1i
YXNlZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRo
ID0gdXNyL2xpYi9saWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07
CiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlwdC5wZXJs
OyBuYW1lID0gcHJlcHJvY2Vzc29yLnBtOyBwYXRoID0gc2NyaXB0cy9wcmVwcm9jZXNzb3IucG07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMxMDVEQTYxMEYzQUE2OEYwMDFERDQ0RiAv
KiBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBUZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHA7IHBhdGggPSAuLi8uLi9QQUwv
cGFsL3RleHQvVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMjEzNDIsNiArMjEzNDcsNyBAQAogCQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAy
OTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRy
ZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICovLAogCQkJCUFB
QTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8sCiAJCQkJMjlBRTIxMjkyMUFCOUVDQjAw
ODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQkyOUE4MTIwNTBGQkI5QjUyMDA1MTAyOTMg
LyogbWFjICovLApAQCAtMjE0MTgsNiArMjE0MjQsOCBAQAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQw
MDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAv
KiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyog
QVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRl
eHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRN
YXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAzMDAyOEM1OTIgLyogRm9yY2Vk
QWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCiAJCQkpOwpAQCAtMzEzNjUsNiArMzEzNzMsMTQgQEAK
IAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9OworCQlDMEUy
MDhCNzI5MzkzRTFBMDBDMEQyRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQQlhHcm91cDsK
KwkJCWNoaWxkcmVuID0gKAorCQkJCUMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBBWFRleHRN
YXJrZXJDb2NvYS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlzb3VyY2VUcmVl
ID0gIjxncm91cD4iOworCQl9OwogCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMgLyogYXVkaW8g
Ki8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAtMzQ5MjksNiAr
MzQ5NDUsNyBAQAogCQkJCTI5QUUyMTM1MjFBQkE0OEEwMDg2OTI4MyAvKiBBWElzb2xhdGVkT2Jq
ZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUFFMjEyRDIxQUI5RUVCMDA4NjkyODMgLyogQVhJ
c29sYXRlZFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4MEZCQjlDMUQwMDUxMDI5
MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMEUyMDhBMjI5Mzc5QzZG
MDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5MUM5RjJGOTFB
RTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCTE0NzdFNzc3MEJGNDEzNEEwMDE1Mjg3MiAvKiBCYWNrRm9yd2FyZENhY2hlLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTc0MUQwRjBCMDcyNTlBMDBFRDQ0MkMgLyogQmFja0ZvcndhcmRD
bGllbnQuaCBpbiBIZWFkZXJzICovLApAQCAtNDAxODAsNiArNDAxOTcsNyBAQAogCQkJCTA3MzhF
NUVDMjQ5OTgzOTAwMERBMTAxQyAvKiBBVk91dHB1dERldmljZU1lbnVDb250cm9sbGVyVGFyZ2V0
UGlja2VyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJQ0QzMzZGNjExN0Y5RjY0NzAwREREQ0QwIC8q
IEFWVHJhY2tQcml2YXRlQVZGT2JqQ0ltcGwubW0gaW4gU291cmNlcyAqLywKIAkJCQk0OTk2QzBG
NjI3MTc3NDg4MDAyQzEyNUQgLyogQVZWaWRlb0NhcHR1cmVTb3VyY2UubW0gaW4gU291cmNlcyAq
LywKKwkJCQlDMEUyMDhCNjI5MzkzREQwMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0g
aW4gU291cmNlcyAqLywKIAkJCQlDREY0QjcxNTFFMDBCN0U1MDBFMjM1QTIgLyogQ0RNLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUNEQjcwNDVCMUY3NDY1QTEwMDM5MjNERiAvKiBDRE1GYWlyUGxh
eVN0cmVhbWluZy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDREMyMjQyODFGNzU2OTY2MDA1RjA3
N0IgLyogQ0RNSW5zdGFuY2VGYWlyUGxheVN0cmVhbWluZ0FWRk9iakMubW0gaW4gU291cmNlcyAq
LywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmlu
ZGV4IGM1Yjk3MjVmYTM0Yi4uYmIyZTgyZjYxZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRl
ICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNs
dWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlBUklBR3JpZC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENl
bGwuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKQEAgLTI1MTUsMzMg
KzI1MTYsMzUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFy
YWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXIKIHsKICAgICBpZiAoY2hhcmFjdGVy
T2Zmc2V0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9k
ZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50Pigq
ZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dv
cmRGaWVsZCgpKSB7CisKKyAgICBOb2RlKiBub2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7Cisg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkgewogICAgICAgICB0ZXh0TWFya2VyRGF0
YS5pZ25vcmVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBSZWZQ
dHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7
Ci0gICAgaWYgKCFvYmopCisKKyAgICBhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZShub2RlKTsK
KyAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgLy8gQ29udmVy
dCB0byB2aXNpYmxlIHBvc2l0aW9uLgotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b24gPSB2aXNpYmxlUG9zaXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7
CisgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gcm9tQ2hhcmFjdGVy
T2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaW50IHZwT2Zmc2V0ID0gMDsKICAgICBpZiAo
IXZpc2libGVQb3NpdGlvbi5pc051bGwoKSkgewogICAgICAgICBQb3NpdGlvbiBkZWVwUG9zID0g
dmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAgICAgIHZwT2Zmc2V0ID0gZGVl
cFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIH0KLSAgICAKLSAgICB0ZXh0TWFy
a2VyRGF0YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUg
PSBkb21Ob2RlOworCisgICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iamVjdC0+b2JqZWN0SUQo
KTsKKyAgICB0ZXh0TWFya2VyRGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7
CisgICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IG5vZGU7CiAgICAgdGV4dE1hcmtlckRhdGEuY2hh
cmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICB0ZXh0TWFya2VyRGF0
YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXg7CiAgICAg
dGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gdnBPZmZzZXQ7CiAgICAgdGV4dE1hcmtlckRhdGEuYWZm
aW5pdHkgPSB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKLSAgICAKLSAgICB0aGlzLT5zZXRO
b2RlSW5Vc2UoZG9tTm9kZSk7CisgICAgLy8gU2luY2UgVGV4dE1hcmtlckRhdGEuaWdub3JlZCBp
cyBub3QgYXNzaWduZWQgaGVyZSwgaXQgYWxsb3dzIHRvIHJldHVybiB2YWxpZCBUZXh0TWFya2Vy
cyBmb3IgaWdub3JlZCBBWCBvYmplY3RzLgorCisgICAgc2V0Tm9kZUluVXNlKG5vZGUpOwogfQog
CiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNl
dEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0LCBib29sIGVu
dGVyVGV4dENvbnRyb2xzKQpAQCAtMjY2MSw3ICsyNjY0LDcgQEAgYm9vbCBBWE9iamVjdENhY2hl
OjpzaG91bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29u
c3QgQ2gKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKKwogdm9pZCBBWE9iamVjdENh
Y2hlOjp0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEm
IHRleHRNYXJrZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkK
IHsKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKQEAgLTI2NzMs
NyArMjY3Niw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hh
cmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFyCiAgICAgICAgIGlmIChzaG91bGRT
a2lwQm91bmRhcnkocHJldmlvdXMsIG5leHQpKQogICAgICAgICAgICAgbmV4dCA9IG5leHRDaGFy
YWN0ZXJPZmZzZXQobmV4dCwgZmFsc2UpOwogICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgbmV4dCk7Ci0gICAgICAgIAorCiAgICAgICAgIC8v
IFdlIHNob3VsZCBza2lwIG5leHQgQ2hhcmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhl
IHNhbWUuCiAgICAgICAgIGlmICghbGVuZ3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFy
YWN0ZXJPZmZzZXRzKHByZXZpb3VzLCBuZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51
ZSA9IHRydWU7CkBAIC0yNjgxLDYgKzI2ODQsMjMgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0
TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXIK
ICAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsK
IH0KIAorQVhUZXh0TWFya2VyIEFYT2JqZWN0Q2FjaGU6Om5leHRUZXh0TWFya2VyKGNvbnN0IEFY
VGV4dE1hcmtlciYgbWFya2VyKQoreworICAgIEFYVGV4dE1hcmtlciByZXN1bHQ7CisKKyAgICBU
ZXh0TWFya2VyRGF0YSBkYXRhIHsgbWFya2VyLmRhdGEoKSB9OworICAgIHRleHRNYXJrZXJEYXRh
Rm9yTmV4dENoYXJhY3Rlck9mZnNldChkYXRhLCBtYXJrZXIpOworICAgIGlmIChkYXRhLm5vZGUg
IT0gbWFya2VyLm1fZGF0YS5ub2RlKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBOb2RlIGNoYW5n
ZWQsIG5lZWQgdG8gdXBkYXRlIHRoZSBvYmplY3Qgd3JhcHBlci4KKyAgICAgICAgaWYgKGF1dG8q
IG9iamVjdCA9IGdldE9yQ3JlYXRlKGRhdGEubm9kZSkpCisgICAgICAgICAgICBkYXRhLm9iamVj
dFdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICB9CisKKyAgICByZXN1bHQubV9heE9i
amVjdENhY2hlID0gdGhpczsKKyAgICByZXN1bHQubV9kYXRhID0gZGF0YTsKKyAgICByZXR1cm4g
cmVzdWx0OworfQorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yUHJldmlv
dXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKICAgICBDaGFyYWN0ZXJPZmZzZXQg
cHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CkBAIC0yNjk4LDYgKzI3MTgsMjMgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KFRl
eHRNYXJrZXJEYXRhJiB0ZXgKICAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8
IHNob3VsZENvbnRpbnVlKTsKIH0KIAorQVhUZXh0TWFya2VyIEFYT2JqZWN0Q2FjaGU6OnByZXZp
b3VzVGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBWFRleHRN
YXJrZXIgcmVzdWx0OworCisgICAgVGV4dE1hcmtlckRhdGEgZGF0YSB7IG1hcmtlci5kYXRhKCkg
fTsKKyAgICB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGRhdGEsIG1h
cmtlcik7CisgICAgaWYgKGRhdGEubm9kZSAhPSBtYXJrZXIubV9kYXRhLm5vZGUpIHsKKyAgICAg
ICAgLy8gU2luY2UgdGhlIE5vZGUgY2hhbmdlZCwgbmVlZCB0byB1cGRhdGUgdGhlIG9iamVjdCB3
cmFwcGVyLgorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gZ2V0T3JDcmVhdGUoZGF0YS5ub2Rl
KSkKKyAgICAgICAgICAgIGRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwor
ICAgIH0KKworICAgIHJlc3VsdC5tX2F4T2JqZWN0Q2FjaGUgPSB0aGlzOworICAgIHJlc3VsdC5t
X2RhdGEgPSBkYXRhOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIE5vZGUqIEFYT2JqZWN0Q2Fj
aGU6Om5leHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0CiB7CiAgICAgaWYgKCFub2RlKQpAQCAtMjgx
NiwxOCArMjg1MywyMiBAQCBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENh
Y2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjbwogICAgICAgICByZXR1cm4g
dGV4dE1hcmtlckRhdGE7CiAgICAgfQogCi0gICAgLy8gZmluZCBvciBjcmVhdGUgYW4gYWNjZXNz
aWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZQotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
ZG9tTm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgLy8gRmluZCBvciBjcmVh
dGUgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZS4KKyAgICBhdXRvKiBjYWNo
ZSA9IGRvbU5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUp
CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlP
YmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKKworICAgIGF1dG8gb2Jq
ZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOworICAgIGlmICghb2JqZWN0KQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6
ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5
dGUtZXF1aXZhbGVuY2UuCiAgICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJl
Y2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCiAgICAgVGV4dE1hcmtl
ckRhdGEgdGV4dE1hcmtlckRhdGE7CiAgICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4
dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0
TWFya2VyRGF0YS5heElEID0gb2JqLT5vYmplY3RJRCgpOworCisgICAgdGV4dE1hcmtlckRhdGEu
YXhJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5vYmplY3RXcmFw
cGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CiAgICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5v
ZGU7CiAgICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpOwogICAgIHRleHRNYXJrZXJEYXRhLmFuY2hvclR5cGUgPSBkZWVwUG9zLmFuY2hv
clR5cGUoKTsKQEAgLTI4MzUsNiArMjg3Niw3IEBAIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRh
dGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvCiAK
ICAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zm
c2V0OwogICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJP
ZmZzZXQuc3RhcnRJbmRleDsKKyAgICAvLyBTaW5jZSBUZXh0TWFya2VyRGF0YS5pZ25vcmVkIGlz
IG5vdCBhc3NpZ25lZCBoZXJlLCBpdCBhbGxvd3MgdG8gcmV0dXJuIHZhbGlkIFRleHRNYXJrZXJz
IGZvciBpZ25vcmVkIEFYIG9iamVjdHMuCiAKICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKGRvbU5v
ZGUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmlu
ZGV4IDUzNWU3MTQyMjIxZi4uZDQwODljYzhmMGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBUZXh0U3Ry
ZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYVGV4dE1hcmtlcjsKIGNsYXNz
IERvY3VtZW50OwogY2xhc3MgSFRNTEFyZWFFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxlRWxlbWVu
dDsKQEAgLTU2LDYgKzU3LDcgQEAgY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFZpc2libGVQb3Np
dGlvbjsKIGNsYXNzIFdpZGdldDsKIAorLy8gRklYTUU6IE1vdmUgaW50byBBWFRleHRNYXJrZXIg
Y2xhc3MuCiBzdHJ1Y3QgVGV4dE1hcmtlckRhdGEgewogICAgIEFYSUQgYXhJRDsKIApAQCAtNjcs
NiArNjksMTQgQEAgc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKICAgICBpbnQgY2hhcmFjdGVyU3Rh
cnRJbmRleCB7IDAgfTsKICAgICBpbnQgY2hhcmFjdGVyT2Zmc2V0IHsgMCB9OwogICAgIGJvb2wg
aWdub3JlZCB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3JhcHBlciB7IG51bGxwdHIgfTsKKyNlbGlmIFBMQVRG
T1JNKFdJTikKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3JhcHBlcjsK
KyNlbGlmIFVTRShBVFNQSSkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIG9iamVjdFdy
YXBwZXI7CisjZW5kaWYKIH07CiAKIHN0cnVjdCBDaGFyYWN0ZXJPZmZzZXQgewpAQCAtMTQ3LDYg
KzE1Nyw3IEBAIGNsYXNzIEFYT2JqZWN0Q2FjaGUgOiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhP
YmplY3RDYWNoZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEFYT2JqZWN0Q2FjaGUpOyBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgQVhJc29sYXRlZFRyZWU7
CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0m
LCBBWE9iamVjdENhY2hlJik7CisgICAgZnJpZW5kIEFYVGV4dE1hcmtlcjsKIHB1YmxpYzoKICAg
ICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0Q2FjaGUo
KTsKQEAgLTIzNiw3ICsyNDcsOSBAQCBwdWJsaWM6CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0TWFy
a2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAg
ICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlciBuZXh0VGV4dE1h
cmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yUHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFya2VyKGNvbnN0IEFYVGV4dE1h
cmtlciYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2Vy
RGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIC8vIFVzZSBpZ25vcmVO
ZXh0Tm9kZVN0YXJ0L2lnbm9yZVByZXZpb3VzTm9kZUVuZCB0byBkZXRlcm1pbmUgdGhlIGJlaGF2
aW9yIHdoZW4gd2UgYXJlIGF0IG5vZGUgYm91bmRhcnkuIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uYWI1YmFiZTBjZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBAIC0wLDAgKzEsMjg0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBWFRleHRNYXJrZXIuaCIK
KworI2luY2x1ZGUgIkhUbUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3Qu
aCIKKyNpbmNsdWRlIDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworQVhUZXh0TWFya2VyOjpBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2Fj
aGUsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQorICAgIDogbV9heE9i
amVjdENhY2hlKGNhY2hlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBQb3Np
dGlvbiBkZWVwUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAg
ICBOb2RlKiBkb21Ob2RlID0gZGVlcFBvc2l0aW9uLmFuY2hvck5vZGUoKTsKKyAgICBBU1NFUlQo
ZG9tTm9kZSk7CisgICAgaWYgKCFkb21Ob2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAo
aXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
Ly8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVycmluZyB0
byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCisgICAgLy8g
c2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQgdGhl
IG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCisgICAgYXV0byBjaGFyYWN0ZXJP
ZmZzZXQgPSBtX2F4T2JqZWN0Q2FjaGUtPmNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRp
b24odmlzaWJsZVBvc2l0aW9uKTsKKy8qCisgaWYgKGRlZXBQb3NpdGlvbi5hbmNob3JUeXBlKCkg
PT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcgorICAgICAgICB8fCBkZWVwUG9zaXRp
b24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikgewor
ICAgICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKKyAgICAgICAgdGV4dE1hcmtl
ckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisqLworICAgIHNldERhdGEoZG9tTm9kZSwgZGVlcFBv
c2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGRlZXBQb3NpdGlvbi5hbmNob3JUeXBl
KCksIHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpLCBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRl
eCwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCk7CisgICAgbV9heE9iamVjdENhY2hlLT5zZXROb2Rl
SW5Vc2UoZG9tTm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFYT2JqZWN0
Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKKyAg
ICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOworICAgIGlmIChpczxI
VE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
KmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CisgICAgICAgIG1fZGF0YS5pZ25vcmVkID0g
dHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIENvbnZlcnQgdG8gdmlzaWJs
ZSBwb3NpdGlvbi4KKyAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IG1fYXhPYmplY3RDYWNoZS0+
dmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAg
IHVuc2lnbmVkIHZwT2Zmc2V0ID0gMDsKKyAgICBpZiAoIXZpc2libGVQb3NpdGlvbi5pc051bGwo
KSkKKyAgICAgICAgdnBPZmZzZXQgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5k
ZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOworCisgICAgc2V0RGF0YShkb21Ob2RlLCB2cE9mZnNl
dCwgdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5jaG9yVHlwZSgpLCB2aXNpYmxl
UG9zaXRpb24uYWZmaW5pdHkoKSwgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rl
ck9mZnNldC5vZmZzZXQpOworICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKGRvbU5v
ZGUpOworfQorCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNo
ZSwgTm9kZSogbm9kZSkKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgbV9kYXRhLm5vZGUgPSBub2RlOworICAgIG1fYXhP
YmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKG1fZGF0YS5ub2RlKTsKK30KKworQVhUZXh0TWFya2Vy
OjpBWFRleHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJSZWYpCit7CisgICAgaWYg
KCF0ZXh0TWFya2VyUmVmKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoQ0ZHZXRUeXBl
SUQodGV4dE1hcmtlclJlZikgPT0gQVhUZXh0TWFya2VyR2V0VHlwZUlEKCkpOworICAgIGlmIChD
RkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSAhPSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKEFYVGV4dE1hcmtlckdldExlbmd0aCh0ZXh0TWFy
a2VyUmVmKSA9PSBzaXplb2YobV9kYXRhKSk7CisgICAgaWYgKEFYVGV4dE1hcmtlckdldExlbmd0
aCh0ZXh0TWFya2VyUmVmKSAhPSBzaXplb2YobV9kYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgbWVtY3B5KCZtX2RhdGEsIEFYVGV4dE1hcmtlckdldEJ5dGVQdHIodGV4dE1hcmtlclJlZiks
IHNpemVvZihtX2RhdGEpKTsKKworICAgIEFjY2Vzc2liaWxpdHk6OnBlcmZvcm1GdW5jdGlvbk9u
TWFpblRocmVhZChbdGhpc10gKCkgeworICAgICAgICBpZiAoIW5vZGUoKSkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBtX2F4T2JqZWN0Q2FjaGUgPSBub2RlKCktPmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpOworICAgIH0pOworfQorCitSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVm
PiBBWFRleHRNYXJrZXI6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRv
cHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4
KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOworfQorCit2b2lkIEFYVGV4dE1hcmtlcjo6c2V0
RGF0YShOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIFBvc2l0aW9uOjpBbmNob3JUeXBlIGFu
Y2hvclR5cGUsIEFmZmluaXR5IGFmZmluaXR5LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4
LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKyAgICBBU1NFUlQobV9heE9iamVjdENhY2hlKTsKKworICAgIGlmICghbm9kZSkKKyAgICAg
ICAgcmV0dXJuOworCisgICAgbV9kYXRhLm5vZGUgPSBub2RlOworICAgIG1fZGF0YS5vZmZzZXQg
PSBvZmZzZXQ7CisgICAgbV9kYXRhLmFuY2hvclR5cGUgPSBhbmNob3JUeXBlOworICAgIG1fZGF0
YS5hZmZpbml0eSA9IGFmZmluaXR5OworCisgICAgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgg
PSBjaGFyYWN0ZXJTdGFydEluZGV4OworICAgIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFy
YWN0ZXJPZmZzZXQ7CisKKyAgICBhdXRvKiBvYmplY3QgPSBtX2F4T2JqZWN0Q2FjaGUtPmdldE9y
Q3JlYXRlKG5vZGUpOworICAgIG1fZGF0YS5heElEID0gb2JqZWN0LT5vYmplY3RJRCgpOworICAg
IG1fZGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7Cit9CisKK0FYVGV4dE1h
cmtlcjo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzTnVsbCgpIHx8IG5vZGUoKS0+aXNQc2V1ZG9FbGVt
ZW50KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAg
ICBpZiAobV9kYXRhLmFuY2hvclR5cGUgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvcikKKyAgICAgICAgcG9zaXRpb24gPSBQb3NpdGlvbihub2RlKCksIG1fZGF0YS5vZmZzZXQs
IG1fZGF0YS5hbmNob3JUeXBlKTsKKyAgICBlbHNlCisgICAgICAgIHBvc2l0aW9uID0gUG9zaXRp
b24obm9kZSgpLCBtX2RhdGEuYW5jaG9yVHlwZSk7CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlz
aWJsZVBvc2l0aW9uKHBvc2l0aW9uLCBtX2RhdGEuYWZmaW5pdHkpOworICAgIGF1dG8gZGVlcFBv
c2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CisgICAgaWYgKGRlZXBQ
b3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIHJlbmRl
cmVyID0gZGVlcFBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYg
KCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGF1dG8qIGNhY2hlID0gcmVu
ZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmIChjYWNoZSAmJiAhY2Fj
aGUtPm1faWRzSW5Vc2UuY29udGFpbnMobV9kYXRhLmF4SUQpKQorICAgICAgICByZXR1cm4geyB9
OworCisgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbjsKK30KKworQVhUZXh0TWFya2VyOjpvcGVy
YXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG5vZGUoKSwgbV9kYXRhLmNoYXJhY3Rl
clN0YXJ0SW5kZXgsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAgIC8vIFdoZW4gd2UgYXJl
IGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVwc3RyZWFtLCBpdCBt
ZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZS4K
KyAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IGl0IHdp
bGwgbWF0Y2ggdGhlIFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5pdHkgPT0gQWZmaW5pdHk6
OlVwc3RyZWFtKQorICAgICAgICByZXR1cm4gbV9heE9iamVjdENhY2hlLT5wcmV2aW91c0NoYXJh
Y3Rlck9mZnNldChyZXN1bHQsIGZhbHNlKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWFRleHRNYXJrZXI6Om9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChpc0lnbm9yZWQoKSB8fCBpc051bGwoKSkK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gbV9heE9iamVjdENhY2hlLT5n
ZXQobm9kZSgpKTsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIEFYVGV4dE1hcmtl
cjo6b2JqZWN0V3JhcHBlcigpIGNvbnN0Cit7CisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVs
bCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBtX2RhdGEub2JqZWN0
V3JhcHBlcjsKK30KKworI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKK1N0cmluZyBBWFRleHRN
YXJrZXI6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAg
ICAgICAgcmV0dXJuICI8bnVsbD4iX3M7CisKKyAgICBhdXRvIHNlcGFyYXRvciA9ICIsICI7Cisg
ICAgcmV0dXJuIG1ha2VTdHJpbmcobm9kZSgpLT5kZWJ1Z0Rlc2NyaXB0aW9uKCkKKyAgICAgICAg
LCBzZXBhcmF0b3IsICJvZmZzZXQgIiwgbV9kYXRhLm9mZnNldAorICAgICAgICAsIHNlcGFyYXRv
ciwgIkFuY2hvclR5cGUgIiwgbV9kYXRhLmFuY2hvclR5cGUKKyAgICAgICAgLCBzZXBhcmF0b3Is
ICJBZmZpbml0eSAiLCBtX2RhdGEuYWZmaW5pdHkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFy
YWN0ZXJTdGFydEluZGV4ICIsIG1fZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4CisgICAgICAgICwg
c2VwYXJhdG9yLCAiY2hhcmFjdGVyT2Zmc2V0ICIsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQKKyAg
ICAgICAgLCBzZXBhcmF0b3IsICJheElEICIsIGF4SUQoKS5sb2dnaW5nU3RyaW5nKCkKKyAgICAg
ICAgLCBzZXBhcmF0b3IsICJpc0lnbm9yZWQgIiwgaXNJZ25vcmVkKCkKKyAgICApOworfQorI2Vu
ZGlmCisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJS
YW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VSZWYpCisgICAgOiBzdGFydChBWFRleHRNYXJrZXJSYW5n
ZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFya2VyUmFuZ2VSZWYpKQorICAgICwgZW5kKEFYVGV4dE1h
cmtlclJhbmdlQ29weUVuZE1hcmtlcih0ZXh0TWFya2VyUmFuZ2VSZWYpKQoreworICAgIEFTU0VS
VChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmFuZ2VSZWYpID09IEFYVGV4dE1hcmtlclJhbmdlR2V0
VHlwZUlEKCkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoQVhP
YmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSkKKyAg
ICA6IHN0YXJ0KGNhY2hlLCByYW5nZS5zdGFydCkKKyAgICAsIGVuZChjYWNoZSwgcmFuZ2UuZW5k
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKGNhY2hlKTsKK30K
KworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYgcmFuZ2UpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybjsK
KworICAgIHN0YXJ0ID0gQVhUZXh0TWFya2VyKGNhY2hlLCBjYWNoZS0+c3RhcnRPckVuZENoYXJh
Y3Rlck9mZnNldEZvclJhbmdlKCpyYW5nZSwgdHJ1ZSkpOworICAgIGVuZCA9IEFYVGV4dE1hcmtl
cihjYWNoZSwgY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2Us
IGZhbHNlKSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShjb25z
dCBBWFRleHRNYXJrZXImIHMsIGNvbnN0IEFYVGV4dE1hcmtlciYgZSkKKyAgICA6IHN0YXJ0KHMp
CisgICAgLCBlbmQoZSkKK3sKK30KKworUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBB
WFRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1PYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBh
ZG9wdENGKEFYVGV4dE1hcmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQKKyAgICAg
ICAgLCBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZzdGFydC5tX2RhdGEsIHNpemVvZihzdGFydC5tX2RhdGEpKSkuZ2V0KCkKKyAg
ICAgICAgLCBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAo
Y29uc3QgVUludDgqKSZlbmQubV9kYXRhLCBzaXplb2YoZW5kLm1fZGF0YSkpKS5nZXQoKQorICAg
ICkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIHsg
c3RhcnQsIGVuZCB9OworfQorCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJr
ZXJSYW5nZTo6c2ltcGxlUmFuZ2UoKSBjb25zdAoreworICAgIGF1dG8gc3RhcnRCb3VuZGFyeVBv
aW50ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnQpOworICAgIGF1dG8gZW5kQm91bmRhcnlQb2lu
dCA9IG1ha2VCb3VuZGFyeVBvaW50KGVuZCk7CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5UG9pbnQg
fHwgIWVuZEJvdW5kYXJ5UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
cmV0dXJuIHsgeyAqc3RhcnRCb3VuZGFyeVBvaW50LCAqZW5kQm91bmRhcnlQb2ludCB9IH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4u
MDQ1YjIxZjE3ODA1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFRleHRNYXJrZXIuaApAQCAtMCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwor
ICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEFjY2Vzc2liaWxpdHlPYmplY3Q7CitzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0
OworCitjbGFzcyBBWFRleHRNYXJrZXIgeworICAgIGZyaWVuZCBjbGFzcyBBWE9iamVjdENhY2hl
OworICAgIGZyaWVuZCBjbGFzcyBBWFRleHRNYXJrZXJSYW5nZTsKK3B1YmxpYzoKKyAgICAvLyBD
b25zdHJ1Y3RvcnMKKyAgICBBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOworICAgIEFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqLCBOb2RlKik7
CisgICAgQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZik7CisgICAgQVhUZXh0TWFya2VyKCkg
PSBkZWZhdWx0OworCisgICAgYm9vbCBpc051bGwoKSBjb25zdDsKKyAgICBSZXRhaW5QdHI8QVhU
ZXh0TWFya2VyUmVmPiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0OworCisgICAgb3BlcmF0b3IgVmlz
aWJsZVBvc2l0aW9uKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29u
c3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZv
cm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmplY3QoKSBjb25zdDsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3Jh
cHBlcigpIGNvbnN0OworCisgICAgVGV4dE1hcmtlckRhdGEgY29uc3QmIGRhdGEoKSBjb25zdCB7
IHJldHVybiBtX2RhdGE7IH0KKyAgICBOb2RlKiBub2RlKCkgY29uc3QgeyByZXR1cm4gbV9kYXRh
Lm5vZGU7IH0KKyAgICBBWElEIGF4SUQoKSBjb25zdDsKKyAgICBib29sIGlzSWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pZ25vcmVkOyB9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIHZvaWQgc2V0RGF0YShOb2RlKiwgdW5zaWduZWQgb2Zmc2V0LCBQb3NpdGlvbjo6
QW5jaG9yVHlwZSwgQWZmaW5pdHksIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2ln
bmVkIGNoYXJhY3Rlck9mZnNldCk7CisKKyAgICBBWE9iamVjdENhY2hlKiBtX2F4T2JqZWN0Q2Fj
aGUgeyBudWxscHRyIH07CisgICAgVGV4dE1hcmtlckRhdGEgbV9kYXRhOworfTsKKworY2xhc3Mg
QVhUZXh0TWFya2VyUmFuZ2UgeworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycy4KKyAgICBB
WFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJlZik7CisgICAgQVhUZXh0TWFya2Vy
UmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAg
QVhUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+Jik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiwg
Y29uc3QgQVhUZXh0TWFya2VyJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7
CisKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBsYXRmb3JtT2JqZWN0KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmFuZ2VSZWYoKSBjb25zdCB7IHJldHVy
biBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7IH0KKyAgICBvcGVyYXRvciBWaXNpYmxl
UG9zaXRpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNp
bXBsZVJhbmdlKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFz
dGFydC5pc051bGwoKSAmJiAhZW5kLmlzTnVsbCgpOyB9CisKKyAgICBBWFRleHRNYXJrZXIgc3Rh
cnQ7CisgICAgQVhUZXh0TWFya2VyIGVuZDsKK307CisKK2lubGluZSBib29sIEFYVGV4dE1hcmtl
cjo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fYXhPYmplY3RDYWNoZSB8fCAhbm9k
ZSgpIHx8ICFtX2F4T2JqZWN0Q2FjaGUtPmlzTm9kZUluVXNlKG5vZGUoKSk7Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uZTc4MjgyZjcyMDVmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpAQCAtMCwwICsx
LDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQVhUZXh0
TWFya2VyLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQVhJ
RCBBWFRleHRNYXJrZXI6OmF4SUQoKSBjb25zdAoreworICAgIHJldHVybiBbb2JqZWN0V3JhcHBl
cigpIGlkZW50aWZpZXJdOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDQ1NDhlMmQyZTA0YS4uNjZiNTgzMTI0
ZWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzMsNiAr
MzMsNyBAQAogCiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5o
IgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUxpc3QuaCIKQEAgLTcxNywzOCArNzE4LDI2IEBAIHN0YXRpYyBzdGQ6OnBhaXI8c3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFj
Y2VzCiAKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJzCiAKLXN0YXRpYyBSZXRhaW5Q
dHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9i
amVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0
aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXIoQVhPYmplY3RDYWNo
ZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQogewogICAgIGlmICghY2FjaGUp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtl
ckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRh
LmF4SUQpCisKKyAgICBhdXRvIG5leHRNYXJrZXIgPSBjYWNoZS0+bmV4dFRleHRNYXJrZXIobWFy
a2VyKTsKKyAgICBpZiAoIW5leHRNYXJrZXIuYXhJRCgpLmlzVmFsaWQoKSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFy
a2VyRGF0YSkpKTsKKyAgICByZXR1cm4gbmV4dE1hcmtlci5wbGF0Zm9ybU9iamVjdCgpOwogfQog
Ci1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91
c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFy
a2VyKQogewogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRh
Rm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNl
dCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkp
OwotfQogCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiluZXh0VGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICBy
ZXR1cm4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKLX0KLQotLSAoUmV0YWluUHRy
PEFYVGV4dE1hcmtlclJlZj4pcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihD
aGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBwcmV2aW91c1Rl
eHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBhdXRvIHByZXZpb3VzTWFya2VyID0gY2Fj
aGUtPnByZXZpb3VzVGV4dE1hcmtlcihtYXJrZXIpOworICAgIGlmICghcHJldmlvdXNNYXJrZXIu
YXhJRCgpLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKyAgICByZXR1cm4gcHJldmlv
dXNNYXJrZXIucGxhdGZvcm1PYmplY3QoKTsKIH0KIAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1l
dGhvZCBzaW5jZSBjbGllbnRzIHNob3VsZCBub3QgbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kIGFu
ZCBzaG91bGQgbm90IGJlIGV4cG9zZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuCkBAIC0zMzcx
LDI0ICszMzYwLDI1IEBAIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKWxpbmVUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpdGV4dE1hCiAgICAgICAgIGlmICghY2Fj
aGUpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgIGF1dG8gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Cisg
ICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisvLyAgICAgICAgYXV0byB2
aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0
TWFya2VyKTsKICAgICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFu
Z2U7CiAgICAgICAgIHN3aXRjaCAodGV4dFVuaXQpIHsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6
TGluZToKLSAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+
bGluZVJhbmdlRm9yUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2li
bGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9zaXRpb24obWFy
a2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0OjpMZWZ0TGlu
ZToKLSAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVm
dExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAg
dmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3Np
dGlvblJhbmdlKG1hcmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0
VW5pdDo6UmlnaHRMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNr
aW5nT2JqZWN0LT5yaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24p
OworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdo
dExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5n
ZUZyb21WaXNpYmxlUG9zaXRpb25zKGNhY2hlLCB2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwg
dmlzaWJsZVBvc2l0aW9uUmFuZ2UuZW5kKTsKKyAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJh
bmdlKGNhY2hlLCB2aXNpYmxlUG9zaXRpb25SYW5nZSkucGxhdGZvcm1PYmplY3QoKTsKICAgICB9
KTsKIH0KIApAQCAtMzY4MiwyNSArMzY3MiwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIChpZClbc2VsZiBfdGV4dE1hcmtlckZvckluZGV4
OltudW1iZXIgaW50ZWdlclZhbHVlXV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9T
dHJpbmc6QCJBWFVJRWxlbWVudEZvclRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
JnRleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFp
blB0cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNl
bGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8qIGF4T2Jq
ZWN0ID0gYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3QpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5p
c0F0dGFjaG1lbnQoKSAmJiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3
XTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgYXV0
byogd3JhcHBlciA9IG1hcmtlci5vYmplY3RXcmFwcGVyKCk7CisgICAgICAgIGlmICghd3JhcHBl
cikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiBheE9iamVj
dC0+d3JhcHBlcigpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3
ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykKKyAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50
VmlldzsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewog
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAg
ICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQuZ2V0
KCktPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKSk7Cisg
ICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQt
PmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LT5lbGVtZW50UmFuZ2UoKSk7CisvLyAgICAgICAg
ICAgIGF1dG8qIGNhY2hlID0gdWlFbGVtZW50LmdldCgpLT5heE9iamVjdENhY2hlKCk7CisvLyAg
ICAgICAgICAgIGlmICghY2FjaGUpCisvLyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworLy8g
ICAgICAgICAgICByZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UoY2FjaGUsIHVpRWxlbWVudC5nZXQo
KS0+ZWxlbWVudFJhbmdlKCkpLnBsYXRmb3JtT2JqZWN0KCk7CiAgICAgICAgIH0pOwogICAgIH0K
IApAQCAtMzc1MSw3ICszNzM5LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBv
c2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+dmlz
aWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KSk7CisgICAgICAgICAgICByZXR1cm4g
KGlkKUFYVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tpbmdP
YmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpLnBsYXRmb3JtT2Jq
ZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zODQwLDkgKzM4
MjgsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAg
IHx8ICFBWE9iamVjdElzVGV4dE1hcmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDowXSkKICAgICAg
ICAgICAgIHx8ICFBWE9iamVjdElzVGV4dE1hcmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkp
CiAgICAgICAgICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJmFycmF5XSAoKSAt
PiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdl
RnJvbU1hcmtlcnMoKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSwgKEFY
VGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkuZ2V0KCk7Ci0gICAgICAgIH0p
OworCisgICAgICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyUmFuZ2UgeyB7IChBWFRleHRNYXJr
ZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MF0gfSwgeyAoQVhUZXh0TWFya2VyUmVmKVthcnJh
eSBvYmplY3RBdEluZGV4OjFdIH0gfS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAg
ICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2Vy
UmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyJdKSB7CkBAIC0zODgxLDggKzM4NjgsOCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2Fj
aGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVy
T2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2Fj
aGUsIHRleHRNYXJrZXIpOwotICAgICAgICAgICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90
ZWN0ZWRTZWxmIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNl
dF0pOworICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAg
ICAgICAgIHJldHVybiBuZXh0VGV4dE1hcmtlcihjYWNoZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9y
ZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzg5Niw4ICszODgzLDggQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWNhY2hl
KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hl
LCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVybiBicmlkZ2VfaWRfY2FzdChbcHJvdGVj
dGVkU2VsZiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zm
c2V0XSk7CisgICAgICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAg
ICAgICAgICAgcmV0dXJuIHByZXZpb3VzVGV4dE1hcmtlcihjYWNoZSwgbWFya2VyKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzk3OCwyNiArMzk2NSwz
MCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogICAgIC8vIFVzZWQg
b25seSBieSBEdW1wUmVuZGVyVHJlZSAoc28gZmFyKS4KICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0g
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJv
bU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWlu
UHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tp
bmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAg
ICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgICAgICAgICBhdXRvIHJhbmdlID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09i
amVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwotCi0gICAgICAgICAgICBy
ZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLCByYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIH0pOworICAgICAgICBBWFRleHRN
YXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRNYXJrZXJSYW5nZSB9OworICAgICAg
ICByZXR1cm4gKGlkKWF4VGV4dE1hcmtlclJhbmdlLnN0YXJ0LnBsYXRmb3JtT2JqZWN0KCkuYXV0
b3JlbGVhc2UoKTsKKy8vICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRv
cmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7CisvLyAgICAg
ICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2lu
Z09iamVjdDsKKy8vICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQorLy8gICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKKy8vCisvLyAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZv
clRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJr
ZXJSYW5nZSk7CisvLworLy8gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFy
a2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwgdHJ1ZSk7
CisvLyAgICAgICAgfSk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0
dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVh
ZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZild
ICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9
IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFi
YWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAg
IGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9i
amVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXN0
YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCByYW5nZSwgZmFsc2UpOwotICAgICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2VyUmFuZ2Ug
YXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0dXJuIChp
ZClheFRleHRNYXJrZXJSYW5nZS5lbmQucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwor
Ly8gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVl
RnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKKy8vICAgICAgICAgICAgYXV0byog
YmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OworLy8g
ICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCisvLyAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOworLy8KKy8vICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJh
bmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKKy8v
ICAgICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tp
bmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIGZhbHNlKTsKKy8vICAgICAgICB9KTsK
ICAgICB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtl
ci1leHBlY3RlZC50eHQKaW5kZXggNWQzM2RhY2IyZDNmLi41MDQ2MDI1OGZjMzMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2Vy
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50
LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTQgQEAKLXRleHQgaGVy
ZQotdGV4dCBibG9jawotdGV4dCBoZXJlCiBUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0
ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJr
ZXIuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQorUEFTUzogdGV4dC50ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgocmFuZ2UpID09PSAxMAorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSA9PT0g
dHJ1ZQorUEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpID09PSAxMAor
UEFTUzogbmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkgPT09IHRydWUKIAotUEFTUyB0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSBpcyAxMAotUEFTUyB0ZXh0LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBp
cyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1h
cmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVu
Z3RoKG5ld01hcmtlclJhbmdlKSBpcyAxMAotUEFTUyBuZXdNYXJrZXJSYW5nZS5pc0VxdWFsKHRl
eHRNYXJrZXJSYW5nZTEpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
IAogVEVTVCBDT01QTEVURQotCit0ZXh0IGhlcmUKK3RleHQgYmxvY2sKK3RleHQgaGVyZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1t
YXJrZXIuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRl
eHQtbWFya2VyLmh0bWwKaW5kZXggZDQ5MzZhZDIyZDE4Li4zNDBhYjFlMTk4MGMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2Vy
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4
dC1tYXJrZXIuaHRtbApAQCAtMSw1MSArMSw0MiBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkg
aWQ9ImJvZHkiPgorPGJvZHk+CiAKIHRleHQgaGVyZQotPGRpdiBpZD0idGV4dDEiIHRhYmluZGV4
PSIwIj50ZXh0IGJsb2NrPC9kaXY+Cis8ZGl2IGlkPSJ0ZXh0MSI+dGV4dCBibG9jazwvZGl2Pgog
dGV4dCBoZXJlCiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgdGV4
dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZl
biBhIHRleHQgbWFya2VyLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgeworICAgICAgICBsZXQgdGVzdE91dHB1dCA9ICJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1h
cmtlciBzeXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEg
dGV4dCBtYXJrZXIuXG5cbiI7CiAKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
dGV4dDEiKS5mb2N1cygpOwotICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmNoaWxkQXRJbmRleCgwKTsK
IAotICAgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgICB0ZXh0
ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdl
dCB0aGUgc3RhcnQgbWFya2VyIGZvciB0aGlzIGVsZW1lbnQncyByYW5nZS4KKyAgICAgICAgdmFy
IHJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICB0
ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgocmFuZ2UpIiwg
IjEwIik7CisgICAgICAgIHZhciBzdGFydCA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHJhbmdlKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0
aGUgc3RhcnQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgotICAgICAgICAgIHZhciB0ZXh0TWFya2Vy
UmFuZ2UxID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSIs
ICIxMCIpOwotICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOworICAgICAgICAvLyBDaGVjayB0
aGF0IHRoZSBzdGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCB3
ZSBzdGFydGVkIHdpdGguCisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVhbCh0ZXh0KSIsICJ0cnVl
Iik7CiAKLSAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBzdGFydCBtYXJrZXIgd2lsbCBnaXZl
IHVzIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFydGVkIHdpdGguCi0gICAgICAgICAgc2hv
dWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1h
cmtlcikuaXNFcXVhbCh0ZXh0KSIpOworICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5k
IGNoZWNrIHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KKyAgICAgICAgdmFyIGVu
ZCA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAg
IHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihlbmQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gR2V0IHRo
ZSBlbmQgbWFya2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVzIHVzIHRoZSBzYW1lIGVsZW1lbnQu
Ci0gICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UxKTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0
KSIpOworICAgICAgICAvLyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5k
IGVuZCBtYXJrZXJzIGFuZCBjaGVjayB0aGUgbGVuZ3RoLgorICAgICAgICB2YXIgbmV3UmFuZ2Ug
PSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnQsIGVuZCk7CisgICAgICAgIHRl
c3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSki
LCAiMTAiKTsKIAotICAgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBz
dGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5ndGgKLSAgICAgICAgICB2YXIg
bmV3TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJr
ZXIsIGVuZE1hcmtlcik7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKG5ld01hcmtlclJhbmdlKSIsICIxMCIpOworICAgICAgICAvLyBBbmQgbWFrZSBzdXJl
IGl0IGVxdWFscyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ugd2Ugc3RhcnRlZCB3aXRoCisgICAgICAg
IHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJuZXdSYW5nZS5pc0VxdWFsKHJhbmdlKSIsICJ0cnVlIik7
CiAKLSAgICAgICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVxdWFscyB0aGUgc2FtZSBtYXJrZXIg
cmFuZ2Ugd2Ugc3RhcnRlZCB3aXRoCi0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJuZXdNYXJrZXJS
YW5nZS5pc0VxdWFsKHRleHRNYXJrZXJSYW5nZTEpIik7CisgICAgICAgIGRlYnVnKHRlc3RPdXRw
dXQpOwogICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25v
cmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
c2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKaW5kZXgg
MDJjNTc2NThhNTZmLi44ZmM1ZmQ3MjQ4YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0
ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNh
dGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDE2ICsxLDEzIEBACi1G
aXJzdCBsaW5lIG9mIHRleHQKLWJ1dHRvbgotVGhpcmQgbGluZSBvZiB0ZXh0CiBUaGlzIHRlc3Rz
IHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFuIGln
bm9yZWQgZWxlbWVudC4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogZWxlbWVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09PSAnRmlyc3QgbGluZSBvZiB0ZXh0
JworUEFTUzogZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09PSAnYnV0
dG9uJworUEFTUzogcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IFRoaXJk
IGxpbmUgb2YgdGV4dCcKK1BBU1M6IHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgPT09ICdBWFZh
bHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnCiAKLQotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKLVBBU1MgZWxl
bWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKSBpcyAnYnV0dG9uJwotUEFT
UyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRl
eHQnCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEZpcnN0IGxp
bmUgb2YgdGV4dCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQogCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2Vh
cmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1s
CmluZGV4IDZlYTgxODdjMDIyNi4uOTVkN2E0NmNlY2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0
ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCkBAIC0xLDUwICsxLDQ3IEBACiA8IURPQ1RZUEUg
SFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8
L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAorPGRpdiBpZD0iY29udGFpbmVyIiBy
b2xlPSJncm91cCI+CiA8ZGl2IGlkPSJ0ZXN0Ij5GaXJzdCBsaW5lIG9mIHRleHQ8YnI+CiA8YnV0
dG9uIGlkPSJidXR0b24iIGFyaWEtaGlkZGVuPSJ0cnVlIj5idXR0b248L2J1dHRvbj4KIDxicj5U
aGlyZCBsaW5lIG9mIHRleHQ8L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50
cyBmcm9tIGFuIGlnbm9yZWQgZWxlbWVudC4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Ci0gICAgICAgIHZhciBjb250YWluZXJFbGVtZW50ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIAorICAgICAg
ICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nl
c3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LlxuXG4iOworCisgICAgICAg
IHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNvbnRhaW5lciIpOwogICAgICAgICB2YXIgZWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGVzdCIpLmNoaWxkQXRJbmRleCgwKTsK
LSAgICAgICAgdmFyIG1hcmtlclJhbmdlID0gZWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KGVsZW1lbnQpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidGaXJzdCBsaW5lIG9mIHRleHQnIik7Ci0gICAgICAg
IAotICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVkIGVsZW1lbnQgdXNpbmcgbGluZSB0
ZXh0IG1hcmtlciBjYWxscwotICAgICAgICB2YXIgdGV4dE1hcmtlciA9IGVsZW1lbnQuZW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSk7Ci0gICAgICAgIHRleHRNYXJr
ZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB0ZXh0TWFy
a2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgdmFyIGxp
bmVSYW5nZSA9IGVsZW1lbnQubGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIodGV4dE1h
cmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShsaW5lUmFuZ2UpIiwgIididXR0b24nIik7Ci0gICAgICAgIAotICAgICAgICB0ZXh0TWFya2Vy
ID0gZWxlbWVudC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKTsK
LSAgICAgICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICAKKyAgICAgICAgdmFyIHJhbmdlID0g
ZWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAi
J0ZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25v
cmVkIGVsZW1lbnQgdXNpbmcgbGluZSB0ZXh0IG1hcmtlciBjYWxscy4KKyAgICAgICAgdmFyIG1h
cmtlciA9IGVsZW1lbnQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7Cisg
ICAgICAgIG1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAg
bWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICByYW5nZSA9
IGVsZW1lbnQubGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIobWFya2VyKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFu
Z2UpIiwgIididXR0b24nIik7CisKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5zdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB2YXIgc3RhcnRFbGVtZW50
ID0gZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyKTsKKwog
ICAgICAgICAvLyBTZWFyY2ggZm9yd2FyZAotICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNv
bnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwg
dHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Ci0gICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRl
eHQnIik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lci51
aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBl
U2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgicmVzdWx0
RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOwor
CiAgICAgICAgIC8vIFNlYXJjaCBiYWNrd2FyZAotICAgICAgICByZXN1bHRFbGVtZW50ID0gY29u
dGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBm
YWxzZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Ci0gICAgICAgIHNob3VsZEJl
KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRl
eHQnIik7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2Vh
cmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAi
IiwgZmFsc2UpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmlu
Z1ZhbHVlIiwgIidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnIik7CisKKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlk
ZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0gICAgICAgIAogPC9zY3JpcHQ+
Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1hcmtlci1y
YW5nZS1mb3Itbm9kZS13aXRob3V0LWNoaWxkcmVuLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy90ZXh0LW1hcmtlci1yYW5nZS1mb3Itbm9kZS13aXRob3V0LWNoaWxkcmVuLmh0
bWwKaW5kZXggZjY5OGM2NDdlODhlLi5iOTE1YWMwMGQwMzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHQtbWFya2VyLXJhbmdlLWZvci1ub2RlLXdpdGhvdXQt
Y2hpbGRyZW4uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0LW1h
cmtlci1yYW5nZS1mb3Itbm9kZS13aXRob3V0LWNoaWxkcmVuLmh0bWwKQEAgLTEsNyArMSw4IEBA
CiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5PgogCkBA
IC05LDI2ICsxMCwyMyBAQAogYSA8ZGl2IGlkPSJ0ZXh0Ym94IiBhcmlhLWxhYmVsPSJjaGlsZCBs
ZXZlbCIgY29udGVudGVkaXRhYmxlPSJ0cnVlIj48L2Rpdj4gYgogPC9kaXY+CiAKLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0g
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBjcmVhdGluZyBUZXh0TWFya2VyUmFuZ2Ug
ZnJvbSBub2RlcyB0aGF0IGhhdmUgbm8gY2hpbGRyZW4gd29uJ3QgY29sbGFwc2UgdG8gb25lIHNp
ZGUuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCBjcmVhdGluZyBUZXh0TWFya2Vy
UmFuZ2UgZnJvbSBub2RlcyB0aGF0IGhhdmUgbm8gY2hpbGRyZW4gd29uJ3QgY29sbGFwc2UgdG8g
b25lIHNpZGUuXG5cbiI7CisKICAgICAgICAgdmFyIHRleHRib3ggPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHRib3giKTsKLSAgICAgICAgdmFyIHRl
eHRib3hSYW5nZSA9IHRleHRib3gudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0Ym94KTsK
LSAgICAgICAgLy8gVGhlIHJhbmdlIHNob3VsZCBpbmNsdWRlIHRoZSBkaXYgZWxlbWVudC4gCi0g
ICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dGJveC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dGJv
eFJhbmdlKSA9PSAxIik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmFuZ2UgPSB0ZXh0Ym94LnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dGJveCk7CisgICAgICAgIC8vIFRoZSByYW5nZSBz
aG91bGQgaW5jbHVkZSB0aGUgZGl2IGVsZW1lbnQuCisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHRib3gudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSIsICIxIik7CisKICAgICAgICAg
Ly8gTWFrZSBzdXJlIHRoZSBub2RlIHRoYXQgYXNzb2NpYXRlcyB3aXRoIHRoZSB0ZXh0IG1hcmtl
ciBpcyB0aGUgcGFyZW50IGRpdiBlbGVtZW50LgotICAgICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0
ZXh0Ym94LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0Ym94UmFuZ2UpOwot
ICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dGJveC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKHRleHRib3hSYW5nZSk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Ym94LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuZGVzY3JpcHRpb24iLCAiJ0FY
RGVzY3JpcHRpb246IHBhcmVudCBsZXZlbCciKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHRib3gu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuZGVzY3JpcHRpb24i
LCAiJ0FYRGVzY3JpcHRpb246IHBhcmVudCBsZXZlbCciKTsKKyAgICAgICAgdmFyIHN0YXJ0ID0g
dGV4dGJveC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAg
ICB2YXIgZW5kID0gdGV4dGJveC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdl
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dGJveC5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoc3RhcnQpLmRlc2NyaXB0aW9uIiwgIidBWERlc2NyaXB0aW9uOiBwYXJl
bnQgbGV2ZWwnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHRib3guYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuZGVzY3JpcHRpb24iLCAiJ0FYRGVzY3JpcHRp
b246IHBhcmVudCBsZXZlbCciKTsKKworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KIDwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1l
eHBlY3RlZC50eHQKaW5kZXggY2RjYzc3YzNjODcxLi42YTdkMmY3OGEzZTQgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdl
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFy
a2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKQEAgLTEsMjgxICsxLDIwNyBAQAotVGhp
bmsgZGlmZmVyZW50IEFwcGxlCi0KLWJvbGQgaXRhbGljCi11bmRlcmxpbmUgbGFzdCEKLQotSGVs
bG8gV29ybGQhCi1UaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBw
cm9wZXJseS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCitUaGlzIHRlc3RzIHRoYXQg
dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuCiAKIGNvbnRlbnQgbGVuZ3Ro
OiA2NQogQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRl
eHQ6Ci0wCi0nJwotMQotJ1QnCi0yCi0nVGgnCi0zCi0nVGhpJwotNAotJ1RoaW4nCi01Ci0nVGhp
bmsnCi02Ci0nVGhpbmsgJwotNwotJ1RoaW5rIGQnCi04Ci0nVGhpbmsgZGknCi05Ci0nVGhpbmsg
ZGlmJwotMTAKLSdUaGluayBkaWZmJwotMTEKLSdUaGluayBkaWZmZScKLTEyCi0nVGhpbmsgZGlm
ZmVyJwotMTMKLSdUaGluayBkaWZmZXJlJwotMTQKLSdUaGluayBkaWZmZXJlbicKLTE1Ci0nVGhp
bmsgZGlmZmVyZW50JwotMTYKLSdUaGluayBkaWZmZXJlbnQgJwotMTcKLSdUaGluayBkaWZmZXJl
bnQgQScKLTE4Ci0nVGhpbmsgZGlmZmVyZW50IEFwJwotMTkKLSdUaGluayBkaWZmZXJlbnQgQXBw
JwotMjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbCcKLTIxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
JwotMjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUnCi0yMwotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMCAnJworMSAnVCcKKzIgJ1RoJworMyAnVGhpJworNCAnVGhpbicKKzUgJ1RoaW5rJworNiAn
VGhpbmsgJworNyAnVGhpbmsgZCcKKzggJ1RoaW5rIGRpJworOSAnVGhpbmsgZGlmJworMTAgJ1Ro
aW5rIGRpZmYnCisxMSAnVGhpbmsgZGlmZmUnCisxMiAnVGhpbmsgZGlmZmVyJworMTMgJ1RoaW5r
IGRpZmZlcmUnCisxNCAnVGhpbmsgZGlmZmVyZW4nCisxNSAnVGhpbmsgZGlmZmVyZW50JworMTYg
J1RoaW5rIGRpZmZlcmVudCAnCisxNyAnVGhpbmsgZGlmZmVyZW50IEEnCisxOCAnVGhpbmsgZGlm
ZmVyZW50IEFwJworMTkgJ1RoaW5rIGRpZmZlcmVudCBBcHAnCisyMCAnVGhpbmsgZGlmZmVyZW50
IEFwcGwnCisyMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlJworMjIgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZScKKzIzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogJwotMjQKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzI0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYicKLTI1Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCisyNSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvJwotMjYKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzI2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sJwotMjcK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCcKLTI4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyOCAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgJwotMjkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI5ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpJwotMzAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMwICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdCcKLTMxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiszMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhJwotMzIKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzMyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsJwotMzMK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaScKLTM0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNCAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljJwotMzUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM1ICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKICcKLTM2Ci0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiszNiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1Jwot
MzcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuJwotMzgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM4ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZCcKLTM5Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiszOSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlJwot
NDAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVyJwotNDEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQxICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybCcKLTQyCi0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis0MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpJwotNDMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQzICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluJwotNDQKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzQ0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZScK
LTQ1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgJwotNDYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ2
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsJwotNDcK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYScKLTQ4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0OCAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzJwotNDkK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0JwotNTAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUw
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScK
LTUxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEnCi01MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNTIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
c3QhCiAKIO+/vCcKLTUzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MyAnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SCcKLTU0Ci0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGUnCi01NQotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNTUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGxhc3QhCiAKIO+/vEhlbCcKLTU2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NiAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVs
bCcKLTU3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NyAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8nCi01OAotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorNTggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvICcKLTU5Ci0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCis1OSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUg
bGFzdCEKIAog77+8SGVsbG8gVycKLTYwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MCAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8
SGVsbG8gV28nCi02MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjEgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcicK
LTYyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29ybCcKLTYzCi0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCis2MyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRh
bGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29ybGQnCi02NAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsaW5lIGxhc3QhCkBAIC0yOTEsNyArMjE3LDExIEBAIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
ZWxsbyBXb3JsZCEnCiAnJworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKIAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKaW5kZXggY2UxY2Jm
MmVlZmUzLi5jMzA0OTg2N2IwNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbApAQCAtMSw5
ICsxLDkgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAogPGRpdiBpZD0i
Y29udGVudCIgcm9sZT0iZ3JvdXAiPgogICAgIDxwPlRoaW5rIDxlbT5kaWZmZXJlbnQ8L2VtPiA8
YSBocmVmPSJhcHBsZS5jb20iPkFwcGxlPC9hPjwvcD4KQEAgLTExLDM2ICsxMSwzNCBAQAogICAg
IDxidXR0b24+SGVsbG8gV29ybGQhPC9idXR0b24+CiA8L2Rpdj4KIAotPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLSAgICBkZXNj
cmlwdGlvbigiVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJv
cGVybHkuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0g
ICAgICAgIGF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY29udGVudCIpOwotICAgICAgICBjb250ZW50VGV4dE1hcmtlclJhbmdlID0gYXhF
bGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoYXhFbGVtZW50KTsKLSAgICAgICAgdGV4
dExlbmd0aCA9IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoY29udGVudFRleHRN
YXJrZXJSYW5nZSkubGVuZ3RoOwotICAgICAgICBkZWJ1ZygiY29udGVudCBsZW5ndGg6ICIgKyB0
ZXh0TGVuZ3RoKTsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoYXQgdGV4dE1h
cmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuXG5cbiI7CiAKLSAgICAgICAgZGVidWco
IkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB0ZXh0OiIp
OwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAg
ICBkZWJ1ZyhpKTsKLSAgICAgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0
TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsKLSAgICAgICAgICAgIGRlYnVnKCInIiArIGF4RWxl
bWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7Cisg
ICAgICAgIGxldCBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIGxldCByYW5nZSA9IGNvbnRlbnQudGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudChjb250ZW50KTsKKyAgICAgICAgbGV0IGNvbnRlbnRMZW5ndGgg
PSBjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkubGVuZ3RoOworICAgICAg
ICBvdXRwdXQgKz0gYGNvbnRlbnQgbGVuZ3RoOiAke2NvbnRlbnRMZW5ndGh9XG5gOworCisgICAg
ICAgIG91dHB1dCArPSAiQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIg
aW4gdGhlIHRleHQ6XG4iOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29udGVudExlbmd0aDsg
KytpKSB7CisgICAgICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFu
Z2UoMCwgaSk7CisgICAgICAgICAgICBvdXRwdXQgKz0gYCR7aX0gJyR7Y29udGVudC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CiAgICAgICAgIH0KIAotICAgICAgICBkZWJ1
ZygiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6Iik7Ci0gICAgICAgIHRleHRNYXJr
ZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7Ci0gICAg
ICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1h
cmtlclJhbmdlKSArICInIik7CisgICAgICAgIG91dHB1dCArPSAiR2V0IHRoZSByYW5nZSBmb3Ig
dGhlIHdvcmQgQXBwbGU6XG4iOworICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJh
bmdlRm9yUmFuZ2UoMTYsIDUpOworICAgICAgICBvdXRwdXQgKz0gYCcke2NvbnRlbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOworCisgICAgICAgIG91dHB1dCArPSAiT3V0
IG9mIHJhbmdlIHZhbHVlczpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2Vy
UmFuZ2VGb3JSYW5nZSgwLCAxMDApOworICAgICAgICBvdXRwdXQgKz0gYCcke2NvbnRlbnQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOworICAgICAgICByYW5nZSA9IGNvbnRl
bnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBg
JyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CiAKLSAgICAg
ICAgZGVidWcoIk91dCBvZiByYW5nZSB2YWx1ZXM6Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCAxMDApOwotICAgICAgICBk
ZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSkgKyAiJyIpOwotICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1h
cmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7Ci0gICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KIDwvc2NyaXB0PgotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQt
bm9kZS1leHBlY3RlZC50eHQKaW5kZXggOTE1ZDU2OWMwZWQwLi5kODRiOGIyMDE3NDIgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jh
c2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4
dApAQCAtMSwxMCArMSw3IEBACi1UaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LgogVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBv
aW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJU
ZXh0IG9iamVjdHMuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KK1BBU1M6IGNvbnRlbnQu
Y2hpbGRBdEluZGV4KDApLmlzRXF1YWwoZWxlbWVudCkgPT09IHRydWUKIAotCi1QQVNTIGNvbnRl
bnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVsZW1lbnQpIGlzIHRydWUKIFBBU1Mgc3Vj
Y2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4
dC1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0
aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAppbmRleCBjNzI1N2Q1ODVkMWEuLjJjM2Q4OWQx
OTg0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1w
b3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKQEAg
LTEsNDAgKzEsMzIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5
PgogCi08ZGl2IGlkPSJjb250ZW50IiB0YWJpbmRleD0iMCIgc3R5bGU9IndpZHRoOjIwMHB4OyI+
Cis8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0id2lkdGg6MjAwcHg7Ij4KIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiAK
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LgogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiA8L2Rpdj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQotICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2li
bGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJl
bmRlclRleHQgb2JqZWN0cy4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIpIHsKLQotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iiku
Zm9jdXMoKTsKLSAgICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OwotCi0gICAgICAgICAgLy8gR2V0IHRoZSB0ZXh0IG1hcmtlciBhdCB0
aGlzIHBvaW50LiBJdCBzaG91bGQgbm90IGNyYXNoLgotICAgICAgICAgIHZhciBtYXJrZXJBdFBv
aW50ID0gY29udGVudC50ZXh0TWFya2VyRm9yUG9pbnQoY29udGVudC54ICsgY29udGVudC53aWR0
aC8yLCBjb250ZW50LnkgKyBjb250ZW50LmhlaWdodC8yKTsKLSAgICAgICAgICB2YXIgdGV4dEVs
ZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXJB
dFBvaW50KTsKLQotICAgICAgICAgIC8vIFZlcmlmeSB0aGUgZWxlbWVudCBpcyB0aGUgc2FtZSBh
cyB0aGUgb25lIHdlIHdhbnRlZC4KLSAgICAgICAgICB2YXIgdGV4dEVsZW1lbnQgPSBjb250ZW50
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXJBdFBvaW50KTsKLSAgICAg
ICAgICBzaG91bGRCZVRydWUoImNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVs
ZW1lbnQpIik7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEg
Y3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUg
dGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuXG5cbiI7CisKKyAgICAg
ICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgLy8gR2V0IHRoZSB0ZXh0IG1hcmtlciBhdCB0aGlz
IHBvaW50LiBJdCBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICB2YXIgbWFya2VyID0gY29udGVu
dC50ZXh0TWFya2VyRm9yUG9pbnQoY29udGVudC54ICsgY29udGVudC53aWR0aCAvIDIsIGNvbnRl
bnQueSArIGNvbnRlbnQuaGVpZ2h0IC8gMik7CisgICAgICAgIC8vIFZlcmlmeSB0aGUgZWxlbWVu
dCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIHdhbnRlZC4KKyAgICAgICAgdmFyIGVsZW1lbnQg
PSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworLy8g
ICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQuZG9tSWRlbnRpZmllciIsICInY29udGVu
dCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiY29udGVudC5jaGlsZEF0SW5kZXgoMCku
aXNFcXVhbChlbGVtZW50KSIsICJ0cnVlIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRl
YnVnKG91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFy
a2VyLXByZXZpb3VzLW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCmluZGV4IDVlZDNiZDBkMDZkZS4u
MzhmMTNlZDdhM2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQt
bWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbApA
QCAtMSwxNSArMSwxNyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPG1ldGEgY2hhcnNldD0iVVRGLTE2Ij4KIDwvaGVh
ZD4KIDxzdHlsZT4KIC51c2Vyc2VsZWN0IHsgdXNlci1zZWxlY3Q6IG5vbmU7IC13ZWJraXQtdXNl
ci1zZWxlY3Q6IG5vbmU7IH0KIDwvc3R5bGU+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAot
PGRpdiBpZD0idGV4dCIgdGFiaW5kZXg9IjAiPnRleHQ8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRlbnQi
PgorPGRpdiBpZD0idGV4dCI+dGV4dDwvZGl2PgogPGJyPgogdGV4dDEKIApAQCAtMzIsMjkgKzM0
LDQ1IEBAIGYKIDxwIGlkPSJ0ZXh0NiI+YSAgICAgYjwvcD4KIAogPHAgaWQ9InRleHQ3Ij5hdWRp
bzxhdWRpbyBjb250cm9scz48L2F1ZGlvPmZpbGU8L3A+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+
PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Rpdj4KIAogPHNjcmlwdD4KKyAgICBm
dW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2Jq
KSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAg
ICAgICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAg
ICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9OworICAgIH0KKworICAg
IGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIs
IG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihwcmV2aW91c01h
cmtlcik7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtl
cihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgY3VycmVudDogY3VycmVu
dE1hcmtlcgorICAgICAgICB9OworICAgIH0KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3Rz
IHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQg
Y29ycmVjdGx5LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKLSAgICAgICAgCi0gICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0gICAgICAgIC8vIEdldCB0aGUgYWN0
dWFsIHRleHQgbm9kZS4KLSAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOwotICAg
ICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3Vz
IHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LlxuXG4iOwor
CisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJ0ZXh0IikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8vIENoZWNrIHRo
YXQgd2UgY2FuIGdldCB0aGUgc3RhcnQvZW5kIG1hcmtlciBmb3IgdGhpcyByYW5nZS4KICAgICAg
ICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRN
YXJrZXJSYW5nZSkiLCAiNCIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisKICAg
ICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICBz
aG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0
TWFya2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7
Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CisKICAgICAgICAg
Ly8gQ2hlY2sgbmV4dCB0ZXh0IG1hcmtlci4gKEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxs
IGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHZhciBjdXJyZW50TWFya2VyLCBwcmV2aW91c01hcmtl
ciwgbWFya2VyUmFuZ2U7OwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91
c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwpAQCAtNjIsNTggKzgwLDU3IEBAIGYKICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9
IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1h
cmtlcik7CiAgICAgICAgIHZhciBuZXdsaW5lID0gJ1xuJzsKLSAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7Ci0g
ICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAgICAgIC8vIEFkdmFuY2Ug
b25lIG1vcmUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQxIi4KICAg
ICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
dGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAg
ICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICIndCciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKwog
ICAgICAgICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRyYXZlcnNlIGJhY2t3YXJk
cyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHJlc3VsdCA9
IGJhY2t3YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAg
ICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFy
a2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAg
ICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFu
ZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQiLgogICAgICAgICByZXN1bHQgPSBiYWNr
d2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQpOwogICAgICAgICBw
cmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9
IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIGlm
IChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gIm1hYyIpCi0gICAgICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIid0JyArIG5ld2xpbmUiKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCcgKyBuZXdsaW5lIik7
CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CisgICAgICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3Qn
Iik7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCByZXBsYWNlZCBub2RlCiAgICAg
ICAgIHZhciB0ZXh0MiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dDIiKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTIgPSB0ZXh0Mi50ZXh0
TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnRl
eHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7CisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFu
Z2UyKSIsICI1Iik7CiAgICAgICAgIHZhciBzdHIgPSB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlMikucmVwbGFjZShTdHJpbmcuZnJvbUNoYXJDb2RlKDY1NTMy
KSwgIltBVFRBQ0hNRU5UXSIpOwotICAgICAgICBkZWJ1ZygiT2JqZWN0IHN0cmluZyBmb3IgcmFu
Z2U6ICIgKyBzdHIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGBPYmplY3Qgc3RyaW5n
IGZvciByYW5nZTogJHtzdHJ9XG5gOworCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5z
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7CiAgICAg
ICAgIC8vIEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgImQiLgogICAgICAg
ICByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0
Mik7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBj
dXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4
dDIudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
cik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIiwgIidkJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKKwog
ICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgNiBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQg
YXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0MSIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3
YXJkcyg2LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dDIpOwogICAgICAgICBw
cmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9
IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQyLnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBz
aG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIn
MSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJzEnIik7CisKICAgICAgICAgLy8gQ2hl
Y2sgdGhlIGNhc2Ugd2l0aCB1c2VyLXNlbGVjdDpub25lLCBuZXh0VGV4dE1hcmtlci9wcmV2aW91
c1RleHRNYXJrZXIgc2hvdWxkIHN0aWxsIHdvcmsuCi0gICAgICAgIHZhciB0ZXh0MyA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKTsKLSAgICAg
ICAgdGV4dDMgPSB0ZXh0My5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAorICAgICAgICB2YXIg
dGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRl
eHQzIikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8vIEFkdmFuY2UgdG8gbGFuZCBhdCB1
c2VyLXNlbGVjdDpub25lIG5vZGUuCiAgICAgICAgIHZhciBtYXJrZXIxLCBtYXJrZXIyOwogICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE4OyBpKyspIHsKQEAgLTEyNSwzNCArMTQyLDMxIEBA
IGYKICAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAg
bWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKG1hcmtlcjEsIG1h
cmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInZWN0JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidlY3QnIik7CiAgICAg
ICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQgbWFya2VyIGZvciA2IGNoYXJhY3Rl
cnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCA2OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAg
ICAgICBjdXJyZW50TWFya2VyID0gdGV4dDMucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJr
ZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwg
bWFya2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidzZWwnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsKIAog
ICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZpZWxkLgogICAgICAgICB2
YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJw
c3ciKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cudGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudChwc3cpOwogICAgICAgICB2YXIgc3RhcnQgPSBwc3cuc3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOwotICAgICAgICBzaG91bGRCZVRy
dWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoc3RhcnQpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBDaGVjayBuZXh0
L3ByZXZpb3VzIHRleHQgbWFya2VyIGNhbGwgd2lsbCBza2lwIHBhc3N3b3JkIGZpZWxkCiAgICAg
ICAgIC8vIFdlIHN0YXJ0IGZyb20gdGV4dDIgYW5kIGFkdmFuY2UgNiBjaGFyYWN0ZXJzLCBpdCBz
aG91bGQgc2tpcCB0aGUgcGFzc3dvcmQgZmllbGQgYW5kIGxhbmQgb24gdGV4dDMuCiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlMik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKS5pc0VxdWFsKHRleHQzKSIsICJ0cnVlIik7CiAgICAgICAgIC8vIENoZWNrIHByZXZp
b3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUuCiAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1h
cmtlcik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIp
KSIpOwotICAgICAgICAKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQy
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFs
KHRleHQyLmNoaWxkQXRJbmRleCgyKSkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIE1ha2Ugc3Vy
ZSB0aGF0IHRleHQgbm9kZSB3aXRoIGxpbmUgYnJlYWtzLCB3ZSBjYW4gZ28gdGhyb3VnaCBpdCB3
aXRoIG5leHQvcHJldmlvdXMgY2FsbC4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDQiKTsKICAgICAgICAgdGV4dE1hcmtl
clJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwpAQCAtMTYzLDg3
ICsxNzcsNjQgQEAgZgogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRN
YXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ2YnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7CisKICAg
ICAgICAgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBlbmRNYXJrZXI7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNzsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBjdXJyZW50TWFy
a2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOworCiAg
ICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIGVtb2ppLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NSIpOwogICAgICAgICB2
YXIgZW1vamlUZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
dGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9q
aVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwogICAg
ICAgICAvLyBNYWtlIHN1cmUgbmF2aWdhdGluZyBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGlz
IGJ5IGVtb2ppLgogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKGVtb2ppVGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0g
Zm9yd2FyZCgyLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAgICAgICBz
aG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+Yjyci
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YgyciKTsKLSAgICAg
ICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7CisKICAgICAgICAgLy8gVGVzdCBjYXNlIHdpdGggY29s
bGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ2Iik7CiAgICAgICAgIHZhciBjb2xsYXBzZWRX
aGl0ZXNwYWNlTWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4
dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBz
ZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJh
bmdlKSIsICIzIik7CiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKTsKICAgICAg
ICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQp
OwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICInYSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgx
LCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CisgICAg
ICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOwogICAg
ICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCkpIiwgIicgJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBi
YWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidh
JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ug
d2l0aCByZXBsYWNlZCBlbGVtZW50cyAoc2hvdWxkIHVzZSBvYmplY3QgcmVwbGFjZW1lbnQgY2hh
cmFjdGVyKS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dDciKTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNm
aWxlJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7CiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgewog
ICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAg
ICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LmVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2Vy
ID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZp
b3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3Vy
cmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyci
KTsKIAotICAgICAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3Vy
cmVudE1hcmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7
Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJl
bnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgCi0g
ICAgICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRN
YXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFy
a2VyKHByZXZpb3VzTWFya2VyKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2Jq
LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2Vy
LAotICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07
Ci0gICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5z
dHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAg
fQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNz
aWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4
dAppbmRleCAyOTI2NDFhN2UwMzguLjVhMGEzMmMyOGQ3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3Rl
ZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAKLXRleHQKLQotdGV4dDEKLWMgIGQKLQotY2FuJ3Qgc2Vs
ZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8KLQotYSBiCi0KLWF1ZGlvZmlsZQotCiBUaGlzIHRlc3Rz
IHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQg
Y29ycmVjdGx5LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkg
aXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRN
YXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcgKyBuZXdsaW5lCi1QQVNTIHRleHQyLnRl
eHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSBpcyA1CitQQVNTOiB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0
KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
ZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnICsgbmV3bGluZQor
UEFTUzogdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpID09PSA1
CiBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogYyBbQVRUQUNITUVOVF0gZAotUEFTUyB0ZXh0Mi5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdkJwotUEFTUyB0ZXh0Mi5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICcxJwotUEFTUyB0ZXh0My5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNTIHRleHQz
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBBU1MgIXBz
dy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUKLVBBU1Mg
dGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlz
RXF1YWwodGV4dDMpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSBp
cyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAnZicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICdhJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5n
ZSkgaXMgNAotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfw
n5iPJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iD
JwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFy
a2VyUmFuZ2UpIGlzIDMKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn
ICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYicKLVBB
U1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSBpcyAnYXVkaW/vv7xmaWxlJwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcK
LVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfvv7wn
CitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn
ZCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
ICcxJworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9
PT0gJ2VjdCcKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09ICdzZWwnCitQQVNTOiAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtl
cihzdGFydCkgPT09IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSA9PT0gdHJ1ZQorUEFTUzogdGV4
dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1
YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZicKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iPJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmIMnCitQQVNTOiB0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpID09PSAzCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2InCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSA9PT0gJ2F1ZGlv77+8ZmlsZScKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcK
KwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKwor
CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464016</attachid>
            <date>2022-12-12 18:25:34 -0800</date>
            <delta_ts>2022-12-12 18:34:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221212212533.patch</filename>
            <type>text/plain</type>
            <size>88298</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSAyOTQ1NjNjYzNhOWQ3YmVjYjg5NjIxYzJhOTk5MzQ3NzA3NzZiMjRhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTggKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8ICA4MiArKystLQogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDExICsKIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCB8IDI4NyArKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDEw
MiArKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAg
fCAgMzkgKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAg
fCAxMjMgKysrKy0tLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQu
dHh0ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sICAgICAg
ICAgIHwgIDUxICsrLS0KIC4uLnJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVk
LnR4dCB8ICAxNSArLQogLi4uc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5o
dG1sIHwgIDYzICsrLS0KIC4uLi90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50
eHQgICB8IDIxMCArKysrKy0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJh
bmdlLmh0bWwgICAgICAgfCAgNDggKystCiAuLi4tcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9k
ZS1leHBlY3RlZC50eHQgfCAgIDUgKy0KIC4uLi92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10
ZXh0LW5vZGUuaHRtbCB8ICA0MCArLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0
bWwgICAgICAgICAgICB8IDE3NSArKysrKy0tLS0tLQogLi4uL3RleHQtbWFya2VyLXByZXZpb3Vz
LW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrLS0tCiAxOSBmaWxlcyBjaGFuZ2VkLCA4Njkg
aW5zZXJ0aW9ucygrKSwgNDk5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtl
ckNvY29hLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NWVhMGYzZjdjY2IuLjE4OTI2ODIzNDk5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTQ1NSw2ICs0NTUsNyBAQCBNb2R1bGVzL3dlYnhyL1hSU2Vzc2lv
bkV2ZW50LmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNwcAogYWNjZXNzaWJpbGl0eS9BWExv
Z2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKK2FjY2Vzc2liaWxpdHkv
QVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3Bw
CiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDBmMmRmYTQ4YjgzZC4uNGFhNjg2MWE0ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
QEAgLTEyNiw2ICsxMjYsNyBAQCBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLm1tCiBNb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbQog
TW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQorYWNjZXNz
aWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSBAbm8tdW5pZnkKIGFjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxp
dHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMGVjYTExNzgwYzk0Li43ZWJmODUyZGQ1N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1MjQs
NiArNDUyNCw4IEBACiAJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBDb2RlR2VuZXJhdG9y
LnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIz
MDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2
IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8qIGdlbmVyYXRlLWJpbmRp
bmdzLnBsICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMwQzA1NENEMTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEg
LyogSURMUGFyc2VyLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUMwRTIwOEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTIwOEEwMjkzNzlD
NkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLzsgfTsKKwkJQzBFMjA4QjYyOTM5M0REMDAw
QzBEMkQzIC8qIEFYVGV4dE1hcmtlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4dE1h
cmtlckNvY29hLm1tICovOyB9OwogCQlDMEUyRjMyNzI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNj
ZXNzaWJpbGl0eS50YmQgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoV2VhaywgKTsgfTsgfTsKIAkJQzBGMkE0NDEx
Mzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVw
cm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBG
M0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKQEAgLTE2Mzc1
LDYgKzE2Mzc3LDkgQEAKIAkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYTG9nZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVDOCAvKiBBWElzb2xhdGVk
T2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29sYXRlZE9iamVjdE1hYy5t
bTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhMb2dnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYVGV4dE1hcmtlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBB
WFRleHRNYXJrZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEFYVGV4dE1hcmtlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50ZXh0
LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNzaWJpbGl0eS50YmQ7IHBh
dGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBl
cmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5w
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRG
IC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgcGF0aCA9IC4uLy4uL1BB
TC9wYWwvdGV4dC9UZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTM0Myw2ICsyMTM0OCw3IEBACiAJCTI5QTgxMjA0MEZCQjlCNDEwMDUx
MDI5MyAvKiBhY2Nlc3NpYmlsaXR5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMEUyMDhCNzI5MzkzRTFBMDBDMEQyRDMgLyogY29jb2EgKi8sCiAJCQkJ
QUFBNzI4RUYxNkQxRDhCQzAwRDNCQkM2IC8qIGlvcyAqLywKIAkJCQkyOUFFMjEyOTIxQUI5RUNC
MDA4NjkyODMgLyogaXNvbGF0ZWR0cmVlICovLAogCQkJCTI5QTgxMjA1MEZCQjlCNTIwMDUxMDI5
MyAvKiBtYWMgKi8sCkBAIC0yMTQxOSw2ICsyMTQyNSw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlF
NDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJB
IC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlLmggKi8sCisJCQkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFY
VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJQzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4
dE1hcmtlci5oICovLAogCQkJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oICovLAogCQkJCUJDNEE1MzMwMjU2MDU5MDMwMDI4QzU5MiAvKiBGb3Jj
ZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAqLywKIAkJCSk7CkBAIC0zMTM2Nyw2ICszMTM3NSwxNCBA
QAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUMw
RTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4
dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRp
byAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNDkzMSw2
ICszNDk0Nyw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0ZWRP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBB
WElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEw
MjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIwOEEyMjkzNzlD
NkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQzlGMkY5
MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3N0U3NzcwQkY0MTM0QTAwMTUyODcyIC8qIEJhY2tGb3J3YXJkQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNzQxRDBGMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2Fy
ZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MDE4Miw2ICs0MDE5OSw3IEBACiAJCQkJMDcz
OEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJn
ZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAg
LyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5OTZD
MEY2MjcxNzc0ODgwMDJDMTI1RCAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUMwRTIwOEI2MjkzOTNERDAwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCNzA0NUIxRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzIyNDI4MUY3NTY5NjYwMDVG
MDc3QiAvKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggYzViOTcyNWZhMzRiLi45MWFhMzNjMDZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2lu
Y2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Q2VsbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgpAQCAtMjUxNSwz
MyArMjUxNiwzNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRhV2l0aENo
YXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogewogICAgIGlmIChjaGFyYWN0
ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBOb2RlKiBkb21O
b2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7Ci0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNz
d29yZEZpZWxkKCkpIHsKKworICAgIE5vZGUqIG5vZGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsK
KyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CiAgICAgICAgIHRleHRNYXJrZXJE
YXRhLmlnbm9yZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21Ob2Rl
KTsKLSAgICBpZiAoIW9iaikKKworICAgIGF1dG8gb2JqZWN0ID0gZ2V0T3JDcmVhdGUobm9kZSk7
CisgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENvbnZl
cnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OworICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rl
ck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGludCB2cE9mZnNldCA9IDA7CiAgICAgaWYg
KCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpIHsKICAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9
IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICB2cE9mZnNldCA9IGRl
ZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB9Ci0gICAgCi0gICAgdGV4dE1h
cmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2Rl
ID0gZG9tTm9kZTsKKworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmplY3QtPm9iamVjdElE
KCk7CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigp
OworICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBub2RlOwogICAgIHRleHRNYXJrZXJEYXRhLmNo
YXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtlckRh
dGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwogICAg
IHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IHZwT2Zmc2V0OwogICAgIHRleHRNYXJrZXJEYXRhLmFm
ZmluaXR5ID0gdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCk7Ci0gICAgCi0gICAgdGhpcy0+c2V0
Tm9kZUluVXNlKGRvbU5vZGUpOworICAgIC8vIFNpbmNlIFRleHRNYXJrZXJEYXRhLmlnbm9yZWQg
aXMgbm90IGFzc2lnbmVkIGhlcmUsIGl0IGFsbG93cyB0byByZXR1cm4gdmFsaWQgVGV4dE1hcmtl
cnMgZm9yIGlnbm9yZWQgQVggb2JqZWN0cy4KKworICAgIHNldE5vZGVJblVzZShub2RlKTsKIH0K
IAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZz
ZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFydCwgYm9vbCBl
bnRlclRleHRDb250cm9scykKQEAgLTI2NjEsNyArMjY2NCw3IEBAIGJvb2wgQVhPYmplY3RDYWNo
ZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgcHJldmlvdXMsIGNv
bnN0IENoCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIHZvaWQgQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRh
JiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQp
CiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CkBAIC0yNjcz
LDcgKzI2NzYsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENo
YXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogICAgICAgICBpZiAoc2hvdWxk
U2tpcEJvdW5kYXJ5KHByZXZpb3VzLCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hh
cmFjdGVyT2Zmc2V0KG5leHQsIGZhbHNlKTsKICAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIG5leHQpOwotICAgICAgICAKKwogICAgICAgICAv
LyBXZSBzaG91bGQgc2tpcCBuZXh0IENoYXJhY3Rlck9mZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRo
ZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZvclJhbmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hh
cmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkpKQogICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSB0cnVlOwpAQCAtMjY4MSw2ICsyNjg0LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
CiAgICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7
CiB9CiAKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpuZXh0VGV4dE1hcmtlcihjb25zdCBB
WFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBWFRleHRNYXJrZXIgcmVzdWx0OworCisgICAg
VGV4dE1hcmtlckRhdGEgZGF0YSB7IG1hcmtlci5kYXRhKCkgfTsKKyAgICB0ZXh0TWFya2VyRGF0
YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoZGF0YSwgbWFya2VyKTsKKyAgICBpZiAoZGF0YS5ub2Rl
ICE9IG1hcmtlci5tX2RhdGEubm9kZSkgeworICAgICAgICAvLyBTaW5jZSB0aGUgTm9kZSBjaGFu
Z2VkLCBuZWVkIHRvIHVwZGF0ZSB0aGUgb2JqZWN0IHdyYXBwZXIuCisgICAgICAgIGlmIChhdXRv
KiBvYmplY3QgPSBnZXRPckNyZWF0ZShkYXRhLm5vZGUpKQorICAgICAgICAgICAgZGF0YS5vYmpl
Y3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgfQorCisgICAgcmVzdWx0Lm1fYXhP
YmplY3RDYWNoZSA9IHRoaXM7CisgICAgcmVzdWx0Lm1fZGF0YSA9IGRhdGE7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0
IHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OwpAQCAtMjY5OCw2ICsyNzE4LDIzIEBAIHZvaWQg
QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChU
ZXh0TWFya2VyRGF0YSYgdGV4CiAgICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8
fCBzaG91bGRDb250aW51ZSk7CiB9CiAKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpwcmV2
aW91c1RleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVhUZXh0
TWFya2VyIHJlc3VsdDsKKworICAgIFRleHRNYXJrZXJEYXRhIGRhdGEgeyBtYXJrZXIuZGF0YSgp
IH07CisgICAgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChkYXRhLCBt
YXJrZXIpOworICAgIGlmIChkYXRhLm5vZGUgIT0gbWFya2VyLm1fZGF0YS5ub2RlKSB7CisgICAg
ICAgIC8vIFNpbmNlIHRoZSBOb2RlIGNoYW5nZWQsIG5lZWQgdG8gdXBkYXRlIHRoZSBvYmplY3Qg
d3JhcHBlci4KKyAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGdldE9yQ3JlYXRlKGRhdGEubm9k
ZSkpCisgICAgICAgICAgICBkYXRhLm9iamVjdFdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsK
KyAgICB9CisKKyAgICByZXN1bHQubV9heE9iamVjdENhY2hlID0gdGhpczsKKyAgICByZXN1bHQu
bV9kYXRhID0gZGF0YTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBOb2RlKiBBWE9iamVjdENh
Y2hlOjpuZXh0Tm9kZShOb2RlKiBub2RlKSBjb25zdAogewogICAgIGlmICghbm9kZSkKQEAgLTI4
MTYsMTggKzI4NTMsMjIgQEAgc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY28KICAgICAgICAgcmV0dXJu
IHRleHRNYXJrZXJEYXRhOwogICAgIH0KIAotICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vz
c2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGRvbU5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIC8vIEZpbmQgb3IgY3Jl
YXRlIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUuCisgICAgYXV0byogY2Fj
aGUgPSBkb21Ob2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBvYmogPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CisKKyAgICBhdXRvIG9i
amVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUg
emVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBi
eXRlLWVxdWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBi
ZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgogICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRl
eHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgdGV4
dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKKworICAgIHRleHRNYXJrZXJEYXRh
LmF4SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3Jh
cHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21O
b2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBlID0gZGVlcFBvcy5hbmNo
b3JUeXBlKCk7CkBAIC0yODM1LDYgKzI4NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJE
YXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjbwog
CiAgICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9m
ZnNldDsKICAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVy
T2Zmc2V0LnN0YXJ0SW5kZXg7CisgICAgLy8gU2luY2UgVGV4dE1hcmtlckRhdGEuaWdub3JlZCBp
cyBub3QgYXNzaWduZWQgaGVyZSwgaXQgYWxsb3dzIHRvIHJldHVybiB2YWxpZCBUZXh0TWFya2Vy
cyBmb3IgaWdub3JlZCBBWCBvYmplY3RzLgogCiAgICAgY2FjaGUtPnNldE5vZGVJblVzZShkb21O
b2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApp
bmRleCA1MzVlNzE0MjIyMWYuLjEyMTIyNmE0ZTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgVGV4dFN0
cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRleHRNYXJrZXI7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVsZW1l
bnQ7CkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9z
aXRpb247CiBjbGFzcyBXaWRnZXQ7CiAKKy8vIEZJWE1FOiBNb3ZlIGludG8gQVhUZXh0TWFya2Vy
IGNsYXNzLgogc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKICAgICBBWElEIGF4SUQ7CiAKQEAgLTY3
LDYgKzY5LDEyIEBAIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7CiAgICAgaW50IGNoYXJhY3RlclN0
YXJ0SW5kZXggeyAwIH07CiAgICAgaW50IGNoYXJhY3Rlck9mZnNldCB7IDAgfTsKICAgICBib29s
IGlnbm9yZWQgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJ
TikKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3JhcHBlciB7IG51bGxw
dHIgfTsKKyNlbGlmIFVTRShBVFNQSSkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIG9i
amVjdFdyYXBwZXIgeyBudWxscHRyIH07CisjZW5kaWYKIH07CiAKIHN0cnVjdCBDaGFyYWN0ZXJP
ZmZzZXQgewpAQCAtMTQ3LDYgKzE1NSw3IEBAIGNsYXNzIEFYT2JqZWN0Q2FjaGUgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFYT2JqZWN0Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xh
c3MgQVhJc29sYXRlZFRyZWU7CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBBWE9iamVjdENhY2hlJik7CisgICAgZnJpZW5kIEFYVGV4dE1h
cmtlcjsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAg
ICAgfkFYT2JqZWN0Q2FjaGUoKTsKQEAgLTIzNiw3ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9u
SW5UZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwogICAgIHZvaWQgdGV4
dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmKTsKICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4
dE1hcmtlciBuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKICAgICB2b2lkIHRl
eHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFy
a2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwog
ICAgIC8vIFVzZSBpZ25vcmVOZXh0Tm9kZVN0YXJ0L2lnbm9yZVByZXZpb3VzTm9kZUVuZCB0byBk
ZXRlcm1pbmUgdGhlIGJlaGF2aW9yIHdoZW4gd2UgYXJlIGF0IG5vZGUgYm91bmRhcnkuIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uOWQzZWQ2MTAxOTViCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBAIC0w
LDAgKzEsMjg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBWFRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDxwYWwv
c3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUo
Y2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICh2aXNpYmxl
UG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBvc2l0aW9uIGRlZXBQ
b3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgIE5vZGUqIG5v
ZGUgPSBkZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihub2RlKS0+aXNQYXNzd29yZEZp
ZWxkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9u
IGhhcyBhbiBhbmNob3IgdHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFu
Y2hvcmVkIG5vZGUsIHdlIHNob3VsZAorICAgIC8vIHNldCB0aGUgdGV4dCBtYXJrZXIgZGF0YSB3
aXRoIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNwb25kIHRv
IHRoZSBub2RlLgorICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gbV9heE9iamVjdENhY2hlLT5j
aGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisvKgor
IGlmIChkZWVwUG9zaXRpb24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0
ZXJBbmNob3IKKyAgICAgICAgfHwgZGVlcFBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlv
bjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pIHsKKyAgICAgICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7CisgICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICByZXR1cm47CisgICAgfQor
Ki8KKyAgICBzZXREYXRhKG5vZGUsIGRlZXBQb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpLCBkZWVwUG9zaXRpb24uYW5jaG9yVHlwZSgpLCB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHko
KSwgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQpOwor
ICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKGRvbU5vZGUpOworfQorCitBWFRleHRN
YXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUoY2FjaGUpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQu
aXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5vZGUqIGRvbU5vZGUgPSBjaGFyYWN0
ZXJPZmZzZXQubm9kZTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYm
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkg
eworICAgICAgICBtX2RhdGEuaWdub3JlZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRpb24uCisgICAgYXV0byB2aXNpYmxl
UG9zaXRpb24gPSBtX2F4T2JqZWN0Q2FjaGUtPnZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJP
ZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCB2cE9mZnNldCA9IDA7CisgICAg
aWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHZwT2Zmc2V0ID0gdmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKwor
ICAgIHNldERhdGEoZG9tTm9kZSwgdnBPZmZzZXQsIHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZh
bGVudCgpLmFuY2hvclR5cGUoKSwgdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCksIGNoYXJhY3Rl
ck9mZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0KTsKKyAgICBtX2F4T2Jq
ZWN0Q2FjaGUtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKK30KKworQVhUZXh0TWFya2VyOjpBWFRl
eHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5vZGUpCisgICAgOiBtX2F4T2Jq
ZWN0Q2FjaGUoY2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1f
ZGF0YS5ub2RlID0gbm9kZTsKKyAgICBtX2F4T2JqZWN0Q2FjaGUtPnNldE5vZGVJblVzZShtX2Rh
dGEubm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJl
ZiB0ZXh0TWFya2VyUmVmKQoreworICAgIGlmICghdGV4dE1hcmtlclJlZikKKyAgICAgICAgcmV0
dXJuOworCisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpID09IEFYVGV4dE1h
cmtlckdldFR5cGVJRCgpKTsKKyAgICBpZiAoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJlZikgIT0g
QVhUZXh0TWFya2VyR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChB
WFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikgPT0gc2l6ZW9mKG1fZGF0YSkpOwor
ICAgIGlmIChBWFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikgIT0gc2l6ZW9mKG1f
ZGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1lbWNweSgmbV9kYXRhLCBBWFRleHRNYXJr
ZXJHZXRCeXRlUHRyKHRleHRNYXJrZXJSZWYpLCBzaXplb2YobV9kYXRhKSk7CisKKyAgICBBY2Nl
c3NpYmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQoW3RoaXNdICgpIHsKKyAgICAg
ICAgaWYgKCFub2RlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9heE9iamVj
dENhY2hlID0gbm9kZSgpLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9KTsKK30K
KworUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gQVhUZXh0TWFya2VyOjpwbGF0Zm9ybU9iamVj
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJm1fZGF0YSwgc2l6ZW9mKG1fZGF0YSkpKTsK
K30KKwordm9pZCBBWFRleHRNYXJrZXI6OnNldERhdGEoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zm
c2V0LCBQb3NpdGlvbjo6QW5jaG9yVHlwZSBhbmNob3JUeXBlLCBBZmZpbml0eSBhZmZpbml0eSwg
dW5zaWduZWQgY2hhcmFjdGVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0KQor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYXhPYmplY3RDYWNo
ZSk7CisKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGF0YS5ub2Rl
ID0gbm9kZTsKKyAgICBtX2RhdGEub2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZGF0YS5hbmNob3JU
eXBlID0gYW5jaG9yVHlwZTsKKyAgICBtX2RhdGEuYWZmaW5pdHkgPSBhZmZpbml0eTsKKworICAg
IG1fZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyU3RhcnRJbmRleDsKKyAgICBt
X2RhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0OworCisgICAgYXV0byogb2Jq
ZWN0ID0gbV9heE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShub2RlKTsKKyAgICBtX2RhdGEuYXhJ
RCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICBtX2RhdGEub2JqZWN0V3JhcHBlciA9IG9iamVj
dC0+d3JhcHBlcigpOworfQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9yIFZpc2libGVQb3NpdGlv
bigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChpc051
bGwoKSB8fCBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4geyB9Owor
CisgICAgUG9zaXRpb24gcG9zaXRpb247CisgICAgaWYgKG1fZGF0YS5hbmNob3JUeXBlID09IFBv
c2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpCisgICAgICAgIHBvc2l0aW9uID0gUG9z
aXRpb24obm9kZSgpLCBtX2RhdGEub2Zmc2V0LCBtX2RhdGEuYW5jaG9yVHlwZSk7CisgICAgZWxz
ZQorICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwgbV9kYXRhLmFuY2hvclR5cGUp
OworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihwb3NpdGlvbiwgbV9kYXRh
LmFmZmluaXR5KTsKKyAgICBhdXRvIGRlZXBQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpOworICAgIGlmIChkZWVwUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiB7IH07CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGRlZXBQb3NpdGlvbi5kZXByZWNhdGVk
Tm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7
IH07CisKKyAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKTsKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKG1fZGF0
YS5heElEKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiB2aXNpYmxlUG9zaXRp
b247Cit9CisKK0FYVGV4dE1hcmtlcjo6b3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8
IGlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHJl
c3VsdChub2RlKCksIG1fZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCBtX2RhdGEuY2hhcmFjdGVy
T2Zmc2V0KTsKKyAgICAvLyBXaGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2li
bGVQb3NpdGlvbiBpcyB1cHN0cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRo
ZSBlbmQgb2YgdGhlIHByZXZpb3VzIGxpbmUuCisgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBD
aGFyYWN0ZXJPZmZzZXQgc28gdGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KKyAgICBpZiAo
bV9kYXRhLmFmZmluaXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKKyAgICAgICAgcmV0dXJuIG1f
YXhPYmplY3RDYWNoZS0+cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQocmVzdWx0LCBmYWxzZSk7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQVhUZXh0TWFya2Vy
OjpvYmplY3QoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisg
ICAgcmV0dXJuIG1fYXhPYmplY3RDYWNoZS0+Z2V0KG5vZGUoKSk7Cit9CisKK0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBBWFRleHRNYXJrZXI6Om9iamVjdFdyYXBwZXIoKSBjb25zdAorewor
ICAgIGlmIChpc0lnbm9yZWQoKSB8fCBpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7
CisKKyAgICByZXR1cm4gbV9kYXRhLm9iamVjdFdyYXBwZXI7Cit9CisKKyNpZiBFTkFCTEUoVFJF
RV9ERUJVR0dJTkcpCitTdHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29u
c3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisg
ICAgYXV0byBzZXBhcmF0b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKG5vZGUoKS0+
ZGVidWdEZXNjcmlwdGlvbigpCisgICAgICAgICwgc2VwYXJhdG9yLCAib2Zmc2V0ICIsIG1fZGF0
YS5vZmZzZXQKKyAgICAgICAgLCBzZXBhcmF0b3IsICJBbmNob3JUeXBlICIsIG1fZGF0YS5hbmNo
b3JUeXBlCisgICAgICAgICwgc2VwYXJhdG9yLCAiQWZmaW5pdHkgIiwgbV9kYXRhLmFmZmluaXR5
CisgICAgICAgICwgc2VwYXJhdG9yLCAiY2hhcmFjdGVyU3RhcnRJbmRleCAiLCBtX2RhdGEuY2hh
cmFjdGVyU3RhcnRJbmRleAorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAi
LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiYXhJRCAiLCBh
eElEKCkubG9nZ2luZ1N0cmluZygpCisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIs
IGlzSWdub3JlZCgpCisgICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhU
ZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQor
ICAgIDogc3RhcnQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRNYXJrZXIodGV4dE1hcmtlclJh
bmdlUmVmKSkKKyAgICAsIGVuZChBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1h
cmtlclJhbmdlUmVmKSkKK3sKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJhbmdl
UmVmKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKK30KKworQVhUZXh0TWFya2Vy
UmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNp
YmxlUG9zaXRpb25SYW5nZSYgcmFuZ2UpCisgICAgOiBzdGFydChjYWNoZSwgcmFuZ2Uuc3RhcnQp
CisgICAgLCBlbmQoY2FjaGUsIHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChjYWNoZSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRN
YXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4mIHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydCA9IEFYVGV4dE1hcmtlcihj
YWNoZSwgY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIHRy
dWUpKTsKKyAgICBlbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hlLT5zdGFydE9yRW5kQ2hh
cmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRNYXJrZXJS
YW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25zdCBBWFRl
eHRNYXJrZXImIGUpCisgICAgOiBzdGFydChzKQorICAgICwgZW5kKGUpCit7Cit9CisKK1JldGFp
blB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gQVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2Jq
ZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0CisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikmc3RhcnQubV9kYXRhLCBzaXpl
b2Yoc3RhcnQubV9kYXRhKSkpLmdldCgpCisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJD
cmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmZW5kLm1fZGF0YSwgc2l6
ZW9mKGVuZC5tX2RhdGEpKSkuZ2V0KCkKKyAgICApKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6
Om9wZXJhdG9yIFZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTsKK30KKworc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gQVhUZXh0TWFya2VyUmFuZ2U6OnNpbXBsZVJhbmdlKCkgY29uc3QK
K3sKKyAgICBhdXRvIHN0YXJ0Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0
KTsKKyAgICBhdXRvIGVuZEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChlbmQpOwor
ICAgIGlmICghc3RhcnRCb3VuZGFyeVBvaW50IHx8ICFlbmRCb3VuZGFyeVBvaW50KQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgKnN0YXJ0Qm91bmRhcnlQb2lu
dCwgKmVuZEJvdW5kYXJ5UG9pbnQgfSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVhZTJkZjBmMzIwNgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKQEAgLTAsMCAr
MSwxMDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBWE9iamVj
dENhY2hlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9i
amVjdDsKK3N0cnVjdCBDaGFyYWN0ZXJPZmZzZXQ7CisKK2NsYXNzIEFYVGV4dE1hcmtlciB7Cisg
ICAgZnJpZW5kIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIEFYVGV4dE1h
cmtlclJhbmdlOworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycworICAgIEFYVGV4dE1hcmtl
cihBWE9iamVjdENhY2hlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgQVhUZXh0TWFy
a2VyKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRN
YXJrZXIoQVhPYmplY3RDYWNoZSosIE5vZGUqKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBB
WFRleHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmKTsKKyNlbmRpZgorICAgIEFYVGV4dE1hcmtlcigp
ID0gZGVmYXVsdDsKKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPEFY
VGV4dE1hcmtlclJlZj4gcGxhdGZvcm1PYmplY3QoKSBjb25zdDsKKworICAgIG9wZXJhdG9yIFZp
c2libGVQb3NpdGlvbigpIGNvbnN0OworICAgIG9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNv
bnN0OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJlZigp
IGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlm
CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KCkgY29uc3Q7CisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXIqIG9iamVjdFdyYXBwZXIoKSBjb25zdDsKKworICAgIFRleHRNYXJr
ZXJEYXRhIGNvbnN0JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgTm9kZSog
bm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ub2RlOyB9CisgICAgQVhJRCBheElEKCkgY29u
c3Q7CisgICAgYm9vbCBpc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaWdub3JlZDsg
fQorCisjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQorICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0
aW9uKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIHNldERhdGEoTm9kZSos
IHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFuY2hvclR5cGUsIEFmZmluaXR5LCB1bnNpZ25l
ZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQpOworCisgICAg
QVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9OworICAgIFRleHRNYXJr
ZXJEYXRhIG1fZGF0YTsKK307CisKK2NsYXNzIEFYVGV4dE1hcmtlclJhbmdlIHsKK3B1YmxpYzoK
KyAgICAvLyBDb25zdHJ1Y3RvcnMuCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNo
ZSosIGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2Uo
QVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisgICAg
QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiwgY29uc3QgQVhUZXh0TWFya2Vy
Jik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFy
a2VyUmFuZ2VSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7
CisKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBsYXRmb3JtT2JqZWN0KCkg
Y29uc3Q7CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKKyAgICBz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNvbnN0OworI2lmIFBMQVRG
T1JNKENPQ09BKQorICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdlUmVmKCkgY29uc3QgeyBy
ZXR1cm4gcGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKyAgICBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIXN0YXJ0LmlzTnVsbCgpICYmICFlbmQuaXNOdWxs
KCk7IH0KKworICAgIEFYVGV4dE1hcmtlciBzdGFydDsKKyAgICBBWFRleHRNYXJrZXIgZW5kOwor
fTsKKworaW5saW5lIGJvb2wgQVhUZXh0TWFya2VyOjppc051bGwoKSBjb25zdAoreworICAgIHJl
dHVybiAhbV9heE9iamVjdENhY2hlIHx8ICFub2RlKCkgfHwgIW1fYXhPYmplY3RDYWNoZS0+aXNO
b2RlSW5Vc2Uobm9kZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNzgyODJmNzIwNWYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FY
VGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKKworI2lmIFBMQVRGT1JNKE1B
QykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCisjZW5kaWYK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWElEIEFYVGV4dE1hcmtlcjo6YXhJRCgpIGNvbnN0
Cit7CisgICAgcmV0dXJuIFtvYmplY3RXcmFwcGVyKCkgaWRlbnRpZmllcl07Cit9CisKK30gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggNDU0OGUyZDJlMDRhLi42NmI1ODMxMjRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2Vy
LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIK
ICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgpAQCAtNzE3LDM4ICs3
MTgsMjYgQEAgc3RhdGljIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFy
a2VyIGhlbHBlcnMKIAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVm
PiBuZXh0VGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2Vy
JiBtYXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtl
ckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZz
ZXQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gbmV4dE1hcmtl
ciA9IGNhY2hlLT5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgIGlmICghbmV4dE1hcmtlci5h
eElEKCkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0
ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiBuZXh0
TWFya2VyLnBsYXRmb3JtT2JqZWN0KCk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFy
a2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNo
ZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RhdGljIFJldGFp
blB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBj
YWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0
YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRh
LmF4SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFy
a2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJE
YXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7Ci19CiAKLS0gKFJldGFpblB0cjxBWFRleHRN
YXJrZXJSZWY+KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZz
ZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBuZXh0VGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0
ZXJPZmZzZXQpOwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPilwcmV2aW91c1Rl
eHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zm
c2V0Ci17Ci0gICAgcmV0dXJuIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChz
ZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOwor
ICAgIGF1dG8gcHJldmlvdXNNYXJrZXIgPSBjYWNoZS0+cHJldmlvdXNUZXh0TWFya2VyKG1hcmtl
cik7CisgICAgaWYgKCFwcmV2aW91c01hcmtlci5heElEKCkuaXNWYWxpZCgpKQorICAgICAgICBy
ZXR1cm4gbmlsOworICAgIHJldHVybiBwcmV2aW91c01hcmtlci5wbGF0Zm9ybU9iamVjdCgpOwog
fQogCiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIHNpbmNlIGNsaWVudHMgc2hvdWxkIG5v
dCBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QgYW5kIHNob3VsZCBub3QgYmUgZXhwb3NlZCBpbiB0
aGUgcHVibGljIGludGVyZmFjZS4KQEAgLTMzNzEsMjQgKzMzNjAsMjUgQEAgLSAoQVhUZXh0TWFy
a2VyUmFuZ2VSZWYpbGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtl
clJlZil0ZXh0TWEKICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgIHJldHVybiBuaWw7
CiAKLSAgICAgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0
TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0
ZXh0TWFya2VyKTsKKy8vICAgICAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwogICAgICAgICBWaXNpYmxlUG9z
aXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZTsKICAgICAgICAgc3dpdGNoICh0ZXh0VW5p
dCkgewogICAgICAgICBjYXNlIFRleHRVbml0OjpMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBv
c2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxl
UG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2Jq
ZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbihtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0
aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZp
c2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tp
bmdPYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0OjpSaWdodExpbmU6Ci0gICAgICAgICAg
ICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQ
b3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRp
b25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1h
cmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAg
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAot
ICAgICAgICByZXR1cm4gdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoY2FjaGUs
IHZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQpOwor
ICAgICAgICByZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UoY2FjaGUsIHZpc2libGVQb3NpdGlvblJh
bmdlKS5wbGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNjgyLDI1ICszNjcyLDIz
IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4g
KGlkKVtzZWxmIF90ZXh0TWFya2VyRm9ySW5kZXg6W251bWJlciBpbnRlZ2VyVmFsdWVdXTsKIAog
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9yVGV4dE1h
cmtlciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxl
YXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9
IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRv
KiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0g
ICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKLQotICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9y
VGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXIpOwot
ICAgICAgICAgICAgaWYgKCFheE9iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+
d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gW2F4T2Jq
ZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddOworICAgICAgICBBWFRleHRNYXJrZXIgbWFy
a2VyKHRleHRNYXJrZXIpOworICAgICAgICBhdXRvKiB3cmFwcGVyID0gbWFya2VyLm9iamVjdFdy
YXBwZXIoKTsKKyAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgICAgIH0pOwor
ICAgICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFjaG1lbnRWaWV3KQor
ICAgICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OworICAgICAgICByZXR1cm4gd3JhcHBl
cjsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRN
YXJrZXJSYW5nZUZvclVJRWxlbWVudCJdKSB7CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5
OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdWlFbGVtZW50
XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtl
clJhbmdlRnJvbVJhbmdlKHVpRWxlbWVudC5nZXQoKS0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1l
bnQuZ2V0KCktPmVsZW1lbnRSYW5nZSgpKTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1h
cmtlclJhbmdlRnJvbVJhbmdlKHVpRWxlbWVudC0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQt
PmVsZW1lbnRSYW5nZSgpKTsKKy8vICAgICAgICAgICAgYXV0byogY2FjaGUgPSB1aUVsZW1lbnQu
Z2V0KCktPmF4T2JqZWN0Q2FjaGUoKTsKKy8vICAgICAgICAgICAgaWYgKCFjYWNoZSkKKy8vICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CisvLyAgICAgICAgICAgIHJldHVybiBBWFRleHRNYXJr
ZXJSYW5nZShjYWNoZSwgdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKSkucGxhdGZvcm1P
YmplY3QoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zNzUxLDcgKzM3MzksNyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2lu
Z09iamVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1
cm4gKGlkKXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oYmFja2luZ09iamVjdC0+YXhPYmpl
Y3RDYWNoZSgpLCBiYWNraW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3Jl
UG9pbnQpKTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyKGJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9yUG9p
bnQod2ViQ29yZVBvaW50KSkucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwogICAgICAg
ICB9KTsKICAgICB9CiAKQEAgLTM4NDAsOSArMzgyOCw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2VyKFth
cnJheSBvYmplY3RBdEluZGV4OjBdKQogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFy
a2VyKFthcnJheSBvYmplY3RBdEluZGV4OjFdKSkKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJv
bU1haW5UaHJlYWQ8aWQ+KFsmYXJyYXldICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAg
ICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycygoQVhUZXh0TWFya2VyUmVm
KVthcnJheSBvYmplY3RBdEluZGV4OjBdLCAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RB
dEluZGV4OjFdKS5nZXQoKTsKLSAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIChpZClBWFRl
eHRNYXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDow
XSB9LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gfSB9LnBsYXRm
b3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBp
c0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJz
Il0pIHsKQEAgLTM4ODEsOCArMzg2OCw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJ
T05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hh
cmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAg
ICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRNYXJrZXJGb3JD
aGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBBWFRleHRNYXJr
ZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIG5leHRUZXh0TWFya2Vy
KGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAgICAg
fQogCkBAIC0zODk2LDggKzM4ODMsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9O
U19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5p
bDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJh
Y3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICAgICAg
cmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtlckZv
ckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFYVGV4dE1h
cmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNUZXh0
TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7
CiAgICAgfQogCkBAIC0zOTc4LDI2ICszOTY1LDMwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIChzbyBm
YXIpLgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2Vy
UmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxp
ZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0
KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5n
ZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRN
YXJrZXJSYW5nZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJr
ZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCB0cnVlKTsK
LSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtlclJhbmdl
IHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiAoaWQpYXhUZXh0TWFya2VyUmFu
Z2Uuc3RhcnQucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOworLy8gICAgICAgIHJldHVy
biBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8
aWQ+KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKKy8vICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9
IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OworLy8gICAgICAgICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpCisvLyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworLy8KKy8vICAg
ICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKKy8vCisvLyAgICAgICAgICAg
IHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5h
eE9iamVjdENhY2hlKCksIHJhbmdlLCB0cnVlKTsKKy8vICAgICAgICB9KTsKICAgICB9CiAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVB
dXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJv
dGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAg
ICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tp
bmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1h
cmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdl
KTsKLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShi
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBmYWxzZSk7Ci0gICAgICAgIH0p
OworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRNYXJr
ZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gKGlkKWF4VGV4dE1hcmtlclJhbmdlLmVuZC5wbGF0
Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CisvLyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFy
a2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0
cjxpZD4geworLy8gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2Vs
Zi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7CisvLyAgICAgICAgICAgIGlmICghYmFja2luZ09iamVj
dCkKKy8vICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisvLworLy8gICAgICAgICAgICBhdXRv
IHJhbmdlID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RD
YWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOworLy8gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0
T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBy
YW5nZSwgZmFsc2UpOworLy8gICAgICAgIH0pOwogICAgIH0KIAogI2lmIEVOQUJMRShUUkVFX0RF
QlVHR0lORykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1l
bnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1ZDMzZGFj
YjJkM2YuLjUwNDYwMjU4ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4
dApAQCAtMSwxNyArMSwxNCBAQAotdGV4dCBoZXJlCi10ZXh0IGJsb2NrCi10ZXh0IGhlcmUKIFRo
aXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBl
bGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4KIAotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkgPT09IDEwCitQ
QVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVh
bCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoZW5kKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aChuZXdSYW5nZSkgPT09IDEwCitQQVNTOiBuZXdSYW5nZS5pc0VxdWFsKHJhbmdl
KSA9PT0gdHJ1ZQogCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJS
YW5nZTEpIGlzIDEwCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUK
LVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIGlzIDEwCi1Q
QVNTIG5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkgaXMgdHJ1ZQogUEFT
UyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK3RleHQgaGVy
ZQordGV4dCBibG9jawordGV4dCBoZXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAppbmRleCBkNDkzNmFk
MjJkMTguLjM0MGFiMWUxOTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCkBAIC0xLDUxICsxLDQy
IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRt
bD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5q
cyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAogdGV4dCBo
ZXJlCi08ZGl2IGlkPSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPnRleHQgYmxvY2s8L2Rpdj4KKzxkaXYg
aWQ9InRleHQxIj50ZXh0IGJsb2NrPC9kaXY+CiB0ZXh0IGhlcmUKIAotPHAgaWQ9ImRlc2NyaXB0
aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQotICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1cm4g
dGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuIik7Ci0KICAgICBp
ZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCB0ZXN0T3V0
cHV0ID0gIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUg
Y29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci5cblxuIjsKIAotICAgICAg
ICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7Ci0gICAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAg
ICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInRleHQxIikuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgICAgLy8gR2V0IHRoZSBhY3R1
YWwgdGV4dCBub2RlLgotICAgICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgwKTsKKyAg
ICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMg
ZWxlbWVudCdzIHJhbmdlLgorICAgICAgICB2YXIgcmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgdmFyIHN0YXJ0ID0g
dGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOwogCi0gICAgICAg
ICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgcmFu
Z2UuCi0gICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTEgPSB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIiwgIjEwIik7Ci0gICAgICAgICAgdmFyIHN0YXJ0
TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlMSk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdp
dmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KKyAgICAgICAgdGVz
dE91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0KS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRo
YXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdl
IHN0YXJ0ZWQgd2l0aC4KLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAg
ICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUg
c2FtZSBlbGVtZW50LgorICAgICAgICB2YXIgZW5kID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSIsICJ0
cnVlIik7CiAKLSAgICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNrIHRoYXQg
aXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KLSAgICAgICAgICB2YXIgZW5kTWFya2VyID0g
dGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOwot
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIE1ha2UgYSBtYXJr
ZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBs
ZW5ndGguCisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhzdGFydCwgZW5kKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSIsICIxMCIpOwogCi0gICAgICAgICAgLy8gTWFr
ZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hl
Y2sgdGhlIGxlbmd0aAotICAgICAgICAgIHZhciBuZXdNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAgICAgICBz
aG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIiwgIjEw
Iik7CisgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciBy
YW5nZSB3ZSBzdGFydGVkIHdpdGgKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoIm5ld1Jh
bmdlLmlzRXF1YWwocmFuZ2UpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEFuZCBtYWtlIHN1
cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKLSAgICAg
ICAgICBzaG91bGRCZVRydWUoIm5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdl
MSkiKTsKKyAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3Jl
ZC1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCAwMmM1NzY1OGE1NmYuLjhmYzVmZDcyNDhiMSAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0
ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBl
Y3RlZC50eHQKQEAgLTEsMTYgKzEsMTMgQEAKLUZpcnN0IGxpbmUgb2YgdGV4dAotYnV0dG9uCi1U
aGlyZCBsaW5lIG9mIHRleHQKIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBh
Y2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LgogCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShy
YW5nZSkgPT09ICdGaXJzdCBsaW5lIG9mIHRleHQnCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdidXR0b24nCitQQVNTOiByZXN1bHRFbGVtZW50LnN0
cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JworUEFTUzogcmVzdWx0
RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCcKIAot
Ci1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn
Rmlyc3QgbGluZSBvZiB0ZXh0JwotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShsaW5lUmFuZ2UpIGlzICdidXR0b24nCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCcKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JwogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1l
bGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGlj
YXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKaW5kZXggNmVhODE4N2MwMjI2Li45NWQ3YTQ2
Y2VjZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1w
cmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwK
QEAgLTEsNTAgKzEsNDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhU
TUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2li
aWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxi
b2R5PgogCis8ZGl2IGlkPSJjb250YWluZXIiIHJvbGU9Imdyb3VwIj4KIDxkaXYgaWQ9InRlc3Qi
PkZpcnN0IGxpbmUgb2YgdGV4dDxicj4KIDxidXR0b24gaWQ9ImJ1dHRvbiIgYXJpYS1oaWRkZW49
InRydWUiPmJ1dHRvbjwvYnV0dG9uPgogPGJyPlRoaXJkIGxpbmUgb2YgdGV4dDwvZGl2PgotCi08
cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+
CiAKIDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8g
c2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LiIp
OwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAg
ICAgCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAg
ICAgICAgdmFyIGNvbnRhaW5lckVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0
aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25v
cmVkIGVsZW1lbnQuXG5cbiI7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAgICAgICAg
IHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJ0ZXN0IikuY2hpbGRBdEluZGV4KDApOwotICAgICAgICB2YXIgbWFya2VyUmFuZ2UgPSBl
bGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIHNob3Vs
ZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ0Zp
cnN0IGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRyeSB0byBnZXQgdGhl
IGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzCi0gICAgICAgIHZh
ciB0ZXh0TWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIo
dGV4dE1hcmtlcik7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2Vy
KHRleHRNYXJrZXIpOwotICAgICAgICB2YXIgbGluZVJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1h
cmtlclJhbmdlRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoImVs
ZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSkiLCAiJ2J1dHRvbiciKTsK
LSAgICAgICAgCi0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpOwotICAgICAgICB2YXIgc3RhcnRFbGVtZW50ID0g
ZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0g
ICAgICAgIAorICAgICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVs
ZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworCisg
ICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQg
bWFya2VyIGNhbGxzLgorICAgICAgICB2YXIgbWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5uZXh0
VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFy
a2VyKG1hcmtlcik7CisgICAgICAgIHJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdl
Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJlbGVtZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ2J1dHRvbiciKTsKKworICAgICAg
ICBtYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5n
ZSk7CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworCiAgICAgICAgIC8vIFNlYXJjaCBmb3J3YXJkCi0g
ICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JT
ZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5Iiwg
IiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCisgICAgICAgIHZh
ciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShz
dGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7CisKICAgICAgICAgLy8gU2VhcmNoIGJhY2t3YXJk
Ci0gICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNl
YXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5Iiwg
IiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKyAgICAgICAgcmVzdWx0RWxlbWVu
dCA9IGNvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBm
YWxzZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxp
bmUgb2YgdGV4dCciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFp
bmVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQp
OwogICAgIH0KLSAgICAgICAgCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5l
d2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdl
LWV4cGVjdGVkLnR4dAppbmRleCBjZGNjNzdjM2M4NzEuLjZhN2QyZjc4YTNlNCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFu
Z2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRt
YXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMSwyODEgKzEsMjA3IEBACi1U
aGluayBkaWZmZXJlbnQgQXBwbGUKLQotYm9sZCBpdGFsaWMKLXVuZGVybGluZSBsYXN0IQotCi1I
ZWxsbyBXb3JsZCEKLVRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtz
IHByb3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1Mi
IG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1RoaXMgdGVzdHMgdGhh
dCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KIAogY29udGVudCBsZW5n
dGg6IDY1CiBBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUg
dGV4dDoKLTAKLScnCi0xCi0nVCcKLTIKLSdUaCcKLTMKLSdUaGknCi00Ci0nVGhpbicKLTUKLSdU
aGluaycKLTYKLSdUaGluayAnCi03Ci0nVGhpbmsgZCcKLTgKLSdUaGluayBkaScKLTkKLSdUaGlu
ayBkaWYnCi0xMAotJ1RoaW5rIGRpZmYnCi0xMQotJ1RoaW5rIGRpZmZlJwotMTIKLSdUaGluayBk
aWZmZXInCi0xMwotJ1RoaW5rIGRpZmZlcmUnCi0xNAotJ1RoaW5rIGRpZmZlcmVuJwotMTUKLSdU
aGluayBkaWZmZXJlbnQnCi0xNgotJ1RoaW5rIGRpZmZlcmVudCAnCi0xNwotJ1RoaW5rIGRpZmZl
cmVudCBBJwotMTgKLSdUaGluayBkaWZmZXJlbnQgQXAnCi0xOQotJ1RoaW5rIGRpZmZlcmVudCBB
cHAnCi0yMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsJwotMjEKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUnCi0yMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKLTIzCi0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiswICcnCisxICdUJworMiAnVGgnCiszICdUaGknCis0ICdUaGluJworNSAnVGhpbmsnCis2
ICdUaGluayAnCis3ICdUaGluayBkJworOCAnVGhpbmsgZGknCis5ICdUaGluayBkaWYnCisxMCAn
VGhpbmsgZGlmZicKKzExICdUaGluayBkaWZmZScKKzEyICdUaGluayBkaWZmZXInCisxMyAnVGhp
bmsgZGlmZmVyZScKKzE0ICdUaGluayBkaWZmZXJlbicKKzE1ICdUaGluayBkaWZmZXJlbnQnCisx
NiAnVGhpbmsgZGlmZmVyZW50ICcKKzE3ICdUaGluayBkaWZmZXJlbnQgQScKKzE4ICdUaGluayBk
aWZmZXJlbnQgQXAnCisxOSAnVGhpbmsgZGlmZmVyZW50IEFwcCcKKzIwICdUaGluayBkaWZmZXJl
bnQgQXBwbCcKKzIxICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMiAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlJworMjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiAnCi0yNAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorMjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBiJwotMjUKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzI1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm8nCi0yNgotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorMjYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2wnCi0y
NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkJwotMjgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI4ICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYm9sZCAnCi0yOQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjkgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkIGknCi0zMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzAgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0JwotMzEKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzMxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGEnCi0zMgotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorMzIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWwnCi0z
MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpJwotMzQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM0ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMnCi0zNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzUg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogJwotMzYKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzM2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHUn
Ci0zNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogdW4nCi0zOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzggJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kJwotMzkKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzM5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGUn
Ci00MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogdW5kZXInCi00MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDEgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsJwotNDIKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzQyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGVybGknCi00MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDMgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW4nCi00NAotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNDQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
JwotNDUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSAnCi00NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NDYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGwnCi00
NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhJwotNDgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ4
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXMnCi00
OQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QnCi01MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NTAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3Qh
JwotNTEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUxICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUyCi0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCis1MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUg
bGFzdCEKIAog77+8JwotNTMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUzICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIJwotNTQK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZScKLTU1Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis1NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
bmUgbGFzdCEKIAog77+8SGVsJwotNTYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU2ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
ZWxsJwotNTcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU3ICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbycKLTU4Ci0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCis1OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRh
bGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gJwotNTkKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzU5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGlu
ZSBsYXN0IQogCiDvv7xIZWxsbyBXJwotNjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYwICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDv
v7xIZWxsbyBXbycKLTYxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MSAnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29y
JwotNjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYyICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsJwotNjMKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzYzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCcKLTY0Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis2NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUgbGFzdCEKQEAgLTI5MSw3ICsyMTcsMTEgQEAgdW5kZXJsaW5lIGxhc3QhCiAKIO+/
vEhlbGxvIFdvcmxkIScKICcnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAog
VEVTVCBDT01QTEVURQogCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAppbmRleCBjZTFj
YmYyZWVmZTMuLmMzMDQ5ODY3YjA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCkBAIC0x
LDkgKzEsOSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4i
PgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0Lmpz
Ij48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiA8ZGl2IGlk
PSJjb250ZW50IiByb2xlPSJncm91cCI+CiAgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVudDwvZW0+
IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgpAQCAtMTEsMzYgKzExLDM0IEBACiAg
ICAgPGJ1dHRvbj5IZWxsbyBXb3JsZCE8L2J1dHRvbj4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBw
cm9wZXJseS4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
LSAgICAgICAgYXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjb250ZW50Iik7Ci0gICAgICAgIGNvbnRlbnRUZXh0TWFya2VyUmFuZ2UgPSBh
eEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChheEVsZW1lbnQpOwotICAgICAgICB0
ZXh0TGVuZ3RoID0gYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjb250ZW50VGV4
dE1hcmtlclJhbmdlKS5sZW5ndGg7Ci0gICAgICAgIGRlYnVnKCJjb250ZW50IGxlbmd0aDogIiAr
IHRleHRMZW5ndGgpOworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCB0ZXh0
TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS5cblxuIjsKIAotICAgICAgICBkZWJ1
ZygiQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6
Iik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIGRlYnVnKGkpOwotICAgICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIGkpOwotICAgICAgICAgICAgZGVidWcoIiciICsgYXhF
bGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsK
KyAgICAgICAgbGV0IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgbGV0IHJhbmdlID0gY29udGVudC50ZXh0
TWFya2VyUmFuZ2VGb3JFbGVtZW50KGNvbnRlbnQpOworICAgICAgICBsZXQgY29udGVudExlbmd0
aCA9IGNvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKS5sZW5ndGg7CisgICAg
ICAgIG91dHB1dCArPSBgY29udGVudCBsZW5ndGg6ICR7Y29udGVudExlbmd0aH1cbmA7CisKKyAg
ICAgICAgb3V0cHV0ICs9ICJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3Rl
ciBpbiB0aGUgdGV4dDpcbiI7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZW50TGVuZ3Ro
OyArK2kpIHsKKyAgICAgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JS
YW5nZSgwLCBpKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgJHtpfSAnJHtjb250ZW50LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKICAgICAgICAgfQogCi0gICAgICAgIGRl
YnVnKCJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToiKTsKLSAgICAgICAgdGV4dE1h
cmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKLSAg
ICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgb3V0cHV0ICs9ICJHZXQgdGhlIHJhbmdlIGZv
ciB0aGUgd29yZCBBcHBsZTpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2Vy
UmFuZ2VGb3JSYW5nZSgxNiwgNSk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisKKyAgICAgICAgb3V0cHV0ICs9ICJP
dXQgb2YgcmFuZ2UgdmFsdWVzOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJr
ZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisgICAgICAgIHJhbmdlID0gY29u
dGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9
IGAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKIAotICAg
ICAgICBkZWJ1ZygiT3V0IG9mIHJhbmdlIHZhbHVlczoiKTsKLSAgICAgICAgdGV4dE1hcmtlclJh
bmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7Ci0gICAgICAg
IGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlKSArICInIik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0
TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVt
ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5
ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQogPC9zY3JpcHQ+Ci08
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8
L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4
dC1ub2RlLWV4cGVjdGVkLnR4dAppbmRleCA5MTVkNTY5YzBlZDAuLmQ4NGI4YjIwMTc0MiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1j
cmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQu
dHh0CkBAIC0xLDEwICsxLDcgQEAKLVRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuCiBUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUg
cG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRl
clRleHQgb2JqZWN0cy4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogY29udGVu
dC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChlbGVtZW50KSA9PT0gdHJ1ZQogCi0KLVBBU1MgY29u
dGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkgaXMgdHJ1ZQogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10
ZXh0LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9z
aXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCmluZGV4IGM3MjU3ZDU4NWQxYS4uMmMzZDg5
ZDE5ODRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxl
LXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbApA
QCAtMSw0MCArMSwzMiBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJp
bGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJv
ZHk+CiAKLTxkaXYgaWQ9ImNvbnRlbnQiIHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6MjAwcHg7
Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweDsiPgogVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IAogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0gICAgZGVz
Y3JpcHRpb24oIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3Igdmlz
aWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwg
UmVuZGVyVGV4dCBvYmplY3RzLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgewotCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQi
KS5mb2N1cygpOwotICAgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0
IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCi0gICAgICAgICAgdmFyIG1hcmtlckF0
UG9pbnQgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50Lndp
ZHRoLzIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVpZ2h0LzIpOwotICAgICAgICAgIHZhciB0ZXh0
RWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtl
ckF0UG9pbnQpOwotCi0gICAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1l
IGFzIHRoZSBvbmUgd2Ugd2FudGVkLgotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNvbnRl
bnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOwotICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0
RWxlbWVudCkiKTsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHByb3RlY3RzIGFnYWluc3Qg
YSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3Vy
ZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy5cblxuIjsKKworICAg
ICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgiY29udGVudCIpOworICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRo
aXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHZhciBtYXJrZXIgPSBjb250
ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoIC8gMiwgY29u
dGVudC55ICsgY29udGVudC5oZWlnaHQgLyAyKTsKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVt
ZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgorICAgICAgICB2YXIgZWxlbWVu
dCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7Cisv
LyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5kb21JZGVudGlmaWVyIiwgIidjb250
ZW50JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJjb250ZW50LmNoaWxkQXRJbmRleCgw
KS5pc0VxdWFsKGVsZW1lbnQpIiwgInRydWUiKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAg
ZGVidWcob3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1t
YXJrZXItcHJldmlvdXMtbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKaW5kZXggNWVkM2JkMGQwNmRl
Li4zOGYxM2VkN2EzZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4
dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1s
CkBAIC0xLDE1ICsxLDE3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8bWV0YSBjaGFyc2V0PSJVVEYtMTYiPgogPC9o
ZWFkPgogPHN0eWxlPgogLnVzZXJzZWxlY3QgeyB1c2VyLXNlbGVjdDogbm9uZTsgLXdlYmtpdC11
c2VyLXNlbGVjdDogbm9uZTsgfQogPC9zdHlsZT4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5Pgog
Ci08ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2PgorPGRpdiBpZD0iY29udGVu
dCI+Cis8ZGl2IGlkPSJ0ZXh0Ij50ZXh0PC9kaXY+CiA8YnI+CiB0ZXh0MQogCkBAIC0zMiwyOSAr
MzQsNDUgQEAgZgogPHAgaWQ9InRleHQ2Ij5hICAgICBiPC9wPgogCiA8cCBpZD0idGV4dDciPmF1
ZGlvPGF1ZGlvIGNvbnRyb2xzPjwvYXVkaW8+ZmlsZTwvcD4KLQotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgorICAg
IGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBv
YmopIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAg
ICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgICAgICBjdXJyZW50
TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9Cisg
ICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisg
ICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQorCisg
ICAgZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
ciwgb2JqKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAg
ICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3Vz
TWFya2VyKTsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAg
ICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBjdXJyZW50OiBjdXJy
ZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRl
ZCBjb3JyZWN0bHkuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotICAgICAgICAKLSAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAgICAgLy8gR2V0IHRoZSBh
Y3R1YWwgdGV4dCBub2RlLgotICAgICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7Ci0g
ICAgICAgIAorICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlv
dXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cbiI7
CisKKyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInRleHQiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgogICAg
ICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4
dE1hcmtlclJhbmdlKSIsICI0Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKwog
ICAgICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5l
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAg
IHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3Rh
cnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCki
KTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUi
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKwogICAgICAg
ICAvLyBDaGVjayBuZXh0IHRleHQgbWFya2VyLiAoQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdp
bGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIsIHByZXZpb3VzTWFy
a2VyLCBtYXJrZXJSYW5nZTs7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZp
b3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7CkBAIC02Miw1OCArODAsNTcgQEAgZgogICAg
ICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50
TWFya2VyKTsKICAgICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwotICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsK
LSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gQWR2YW5j
ZSBvbmUgbW9yZSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmRlIGF0ICJ0IiBpbiAidGV4dDEiLgog
ICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
LCB0ZXh0KTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2Ug
PSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRN
YXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIiwgIid0JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOwor
CiAgICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLiAoVHJhdmVyc2UgYmFja3dh
cmRzIG9uZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgcmVzdWx0
ID0gYmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIm5ld2xpbmUiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAg
ICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBs
YW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCiAgICAgICAgIHJlc3VsdCA9IGJh
Y2t3YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAg
IHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2Vy
ID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAg
aWYgKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAibWFjIikKLSAgICAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ3QnICsgbmV3bGluZSIpOworICAgICAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUi
KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKyAgICAgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIn
dCciKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUKICAg
ICAgICAgdmFyIHRleHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJ0ZXh0MiIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMiA9IHRleHQyLnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dDIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJS
YW5nZTIpIiwgIjUiKTsKICAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1
MzIpLCAiW0FUVEFDSE1FTlRdIik7Ci0gICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZvciBy
YW5nZTogIiArIHN0cik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gYE9iamVjdCBzdHJp
bmcgZm9yIHJhbmdlOiAke3N0cn1cbmA7CisKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQy
LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKTsKICAg
ICAgICAgLy8gQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCAiZCIuCiAgICAg
ICAgIHJlc3VsdCA9IGZvcndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRl
eHQyKTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0
ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAiJ2QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOwor
CiAgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyA2IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFu
ZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gYmFj
a3dhcmRzKDYsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAg
IHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2Vy
ID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IicxJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKKwogICAgICAgICAvLyBD
aGVjayB0aGUgY2FzZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZp
b3VzVGV4dE1hcmtlciBzaG91bGQgc3RpbGwgd29yay4KLSAgICAgICAgdmFyIHRleHQzID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOwotICAg
ICAgICB0ZXh0MyA9IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgCisgICAgICAgIHZh
ciB0ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
dGV4dDMiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0
IHVzZXItc2VsZWN0Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7CiAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTg7IGkrKykgewpAQCAtMTI1LDM0ICsxNDIsMzEg
QEAgZgogICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwg
bWFya2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidlY3QnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKICAg
ICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhlIHNlY29uZCBtYXJrZXIgZm9yIDYgY2hhcmFj
dGVycywgdGhlIHJhbmdlIHNob3VsZCBiZSAic2VsIgotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDY7IGkrKykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1h
cmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIx
LCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOwog
CiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcGFzc3dvcmQgZmllbGQuCiAgICAgICAg
IHZhciBwc3cgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InBzdyIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMyA9IHBzdy50ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KHBzdyk7CiAgICAgICAgIHZhciBzdGFydCA9IHBzdy5zdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMyk7Ci0gICAgICAgIHNob3VsZEJl
VHJ1ZSgiIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIik7Ci0g
ICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihzdGFydCkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIENoZWNrIG5l
eHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgY2FsbCB3aWxsIHNraXAgcGFzc3dvcmQgZmllbGQKICAg
ICAgICAgLy8gV2Ugc3RhcnQgZnJvbSB0ZXh0MiBhbmQgYWR2YW5jZSA2IGNoYXJhY3RlcnMsIGl0
IHNob3VsZCBza2lwIHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgbGFuZCBvbiB0ZXh0My4KICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UyKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKysp
IHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJy
ZW50TWFya2VyID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAg
IH0KLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIiwgInRydWUiKTsKICAgICAgICAgLy8gQ2hlY2sgcHJl
dmlvdXMgdGV4dCBtYXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIgbm9kZS4KICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsK
ICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgo
MikpIik7Ci0gICAgICAgIAotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1
YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gTWFrZSBz
dXJlIHRoYXQgdGV4dCBub2RlIHdpdGggbGluZSBicmVha3MsIHdlIGNhbiBnbyB0aHJvdWdoIGl0
IHdpdGggbmV4dC9wcmV2aW91cyBjYWxsLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOwogICAgICAgICB0ZXh0TWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CkBAIC0xNjMs
ODcgKzE3Nyw2NCBAQCBmCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9
IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1h
cmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICInZiciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZiciKTsKKwog
ICAgICAgICBlbmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IGVuZE1hcmtlcjsKLSAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCA3OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5wcmV2aW91
c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyUmFu
Z2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGN1cnJlbnRN
YXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2EnIik7CisK
ICAgICAgICAgLy8gVGVzdCBjYXNlIHdpdGggZW1vamkuCiAgICAgICAgIHRleHQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ1Iik7CiAgICAgICAg
IHZhciBlbW9qaVRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVu
dCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVt
b2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CiAg
ICAgICAgIC8vIE1ha2Ugc3VyZSBuYXZpZ2F0aW5nIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIg
aXMgYnkgZW1vamkuCiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UoZW1vamlUZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQg
PSBmb3J3YXJkKDIsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iP
JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIiwgIifwn5iPJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwg
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQpKSIsICIn8J+YgyciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBj
b2xsYXBzZWQgd2hpdGVzcGFjZS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDYiKTsKICAgICAgICAgdmFyIGNvbGxhcHNl
ZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxh
cHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2Vy
UmFuZ2UpIiwgIjMiKTsKICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpOwogICAg
ICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4
dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCkpIiwgIidhJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJk
KDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91
bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSIsICInICciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlv
dXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CiAg
ICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9
IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAi
J2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2Fz
ZSB3aXRoIHJlcGxhY2VkIGVsZW1lbnRzIChzaG91bGQgdXNlIG9iamVjdCByZXBsYWNlbWVudCBj
aGFyYWN0ZXIpLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NyIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZG
Q2ZpbGUnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVGRkZDZmlsZSciKTsKICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7
CiAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAg
ICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAg
ICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQu
ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJr
ZXIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJl
dmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtl
clJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBj
dXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZD
JyIpOwogCi0gICAgICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBj
dXJyZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtl
cjsKLSAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAgICAgICAgICAgY3Vy
cmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICAK
LSAgICAgICAgZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBp
KyspIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRN
YXJrZXIocHJldmlvdXNNYXJrZXIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBv
YmoucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJr
ZXIsCi0gICAgICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAg
fTsKLSAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAg
ICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nl
c3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQu
dHh0CmluZGV4IDI5MjY0MWE3ZTAzOC4uNWEwYTMyYzI4ZDcwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVj
dGVkLnR4dApAQCAtMSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4ndCBz
ZWxlY3QKLWFiYyBkZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMgdGVz
dHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRl
ZCBjb3JyZWN0bHkuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0
KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVu
ZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JyArIG5ld2xpbmUKLVBBU1MgdGV4dDIu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKK1BBU1M6IHRleHQu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRl
eHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtl
cihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcgKyBuZXdsaW5l
CitQQVNTOiB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09
IDUKIE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQy
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQy
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQz
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4
dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAh
cHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFT
UyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlciku
aXNFcXVhbCh0ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikp
IGlzIHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICdmJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
aXMgJ2EnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJh
bmdlKSBpcyA0Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMg
J/CfmI8nCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/Cf
mIMnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VN
YXJrZXJSYW5nZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlz
ICcgJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUn
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/
vCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
ICdkJworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9
PT0gJzEnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
ID09PSAnZWN0JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSA9PT0gJ3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKHN0YXJ0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0
ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNF
cXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8Jwor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8
JworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAor
CisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464017</attachid>
            <date>2022-12-12 18:34:27 -0800</date>
            <delta_ts>2022-12-13 15:58:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221212213426.patch</filename>
            <type>text/plain</type>
            <size>88295</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA4NmQxZTkyZGNkMWEzZmQwZjRmODM1ZTdkYzQ5ZTUyYzYwZmMxMTFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTggKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8ICA4MiArKystLQogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDExICsKIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCB8IDI4NyArKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDEw
MiArKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAg
fCAgMzkgKysrCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAg
fCAxMjMgKysrKy0tLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQu
dHh0ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sICAgICAg
ICAgIHwgIDUxICsrLS0KIC4uLnJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVk
LnR4dCB8ICAxNSArLQogLi4uc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5o
dG1sIHwgIDYzICsrLS0KIC4uLi90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50
eHQgICB8IDIxMCArKysrKy0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJh
bmdlLmh0bWwgICAgICAgfCAgNDggKystCiAuLi4tcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9k
ZS1leHBlY3RlZC50eHQgfCAgIDUgKy0KIC4uLi92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10
ZXh0LW5vZGUuaHRtbCB8ICA0MCArLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0
bWwgICAgICAgICAgICB8IDE3NSArKysrKy0tLS0tLQogLi4uL3RleHQtbWFya2VyLXByZXZpb3Vz
LW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrLS0tCiAxOSBmaWxlcyBjaGFuZ2VkLCA4Njkg
aW5zZXJ0aW9ucygrKSwgNDk5IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKIGNyZWF0ZSBt
b2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtl
ckNvY29hLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCA3NWVhMGYzZjdjY2IuLjE4OTI2ODIzNDk5NiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQKQEAgLTQ1NSw2ICs0NTUsNyBAQCBNb2R1bGVzL3dlYnhyL1hSU2Vzc2lv
bkV2ZW50LmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNwcAogYWNjZXNzaWJpbGl0eS9BWExv
Z2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKK2FjY2Vzc2liaWxpdHkv
QVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWQuY3Bw
CiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCiBhY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0Cmlu
ZGV4IDBmMmRmYTQ4YjgzZC4uNGFhNjg2MWE0ZjljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQK
QEAgLTEyNiw2ICsxMjYsNyBAQCBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2tN
b2NrLm1tCiBNb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1JbWFnZS5tbQog
TW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5tbQorYWNjZXNz
aWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSBAbm8tdW5pZnkKIGFjY2Vzc2liaWxp
dHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxp
dHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggMGVjYTExNzgwYzk0Li43ZWJmODUyZGQ1N2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1MjQs
NiArNDUyNCw4IEBACiAJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAvKiBDb2RlR2VuZXJhdG9y
LnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIz
MDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2
IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8qIGdlbmVyYXRlLWJpbmRp
bmdzLnBsICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUMwQzA1NENEMTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEg
LyogSURMUGFyc2VyLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCUMwRTIwOEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTIwOEEwMjkzNzlD
NkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLzsgfTsKKwkJQzBFMjA4QjYyOTM5M0REMDAw
QzBEMkQzIC8qIEFYVGV4dE1hcmtlckNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4dE1h
cmtlckNvY29hLm1tICovOyB9OwogCQlDMEUyRjMyNzI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNj
ZXNzaWJpbGl0eS50YmQgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoV2VhaywgKTsgfTsgfTsKIAkJQzBGMkE0NDEx
Mzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVw
cm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9yLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMTA1REE2MzBG
M0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAqLzsgfTsKQEAgLTE2Mzc1
LDYgKzE2Mzc3LDkgQEAKIAkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYTG9nZ2VyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVDOCAvKiBBWElzb2xhdGVk
T2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29sYXRlZE9iamVjdE1hYy5t
bTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhMb2dnZXIuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owor
CQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYVGV4dE1hcmtlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBB
WFRleHRNYXJrZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEFYVGV4dE1hcmtlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50ZXh0
LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNzaWJpbGl0eS50YmQ7IHBh
dGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsg
fTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBl
cmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5w
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEwRjNBQTY4RjAwMURENDRG
IC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgcGF0aCA9IC4uLy4uL1BB
TC9wYWwvdGV4dC9UZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0yMTM0Myw2ICsyMTM0OCw3IEBACiAJCTI5QTgxMjA0MEZCQjlCNDEwMDUx
MDI5MyAvKiBhY2Nlc3NpYmlsaXR5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGls
ZHJlbiA9ICgKKwkJCQlDMEUyMDhCNzI5MzkzRTFBMDBDMEQyRDMgLyogY29jb2EgKi8sCiAJCQkJ
QUFBNzI4RUYxNkQxRDhCQzAwRDNCQkM2IC8qIGlvcyAqLywKIAkJCQkyOUFFMjEyOTIxQUI5RUNC
MDA4NjkyODMgLyogaXNvbGF0ZWR0cmVlICovLAogCQkJCTI5QTgxMjA1MEZCQjlCNTIwMDUxMDI5
MyAvKiBtYWMgKi8sCkBAIC0yMTQxOSw2ICsyMTQyNSw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlF
NDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJB
IC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAv
KiBBWE9iamVjdENhY2hlLmggKi8sCisJCQkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFY
VGV4dE1hcmtlci5jcHAgKi8sCisJCQkJQzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4
dE1hcmtlci5oICovLAogCQkJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0
ZUNoYW5nZUludGVudC5oICovLAogCQkJCUJDNEE1MzMwMjU2MDU5MDMwMDI4QzU5MiAvKiBGb3Jj
ZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAqLywKIAkJCSk7CkBAIC0zMTM2Nyw2ICszMTM3NSwxNCBA
QAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUMw
RTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3Vw
OworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4
dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRp
byAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNDkzMSw2
ICszNDk0Nyw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0ZWRP
YmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBB
WElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEw
MjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIwOEEyMjkzNzlD
NkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQzlGMkY5
MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMTQ3N0U3NzcwQkY0MTM0QTAwMTUyODcyIC8qIEJhY2tGb3J3YXJkQ2FjaGUuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxNzQxRDBGMEIwNzI1OUEwMEVENDQyQyAvKiBCYWNrRm9yd2Fy
ZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCkBAIC00MDE4Miw2ICs0MDE5OSw3IEBACiAJCQkJMDcz
OEU1RUMyNDk5ODM5MDAwREExMDFDIC8qIEFWT3V0cHV0RGV2aWNlTWVudUNvbnRyb2xsZXJUYXJn
ZXRQaWNrZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQlDRDMzNkY2MTE3RjlGNjQ3MDBERERDRDAg
LyogQVZUcmFja1ByaXZhdGVBVkZPYmpDSW1wbC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTQ5OTZD
MEY2MjcxNzc0ODgwMDJDMTI1RCAvKiBBVlZpZGVvQ2FwdHVyZVNvdXJjZS5tbSBpbiBTb3VyY2Vz
ICovLAorCQkJCUMwRTIwOEI2MjkzOTNERDAwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5t
bSBpbiBTb3VyY2VzICovLAogCQkJCUNERjRCNzE1MUUwMEI3RTUwMEUyMzVBMiAvKiBDRE0uY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJQ0RCNzA0NUIxRjc0NjVBMTAwMzkyM0RGIC8qIENETUZhaXJQ
bGF5U3RyZWFtaW5nLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUNEQzIyNDI4MUY3NTY5NjYwMDVG
MDc3QiAvKiBDRE1JbnN0YW5jZUZhaXJQbGF5U3RyZWFtaW5nQVZGT2JqQy5tbSBpbiBTb3VyY2Vz
ICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
aW5kZXggYzViOTcyNWZhMzRiLi45MWFhMzNjMDZkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1
ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJBWElzb2xhdGVkVHJlZS5oIgogI2lu
Y2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Q2VsbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgpAQCAtMjUxNSwz
MyArMjUxNiwzNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRhV2l0aENo
YXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogewogICAgIGlmIChjaGFyYWN0
ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAKLSAgICBOb2RlKiBkb21O
b2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7Ci0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+
KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNz
d29yZEZpZWxkKCkpIHsKKworICAgIE5vZGUqIG5vZGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsK
KyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CiAgICAgICAgIHRleHRNYXJrZXJE
YXRhLmlnbm9yZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAotICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21Ob2Rl
KTsKLSAgICBpZiAoIW9iaikKKworICAgIGF1dG8gb2JqZWN0ID0gZ2V0T3JDcmVhdGUobm9kZSk7
CisgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENvbnZl
cnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OworICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rl
ck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGludCB2cE9mZnNldCA9IDA7CiAgICAgaWYg
KCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpIHsKICAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9
IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwogICAgICAgICB2cE9mZnNldCA9IGRl
ZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB9Ci0gICAgCi0gICAgdGV4dE1h
cmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2Rl
ID0gZG9tTm9kZTsKKworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmplY3QtPm9iamVjdElE
KCk7CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigp
OworICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBub2RlOwogICAgIHRleHRNYXJrZXJEYXRhLmNo
YXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtlckRh
dGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwogICAg
IHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IHZwT2Zmc2V0OwogICAgIHRleHRNYXJrZXJEYXRhLmFm
ZmluaXR5ID0gdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCk7Ci0gICAgCi0gICAgdGhpcy0+c2V0
Tm9kZUluVXNlKGRvbU5vZGUpOworICAgIC8vIFNpbmNlIFRleHRNYXJrZXJEYXRhLmlnbm9yZWQg
aXMgbm90IGFzc2lnbmVkIGhlcmUsIGl0IGFsbG93cyB0byByZXR1cm4gdmFsaWQgVGV4dE1hcmtl
cnMgZm9yIGlnbm9yZWQgQVggb2JqZWN0cy4KKworICAgIHNldE5vZGVJblVzZShub2RlKTsKIH0K
IAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZz
ZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFydCwgYm9vbCBl
bnRlclRleHRDb250cm9scykKQEAgLTI2NjEsNyArMjY2NCw3IEBAIGJvb2wgQVhPYmplY3RDYWNo
ZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgcHJldmlvdXMsIGNv
bnN0IENoCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIHZvaWQgQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRh
JiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQp
CiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CkBAIC0yNjcz
LDcgKzI2NzYsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENo
YXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogICAgICAgICBpZiAoc2hvdWxk
U2tpcEJvdW5kYXJ5KHByZXZpb3VzLCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hh
cmFjdGVyT2Zmc2V0KG5leHQsIGZhbHNlKTsKICAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIG5leHQpOwotICAgICAgICAKKwogICAgICAgICAv
LyBXZSBzaG91bGQgc2tpcCBuZXh0IENoYXJhY3Rlck9mZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRo
ZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZvclJhbmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hh
cmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkpKQogICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSB0cnVlOwpAQCAtMjY4MSw2ICsyNjg0LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
CiAgICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7
CiB9CiAKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpuZXh0VGV4dE1hcmtlcihjb25zdCBB
WFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBWFRleHRNYXJrZXIgcmVzdWx0OworCisgICAg
VGV4dE1hcmtlckRhdGEgZGF0YSB7IG1hcmtlci5kYXRhKCkgfTsKKyAgICB0ZXh0TWFya2VyRGF0
YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoZGF0YSwgbWFya2VyKTsKKyAgICBpZiAoZGF0YS5ub2Rl
ICE9IG1hcmtlci5tX2RhdGEubm9kZSkgeworICAgICAgICAvLyBTaW5jZSB0aGUgTm9kZSBjaGFu
Z2VkLCBuZWVkIHRvIHVwZGF0ZSB0aGUgb2JqZWN0IHdyYXBwZXIuCisgICAgICAgIGlmIChhdXRv
KiBvYmplY3QgPSBnZXRPckNyZWF0ZShkYXRhLm5vZGUpKQorICAgICAgICAgICAgZGF0YS5vYmpl
Y3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgfQorCisgICAgcmVzdWx0Lm1fYXhP
YmplY3RDYWNoZSA9IHRoaXM7CisgICAgcmVzdWx0Lm1fZGF0YSA9IGRhdGE7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKwogdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0
IHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OwpAQCAtMjY5OCw2ICsyNzE4LDIzIEBAIHZvaWQg
QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChU
ZXh0TWFya2VyRGF0YSYgdGV4CiAgICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8
fCBzaG91bGRDb250aW51ZSk7CiB9CiAKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpwcmV2
aW91c1RleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVhUZXh0
TWFya2VyIHJlc3VsdDsKKworICAgIFRleHRNYXJrZXJEYXRhIGRhdGEgeyBtYXJrZXIuZGF0YSgp
IH07CisgICAgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChkYXRhLCBt
YXJrZXIpOworICAgIGlmIChkYXRhLm5vZGUgIT0gbWFya2VyLm1fZGF0YS5ub2RlKSB7CisgICAg
ICAgIC8vIFNpbmNlIHRoZSBOb2RlIGNoYW5nZWQsIG5lZWQgdG8gdXBkYXRlIHRoZSBvYmplY3Qg
d3JhcHBlci4KKyAgICAgICAgaWYgKGF1dG8qIG9iamVjdCA9IGdldE9yQ3JlYXRlKGRhdGEubm9k
ZSkpCisgICAgICAgICAgICBkYXRhLm9iamVjdFdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsK
KyAgICB9CisKKyAgICByZXN1bHQubV9heE9iamVjdENhY2hlID0gdGhpczsKKyAgICByZXN1bHQu
bV9kYXRhID0gZGF0YTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBOb2RlKiBBWE9iamVjdENh
Y2hlOjpuZXh0Tm9kZShOb2RlKiBub2RlKSBjb25zdAogewogICAgIGlmICghbm9kZSkKQEAgLTI4
MTYsMTggKzI4NTMsMjIgQEAgc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY28KICAgICAgICAgcmV0dXJu
IHRleHRNYXJrZXJEYXRhOwogICAgIH0KIAotICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vz
c2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IGRvbU5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIC8vIEZpbmQgb3IgY3Jl
YXRlIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUuCisgICAgYXV0byogY2Fj
aGUgPSBkb21Ob2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hl
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5
T2JqZWN0PiBvYmogPSBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CisKKyAgICBhdXRvIG9i
amVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUg
emVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBi
eXRlLWVxdWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBi
ZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgogICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRl
eHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgdGV4
dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKKworICAgIHRleHRNYXJrZXJEYXRh
LmF4SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3Jh
cHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21O
b2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBlID0gZGVlcFBvcy5hbmNo
b3JUeXBlKCk7CkBAIC0yODM1LDYgKzI4NzYsNyBAQCBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJE
YXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjbwog
CiAgICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9m
ZnNldDsKICAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVy
T2Zmc2V0LnN0YXJ0SW5kZXg7CisgICAgLy8gU2luY2UgVGV4dE1hcmtlckRhdGEuaWdub3JlZCBp
cyBub3QgYXNzaWduZWQgaGVyZSwgaXQgYWxsb3dzIHRvIHJldHVybiB2YWxpZCBUZXh0TWFya2Vy
cyBmb3IgaWdub3JlZCBBWCBvYmplY3RzLgogCiAgICAgY2FjaGUtPnNldE5vZGVJblVzZShkb21O
b2RlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVj
dENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApp
bmRleCA1MzVlNzE0MjIyMWYuLjEyMTIyNmE0ZTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgVGV4dFN0
cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRleHRNYXJrZXI7CiBjbGFz
cyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVsZW1l
bnQ7CkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9z
aXRpb247CiBjbGFzcyBXaWRnZXQ7CiAKKy8vIEZJWE1FOiBNb3ZlIGludG8gQVhUZXh0TWFya2Vy
IGNsYXNzLgogc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKICAgICBBWElEIGF4SUQ7CiAKQEAgLTY3
LDYgKzY5LDEyIEBAIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7CiAgICAgaW50IGNoYXJhY3RlclN0
YXJ0SW5kZXggeyAwIH07CiAgICAgaW50IGNoYXJhY3Rlck9mZnNldCB7IDAgfTsKICAgICBib29s
IGlnbm9yZWQgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JNKFdJ
TikKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3JhcHBlciB7IG51bGxw
dHIgfTsKKyNlbGlmIFVTRShBVFNQSSkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkqIG9i
amVjdFdyYXBwZXIgeyBudWxscHRyIH07CisjZW5kaWYKIH07CiAKIHN0cnVjdCBDaGFyYWN0ZXJP
ZmZzZXQgewpAQCAtMTQ3LDYgKzE1NSw3IEBAIGNsYXNzIEFYT2JqZWN0Q2FjaGUgOiBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFYT2JqZWN0Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xh
c3MgQVhJc29sYXRlZFRyZWU7CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8
PChXVEY6OlRleHRTdHJlYW0mLCBBWE9iamVjdENhY2hlJik7CisgICAgZnJpZW5kIEFYVGV4dE1h
cmtlcjsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAg
ICAgfkFYT2JqZWN0Q2FjaGUoKTsKQEAgLTIzNiw3ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAgc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9u
SW5UZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwogICAgIHZvaWQgdGV4
dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmKTsKICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4
dE1hcmtlciBuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKICAgICB2b2lkIHRl
eHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFy
a2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwog
ICAgIC8vIFVzZSBpZ25vcmVOZXh0Tm9kZVN0YXJ0L2lnbm9yZVByZXZpb3VzTm9kZUVuZCB0byBk
ZXRlcm1pbmUgdGhlIGJlaGF2aW9yIHdoZW4gd2UgYXJlIGF0IG5vZGUgYm91bmRhcnkuIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNGZjZmQwYjQxZmQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBAIC0w
LDAgKzEsMjg3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRl
ICJBWFRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNs
dWRlICJSZW5kZXJPYmplY3QuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbmNsdWRlIDxwYWwv
c3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUo
Y2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICh2aXNpYmxl
UG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIFBvc2l0aW9uIGRlZXBQ
b3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgIE5vZGUqIG5v
ZGUgPSBkZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBp
ZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pihub2RlKS0+aXNQYXNzd29yZEZp
ZWxkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9u
IGhhcyBhbiBhbmNob3IgdHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFu
Y2hvcmVkIG5vZGUsIHdlIHNob3VsZAorICAgIC8vIHNldCB0aGUgdGV4dCBtYXJrZXIgZGF0YSB3
aXRoIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNwb25kIHRv
IHRoZSBub2RlLgorICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gbV9heE9iamVjdENhY2hlLT5j
aGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisvKgor
IGlmIChkZWVwUG9zaXRpb24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0
ZXJBbmNob3IKKyAgICAgICAgfHwgZGVlcFBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlv
bjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pIHsKKyAgICAgICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7CisgICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICByZXR1cm47CisgICAgfQor
Ki8KKyAgICBzZXREYXRhKG5vZGUsIGRlZXBQb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09mZnNl
dCgpLCBkZWVwUG9zaXRpb24uYW5jaG9yVHlwZSgpLCB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHko
KSwgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQpOwor
ICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKG5vZGUpOworfQorCitBWFRleHRNYXJr
ZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUoY2FjaGUpCit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNO
dWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5vZGUqIGRvbU5vZGUgPSBjaGFyYWN0ZXJP
ZmZzZXQubm9kZTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRv
d25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkgewor
ICAgICAgICBtX2RhdGEuaWdub3JlZCA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRpb24uCisgICAgYXV0byB2aXNpYmxlUG9z
aXRpb24gPSBtX2F4T2JqZWN0Q2FjaGUtPnZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJPZmZz
ZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICB1bnNpZ25lZCB2cE9mZnNldCA9IDA7CisgICAgaWYg
KCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHZwT2Zmc2V0ID0gdmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKworICAg
IHNldERhdGEoZG9tTm9kZSwgdnBPZmZzZXQsIHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVu
dCgpLmFuY2hvclR5cGUoKSwgdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCksIGNoYXJhY3Rlck9m
ZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0KTsKKyAgICBtX2F4T2JqZWN0
Q2FjaGUtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKK30KKworQVhUZXh0TWFya2VyOjpBWFRleHRN
YXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5vZGUpCisgICAgOiBtX2F4T2JqZWN0
Q2FjaGUoY2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIG1fZGF0
YS5ub2RlID0gbm9kZTsKKyAgICBtX2F4T2JqZWN0Q2FjaGUtPnNldE5vZGVJblVzZShtX2RhdGEu
bm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0
ZXh0TWFya2VyUmVmKQoreworICAgIGlmICghdGV4dE1hcmtlclJlZikKKyAgICAgICAgcmV0dXJu
OworCisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpID09IEFYVGV4dE1hcmtl
ckdldFR5cGVJRCgpKTsKKyAgICBpZiAoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJlZikgIT0gQVhU
ZXh0TWFya2VyR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VSVChBWFRl
eHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikgPT0gc2l6ZW9mKG1fZGF0YSkpOworICAg
IGlmIChBWFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikgIT0gc2l6ZW9mKG1fZGF0
YSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1lbWNweSgmbV9kYXRhLCBBWFRleHRNYXJrZXJH
ZXRCeXRlUHRyKHRleHRNYXJrZXJSZWYpLCBzaXplb2YobV9kYXRhKSk7CisKKyAgICBBY2Nlc3Np
YmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJlYWQoW3RoaXNdICgpIHsKKyAgICAgICAg
aWYgKCFub2RlKCkpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbV9heE9iamVjdENh
Y2hlID0gbm9kZSgpLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICB9KTsKK30KKwor
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gQVhUZXh0TWFya2VyOjpwbGF0Zm9ybU9iamVjdCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJm1fZGF0YSwgc2l6ZW9mKG1fZGF0YSkpKTsKK30K
Kwordm9pZCBBWFRleHRNYXJrZXI6OnNldERhdGEoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0
LCBQb3NpdGlvbjo6QW5jaG9yVHlwZSBhbmNob3JUeXBlLCBBZmZpbml0eSBhZmZpbml0eSwgdW5z
aWduZWQgY2hhcmFjdGVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0KQorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYXhPYmplY3RDYWNoZSk7
CisKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGF0YS5ub2RlID0g
bm9kZTsKKyAgICBtX2RhdGEub2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZGF0YS5hbmNob3JUeXBl
ID0gYW5jaG9yVHlwZTsKKyAgICBtX2RhdGEuYWZmaW5pdHkgPSBhZmZpbml0eTsKKworICAgIG1f
ZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyU3RhcnRJbmRleDsKKyAgICBtX2Rh
dGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0OworCisgICAgYXV0byogb2JqZWN0
ID0gbV9heE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShub2RlKTsKKyAgICBtX2RhdGEuYXhJRCA9
IG9iamVjdC0+b2JqZWN0SUQoKTsKKyAgICBtX2RhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+
d3JhcHBlcigpOworfQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigp
IGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChpc051bGwo
KSB8fCBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4geyB9OworCisg
ICAgUG9zaXRpb24gcG9zaXRpb247CisgICAgaWYgKG1fZGF0YS5hbmNob3JUeXBlID09IFBvc2l0
aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpCisgICAgICAgIHBvc2l0aW9uID0gUG9zaXRp
b24obm9kZSgpLCBtX2RhdGEub2Zmc2V0LCBtX2RhdGEuYW5jaG9yVHlwZSk7CisgICAgZWxzZQor
ICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwgbV9kYXRhLmFuY2hvclR5cGUpOwor
CisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihwb3NpdGlvbiwgbV9kYXRhLmFm
ZmluaXR5KTsKKyAgICBhdXRvIGRlZXBQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpOworICAgIGlmIChkZWVwUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVy
biB7IH07CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGRlZXBQb3NpdGlvbi5kZXByZWNhdGVkTm9k
ZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07
CisKKyAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUo
KTsKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKG1fZGF0YS5h
eElEKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb247
Cit9CisKK0FYVGV4dE1hcmtlcjo6b3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKK3sK
KyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlz
TnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHJlc3Vs
dChub2RlKCksIG1fZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCBtX2RhdGEuY2hhcmFjdGVyT2Zm
c2V0KTsKKyAgICAvLyBXaGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQ
b3NpdGlvbiBpcyB1cHN0cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBl
bmQgb2YgdGhlIHByZXZpb3VzIGxpbmUuCisgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFy
YWN0ZXJPZmZzZXQgc28gdGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KKyAgICBpZiAobV9k
YXRhLmFmZmluaXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKKyAgICAgICAgcmV0dXJuIG1fYXhP
YmplY3RDYWNoZS0+cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQocmVzdWx0LCBmYWxzZSk7CisgICAg
cmV0dXJuIHJlc3VsdDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQVhUZXh0TWFya2VyOjpv
YmplY3QoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
aXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAg
cmV0dXJuIG1fYXhPYmplY3RDYWNoZS0+Z2V0KG5vZGUoKSk7Cit9CisKK0FjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyKiBBWFRleHRNYXJrZXI6Om9iamVjdFdyYXBwZXIoKSBjb25zdAoreworICAg
IGlmIChpc0lnbm9yZWQoKSB8fCBpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisK
KyAgICByZXR1cm4gbV9kYXRhLm9iamVjdFdyYXBwZXI7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9E
RUJVR0dJTkcpCitTdHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QK
K3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisgICAg
YXV0byBzZXBhcmF0b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKG5vZGUoKS0+ZGVi
dWdEZXNjcmlwdGlvbigpCisgICAgICAgICwgc2VwYXJhdG9yLCAib2Zmc2V0ICIsIG1fZGF0YS5v
ZmZzZXQKKyAgICAgICAgLCBzZXBhcmF0b3IsICJBbmNob3JUeXBlICIsIG1fZGF0YS5hbmNob3JU
eXBlCisgICAgICAgICwgc2VwYXJhdG9yLCAiQWZmaW5pdHkgIiwgbV9kYXRhLmFmZmluaXR5Cisg
ICAgICAgICwgc2VwYXJhdG9yLCAiY2hhcmFjdGVyU3RhcnRJbmRleCAiLCBtX2RhdGEuY2hhcmFj
dGVyU3RhcnRJbmRleAorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAiLCBt
X2RhdGEuY2hhcmFjdGVyT2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiYXhJRCAiLCBheElE
KCkubG9nZ2luZ1N0cmluZygpCisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIsIGlz
SWdub3JlZCgpCisgICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0
TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQorICAg
IDogc3RhcnQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRNYXJrZXIodGV4dE1hcmtlclJhbmdl
UmVmKSkKKyAgICAsIGVuZChBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtl
clJhbmdlUmVmKSkKK3sKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJhbmdlUmVm
KSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKK30KKworQVhUZXh0TWFya2VyUmFu
Z2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxl
UG9zaXRpb25SYW5nZSYgcmFuZ2UpCisgICAgOiBzdGFydChjYWNoZSwgcmFuZ2Uuc3RhcnQpCisg
ICAgLCBlbmQoY2FjaGUsIHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworICAgIEFTU0VSVChjYWNoZSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJr
ZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mIHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
IXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydCA9IEFYVGV4dE1hcmtlcihjYWNo
ZSwgY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIHRydWUp
KTsKKyAgICBlbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFj
dGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRNYXJrZXJSYW5n
ZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25zdCBBWFRleHRN
YXJrZXImIGUpCisgICAgOiBzdGFydChzKQorICAgICwgZW5kKGUpCit7Cit9CisKK1JldGFpblB0
cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gQVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0CisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikmc3RhcnQubV9kYXRhLCBzaXplb2Yo
c3RhcnQubV9kYXRhKSkpLmdldCgpCisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmZW5kLm1fZGF0YSwgc2l6ZW9m
KGVuZC5tX2RhdGEpKSkuZ2V0KCkKKyAgICApKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6Om9w
ZXJhdG9yIFZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTsKK30KKworc3RkOjpvcHRpb25h
bDxTaW1wbGVSYW5nZT4gQVhUZXh0TWFya2VyUmFuZ2U6OnNpbXBsZVJhbmdlKCkgY29uc3QKK3sK
KyAgICBhdXRvIHN0YXJ0Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0KTsK
KyAgICBhdXRvIGVuZEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChlbmQpOworICAg
IGlmICghc3RhcnRCb3VuZGFyeVBvaW50IHx8ICFlbmRCb3VuZGFyeVBvaW50KQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgKnN0YXJ0Qm91bmRhcnlQb2ludCwg
KmVuZEJvdW5kYXJ5UG9pbnQgfSB9OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmVhZTJkZjBmMzIwNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKQEAgLTAsMCArMSwx
MDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBWE9iamVjdENh
Y2hlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVj
dDsKK3N0cnVjdCBDaGFyYWN0ZXJPZmZzZXQ7CisKK2NsYXNzIEFYVGV4dE1hcmtlciB7CisgICAg
ZnJpZW5kIGNsYXNzIEFYT2JqZWN0Q2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIEFYVGV4dE1hcmtl
clJhbmdlOworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycworICAgIEFYVGV4dE1hcmtlcihB
WE9iamVjdENhY2hlKiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgQVhUZXh0TWFya2Vy
KEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJr
ZXIoQVhPYmplY3RDYWNoZSosIE5vZGUqKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBWFRl
eHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmKTsKKyNlbmRpZgorICAgIEFYVGV4dE1hcmtlcigpID0g
ZGVmYXVsdDsKKworICAgIGJvb2wgaXNOdWxsKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPEFYVGV4
dE1hcmtlclJlZj4gcGxhdGZvcm1PYmplY3QoKSBjb25zdDsKKworICAgIG9wZXJhdG9yIFZpc2li
bGVQb3NpdGlvbigpIGNvbnN0OworICAgIG9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJlZigpIGNv
bnN0IHsgcmV0dXJuIHBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlmCisg
ICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIG9iamVjdFdyYXBwZXIoKSBjb25zdDsKKworICAgIFRleHRNYXJrZXJE
YXRhIGNvbnN0JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgTm9kZSogbm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ub2RlOyB9CisgICAgQVhJRCBheElEKCkgY29uc3Q7
CisgICAgYm9vbCBpc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuaWdub3JlZDsgfQor
CisjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQorICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9u
KCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICB2b2lkIHNldERhdGEoTm9kZSosIHVu
c2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFuY2hvclR5cGUsIEFmZmluaXR5LCB1bnNpZ25lZCBj
aGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQpOworCisgICAgQVhP
YmplY3RDYWNoZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9OworICAgIFRleHRNYXJrZXJE
YXRhIG1fZGF0YTsKK307CisKK2NsYXNzIEFYVGV4dE1hcmtlclJhbmdlIHsKK3B1YmxpYzoKKyAg
ICAvLyBDb25zdHJ1Y3RvcnMuCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSos
IGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhP
YmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisgICAgQVhU
ZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiwgY29uc3QgQVhUZXh0TWFya2VyJik7
CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmFuZ2VSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7CisK
KyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBsYXRmb3JtT2JqZWN0KCkgY29u
c3Q7CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNvbnN0OworI2lmIFBMQVRGT1JN
KENPQ09BKQorICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdlUmVmKCkgY29uc3QgeyByZXR1
cm4gcGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKyAgICBvcGVyYXRv
ciBib29sKCkgY29uc3QgeyByZXR1cm4gIXN0YXJ0LmlzTnVsbCgpICYmICFlbmQuaXNOdWxsKCk7
IH0KKworICAgIEFYVGV4dE1hcmtlciBzdGFydDsKKyAgICBBWFRleHRNYXJrZXIgZW5kOworfTsK
KworaW5saW5lIGJvb2wgQVhUZXh0TWFya2VyOjppc051bGwoKSBjb25zdAoreworICAgIHJldHVy
biAhbV9heE9iamVjdENhY2hlIHx8ICFub2RlKCkgfHwgIW1fYXhPYmplY3RDYWNoZS0+aXNOb2Rl
SW5Vc2Uobm9kZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0K
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5lNzgyODJmNzIwNWYKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4
dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykK
KyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBWElEIEFYVGV4dE1hcmtlcjo6YXhJRCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIFtvYmplY3RXcmFwcGVyKCkgaWRlbnRpZmllcl07Cit9CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5k
ZXggNDU0OGUyZDJlMDRhLi42NmI1ODMxMjRlZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2VyLmgi
CiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgpAQCAtNzE3LDM4ICs3MTgs
MjYgQEAgc3RhdGljIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFya2Vy
IGhlbHBlcnMKIAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBu
ZXh0VGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBt
YXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRh
dGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gbmV4dE1hcmtlciA9
IGNhY2hlLT5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgIGlmICghbmV4dE1hcmtlci5heElE
KCkuaXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBhZG9wdENGKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworICAgIHJldHVybiBuZXh0TWFy
a2VyLnBsYXRmb3JtT2JqZWN0KCk7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2Vy
UmVmPiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSog
Y2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RhdGljIFJldGFpblB0
cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNo
ZSwgY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsK
LSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2Vy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRh
LCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7Ci19CiAKLS0gKFJldGFpblB0cjxBWFRleHRNYXJr
ZXJSZWY+KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQm
KWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rl
ck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJP
ZmZzZXQpOwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPilwcmV2aW91c1RleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0
Ci17Ci0gICAgcmV0dXJuIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxm
LmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOworICAg
IGF1dG8gcHJldmlvdXNNYXJrZXIgPSBjYWNoZS0+cHJldmlvdXNUZXh0TWFya2VyKG1hcmtlcik7
CisgICAgaWYgKCFwcmV2aW91c01hcmtlci5heElEKCkuaXNWYWxpZCgpKQorICAgICAgICByZXR1
cm4gbmlsOworICAgIHJldHVybiBwcmV2aW91c01hcmtlci5wbGF0Zm9ybU9iamVjdCgpOwogfQog
CiAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgbWV0aG9kIHNpbmNlIGNsaWVudHMgc2hvdWxkIG5vdCBu
ZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QgYW5kIHNob3VsZCBub3QgYmUgZXhwb3NlZCBpbiB0aGUg
cHVibGljIGludGVyZmFjZS4KQEAgLTMzNzEsMjQgKzMzNjAsMjUgQEAgLSAoQVhUZXh0TWFya2Vy
UmFuZ2VSZWYpbGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJl
Zil0ZXh0TWEKICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICAgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFy
a2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0
TWFya2VyKTsKKy8vICAgICAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwogICAgICAgICBWaXNpYmxlUG9zaXRp
b25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZTsKICAgICAgICAgc3dpdGNoICh0ZXh0VW5pdCkg
ewogICAgICAgICBjYXNlIFRleHRVbml0OjpMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0
aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9z
aXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0
LT5saW5lUmFuZ2VGb3JQb3NpdGlvbihtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9u
UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2li
bGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdP
YmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0OjpSaWdodExpbmU6Ci0gICAgICAgICAgICB2
aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3Np
dGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25S
YW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtl
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAg
ICAgICByZXR1cm4gdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoY2FjaGUsIHZp
c2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQpOworICAg
ICAgICByZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UoY2FjaGUsIHZpc2libGVQb3NpdGlvblJhbmdl
KS5wbGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNjgyLDI1ICszNjcyLDIzIEBA
IEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gKGlk
KVtzZWxmIF90ZXh0TWFya2VyRm9ySW5kZXg6W251bWJlciBpbnRlZ2VyVmFsdWVdXTsKIAogICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtl
ciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNl
ZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IHJl
dGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBi
YWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAg
ICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
LQotICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4
dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXIpOwotICAg
ICAgICAgICAgaWYgKCFheE9iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0g
ICAgICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3Jh
cHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gW2F4T2JqZWN0
LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddOworICAgICAgICBBWFRleHRNYXJrZXIgbWFya2Vy
KHRleHRNYXJrZXIpOworICAgICAgICBhdXRvKiB3cmFwcGVyID0gbWFya2VyLm9iamVjdFdyYXBw
ZXIoKTsKKyAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgICAgICAgICAgcmV0dXJuIGF4T2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgICAgIH0pOworICAg
ICAgICBpZiAoaWQgYXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFjaG1lbnRWaWV3KQorICAg
ICAgICAgICAgcmV0dXJuIGF0dGFjaG1lbnRWaWV3OworICAgICAgICByZXR1cm4gd3JhcHBlcjsK
ICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJr
ZXJSYW5nZUZvclVJRWxlbWVudCJdKSB7CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5Ojpy
ZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdWlFbGVtZW50XSAo
KSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJh
bmdlRnJvbVJhbmdlKHVpRWxlbWVudC5nZXQoKS0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQu
Z2V0KCktPmVsZW1lbnRSYW5nZSgpKTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtl
clJhbmdlRnJvbVJhbmdlKHVpRWxlbWVudC0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQtPmVs
ZW1lbnRSYW5nZSgpKTsKKy8vICAgICAgICAgICAgYXV0byogY2FjaGUgPSB1aUVsZW1lbnQuZ2V0
KCktPmF4T2JqZWN0Q2FjaGUoKTsKKy8vICAgICAgICAgICAgaWYgKCFjYWNoZSkKKy8vICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CisvLyAgICAgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXJS
YW5nZShjYWNoZSwgdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKSkucGxhdGZvcm1PYmpl
Y3QoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zNzUxLDcgKzM3MzksNyBAQCBBTExPV19E
RVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2luZ09i
amVjdCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4g
KGlkKXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oYmFja2luZ09iamVjdC0+YXhPYmplY3RD
YWNoZSgpLCBiYWNraW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9p
bnQpKTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyKGJhY2tpbmdPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
d2ViQ29yZVBvaW50KSkucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwogICAgICAgICB9
KTsKICAgICB9CiAKQEAgLTM4NDAsOSArMzgyOCw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2VyKFthcnJh
eSBvYmplY3RBdEluZGV4OjBdKQogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFya2Vy
KFthcnJheSBvYmplY3RBdEluZGV4OjFdKSkKICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
ICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1h
aW5UaHJlYWQ8aWQ+KFsmYXJyYXldICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAg
cmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycygoQVhUZXh0TWFya2VyUmVmKVth
cnJheSBvYmplY3RBdEluZGV4OjBdLCAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RBdElu
ZGV4OjFdKS5nZXQoKTsKLSAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIChpZClBWFRleHRN
YXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSB9
LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gfSB9LnBsYXRmb3Jt
T2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0Vx
dWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJrZXJzIl0p
IHsKQEAgLTM4ODEsOCArMzg2OCw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05T
X0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFj
dGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICBy
ZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRNYXJrZXJGb3JDaGFy
YWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBBWFRleHRNYXJrZXIg
bWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIG5leHRUZXh0TWFya2VyKGNh
Y2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAgICAgfQog
CkBAIC0zODk2LDggKzM4ODMsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsK
IAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rl
ck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICAgICAgcmV0
dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtl
ciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNUZXh0TWFy
a2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAg
ICAgfQogCkBAIC0zOTc4LDI2ICszOTY1LDMwIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIChzbyBmYXIp
LgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJl
dHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFu
Z2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4g
ewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCku
YXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZv
clRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJr
ZXJSYW5nZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJG
b3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCB0cnVlKTsKLSAg
ICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtlclJhbmdlIHsg
dGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiAoaWQpYXhUZXh0TWFya2VyUmFuZ2Uu
c3RhcnQucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOworLy8gICAgICAgIHJldHVybiBB
Y2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+
KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAt
PiBSZXRhaW5QdHI8aWQ+IHsKKy8vICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHBy
b3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OworLy8gICAgICAgICAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpCisvLyAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworLy8KKy8vICAgICAg
ICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKKy8vCisvLyAgICAgICAgICAgIHJl
dHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9i
amVjdENhY2hlKCksIHJhbmdlLCB0cnVlKTsKKy8vICAgICAgICB9KTsKICAgICB9CiAKICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRv
cmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVj
dGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAg
ICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdP
YmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtl
clJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsK
LSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShiYWNr
aW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBmYWxzZSk7Ci0gICAgICAgIH0pOwor
ICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRNYXJrZXJS
YW5nZSB9OworICAgICAgICByZXR1cm4gKGlkKWF4VGV4dE1hcmtlclJhbmdlLmVuZC5wbGF0Zm9y
bU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CisvLyAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2Vy
UmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxp
ZD4geworLy8gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5n
ZXQoKS5heEJhY2tpbmdPYmplY3Q7CisvLyAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkK
Ky8vICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisvLworLy8gICAgICAgICAgICBhdXRvIHJh
bmdlID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNo
ZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOworLy8gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0T3JF
bmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5n
ZSwgZmFsc2UpOworLy8gICAgICAgIH0pOwogICAgIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQt
Zm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1ZDMzZGFjYjJk
M2YuLjUwNDYwMjU4ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dApA
QCAtMSwxNyArMSwxNCBAQAotdGV4dCBoZXJlCi10ZXh0IGJsb2NrCi10ZXh0IGhlcmUKIFRoaXMg
dGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVt
ZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkgPT09IDEwCitQQVNT
OiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVhbCh0
ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoZW5kKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUxlbmd0aChuZXdSYW5nZSkgPT09IDEwCitQQVNTOiBuZXdSYW5nZS5pc0VxdWFsKHJhbmdlKSA9
PT0gdHJ1ZQogCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZTEpIGlzIDEwCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0
YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBB
U1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIGlzIDEwCi1QQVNT
IG5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkgaXMgdHJ1ZQogUEFTUyBz
dWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK3RleHQgaGVyZQor
dGV4dCBibG9jawordGV4dCBoZXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAppbmRleCBkNDkzNmFkMjJk
MTguLjM0MGFiMWUxOTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCkBAIC0xLDUxICsxLDQyIEBA
CiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4K
IDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+
PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAogdGV4dCBoZXJl
Ci08ZGl2IGlkPSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPnRleHQgYmxvY2s8L2Rpdj4KKzxkaXYgaWQ9
InRleHQxIj50ZXh0IGJsb2NrPC9kaXY+CiB0ZXh0IGhlcmUKIAotPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQotICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1cm4gdGhl
IGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuIik7Ci0KICAgICBpZiAo
d2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCB0ZXN0T3V0cHV0
ID0gIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29y
cmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci5cblxuIjsKIAotICAgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7Ci0gICAgICAgICAgdmFy
IHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRleHQxIikuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwg
dGV4dCBub2RlLgotICAgICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAg
ICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgZWxl
bWVudCdzIHJhbmdlLgorICAgICAgICB2YXIgcmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQodGV4dCk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aChyYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgdmFyIHN0YXJ0ID0gdGV4
dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOwogCi0gICAgICAgICAg
Ly8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgcmFuZ2Uu
Ci0gICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTEgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQodGV4dCk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIiwgIjEwIik7Ci0gICAgICAgICAgdmFyIHN0YXJ0TWFy
a2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlMSk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUg
dXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KKyAgICAgICAgdGVzdE91
dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0
YXJ0KS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRoYXQg
dGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0
YXJ0ZWQgd2l0aC4KLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAg
IC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUgc2Ft
ZSBlbGVtZW50LgorICAgICAgICB2YXIgZW5kID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSIsICJ0cnVl
Iik7CiAKLSAgICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNrIHRoYXQgaXQg
Z2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KLSAgICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4
dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOwotICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIg
cmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5n
dGguCisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhzdGFydCwgZW5kKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSIsICIxMCIpOwogCi0gICAgICAgICAgLy8gTWFrZSBh
IG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hlY2sg
dGhlIGxlbmd0aAotICAgICAgICAgIHZhciBuZXdNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAgICAgICBzaG91
bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIiwgIjEwIik7
CisgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5n
ZSB3ZSBzdGFydGVkIHdpdGgKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoIm5ld1Jhbmdl
LmlzRXF1YWwocmFuZ2UpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUg
aXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKLSAgICAgICAg
ICBzaG91bGRCZVRydWUoIm5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSki
KTsKKyAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNj
cmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9i
b2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
c2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1l
bGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCAwMmM1NzY1OGE1NmYuLjhmYzVmZDcyNDhiMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1m
cm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3Rl
ZC50eHQKQEAgLTEsMTYgKzEsMTMgQEAKLUZpcnN0IGxpbmUgb2YgdGV4dAotYnV0dG9uCi1UaGly
ZCBsaW5lIG9mIHRleHQKIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nl
c3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LgogCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5n
ZSkgPT09ICdGaXJzdCBsaW5lIG9mIHRleHQnCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShyYW5nZSkgPT09ICdidXR0b24nCitQQVNTOiByZXN1bHRFbGVtZW50LnN0cmlu
Z1ZhbHVlID09PSAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JworUEFTUzogcmVzdWx0RWxl
bWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCcKIAotCi1Q
QVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnRmly
c3QgbGluZSBvZiB0ZXh0JwotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShs
aW5lUmFuZ2UpIGlzICdidXR0b24nCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMg
J0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCcKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdW
YWx1ZSBpcyAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JwogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVt
ZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRl
LWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKaW5kZXggNmVhODE4N2MwMjI2Li45NWQ3YTQ2Y2Vj
ZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVk
aWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKQEAg
LTEsNTAgKzEsNDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwv
L0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxp
dHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5
PgogCis8ZGl2IGlkPSJjb250YWluZXIiIHJvbGU9Imdyb3VwIj4KIDxkaXYgaWQ9InRlc3QiPkZp
cnN0IGxpbmUgb2YgdGV4dDxicj4KIDxidXR0b24gaWQ9ImJ1dHRvbiIgYXJpYS1oaWRkZW49InRy
dWUiPmJ1dHRvbjwvYnV0dG9uPgogPGJyPlRoaXJkIGxpbmUgb2YgdGV4dDwvZGl2PgotCi08cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAK
IDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2Vh
cmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LiIpOwot
ICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAg
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAgICAg
ICAgdmFyIGNvbnRhaW5lckVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUg
YWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVk
IGVsZW1lbnQuXG5cbiI7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAgICAgICAgIHZh
ciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXN0IikuY2hpbGRBdEluZGV4KDApOwotICAgICAgICB2YXIgbWFya2VyUmFuZ2UgPSBlbGVt
ZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJl
KCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ0ZpcnN0
IGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGln
bm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzCi0gICAgICAgIHZhciB0
ZXh0TWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIodGV4
dE1hcmtlcik7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKHRl
eHRNYXJrZXIpOwotICAgICAgICB2YXIgbGluZVJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoImVsZW1l
bnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSkiLCAiJ2J1dHRvbiciKTsKLSAg
ICAgICAgCi0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpOwotICAgICAgICB2YXIgc3RhcnRFbGVtZW50ID0gZWxl
bWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAg
ICAgIAorICAgICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnQoZWxlbWVudCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworCisgICAg
ICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFy
a2VyIGNhbGxzLgorICAgICAgICB2YXIgbWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5uZXh0VGV4
dE1hcmtlcihtYXJrZXIpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2Vy
KG1hcmtlcik7CisgICAgICAgIHJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdlRm9y
VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJlbGVtZW50LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ2J1dHRvbiciKTsKKworICAgICAgICBt
YXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7
CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworCiAgICAgICAgIC8vIFNlYXJjaCBmb3J3YXJkCi0gICAg
ICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFy
Y2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIs
IGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCisgICAgICAgIHZhciBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFy
dEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVl
OiBUaGlyZCBsaW5lIG9mIHRleHQnIik7CisKICAgICAgICAgLy8gU2VhcmNoIGJhY2t3YXJkCi0g
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJj
aFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIs
IGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9
IGNvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBmYWxz
ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUg
b2YgdGV4dCciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVy
Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwog
ICAgIH0KLSAgICAgICAgCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4
cGVjdGVkLnR4dAppbmRleCBjZGNjNzdjM2M4NzEuLjZhN2QyZjc4YTNlNCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2Ut
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJr
ZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMSwyODEgKzEsMjA3IEBACi1UaGlu
ayBkaWZmZXJlbnQgQXBwbGUKLQotYm9sZCBpdGFsaWMKLXVuZGVybGluZSBsYXN0IQotCi1IZWxs
byBXb3JsZCEKLVRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHBy
b3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1RoaXMgdGVzdHMgdGhhdCB0
ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KIAogY29udGVudCBsZW5ndGg6
IDY1CiBBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4
dDoKLTAKLScnCi0xCi0nVCcKLTIKLSdUaCcKLTMKLSdUaGknCi00Ci0nVGhpbicKLTUKLSdUaGlu
aycKLTYKLSdUaGluayAnCi03Ci0nVGhpbmsgZCcKLTgKLSdUaGluayBkaScKLTkKLSdUaGluayBk
aWYnCi0xMAotJ1RoaW5rIGRpZmYnCi0xMQotJ1RoaW5rIGRpZmZlJwotMTIKLSdUaGluayBkaWZm
ZXInCi0xMwotJ1RoaW5rIGRpZmZlcmUnCi0xNAotJ1RoaW5rIGRpZmZlcmVuJwotMTUKLSdUaGlu
ayBkaWZmZXJlbnQnCi0xNgotJ1RoaW5rIGRpZmZlcmVudCAnCi0xNwotJ1RoaW5rIGRpZmZlcmVu
dCBBJwotMTgKLSdUaGluayBkaWZmZXJlbnQgQXAnCi0xOQotJ1RoaW5rIGRpZmZlcmVudCBBcHAn
Ci0yMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsJwotMjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUn
Ci0yMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKLTIzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiswICcnCisxICdUJworMiAnVGgnCiszICdUaGknCis0ICdUaGluJworNSAnVGhpbmsnCis2ICdU
aGluayAnCis3ICdUaGluayBkJworOCAnVGhpbmsgZGknCis5ICdUaGluayBkaWYnCisxMCAnVGhp
bmsgZGlmZicKKzExICdUaGluayBkaWZmZScKKzEyICdUaGluayBkaWZmZXInCisxMyAnVGhpbmsg
ZGlmZmVyZScKKzE0ICdUaGluayBkaWZmZXJlbicKKzE1ICdUaGluayBkaWZmZXJlbnQnCisxNiAn
VGhpbmsgZGlmZmVyZW50ICcKKzE3ICdUaGluayBkaWZmZXJlbnQgQScKKzE4ICdUaGluayBkaWZm
ZXJlbnQgQXAnCisxOSAnVGhpbmsgZGlmZmVyZW50IEFwcCcKKzIwICdUaGluayBkaWZmZXJlbnQg
QXBwbCcKKzIxICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMiAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlJworMjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiAnCi0yNAotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorMjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBiJwotMjUKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzI1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm8nCi0yNgotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMjYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2wnCi0yNwot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
JwotMjgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCAnCi0yOQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjkgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGknCi0zMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzAgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0JwotMzEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzMxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGEnCi0zMgotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorMzIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWwnCi0zMwot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpJwotMzQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM0ICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMnCi0zNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzUgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogJwotMzYKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzM2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHUnCi0z
NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW4nCi0zOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzggJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kJwotMzkKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzM5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGUnCi00
MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXInCi00MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDEgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsJwotNDIKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzQyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGknCi00MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDMgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW4nCi00NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNDQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lJwot
NDUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSAnCi00NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDYg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGwnCi00Nwot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaW5lIGxhJwotNDgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ4ICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXMnCi00OQot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaW5lIGxhc3QnCi01MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTAg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwot
NTEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
Cis1MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFz
dCEKIAog77+8JwotNTMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUzICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIJwotNTQKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzU0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZScKLTU1Ci0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCis1NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUg
bGFzdCEKIAog77+8SGVsJwotNTYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU2ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxs
JwotNTcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbycKLTU4Ci0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis1OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gJwotNTkKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzU5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBs
YXN0IQogCiDvv7xIZWxsbyBXJwotNjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYwICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
ZWxsbyBXbycKLTYxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MSAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29yJwot
NjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsJwotNjMKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzYzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCcKLTY0Ci0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCis2NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRl
cmxpbmUgbGFzdCEKQEAgLTI5MSw3ICsyMTcsMTEgQEAgdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhl
bGxvIFdvcmxkIScKICcnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQogCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAppbmRleCBjZTFjYmYy
ZWVmZTMuLmMzMDQ5ODY3YjA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCkBAIC0xLDkg
KzEsOSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgog
PGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48
L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiA8ZGl2IGlkPSJj
b250ZW50IiByb2xlPSJncm91cCI+CiAgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVudDwvZW0+IDxh
IGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgpAQCAtMTEsMzYgKzExLDM0IEBACiAgICAg
PGJ1dHRvbj5IZWxsbyBXb3JsZCE8L2J1dHRvbj4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotICAgIGRlc2Ny
aXB0aW9uKCJUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9w
ZXJseS4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAg
ICAgICAgYXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjb250ZW50Iik7Ci0gICAgICAgIGNvbnRlbnRUZXh0TWFya2VyUmFuZ2UgPSBheEVs
ZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChheEVsZW1lbnQpOwotICAgICAgICB0ZXh0
TGVuZ3RoID0gYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjb250ZW50VGV4dE1h
cmtlclJhbmdlKS5sZW5ndGg7Ci0gICAgICAgIGRlYnVnKCJjb250ZW50IGxlbmd0aDogIiArIHRl
eHRMZW5ndGgpOworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCB0ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS5cblxuIjsKIAotICAgICAgICBkZWJ1Zygi
QWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Iik7
Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAg
IGRlYnVnKGkpOwotICAgICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRN
YXJrZXJSYW5nZUZvclJhbmdlKDAsIGkpOwotICAgICAgICAgICAgZGVidWcoIiciICsgYXhFbGVt
ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAg
ICAgICAgbGV0IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgbGV0IHJhbmdlID0gY29udGVudC50ZXh0TWFy
a2VyUmFuZ2VGb3JFbGVtZW50KGNvbnRlbnQpOworICAgICAgICBsZXQgY29udGVudExlbmd0aCA9
IGNvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKS5sZW5ndGg7CisgICAgICAg
IG91dHB1dCArPSBgY29udGVudCBsZW5ndGg6ICR7Y29udGVudExlbmd0aH1cbmA7CisKKyAgICAg
ICAgb3V0cHV0ICs9ICJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBp
biB0aGUgdGV4dDpcbiI7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZW50TGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5n
ZSgwLCBpKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgJHtpfSAnJHtjb250ZW50LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKICAgICAgICAgfQogCi0gICAgICAgIGRlYnVn
KCJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToiKTsKLSAgICAgICAgdGV4dE1hcmtl
clJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKLSAgICAg
ICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgb3V0cHV0ICs9ICJHZXQgdGhlIHJhbmdlIGZvciB0
aGUgd29yZCBBcHBsZTpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSgxNiwgNSk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisKKyAgICAgICAgb3V0cHV0ICs9ICJPdXQg
b2YgcmFuZ2UgdmFsdWVzOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJS
YW5nZUZvclJhbmdlKDAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisgICAgICAgIHJhbmdlID0gY29udGVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9IGAn
JHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKIAotICAgICAg
ICBkZWJ1ZygiT3V0IG9mIHJhbmdlIHZhbHVlczoiKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdl
ID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7Ci0gICAgICAgIGRl
YnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKSArICInIik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQogPC9zY3JpcHQ+Ci08c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2Jv
ZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92
aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1u
b2RlLWV4cGVjdGVkLnR4dAppbmRleCA5MTVkNTY5YzBlZDAuLmQ4NGI4YjIwMTc0MiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFz
aC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0
CkBAIC0xLDEwICsxLDcgQEAKLVRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
CiBUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9p
bnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRl
eHQgb2JqZWN0cy4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogY29udGVudC5j
aGlsZEF0SW5kZXgoMCkuaXNFcXVhbChlbGVtZW50KSA9PT0gdHJ1ZQogCi0KLVBBU1MgY29udGVu
dC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkgaXMgdHJ1ZQogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0
LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRp
b24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCmluZGV4IGM3MjU3ZDU4NWQxYS4uMmMzZDg5ZDE5
ODRlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBv
c2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbApAQCAt
MSw0MCArMSwzMiBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8v
RU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0
eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+
CiAKLTxkaXYgaWQ9ImNvbnRlbnQiIHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6MjAwcHg7Ij4K
KzxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweDsiPgogVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIAog
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRpb24i
PjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0gICAgZGVzY3Jp
cHRpb24oIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJs
ZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVu
ZGVyVGV4dCBvYmplY3RzLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5m
b2N1cygpOwotICAgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRo
aXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCi0gICAgICAgICAgdmFyIG1hcmtlckF0UG9p
bnQgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRo
LzIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVpZ2h0LzIpOwotICAgICAgICAgIHZhciB0ZXh0RWxl
bWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0
UG9pbnQpOwotCi0gICAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIGFz
IHRoZSBvbmUgd2Ugd2FudGVkLgotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNvbnRlbnQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOwotICAgICAg
ICAgIHNob3VsZEJlVHJ1ZSgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxl
bWVudCkiKTsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBj
cmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0
aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy5cblxuIjsKKworICAgICAg
ICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgiY29udGVudCIpOworICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRoaXMg
cG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHZhciBtYXJrZXIgPSBjb250ZW50
LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoIC8gMiwgY29udGVu
dC55ICsgY29udGVudC5oZWlnaHQgLyAyKTsKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50
IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgorICAgICAgICB2YXIgZWxlbWVudCA9
IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisvLyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5kb21JZGVudGlmaWVyIiwgIidjb250ZW50
JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJjb250ZW50LmNoaWxkQXRJbmRleCgwKS5p
c0VxdWFsKGVsZW1lbnQpIiwgInRydWUiKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVi
dWcob3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJr
ZXItcHJldmlvdXMtbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1h
cmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKaW5kZXggNWVkM2JkMGQwNmRlLi4z
OGYxM2VkN2EzZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCkBA
IC0xLDE1ICsxLDE3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmls
aXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8bWV0YSBjaGFyc2V0PSJVVEYtMTYiPgogPC9oZWFk
PgogPHN0eWxlPgogLnVzZXJzZWxlY3QgeyB1c2VyLXNlbGVjdDogbm9uZTsgLXdlYmtpdC11c2Vy
LXNlbGVjdDogbm9uZTsgfQogPC9zdHlsZT4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08
ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2PgorPGRpdiBpZD0iY29udGVudCI+
Cis8ZGl2IGlkPSJ0ZXh0Ij50ZXh0PC9kaXY+CiA8YnI+CiB0ZXh0MQogCkBAIC0zMiwyOSArMzQs
NDUgQEAgZgogPHAgaWQ9InRleHQ2Ij5hICAgICBiPC9wPgogCiA8cCBpZD0idGV4dDciPmF1ZGlv
PGF1ZGlvIGNvbnRyb2xzPjwvYXVkaW8+ZmlsZTwvcD4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgorICAgIGZ1
bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmop
IHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAg
ICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgICAgICBjdXJyZW50TWFy
a2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiB7CisgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAg
ICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQorCisgICAg
ZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
b2JqKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFy
a2VyKTsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50
TWFya2VyCisgICAgICAgIH07CisgICAgfQogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMg
dGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBj
b3JyZWN0bHkuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgewotICAgICAgICAKLSAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAgICAgLy8gR2V0IHRoZSBhY3R1
YWwgdGV4dCBub2RlLgotICAgICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAg
ICAgIAorICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMg
dGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cbiI7CisK
KyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRleHQiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQ2hlY2sgdGhh
dCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgogICAgICAg
ICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRl
eHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1h
cmtlclJhbmdlKSIsICI0Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKwogICAg
ICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRN
YXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsK
LSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsK
KyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKwogICAgICAgICAv
LyBDaGVjayBuZXh0IHRleHQgbWFya2VyLiAoQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwg
bGFuZCBhdCA8YnI+LikKICAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIsIHByZXZpb3VzTWFya2Vy
LCBtYXJrZXJSYW5nZTs7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3Vz
TWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7CkBAIC02Miw1OCArODAsNTcgQEAgZgogICAgICAg
ICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyKTsKICAgICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwotICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKLSAg
ICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gQWR2YW5jZSBv
bmUgbW9yZSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmRlIGF0ICJ0IiBpbiAidGV4dDEiLgogICAg
ICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0
ZXh0KTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIiwgIid0JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworCiAg
ICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLiAoVHJhdmVyc2UgYmFja3dhcmRz
IG9uZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgcmVzdWx0ID0g
YmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAg
ICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
Im5ld2xpbmUiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAg
ICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5k
IGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3
YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHBy
ZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0g
cmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgaWYg
KGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAibWFjIikKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ3QnICsgbmV3bGluZSIpOworICAgICAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsK
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCci
KTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUKICAgICAg
ICAgdmFyIHRleHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJ0ZXh0MiIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMiA9IHRleHQyLnRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dDIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUiKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZTIpIiwgIjUiKTsKICAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzIp
LCAiW0FUVEFDSE1FTlRdIik7Ci0gICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZvciByYW5n
ZTogIiArIHN0cik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gYE9iamVjdCBzdHJpbmcg
Zm9yIHJhbmdlOiAke3N0cn1cbmA7CisKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKTsKICAgICAg
ICAgLy8gQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCAiZCIuCiAgICAgICAg
IHJlc3VsdCA9IGZvcndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQy
KTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ2QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOworCiAg
ICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyA2IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBh
dCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gYmFja3dh
cmRzKDYsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHBy
ZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0g
cmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicx
JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKKwogICAgICAgICAvLyBDaGVj
ayB0aGUgY2FzZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZpb3Vz
VGV4dE1hcmtlciBzaG91bGQgc3RpbGwgd29yay4KLSAgICAgICAgdmFyIHRleHQzID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOwotICAgICAg
ICB0ZXh0MyA9IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgCisgICAgICAgIHZhciB0
ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4
dDMiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0IHVz
ZXItc2VsZWN0Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTg7IGkrKykgewpAQCAtMTI1LDM0ICsxNDIsMzEgQEAg
ZgogICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICBt
YXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFy
a2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIiwgIidlY3QnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQz
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKICAgICAg
ICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhlIHNlY29uZCBtYXJrZXIgZm9yIDYgY2hhcmFjdGVy
cywgdGhlIHJhbmdlIHNob3VsZCBiZSAic2VsIgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDY7IGkrKykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtl
cik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAg
IG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBt
YXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOwogCiAg
ICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcGFzc3dvcmQgZmllbGQuCiAgICAgICAgIHZh
ciBwc3cgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInBz
dyIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMyA9IHBzdy50ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KHBzdyk7CiAgICAgICAgIHZhciBzdGFydCA9IHBzdy5zdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1
ZSgiIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIik7Ci0gICAg
ICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihzdGFydCkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIENoZWNrIG5leHQv
cHJldmlvdXMgdGV4dCBtYXJrZXIgY2FsbCB3aWxsIHNraXAgcGFzc3dvcmQgZmllbGQKICAgICAg
ICAgLy8gV2Ugc3RhcnQgZnJvbSB0ZXh0MiBhbmQgYWR2YW5jZSA2IGNoYXJhY3RlcnMsIGl0IHNo
b3VsZCBza2lwIHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgbGFuZCBvbiB0ZXh0My4KICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UyKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsK
KyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50
TWFya2VyID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0K
LSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRN
YXJrZXIpLmlzRXF1YWwodGV4dDMpIiwgInRydWUiKTsKICAgICAgICAgLy8gQ2hlY2sgcHJldmlv
dXMgdGV4dCBtYXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIgbm9kZS4KICAgICAgICAgY3Vy
cmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikp
Iik7Ci0gICAgICAgIAotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwo
dGV4dDIuY2hpbGRBdEluZGV4KDIpKSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gTWFrZSBzdXJl
IHRoYXQgdGV4dCBub2RlIHdpdGggbGluZSBicmVha3MsIHdlIGNhbiBnbyB0aHJvdWdoIGl0IHdp
dGggbmV4dC9wcmV2aW91cyBjYWxsLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOwogICAgICAgICB0ZXh0TWFya2Vy
UmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CkBAIC0xNjMsODcg
KzE3Nyw2NCBAQCBmCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1h
cmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
cikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSIsICInZiciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZiciKTsKKwogICAg
ICAgICBlbmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IGVuZE1hcmtlcjsKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA3OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5wcmV2aW91c1Rl
eHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2Ug
PSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2EnIik7CisKICAg
ICAgICAgLy8gVGVzdCBjYXNlIHdpdGggZW1vamkuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ1Iik7CiAgICAgICAgIHZh
ciBlbW9qaVRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2pp
VGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSBuYXZpZ2F0aW5nIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgaXMg
YnkgZW1vamkuCiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UoZW1vamlUZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQgPSBm
b3J3YXJkKDIsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iPJyIp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCkpIiwgIifwn5iPJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOwotICAgICAg
ICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSIsICIn8J+YgyciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBjb2xs
YXBzZWQgd2hpdGVzcGFjZS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDYiKTsKICAgICAgICAgdmFyIGNvbGxhcHNlZFdo
aXRlc3BhY2VNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0
KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNl
ZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFu
Z2UpIiwgIjMiKTsKICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpOwogICAgICAg
ICByZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIidhJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEs
IHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRC
ZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICInICciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CiAgICAg
ICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5j
dXJyZW50KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGJh
Y2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2En
Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3
aXRoIHJlcGxhY2VkIGVsZW1lbnRzIChzaG91bGQgdXNlIG9iamVjdCByZXBsYWNlbWVudCBjaGFy
YWN0ZXIpLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJ0ZXh0NyIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2Zp
bGUnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVGRkZDZmlsZSciKTsKICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CiAg
ICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBj
dXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAg
ICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQuZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIg
PSBjdXJyZW50TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlv
dXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJh
bmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIp
OwogCi0gICAgICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsK
LSAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAg
ICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAgICAgICAgICAgY3VycmVu
dDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICAKLSAg
ICAgICAgZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1h
cmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJr
ZXIocHJldmlvdXNNYXJrZXIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmou
cHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIs
Ci0gICAgICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsK
LSAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9
Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3Np
YmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0
CmluZGV4IDI5MjY0MWE3ZTAzOC4uNWEwYTMyYzI4ZDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNj
ZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVk
LnR4dApAQCAtMSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4ndCBzZWxl
Y3QKLWFiYyBkZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMgdGVzdHMg
dGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBj
b3JyZWN0bHkuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBp
cyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1h
cmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JyArIG5ld2xpbmUKLVBBU1MgdGV4dDIudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKK1BBU1M6IHRleHQudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQp
ID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihl
bmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcgKyBuZXdsaW5lCitQ
QVNTOiB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09IDUK
IE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQzLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4dDMu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAhcHN3
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFTUyB0
ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNF
cXVhbCh0ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIGlz
IHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICdmJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2EnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdl
KSBpcyA0Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/Cf
mI8nCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmIMn
Ci1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcg
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUnCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8Jwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcK
K1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdk
JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
JzEnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSAnZWN0JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0ZXh0
Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVh
bCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8Jwor
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisK
Kwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464031</attachid>
            <date>2022-12-13 15:58:22 -0800</date>
            <delta_ts>2022-12-14 08:03:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221213185821.patch</filename>
            <type>text/plain</type>
            <size>87146</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBlMjVlYzQyNWVhMGQ5NDZiODliMWMwZTlhYzc3NjdjYWE5ZjIwZTBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKwogLi4uL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCAgIHwgIDk1ICsrKystLQogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDExICsKIFNvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCB8IDMwMyArKysrKysrKysrKysr
KysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDEw
MyArKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tICB8
ICAzOSArKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8
IDEwMiArKystLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0
ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sICAgICAgICAg
IHwgIDUxICsrLQogLi4ucmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0
IHwgIDE1ICstCiAuLi5zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwg
fCAgNjMgKystLQogLi4uL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dCAg
IHwgMjEwICsrKystLS0tLS0tLQogLi4uL21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5o
dG1sICAgICAgIHwgIDQ4ICsrLQogLi4uLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhw
ZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1u
b2RlLmh0bWwgfCAgMzUgKy0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwgICAg
ICAgICAgICB8IDE3NSArKysrKy0tLS0tCiAuLi4vdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1l
eHBlY3RlZC50eHQgICAgfCAgNzggKystLS0KIDE5IGZpbGVzIGNoYW5nZWQsIDg2NiBpbnNlcnRp
b25zKCspLCA1MDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaAogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2Eu
bW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXMudHh0CmluZGV4IDc1ZWEwZjNmN2NjYi4uMTg5MjY4MjM0OTk2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIE1vZHVsZXMvd2VieHIvWFJTZXNzaW9uRXZlbnQu
Y3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNw
cAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorYWNjZXNzaWJpbGl0eS9BWFRleHRN
YXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291
cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMGYy
ZGZhNDhiODNkLi5hNzgwOTZkYzg1ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTI2
LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNr
Lm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0K
IE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdlLm1tCiBNb2R1bGVz
L3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCithY2Nlc3NpYmlsaXR5
L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENh
Y2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBh
Y2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4
IDBlY2ExMTc4MGM5NC4uY2JhZTNlMjllMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTI0LDYgKzQ1MjQsNyBAQAogCQlD
MEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFC
OCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5k
aW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkz
RjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0
MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlDMEUyMDhB
MjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhU
ZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJGMzI3MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nl
c3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChXZWFrLCApOyB9OyB9OwogCQlDMEYyQTQ0MTEz
ODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXBy
b2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMxMDVEQTYzMEYz
QUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5oICovOyB9OwpAQCAtMTYzNzUs
NiArMTYzNzYsOSBAQAogCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhMb2dnZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQzA3ODM3NjAyM0RGMjUzRTAwQzlDNUM4IC8qIEFYSXNvbGF0ZWRP
YmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBWElzb2xhdGVkT2JqZWN0TWFjLm1t
OyBwYXRoID0gbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMwOEYxM0ExMjQ0NzY2REMwMEFCOTg5RiAvKiBBWExvZ2dlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBWExvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhUZXh0TWFya2VyLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFY
VGV4dE1hcmtlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQVhUZXh0TWFya2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMw
RTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLnRleHQt
YmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJBY2Nlc3NpYmlsaXR5LnRiZDsgcGF0
aCA9IHVzci9saWIvbGliQWNjZXNzaWJpbGl0eS50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9
OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVy
bDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBt
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2MTBGM0FBNjhGMDAxREQ0NEYg
LyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBuYW1lID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwOyBwYXRoID0gLi4vLi4vUEFM
L3BhbC90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTIxMzQzLDYgKzIxMzQ3LDcgQEAKIAkJMjlBODEyMDQwRkJCOUI0MTAwNTEw
MjkzIC8qIGFjY2Vzc2liaWxpdHkgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxk
cmVuID0gKAorCQkJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLywKIAkJCQlB
QUE3MjhFRjE2RDFEOEJDMDBEM0JCQzYgLyogaW9zICovLAogCQkJCTI5QUUyMTI5MjFBQjlFQ0Iw
MDg2OTI4MyAvKiBpc29sYXRlZHRyZWUgKi8sCiAJCQkJMjlBODEyMDUwRkJCOUI1MjAwNTEwMjkz
IC8qIG1hYyAqLywKQEAgLTIxNDE5LDYgKzIxNDI0LDggQEAKIAkJCQlDMDQ5M0VCNzI0NDY5OUU0
MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLywKIAkJCQkyOTgxQ0FBRjEzMTgyMkVDMDBEMTJGMkEg
LyogQVhPYmplY3RDYWNoZS5jcHAgKi8sCiAJCQkJMjlBODEyMUEwRkJCOUMxRDAwNTEwMjkzIC8q
IEFYT2JqZWN0Q2FjaGUuaCAqLywKKwkJCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhU
ZXh0TWFya2VyLmNwcCAqLywKKwkJCQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyLmggKi8sCiAJCQkJOTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50LmggKi8sCiAJCQkJQkM0QTUzMzAyNTYwNTkwMzAwMjhDNTkyIC8qIEZvcmNl
ZEFjY2Vzc2liaWxpdHlWYWx1ZS5oICovLAogCQkJKTsKQEAgLTMxMzY3LDYgKzMxMzc0LDE0IEBA
CiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQzBF
MjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICovID0geworCQkJaXNhID0gUEJYR3JvdXA7
CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOworCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlv
ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKQEAgLTM0OTMxLDYg
KzM0OTQ2LDcgQEAKIAkJCQkyOUFFMjEzNTIxQUJBNDhBMDA4NjkyODMgLyogQVhJc29sYXRlZE9i
amVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRTIxMkQyMUFCOUVFQjAwODY5MjgzIC8qIEFY
SXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzODBGQkI5QzFEMDA1MTAy
OTMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzBFMjA4QTIyOTM3OUM2
RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTFDOUYyRjkx
QUUzQkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0ZvcndhcmRDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0NDJDIC8qIEJhY2tGb3J3YXJk
Q2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGM1Yjk3MjVmYTM0Yi4uY2Y5NjI3YzUwOTYxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVkZSAiQVhJ
c29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFYVGV4dE1h
cmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgogI2luY2x1ZGUgIkFj
Y2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdy
aWRSb3cuaCIKQEAgLTI1MTUsMzMgKzI1MTYsMzUgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpzZXRU
ZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXIK
IHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVu
dD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CisKKyAgICBOb2RlKiBub2RlID0gY2hh
cmFjdGVyT2Zmc2V0Lm5vZGU7CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYm
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkgewog
ICAgICAgICB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICAKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gdGhpcy0+
Z2V0T3JDcmVhdGUoZG9tTm9kZSk7Ci0gICAgaWYgKCFvYmopCisKKyAgICBSZWZQdHIgb2JqZWN0
ID0gZ2V0T3JDcmVhdGUobm9kZSk7CisgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybjsK
LSAgICAKKwogICAgIC8vIENvbnZlcnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxl
UG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9m
ZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJs
ZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogICAgIGludCB2
cE9mZnNldCA9IDA7CiAgICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpIHsKICAgICAg
ICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwog
ICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAg
ICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAg
ICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKKworICAgIHRleHRNYXJrZXJEYXRhLmF4
SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3JhcHBl
ciA9IG9iamVjdC0+d3JhcHBlcigpOworICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBub2RlOwog
ICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZz
ZXQ7CiAgICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9m
ZnNldC5zdGFydEluZGV4OwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IHZwT2Zmc2V0Owog
ICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCk7
Ci0gICAgCi0gICAgdGhpcy0+c2V0Tm9kZUluVXNlKGRvbU5vZGUpOworICAgIC8vIFRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhc3NpZ25lZCBoZXJlIHNvIHdlIGNh
biByZXR1cm4gdmFsaWQgVGV4dE1hcmtlcnMgZm9yIGlnbm9yZWQgQVggb2JqZWN0cy4KKworICAg
IHNldE5vZGVJblVzZShub2RlKTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6
OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UsIGJvb2wgaXNTdGFydCwgYm9vbCBlbnRlclRleHRDb250cm9scykKQEAgLTI2NjEsNyArMjY2
NCw3IEBAIGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYgcHJldmlvdXMsIGNvbnN0IENoCiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9
Ci0gICAgCisKIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHQgPSBj
aGFyYWN0ZXJPZmZzZXQ7CkBAIC0yNjczLDcgKzI2NzYsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4
dE1hcgogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZpb3VzLCBuZXh0KSkKICAg
ICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQsIGZhbHNlKTsKICAgICAg
ICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIG5leHQp
OwotICAgICAgICAKKwogICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCBuZXh0IENoYXJhY3Rlck9m
ZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZvclJh
bmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkpKQog
ICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSB0cnVlOwpAQCAtMjY4MSw2ICsyNjg0LDIzIEBA
IHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0
KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFyCiAgICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdu
b3JlZCB8fCBzaG91bGRDb250aW51ZSk7CiB9CiAKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hl
OjpuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBWFRl
eHRNYXJrZXIgcmVzdWx0OworCisgICAgVGV4dE1hcmtlckRhdGEgZGF0YSB7IG1hcmtlci5kYXRh
KCkgfTsKKyAgICB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoZGF0YSwgbWFy
a2VyKTsKKyAgICBpZiAoZGF0YS5ub2RlICE9IG1hcmtlci5tX2RhdGEubm9kZSkgeworICAgICAg
ICAvLyBTaW5jZSB0aGUgTm9kZSBjaGFuZ2VkLCBuZWVkIHRvIHVwZGF0ZSB0aGUgb2JqZWN0IHdy
YXBwZXIuCisgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZShkYXRhLm5vZGUp
KQorICAgICAgICAgICAgZGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7Cisg
ICAgfQorCisgICAgcmVzdWx0Lm1fYXhPYmplY3RDYWNoZSA9IHRoaXM7CisgICAgcmVzdWx0Lm1f
ZGF0YSA9IGRhdGE7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogdm9pZCBBWE9iamVjdENhY2hl
Ojp0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRh
JiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQp
CiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OwpAQCAt
MjY5OCw2ICsyNzE4LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQ
cmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4CiAgICAgfSB3aGlsZSAo
dGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CiB9CiAKK0FYVGV4dE1h
cmtlciBBWE9iamVjdENhY2hlOjpwcmV2aW91c1RleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2Vy
JiBtYXJrZXIpCit7CisgICAgQVhUZXh0TWFya2VyIHJlc3VsdDsKKworICAgIFRleHRNYXJrZXJE
YXRhIGRhdGEgeyBtYXJrZXIuZGF0YSgpIH07CisgICAgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91
c0NoYXJhY3Rlck9mZnNldChkYXRhLCBtYXJrZXIpOworICAgIGlmIChkYXRhLm5vZGUgIT0gbWFy
a2VyLm1fZGF0YS5ub2RlKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBOb2RlIGNoYW5nZWQsIG5l
ZWQgdG8gdXBkYXRlIHRoZSBvYmplY3Qgd3JhcHBlci4KKyAgICAgICAgaWYgKGF1dG8qIG9iamVj
dCA9IGdldE9yQ3JlYXRlKGRhdGEubm9kZSkpCisgICAgICAgICAgICBkYXRhLm9iamVjdFdyYXBw
ZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICB9CisKKyAgICByZXN1bHQubV9heE9iamVjdENh
Y2hlID0gdGhpczsKKyAgICByZXN1bHQubV9kYXRhID0gZGF0YTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCiBOb2RlKiBBWE9iamVjdENhY2hlOjpuZXh0Tm9kZShOb2RlKiBub2RlKSBjb25zdAog
ewogICAgIGlmICghbm9kZSkKQEAgLTI3OTksMTIgKzI4MzYsMTIgQEAgc3RkOjpvcHRpb25hbDxU
ZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9z
aXRpb24oY28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIFBvc2l0aW9uIGRl
ZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogZG9tTm9kZSA9
IGRlZXBQb3MuYW5jaG9yTm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2RlKTsKLSAgICBpZiAoIWRv
bU5vZGUpCisgICAgTm9kZSogbm9kZSA9IGRlZXBQb3MuYW5jaG9yTm9kZSgpOworICAgIEFTU0VS
VChub2RlKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUp
LmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAg
Ly8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVycmluZyB0
byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCkBAIC0yODE2
LDI3ICsyODUzLDMxIEBAIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2Fj
aGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvCiAgICAgICAgIHJldHVybiB0
ZXh0TWFya2VyRGF0YTsKICAgICB9CiAKLSAgICAvLyBmaW5kIG9yIGNyZWF0ZSBhbiBhY2Nlc3Np
YmlsaXR5IG9iamVjdCBmb3IgdGhpcyBub2RlCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBk
b21Ob2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICAvLyBGaW5kIG9yIGNyZWF0
ZSBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3IgdGhpcyBub2RlLgorICAgIGF1dG8qIGNhY2hl
ID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVj
dD4gb2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOworCisgICAgUmVmUHRyIG9iamVj
dCA9IGNhY2hlLT5nZXRPckNyZWF0ZShub2RlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydk
IHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVx
dWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNl
IFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgogICAgIFRleHRNYXJrZXJEYXRh
IHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJr
ZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgdGV4dE1hcmtl
ckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0g
ZG9tTm9kZTsKKworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmplY3QtPm9iamVjdElEKCk7
CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOwor
ICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBub2RlOwogICAgIHRleHRNYXJrZXJEYXRhLm9mZnNl
dCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKICAgICB0ZXh0TWFya2VyRGF0
YS5hbmNob3JUeXBlID0gZGVlcFBvcy5hbmNob3JUeXBlKCk7CiAgICAgdGV4dE1hcmtlckRhdGEu
YWZmaW5pdHkgPSB2aXNpYmxlUG9zLmFmZmluaXR5KCk7CiAKICAgICB0ZXh0TWFya2VyRGF0YS5j
aGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwogICAgIHRleHRNYXJrZXJE
YXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKLQot
ICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UoZG9tTm9kZSk7CisgICAgLy8gVGV4dE1hcmtlckRhdGEu
aWdub3JlZCBpcyBkZWxpYmVyYXRlbHkgbm90IGFzc2lnbmVkIGhlcmUgc28gd2UgY2FuIHJldHVy
biB2YWxpZCBUZXh0TWFya2VycyBmb3IgaWdub3JlZCBBWCBvYmplY3RzLgorICAgIGNhY2hlLT5z
ZXROb2RlSW5Vc2Uobm9kZSk7CiAKICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDUzNWU3MTQy
MjIxZi4uMTIxMjI2YTRlMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYVGV4dE1hcmtlcjsKIGNsYXNzIERvY3VtZW50Owog
Y2xhc3MgSFRNTEFyZWFFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxlRWxlbWVudDsKQEAgLTU2LDYg
KzU3LDcgQEAgY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNz
IFdpZGdldDsKIAorLy8gRklYTUU6IE1vdmUgaW50byBBWFRleHRNYXJrZXIgY2xhc3MuCiBzdHJ1
Y3QgVGV4dE1hcmtlckRhdGEgewogICAgIEFYSUQgYXhJRDsKIApAQCAtNjcsNiArNjksMTIgQEAg
c3RydWN0IFRleHRNYXJrZXJEYXRhIHsKICAgICBpbnQgY2hhcmFjdGVyU3RhcnRJbmRleCB7IDAg
fTsKICAgICBpbnQgY2hhcmFjdGVyT2Zmc2V0IHsgMCB9OwogICAgIGJvb2wgaWdub3JlZCB7IGZh
bHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZPUk0oV0lOKQorICAgIEFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVyKiBvYmplY3RXcmFwcGVyIHsgbnVsbHB0ciB9OworI2VsaWYg
VVNFKEFUU1BJKQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNwaSogb2JqZWN0V3JhcHBlciB7
IG51bGxwdHIgfTsKKyNlbmRpZgogfTsKIAogc3RydWN0IENoYXJhY3Rlck9mZnNldCB7CkBAIC0x
NDcsNiArMTU1LDcgQEAgY2xhc3MgQVhPYmplY3RDYWNoZSA6IHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxBWE9iamVjdENhY2hlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhPYmplY3RDYWNo
ZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBBWElzb2xhdGVk
VHJlZTsKICAgICBmcmllbmQgV1RGOjpUZXh0U3RyZWFtJiBvcGVyYXRvcjw8KFdURjo6VGV4dFN0
cmVhbSYsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBmcmllbmQgQVhUZXh0TWFya2VyOwogcHVibGlj
OgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQmKTsKICAgICB+QVhPYmplY3RD
YWNoZSgpOwpAQCAtMjM2LDcgKzI0NSw5IEBAIHB1YmxpYzoKICAgICBzdGQ6Om9wdGlvbmFsPFRl
eHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9s
KEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZv
ckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYp
OwogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJr
ZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyIG5leHRU
ZXh0TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFG
b3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlciBwcmV2aW91c1RleHRNYXJrZXIoY29uc3QgQVhU
ZXh0TWFya2VyJik7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRN
YXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rl
ck9mZnNldEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgLy8gVXNlIGln
bm9yZU5leHROb2RlU3RhcnQvaWdub3JlUHJldmlvdXNOb2RlRW5kIHRvIGRldGVybWluZSB0aGUg
YmVoYXZpb3Igd2hlbiB3ZSBhcmUgYXQgbm9kZSBib3VuZGFyeS4gCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwLi41NmE0ODRkZDlmNGEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKQEAgLTAsMCArMSwzMDMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUwor
ICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFYVGV4dE1hcmtl
ci5oIgorCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlck9i
amVjdC5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorI2luY2x1ZGUgPHBhbC9zcGkvbWFjL0hJU2Vy
dmljZXNTUEkuaD4KKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1hcmtl
cjo6QVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRp
b24mIHZpc2libGVQb3NpdGlvbikKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2F4T2JqZWN0Q2FjaGUpOwor
CisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgUG9zaXRpb24gZGVlcFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50
KCk7CisgICAgbV9kYXRhLm5vZGUgPSBkZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAgIEFT
U0VSVChtX2RhdGEubm9kZSk7CisgICAgaWYgKCFtX2RhdGEubm9kZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZGF0YS5ub2RlKSAmJiBkb3duY2Fz
dDxIVE1MSW5wdXRFbGVtZW50PigqbV9kYXRhLm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX2RhdGEub2Zmc2V0ID0gZGVlcFBvc2l0aW9uLmRlcHJlY2F0
ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgbV9kYXRhLmFuY2hvclR5cGUgPSBkZWVwUG9zaXRpb24u
YW5jaG9yVHlwZSgpOworICAgIG1fZGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZp
bml0eSgpOworCisgICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQgPSBtX2F4T2JqZWN0Q2FjaGUtPmNo
YXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKKyAgICBt
X2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4Owor
ICAgIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OworCisg
ICAgaW5pdGlhbGl6ZUFYT2JqZWN0V3JhcHBlcigpOworICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0
Tm9kZUluVXNlKG1fZGF0YS5ub2RlKTsKK30KKworQVhUZXh0TWFya2VyOjpBWFRleHRNYXJrZXIo
QVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zm
c2V0KQorICAgIDogbV9heE9iamVjdENhY2hlKGNhY2hlKQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYXhPYmplY3RDYWNoZSk7CisKKyAgICBpZiAoY2hhcmFj
dGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEubm9kZSA9
IGNoYXJhY3Rlck9mZnNldC5ub2RlOworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihtX2Rh
dGEubm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZGF0YS5ub2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkgeworICAgICAgICBtX2RhdGEuaWdub3JlZCA9IHRydWU7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRpb24uCisg
ICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSBtX2F4T2JqZWN0Q2FjaGUtPnZpc2libGVQb3NpdGlv
bkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXZpc2libGVQ
b3NpdGlvbi5pc051bGwoKSkgeworICAgICAgICBtX2RhdGEub2Zmc2V0ID0gdmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICAgICAg
bV9kYXRhLmFuY2hvclR5cGUgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNo
b3JUeXBlKCk7CisgICAgICAgIG1fZGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZp
bml0eSgpOworICAgIH0KKworICAgIG1fZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFj
dGVyT2Zmc2V0LnN0YXJ0SW5kZXg7CisgICAgbV9kYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJh
Y3Rlck9mZnNldC5vZmZzZXQ7CisKKyAgICBpbml0aWFsaXplQVhPYmplY3RXcmFwcGVyKCk7Cisg
ICAgbV9heE9iamVjdENhY2hlLT5zZXROb2RlSW5Vc2UobV9kYXRhLm5vZGUpOworfQorCitBWFRl
eHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgTm9kZSogbm9kZSkK
KyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworICAgIEFTU0VSVChtX2F4T2JqZWN0Q2FjaGUpOworCisgICAgbV9kYXRhLm5vZGUgPSBu
b2RlOworICAgIGluaXRpYWxpemVBWE9iamVjdFdyYXBwZXIoKTsKKyAgICBtX2F4T2JqZWN0Q2Fj
aGUtPnNldE5vZGVJblVzZShtX2RhdGEubm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0
TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyUmVmKQoreworICAgIGlmICghdGV4dE1h
cmtlclJlZikKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRN
YXJrZXJSZWYpID09IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKTsKKyAgICBpZiAoQ0ZHZXRUeXBl
SUQodGV4dE1hcmtlclJlZikgIT0gQVhUZXh0TWFya2VyR2V0VHlwZUlEKCkpCisgICAgICAgIHJl
dHVybjsKKworICAgIEFTU0VSVChBWFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikg
PT0gc2l6ZW9mKG1fZGF0YSkpOworICAgIGlmIChBWFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1h
cmtlclJlZikgIT0gc2l6ZW9mKG1fZGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1lbWNw
eSgmbV9kYXRhLCBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKHRleHRNYXJrZXJSZWYpLCBzaXplb2Yo
bV9kYXRhKSk7CisKKyAgICBBY2Nlc3NpYmlsaXR5OjpwZXJmb3JtRnVuY3Rpb25Pbk1haW5UaHJl
YWQoW3RoaXNdICgpIHsKKyAgICAgICAgaWYgKCFub2RlKCkpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbV9heE9iamVjdENhY2hlID0gbm9kZSgpLT5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKTsKKyAgICB9KTsKK30KKworUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gQVhUZXh0
TWFya2VyOjpwbGF0Zm9ybU9iamVjdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhU
ZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJm1fZGF0
YSwgc2l6ZW9mKG1fZGF0YSkpKTsKK30KKwordm9pZCBBWFRleHRNYXJrZXI6OmluaXRpYWxpemVB
WE9iamVjdFdyYXBwZXIoKQoreworICAgIFJlZlB0ciBvYmplY3QgPSBtX2F4T2JqZWN0Q2FjaGUt
PmdldE9yQ3JlYXRlKG1fZGF0YS5ub2RlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgbV9kYXRhLmF4SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisgICAgbV9kYXRh
Lm9iamVjdFdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKK30KKwordm9pZCBBWFRleHRNYXJr
ZXI6OnNldERhdGEoTm9kZSogbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBQb3NpdGlvbjo6QW5jaG9y
VHlwZSBhbmNob3JUeXBlLCBBZmZpbml0eSBhZmZpbml0eSwgdW5zaWduZWQgY2hhcmFjdGVyU3Rh
cnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0KQoreworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYXhPYmplY3RDYWNoZSk7CisKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybjsKKworICAgIG1fZGF0YS5ub2RlID0gbm9kZTsKKyAgICBtX2RhdGEu
b2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZGF0YS5hbmNob3JUeXBlID0gYW5jaG9yVHlwZTsKKyAg
ICBtX2RhdGEuYWZmaW5pdHkgPSBhZmZpbml0eTsKKworICAgIG1fZGF0YS5jaGFyYWN0ZXJTdGFy
dEluZGV4ID0gY2hhcmFjdGVyU3RhcnRJbmRleDsKKyAgICBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0
ID0gY2hhcmFjdGVyT2Zmc2V0OworCisgICAgaW5pdGlhbGl6ZUFYT2JqZWN0V3JhcHBlcigpOwor
fQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChpc051bGwoKSB8fCBub2RlKCkt
PmlzUHNldWRvRWxlbWVudCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgUG9zaXRpb24g
cG9zaXRpb247CisgICAgaWYgKG1fZGF0YS5hbmNob3JUeXBlID09IFBvc2l0aW9uOjpQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3IpCisgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24obm9kZSgpLCBt
X2RhdGEub2Zmc2V0LCBtX2RhdGEuYW5jaG9yVHlwZSk7CisgICAgZWxzZQorICAgICAgICBwb3Np
dGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwgbV9kYXRhLmFuY2hvclR5cGUpOworCisgICAgVmlzaWJs
ZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihwb3NpdGlvbiwgbV9kYXRhLmFmZmluaXR5KTsKKyAg
ICBhdXRvIGRlZXBQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOwor
ICAgIGlmIChkZWVwUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBhdXRvKiByZW5kZXJlciA9IGRlZXBQb3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRv
KiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAo
Y2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKG1fZGF0YS5heElEKSkKKyAgICAg
ICAgcmV0dXJuIHsgfTsKKworICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb247Cit9CisKK0FYVGV4
dE1hcmtlcjo6b3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHJlc3VsdChub2RlKCksIG1f
ZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAv
LyBXaGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBpcyB1
cHN0cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHBy
ZXZpb3VzIGxpbmUuCisgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQg
c28gdGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KKyAgICBpZiAobV9kYXRhLmFmZmluaXR5
ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKKyAgICAgICAgcmV0dXJuIG1fYXhPYmplY3RDYWNoZS0+
cHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQocmVzdWx0LCBmYWxzZSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKK30KKworQWNjZXNzaWJpbGl0eU9iamVjdCogQVhUZXh0TWFya2VyOjpvYmplY3QoKSBjb25z
dAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkg
fHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1fYXhP
YmplY3RDYWNoZS0+Z2V0KG5vZGUoKSk7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
KiBBWFRleHRNYXJrZXI6Om9iamVjdFdyYXBwZXIoKSBjb25zdAoreworICAgIGlmIChpc0lnbm9y
ZWQoKSB8fCBpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4g
bV9kYXRhLm9iamVjdFdyYXBwZXI7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCitT
dHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisgICAgYXV0byBzZXBhcmF0
b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKG5vZGUoKS0+ZGVidWdEZXNjcmlwdGlv
bigpCisgICAgICAgICwgc2VwYXJhdG9yLCAib2Zmc2V0ICIsIG1fZGF0YS5vZmZzZXQKKyAgICAg
ICAgLCBzZXBhcmF0b3IsICJBbmNob3JUeXBlICIsIG1fZGF0YS5hbmNob3JUeXBlCisgICAgICAg
ICwgc2VwYXJhdG9yLCAiQWZmaW5pdHkgIiwgbV9kYXRhLmFmZmluaXR5CisgICAgICAgICwgc2Vw
YXJhdG9yLCAiY2hhcmFjdGVyU3RhcnRJbmRleCAiLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRl
eAorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAiLCBtX2RhdGEuY2hhcmFj
dGVyT2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiYXhJRCAiLCBheElEKCkubG9nZ2luZ1N0
cmluZygpCisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIsIGlzSWdub3JlZCgpCisg
ICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2Uo
QVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQorICAgIDogc3RhcnQoQVhU
ZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRNYXJrZXIodGV4dE1hcmtlclJhbmdlUmVmKSkKKyAgICAs
IGVuZChBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlUmVmKSkK
K3sKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJhbmdlUmVmKSA9PSBBWFRleHRN
YXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1h
cmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5n
ZSYgcmFuZ2UpCisgICAgOiBzdGFydChjYWNoZSwgcmFuZ2Uuc3RhcnQpCisgICAgLCBlbmQoY2Fj
aGUsIHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VS
VChjYWNoZSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShBWE9i
amVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdl
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIXJhbmdlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBzdGFydCA9IEFYVGV4dE1hcmtlcihjYWNoZSwgY2FjaGUtPnN0
YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIHRydWUpKTsKKyAgICBlbmQg
PSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9y
UmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFy
a2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25zdCBBWFRleHRNYXJrZXImIGUpCisg
ICAgOiBzdGFydChzKQorICAgICwgZW5kKGUpCit7Cit9CisKK1JldGFpblB0cjxBWFRleHRNYXJr
ZXJSYW5nZVJlZj4gQVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0CisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikmc3RhcnQubV9kYXRhLCBzaXplb2Yoc3RhcnQubV9kYXRh
KSkpLmdldCgpCisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmZW5kLm1fZGF0YSwgc2l6ZW9mKGVuZC5tX2RhdGEp
KSkuZ2V0KCkKKyAgICApKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6Om9wZXJhdG9yIFZpc2li
bGVQb3NpdGlvblJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
ICAgIHJldHVybiB7IHN0YXJ0LCBlbmQgfTsKK30KKworc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4gQVhUZXh0TWFya2VyUmFuZ2U6OnNpbXBsZVJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgYXV0byBzdGFydEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91
bmRhcnlQb2ludChzdGFydCk7CisgICAgYXV0byBlbmRCb3VuZGFyeVBvaW50ID0gbWFrZUJvdW5k
YXJ5UG9pbnQoZW5kKTsKKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2ludCB8fCAhZW5kQm91bmRh
cnlQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7ICpz
dGFydEJvdW5kYXJ5UG9pbnQsICplbmRCb3VuZGFyeVBvaW50IH0gfTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRleHRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2Vy
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41NDA2ODkxNTNjNDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1h
cmtlci5oCkBAIC0wLDAgKzEsMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNz
IEFjY2Vzc2liaWxpdHlPYmplY3Q7CitzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0OworCitjbGFzcyBB
WFRleHRNYXJrZXIgeworICAgIGZyaWVuZCBjbGFzcyBBWE9iamVjdENhY2hlOworICAgIGZyaWVu
ZCBjbGFzcyBBWFRleHRNYXJrZXJSYW5nZTsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMK
KyAgICBBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
OworICAgIEFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0
Jik7CisgICAgQVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqLCBOb2RlKik7CisjaWYgUExBVEZP
Uk0oQ09DT0EpCisgICAgQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZik7CisjZW5kaWYKKyAg
ICBBWFRleHRNYXJrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0Owor
ICAgIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHBsYXRmb3JtT2JqZWN0KCkgY29uc3Q7CisK
KyAgICBvcGVyYXRvciBWaXNpYmxlUG9zaXRpb24oKSBjb25zdDsKKyAgICBvcGVyYXRvciBDaGFy
YWN0ZXJPZmZzZXQoKSBjb25zdDsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBvcGVyYXRvciBB
WFRleHRNYXJrZXJSZWYoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxl
YXNlKCk7IH0KKyNlbmRpZgorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCgpIGNvbnN0
OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBvYmplY3RXcmFwcGVyKCkgY29uc3Q7
CisKKyAgICBUZXh0TWFya2VyRGF0YSBjb25zdCYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQorICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm9kZTsgfQorICAg
IEFYSUQgYXhJRCgpIGNvbnN0OworICAgIGJvb2wgaXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLmlnbm9yZWQ7IH0KKworI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKKyAgICBTdHJp
bmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgdm9p
ZCBpbml0aWFsaXplQVhPYmplY3RXcmFwcGVyKCk7CisgICAgdm9pZCBzZXREYXRhKE5vZGUqLCB1
bnNpZ25lZCBvZmZzZXQsIFBvc2l0aW9uOjpBbmNob3JUeXBlLCBBZmZpbml0eSwgdW5zaWduZWQg
Y2hhcmFjdGVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFjdGVyT2Zmc2V0KTsKKworICAgIEFY
T2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxwdHIgfTsKKyAgICBUZXh0TWFya2Vy
RGF0YSBtX2RhdGE7Cit9OworCitjbGFzcyBBWFRleHRNYXJrZXJSYW5nZSB7CitwdWJsaWM6Cisg
ICAgLy8gQ29uc3RydWN0b3JzLgorICAgIEFYVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUq
LCBjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOworICAgIEFYVGV4dE1hcmtlclJhbmdlKEFY
T2JqZWN0Q2FjaGUqLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIEFY
VGV4dE1hcmtlclJhbmdlKGNvbnN0IEFYVGV4dE1hcmtlciYsIGNvbnN0IEFYVGV4dE1hcmtlciYp
OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtl
clJhbmdlUmVmKTsKKyNlbmRpZgorICAgIEFYVGV4dE1hcmtlclJhbmdlKCkgPSBkZWZhdWx0Owor
CisgICAgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBwbGF0Zm9ybU9iamVjdCgpIGNv
bnN0OworICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2ltcGxlUmFuZ2UoKSBjb25zdDsKKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBvcGVyYXRvciBBWFRleHRNYXJrZXJSYW5nZVJlZigpIGNvbnN0IHsgcmV0
dXJuIHBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlmCisgICAgb3BlcmF0
b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFydC5pc051bGwoKSAmJiAhZW5kLmlzTnVsbCgp
OyB9CisKKyAgICBBWFRleHRNYXJrZXIgc3RhcnQ7CisgICAgQVhUZXh0TWFya2VyIGVuZDsKK307
CisKK2lubGluZSBib29sIEFYVGV4dE1hcmtlcjo6aXNOdWxsKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gIW1fYXhPYmplY3RDYWNoZSB8fCAhbm9kZSgpIHx8ICFtX2F4T2JqZWN0Q2FjaGUtPmlzTm9k
ZUluVXNlKG5vZGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0g
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTc4MjgyZjcyMDVmCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRl
eHRNYXJrZXJDb2NvYS5tbQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICog
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQg
ImNvbmZpZy5oIgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCisKKyNpZiBQTEFURk9STShNQUMp
CisjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oIgorI2VuZGlmCisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworQVhJRCBBWFRleHRNYXJrZXI6OmF4SUQoKSBjb25zdAor
eworICAgIHJldHVybiBbb2JqZWN0V3JhcHBlcigpIGlkZW50aWZpZXJdOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmlu
ZGV4IDQ1NDhlMmQyZTA0YS4uOTRiMzg2MmViOTIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW1wb3J0ICJBWExvZ2dlci5o
IgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAj
aW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxp
dHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKQEAgLTcxNywzOCArNzE4
LDI2IEBAIHN0YXRpYyBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vz
c2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2VzCiAKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtl
ciBoZWxwZXJzCiAKLXN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1h
cmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zm
c2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4g
bmV4dFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYg
bWFya2VyKQogewogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0g
ICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJE
YXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0
KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCisKKyAgICBhdXRvIG5leHRNYXJrZXIg
PSBjYWNoZS0+bmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICBpZiAoIW5leHRNYXJrZXIuYXhJ
RCgpLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gYWRvcHRDRihB
WFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4
dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKyAgICByZXR1cm4gbmV4dE1h
cmtlci5wbGF0Zm9ybU9iamVjdCgpOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtl
clJlZj4gcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUq
IGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5Q
dHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2Fj
aGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQogewogICAgIGlmICghY2FjaGUpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7
Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4
dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5h
eElEKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0
YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOwotfQogCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFy
a2VyUmVmPiluZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0
JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1cm4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0
ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVy
T2Zmc2V0KTsKLX0KLQotLSAoUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNl
dAotewotICAgIHJldHVybiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2Vs
Zi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAg
ICBhdXRvIHByZXZpb3VzTWFya2VyID0gY2FjaGUtPnByZXZpb3VzVGV4dE1hcmtlcihtYXJrZXIp
OworICAgIGlmICghcHJldmlvdXNNYXJrZXIuYXhJRCgpLmlzVmFsaWQoKSkKKyAgICAgICAgcmV0
dXJuIG5pbDsKKyAgICByZXR1cm4gcHJldmlvdXNNYXJrZXIucGxhdGZvcm1PYmplY3QoKTsKIH0K
IAogLy8gRklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBzaW5jZSBjbGllbnRzIHNob3VsZCBub3Qg
bmVlZCB0byBjYWxsIHRoaXMgbWV0aG9kIGFuZCBzaG91bGQgbm90IGJlIGV4cG9zZWQgaW4gdGhl
IHB1YmxpYyBpbnRlcmZhY2UuCkBAIC0zMzcxLDI0ICszMzYwLDI1IEBAIC0gKEFYVGV4dE1hcmtl
clJhbmdlUmVmKWxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJS
ZWYpdGV4dE1hCiAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1h
cmtlcihjYWNoZSwgdGV4dE1hcmtlcik7CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4
dE1hcmtlcik7CisvLyAgICAgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKICAgICAgICAgVmlzaWJsZVBvc2l0
aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2U7CiAgICAgICAgIHN3aXRjaCAodGV4dFVuaXQp
IHsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGluZToKLSAgICAgICAgICAgIHZpc2libGVQb3Np
dGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9zaXRpb24odmlzaWJsZVBv
c2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVj
dC0+bGluZVJhbmdlRm9yUG9zaXRpb24obWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICBjYXNlIFRleHRVbml0OjpMZWZ0TGluZToKLSAgICAgICAgICAgIHZpc2libGVQb3NpdGlv
blJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNp
YmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5n
T2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtlcik7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6UmlnaHRMaW5lOgotICAgICAgICAgICAg
dmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdodExpbmVWaXNpYmxlUG9z
aXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9u
UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShtYXJr
ZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKGNhY2hlLCB2
aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwgdmlzaWJsZVBvc2l0aW9uUmFuZ2UuZW5kKTsKKyAg
ICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJhbmdlKGNhY2hlLCB2aXNpYmxlUG9zaXRpb25SYW5n
ZSkucGxhdGZvcm1PYmplY3QoKTsKICAgICB9KTsKIH0KIApAQCAtMzY4MiwyNSArMzY3MiwxOSBA
QCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgcmV0dXJuIChp
ZClbc2VsZiBfdGV4dE1hcmtlckZvckluZGV4OltudW1iZXIgaW50ZWdlclZhbHVlXV07CiAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFVJRWxlbWVudEZvclRleHRNYXJr
ZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFz
ZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXIsIHByb3RlY3RlZFNlbGYgPSBy
ZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAgYXV0byog
YmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAg
ICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7
Ci0KLSAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYWNjZXNzaWJpbGl0eU9iamVjdEZvclRl
eHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyKTsKLSAg
ICAgICAgICAgIGlmICghYXhPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQot
ICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSAmJiBbYXhPYmplY3QtPndy
YXBwZXIoKSBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtheE9iamVj
dC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtl
cih0ZXh0TWFya2VyKTsKKyAgICAgICAgYXV0byogd3JhcHBlciA9IG1hcmtlci5vYmplY3RXcmFw
cGVyKCk7CisgICAgICAgIGlmICghd3JhcHBlcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICB9KTsKKyAg
ICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykKKyAg
ICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFy
a2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnVpRWxlbWVudF0g
KCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJS
YW5nZUZyb21SYW5nZSh1aUVsZW1lbnQuZ2V0KCktPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50
LmdldCgpLT5lbGVtZW50UmFuZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJr
ZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LT5l
bGVtZW50UmFuZ2UoKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzc1MSw3ICszNzM1LDcg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAg
ICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGJhY2tpbmdPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQo
d2ViQ29yZVBvaW50KSk7CisgICAgICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlcihiYWNr
aW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlv
bkZvclBvaW50KHdlYkNvcmVQb2ludCkpLnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsK
ICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zODQwLDkgKzM4MjQsOCBAQCBBTExPV19ERVBSRUNB
VEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHx8ICFBWE9iamVjdElzVGV4dE1h
cmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDowXSkKICAgICAgICAgICAgIHx8ICFBWE9iamVjdElz
VGV4dE1hcmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkpCiAgICAgICAgICAgICByZXR1cm4g
bmlsOwotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRW
YWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJmFycmF5XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAg
ICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnMoKEFYVGV4dE1h
cmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSwgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkg
b2JqZWN0QXRJbmRleDoxXSkuZ2V0KCk7Ci0gICAgICAgIH0pOworCisgICAgICAgIHJldHVybiAo
aWQpQVhUZXh0TWFya2VyUmFuZ2UgeyB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0
SW5kZXg6MF0gfSwgeyAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjFdIH0g
fS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0
TWFya2VycyJdKSB7CkBAIC0zODgxLDggKzM4NjQsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNl
dCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAg
ICAgICAgICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIG5leHRUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0pOworICAgICAgICAgICAgQVhU
ZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXh0VGV4
dE1hcmtlcihjYWNoZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0p
OwogICAgIH0KIApAQCAtMzg5Niw4ICszODc5LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7CiAKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQg
PSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKLSAgICAg
ICAgICAgIHJldHVybiBicmlkZ2VfaWRfY2FzdChbcHJvdGVjdGVkU2VsZiBwcmV2aW91c1RleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBB
WFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIHByZXZp
b3VzVGV4dE1hcmtlcihjYWNoZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAg
ICAgIH0pOwogICAgIH0KIApAQCAtMzk3OCwyNiArMzk2MSwxMyBAQCBBTExPV19ERVBSRUNBVEVE
X0lNUExFTUVOVEFUSU9OU19FTkQKIAogICAgIC8vIFVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJl
ZSAoc28gZmFyKS4KICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4
dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRh
aW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRT
ZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVj
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvIHJhbmdl
ID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCB0ZXh0TWFya2VyUmFuZ2UpOwotCi0gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRU
ZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwg
dHJ1ZSk7Ci0gICAgICAgIH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJr
ZXJSYW5nZSB7IHRleHRNYXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gKGlkKWF4VGV4dE1h
cmtlclJhbmdlLnN0YXJ0LnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwg
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0g
ICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4
dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJh
bmdlKTsKLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5n
ZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBmYWxzZSk7Ci0gICAgICAg
IH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRN
YXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gKGlkKWF4VGV4dE1hcmtlclJhbmdlLmVuZC5w
bGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFRSRUVf
REVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxl
bWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CmluZGV4IDVkMzNk
YWNiMmQzZi4uNTA0NjAyNThmYzMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQu
dHh0CkBAIC0xLDE3ICsxLDE0IEBACi10ZXh0IGhlcmUKLXRleHQgYmxvY2sKLXRleHQgaGVyZQog
VGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0
IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLgogCi1PbiBzdWNjZXNzLCB5b3Ugd2ls
bCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01Q
TEVURSIuCi0KK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSA9PT0gMTAK
K1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KS5pc0Vx
dWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihlbmQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKG5ld1JhbmdlKSA9PT0gMTAKK1BBU1M6IG5ld1JhbmdlLmlzRXF1YWwocmFu
Z2UpID09PSB0cnVlCiAKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtl
clJhbmdlMSkgaXMgMTAKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1
ZQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJrZXJSYW5nZSkgaXMgMTAK
LVBBU1MgbmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFya2VyUmFuZ2UxKSBpcyB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKLQordGV4dCBo
ZXJlCit0ZXh0IGJsb2NrCit0ZXh0IGhlcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCmluZGV4IGQ0OTM2
YWQyMmQxOC4uMzQwYWIxZTE5ODBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwKQEAgLTEsNTEgKzEs
NDIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiB0ZXh0
IGhlcmUKLTxkaXYgaWQ9InRleHQxIiB0YWJpbmRleD0iMCI+dGV4dCBibG9jazwvZGl2PgorPGRp
diBpZD0idGV4dDEiPnRleHQgYmxvY2s8L2Rpdj4KIHRleHQgaGVyZQogCi08cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0gICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVy
biB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4iKTsKLQogICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbGV0IHRlc3RP
dXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRo
ZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLlxuXG4iOwogCi0gICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKLSAgICAgICAg
ICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OworICAg
ICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dDEiKS5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgICAvLyBHZXQgdGhlIGFj
dHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOwor
ICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1hcmtlciBmb3IgdGhp
cyBlbGVtZW50J3MgcmFuZ2UuCisgICAgICAgIHZhciByYW5nZSA9IHRleHQudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSIsICIxMCIpOworICAgICAgICB2YXIgc3RhcnQg
PSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CiAKLSAgICAg
ICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1hcmtlciBmb3IgdGhpcyBy
YW5nZS4KLSAgICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMSA9IHRleHQudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMSkiLCAiMTAiKTsKLSAgICAgICAgICB2YXIgc3Rh
cnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UxKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwg
Z2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQgd2Ugc3RhcnRlZCB3aXRoLgorICAgICAgICB0
ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQg
d2Ugc3RhcnRlZCB3aXRoLgotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAg
ICAgICAgLy8gR2V0IHRoZSBlbmQgbWFya2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVzIHVzIHRo
ZSBzYW1lIGVsZW1lbnQuCisgICAgICAgIHZhciBlbmQgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRleHQpIiwg
InRydWUiKTsKIAotICAgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhh
dCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50LgotICAgICAgICAgIHZhciBlbmRNYXJrZXIg
PSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMSk7
Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAgICAgLy8gTWFrZSBhIG1h
cmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hlY2sgdGhl
IGxlbmd0aC4KKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHN0YXJ0LCBlbmQpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC50
ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpIiwgIjEwIik7CiAKLSAgICAgICAgICAvLyBN
YWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5kIGVuZCBtYXJrZXJzIGFuZCBj
aGVjayB0aGUgbGVuZ3RoCi0gICAgICAgICAgdmFyIG5ld01hcmtlclJhbmdlID0gdGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpOwotICAgICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJrZXJSYW5nZSkiLCAi
MTAiKTsKKyAgICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2Vy
IHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAorICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgibmV3
UmFuZ2UuaXNFcXVhbChyYW5nZSkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gQW5kIG1ha2Ug
c3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAotICAg
ICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFya2VyUmFu
Z2UxKSIpOworICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0Pgot
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25v
cmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYzU3NjU4YTU2Zi4uOGZjNWZkNzI0OGIx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGlj
YXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4
cGVjdGVkLnR4dApAQCAtMSwxNiArMSwxMyBAQAotRmlyc3QgbGluZSBvZiB0ZXh0Ci1idXR0b24K
LVRoaXJkIGxpbmUgb2YgdGV4dAogVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9y
IGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQuCiAKLU9uIHN1Y2Nl
c3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5
ICJURVNUIENPTVBMRVRFIi4KK1BBU1M6IGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHJhbmdlKSA9PT0gJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKK1BBU1M6IGVsZW1lbnQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHJhbmdlKSA9PT0gJ2J1dHRvbicKK1BBU1M6IHJlc3VsdEVsZW1lbnQu
c3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnCitQQVNTOiByZXN1
bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0Jwog
Ci0KLVBBU1MgZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICdGaXJzdCBsaW5lIG9mIHRleHQnCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKGxpbmVSYW5nZSkgaXMgJ2J1dHRvbicKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1
ZSBpcyAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JwotUEFTUyByZXN1bHRFbGVtZW50LnN0
cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVk
LWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVk
aWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAppbmRleCA2ZWE4MTg3YzAyMjYuLjk1ZDdh
NDZjZWNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNo
LXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRt
bApAQCAtMSw1MCArMSw0NyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQg
SFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNz
aWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgor
PGJvZHk+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgcm9sZT0iZ3JvdXAiPgogPGRpdiBpZD0idGVz
dCI+Rmlyc3QgbGluZSBvZiB0ZXh0PGJyPgogPGJ1dHRvbiBpZD0iYnV0dG9uIiBhcmlhLWhpZGRl
bj0idHJ1ZSI+YnV0dG9uPC9idXR0b24+CiA8YnI+VGhpcmQgbGluZSBvZiB0ZXh0PC9kaXY+Ci0K
LTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Rp
dj4KIAogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0
byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQu
Iik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICAKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5mb2N1cygpOwot
ICAgICAgICB2YXIgY29udGFpbmVyRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZv
Y3VzZWRFbGVtZW50OwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3Rz
IHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFuIGln
bm9yZWQgZWxlbWVudC5cblxuIjsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVu
dEJ5SWQoInRlc3QiKS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIHZhciBtYXJrZXJSYW5nZSA9
IGVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICAgICAgc2hv
dWxkQmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIn
Rmlyc3QgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKLSAgICAgICAgLy8gVHJ5IHRvIGdldCB0
aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxpbmUgdGV4dCBtYXJrZXIgY2FsbHMKLSAgICAgICAg
dmFyIHRleHRNYXJrZXIgPSBlbGVtZW50LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpOwotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtl
cih0ZXh0TWFya2VyKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJr
ZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHZhciBsaW5lUmFuZ2UgPSBlbGVtZW50LmxpbmVUZXh0
TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgi
ZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKSIsICInYnV0dG9uJyIp
OwotICAgICAgICAKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSk7Ci0gICAgICAgIHZhciBzdGFydEVsZW1lbnQg
PSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsK
LSAgICAgICAgCisgICAgICAgIHZhciByYW5nZSA9IGVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9y
RWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwgIidGaXJzdCBsaW5lIG9mIHRleHQnIik7CisK
KyAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxpbmUgdGV4
dCBtYXJrZXIgY2FsbHMuCisgICAgICAgIHZhciBtYXJrZXIgPSBlbGVtZW50LmVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50Lm5l
eHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRN
YXJrZXIobWFya2VyKTsKKyAgICAgICAgcmFuZ2UgPSBlbGVtZW50LmxpbmVUZXh0TWFya2VyUmFu
Z2VGb3JUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1l
bnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInYnV0dG9uJyIpOworCisgICAg
ICAgIG1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJh
bmdlKTsKKyAgICAgICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisKICAgICAgICAgLy8gU2VhcmNoIGZvcndhcmQK
LSAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXki
LCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKKyAgICAgICAg
dmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRl
KHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Cisg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FY
VmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKKwogICAgICAgICAvLyBTZWFyY2ggYmFja3dh
cmQKLSAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFueVR5cGVTZWFyY2hLZXki
LCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1
ZSIsICInQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworICAgICAgICByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogRmlyc3Qg
bGluZSBvZiB0ZXh0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250
YWluZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1
dCk7CiAgICAgfQotICAgICAgICAKIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFu
Z2UtZXhwZWN0ZWQudHh0CmluZGV4IGNkY2M3N2MzYzg3MS4uNmE3ZDJmNzhhM2U0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDI4MSArMSwyMDcgQEAK
LVRoaW5rIGRpZmZlcmVudCBBcHBsZQotCi1ib2xkIGl0YWxpYwotdW5kZXJsaW5lIGxhc3QhCi0K
LUhlbGxvIFdvcmxkIQotVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29y
a3MgcHJvcGVybHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQorVGhpcyB0ZXN0cyB0
aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LgogCiBjb250ZW50IGxl
bmd0aDogNjUKIEFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFjdGVyIGluIHRo
ZSB0ZXh0OgotMAotJycKLTEKLSdUJwotMgotJ1RoJwotMwotJ1RoaScKLTQKLSdUaGluJwotNQot
J1RoaW5rJwotNgotJ1RoaW5rICcKLTcKLSdUaGluayBkJwotOAotJ1RoaW5rIGRpJwotOQotJ1Ro
aW5rIGRpZicKLTEwCi0nVGhpbmsgZGlmZicKLTExCi0nVGhpbmsgZGlmZmUnCi0xMgotJ1RoaW5r
IGRpZmZlcicKLTEzCi0nVGhpbmsgZGlmZmVyZScKLTE0Ci0nVGhpbmsgZGlmZmVyZW4nCi0xNQot
J1RoaW5rIGRpZmZlcmVudCcKLTE2Ci0nVGhpbmsgZGlmZmVyZW50ICcKLTE3Ci0nVGhpbmsgZGlm
ZmVyZW50IEEnCi0xOAotJ1RoaW5rIGRpZmZlcmVudCBBcCcKLTE5Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcCcKLTIwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGwnCi0yMQotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZScKLTIyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjMKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzAgJycKKzEgJ1QnCisyICdUaCcKKzMgJ1RoaScKKzQgJ1RoaW4nCis1ICdUaGluaycK
KzYgJ1RoaW5rICcKKzcgJ1RoaW5rIGQnCis4ICdUaGluayBkaScKKzkgJ1RoaW5rIGRpZicKKzEw
ICdUaGluayBkaWZmJworMTEgJ1RoaW5rIGRpZmZlJworMTIgJ1RoaW5rIGRpZmZlcicKKzEzICdU
aGluayBkaWZmZXJlJworMTQgJ1RoaW5rIGRpZmZlcmVuJworMTUgJ1RoaW5rIGRpZmZlcmVudCcK
KzE2ICdUaGluayBkaWZmZXJlbnQgJworMTcgJ1RoaW5rIGRpZmZlcmVudCBBJworMTggJ1RoaW5r
IGRpZmZlcmVudCBBcCcKKzE5ICdUaGluayBkaWZmZXJlbnQgQXBwJworMjAgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsJworMjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIyICdUaGluayBkaWZmZXJl
bnQgQXBwbGUnCisyMyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKICcKLTI0Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCisyNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGInCi0yNQotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMjUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBibycKLTI2Ci0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbCcK
LTI3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQnCi0yOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjggJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkICcKLTI5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyOSAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaScKLTMwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMCAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXQnCi0zMQotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorMzEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YScKLTMyCi0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiszMiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbCcK
LTMzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGknCi0zNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzQgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkIGl0YWxpYycKLTM1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisz
NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiAnCi0zNgotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorMzYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dScKLTM3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNyAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bicKLTM4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszOCAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmQnCi0zOQotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorMzkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZScKLTQwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bmRlcicKLTQxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MSAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmwnCi00MgotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorNDIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW5kZXJsaScKLTQzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MyAnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbicKLTQ0Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis0NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
bmUnCi00NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDUgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lICcKLTQ2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
Cis0NiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbCcK
LTQ3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGEnCi00OAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NDggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhcycK
LTQ5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0OSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCcKLTUwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
Cis1MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFz
dCEnCi01MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTEgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwotNTIKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzUyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGlu
ZSBsYXN0IQogCiDvv7wnCi01MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTMgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEgnCi01
NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlJwotNTUKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzU1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVy
bGluZSBsYXN0IQogCiDvv7xIZWwnCi01NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTYgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/
vEhlbGwnCi01NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTcgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvJwotNTgKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzU4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyAnCi01OQotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorNTkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJs
aW5lIGxhc3QhCiAKIO+/vEhlbGxvIFcnCi02MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjAg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAK
IO+/vEhlbGxvIFdvJwotNjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYxICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBX
b3InCi02MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjIgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmwnCi02Mwot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxkJwotNjQKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzY0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGVybGluZSBsYXN0IQpAQCAtMjkxLDcgKzIxNywxMSBAQCB1bmRlcmxpbmUgbGFzdCEKIAog
77+8SGVsbG8gV29ybGQhJwogJycKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCiAKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCmluZGV4IGNl
MWNiZjJlZWZlMy4uYzMwNDk4NjdiMDUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKQEAg
LTEsOSArMSw5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9F
TiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKIDxkaXYg
aWQ9ImNvbnRlbnQiIHJvbGU9Imdyb3VwIj4KICAgICA8cD5UaGluayA8ZW0+ZGlmZmVyZW50PC9l
bT4gPGEgaHJlZj0iYXBwbGUuY29tIj5BcHBsZTwvYT48L3A+CkBAIC0xMSwzNiArMTEsMzQgQEAK
ICAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwvYnV0dG9uPgogPC9kaXY+CiAKLTxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0gICAg
ZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtz
IHByb3Blcmx5LiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewotICAgICAgICBheEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKLSAgICAgICAgY29udGVudFRleHRNYXJrZXJSYW5nZSA9
IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGF4RWxlbWVudCk7Ci0gICAgICAg
IHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGNvbnRlbnRU
ZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKLSAgICAgICAgZGVidWcoImNvbnRlbnQgbGVuZ3RoOiAi
ICsgdGV4dExlbmd0aCk7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGF0IHRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LlxuXG4iOwogCi0gICAgICAgIGRl
YnVnKCJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4
dDoiKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHRleHRMZW5ndGg7ICsraSkgewotICAgICAg
ICAgICAgZGVidWcoaSk7Ci0gICAgICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQu
dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgaSk7Ci0gICAgICAgICAgICBkZWJ1ZygiJyIgKyBh
eEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIp
OworICAgICAgICBsZXQgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICBsZXQgcmFuZ2UgPSBjb250ZW50LnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoY29udGVudCk7CisgICAgICAgIGxldCBjb250ZW50TGVu
Z3RoID0gY29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpLmxlbmd0aDsKKyAg
ICAgICAgb3V0cHV0ICs9IGBjb250ZW50IGxlbmd0aDogJHtjb250ZW50TGVuZ3RofVxuYDsKKwor
ICAgICAgICBvdXRwdXQgKz0gIkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFj
dGVyIGluIHRoZSB0ZXh0OlxuIjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbnRlbnRMZW5n
dGg7ICsraSkgeworICAgICAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZv
clJhbmdlKDAsIGkpOworICAgICAgICAgICAgb3V0cHV0ICs9IGAke2l9ICcke2NvbnRlbnQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwogICAgICAgICB9CiAKLSAgICAgICAg
ZGVidWcoIkdldCB0aGUgcmFuZ2UgZm9yIHRoZSB3b3JkIEFwcGxlOiIpOwotICAgICAgICB0ZXh0
TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMTYsIDUpOwot
ICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSkgKyAiJyIpOworICAgICAgICBvdXRwdXQgKz0gIkdldCB0aGUgcmFuZ2Ug
Zm9yIHRoZSB3b3JkIEFwcGxlOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJr
ZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250ZW50LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKworICAgICAgICBvdXRwdXQgKz0g
Ik91dCBvZiByYW5nZSB2YWx1ZXM6XG4iOworICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1h
cmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250ZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKyAgICAgICAgcmFuZ2UgPSBj
b250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOworICAgICAgICBvdXRwdXQg
Kz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwogCi0g
ICAgICAgIGRlYnVnKCJPdXQgb2YgcmFuZ2UgdmFsdWVzOiIpOwotICAgICAgICB0ZXh0TWFya2Vy
UmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsKLSAgICAg
ICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpICsgIiciKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOwotICAgICAgICBkZWJ1ZygiJyIgKyBheEVs
ZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOwor
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxp
dHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9CiA8L3NjcmlwdD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
IDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10
ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDkxNWQ1NjljMGVkMC4uZDg0YjhiMjAxNzQyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9u
LWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3Rl
ZC50eHQKQEAgLTEsMTAgKzEsNyBAQAotVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4KIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJs
ZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVu
ZGVyVGV4dCBvYmplY3RzLgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNTOiBjb250
ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpID09PSB0cnVlCiAKLQotUEFTUyBj
b250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKHRleHRFbGVtZW50KSBpcyB0cnVlCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9y
LXRleHQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1w
b3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKaW5kZXggYzcyNTdkNTg1ZDFhLi42MmVi
NGUzNTIyZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2li
bGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1s
CkBAIC0xLDQwICsxLDMxIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3Np
YmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8
Ym9keT4KIAotPGRpdiBpZD0iY29udGVudCIgdGFiaW5kZXg9IjAiIHN0eWxlPSJ3aWR0aDoyMDBw
eDsiPgorPGRpdiBpZD0iY29udGVudCIgc3R5bGU9IndpZHRoOjIwMHB4OyI+CiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogPC9kaXY+CiAKLTxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0KLSAgICBk
ZXNjcmlwdGlvbigiVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2
aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFs
bCBSZW5kZXJUZXh0IG9iamVjdHMuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyBwcm90ZWN0cyBhZ2FpbnN0
IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1
cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuXG5cbiI7CiAKLSAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmZvY3VzKCk7Ci0gICAg
ICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVu
dDsKLQotICAgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIgYXQgdGhpcyBwb2ludC4gSXQg
c2hvdWxkIG5vdCBjcmFzaC4KLSAgICAgICAgICB2YXIgbWFya2VyQXRQb2ludCA9IGNvbnRlbnQu
dGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lkdGgvMiwgY29udGVudC55
ICsgY29udGVudC5oZWlnaHQvMik7Ci0gICAgICAgICAgdmFyIHRleHRFbGVtZW50ID0gY29udGVu
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyQXRQb2ludCk7CisgICAg
ICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIgYXQgdGhp
cyBwb2ludC4gSXQgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgdmFyIG1hcmtlciA9IGNvbnRl
bnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lkdGggLyAyLCBjb250
ZW50LnkgKyBjb250ZW50LmhlaWdodCAvIDIpOworICAgICAgICAvLyBWZXJpZnkgdGhlIGVsZW1l
bnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCisgICAgICAgIHZhciBlbGVtZW50
ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChl
bGVtZW50KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBWZXJpZnkgdGhlIGVsZW1lbnQgaXMg
dGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCi0gICAgICAgICAgdmFyIHRleHRFbGVtZW50
ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyQXRQb2lu
dCk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0Vx
dWFsKHRleHRFbGVtZW50KSIpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29u
dGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0
KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlv
dXMtbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKaW5kZXggNWVkM2JkMGQwNmRlLi4zOGYxM2VkN2Ez
ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4
dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCkBAIC0xLDE1ICsx
LDE3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CiA8bWV0YSBjaGFyc2V0PSJVVEYtMTYiPgogPC9oZWFkPgogPHN0eWxl
PgogLnVzZXJzZWxlY3QgeyB1c2VyLXNlbGVjdDogbm9uZTsgLXdlYmtpdC11c2VyLXNlbGVjdDog
bm9uZTsgfQogPC9zdHlsZT4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08ZGl2IGlkPSJ0
ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2PgorPGRpdiBpZD0iY29udGVudCI+Cis8ZGl2IGlk
PSJ0ZXh0Ij50ZXh0PC9kaXY+CiA8YnI+CiB0ZXh0MQogCkBAIC0zMiwyOSArMzQsNDUgQEAgZgog
PHAgaWQ9InRleHQ2Ij5hICAgICBiPC9wPgogCiA8cCBpZD0idGV4dDciPmF1ZGlvPGF1ZGlvIGNv
bnRyb2xzPjwvYXVkaW8+ZmlsZTwvcD4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGZv
cndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmopIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBwcmV2aW91
c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2Jq
Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBj
dXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24g
YmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgcHJl
dmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKKyAg
ICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRN
YXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwcmV2aW91
czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisg
ICAgICAgIH07CisgICAgfQogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIG5leHQv
cHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHku
Iik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICAKLSAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBu
b2RlLgotICAgICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAorICAg
ICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJr
ZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cbiI7CisKKyAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRleHQiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4g
Z2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgogICAgICAgICB2YXIgdGV4
dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
KSIsICI0Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKwogICAgICAgICB2YXIg
c3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpOwogICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgIHNob3VsZEJlVHJ1
ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlz
RXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAg
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
ZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBDaGVjayBu
ZXh0IHRleHQgbWFya2VyLiAoQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCA8
YnI+LikKICAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIsIHByZXZpb3VzTWFya2VyLCBtYXJrZXJS
YW5nZTs7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBz
dGFydE1hcmtlciwgdGV4dCk7CkBAIC02Miw1OCArODAsNTcgQEAgZgogICAgICAgICBjdXJyZW50
TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAg
ICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKLSAgICAgICAgCisg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gQWR2YW5jZSBvbmUgbW9yZSBj
aGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmRlIGF0ICJ0IiBpbiAidGV4dDEiLgogICAgICAgICByZXN1
bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIid0JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworCiAgICAgICAgIC8v
IENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLiAoVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBjaGFy
YWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRz
KDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAgICAgcHJldmlv
dXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1
bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRC
ZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUi
KTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gVHJh
dmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IHRoZSBs
YXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBw
cmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFy
a2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1
cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgaWYgKGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAibWFjIikKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnICsg
bmV3bGluZSIpOworICAgICAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICIndCciKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKIAogICAg
ICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUKICAgICAgICAgdmFyIHRl
eHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0
MiIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMiA9IHRleHQyLnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQodGV4dDIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUi
KTsKICAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzIpLCAiW0FUVEFD
SE1FTlRdIik7Ci0gICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogIiArIHN0
cik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gYE9iamVjdCBzdHJpbmcgZm9yIHJhbmdl
OiAke3N0cn1cbmA7CisKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKTsKICAgICAgICAgLy8gQWR2
YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCAiZCIuCiAgICAgICAgIHJlc3VsdCA9
IGZvcndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ2QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOworCiAgICAgICAgIC8v
IFRyYXZlcnNlIGJhY2t3YXJkcyA2IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFz
dCBjaGFyYWN0ZXIgb2YgInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDYsIHBy
ZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFy
a2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1
cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKKwogICAgICAgICAvLyBDaGVjayB0aGUgY2Fz
ZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZpb3VzVGV4dE1hcmtl
ciBzaG91bGQgc3RpbGwgd29yay4KLSAgICAgICAgdmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOwotICAgICAgICB0ZXh0MyA9
IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgCisgICAgICAgIHZhciB0ZXh0MyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKS5jaGls
ZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0IHVzZXItc2VsZWN0
Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTg7IGkrKykgewpAQCAtMTI1LDM0ICsxNDIsMzEgQEAgZgogICAgICAg
ICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidlY3QnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKICAgICAgICAgLy8gSXRl
cmF0ZSBiYWNrd2FyZHMgdGhlIHNlY29uZCBtYXJrZXIgZm9yIDYgY2hhcmFjdGVycywgdGhlIHJh
bmdlIHNob3VsZCBiZSAic2VsIgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAg
ICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgIG1hcmtlclJh
bmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJ3NlbCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDMuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOwogCiAgICAgICAgIC8v
IENoZWNrIHRoZSBjYXNlIHdpdGggcGFzc3dvcmQgZmllbGQuCiAgICAgICAgIHZhciBwc3cgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInBzdyIpOwogICAg
ICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMyA9IHBzdy50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHBzdyk7CiAgICAgICAgIHZhciBzdGFydCA9IHBzdy5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiIXBzdy5h
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIik7Ci0gICAgICAgIAorICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihzdGFydCkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIENoZWNrIG5leHQvcHJldmlvdXMg
dGV4dCBtYXJrZXIgY2FsbCB3aWxsIHNraXAgcGFzc3dvcmQgZmllbGQKICAgICAgICAgLy8gV2Ug
c3RhcnQgZnJvbSB0ZXh0MiBhbmQgYWR2YW5jZSA2IGNoYXJhY3RlcnMsIGl0IHNob3VsZCBza2lw
IHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgbGFuZCBvbiB0ZXh0My4KICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UyKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0g
dGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAg
c2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlz
RXF1YWwodGV4dDMpIiwgInRydWUiKTsKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBt
YXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIgbm9kZS4KICAgICAgICAgY3VycmVudE1hcmtl
ciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgY3Vy
cmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIik7Ci0gICAg
ICAgIAotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hp
bGRBdEluZGV4KDIpKSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGV4
dCBub2RlIHdpdGggbGluZSBicmVha3MsIHdlIGNhbiBnbyB0aHJvdWdoIGl0IHdpdGggbmV4dC9w
cmV2aW91cyBjYWxsLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CkBAIC0xNjMsODcgKzE3Nyw2NCBA
QCBmCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICInZiciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZiciKTsKKwogICAgICAgICBlbmRN
YXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IGVuZE1hcmtlcjsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBp
KyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5wcmV2aW91c1RleHRNYXJrZXIo
Y3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2EnIik7CisKICAgICAgICAgLy8g
VGVzdCBjYXNlIHdpdGggZW1vamkuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ1Iik7CiAgICAgICAgIHZhciBlbW9qaVRl
eHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtl
clJhbmdlKSIsICI0Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBuYXZpZ2F0aW5nIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgaXMgYnkgZW1vamku
CiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UoZW1vamlUZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDIs
IHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iPJyIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIifwn5iPJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOwotICAgICAgICAKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICIn8J+YgyciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBjb2xsYXBzZWQgd2hp
dGVzcGFjZS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dDYiKTsKICAgICAgICAgdmFyIGNvbGxhcHNlZFdoaXRlc3BhY2VN
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3Bh
Y2VNYXJrZXJSYW5nZSkiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMi
KTsKICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQg
PSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCkpIiwgIidhJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICci
KTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5j
dXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CiAgICAgICAgIHJlc3Vs
dCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSki
LCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygx
LCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7Ci0gICAg
ICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIHJlcGxh
Y2VkIGVsZW1lbnRzIChzaG91bGQgdXNlIG9iamVjdCByZXBsYWNlbWVudCBjaGFyYWN0ZXIpLgog
ICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJ0ZXh0NyIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7Cisg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVGRkZDZmlsZSciKTsKICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CiAgICAgICAgICAg
ICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFy
a2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAg
ICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91
c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ1x1RkZGQyciKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50
TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
KQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIidcdUZGRkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogCi0gICAg
ICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
LCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewot
ICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKLSAgICAgICAg
ICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBw
cmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAgICAgICAgICAgY3VycmVudDogY3VycmVu
dE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVu
Y3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2Jq
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIocHJldmlv
dXNNYXJrZXIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAg
ICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAg
fQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0KIDwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Rl
eHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CmluZGV4IDI5
MjY0MWE3ZTAzOC4uNWEwYTMyYzI4ZDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dApAQCAt
MSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4ndCBzZWxlY3QKLWFiYyBk
ZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMgdGVzdHMgdGhlIG5leHQv
cHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHku
CiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1Q
QVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIGlzICd0JyArIG5ld2xpbmUKLVBBU1MgdGV4dDIudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKK1BBU1M6IHRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVl
CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIp
LmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcgKyBuZXdsaW5lCitQQVNTOiB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09IDUKIE9iamVjdCBz
dHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQyLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQyLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4dDMuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAhcHN3LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0
MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIGlzIHRydWUKLVBB
U1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdmJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2EnCi1QQVNT
IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSBpcyA0Ci1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmI8nCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmIMnCi1QQVNTIHRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkg
aXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwotUEFTUyB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUnCi1QQVNTIHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8JwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcKK1BBU1M6IHRl
eHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdkJworUEFTUzog
dGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJzEnCitQQVNT
OiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZWN0Jwor
UEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3Nl
bCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSA9
PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5j
aGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVu
Z3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlv
dXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464045</attachid>
            <date>2022-12-14 08:03:13 -0800</date>
            <delta_ts>2022-12-14 12:16:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221214110312.patch</filename>
            <type>text/plain</type>
            <size>87132</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBiYmRjNzBiOGVhMGY3YjRhYzNlZDVkZWRhOTU5OGE2ZDVhMjM5NzQ4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8ICA5NSArKysrKy0tCiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMTEgKwogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIHwgMjU2ICsrKysrKysrKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCAgIHwg
MTAzICsrKysrKysKIC4uLi9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1t
ICB8ICA4MyArKysrKysKIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0gICB8IDEwMiArKystLS0tCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dCAgfCAgMTkgKy0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAg
ICAgICAgICB8ICA1MSArKy0tCiAuLi5yZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBl
Y3RlZC50eHQgfCAgMTUgKy0KIC4uLnNlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1l
bnQuaHRtbCB8ICA2MyArKy0tLQogLi4uL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVj
dGVkLnR4dCAgIHwgMjEwICsrKysrLS0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXItcmFuZ2Ut
Zm9yLXJhbmdlLmh0bWwgICAgICAgfCAgNDggKystLQogLi4uLXBvc2l0aW9uLWNyYXNoLWZvci10
ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlvbi1jcmFz
aC1mb3ItdGV4dC1ub2RlLmh0bWwgfCAgMzUgKy0tCiAuLi4vdGV4dC1tYXJrZXItcHJldmlvdXMt
bmV4dC5odG1sICAgICAgICAgICAgfCAxNzUgKysrKysrLS0tLS0tCiAuLi4vdGV4dC1tYXJrZXIt
cHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgICAgfCAgNzggKysrLS0tCiAxOSBmaWxlcyBjaGFu
Z2VkLCA4NjMgaW5zZXJ0aW9ucygrKSwgNTA0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAw
NjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcAogY3JlYXRl
IG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FY
VGV4dE1hcmtlckNvY29hLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCAyMjZkZmJkY2ExMDEuLmQ1NzIz
MjdjNmM1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKKysrIGIvU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ1NSw2ICs0NTUsNyBAQCBNb2R1bGVzL3dlYnhy
L1hSU2Vzc2lvbkV2ZW50LmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNwcAogYWNjZXNzaWJp
bGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAKK2FjY2Vz
c2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuY3BwCiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29j
b2EudHh0CmluZGV4IDBmMmRmYTQ4YjgzZC4uYTc4MDk2ZGM4NWZiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKQEAgLTEyNiw2ICsxMjYsNyBAQCBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVl
Y2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2du
aXplclRhc2tNb2NrLm1tCiBNb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0QmFkZ2VTeXN0ZW1J
bWFnZS5tbQogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1hbmFnZXJDb2NvYS5t
bQorYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQogYWNjZXNzaWJpbGl0
eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3MvQWNjZXNzaWJpbGl0
eU9iamVjdElPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagppbmRleCBiMjI0ZDc3NjBkYWEuLmM5MmYzMTRjMzcwMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNDUyNiw2
ICs0NTI2LDcgQEAKIAkJQzBDMDU0Q0IxMTE4QzhFNDAwQ0UyNjM2IC8qIENvZGVHZW5lcmF0b3Iu
cG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMw
NTBBMzAwRkUxMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDQzExMThDOEU0MDBDRTI2MzYg
LyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2VuZXJhdGUtYmluZGlu
Z3MucGwgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJ
QzBDMDU0Q0QxMTE4QzhFNDAwQ0UyNjM2IC8qIElETFBhcnNlci5wbSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODEzQkYzMDlFREY4OEUwMEY3NTdFMSAv
KiBJRExQYXJzZXIucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQzBFMjA4QTIyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMjA4QTAyOTM3OUM2
RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovOyB9OwogCQlDMEUyRjMyNzI0MTJCRjI5MDA5
QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNj
ZXNzaWJpbGl0eS50YmQgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoV2VhaywgKTsgfTsg
fTsKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgw
MDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzEwNURBNjQwRjNBQTZCODAwMURENDRGIC8qIFRleHRFbmNv
ZGluZ0RldGVjdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMTA1REE2MzBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3IuaCAq
LzsgfTsKQEAgLTE2MzgwLDYgKzE2MzgxLDkgQEAKIAkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgw
IC8qIEFYTG9nZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYTG9nZ2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVD
OCAvKiBBWElzb2xhdGVkT2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29s
YXRlZE9iamVjdE1hYy5tbTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhM
b2dnZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVGV4dE1hcmtlci5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhU
ZXh0TWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYVGV4
dE1hcmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEI1MjkzOTNE
Q0YwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IEFYVGV4dE1hcmtlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0
eS50YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAi
c291cmNlY29kZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNz
aWJpbGl0eS50YmQ7IHBhdGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VU
cmVlID0gU0RLUk9PVDsgfTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nl
c3Nvci5wbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHRleHQuc2NyaXB0LnBlcmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRz
L3ByZXByb2Nlc3Nvci5wbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzEwNURBNjEw
RjNBQTY4RjAwMURENDRGIC8qIFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IFRleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsg
cGF0aCA9IC4uLy4uL1BBTC9wYWwvdGV4dC9UZXh0RW5jb2RpbmdEZXRlY3RvcklDVS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTM0OCw2ICsyMTM1Miw3IEBACiAJCTI5QTgx
MjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmlsaXR5ICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUyMDhCNzI5MzkzRTFBMDBDMEQyRDMgLyog
Y29jb2EgKi8sCiAJCQkJQUFBNzI4RUYxNkQxRDhCQzAwRDNCQkM2IC8qIGlvcyAqLywKIAkJCQky
OUFFMjEyOTIxQUI5RUNCMDA4NjkyODMgLyogaXNvbGF0ZWR0cmVlICovLAogCQkJCTI5QTgxMjA1
MEZCQjlCNTIwMDUxMDI5MyAvKiBtYWMgKi8sCkBAIC0yMTQyNCw2ICsyMTQyOSw4IEBACiAJCQkJ
QzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmggKi8sCiAJCQkJMjk4MUNBQUYx
MzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFBMEZC
QjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCisJCQkJQzBFMjA4QTEyOTM3OUM2
RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCisJCQkJQzBFMjA4QTAyOTM3OUM2RTAw
QzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYx
QyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovLAogCQkJCUJDNEE1MzMwMjU2MDU5MDMw
MDI4QzU5MiAvKiBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAqLywKIAkJCSk7CkBAIC0zMTM4
Myw2ICszMTM5MCwxNCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7CiAJCX07CisJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJ
CWlzYSA9IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAw
QzBEMkQzIC8qIEFYVGV4dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2Nv
YTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYw
MDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4g
PSAoCkBAIC0zNDk0Nyw2ICszNDk2Miw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5Mjgz
IC8qIEFYSXNvbGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlF
RUIwMDg2OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEy
MzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJ
CUMwRTIwOEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3N0U3NzcwQkY0MTM0QTAwMTUyODcyIC8qIEJhY2tG
b3J3YXJkQ2FjaGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNzQxRDBGMEIwNzI1OUEwMEVENDQy
QyAvKiBCYWNrRm9yd2FyZENsaWVudC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBhOWJhYzA1NDZiZTMuLjQz
YzMyYWY3ZDZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5o
IgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNp
bmNsdWRlICJBWFRleHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQu
aCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNj
ZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCkBAIC0yNTA3LDMzICsyNTA4LDM1IEBAIHZvaWQgQVhP
YmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJr
ZXJEYXRhJiB0ZXh0TWFyCiB7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIE5vZGUqIGRvbU5vZGUgPSBjaGFyYWN0ZXJPZmZzZXQu
bm9kZTsKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkgeworCisgICAg
Tm9kZSogbm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOworICAgIGlmIChpczxIVE1MSW5wdXRF
bGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQYXNz
d29yZEZpZWxkKCkpIHsKICAgICAgICAgdGV4dE1hcmtlckRhdGEuaWdub3JlZCA9IHRydWU7CiAg
ICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmpl
Y3Q+IG9iaiA9IHRoaXMtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwotICAgIGlmICghb2JqKQorCisg
ICAgUmVmUHRyIG9iamVjdCA9IGdldE9yQ3JlYXRlKG5vZGUpOworICAgIGlmICghb2JqZWN0KQog
ICAgICAgICByZXR1cm47Ci0gICAgCisKICAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRp
b24uCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBhdXRvIHZpc2libGVQ
b3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zm
c2V0KTsKICAgICBpbnQgdnBPZmZzZXQgPSAwOwogICAgIGlmICghdmlzaWJsZVBvc2l0aW9uLmlz
TnVsbCgpKSB7CiAgICAgICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxlUG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKTsKICAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0
aW5nT2Zmc2V0KCk7CiAgICAgfQotICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmot
Pm9iamVjdElEKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CisKKyAgICB0
ZXh0TWFya2VyRGF0YS5heElEID0gb2JqZWN0LT5vYmplY3RJRCgpOworICAgIHRleHRNYXJrZXJE
YXRhLm9iamVjdFdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICB0ZXh0TWFya2VyRGF0
YS5ub2RlID0gbm9kZTsKICAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFy
YWN0ZXJPZmZzZXQub2Zmc2V0OwogICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5k
ZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKICAgICB0ZXh0TWFya2VyRGF0YS5vZmZz
ZXQgPSB2cE9mZnNldDsKICAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3Np
dGlvbi5hZmZpbml0eSgpOwotICAgIAotICAgIHRoaXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsK
KyAgICAvLyBUZXh0TWFya2VyRGF0YS5pZ25vcmVkIGlzIGRlbGliZXJhdGVseSBub3QgYXNzaWdu
ZWQgaGVyZSBzbyB3ZSBjYW4gcmV0dXJuIHZhbGlkIFRleHRNYXJrZXJzIGZvciBpZ25vcmVkIEFY
IG9iamVjdHMuCisKKyAgICBzZXROb2RlSW5Vc2Uobm9kZSk7CiB9CiAKIENoYXJhY3Rlck9mZnNl
dCBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMp
CkBAIC0yNjUzLDcgKzI2NTYsNyBAQCBib29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFNraXBCb3Vu
ZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3VzLCBjb25zdCBDaAogICAgIAogICAg
IHJldHVybiB0cnVlOwogfQotICAgIAorCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJE
YXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEs
IGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewogICAgIENoYXJhY3Rl
ck9mZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwpAQCAtMjY2NSw3ICsyNjY4LDcgQEAgdm9p
ZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4
dE1hcmtlckRhdGEmIHRleHRNYXIKICAgICAgICAgaWYgKHNob3VsZFNraXBCb3VuZGFyeShwcmV2
aW91cywgbmV4dCkpCiAgICAgICAgICAgICBuZXh0ID0gbmV4dENoYXJhY3Rlck9mZnNldChuZXh0
LCBmYWxzZSk7CiAgICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRN
YXJrZXJEYXRhLCBuZXh0KTsKLSAgICAgICAgCisKICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAg
bmV4dCBDaGFyYWN0ZXJPZmZzZXQgaWYgaXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAg
aWYgKCFsZW5ndGhGb3JSYW5nZShyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJl
dmlvdXMsIG5leHQpKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKQEAgLTI2
NzMsNiArMjY3NiwyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4
dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogICAgIH0gd2hpbGUgKHRl
eHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOwogfQogCitBWFRleHRNYXJr
ZXIgQVhPYmplY3RDYWNoZTo6bmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJr
ZXIpCit7CisgICAgQVhUZXh0TWFya2VyIHJlc3VsdDsKKworICAgIFRleHRNYXJrZXJEYXRhIGRh
dGEgeyBtYXJrZXIuZGF0YSgpIH07CisgICAgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVy
T2Zmc2V0KGRhdGEsIG1hcmtlcik7CisgICAgaWYgKGRhdGEubm9kZSAhPSBtYXJrZXIubV9kYXRh
Lm5vZGUpIHsKKyAgICAgICAgLy8gU2luY2UgdGhlIE5vZGUgY2hhbmdlZCwgbmVlZCB0byB1cGRh
dGUgdGhlIG9iamVjdCB3cmFwcGVyLgorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gZ2V0T3JD
cmVhdGUoZGF0YS5ub2RlKSkKKyAgICAgICAgICAgIGRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVj
dC0+d3JhcHBlcigpOworICAgIH0KKworICAgIHJlc3VsdC5tX2F4T2JqZWN0Q2FjaGUgPSB0aGlz
OworICAgIHJlc3VsdC5tX2RhdGEgPSBkYXRhOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZv
aWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNl
dChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYg
Y2hhcmFjdGVyT2Zmc2V0KQogewogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IGNoYXJh
Y3Rlck9mZnNldDsKQEAgLTI2OTAsNiArMjcxMCwyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRl
eHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRl
eAogICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUp
OwogfQogCitBWFRleHRNYXJrZXIgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNUZXh0TWFya2VyKGNv
bnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQoreworICAgIEFYVGV4dE1hcmtlciByZXN1bHQ7CisK
KyAgICBUZXh0TWFya2VyRGF0YSBkYXRhIHsgbWFya2VyLmRhdGEoKSB9OworICAgIHRleHRNYXJr
ZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoZGF0YSwgbWFya2VyKTsKKyAgICBpZiAo
ZGF0YS5ub2RlICE9IG1hcmtlci5tX2RhdGEubm9kZSkgeworICAgICAgICAvLyBTaW5jZSB0aGUg
Tm9kZSBjaGFuZ2VkLCBuZWVkIHRvIHVwZGF0ZSB0aGUgb2JqZWN0IHdyYXBwZXIuCisgICAgICAg
IGlmIChhdXRvKiBvYmplY3QgPSBnZXRPckNyZWF0ZShkYXRhLm5vZGUpKQorICAgICAgICAgICAg
ZGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgfQorCisgICAgcmVz
dWx0Lm1fYXhPYmplY3RDYWNoZSA9IHRoaXM7CisgICAgcmVzdWx0Lm1fZGF0YSA9IGRhdGE7Cisg
ICAgcmV0dXJuIHJlc3VsdDsKK30KKwogTm9kZSogQVhPYmplY3RDYWNoZTo6bmV4dE5vZGUoTm9k
ZSogbm9kZSkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUpCkBAIC0yNzkxLDEyICsyODI4LDEyIEBA
IHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJE
YXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAg
IE5vZGUqIGRvbU5vZGUgPSBkZWVwUG9zLmFuY2hvck5vZGUoKTsKLSAgICBBU1NFUlQoZG9tTm9k
ZSk7Ci0gICAgaWYgKCFkb21Ob2RlKQorICAgIE5vZGUqIG5vZGUgPSBkZWVwUG9zLmFuY2hvck5v
ZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAm
JiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkp
CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBhbiBhbmNob3Ig
dHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVkIG5vZGUsIHdl
IHNob3VsZApAQCAtMjgwOCwyNyArMjg0NSwzMSBAQCBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJE
YXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjbwog
ICAgICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CiAgICAgfQogCi0gICAgLy8gZmluZCBvciBj
cmVhdGUgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZQotICAgIEFYT2JqZWN0
Q2FjaGUqIGNhY2hlID0gZG9tTm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAg
Ly8gRmluZCBvciBjcmVhdGUgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZS4K
KyAgICBhdXRvKiBjYWNoZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAg
IGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPEFj
Y2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKKwor
ICAgIFJlZlB0ciBvYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZSk7CisgICAgaWYgKCFv
YmplY3QpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBUaGlzIG1lbW9y
eSBtdXN0IGJlIHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRl
c3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4KICAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5
IGFuZCBiYWQgYmVjYXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KICAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8
dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAg
IAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmotPm9iamVjdElEKCk7Ci0gICAgdGV4dE1h
cmtlckRhdGEubm9kZSA9IGRvbU5vZGU7CisKKyAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2Jq
ZWN0LT5vYmplY3RJRCgpOworICAgIHRleHRNYXJrZXJEYXRhLm9iamVjdFdyYXBwZXIgPSBvYmpl
Y3QtPndyYXBwZXIoKTsKKyAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gbm9kZTsKICAgICB0ZXh0
TWFya2VyRGF0YS5vZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAg
ICAgdGV4dE1hcmtlckRhdGEuYW5jaG9yVHlwZSA9IGRlZXBQb3MuYW5jaG9yVHlwZSgpOwogICAg
IHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJsZVBvcy5hZmZpbml0eSgpOwogCiAgICAg
dGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsK
ICAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0
LnN0YXJ0SW5kZXg7Ci0KLSAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKGRvbU5vZGUpOworICAgIC8v
IFRleHRNYXJrZXJEYXRhLmlnbm9yZWQgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhc3NpZ25lZCBoZXJl
IHNvIHdlIGNhbiByZXR1cm4gdmFsaWQgVGV4dE1hcmtlcnMgZm9yIGlnbm9yZWQgQVggb2JqZWN0
cy4KKyAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKG5vZGUpOwogCiAgICAgcmV0dXJuIHRleHRNYXJr
ZXJEYXRhOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
aAppbmRleCA1MzVlNzE0MjIyMWYuLjEyMTIyNmE0ZTA0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQzLDYgKzQzLDcgQEAgY2xhc3MgVGV4
dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRleHRNYXJrZXI7CiBj
bGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhUTUxUYWJsZUVs
ZW1lbnQ7CkBAIC01Niw2ICs1Nyw3IEBAIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxl
UG9zaXRpb247CiBjbGFzcyBXaWRnZXQ7CiAKKy8vIEZJWE1FOiBNb3ZlIGludG8gQVhUZXh0TWFy
a2VyIGNsYXNzLgogc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKICAgICBBWElEIGF4SUQ7CiAKQEAg
LTY3LDYgKzY5LDEyIEBAIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7CiAgICAgaW50IGNoYXJhY3Rl
clN0YXJ0SW5kZXggeyAwIH07CiAgICAgaW50IGNoYXJhY3Rlck9mZnNldCB7IDAgfTsKICAgICBi
b29sIGlnbm9yZWQgeyBmYWxzZSB9OworCisjaWYgUExBVEZPUk0oQ09DT0EpIHx8IFBMQVRGT1JN
KFdJTikKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciogb2JqZWN0V3JhcHBlciB7IG51
bGxwdHIgfTsKKyNlbGlmIFVTRShBVFNQSSkKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0QXRzcGkq
IG9iamVjdFdyYXBwZXIgeyBudWxscHRyIH07CisjZW5kaWYKIH07CiAKIHN0cnVjdCBDaGFyYWN0
ZXJPZmZzZXQgewpAQCAtMTQ3LDYgKzE1NSw3IEBAIGNsYXNzIEFYT2JqZWN0Q2FjaGUgOiBwdWJs
aWMgQ2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEFYT2JqZWN0Q2FjaGUpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKICAgICBmcmllbmQg
Y2xhc3MgQVhJc29sYXRlZFRyZWU7CiAgICAgZnJpZW5kIFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0
b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBWE9iamVjdENhY2hlJik7CisgICAgZnJpZW5kIEFYVGV4
dE1hcmtlcjsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9iamVjdENhY2hlKERvY3VtZW50Jik7
CiAgICAgfkFYT2JqZWN0Q2FjaGUoKTsKQEAgLTIzNiw3ICsyNDUsOSBAQCBwdWJsaWM6CiAgICAg
c3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0
aW9uSW5UZXh0Q29udHJvbChIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwogICAgIHZvaWQg
dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmKTsKICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rl
ck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFY
VGV4dE1hcmtlciBuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKICAgICB2b2lk
IHRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEm
LCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgcHJldmlvdXNUZXh0
TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxl
UG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rl
ck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYp
OwogICAgIC8vIFVzZSBpZ25vcmVOZXh0Tm9kZVN0YXJ0L2lnbm9yZVByZXZpb3VzTm9kZUVuZCB0
byBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIHdoZW4gd2UgYXJlIGF0IG5vZGUgYm91bmRhcnkuIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzgyMTk2ODEyZmQwCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBA
IC0wLDAgKzEsMjU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJBWFRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRN
YXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBv
c2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUoY2FjaGUpCit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9heE9iamVjdENhY2hl
KTsKKworICAgIGlmICh2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsK
KworICAgIFBvc2l0aW9uIGRlZXBQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZh
bGVudCgpOworICAgIG1fZGF0YS5ub2RlID0gZGVlcFBvc2l0aW9uLmFuY2hvck5vZGUoKTsKKyAg
ICBBU1NFUlQobV9kYXRhLm5vZGUpOworICAgIGlmICghbV9kYXRhLm5vZGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihtX2RhdGEubm9kZSkgJiYgZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZGF0YS5ub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLm9mZnNldCA9IGRlZXBQb3NpdGlvbi5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpOworICAgIG1fZGF0YS5hbmNob3JUeXBlID0gZGVlcFBvc2l0
aW9uLmFuY2hvclR5cGUoKTsKKyAgICBtX2RhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zaXRpb24u
YWZmaW5pdHkoKTsKKworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gbV9heE9iamVjdENhY2hl
LT5jaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7Cisg
ICAgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRl
eDsKKyAgICBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsK
KworICAgIGluaXRpYWxpemVBWE9iamVjdFdyYXBwZXIoKTsKKyAgICBtX2F4T2JqZWN0Q2FjaGUt
PnNldE5vZGVJblVzZShtX2RhdGEubm9kZSk7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFy
a2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rl
ck9mZnNldCkKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2F4T2JqZWN0Q2FjaGUpOworCisgICAgaWYgKGNo
YXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLm5v
ZGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4o
bV9kYXRhLm5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2RhdGEubm9kZSku
aXNQYXNzd29yZEZpZWxkKCkpIHsKKyAgICAgICAgbV9kYXRhLmlnbm9yZWQgPSB0cnVlOworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gQ29udmVydCB0byB2aXNpYmxlIHBvc2l0aW9u
LgorICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gbV9heE9iamVjdENhY2hlLT52aXNpYmxlUG9z
aXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgaWYgKCF2aXNp
YmxlUG9zaXRpb24uaXNOdWxsKCkpIHsKKyAgICAgICAgbV9kYXRhLm9mZnNldCA9IHZpc2libGVQ
b3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAg
ICAgIG1fZGF0YS5hbmNob3JUeXBlID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCku
YW5jaG9yVHlwZSgpOworICAgICAgICBtX2RhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zaXRpb24u
YWZmaW5pdHkoKTsKKyAgICB9CisKKyAgICBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNo
YXJhY3Rlck9mZnNldC5zdGFydEluZGV4OworICAgIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBj
aGFyYWN0ZXJPZmZzZXQub2Zmc2V0OworCisgICAgaW5pdGlhbGl6ZUFYT2JqZWN0V3JhcHBlcigp
OworICAgIG1fYXhPYmplY3RDYWNoZS0+c2V0Tm9kZUluVXNlKG1fZGF0YS5ub2RlKTsKK30KKwor
QVhUZXh0TWFya2VyOjpBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5v
ZGUpCisgICAgOiBtX2F4T2JqZWN0Q2FjaGUoY2FjaGUpCit7CisgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKKyAgICBBU1NFUlQobV9heE9iamVjdENhY2hlKTsKKworICAgIG1fZGF0YS5ub2Rl
ID0gbm9kZTsKKyAgICBpbml0aWFsaXplQVhPYmplY3RXcmFwcGVyKCk7CisgICAgbV9heE9iamVj
dENhY2hlLT5zZXROb2RlSW5Vc2UobV9kYXRhLm5vZGUpOworfQorCit2b2lkIEFYVGV4dE1hcmtl
cjo6aW5pdGlhbGl6ZUFYT2JqZWN0V3JhcHBlcigpCit7CisgICAgUmVmUHRyIG9iamVjdCA9IG1f
YXhPYmplY3RDYWNoZS0+Z2V0T3JDcmVhdGUobV9kYXRhLm5vZGUpOworICAgIGlmICghb2JqZWN0
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEuYXhJRCA9IG9iamVjdC0+b2JqZWN0SUQo
KTsKKyAgICBtX2RhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOworfQorCit2
b2lkIEFYVGV4dE1hcmtlcjo6c2V0RGF0YShOb2RlKiBub2RlLCB1bnNpZ25lZCBvZmZzZXQsIFBv
c2l0aW9uOjpBbmNob3JUeXBlIGFuY2hvclR5cGUsIEFmZmluaXR5IGFmZmluaXR5LCB1bnNpZ25l
ZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBBU1NFUlQobV9heE9iamVjdENhY2hlKTsKKwor
ICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLm5vZGUgPSBub2Rl
OworICAgIG1fZGF0YS5vZmZzZXQgPSBvZmZzZXQ7CisgICAgbV9kYXRhLmFuY2hvclR5cGUgPSBh
bmNob3JUeXBlOworICAgIG1fZGF0YS5hZmZpbml0eSA9IGFmZmluaXR5OworCisgICAgbV9kYXRh
LmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJTdGFydEluZGV4OworICAgIG1fZGF0YS5j
aGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisKKyAgICBpbml0aWFsaXplQVhPYmpl
Y3RXcmFwcGVyKCk7Cit9CisKK0FYVGV4dE1hcmtlcjo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9u
KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzTnVs
bCgpIHx8IG5vZGUoKS0+aXNQc2V1ZG9FbGVtZW50KCkpCisgICAgICAgIHJldHVybiB7IH07CisK
KyAgICBQb3NpdGlvbiBwb3NpdGlvbjsKKyAgICBpZiAobV9kYXRhLmFuY2hvclR5cGUgPT0gUG9z
aXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcikKKyAgICAgICAgcG9zaXRpb24gPSBQb3Np
dGlvbihub2RlKCksIG1fZGF0YS5vZmZzZXQsIG1fZGF0YS5hbmNob3JUeXBlKTsKKyAgICBlbHNl
CisgICAgICAgIHBvc2l0aW9uID0gUG9zaXRpb24obm9kZSgpLCBtX2RhdGEuYW5jaG9yVHlwZSk7
CisKKyAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uKHBvc2l0aW9uLCBtX2RhdGEu
YWZmaW5pdHkpOworICAgIGF1dG8gZGVlcFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCk7CisgICAgaWYgKGRlZXBQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKworICAgIGF1dG8qIHJlbmRlcmVyID0gZGVlcFBvc2l0aW9uLmRlcHJlY2F0ZWRO
b2RlKCktPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIHsg
fTsKKworICAgIGF1dG8qIGNhY2hlID0gcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNo
ZSgpOworICAgIGlmIChjYWNoZSAmJiAhY2FjaGUtPm1faWRzSW5Vc2UuY29udGFpbnMobV9kYXRh
LmF4SUQpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgcmV0dXJuIHZpc2libGVQb3NpdGlv
bjsKK30KKworQVhUZXh0TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAor
eworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwg
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcmVz
dWx0KG5vZGUoKSwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgsIG1fZGF0YS5jaGFyYWN0ZXJP
ZmZzZXQpOworICAgIC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJs
ZVBvc2l0aW9uIGlzIHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhl
IGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENo
YXJhY3Rlck9mZnNldCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgorICAgIGlmICht
X2RhdGEuYWZmaW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKQorICAgICAgICByZXR1cm4gbV9h
eE9iamVjdENhY2hlLT5wcmV2aW91c0NoYXJhY3Rlck9mZnNldChyZXN1bHQsIGZhbHNlKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCitBY2Nlc3NpYmlsaXR5T2JqZWN0KiBBWFRleHRNYXJrZXI6
Om9iamVjdCgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlm
IChpc0lnbm9yZWQoKSB8fCBpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gbV9heE9iamVjdENhY2hlLT5nZXQobm9kZSgpKTsKK30KKworQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIqIEFYVGV4dE1hcmtlcjo6b2JqZWN0V3JhcHBlcigpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsK
KworICAgIHJldHVybiBtX2RhdGEub2JqZWN0V3JhcHBlcjsKK30KKworI2lmIEVOQUJMRShUUkVF
X0RFQlVHR0lORykKK1N0cmluZyBBWFRleHRNYXJrZXI6OmRlYnVnRGVzY3JpcHRpb24oKSBjb25z
dAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuICI8bnVsbD4iX3M7CisKKyAg
ICBhdXRvIHNlcGFyYXRvciA9ICIsICI7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcobm9kZSgpLT5k
ZWJ1Z0Rlc2NyaXB0aW9uKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJvZmZzZXQgIiwgbV9kYXRh
Lm9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgIkFuY2hvclR5cGUgIiwgbV9kYXRhLmFuY2hv
clR5cGUKKyAgICAgICAgLCBzZXBhcmF0b3IsICJBZmZpbml0eSAiLCBtX2RhdGEuYWZmaW5pdHkK
KyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJTdGFydEluZGV4ICIsIG1fZGF0YS5jaGFy
YWN0ZXJTdGFydEluZGV4CisgICAgICAgICwgc2VwYXJhdG9yLCAiY2hhcmFjdGVyT2Zmc2V0ICIs
IG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQKKyAgICAgICAgLCBzZXBhcmF0b3IsICJheElEICIsIGF4
SUQoKS5sb2dnaW5nU3RyaW5nKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJpc0lnbm9yZWQgIiwg
aXNJZ25vcmVkKCkKKyAgICApOworfQorI2VuZGlmCisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRl
eHRNYXJrZXJSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
UmFuZ2UmIHJhbmdlKQorICAgIDogc3RhcnQoY2FjaGUsIHJhbmdlLnN0YXJ0KQorICAgICwgZW5k
KGNhY2hlLCByYW5nZS5lbmQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlQoY2FjaGUpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2Uo
QVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiBy
YW5nZSkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFyYW5nZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgc3RhcnQgPSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hl
LT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCB0cnVlKSk7CisgICAg
ZW5kID0gQVhUZXh0TWFya2VyKGNhY2hlLCBjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNl
dEZvclJhbmdlKCpyYW5nZSwgZmFsc2UpKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4
dE1hcmtlclJhbmdlKGNvbnN0IEFYVGV4dE1hcmtlciYgcywgY29uc3QgQVhUZXh0TWFya2VyJiBl
KQorICAgIDogc3RhcnQocykKKyAgICAsIGVuZChlKQoreworfQorCitBWFRleHRNYXJrZXJSYW5n
ZTo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdAoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIHsgc3RhcnQsIGVuZCB9OworfQorCitzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJSYW5nZTo6c2ltcGxlUmFuZ2UoKSBjb25z
dAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHN0YXJ0Qm91bmRh
cnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KHN0YXJ0KTsKKyAgICBhdXRvIGVuZEJvdW5kYXJ5
UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChlbmQpOworICAgIGlmICghc3RhcnRCb3VuZGFyeVBv
aW50IHx8ICFlbmRCb3VuZGFyeVBvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgIHJldHVybiB7IHsgKnN0YXJ0Qm91bmRhcnlQb2ludCwgKmVuZEJvdW5kYXJ5UG9pbnQgfSB9
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWFRleHRNYXJrZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAuLjU0MDY4OTE1M2M0MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhUZXh0TWFya2VyLmgKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAq
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworY2xhc3MgQWNjZXNzaWJpbGl0eU9iamVjdDsKK3N0cnVjdCBDaGFyYWN0ZXJP
ZmZzZXQ7CisKK2NsYXNzIEFYVGV4dE1hcmtlciB7CisgICAgZnJpZW5kIGNsYXNzIEFYT2JqZWN0
Q2FjaGU7CisgICAgZnJpZW5kIGNsYXNzIEFYVGV4dE1hcmtlclJhbmdlOworcHVibGljOgorICAg
IC8vIENvbnN0cnVjdG9ycworICAgIEFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJik7CisgICAgQVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqLCBjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIE5v
ZGUqKTsKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBBWFRleHRNYXJrZXIoQVhUZXh0TWFya2Vy
UmVmKTsKKyNlbmRpZgorICAgIEFYVGV4dE1hcmtlcigpID0gZGVmYXVsdDsKKworICAgIGJvb2wg
aXNOdWxsKCkgY29uc3Q7CisgICAgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcGxhdGZvcm1P
YmplY3QoKSBjb25zdDsKKworICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0Owor
ICAgIG9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0OworI2lmIFBMQVRGT1JNKENPQ09B
KQorICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJlZigpIGNvbnN0IHsgcmV0dXJuIHBsYXRmb3Jt
T2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlmCisgICAgQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqZWN0KCkgY29uc3Q7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIqIG9iamVj
dFdyYXBwZXIoKSBjb25zdDsKKworICAgIFRleHRNYXJrZXJEYXRhIGNvbnN0JiBkYXRhKCkgY29u
c3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0dXJuIG1f
ZGF0YS5ub2RlOyB9CisgICAgQVhJRCBheElEKCkgY29uc3Q7CisgICAgYm9vbCBpc0lnbm9yZWQo
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuaWdub3JlZDsgfQorCisjaWYgRU5BQkxFKFRSRUVfREVC
VUdHSU5HKQorICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CisjZW5kaWYKKwor
cHJpdmF0ZToKKyAgICB2b2lkIGluaXRpYWxpemVBWE9iamVjdFdyYXBwZXIoKTsKKyAgICB2b2lk
IHNldERhdGEoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFuY2hvclR5cGUsIEFm
ZmluaXR5LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJP
ZmZzZXQpOworCisgICAgQVhPYmplY3RDYWNoZSogbV9heE9iamVjdENhY2hlIHsgbnVsbHB0ciB9
OworICAgIFRleHRNYXJrZXJEYXRhIG1fZGF0YTsKK307CisKK2NsYXNzIEFYVGV4dE1hcmtlclJh
bmdlIHsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMuCisgICAgQVhUZXh0TWFya2VyUmFu
Z2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAgQVhU
ZXh0TWFya2VyUmFuZ2UoQVhPYmplY3RDYWNoZSosIGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxl
UmFuZ2U+Jik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiwgY29u
c3QgQVhUZXh0TWFya2VyJik7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQVhUZXh0TWFya2Vy
UmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2VyUmFu
Z2UoKSA9IGRlZmF1bHQ7CisKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBs
YXRmb3JtT2JqZWN0KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2Uo
KSBjb25zdDsKKyAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNv
bnN0OworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdl
UmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9Cisj
ZW5kaWYKKyAgICBvcGVyYXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIXN0YXJ0LmlzTnVsbCgp
ICYmICFlbmQuaXNOdWxsKCk7IH0KKworICAgIEFYVGV4dE1hcmtlciBzdGFydDsKKyAgICBBWFRl
eHRNYXJrZXIgZW5kOworfTsKKworaW5saW5lIGJvb2wgQVhUZXh0TWFya2VyOjppc051bGwoKSBj
b25zdAoreworICAgIHJldHVybiAhbV9heE9iamVjdENhY2hlIHx8ICFub2RlKCkgfHwgIW1fYXhP
YmplY3RDYWNoZS0+aXNOb2RlSW5Vc2Uobm9kZSgpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRl
eHRNYXJrZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhU
ZXh0TWFya2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5jYzE0NWM5NmIwODMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjZW5kaWYKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWFRleHRN
YXJrZXJSZWYgdGV4dE1hcmtlclJlZikKK3sKKyAgICBpZiAoIXRleHRNYXJrZXJSZWYpCisgICAg
ICAgIHJldHVybjsKKworICAgIEFTU0VSVChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSA9PSBB
WFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7CisgICAgaWYgKENGR2V0VHlwZUlEKHRleHRNYXJrZXJS
ZWYpICE9IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBB
U1NFUlQoQVhUZXh0TWFya2VyR2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpID09IHNpemVvZihtX2Rh
dGEpKTsKKyAgICBpZiAoQVhUZXh0TWFya2VyR2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpICE9IHNp
emVvZihtX2RhdGEpKQorICAgICAgICByZXR1cm47CisKKyAgICBtZW1jcHkoJm1fZGF0YSwgQVhU
ZXh0TWFya2VyR2V0Qnl0ZVB0cih0ZXh0TWFya2VyUmVmKSwgc2l6ZW9mKG1fZGF0YSkpOworCisg
ICAgQWNjZXNzaWJpbGl0eTo6cGVyZm9ybUZ1bmN0aW9uT25NYWluVGhyZWFkKFt0aGlzXSAoKSB7
CisgICAgICAgIGlmICghbm9kZSgpKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIG1f
YXhPYmplY3RDYWNoZSA9IG5vZGUoKS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAg
fSk7Cit9CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IEFYVGV4dE1hcmtlcjo6cGxhdGZv
cm1PYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZtX2RhdGEsIHNpemVvZihtX2Rh
dGEpKSk7Cit9CisKK0FYSUQgQVhUZXh0TWFya2VyOjpheElEKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gW29iamVjdFdyYXBwZXIoKSBpZGVudGlmaWVyXTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6
OkFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZVJl
ZikKKyAgICA6IHN0YXJ0KEFYVGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJr
ZXJSYW5nZVJlZikpCisgICAgLCBlbmQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRl
eHRNYXJrZXJSYW5nZVJlZikpCit7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJS
YW5nZVJlZikgPT0gQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKSk7Cit9CisKK1JldGFpblB0
cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gQVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShr
Q0ZBbGxvY2F0b3JEZWZhdWx0CisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikmc3RhcnQubV9kYXRhLCBzaXplb2Yo
c3RhcnQubV9kYXRhKSkpLmdldCgpCisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmZW5kLm1fZGF0YSwgc2l6ZW9m
KGVuZC5tX2RhdGEpKSkuZ2V0KCkKKyAgICApKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA0NTQ4ZTJkMmUw
NGEuLjk0YjM4NjJlYjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KQEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFY
T2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNz
aWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCkBAIC03MTcsMzggKzcxOCwyNiBAQCBzdGF0aWMg
c3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmlsaXR5U2VhcmNo
RGlyZWN0aW9uPiBhY2NlcwogCiAjcHJhZ21hIG1hcmsgVGV4dCBNYXJrZXIgaGVscGVycwogCi1z
dGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0
ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVy
T2Zmc2V0KQorc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFya2Vy
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsKICAg
ICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJE
YXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFy
YWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0
ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byBuZXh0TWFya2VyID0gY2FjaGUtPm5leHRU
ZXh0TWFya2VyKG1hcmtlcik7CisgICAgaWYgKCFuZXh0TWFya2VyLmF4SUQoKS5pc1ZhbGlkKCkp
CiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3Jl
YXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBz
aXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisgICAgcmV0dXJuIG5leHRNYXJrZXIucGxhdGZvcm1P
YmplY3QoKTsKIH0KIAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3Vz
VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFj
dGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtl
clJlZj4gcHJldmlvdXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRl
eHRNYXJrZXImIG1hcmtlcikKIHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50
ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBj
aGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAg
cmV0dXJuIG5pbDsKLSAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0
TWFya2VyRGF0YSkpKTsKLX0KIAotLSAoUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pbmV4dFRl
eHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zm
c2V0Ci17Ci0gICAgcmV0dXJuIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7Ci19Ci0K
LS0gKFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+KXByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1
cm4gcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5heE9iamVjdENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7CisgICAgYXV0byBwcmV2aW91
c01hcmtlciA9IGNhY2hlLT5wcmV2aW91c1RleHRNYXJrZXIobWFya2VyKTsKKyAgICBpZiAoIXBy
ZXZpb3VzTWFya2VyLmF4SUQoKS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAg
cmV0dXJuIHByZXZpb3VzTWFya2VyLnBsYXRmb3JtT2JqZWN0KCk7CiB9CiAKIC8vIEZJWE1FOiBS
ZW1vdmUgdGhpcyBtZXRob2Qgc2luY2UgY2xpZW50cyBzaG91bGQgbm90IG5lZWQgdG8gY2FsbCB0
aGlzIG1ldGhvZCBhbmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJm
YWNlLgpAQCAtMzM3MSwyNCArMzM2MCwyNSBAQCAtIChBWFRleHRNYXJrZXJSYW5nZVJlZilsaW5l
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVmKXRleHRNYQogICAg
ICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBhdXRv
IHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIHRl
eHRNYXJrZXIpOworICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworLy8g
ICAgICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtl
cihjYWNoZSwgdGV4dE1hcmtlcik7CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2li
bGVQb3NpdGlvblJhbmdlOwogICAgICAgICBzd2l0Y2ggKHRleHRVbml0KSB7CiAgICAgICAgIGNh
c2UgVGV4dFVuaXQ6OkxpbmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJh
Y2tpbmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisgICAg
ICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxpbmVSYW5nZUZv
clBvc2l0aW9uKG1hcmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0
VW5pdDo6TGVmdExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tp
bmdPYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uKTsK
KyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExp
bmVWaXNpYmxlUG9zaXRpb25SYW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIGNhc2UgVGV4dFVuaXQ6OlJpZ2h0TGluZToKLSAgICAgICAgICAgIHZpc2libGVQb3NpdGlv
blJhbmdlID0gYmFja2luZ09iamVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2Uodmlz
aWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2lu
Z09iamVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB0
ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyhjYWNoZSwgdmlzaWJsZVBvc2l0aW9u
UmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CisgICAgICAgIHJldHVybiBB
WFRleHRNYXJrZXJSYW5nZShjYWNoZSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2UpLnBsYXRmb3JtT2Jq
ZWN0KCk7CiAgICAgfSk7CiB9CiAKQEAgLTM2ODIsMjUgKzM2NzIsMTkgQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiAoaWQpW3NlbGYgX3RleHRN
YXJrZXJGb3JJbmRleDpbbnVtYmVyIGludGVnZXJWYWx1ZV1dOwogCiAgICAgaWYgKFthdHRyaWJ1
dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFp
blRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3Qg
PSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICgh
YmFja2luZ09iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAg
ICBhdXRvKiBheE9iamVjdCA9IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyKGJhY2tp
bmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICBpZiAo
IWF4T2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGlm
IChheE9iamVjdC0+aXNBdHRhY2htZW50KCkgJiYgW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNo
bWVudFZpZXddKQotICAgICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBh
dHRhY2htZW50Vmlld107CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7
CisgICAgICAgIGF1dG8qIHdyYXBwZXIgPSBtYXJrZXIub2JqZWN0V3JhcHBlcigpOworICAgICAg
ICBpZiAoIXdyYXBwZXIpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBy
ZXR1cm4gYXhPYmplY3QtPndyYXBwZXIoKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChpZCBh
dHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcpCisgICAgICAgICAgICByZXR1
cm4gYXR0YWNobWVudFZpZXc7CisgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAogICAg
IGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlF
bGVtZW50Il0pIHsKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3Jl
bGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ1aUVsZW1lbnRdICgpIC0+IFJldGFpblB0
cjxpZD4gewotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2Uo
dWlFbGVtZW50LmdldCgpLT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC5nZXQoKS0+ZWxlbWVu
dFJhbmdlKCkpOworICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFu
Z2UodWlFbGVtZW50LT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC0+ZWxlbWVudFJhbmdlKCkp
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM3NTEsNyArMzczNSw3IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiAoaWQp
dGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hl
KCksIGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkp
OworICAgICAgICAgICAgcmV0dXJuIChpZClBWFRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLCBiYWNraW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJD
b3JlUG9pbnQpKS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwog
ICAgIH0KIApAQCAtMzg0MCw5ICszODI0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRB
VElPTlNfRU5ECiAgICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9i
amVjdEF0SW5kZXg6MF0pCiAgICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2Fy
cmF5IG9iamVjdEF0SW5kZXg6MV0pKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAg
cmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRo
cmVhZDxpZD4oWyZhcnJheV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1
cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKChBWFRleHRNYXJrZXJSZWYpW2FycmF5
IG9iamVjdEF0SW5kZXg6MF0sIChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6
MV0pLmdldCgpOwotICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtl
clJhbmdlIHsgeyAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjBdIH0sIHsg
KEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSB9IH0ucGxhdGZvcm1PYmpl
Y3QoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxU
b1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiXSkgewpA
QCAtMzg4MSw4ICszODY0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJP
ZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVy
biBicmlkZ2VfaWRfY2FzdChbcHJvdGVjdGVkU2VsZiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rl
ck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJr
ZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gbmV4dFRleHRNYXJrZXIoY2FjaGUs
IG1hcmtlcikuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAg
LTM4OTYsOCArMzg3OSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAog
ICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zm
c2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICByZXR1cm4g
YnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0pOworICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1h
cmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1RleHRNYXJrZXIo
Y2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9
CiAKQEAgLTM5NzgsMjYgKzM5NjEsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAKICAgICAvLyBVc2VkIG9ubHkgYnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhTdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwg
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0g
ICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4
dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJh
bmdlKTsKLQotICAgICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4dE1hcmtlckZvclJh
bmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIHRydWUpOwotICAgICAg
ICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0
TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5zdGFy
dC5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
Il0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2Vk
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAgYXV0
byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0Owot
ICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShi
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVj
dC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwgZmFsc2UpOwotICAgICAgICB9KTsKKyAgICAgICAg
QVhUZXh0TWFya2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsK
KyAgICAgICAgcmV0dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5lbmQucGxhdGZvcm1PYmplY3Qo
KS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQt
bWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1l
bnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1ZDMzZGFjYjJkM2YuLjUwNDYw
MjU4ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVu
dC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwxNyAr
MSwxNCBAQAotdGV4dCBoZXJlCi10ZXh0IGJsb2NrCi10ZXh0IGhlcmUKIFRoaXMgdGVzdHMgdGhl
IHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4g
Z2l2ZW4gYSB0ZXh0IG1hcmtlci4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCitQQVNT
OiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkgPT09IDEwCitQQVNTOiB0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVhbCh0ZXh0KSA9PT0g
dHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5p
c0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChu
ZXdSYW5nZSkgPT09IDEwCitQQVNTOiBuZXdSYW5nZS5pc0VxdWFsKHJhbmdlKSA9PT0gdHJ1ZQog
Ci1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIGlzIDEw
Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2Vy
KS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC50
ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIGlzIDEwCi1QQVNTIG5ld01hcmtl
clJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVs
bHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK3RleHQgaGVyZQordGV4dCBibG9j
awordGV4dCBoZXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9l
bGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAppbmRleCBkNDkzNmFkMjJkMTguLjM0MGFi
MWUxOTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVu
dC1mb3ItdGV4dC1tYXJrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCkBAIC0xLDUxICsxLDQyIEBACiA8IURPQ1RZ
UEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+
CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAogdGV4dCBoZXJlCi08ZGl2IGlk
PSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPnRleHQgYmxvY2s8L2Rpdj4KKzxkaXYgaWQ9InRleHQxIj50
ZXh0IGJsb2NrPC9kaXY+CiB0ZXh0IGhlcmUKIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3Qg
ZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuIik7Ci0KICAgICBpZiAod2luZG93LmFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCB0ZXN0T3V0cHV0ID0gIlRoaXMg
dGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVt
ZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci5cblxuIjsKIAotICAgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7Ci0gICAgICAgICAgdmFyIHRleHQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIHRleHQg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQxIiku
Y2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBub2Rl
LgotICAgICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgZWxlbWVudCdzIHJh
bmdlLgorICAgICAgICB2YXIgcmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
dGV4dCk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5n
ZUxlbmd0aChyYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgdmFyIHN0YXJ0ID0gdGV4dC5zdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOwogCi0gICAgICAgICAgLy8gQ2hlY2sg
dGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgcmFuZ2UuCi0gICAgICAg
ICAgdmFyIHRleHRNYXJrZXJSYW5nZTEgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
dGV4dCk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRl
eHRNYXJrZXJSYW5nZTEpIiwgIjEwIik7Ci0gICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4
dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMSk7Cisg
ICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNh
bWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KKyAgICAgICAgdGVzdE91dHB1dCArPSBl
eHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KS5pc0Vx
dWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0
IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0
aC4KLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIEdldCB0
aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50
LgorICAgICAgICB2YXIgZW5kID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KHJhbmdlKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CiAKLSAg
ICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNrIHRoYXQgaXQgZ2l2ZXMgdXMg
dGhlIHNhbWUgZWxlbWVudC4KLSAgICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOwotICAgICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFy
a2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIgcmFuZ2Ugb3V0
IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5ndGguCisgICAg
ICAgIHZhciBuZXdSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydCwg
ZW5kKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKG5ld1JhbmdlKSIsICIxMCIpOwogCi0gICAgICAgICAgLy8gTWFrZSBhIG1hcmtlciBy
YW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hlY2sgdGhlIGxlbmd0
aAotICAgICAgICAgIHZhciBuZXdNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIiwgIjEwIik7CisgICAgICAg
IC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFy
dGVkIHdpdGgKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoIm5ld1JhbmdlLmlzRXF1YWwo
cmFuZ2UpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxz
IHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKLSAgICAgICAgICBzaG91bGRC
ZVRydWUoIm5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkiKTsKKyAgICAg
ICAgZGVidWcodGVzdE91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXBy
ZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4
cGVjdGVkLnR4dAppbmRleCAwMmM1NzY1OGE1NmYuLjhmYzVmZDcyNDhiMSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9y
ZWQtZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKQEAg
LTEsMTYgKzEsMTMgQEAKLUZpcnN0IGxpbmUgb2YgdGV4dAotYnV0dG9uCi1UaGlyZCBsaW5lIG9m
IHRleHQKIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVs
ZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdG
aXJzdCBsaW5lIG9mIHRleHQnCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShyYW5nZSkgPT09ICdidXR0b24nCitQQVNTOiByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09
PSAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JworUEFTUzogcmVzdWx0RWxlbWVudC5zdHJp
bmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCcKIAotCi1QQVNTIGVsZW1l
bnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnRmlyc3QgbGluZSBv
ZiB0ZXh0JwotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2Up
IGlzICdidXR0b24nCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6
IFRoaXJkIGxpbmUgb2YgdGV4dCcKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAn
QVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdu
b3JlZC1lbGVtZW50Lmh0bWwKaW5kZXggNmVhODE4N2MwMjI2Li45NWQ3YTQ2Y2VjZDMgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJv
bS1pZ25vcmVkLWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKQEAgLTEsNTAgKzEs
NDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxo
dG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9z
Y3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVy
LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCis8ZGl2
IGlkPSJjb250YWluZXIiIHJvbGU9Imdyb3VwIj4KIDxkaXYgaWQ9InRlc3QiPkZpcnN0IGxpbmUg
b2YgdGV4dDxicj4KIDxidXR0b24gaWQ9ImJ1dHRvbiIgYXJpYS1oaWRkZW49InRydWUiPmJ1dHRv
bjwvYnV0dG9uPgogPGJyPlRoaXJkIGxpbmUgb2YgdGV4dDwvZGl2PgotCi08cCBpZD0iZGVzY3Jp
cHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAKIDxzY3JpcHQ+
Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBh
Y2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LiIpOwotICAgIAogICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAgICAgICAgdmFyIGNv
bnRhaW5lckVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
LSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0
byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQu
XG5cbiI7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAgICAgICAgIHZhciBlbGVtZW50
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXN0Iiku
Y2hpbGRBdEluZGV4KDApOwotICAgICAgICB2YXIgbWFya2VyUmFuZ2UgPSBlbGVtZW50LnRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJlKCJlbGVtZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ0ZpcnN0IGxpbmUgb2Yg
dGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxl
bWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzCi0gICAgICAgIHZhciB0ZXh0TWFya2Vy
ID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKTsK
LSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIodGV4dE1hcmtlcik7
Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJrZXIp
OwotICAgICAgICB2YXIgbGluZVJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdlRm9y
VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSkiLCAiJ2J1dHRvbiciKTsKLSAgICAgICAgCi0g
ICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShsaW5lUmFuZ2UpOwotICAgICAgICB2YXIgc3RhcnRFbGVtZW50ID0gZWxlbWVudC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIAorICAg
ICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVu
dCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHJhbmdlKSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworCisgICAgICAgIC8vIFRy
eSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxz
LgorICAgICAgICB2YXIgbWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtl
clJhbmdlKHJhbmdlKTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlciht
YXJrZXIpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKG1hcmtlcik7
CisgICAgICAgIHJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ2J1dHRvbiciKTsKKworICAgICAgICBtYXJrZXIgPSBl
bGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAg
IHZhciBzdGFydEVsZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihtYXJrZXIpOworCiAgICAgICAgIC8vIFNlYXJjaCBmb3J3YXJkCi0gICAgICAgIHZhciBy
ZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsK
LSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6
IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCisgICAgICAgIHZhciByZXN1bHRFbGVt
ZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQs
IHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBUaGlyZCBs
aW5lIG9mIHRleHQnIik7CisKICAgICAgICAgLy8gU2VhcmNoIGJhY2t3YXJkCi0gICAgICAgIHJl
c3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsK
LSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6
IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5l
ci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBmYWxzZSwgIkFYQW55
VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJl
c3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCci
KTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikuc3R5bGUu
dmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KLSAg
ICAgICAgCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4
dAppbmRleCBjZGNjNzdjM2M4NzEuLjZhN2QyZjc4YTNlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2Ut
Zm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMSwyODEgKzEsMjA3IEBACi1UaGluayBkaWZmZXJl
bnQgQXBwbGUKLQotYm9sZCBpdGFsaWMKLXVuZGVybGluZSBsYXN0IQotCi1IZWxsbyBXb3JsZCEK
LVRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5Lgot
Ci1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBm
b2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1RoaXMgdGVzdHMgdGhhdCB0ZXh0TWFya2Vy
UmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KIAogY29udGVudCBsZW5ndGg6IDY1CiBBbGwg
cmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4dDoKLTAKLScn
Ci0xCi0nVCcKLTIKLSdUaCcKLTMKLSdUaGknCi00Ci0nVGhpbicKLTUKLSdUaGluaycKLTYKLSdU
aGluayAnCi03Ci0nVGhpbmsgZCcKLTgKLSdUaGluayBkaScKLTkKLSdUaGluayBkaWYnCi0xMAot
J1RoaW5rIGRpZmYnCi0xMQotJ1RoaW5rIGRpZmZlJwotMTIKLSdUaGluayBkaWZmZXInCi0xMwot
J1RoaW5rIGRpZmZlcmUnCi0xNAotJ1RoaW5rIGRpZmZlcmVuJwotMTUKLSdUaGluayBkaWZmZXJl
bnQnCi0xNgotJ1RoaW5rIGRpZmZlcmVudCAnCi0xNwotJ1RoaW5rIGRpZmZlcmVudCBBJwotMTgK
LSdUaGluayBkaWZmZXJlbnQgQXAnCi0xOQotJ1RoaW5rIGRpZmZlcmVudCBBcHAnCi0yMAotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsJwotMjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUnCi0yMgotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZScKLTIzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiswICcnCisx
ICdUJworMiAnVGgnCiszICdUaGknCis0ICdUaGluJworNSAnVGhpbmsnCis2ICdUaGluayAnCis3
ICdUaGluayBkJworOCAnVGhpbmsgZGknCis5ICdUaGluayBkaWYnCisxMCAnVGhpbmsgZGlmZicK
KzExICdUaGluayBkaWZmZScKKzEyICdUaGluayBkaWZmZXInCisxMyAnVGhpbmsgZGlmZmVyZScK
KzE0ICdUaGluayBkaWZmZXJlbicKKzE1ICdUaGluayBkaWZmZXJlbnQnCisxNiAnVGhpbmsgZGlm
ZmVyZW50ICcKKzE3ICdUaGluayBkaWZmZXJlbnQgQScKKzE4ICdUaGluayBkaWZmZXJlbnQgQXAn
CisxOSAnVGhpbmsgZGlmZmVyZW50IEFwcCcKKzIwICdUaGluayBkaWZmZXJlbnQgQXBwbCcKKzIx
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlJworMjMg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiAnCi0yNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
MjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBiJwotMjUKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzI1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm8nCi0yNgotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorMjYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2wnCi0yNwotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorMjcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkJwotMjgKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzI4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCAn
Ci0yOQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGknCi0zMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzAgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0JwotMzEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMxICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGEnCi0zMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMzIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWwnCi0zMwotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorMzMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpJwot
MzQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMnCi0zNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzUgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogJwotMzYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzM2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHUnCi0zNwotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMzcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW4nCi0zOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzggJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kJwotMzkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM5
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGUnCi00MAotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorNDAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW5kZXInCi00MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDEgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsJwotNDIKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzQyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGknCi00
MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW4nCi00NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDQgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lJwotNDUKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzQ1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSAnCi00NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDYgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGwnCi00NwotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorNDcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dW5kZXJsaW5lIGxhJwotNDgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ4ICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXMnCi00OQotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorNDkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dW5kZXJsaW5lIGxhc3QnCi01MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTAgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwotNTEKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzUxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0IScKLTUyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MiAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8
JwotNTMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUzICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIJwotNTQKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzU0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGluZSBsYXN0IQogCiDvv7xIZScKLTU1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NSAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog
77+8SGVsJwotNTYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU2ICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsJwotNTcKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzU3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbycKLTU4Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis1OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
bmUgbGFzdCEKIAog77+8SGVsbG8gJwotNTkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU5ICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDv
v7xIZWxsbyBXJwotNjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYwICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXbycK
LTYxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29yJwotNjIKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzYyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsJwotNjMKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzYzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVy
bGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCcKLTY0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
Cis2NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFz
dCEKQEAgLTI5MSw3ICsyMTcsMTEgQEAgdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxk
IScKICcnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVU
RQogCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAppbmRleCBjZTFjYmYyZWVmZTMuLmMz
MDQ5ODY3YjA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4
dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCkBAIC0xLDkgKzEsOSBAQAog
PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8
aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4K
IDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiA8ZGl2IGlkPSJjb250ZW50IiBy
b2xlPSJncm91cCI+CiAgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVudDwvZW0+IDxhIGhyZWY9ImFw
cGxlLmNvbSI+QXBwbGU8L2E+PC9wPgpAQCAtMTEsMzYgKzExLDM0IEBACiAgICAgPGJ1dHRvbj5I
ZWxsbyBXb3JsZCE8L2J1dHRvbj4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4iKTsK
LQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgYXhF
bGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJj
b250ZW50Iik7Ci0gICAgICAgIGNvbnRlbnRUZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4
dE1hcmtlclJhbmdlRm9yRWxlbWVudChheEVsZW1lbnQpOwotICAgICAgICB0ZXh0TGVuZ3RoID0g
YXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjb250ZW50VGV4dE1hcmtlclJhbmdl
KS5sZW5ndGg7Ci0gICAgICAgIGRlYnVnKCJjb250ZW50IGxlbmd0aDogIiArIHRleHRMZW5ndGgp
OworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VG
b3JSYW5nZSB3b3JrcyBwcm9wZXJseS5cblxuIjsKIAotICAgICAgICBkZWJ1ZygiQWxsIHJhbmdl
cyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Iik7Ci0gICAgICAg
IGZvciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGRlYnVnKGkp
OwotICAgICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5n
ZUZvclJhbmdlKDAsIGkpOwotICAgICAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgbGV0
IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNvbnRlbnQiKTsKKyAgICAgICAgbGV0IHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KGNvbnRlbnQpOworICAgICAgICBsZXQgY29udGVudExlbmd0aCA9IGNvbnRlbnQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKS5sZW5ndGg7CisgICAgICAgIG91dHB1dCAr
PSBgY29udGVudCBsZW5ndGg6ICR7Y29udGVudExlbmd0aH1cbmA7CisKKyAgICAgICAgb3V0cHV0
ICs9ICJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4
dDpcbiI7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZW50TGVuZ3RoOyArK2kpIHsKKyAg
ICAgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsK
KyAgICAgICAgICAgIG91dHB1dCArPSBgJHtpfSAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShyYW5nZSl9J1xuYDsKICAgICAgICAgfQogCi0gICAgICAgIGRlYnVnKCJHZXQgdGhl
IHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToiKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0g
YXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKLSAgICAgICAgZGVidWco
IiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
ICsgIiciKTsKKyAgICAgICAgb3V0cHV0ICs9ICJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBB
cHBsZTpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5n
ZSgxNiwgNSk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisKKyAgICAgICAgb3V0cHV0ICs9ICJPdXQgb2YgcmFuZ2Ug
dmFsdWVzOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJh
bmdlKDAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250ZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKIAotICAgICAgICBkZWJ1Zygi
T3V0IG9mIHJhbmdlIHZhbHVlczoiKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVt
ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7Ci0gICAgICAgIGRlYnVnKCInIiAr
IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICIn
Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VG
b3JSYW5nZSg3MCwgMTAwKTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7
CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0
bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBv
c2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVj
dGVkLnR4dAppbmRleCA5MTVkNTY5YzBlZDAuLmQ4NGI4YjIwMTc0MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4
dC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92
aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDEw
ICsxLDcgQEAKLVRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIHBy
b3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBv
c2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0
cy4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogY29udGVudC5jaGlsZEF0SW5k
ZXgoMCkuaXNFcXVhbChlbGVtZW50KSA9PT0gdHJ1ZQogCi0KLVBBU1MgY29udGVudC5jaGlsZEF0
SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gt
Zm9yLXRleHQtbm9kZS5odG1sCmluZGV4IGM3MjU3ZDU4NWQxYS4uNjJlYjRlMzUyMmViIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNy
YXNoLWZvci10ZXh0LW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbApAQCAtMSw0MCArMSwz
MSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0
bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIu
anMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKLTxkaXYg
aWQ9ImNvbnRlbnQiIHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6MjAwcHg7Ij4KKzxkaXYgaWQ9
ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweDsiPgogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIAogVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxk
aXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRo
aXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJsZSBwb2ludCBm
b3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBv
YmplY3RzLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFz
a2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2Fu
IGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLlxuXG4iOwogCi0gICAgICAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5mb2N1cygpOwotICAgICAgICAgIHZhciBjb250
ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAgICAg
ICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jh
c2guCi0gICAgICAgICAgdmFyIG1hcmtlckF0UG9pbnQgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQ
b2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoLzIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVp
Z2h0LzIpOwotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOworICAgICAgICB2YXIgY29udGVu
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVu
dCIpOworICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRoaXMgcG9pbnQuIEl0IHNo
b3VsZCBub3QgY3Jhc2guCisgICAgICAgIHZhciBtYXJrZXIgPSBjb250ZW50LnRleHRNYXJrZXJG
b3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoIC8gMiwgY29udGVudC55ICsgY29udGVu
dC5oZWlnaHQgLyAyKTsKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1l
IGFzIHRoZSBvbmUgd2Ugd2FudGVkLgorICAgICAgICB2YXIgZWxlbWVudCA9IGNvbnRlbnQuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoImNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwoZWxlbWVudCkiLCAidHJ1
ZSIpOwogCi0gICAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIGFzIHRo
ZSBvbmUgd2Ugd2FudGVkLgotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNvbnRlbnQuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOwotICAgICAgICAg
IHNob3VsZEJlVHJ1ZSgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVu
dCkiKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52
aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQotCiA8
L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMi
Pjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlv
dXMtbmV4dC5odG1sCmluZGV4IDVlZDNiZDBkMDZkZS4uMzhmMTNlZDdhM2VjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZp
b3VzLW5leHQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2Vy
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbApAQCAtMSwxNSArMSwxNyBAQAogPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0
PgogPG1ldGEgY2hhcnNldD0iVVRGLTE2Ij4KIDwvaGVhZD4KIDxzdHlsZT4KIC51c2Vyc2VsZWN0
IHsgdXNlci1zZWxlY3Q6IG5vbmU7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KIDwvc3R5
bGU+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAotPGRpdiBpZD0idGV4dCIgdGFiaW5kZXg9
IjAiPnRleHQ8L2Rpdj4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorPGRpdiBpZD0idGV4dCI+dGV4dDwv
ZGl2PgogPGJyPgogdGV4dDEKIApAQCAtMzIsMjkgKzM0LDQ1IEBAIGYKIDxwIGlkPSJ0ZXh0NiI+
YSAgICAgYjwvcD4KIAogPHAgaWQ9InRleHQ3Ij5hdWRpbzxhdWRpbyBjb250cm9scz48L2F1ZGlv
PmZpbGU8L3A+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+
PC9kaXY+Cis8L2Rpdj4KIAogPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBw
cmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7CisgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJy
ZW50TWFya2VyOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtl
cihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgY3VycmVudDogY3VycmVu
dE1hcmtlcgorICAgICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3Vu
dCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgeworICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0g
b2JqLnByZXZpb3VzVGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7CisgICAgICAgICAgICBjdXJy
ZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFy
a2VyLAorICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9OworICAg
IH0KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQg
bWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LiIpOwotICAgIAogICAg
IGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAg
IHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0Iik7Ci0gICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAg
dGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1
dCA9ICJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBh
cmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LlxuXG4iOworCisgICAgICAgIHZhciB0ZXh0ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0IikuY2hpbGRB
dEluZGV4KDApOworCiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQv
ZW5kIG1hcmtlciBmb3IgdGhpcyByYW5nZS4KICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9
IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUo
InRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5n
dGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisKICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0g
dGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsK
ICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7
Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIAorICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gQ2hlY2sgbmV4dCB0ZXh0IG1hcmtl
ci4gKEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAg
IHZhciBjdXJyZW50TWFya2VyLCBwcmV2aW91c01hcmtlciwgbWFya2VyUmFuZ2U7OwogICAgICAg
ICB2YXIgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRl
eHQpOwpAQCAtNjIsNTggKzgwLDU3IEBAIGYKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3Vs
dC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIHZhciBuZXds
aW5lID0gJ1xuJzsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAi
bmV3bGluZSIpOworCiAgICAgICAgIC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVycywgaXQg
d2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgx
LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0
LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKLSAg
ICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKwogICAgICAgICAvLyBDaGVjayBwcmV2aW91
cyB0ZXh0IG1hcmtlci4gKFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxs
IGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBwcmV2aW91c01h
cmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVz
dWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAg
ICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZp
b3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJk
cyBvbmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIg
b2YgInRleHQiLgogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5w
cmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01h
cmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5wbGF0Zm9ybU5hbWUgPT0gIm1hYyIpCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKKyAg
ICAgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICIndCcgKyBuZXdsaW5lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ3QnIik7CisgICAgICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CiAKICAgICAgICAgLy8gQ2hlY2sg
dGhlIGNhc2Ugd2l0aCByZXBsYWNlZCBub2RlCiAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKICAgICAgICAg
dmFyIHRleHRNYXJrZXJSYW5nZTIgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRl
eHQyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0
TWFya2VyUmFuZ2UyKSIsICI1Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnRl
eHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7CiAgICAgICAgIHZh
ciBzdHIgPSB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMiku
cmVwbGFjZShTdHJpbmcuZnJvbUNoYXJDb2RlKDY1NTMyKSwgIltBVFRBQ0hNRU5UXSIpOwotICAg
ICAgICBkZWJ1ZygiT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6ICIgKyBzdHIpOwotICAgICAgICAK
KyAgICAgICAgb3V0cHV0ICs9IGBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogJHtzdHJ9XG5gOwor
CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7CiAgICAgICAgIC8vIEFkdmFuY2UgNSBjaGFyYWN0
ZXJzLCBpdCB3aWxsIGxhbmQgYXQgImQiLgogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDUsIHBy
ZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFy
a2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1
cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKKwogICAgICAgICAvLyBUcmF2ZXJzZSBiYWNr
d2FyZHMgNiBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9m
ICJ0ZXh0MSIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcyg2LCBwcmV2aW91c01hcmtlciwg
Y3VycmVudE1hcmtlciwgdGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5w
cmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKLSAgICAgICAgCisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJzEnIik7CisKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCB1c2VyLXNl
bGVjdDpub25lLCBuZXh0VGV4dE1hcmtlci9wcmV2aW91c1RleHRNYXJrZXIgc2hvdWxkIHN0aWxs
IHdvcmsuCi0gICAgICAgIHZhciB0ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGV4dDMiKTsKLSAgICAgICAgdGV4dDMgPSB0ZXh0My5jaGlsZEF0
SW5kZXgoMCk7Ci0gICAgICAgIAorICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIikuY2hpbGRBdEluZGV4KDApOwor
CiAgICAgICAgIC8vIEFkdmFuY2UgdG8gbGFuZCBhdCB1c2VyLXNlbGVjdDpub25lIG5vZGUuCiAg
ICAgICAgIHZhciBtYXJrZXIxLCBtYXJrZXIyOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDE4OyBpKyspIHsKQEAgLTEyNSwzNCArMTQyLDMxIEBAIGYKICAgICAgICAgfQogICAgICAgICBt
YXJrZXIyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKG1hcmtlcjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRC
ZSgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0JyIp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidlY3QnIik7CiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRz
IHRoZSBzZWNvbmQgbWFya2VyIGZvciA2IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUg
InNlbCIKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4
dDMucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAg
IG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQzLnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0gICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidzZWwn
Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2Fz
ZSB3aXRoIHBhc3N3b3JkIGZpZWxkLgogICAgICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJwc3ciKTsKICAgICAgICAgdmFyIHRleHRN
YXJrZXJSYW5nZTMgPSBwc3cudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChwc3cpOwogICAgICAg
ICB2YXIgc3RhcnQgPSBwc3cuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRN
YXJrZXJSYW5nZTMpOwotICAgICAgICBzaG91bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgiIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIiwg
InRydWUiKTsKKwogICAgICAgICAvLyBDaGVjayBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGNh
bGwgd2lsbCBza2lwIHBhc3N3b3JkIGZpZWxkCiAgICAgICAgIC8vIFdlIHN0YXJ0IGZyb20gdGV4
dDIgYW5kIGFkdmFuY2UgNiBjaGFyYWN0ZXJzLCBpdCBzaG91bGQgc2tpcCB0aGUgcGFzc3dvcmQg
ZmllbGQgYW5kIGxhbmQgb24gdGV4dDMuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5z
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7Ci0gICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLm5leHRUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgi
dGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlz
RXF1YWwodGV4dDMpIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIs
ICJ0cnVlIik7CiAgICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91
bGQgbGFuZCBvbiAiIGQiIG5vZGUuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2
aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0
ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJl
VHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJr
ZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIpOwotICAgICAgICAKLSAgICAgICAg
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSki
LCAidHJ1ZSIpOworCiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRleHQgbm9kZSB3aXRoIGxp
bmUgYnJlYWtzLCB3ZSBjYW4gZ28gdGhyb3VnaCBpdCB3aXRoIG5leHQvcHJldmlvdXMgY2FsbC4K
ICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dDQiKTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JFbGVtZW50KHRleHQpOwpAQCAtMTYzLDg3ICsxNzcsNjQgQEAgZgogICAgICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAg
ICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7Ci0gICAg
ICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7CisKICAgICAgICAgZW5kTWFya2VyID0gdGV4dC5l
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSBlbmRNYXJrZXI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
NzsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKQogICAgICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
OwotICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRo
IGVtb2ppLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJ0ZXh0NSIpOwogICAgICAgICB2YXIgZW1vamlUZXh0TWFya2VyUmFuZ2Ug
PSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChl
bW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwogICAgICAgICAvLyBNYWtlIHN1cmUgbmF2aWdh
dGluZyBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGlzIGJ5IGVtb2ppLgogICAgICAgICBzdGFy
dE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGVtb2ppVGV4
dE1hcmtlclJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgyLCBwcmV2aW91c01hcmtl
ciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YjyciKTsK
ICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQpKSIsICIn8J+YgyciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7
CisKICAgICAgICAgLy8gVGVzdCBjYXNlIHdpdGggY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAg
ICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRleHQ2Iik7CiAgICAgICAgIHZhciBjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2Up
IiwgIjMiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CiAgICAgICAgIHN0
YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoY29sbGFw
c2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBw
cmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn
YSciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJl
c3VsdCA9IGZvcndhcmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIidiJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMo
MSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIs
ICInYSciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCByZXBsYWNlZCBlbGVtZW50cyAo
c2hvdWxkIHVzZSBvYmplY3QgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4KICAgICAgICAgdGV4dCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDciKTsK
ICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNmaWxlJyIpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
IiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJr
ZXIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4
dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFu
Z2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7
CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBp
KyspIHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKICAgICAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hv
dWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVG
RkZDJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKIAotICAgICAgICBmdW5jdGlvbiBm
b3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Ci0gICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAg
ICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAgICAgICAgY3VycmVu
dE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZp
b3VzTWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAg
ICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJhY2t3YXJk
cyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJl
dmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKLSAg
ICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJl
bnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KKyAgICAgICAgZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRl
biI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAppbmRleCAyOTI2NDFhN2UwMzguLjVh
MGEzMmMyOGQ3MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2li
aWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIv
dGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAK
LXRleHQKLQotdGV4dDEKLWMgIGQKLQotY2FuJ3Qgc2VsZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8K
LQotYSBiCi0KLWF1ZGlvZmlsZQotCiBUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQg
bWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgogCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0
TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMg
dHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
bmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
aXMgJ3QnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAndCcgKyBuZXdsaW5lCi1QQVNTIHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0
TWFya2VyUmFuZ2UyKSBpcyA1CitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0
TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5h
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQp
ID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSA9PT0gJ3QnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSA9PT0gJ3QnICsgbmV3bGluZQorUEFTUzogdGV4dDIudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpID09PSA1CiBPYmplY3Qgc3RyaW5nIGZvciByYW5n
ZTogYyBbQVRUQUNITUVOVF0gZAotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICdkJwotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICcxJwotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIGlzIHRydWUKLVBB
U1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
LmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZicKLVBBU1MgdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdhJwotUEFTUyB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iPJwotUEFTUyB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iDJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIGlzIDMKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKSBpcyAnYXVkaW/vv7xmaWxlJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfvv7wnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZCcKK1BBU1M6IHRleHQyLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICcxJworUEFTUzogdGV4dDMuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2VjdCcKK1BBU1M6IHRleHQzLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdzZWwnCitQQVNTOiAhcHN3
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgPT09IHRydWUKK1BBU1M6
IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5p
c0VxdWFsKHRleHQzKSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIp
KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpID09PSAnZicKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRN
YXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgPT09ICfwn5iPJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSA9PT0gJ/CfmIMnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBz
ZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpID09PSAzCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSA9PT0gJ2InCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpID09PSAnICcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlKSA9PT0gJ2F1ZGlv77+8ZmlsZScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJz
ZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464049</attachid>
            <date>2022-12-14 12:16:57 -0800</date>
            <delta_ts>2023-01-11 18:18:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20221214151656.patch</filename>
            <type>text/plain</type>
            <size>87462</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA3NDBmYjRjZjdlNjZjMWNmMTI1NmYyM2IwODVmYzQwYjQ5YjZkZjgwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIEFYVGV4dE1hcmtlciBhbmQgQVhUZXh0TWFya2VyUmFuZ2Ugc3Vw
cG9ydAogb24gTWFjLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjMw
NTU4IHJkYXI6Ly84MzYyNTYyMAoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCi0tLQogU291
cmNlL1dlYkNvcmUvU291cmNlcy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgICB8ICA5NSArKysrKy0tCiBTb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMTEgKwogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIHwgMjU2ICsrKysrKysrKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCAgIHwg
MTA2ICsrKysrKysrCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5t
bSAgfCAgOTUgKysrKysrKwogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbSAgIHwgMTAyICsrKy0tLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhw
ZWN0ZWQudHh0ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1s
ICAgICAgICAgIHwgIDUxICsrLS0KIC4uLnJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4
cGVjdGVkLnR4dCB8ICAxNSArLQogLi4uc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxl
bWVudC5odG1sIHwgIDYzICsrLS0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhw
ZWN0ZWQudHh0ICAgfCAyMTAgKysrKystLS0tLS0tLS0KIC4uLi9tYWMvdGV4dG1hcmtlci1yYW5n
ZS1mb3ItcmFuZ2UuaHRtbCAgICAgICB8ICA0OCArKy0tCiAuLi4tcG9zaXRpb24tY3Jhc2gtZm9y
LXRleHQtbm9kZS1leHBlY3RlZC50eHQgfCAgIDUgKy0KIC4uLi92aXNpYmxlLXBvc2l0aW9uLWNy
YXNoLWZvci10ZXh0LW5vZGUuaHRtbCB8ICAzNSArLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91
cy1uZXh0Lmh0bWwgICAgICAgICAgICB8IDE3NSArKysrKystLS0tLS0KIC4uLi90ZXh0LW1hcmtl
ci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCAgICB8ICA3OCArKystLS0KIDE5IGZpbGVzIGNo
YW5nZWQsIDg3OCBpbnNlcnRpb25zKCspLCA1MDQgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAx
MDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIu
aAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2Ev
QVhUZXh0TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IDIyNmRmYmRjYTEwMS4uZDU3
MjMyN2M2YzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9T
b3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIE1vZHVsZXMvd2Vi
eHIvWFJTZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBhY2Nlc3Np
YmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorYWNj
ZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlB
UklBR3JpZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAK
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQKaW5kZXggMGYyZGZhNDhiODNkLi5hNzgwOTZkYzg1ZmIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNl
c0NvY29hLnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNw
ZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNv
Z25pemVyVGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3Rl
bUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29h
Lm1tCithY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCiBhY2Nlc3NpYmls
aXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmls
aXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IGIyMjRkNzc2MGRhYS4uYzkyZjMxNGMzNzAzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTI2
LDYgKzQ1MjYsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRv
ci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhC
MzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYz
NiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5k
aW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0Ux
IC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyMDhBMDI5Mzc5
QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJGMzI3MjQxMkJGMjkw
MDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJB
Y2Nlc3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChXZWFrLCApOyB9
OyB9OwogCQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBGMkE0M0YxMzg2OUEy
ODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OwogCQlDMTA1REE2NDBGM0FBNkI4MDAxREQ0NEYgLyogVGV4dEVu
Y29kaW5nRGV0ZWN0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEMxMDVEQTYzMEYzQUE2QjgwMDFERDQ0RiAvKiBUZXh0RW5jb2RpbmdEZXRlY3Rvci5o
ICovOyB9OwpAQCAtMTYzODAsNiArMTYzODEsOSBAQAogCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFD
ODAgLyogQVhMb2dnZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhMb2dn
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA3ODM3NjAyM0RGMjUzRTAwQzlD
NUM4IC8qIEFYSXNvbGF0ZWRPYmplY3RNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBWElz
b2xhdGVkT2JqZWN0TWFjLm1tOyBwYXRoID0gbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwOEYxM0ExMjQ0NzY2REMwMEFCOTg5RiAvKiBB
WExvZ2dlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWExvZ2dlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJr
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0TWFya2VyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBB
WFRleHRNYXJrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhU
ZXh0TWFya2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QjUyOTM5
M0RDRjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gQVhUZXh0TWFya2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMwRTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmls
aXR5LnRiZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
ICJzb3VyY2Vjb2RlLnRleHQtYmFzZWQtZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJBY2Nl
c3NpYmlsaXR5LnRiZDsgcGF0aCA9IHVzci9saWIvbGliQWNjZXNzaWJpbGl0eS50YmQ7IHNvdXJj
ZVRyZWUgPSBTREtST09UOyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJv
Y2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlw
dHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMTA1REE2
MTBGM0FBNjhGMDAxREQ0NEYgLyogVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dEVuY29kaW5nRGV0ZWN0b3JJQ1UuY3Bw
OyBwYXRoID0gLi4vLi4vUEFML3BhbC90ZXh0L1RleHRFbmNvZGluZ0RldGVjdG9ySUNVLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMzQ4LDYgKzIxMzUyLDcgQEAKIAkJMjlB
ODEyMDQwRkJCOUI0MTAwNTEwMjkzIC8qIGFjY2Vzc2liaWxpdHkgKi8gPSB7CiAJCQlpc2EgPSBQ
QlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAv
KiBjb2NvYSAqLywKIAkJCQlBQUE3MjhFRjE2RDFEOEJDMDBEM0JCQzYgLyogaW9zICovLAogCQkJ
CTI5QUUyMTI5MjFBQjlFQ0IwMDg2OTI4MyAvKiBpc29sYXRlZHRyZWUgKi8sCiAJCQkJMjlBODEy
MDUwRkJCOUI1MjAwNTEwMjkzIC8qIG1hYyAqLywKQEAgLTIxNDI0LDYgKzIxNDI5LDggQEAKIAkJ
CQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLywKIAkJCQkyOTgxQ0FB
RjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAgKi8sCiAJCQkJMjlBODEyMUEw
RkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywKKwkJCQlDMEUyMDhBMTI5Mzc5
QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKKwkJCQlDMEUyMDhBMDI5Mzc5QzZF
MDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJOTFDOUYyRjgxQUUzQkUyNDAwOTVC
NjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggKi8sCiAJCQkJQkM0QTUzMzAyNTYwNTkw
MzAwMjhDNTkyIC8qIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZS5oICovLAogCQkJKTsKQEAgLTMx
MzgzLDYgKzMxMzkwLDE0IEBACiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsKIAkJfTsKKwkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICovID0gewor
CQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUyMDhCNTI5MzkzRENG
MDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNv
Y29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0QwREJCM0UxNDIyNzRF
NjAwMjgwMjYzIC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJl
biA9ICgKQEAgLTM0OTQ3LDYgKzM0OTYyLDcgQEAKIAkJCQkyOUFFMjEzNTIxQUJBNDhBMDA4Njky
ODMgLyogQVhJc29sYXRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRTIxMkQyMUFC
OUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4
MTIzODBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQzBFMjA4QTIyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTFDOUYyRjkxQUUzQkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFj
a0ZvcndhcmRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE3NDFEMEYwQjA3MjU5QTAwRUQ0
NDJDIC8qIEJhY2tGb3J3YXJkQ2xpZW50LmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGE5YmFjMDU0NmJlMy4u
NDNjMzJhZjdkNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0
LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgor
I2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKQEAgLTI1MDcsMzMgKzI1MDgsMzUgQEAgdm9pZCBB
WE9iamVjdENhY2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1h
cmtlckRhdGEmIHRleHRNYXIKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQog
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNl
dC5ub2RlOwotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNh
c3Q8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CisKKyAg
ICBOb2RlKiBub2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7CisgICAgaWYgKGlzPEhUTUxJbnB1
dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpub2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkgewogICAgICAgICB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkID0gdHJ1ZTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9i
amVjdD4gb2JqID0gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7Ci0gICAgaWYgKCFvYmopCisK
KyAgICBSZWZQdHIgb2JqZWN0ID0gZ2V0T3JDcmVhdGUobm9kZSk7CisgICAgaWYgKCFvYmplY3Qp
CiAgICAgICAgIHJldHVybjsKLSAgICAKKwogICAgIC8vIENvbnZlcnQgdG8gdmlzaWJsZSBwb3Np
dGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGF1dG8gdmlzaWJs
ZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJP
ZmZzZXQpOwogICAgIGludCB2cE9mZnNldCA9IDA7CiAgICAgaWYgKCF2aXNpYmxlUG9zaXRpb24u
aXNOdWxsKCkpIHsKICAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpOwogICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVk
aXRpbmdPZmZzZXQoKTsKICAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9i
ai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKKworICAg
IHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisgICAgdGV4dE1hcmtl
ckRhdGEub2JqZWN0V3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOworICAgIHRleHRNYXJrZXJE
YXRhLm5vZGUgPSBub2RlOwogICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNo
YXJhY3Rlck9mZnNldC5vZmZzZXQ7CiAgICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJ
bmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwogICAgIHRleHRNYXJrZXJEYXRhLm9m
ZnNldCA9IHZwT2Zmc2V0OwogICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJsZVBv
c2l0aW9uLmFmZmluaXR5KCk7Ci0gICAgCi0gICAgdGhpcy0+c2V0Tm9kZUluVXNlKGRvbU5vZGUp
OworICAgIC8vIFRleHRNYXJrZXJEYXRhLmlnbm9yZWQgaXMgZGVsaWJlcmF0ZWx5IG5vdCBhc3Np
Z25lZCBoZXJlIHNvIHdlIGNhbiByZXR1cm4gdmFsaWQgVGV4dE1hcmtlcnMgZm9yIGlnbm9yZWQg
QVggb2JqZWN0cy4KKworICAgIHNldE5vZGVJblVzZShub2RlKTsKIH0KIAogQ2hhcmFjdGVyT2Zm
c2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFydCwgYm9vbCBlbnRlclRleHRDb250cm9s
cykKQEAgLTI2NTMsNyArMjY1Niw3IEBAIGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJv
dW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgcHJldmlvdXMsIGNvbnN0IENoCiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCisKIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtl
ckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0
YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CkBAIC0yNjY1LDcgKzI2NjgsNyBAQCB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChU
ZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHBy
ZXZpb3VzLCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5l
eHQsIGZhbHNlKTsKICAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4
dE1hcmtlckRhdGEsIG5leHQpOwotICAgICAgICAKKwogICAgICAgICAvLyBXZSBzaG91bGQgc2tp
cCBuZXh0IENoYXJhY3Rlck9mZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRoZSBzYW1lLgogICAgICAg
ICBpZiAoIWxlbmd0aEZvclJhbmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhw
cmV2aW91cywgbmV4dCkpKQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSB0cnVlOwpAQCAt
MjY3Myw2ICsyNjc2LDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JO
ZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFyCiAgICAgfSB3aGlsZSAo
dGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CiB9CiAKK0FYVGV4dE1h
cmtlciBBWE9iamVjdENhY2hlOjpuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1h
cmtlcikKK3sKKyAgICBBWFRleHRNYXJrZXIgcmVzdWx0OworCisgICAgVGV4dE1hcmtlckRhdGEg
ZGF0YSB7IG1hcmtlci5kYXRhKCkgfTsKKyAgICB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0
ZXJPZmZzZXQoZGF0YSwgbWFya2VyKTsKKyAgICBpZiAoZGF0YS5ub2RlICE9IG1hcmtlci5tX2Rh
dGEubm9kZSkgeworICAgICAgICAvLyBTaW5jZSB0aGUgTm9kZSBjaGFuZ2VkLCBuZWVkIHRvIHVw
ZGF0ZSB0aGUgb2JqZWN0IHdyYXBwZXIuCisgICAgICAgIGlmIChhdXRvKiBvYmplY3QgPSBnZXRP
ckNyZWF0ZShkYXRhLm5vZGUpKQorICAgICAgICAgICAgZGF0YS5vYmplY3RXcmFwcGVyID0gb2Jq
ZWN0LT53cmFwcGVyKCk7CisgICAgfQorCisgICAgcmVzdWx0Lm1fYXhPYmplY3RDYWNoZSA9IHRo
aXM7CisgICAgcmVzdWx0Lm1fZGF0YSA9IGRhdGE7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwog
dm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zm
c2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0
JiBjaGFyYWN0ZXJPZmZzZXQpCiB7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzID0gY2hh
cmFjdGVyT2Zmc2V0OwpAQCAtMjY5MCw2ICsyNzEwLDIzIEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYg
dGV4CiAgICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51
ZSk7CiB9CiAKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpwcmV2aW91c1RleHRNYXJrZXIo
Y29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVhUZXh0TWFya2VyIHJlc3VsdDsK
KworICAgIFRleHRNYXJrZXJEYXRhIGRhdGEgeyBtYXJrZXIuZGF0YSgpIH07CisgICAgdGV4dE1h
cmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChkYXRhLCBtYXJrZXIpOworICAgIGlm
IChkYXRhLm5vZGUgIT0gbWFya2VyLm1fZGF0YS5ub2RlKSB7CisgICAgICAgIC8vIFNpbmNlIHRo
ZSBOb2RlIGNoYW5nZWQsIG5lZWQgdG8gdXBkYXRlIHRoZSBvYmplY3Qgd3JhcHBlci4KKyAgICAg
ICAgaWYgKGF1dG8qIG9iamVjdCA9IGdldE9yQ3JlYXRlKGRhdGEubm9kZSkpCisgICAgICAgICAg
ICBkYXRhLm9iamVjdFdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICB9CisKKyAgICBy
ZXN1bHQubV9heE9iamVjdENhY2hlID0gdGhpczsKKyAgICByZXN1bHQubV9kYXRhID0gZGF0YTsK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCiBOb2RlKiBBWE9iamVjdENhY2hlOjpuZXh0Tm9kZShO
b2RlKiBub2RlKSBjb25zdAogewogICAgIGlmICghbm9kZSkKQEAgLTI3OTEsMTIgKzI4MjgsMTIg
QEAgc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtl
ckRhdGFGb3JWaXNpYmxlUG9zaXRpb24oY28KICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
IAogICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0g
ICAgTm9kZSogZG9tTm9kZSA9IGRlZXBQb3MuYW5jaG9yTm9kZSgpOwotICAgIEFTU0VSVChkb21O
b2RlKTsKLSAgICBpZiAoIWRvbU5vZGUpCisgICAgTm9kZSogbm9kZSA9IGRlZXBQb3MuYW5jaG9y
Tm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUp
ICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQo
KSkKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgLy8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hv
ciB0eXBlIHJlZmVycmluZyB0byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwg
d2Ugc2hvdWxkCkBAIC0yODA4LDI3ICsyODQ1LDMxIEBAIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtl
ckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNv
CiAgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKICAgICB9CiAKLSAgICAvLyBmaW5kIG9y
IGNyZWF0ZSBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3IgdGhpcyBub2RlCi0gICAgQVhPYmpl
Y3RDYWNoZSogY2FjaGUgPSBkb21Ob2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAg
ICAvLyBGaW5kIG9yIGNyZWF0ZSBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBmb3IgdGhpcyBub2Rl
LgorICAgIGF1dG8qIGNhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAg
ICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwor
CisgICAgUmVmUHRyIG9iamVjdCA9IGNhY2hlLT5nZXRPckNyZWF0ZShub2RlKTsKKyAgICBpZiAo
IW9iamVjdCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMgbWVt
b3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUg
dGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlz
a3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgog
ICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNfY2Fz
dDx2b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0g
ICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0
TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKKworICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBv
YmplY3QtPm9iamVjdElEKCk7CisgICAgdGV4dE1hcmtlckRhdGEub2JqZWN0V3JhcHBlciA9IG9i
amVjdC0+d3JhcHBlcigpOworICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBub2RlOwogICAgIHRl
eHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsK
ICAgICB0ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBlID0gZGVlcFBvcy5hbmNob3JUeXBlKCk7CiAg
ICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zLmFmZmluaXR5KCk7CiAKICAg
ICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0
OwogICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZz
ZXQuc3RhcnRJbmRleDsKLQotICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UoZG9tTm9kZSk7CisgICAg
Ly8gVGV4dE1hcmtlckRhdGEuaWdub3JlZCBpcyBkZWxpYmVyYXRlbHkgbm90IGFzc2lnbmVkIGhl
cmUgc28gd2UgY2FuIHJldHVybiB2YWxpZCBUZXh0TWFya2VycyBmb3IgaWdub3JlZCBBWCBvYmpl
Y3RzLgorICAgIGNhY2hlLT5zZXROb2RlSW5Vc2Uobm9kZSk7CiAKICAgICByZXR1cm4gdGV4dE1h
cmtlckRhdGE7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCmluZGV4IDUzNWU3MTQyMjIxZi4uMTIxMjI2YTRlMDRiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDMsNiArNDMsNyBAQCBjbGFzcyBU
ZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYVGV4dE1hcmtlcjsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTEFyZWFFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxl
RWxlbWVudDsKQEAgLTU2LDYgKzU3LDcgQEAgY2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFZpc2li
bGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsKIAorLy8gRklYTUU6IE1vdmUgaW50byBBWFRleHRN
YXJrZXIgY2xhc3MuCiBzdHJ1Y3QgVGV4dE1hcmtlckRhdGEgewogICAgIEFYSUQgYXhJRDsKIApA
QCAtNjcsNiArNjksMTIgQEAgc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKICAgICBpbnQgY2hhcmFj
dGVyU3RhcnRJbmRleCB7IDAgfTsKICAgICBpbnQgY2hhcmFjdGVyT2Zmc2V0IHsgMCB9OwogICAg
IGJvb2wgaWdub3JlZCB7IGZhbHNlIH07CisKKyNpZiBQTEFURk9STShDT0NPQSkgfHwgUExBVEZP
Uk0oV0lOKQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBvYmplY3RXcmFwcGVyIHsg
bnVsbHB0ciB9OworI2VsaWYgVVNFKEFUU1BJKQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3RBdHNw
aSogb2JqZWN0V3JhcHBlciB7IG51bGxwdHIgfTsKKyNlbmRpZgogfTsKIAogc3RydWN0IENoYXJh
Y3Rlck9mZnNldCB7CkBAIC0xNDcsNiArMTU1LDcgQEAgY2xhc3MgQVhPYmplY3RDYWNoZSA6IHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxBWE9iamVjdENhY2hlPiB7CiAgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQVhPYmplY3RDYWNoZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVu
ZCBjbGFzcyBBWElzb2xhdGVkVHJlZTsKICAgICBmcmllbmQgV1RGOjpUZXh0U3RyZWFtJiBvcGVy
YXRvcjw8KFdURjo6VGV4dFN0cmVhbSYsIEFYT2JqZWN0Q2FjaGUmKTsKKyAgICBmcmllbmQgQVhU
ZXh0TWFya2VyOwogcHVibGljOgogICAgIGV4cGxpY2l0IEFYT2JqZWN0Q2FjaGUoRG9jdW1lbnQm
KTsKICAgICB+QVhPYmplY3RDYWNoZSgpOwpAQCAtMjM2LDcgKzI0NSw5IEBAIHB1YmxpYzoKICAg
ICBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9z
aXRpb25JblRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7CiAgICAgdm9p
ZCB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0
IENoYXJhY3Rlck9mZnNldCYpOwogICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAg
QVhUZXh0TWFya2VyIG5leHRUZXh0TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIHZv
aWQgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlciBwcmV2aW91c1Rl
eHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJik7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2li
bGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRh
Jik7CiAgICAgLy8gVXNlIGlnbm9yZU5leHROb2RlU3RhcnQvaWdub3JlUHJldmlvdXNOb2RlRW5k
IHRvIGRldGVybWluZSB0aGUgYmVoYXZpb3Igd2hlbiB3ZSBhcmUgYXQgbm9kZSBib3VuZGFyeS4g
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5jODIxOTY4MTJmZDAKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAK
QEAgLTAsMCArMSwyNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBB
TkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIkFYVGV4dE1hcmtlci5oIgorCisjaW5jbHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgor
I2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4
dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2F4T2JqZWN0Q2Fj
aGUpOworCisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgUG9zaXRpb24gZGVlcFBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCk7CisgICAgbV9kYXRhLm5vZGUgPSBkZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOwor
ICAgIEFTU0VSVChtX2RhdGEubm9kZSk7CisgICAgaWYgKCFtX2RhdGEubm9kZSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG1fZGF0YS5ub2RlKSAmJiBk
b3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqbV9kYXRhLm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgp
KQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEub2Zmc2V0ID0gZGVlcFBvc2l0aW9uLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CisgICAgbV9kYXRhLmFuY2hvclR5cGUgPSBkZWVwUG9z
aXRpb24uYW5jaG9yVHlwZSgpOworICAgIG1fZGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlv
bi5hZmZpbml0eSgpOworCisgICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQgPSBtX2F4T2JqZWN0Q2Fj
aGUtPmNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsK
KyAgICBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydElu
ZGV4OworICAgIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0
OworCisgICAgaW5pdGlhbGl6ZUFYT2JqZWN0V3JhcHBlcigpOworICAgIG1fYXhPYmplY3RDYWNo
ZS0+c2V0Tm9kZUluVXNlKG1fZGF0YS5ub2RlKTsKK30KKworQVhUZXh0TWFya2VyOjpBWFRleHRN
YXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFj
dGVyT2Zmc2V0KQorICAgIDogbV9heE9iamVjdENhY2hlKGNhY2hlKQoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUKG1fYXhPYmplY3RDYWNoZSk7CisKKyAgICBpZiAo
Y2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEu
bm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOworICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
PihtX2RhdGEubm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm1fZGF0YS5ub2Rl
KS5pc1Bhc3N3b3JkRmllbGQoKSkgeworICAgICAgICBtX2RhdGEuaWdub3JlZCA9IHRydWU7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDb252ZXJ0IHRvIHZpc2libGUgcG9zaXRp
b24uCisgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSBtX2F4T2JqZWN0Q2FjaGUtPnZpc2libGVQ
b3NpdGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXZp
c2libGVQb3NpdGlvbi5pc051bGwoKSkgeworICAgICAgICBtX2RhdGEub2Zmc2V0ID0gdmlzaWJs
ZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAg
ICAgICAgbV9kYXRhLmFuY2hvclR5cGUgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQo
KS5hbmNob3JUeXBlKCk7CisgICAgICAgIG1fZGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlv
bi5hZmZpbml0eSgpOworICAgIH0KKworICAgIG1fZGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0g
Y2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXg7CisgICAgbV9kYXRhLmNoYXJhY3Rlck9mZnNldCA9
IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7CisKKyAgICBpbml0aWFsaXplQVhPYmplY3RXcmFwcGVy
KCk7CisgICAgbV9heE9iamVjdENhY2hlLT5zZXROb2RlSW5Vc2UobV9kYXRhLm5vZGUpOworfQor
CitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgTm9kZSog
bm9kZSkKKyAgICA6IG1fYXhPYmplY3RDYWNoZShjYWNoZSkKK3sKKyAgICBBU1NFUlQoaXNNYWlu
VGhyZWFkKCkpOworICAgIEFTU0VSVChtX2F4T2JqZWN0Q2FjaGUpOworCisgICAgbV9kYXRhLm5v
ZGUgPSBub2RlOworICAgIGluaXRpYWxpemVBWE9iamVjdFdyYXBwZXIoKTsKKyAgICBtX2F4T2Jq
ZWN0Q2FjaGUtPnNldE5vZGVJblVzZShtX2RhdGEubm9kZSk7Cit9CisKK3ZvaWQgQVhUZXh0TWFy
a2VyOjppbml0aWFsaXplQVhPYmplY3RXcmFwcGVyKCkKK3sKKyAgICBSZWZQdHIgb2JqZWN0ID0g
bV9heE9iamVjdENhY2hlLT5nZXRPckNyZWF0ZShtX2RhdGEubm9kZSk7CisgICAgaWYgKCFvYmpl
Y3QpCisgICAgICAgIHJldHVybjsKKworICAgIG1fZGF0YS5heElEID0gb2JqZWN0LT5vYmplY3RJ
RCgpOworICAgIG1fZGF0YS5vYmplY3RXcmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7Cit9CisK
K3ZvaWQgQVhUZXh0TWFya2VyOjpzZXREYXRhKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwg
UG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSwgQWZmaW5pdHkgYWZmaW5pdHksIHVuc2ln
bmVkIGNoYXJhY3RlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIEFTU0VSVChtX2F4T2JqZWN0Q2FjaGUpOwor
CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2RhdGEubm9kZSA9IG5v
ZGU7CisgICAgbV9kYXRhLm9mZnNldCA9IG9mZnNldDsKKyAgICBtX2RhdGEuYW5jaG9yVHlwZSA9
IGFuY2hvclR5cGU7CisgICAgbV9kYXRhLmFmZmluaXR5ID0gYWZmaW5pdHk7CisKKyAgICBtX2Rh
dGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3RlclN0YXJ0SW5kZXg7CisgICAgbV9kYXRh
LmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldDsKKworICAgIGluaXRpYWxpemVBWE9i
amVjdFdyYXBwZXIoKTsKK30KKworQVhUZXh0TWFya2VyOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRp
b24oKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNO
dWxsKCkgfHwgbm9kZSgpLT5pc1BzZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsK
KworICAgIFBvc2l0aW9uIHBvc2l0aW9uOworICAgIGlmIChtX2RhdGEuYW5jaG9yVHlwZSA9PSBQ
b3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKQorICAgICAgICBwb3NpdGlvbiA9IFBv
c2l0aW9uKG5vZGUoKSwgbV9kYXRhLm9mZnNldCwgbV9kYXRhLmFuY2hvclR5cGUpOworICAgIGVs
c2UKKyAgICAgICAgcG9zaXRpb24gPSBQb3NpdGlvbihub2RlKCksIG1fZGF0YS5hbmNob3JUeXBl
KTsKKworICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb24ocG9zaXRpb24sIG1fZGF0
YS5hZmZpbml0eSk7CisgICAgYXV0byBkZWVwUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKTsKKyAgICBpZiAoZGVlcFBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4geyB9OworCisgICAgYXV0byogcmVuZGVyZXIgPSBkZWVwUG9zaXRpb24uZGVwcmVjYXRl
ZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
eyB9OworCisgICAgYXV0byogY2FjaGUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCk7CisgICAgaWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyhtX2Rh
dGEuYXhJRCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICByZXR1cm4gdmlzaWJsZVBvc2l0
aW9uOworfQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChpc0lnbm9yZWQoKSB8
fCBpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoYXJhY3Rlck9mZnNldCBy
ZXN1bHQobm9kZSgpLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCwgbV9kYXRhLmNoYXJhY3Rl
ck9mZnNldCk7CisgICAgLy8gV2hlbiB3ZSBhcmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBWaXNp
YmxlUG9zaXRpb24gaXMgdXBzdHJlYW0sIGl0IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBhdCB0
aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBsaW5lLgorICAgIC8vIFdlIHVzZSB0aGUgcHJldmlvdXMg
Q2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQgaXQgd2lsbCBtYXRjaCB0aGUgUmFuZ2UuCisgICAgaWYg
KG1fZGF0YS5hZmZpbml0eSA9PSBBZmZpbml0eTo6VXBzdHJlYW0pCisgICAgICAgIHJldHVybiBt
X2F4T2JqZWN0Q2FjaGUtPnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwgZmFsc2UpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK0FjY2Vzc2liaWxpdHlPYmplY3QqIEFYVGV4dE1hcmtl
cjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAg
aWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwor
ICAgIHJldHVybiBtX2F4T2JqZWN0Q2FjaGUtPmdldChub2RlKCkpOworfQorCitBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlciogQVhUZXh0TWFya2VyOjpvYmplY3RXcmFwcGVyKCkgY29uc3QKK3sK
KyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgcmV0dXJuIG1fZGF0YS5vYmplY3RXcmFwcGVyOworfQorCisjaWYgRU5BQkxFKFRS
RUVfREVCVUdHSU5HKQorU3RyaW5nIEFYVGV4dE1hcmtlcjo6ZGVidWdEZXNjcmlwdGlvbigpIGNv
bnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gIjxudWxsPiJfczsKKwor
ICAgIGF1dG8gc2VwYXJhdG9yID0gIiwgIjsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhub2RlKCkt
PmRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9mZnNldCAiLCBtX2Rh
dGEub2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiQW5jaG9yVHlwZSAiLCBtX2RhdGEuYW5j
aG9yVHlwZQorICAgICAgICAsIHNlcGFyYXRvciwgIkFmZmluaXR5ICIsIG1fZGF0YS5hZmZpbml0
eQorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3RlclN0YXJ0SW5kZXggIiwgbV9kYXRhLmNo
YXJhY3RlclN0YXJ0SW5kZXgKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJPZmZzZXQg
IiwgbV9kYXRhLmNoYXJhY3Rlck9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgImF4SUQgIiwg
YXhJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRvciwgImlzSWdub3JlZCAi
LCBpc0lnbm9yZWQoKQorICAgICk7Cit9CisjZW5kaWYKKworQVhUZXh0TWFya2VyUmFuZ2U6OkFY
VGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRp
b25SYW5nZSYgcmFuZ2UpCisgICAgOiBzdGFydChjYWNoZSwgcmFuZ2Uuc3RhcnQpCisgICAgLCBl
bmQoY2FjaGUsIHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAg
IEFTU0VSVChjYWNoZSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5n
ZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4m
IHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIXJhbmdl
KQorICAgICAgICByZXR1cm47CisKKyAgICBzdGFydCA9IEFYVGV4dE1hcmtlcihjYWNoZSwgY2Fj
aGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIHRydWUpKTsKKyAg
ICBlbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUsIGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zm
c2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhU
ZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25zdCBBWFRleHRNYXJrZXIm
IGUpCisgICAgOiBzdGFydChzKQorICAgICwgZW5kKGUpCit7Cit9CisKK0FYVGV4dE1hcmtlclJh
bmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBzdGFydCwgZW5kIH07Cit9CisKK3N0ZDo6
b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IEFYVGV4dE1hcmtlclJhbmdlOjpzaW1wbGVSYW5nZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8gc3RhcnRCb3Vu
ZGFyeVBvaW50ID0gbWFrZUJvdW5kYXJ5UG9pbnQoc3RhcnQpOworICAgIGF1dG8gZW5kQm91bmRh
cnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KGVuZCk7CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5
UG9pbnQgfHwgIWVuZEJvdW5kYXJ5UG9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgcmV0dXJuIHsgeyAqc3RhcnRCb3VuZGFyeVBvaW50LCAqZW5kQm91bmRhcnlQb2ludCB9
IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYjkyNzhkMGY0OTIwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAq
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgor
ICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCitjbGFzcyBBY2Nlc3NpYmlsaXR5T2JqZWN0Oworc3RydWN0IENoYXJhY3Rl
ck9mZnNldDsKKworY2xhc3MgQVhUZXh0TWFya2VyIHsKKyAgICBmcmllbmQgY2xhc3MgQVhPYmpl
Y3RDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgQVhUZXh0TWFya2VyUmFuZ2U7CitwdWJsaWM6Cisg
ICAgLy8gQ29uc3RydWN0b3JzCisgICAgQVhUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqLCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBBWFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSosIGNv
bnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiwg
Tm9kZSopOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYVGV4dE1hcmtlcihBWFRleHRNYXJr
ZXJSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2VyKCkgPSBkZWZhdWx0OworCisgICAgYm9v
bCBpc051bGwoKSBjb25zdDsKKyAgICBvcGVyYXRvciBWaXNpYmxlUG9zaXRpb24oKSBjb25zdDsK
KyAgICBvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKENP
Q09BKQorICAgIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHBsYXRmb3JtT2JqZWN0KCkgY29u
c3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZv
cm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFjY2Vzc2liaWxpdHlP
YmplY3QqIG9iamVjdCgpIGNvbnN0OworICAgIEFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyKiBv
YmplY3RXcmFwcGVyKCkgY29uc3Q7CisKKyAgICBUZXh0TWFya2VyRGF0YSBjb25zdCYgZGF0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVy
biBtX2RhdGEubm9kZTsgfQorICAgIEFYSUQgYXhJRCgpIGNvbnN0OworICAgIGJvb2wgaXNJZ25v
cmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlnbm9yZWQ7IH0KKworI2lmIEVOQUJMRShUUkVF
X0RFQlVHR0lORykKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworI2VuZGlm
CisKK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplQVhPYmplY3RXcmFwcGVyKCk7CisgICAg
dm9pZCBzZXREYXRhKE5vZGUqLCB1bnNpZ25lZCBvZmZzZXQsIFBvc2l0aW9uOjpBbmNob3JUeXBl
LCBBZmZpbml0eSwgdW5zaWduZWQgY2hhcmFjdGVyU3RhcnRJbmRleCwgdW5zaWduZWQgY2hhcmFj
dGVyT2Zmc2V0KTsKKworICAgIEFYT2JqZWN0Q2FjaGUqIG1fYXhPYmplY3RDYWNoZSB7IG51bGxw
dHIgfTsKKyAgICBUZXh0TWFya2VyRGF0YSBtX2RhdGE7Cit9OworCitjbGFzcyBBWFRleHRNYXJr
ZXJSYW5nZSB7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzLgorICAgIEFYVGV4dE1hcmtl
clJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOworICAg
IEFYVGV4dE1hcmtlclJhbmdlKEFYT2JqZWN0Q2FjaGUqLCBjb25zdCBzdGQ6Om9wdGlvbmFsPFNp
bXBsZVJhbmdlPiYpOworICAgIEFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IEFYVGV4dE1hcmtlciYs
IGNvbnN0IEFYVGV4dE1hcmtlciYpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRNYXJr
ZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJlZik7CisjZW5kaWYKKyAgICBBWFRleHRNYXJrZXJS
YW5nZSgpID0gZGVmYXVsdDsKKworICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvblJhbmdlKCkg
Y29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2ltcGxlUmFuZ2UoKSBjb25z
dDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VS
ZWY+IHBsYXRmb3JtT2JqZWN0KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmFu
Z2VSZWYoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7IH0K
KyNlbmRpZgorCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFzdGFydC5pc051
bGwoKSAmJiAhZW5kLmlzTnVsbCgpOyB9CisKKyAgICBBWFRleHRNYXJrZXIgc3RhcnQ7CisgICAg
QVhUZXh0TWFya2VyIGVuZDsKK307CisKK2lubGluZSBib29sIEFYVGV4dE1hcmtlcjo6aXNOdWxs
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1fYXhPYmplY3RDYWNoZSB8fCAhbm9kZSgpIHx8ICFt
X2F4T2JqZWN0Q2FjaGUtPmlzTm9kZUluVXNlKG5vZGUoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2Ev
QVhUZXh0TWFya2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29h
L0FYVGV4dE1hcmtlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMC4uYzQwYzE5ZTllOGFiCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpAQCAtMCwwICsxLDk1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAq
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgi
CisKKyNpZiBQTEFURk9STShNQUMpCisjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5oIgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgorI2Vsc2Ug
Ly8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVySU9TLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRNYXJr
ZXI6OkFYVGV4dE1hcmtlcihBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlclJlZikKK3sKKyAgICBp
ZiAoIXRleHRNYXJrZXJSZWYpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRGT1JNKE1BQykK
KyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJlZikgPT0gQVhUZXh0TWFya2VyR2V0
VHlwZUlEKCkpOworICAgIGlmIChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSAhPSBBWFRleHRN
YXJrZXJHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKEFYVGV4dE1h
cmtlckdldExlbmd0aCh0ZXh0TWFya2VyUmVmKSA9PSBzaXplb2YobV9kYXRhKSk7CisgICAgaWYg
KEFYVGV4dE1hcmtlckdldExlbmd0aCh0ZXh0TWFya2VyUmVmKSAhPSBzaXplb2YobV9kYXRhKSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgbWVtY3B5KCZtX2RhdGEsIEFYVGV4dE1hcmtlckdldEJ5
dGVQdHIodGV4dE1hcmtlclJlZiksIHNpemVvZihtX2RhdGEpKTsKKyNlbHNlIC8vIFBMQVRGT1JN
KElPU19GQU1JTFkpCisgICAgbWVtY3B5KCZtX2RhdGEsIHRleHRNYXJrZXJSZWYsIHNpemVvZiht
X2RhdGEpKTsKKyNlbmRpZgorCisgICAgQWNjZXNzaWJpbGl0eTo6cGVyZm9ybUZ1bmN0aW9uT25N
YWluVGhyZWFkKFt0aGlzXSAoKSB7CisgICAgICAgIGlmICghbm9kZSgpKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIG1fYXhPYmplY3RDYWNoZSA9IG5vZGUoKS0+ZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCk7CisgICAgfSk7Cit9CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+
IEFYVGV4dE1hcmtlcjo6cGxhdGZvcm1PYmplY3QoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1B
QykKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVm
YXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOworI2Vsc2UgLy8g
UExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZikmbV9kYXRh
OworI2VuZGlmCit9CisKK0FYSUQgQVhUZXh0TWFya2VyOjpheElEKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gb2JqZWN0V3JhcHBlcigpLmlkZW50aWZpZXI7Cit9CisKKyNpZiBQTEFURk9STShNQUMp
CitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VS
ZWYgdGV4dE1hcmtlclJhbmdlUmVmKQorICAgIDogc3RhcnQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5
U3RhcnRNYXJrZXIodGV4dE1hcmtlclJhbmdlUmVmKSkKKyAgICAsIGVuZChBWFRleHRNYXJrZXJS
YW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlUmVmKSkKK3sKKyAgICBBU1NFUlQoQ0ZH
ZXRUeXBlSUQodGV4dE1hcmtlclJhbmdlUmVmKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJ
RCgpKTsKK30KKworUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBBWFRleHRNYXJrZXJS
YW5nZTo6cGxhdGZvcm1PYmplY3QoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdENGKEFYVGV4
dE1hcmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQKKyAgICAgICAgLCBhZG9wdENG
KEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZz
dGFydC5tX2RhdGEsIHNpemVvZihzdGFydC5tX2RhdGEpKSkuZ2V0KCkKKyAgICAgICAgLCBhZG9w
dENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgq
KSZlbmQubV9kYXRhLCBzaXplb2YoZW5kLm1fZGF0YSkpKS5nZXQoKQorICAgICkpOworfQorI2Vu
ZGlmIC8vIFBMQVRGT1JNKE1BQykKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA0NTQ4ZTJkMmUwNGEuLjk0YjM4NjJl
YjkyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNj
ZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTMzLDYg
KzMzLDcgQEAKIAogI2ltcG9ydCAiQVhMb2dnZXIuaCIKICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUu
aCIKKyNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFiZWwuaCIKICNpbXBvcnQgIkFjY2Vz
c2liaWxpdHlMaXN0LmgiCkBAIC03MTcsMzggKzcxOCwyNiBAQCBzdGF0aWMgc3RkOjpwYWlyPHN0
ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmlsaXR5U2VhcmNoRGlyZWN0aW9uPiBh
Y2NlcwogCiAjcHJhZ21hIG1hcmsgVGV4dCBNYXJrZXIgaGVscGVycwogCi1zdGF0aWMgUmV0YWlu
UHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhP
YmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorc3Rh
dGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFya2VyKEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsKICAgICBpZiAoIWNhY2hl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJr
ZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQo
dGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0
YS5heElEKQorCisgICAgYXV0byBuZXh0TWFya2VyID0gY2FjaGUtPm5leHRUZXh0TWFya2VyKG1h
cmtlcik7CisgICAgaWYgKCFuZXh0TWFya2VyLmF4SUQoKS5pc1ZhbGlkKCkpCiAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9j
YXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1h
cmtlckRhdGEpKSk7CisgICAgcmV0dXJuIG5leHRNYXJrZXIucGxhdGZvcm1PYmplY3QoKTsKIH0K
IAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlckZv
ckNoYXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlv
dXNUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1h
cmtlcikKIHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0
YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZz
ZXQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkp
KTsKLX0KIAotLSAoUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pbmV4dFRleHRNYXJrZXJGb3JD
aGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAg
cmV0dXJuIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2Jq
ZWN0LT5heE9iamVjdENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7Ci19Ci0KLS0gKFJldGFpblB0
cjxBWFRleHRNYXJrZXJSZWY+KXByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDoo
Q2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1cm4gcHJldmlvdXNU
ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVj
dENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7CisgICAgYXV0byBwcmV2aW91c01hcmtlciA9IGNh
Y2hlLT5wcmV2aW91c1RleHRNYXJrZXIobWFya2VyKTsKKyAgICBpZiAoIXByZXZpb3VzTWFya2Vy
LmF4SUQoKS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgcmV0dXJuIHByZXZp
b3VzTWFya2VyLnBsYXRmb3JtT2JqZWN0KCk7CiB9CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBt
ZXRob2Qgc2luY2UgY2xpZW50cyBzaG91bGQgbm90IG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZCBh
bmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgpAQCAtMzM3
MSwyNCArMzM2MCwyNSBAQCAtIChBWFRleHRNYXJrZXJSYW5nZVJlZilsaW5lVGV4dE1hcmtlclJh
bmdlRm9yVGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVmKXRleHRNYQogICAgICAgICBpZiAoIWNh
Y2hlKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBhdXRvIHZpc2libGVQb3Np
dGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwor
ICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworLy8gICAgICAgIGF1dG8g
dmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4
dE1hcmtlcik7CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJh
bmdlOwogICAgICAgICBzd2l0Y2ggKHRleHRVbml0KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6
OkxpbmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3Qt
PmxpbmVSYW5nZUZvclBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNp
YmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKG1h
cmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGVmdExp
bmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxl
ZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAg
IHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9z
aXRpb25SYW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4
dFVuaXQ6OlJpZ2h0TGluZToKLSAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFj
a2luZ09iamVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9u
KTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+cmln
aHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB0ZXh0TWFya2VyUmFu
Z2VGcm9tVmlzaWJsZVBvc2l0aW9ucyhjYWNoZSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQs
IHZpc2libGVQb3NpdGlvblJhbmdlLmVuZCk7CisgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXJS
YW5nZShjYWNoZSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2UpLnBsYXRmb3JtT2JqZWN0KCk7CiAgICAg
fSk7CiB9CiAKQEAgLTM2ODIsMjUgKzM2NzIsMTkgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1F
TlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiAoaWQpW3NlbGYgX3RleHRNYXJrZXJGb3JJbmRl
eDpbbnVtYmVyIGludGVnZXJWYWx1ZV1dOwogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFj
Y2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4o
WyZ0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRh
aW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRT
ZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVj
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvKiBheE9i
amVjdCA9IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4
T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0KQot
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGlmIChheE9iamVjdC0+
aXNBdHRhY2htZW50KCkgJiYgW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQot
ICAgICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmll
d107CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgIGF1
dG8qIHdyYXBwZXIgPSBtYXJrZXIub2JqZWN0V3JhcHBlcigpOworICAgICAgICBpZiAoIXdyYXBw
ZXIpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPndyYXBwZXIoKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChpZCBhdHRhY2htZW50Vmll
dyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcpCisgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVu
dFZpZXc7CisgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAogICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50Il0pIHsK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVG
cm9tTWFpblRocmVhZDxpZD4oWyZ1aUVsZW1lbnRdICgpIC0+IFJldGFpblB0cjxpZD4gewotICAg
ICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50Lmdl
dCgpLT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC5nZXQoKS0+ZWxlbWVudFJhbmdlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50
LT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC0+ZWxlbWVudFJhbmdlKCkpOwogICAgICAgICB9
KTsKICAgICB9CiAKQEAgLTM3NTEsNyArMzczNSw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlckZv
clZpc2libGVQb3NpdGlvbihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tpbmdP
YmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpOworICAgICAgICAg
ICAgcmV0dXJuIChpZClBWFRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCBiYWNraW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9pbnQpKS5w
bGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAt
Mzg0MCw5ICszODI0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAg
ICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0SW5kZXg6
MF0pCiAgICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0
SW5kZXg6MV0pKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZh
cnJheV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRN
YXJrZXJSYW5nZUZyb21NYXJrZXJzKChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5k
ZXg6MF0sIChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pLmdldCgpOwot
ICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlclJhbmdlIHsgeyAo
QVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjBdIH0sIHsgKEFYVGV4dE1hcmtl
clJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSB9IH0ucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVs
ZWFzZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFY
VGV4dE1hcmtlclJhbmdlRm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiXSkgewpAQCAtMzg4MSw4ICsz
ODY0LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAg
ICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAg
IENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0
TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVybiBicmlkZ2VfaWRf
Y2FzdChbcHJvdGVjdGVkU2VsZiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFy
YWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtl
cik7CisgICAgICAgICAgICByZXR1cm4gbmV4dFRleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJp
ZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM4OTYsOCArMzg3
OSw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBD
aGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1h
cmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICByZXR1cm4gYnJpZGdlX2lkX2Nh
c3QoW3Byb3RlY3RlZFNlbGYgcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNo
YXJhY3Rlck9mZnNldF0pOworICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFy
a2VyKTsKKyAgICAgICAgICAgIHJldHVybiBwcmV2aW91c1RleHRNYXJrZXIoY2FjaGUsIG1hcmtl
cikuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5Nzgs
MjYgKzM5NjEsMTMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAg
ICAvLyBVc2VkIG9ubHkgYnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFz
ZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBh
dXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7
Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdl
KGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLQotICAg
ICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tpbmdP
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIHRydWUpOwotICAgICAgICB9KTsKKyAgICAg
ICAgQVhUZXh0TWFya2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2Ug
fTsKKyAgICAgICAgcmV0dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5zdGFydC5wbGF0Zm9ybU9i
amVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVh
bFRvU3RyaW5nOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAg
ICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFp
blRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIo
c2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09i
amVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAg
aWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAg
ICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0
LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgICAgICByZXR1cm4g
KGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RD
YWNoZSgpLCByYW5nZSwgZmFsc2UpOwotICAgICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2Vy
UmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0
dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5lbmQucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIAogI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQt
bWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1ZDMzZGFjYjJkM2YuLjUwNDYwMjU4ZmMzMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1t
YXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Vs
ZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwxNyArMSwxNCBAQAotdGV4
dCBoZXJlCi10ZXh0IGJsb2NrCi10ZXh0IGhlcmUKIFRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2Vy
IHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0
IG1hcmtlci4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCitQQVNTOiB0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aChyYW5nZSkgPT09IDEwCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzog
dGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRleHQp
ID09PSB0cnVlCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSkgPT09
IDEwCitQQVNTOiBuZXdSYW5nZS5pc0VxdWFsKHJhbmdlKSA9PT0gdHJ1ZQogCi1QQVNTIHRleHQu
dGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIGlzIDEwCi1QQVNTIHRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRl
eHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
ZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFu
Z2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIGlzIDEwCi1QQVNTIG5ld01hcmtlclJhbmdlLmlzRXF1
YWwodGV4dE1hcmtlclJhbmdlMSkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK3RleHQgaGVyZQordGV4dCBibG9jawordGV4dCBoZXJl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10
ZXh0LW1hcmtlci5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1m
b3ItdGV4dC1tYXJrZXIuaHRtbAppbmRleCBkNDkzNmFkMjJkMTguLjM0MGFiMWUxOTgwYyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1t
YXJrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZv
ci10ZXh0LW1hcmtlci5odG1sCkBAIC0xLDUxICsxLDQyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08
Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAogdGV4dCBoZXJlCi08ZGl2IGlkPSJ0ZXh0MSIgdGFi
aW5kZXg9IjAiPnRleHQgYmxvY2s8L2Rpdj4KKzxkaXYgaWQ9InRleHQxIj50ZXh0IGJsb2NrPC9k
aXY+CiB0ZXh0IGhlcmUKIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRo
ZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVu
IGdpdmVuIGEgdGV4dCBtYXJrZXIuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7CisgICAgICAgIGxldCB0ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIHRl
eHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2
ZW4gYSB0ZXh0IG1hcmtlci5cblxuIjsKIAotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXh0MSIpLmZvY3VzKCk7Ci0gICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQxIikuY2hpbGRBdEluZGV4
KDApOwogCi0gICAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBub2RlLgotICAgICAgICAg
IHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgwKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBj
YW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgZWxlbWVudCdzIHJhbmdlLgorICAgICAg
ICB2YXIgcmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CisgICAg
ICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5n
ZSkiLCAiMTAiKTsKKyAgICAgICAgdmFyIHN0YXJ0ID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UocmFuZ2UpOwogCi0gICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4g
Z2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRoaXMgcmFuZ2UuCi0gICAgICAgICAgdmFyIHRleHRN
YXJrZXJSYW5nZTEgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAg
ICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZTEpIiwgIjEwIik7Ci0gICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMSk7CisgICAgICAgIC8vIENo
ZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0
aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KS5pc0VxdWFsKHRleHQpIiwg
InRydWUiKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxs
IGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KLSAgICAgICAg
ICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0
YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtl
ciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50LgorICAgICAgICB2
YXIgZW5kID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAg
ICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBH
ZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNrIHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxl
bWVudC4KLSAgICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
dGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFs
KHRleHQpIik7CisgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFy
dCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5ndGguCisgICAgICAgIHZhciBuZXdS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydCwgZW5kKTsKKyAgICAg
ICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1Jh
bmdlKSIsICIxMCIpOwogCi0gICAgICAgICAgLy8gTWFrZSBhIG1hcmtlciByYW5nZSBvdXQgb2Yg
dGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hlY2sgdGhlIGxlbmd0aAotICAgICAgICAg
IHZhciBuZXdNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFy
dE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIiwgIjEwIik7CisgICAgICAgIC8vIEFuZCBtYWtl
IHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKKyAg
ICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoIm5ld1JhbmdlLmlzRXF1YWwocmFuZ2UpIiwgInRy
dWUiKTsKIAotICAgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1h
cmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKLSAgICAgICAgICBzaG91bGRCZVRydWUoIm5ld01h
cmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkiKTsKKyAgICAgICAgZGVidWcodGVz
dE91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9t
LWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dApp
bmRleCAwMmM1NzY1OGE1NmYuLjhmYzVmZDcyNDhiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXBy
ZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMTMg
QEAKLUZpcnN0IGxpbmUgb2YgdGV4dAotYnV0dG9uCi1UaGlyZCBsaW5lIG9mIHRleHQKIFRoaXMg
dGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20g
YW4gaWdub3JlZCBlbGVtZW50LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNTOiBl
bGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdGaXJzdCBsaW5lIG9m
IHRleHQnCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09
ICdidXR0b24nCitQQVNTOiByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTog
VGhpcmQgbGluZSBvZiB0ZXh0JworUEFTUzogcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0g
J0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCcKIAotCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnRmlyc3QgbGluZSBvZiB0ZXh0JwotUEFT
UyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpIGlzICdidXR0b24n
Ci1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IFRoaXJkIGxpbmUg
b2YgdGV4dCcKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogRmly
c3QgbGluZSBvZiB0ZXh0JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
Lmh0bWwKaW5kZXggNmVhODE4N2MwMjI2Li45NWQ3YTQ2Y2VjZDMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVs
ZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJl
ZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKQEAgLTEsNTAgKzEsNDcgQEAKIDwhRE9D
VFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3Njcmlw
dD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCis8ZGl2IGlkPSJjb250YWlu
ZXIiIHJvbGU9Imdyb3VwIj4KIDxkaXYgaWQ9InRlc3QiPkZpcnN0IGxpbmUgb2YgdGV4dDxicj4K
IDxidXR0b24gaWQ9ImJ1dHRvbiIgYXJpYS1oaWRkZW49InRydWUiPmJ1dHRvbjwvYnV0dG9uPgog
PGJyPlRoaXJkIGxpbmUgb2YgdGV4dDwvZGl2PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4K
LTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVs
ZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMoKTsKLSAgICAgICAgdmFyIGNvbnRhaW5lckVsZW1l
bnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgCisg
ICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9y
IGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQuXG5cbiI7CisKKyAg
ICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAgICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXN0IikuY2hpbGRBdEluZGV4
KDApOwotICAgICAgICB2YXIgbWFya2VyUmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAgIHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ0ZpcnN0IGxpbmUgb2YgdGV4dCciKTsKLSAg
ICAgICAgCi0gICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBs
aW5lIHRleHQgbWFya2VyIGNhbGxzCi0gICAgICAgIHZhciB0ZXh0TWFya2VyID0gZWxlbWVudC5l
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKTsKLSAgICAgICAgdGV4
dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHRl
eHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB2
YXIgbGluZVJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcih0
ZXh0TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKGxpbmVSYW5nZSkiLCAiJ2J1dHRvbiciKTsKLSAgICAgICAgCi0gICAgICAgIHRleHRN
YXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFu
Z2UpOwotICAgICAgICB2YXIgc3RhcnRFbGVtZW50ID0gZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmFu
Z2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdl
KSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworCisgICAgICAgIC8vIFRyeSB0byBnZXQgdGhl
IGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzLgorICAgICAgICB2
YXIgbWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdl
KTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAg
ICAgICBtYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIHJh
bmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihtYXJrZXIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShyYW5nZSkiLCAiJ2J1dHRvbiciKTsKKworICAgICAgICBtYXJrZXIgPSBlbGVtZW50LnN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAgIHZhciBzdGFydEVs
ZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIp
OworCiAgICAgICAgIC8vIFNlYXJjaCBmb3J3YXJkCi0gICAgICAgIHZhciByZXN1bHRFbGVtZW50
ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUg
b2YgdGV4dCciKTsKLSAgICAgICAgCisgICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFp
bmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFu
eVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJy
ZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQn
Iik7CisKICAgICAgICAgLy8gU2VhcmNoIGJhY2t3YXJkCi0gICAgICAgIHJlc3VsdEVsZW1lbnQg
PSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hv
dWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUg
b2YgdGV4dCciKTsKKyAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBmYWxzZSwgIkFYQW55VHlwZVNlYXJjaEtl
eSIsICIiLCBmYWxzZSk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQu
c3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGFpbmVyIikuc3R5bGUudmlzaWJpbGl0eSA9
ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KLSAgICAgICAgCiA8L3Nj
cmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwv
c2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJr
ZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBjZGNj
NzdjM2M4NzEuLjZhN2QyZjc4YTNlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4
cGVjdGVkLnR4dApAQCAtMSwyODEgKzEsMjA3IEBACi1UaGluayBkaWZmZXJlbnQgQXBwbGUKLQot
Ym9sZCBpdGFsaWMKLXVuZGVybGluZSBsYXN0IQotCi1IZWxsbyBXb3JsZCEKLVRoaXMgdGVzdCB0
aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LgotCi1PbiBzdWNjZXNz
LCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAi
VEVTVCBDT01QTEVURSIuCi0KK1RoaXMgdGVzdHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5n
ZSB3b3JrcyBwcm9wZXJseS4KIAogY29udGVudCBsZW5ndGg6IDY1CiBBbGwgcmFuZ2VzIGZyb20g
aW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4dDoKLTAKLScnCi0xCi0nVCcKLTIK
LSdUaCcKLTMKLSdUaGknCi00Ci0nVGhpbicKLTUKLSdUaGluaycKLTYKLSdUaGluayAnCi03Ci0n
VGhpbmsgZCcKLTgKLSdUaGluayBkaScKLTkKLSdUaGluayBkaWYnCi0xMAotJ1RoaW5rIGRpZmYn
Ci0xMQotJ1RoaW5rIGRpZmZlJwotMTIKLSdUaGluayBkaWZmZXInCi0xMwotJ1RoaW5rIGRpZmZl
cmUnCi0xNAotJ1RoaW5rIGRpZmZlcmVuJwotMTUKLSdUaGluayBkaWZmZXJlbnQnCi0xNgotJ1Ro
aW5rIGRpZmZlcmVudCAnCi0xNwotJ1RoaW5rIGRpZmZlcmVudCBBJwotMTgKLSdUaGluayBkaWZm
ZXJlbnQgQXAnCi0xOQotJ1RoaW5rIGRpZmZlcmVudCBBcHAnCi0yMAotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsJwotMjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUnCi0yMgotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZScKLTIzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiswICcnCisxICdUJworMiAnVGgn
CiszICdUaGknCis0ICdUaGluJworNSAnVGhpbmsnCis2ICdUaGluayAnCis3ICdUaGluayBkJwor
OCAnVGhpbmsgZGknCis5ICdUaGluayBkaWYnCisxMCAnVGhpbmsgZGlmZicKKzExICdUaGluayBk
aWZmZScKKzEyICdUaGluayBkaWZmZXInCisxMyAnVGhpbmsgZGlmZmVyZScKKzE0ICdUaGluayBk
aWZmZXJlbicKKzE1ICdUaGluayBkaWZmZXJlbnQnCisxNiAnVGhpbmsgZGlmZmVyZW50ICcKKzE3
ICdUaGluayBkaWZmZXJlbnQgQScKKzE4ICdUaGluayBkaWZmZXJlbnQgQXAnCisxOSAnVGhpbmsg
ZGlmZmVyZW50IEFwcCcKKzIwICdUaGluayBkaWZmZXJlbnQgQXBwbCcKKzIxICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUnCisyMiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlJworMjMgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiAnCi0yNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjQgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBiJwotMjUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI1ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm8nCi0yNgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjYg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2wnCi0yNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMjcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkJwotMjgKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzI4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCAnCi0yOQotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMjkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGknCi0z
MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0JwotMzEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMxICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGEnCi0zMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzIgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWwnCi0zMwotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMzMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpJwotMzQKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzM0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMn
Ci0zNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogJwotMzYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM2ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHUnCi0zNwotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorMzcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW4nCi0zOAot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kJwotMzkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM5ICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGUnCi00MAotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNDAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXInCi00
MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsJwotNDIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQyICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGknCi00MwotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorNDMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dW5kZXJsaW4nCi00NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDQgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lJwotNDUKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzQ1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGlu
ZSAnCi00NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDYgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGwnCi00NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNDcgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
JwotNDgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXMnCi00OQotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNDkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
c3QnCi01MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTAgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwotNTEKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzUxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGlu
ZSBsYXN0IScKLTUyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MiAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8JwotNTMKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzUzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIJwotNTQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzU0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0
IQogCiDvv7xIZScKLTU1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NSAnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsJwotNTYK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsJwotNTcKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzU3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVy
bGluZSBsYXN0IQogCiDvv7xIZWxsbycKLTU4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1OCAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog
77+8SGVsbG8gJwotNTkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU5ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXJwot
NjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXbycKLTYxCi0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis2MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29yJwotNjIKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzYyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGlu
ZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsJwotNjMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYz
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQog
CiDvv7xIZWxsbyBXb3JsZCcKLTY0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2NCAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKQEAgLTI5MSw3
ICsyMTcsMTEgQEAgdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxkIScKICcnCisKIFBB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisKKworCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdl
LWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtl
ci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAppbmRleCBjZTFjYmYyZWVmZTMuLmMzMDQ5ODY3YjA1MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5n
ZS1mb3ItcmFuZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCkBAIC0xLDkgKzEsOSBAQAogPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxi
b2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiA8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+
CiAgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVudDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBw
bGU8L2E+PC9wPgpAQCAtMTEsMzYgKzExLDM0IEBACiAgICAgPGJ1dHRvbj5IZWxsbyBXb3JsZCE8
L2J1dHRvbj4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdGhh
dCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4iKTsKLQogICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgYXhFbGVtZW50ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7Ci0g
ICAgICAgIGNvbnRlbnRUZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudChheEVsZW1lbnQpOwotICAgICAgICB0ZXh0TGVuZ3RoID0gYXhFbGVtZW50LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjb250ZW50VGV4dE1hcmtlclJhbmdlKS5sZW5ndGg7Ci0g
ICAgICAgIGRlYnVnKCJjb250ZW50IGxlbmd0aDogIiArIHRleHRMZW5ndGgpOworICAgICAgICBs
ZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3Jr
cyBwcm9wZXJseS5cblxuIjsKIAotICAgICAgICBkZWJ1ZygiQWxsIHJhbmdlcyBmcm9tIGluZGV4
IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Iik7Ci0gICAgICAgIGZvciAoaSA9IDA7
IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGRlYnVnKGkpOwotICAgICAgICAg
ICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAs
IGkpOwotICAgICAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgbGV0IGNvbnRlbnQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsK
KyAgICAgICAgbGV0IHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGNv
bnRlbnQpOworICAgICAgICBsZXQgY29udGVudExlbmd0aCA9IGNvbnRlbnQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHJhbmdlKS5sZW5ndGg7CisgICAgICAgIG91dHB1dCArPSBgY29udGVudCBs
ZW5ndGg6ICR7Y29udGVudExlbmd0aH1cbmA7CisKKyAgICAgICAgb3V0cHV0ICs9ICJBbGwgcmFu
Z2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4dDpcbiI7CisgICAg
ICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZW50TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHJh
bmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsKKyAgICAgICAgICAg
IG91dHB1dCArPSBgJHtpfSAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5n
ZSl9J1xuYDsKICAgICAgICAgfQogCi0gICAgICAgIGRlYnVnKCJHZXQgdGhlIHJhbmdlIGZvciB0
aGUgd29yZCBBcHBsZToiKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVt
ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAg
ICAgICAgb3V0cHV0ICs9ICJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZTpcbiI7Cisg
ICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7Cisg
ICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFu
Z2UpfSdcbmA7CisKKyAgICAgICAgb3V0cHV0ICs9ICJPdXQgb2YgcmFuZ2UgdmFsdWVzOlxuIjsK
KyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7
CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
cmFuZ2UpfSdcbmA7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JS
YW5nZSg3MCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250ZW50LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKIAotICAgICAgICBkZWJ1ZygiT3V0IG9mIHJhbmdl
IHZhbHVlczoiKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJr
ZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7Ci0gICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7Ci0gICAgICAg
IHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwg
MTAwKTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRl
YnVnKG91dHB1dCk7CiAgICAgfQogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAppbmRl
eCA5MTVkNTY5YzBlZDAuLmQ4NGI4YjIwMTc0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0
aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDcgQEAKLVRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIHByb3RlY3RzIGFnYWlu
c3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVu
c3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy4KIAotT24gc3Vj
Y2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQg
YnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVh
bChlbGVtZW50KSA9PT0gdHJ1ZQogCi0KLVBBU1MgY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNF
cXVhbCh0ZXh0RWxlbWVudCkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9k
ZS5odG1sCmluZGV4IGM3MjU3ZDU4NWQxYS4uNjJlYjRlMzUyMmViIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0
LW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBv
c2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbApAQCAtMSw0MCArMSwzMSBAQAogPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4K
LTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0
PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKLTxkaXYgaWQ9ImNvbnRlbnQi
IHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6MjAwcHg7Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiIHN0
eWxlPSJ3aWR0aDoyMDBweDsiPgogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIAogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4KIDwvZGl2PgogCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgcHJvdGVjdHMg
YWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24g
dG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLiIpOwot
CiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBsZXQg
b3V0cHV0ID0gIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3Igdmlz
aWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwg
UmVuZGVyVGV4dCBvYmplY3RzLlxuXG4iOwogCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoImNvbnRlbnQiKS5mb2N1cygpOwotICAgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhl
IHRleHQgbWFya2VyIGF0IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCi0gICAgICAg
ICAgdmFyIG1hcmtlckF0UG9pbnQgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50
LnggKyBjb250ZW50LndpZHRoLzIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVpZ2h0LzIpOwotICAg
ICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOworICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAg
ICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jh
c2guCisgICAgICAgIHZhciBtYXJrZXIgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250
ZW50LnggKyBjb250ZW50LndpZHRoIC8gMiwgY29udGVudC55ICsgY29udGVudC5oZWlnaHQgLyAy
KTsKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUg
d2Ugd2FudGVkLgorICAgICAgICB2YXIgZWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImNv
bnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwoZWxlbWVudCkiLCAidHJ1ZSIpOwogCi0gICAg
ICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2Fu
dGVkLgotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOwotICAgICAgICAgIHNob3VsZEJlVHJ1
ZSgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkiKTsKKyAgICAg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0g
ImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQot
PHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0Pgog
PC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1s
CmluZGV4IDVlZDNiZDBkMDZkZS4uMzhmMTNlZDdhM2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQuaHRtbApAQCAtMSwxNSArMSwxNyBAQAogPCFET0NUWVBFIEhUTUwgUFVC
TElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPG1ldGEgY2hh
cnNldD0iVVRGLTE2Ij4KIDwvaGVhZD4KIDxzdHlsZT4KIC51c2Vyc2VsZWN0IHsgdXNlci1zZWxl
Y3Q6IG5vbmU7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KIDwvc3R5bGU+Ci08Ym9keSBp
ZD0iYm9keSI+Cis8Ym9keT4KIAotPGRpdiBpZD0idGV4dCIgdGFiaW5kZXg9IjAiPnRleHQ8L2Rp
dj4KKzxkaXYgaWQ9ImNvbnRlbnQiPgorPGRpdiBpZD0idGV4dCI+dGV4dDwvZGl2PgogPGJyPgog
dGV4dDEKIApAQCAtMzIsMjkgKzM0LDQ1IEBAIGYKIDxwIGlkPSJ0ZXh0NiI+YSAgICAgYjwvcD4K
IAogPHAgaWQ9InRleHQ3Ij5hdWRpbzxhdWRpbyBjb250cm9scz48L2F1ZGlvPmZpbGU8L3A+Ci0K
LTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Rp
dj4KIAogPHNjcmlwdD4KKyAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtl
ciwgY3VycmVudE1hcmtlciwgb2JqKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgeworICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwor
ICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6
IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAg
ICAgICB9OworICAgIH0KKworICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZpb3Vz
VGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0g
b2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAgICAg
ICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9OworICAgIH0KIAotICAgIGRl
c2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0
aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAgIHZhciB0ZXh0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0g
ICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgdGV4dCA9IHRleHQu
Y2hpbGRBdEluZGV4KDApOwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRl
c3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50
ZWQgY29ycmVjdGx5LlxuXG4iOworCisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0IikuY2hpbGRBdEluZGV4KDApOwor
CiAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQvZW5kIG1hcmtlciBm
b3IgdGhpcyByYW5nZS4KICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwotICAgICAgICAKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtl
clJhbmdlKSIsICI0Iik7CisKICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgdmFy
IGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIHNo
b3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFy
a2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSIsICJ0cnVlIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIs
ICJ0cnVlIik7CisKICAgICAgICAgLy8gQ2hlY2sgbmV4dCB0ZXh0IG1hcmtlci4gKEFkdmFuY2Ug
NSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHZhciBjdXJyZW50
TWFya2VyLCBwcmV2aW91c01hcmtlciwgbWFya2VyUmFuZ2U7OwogICAgICAgICB2YXIgcmVzdWx0
ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwpAQCAtNjIs
NTggKzgwLDU3IEBAIGYKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50Owog
ICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2
aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIHZhciBuZXdsaW5lID0gJ1xuJzsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOwor
CiAgICAgICAgIC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kZSBh
dCAidCIgaW4gInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01h
cmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVz
dWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAg
ICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZp
b3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKLSAgICAgICAgCisgICAg
ICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSIsICIndCciKTsKKwogICAgICAgICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtl
ci4gKFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJy
Pi4pCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3Vz
OwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtl
clJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBj
dXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAibmV3bGluZSIpOworCiAgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgbW9yZSBj
aGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQiLgog
ICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlcik7CiAgICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5h
bWUgPT0gIm1hYyIpCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKKyAgICAgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICIndCcgKyBuZXdsaW5lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7Cisg
ICAgICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0
aCByZXBsYWNlZCBub2RlCiAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKICAgICAgICAgdmFyIHRleHRNYXJr
ZXJSYW5nZTIgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Uy
KSIsICI1Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnRleHRNYXJrZXJSYW5n
ZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7CiAgICAgICAgIHZhciBzdHIgPSB0ZXh0
Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMikucmVwbGFjZShTdHJp
bmcuZnJvbUNoYXJDb2RlKDY1NTMyKSwgIltBVFRBQ0hNRU5UXSIpOwotICAgICAgICBkZWJ1Zygi
T2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6ICIgKyBzdHIpOwotICAgICAgICAKKyAgICAgICAgb3V0
cHV0ICs9IGBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogJHtzdHJ9XG5gOworCiAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlMik7CiAgICAgICAgIC8vIEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxs
IGxhbmQgYXQgImQiLgogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2Vy
LCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0
LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91
c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOwotICAgICAgICAKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSIsICInZCciKTsKKwogICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgNiBjaGFy
YWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0MSIuCiAg
ICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcyg2LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
ciwgdGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJzEn
Iik7CisKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCB1c2VyLXNlbGVjdDpub25lLCBu
ZXh0VGV4dE1hcmtlci9wcmV2aW91c1RleHRNYXJrZXIgc2hvdWxkIHN0aWxsIHdvcmsuCi0gICAg
ICAgIHZhciB0ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dDMiKTsKLSAgICAgICAgdGV4dDMgPSB0ZXh0My5jaGlsZEF0SW5kZXgoMCk7Ci0g
ICAgICAgIAorICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8v
IEFkdmFuY2UgdG8gbGFuZCBhdCB1c2VyLXNlbGVjdDpub25lIG5vZGUuCiAgICAgICAgIHZhciBt
YXJrZXIxLCBtYXJrZXIyOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE4OyBpKyspIHsK
QEAgLTEyNSwzNCArMTQyLDMxIEBAIGYKICAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3Vy
cmVudE1hcmtlcjsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKG1hcmtlcjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0JyIpOworICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidlY3QnIik7CiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQg
bWFya2VyIGZvciA2IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKLSAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDMucHJldmlvdXNU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBj
dXJyZW50TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidzZWwnIik7CisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJ3NlbCciKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3
b3JkIGZpZWxkLgogICAgICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJwc3ciKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMg
PSBwc3cudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChwc3cpOwogICAgICAgICB2YXIgc3RhcnQg
PSBwc3cuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMp
OwotICAgICAgICBzaG91bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKHN0YXJ0KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiIXBz
dy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIiwgInRydWUiKTsKKwog
ICAgICAgICAvLyBDaGVjayBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGNhbGwgd2lsbCBza2lw
IHBhc3N3b3JkIGZpZWxkCiAgICAgICAgIC8vIFdlIHN0YXJ0IGZyb20gdGV4dDIgYW5kIGFkdmFu
Y2UgNiBjaGFyYWN0ZXJzLCBpdCBzaG91bGQgc2tpcCB0aGUgcGFzc3dvcmQgZmllbGQgYW5kIGxh
bmQgb24gdGV4dDMuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7Ci0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsr
KQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMp
Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIsICJ0cnVlIik7CiAg
ICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAi
IGQiIG5vZGUuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJr
ZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91
c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwo
dGV4dDIuY2hpbGRBdEluZGV4KDIpKSIpOwotICAgICAgICAKLSAgICAgICAgCisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihj
dXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkiLCAidHJ1ZSIpOwor
CiAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRleHQgbm9kZSB3aXRoIGxpbmUgYnJlYWtzLCB3
ZSBjYW4gZ28gdGhyb3VnaCBpdCB3aXRoIG5leHQvcHJldmlvdXMgY2FsbC4KICAgICAgICAgdGV4
dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDQi
KTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KHRleHQpOwpAQCAtMTYzLDg3ICsxNzcsNjQgQEAgZgogICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAg
ICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlv
dXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7Ci0gICAgICAgIAorICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJ2YnIik7CisKICAgICAgICAgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSBlbmRNYXJrZXI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9
CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0
YXJ0TWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIGVtb2ppLgogICAg
ICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0NSIpOwogICAgICAgICB2YXIgZW1vamlUZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOworICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJr
ZXJSYW5nZSkiLCAiNCIpOwogICAgICAgICAvLyBNYWtlIHN1cmUgbmF2aWdhdGluZyBuZXh0L3By
ZXZpb3VzIHRleHQgbWFya2VyIGlzIGJ5IGVtb2ppLgogICAgICAgICBzdGFydE1hcmtlciA9IHRl
eHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGVtb2ppVGV4dE1hcmtlclJhbmdl
KTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgyLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJr
ZXIsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKICAgICAgICAgcmVz
dWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQp
OwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICIn8J+YgyciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7CisKICAgICAgICAg
Ly8gVGVzdCBjYXNlIHdpdGggY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgICAgIHRleHQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ2Iik7CiAg
ICAgICAgIHZhciBjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJr
ZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMiKTsKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFw
c2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CiAgICAgICAgIHN0YXJ0TWFya2VyID0g
dGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoY29sbGFwc2VkV2hpdGVzcGFj
ZU1hcmtlclJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtl
ciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKICAgICAg
ICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGZvcndh
cmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIiwgIidiJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIp
OwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKwog
ICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCByZXBsYWNlZCBlbGVtZW50cyAoc2hvdWxkIHVzZSBv
YmplY3QgcmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDciKTsKICAgICAgICAgdGV4
dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKSIsICInYXVkaW9cdUZGRkNmaWxlJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1
RkZGQ2ZpbGUnIik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDY7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50
TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CiAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1h
cmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAg
ICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAg
ICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKIAotICAgICAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50
LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01h
cmtlciA9IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9i
ai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAot
ICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07Ci0g
ICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJl
dmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIg
PSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKLSAgICAgICAgICAgICAg
ICBjdXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsK
LSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJl
dmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRN
YXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAg
IGRlYnVnKG91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0LWV4cGVjdGVkLnR4dAppbmRleCAyOTI2NDFhN2UwMzguLjVhMGEzMmMyOGQ3MCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1t
YXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXIt
cHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAKLXRleHQKLQotdGV4
dDEKLWMgIGQKLQotY2FuJ3Qgc2VsZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8KLQotYSBiCi0KLWF1
ZGlvZmlsZQotCiBUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0
aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Up
IGlzIDQKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRN
YXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcgKyBu
ZXdsaW5lCi1QQVNTIHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Uy
KSBpcyA1CitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Up
ID09PSA0CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xp
bmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
J3QnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ3QnICsgbmV3bGluZQorUEFTUzogdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRl
eHRNYXJrZXJSYW5nZTIpID09PSA1CiBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogYyBbQVRUQUNI
TUVOVF0gZAotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICdkJwotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICcxJwotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICdlY3QnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgaXMgJ3NlbCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
c3RhcnQpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4
dDIuY2hpbGRBdEluZGV4KDIpKSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIGlzICdhJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIGlzICfwn5iPJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIGlzICfwn5iDJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChj
b2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIGlzIDMKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSBpcyAnYicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBp
cyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdl
KSBpcyAnYXVkaW/vv7xmaWxlJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkgaXMgJ++/vCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICfvv7wnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpID09PSAnZCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkgPT09ICcxJworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2VjdCcKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdzZWwnCitQQVNTOiAhcHN3LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgPT09IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQz
KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSA9PT0gdHJ1ZQor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZicK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2En
CitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkg
PT09IDQKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfw
n5iPJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/Cf
mIMnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNl
TWFya2VyUmFuZ2UpID09PSAzCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9
PT0gJ2InCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn
ICcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJwor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSA9PT0g
J2F1ZGlv77+8ZmlsZScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSA9PT0gJ++/vCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSA9PT0gJ++/vCcKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQog
CiBURVNUIENPTVBMRVRFCiAKKworCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464461</attachid>
            <date>2023-01-11 18:18:26 -0800</date>
            <delta_ts>2023-01-16 14:36:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230111211824.patch</filename>
            <type>text/plain</type>
            <size>92353</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA1MjkzNTdhMmU3MDcwNGM1ZjU5NTQ3ZTQyYmMwMmQyMWU1MmZjMzQwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3cgZm9yIHRoZSByZXRyaWV2YWwgb2YgdGhlIFRleHRNYXJr
ZXIgcHJvcGVydGllcyB3aXRob3V0IGhhdmluZyB0byByZXNvdXJjZSB0byB0aGUgdW5kZXJseWlu
ZyBET00gYW5kIFJlbmRlclRyZWUgb2JqZWN0cy4KClRoZSBmb2xsb3dpbmcgTWFjIEFYIEFQSSBh
dHRyaWJ1dGVzIGFyZSBub3cgaW1wbGVtZW50ZWQgd2l0aG91dCBoaXR0aW5nIHRoZSBtYWluIHRo
cmVhZCB1c2luZyBBWFRleHRNYXJrZXIgYW5kIEFYVGV4dE1hcmtlclJhbmdlOgpBWFVJRWxlbWVu
dEZvclRleHRNYXJrZXIKQVhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VycwpBWFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZQpBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UKClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhbiB1cGRhdGUgb2Ygc2V2ZXJhbCBsYXlvdXQg
dGVzdHMgcmVsYXRlZCB0byBUZXh0TWFya2Vycy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAxNiArCiAuLi4vV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwICAgfCAxMDkgKysrKy0tLQogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggIHwgIDEyICstCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FYVGV4dE1hcmtlci5jcHAgfCAyNzUgKysrKysrKysrKysrKysrKysrCiBTb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oICAgfCAxMDMgKysrKysrKwogU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oICAgIHwgICA3ICstCiAuLi4vYWNj
ZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAgfCAgODMgKysrKysrCiAuLi4v
YWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSAgICAgfCAgIDQgKy0KIC4uLi9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8IDEwMSArKystLS0tCiAu
Li4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCAgfCAgMTkgKy0KIC4u
Li9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAgICAgICAgICB8ICA1MSArKy0tCiAu
Li5yZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQgfCAgMTUgKy0KIC4u
LnNlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbCB8ICA2MyArKy0tCiAu
Li4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0ICAgfCAyMTAgKysrKyst
LS0tLS0tLQogLi4uL21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sICAgICAgIHwg
IDQ4ICsrLQogLi4uLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IHwg
ICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgfCAg
MzUgKy0tCiAuLi4vdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sICAgICAgICAgICAgfCAx
NzUgKysrKysrLS0tLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4
dCAgICB8ICA3OCArKystLQogMjEgZmlsZXMgY2hhbmdlZCwgODkyIGluc2VydGlvbnMoKyksIDUx
OSBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQKaW5kZXggZjMzNzM2Yzg1MjllLi41NTU1M2QwMTI2NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBA
IC00NTUsNiArNDU1LDcgQEAgTW9kdWxlcy93ZWJ4ci9YUlNlc3Npb25FdmVudC5jcHAKIGFjY2Vz
c2liaWxpdHkvQVhJbWFnZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCithY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAK
IGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAogYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3cuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBiNjM0OTliNTYxMDku
LjIwODFlMGQxODBjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xMjYsNiArMTI2LDcg
QEAgTW9kdWxlcy9zcGVlY2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1vZHVs
ZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQogTW9kdWxlcy9z
eXN0ZW0tcHJldmlldy9BUktpdEJhZGdlU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMvd2ViZGF0YWJh
c2UvY29jb2EvRGF0YWJhc2VNYW5hZ2VyQ29jb2EubW0KK2FjY2Vzc2liaWxpdHkvY29jb2EvQVhU
ZXh0TWFya2VyQ29jb2EubW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0K
IGFjY2Vzc2liaWxpdHkvaW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxp
dHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDY1OWRhMjIx
MTE3Li5iMTUwMzhkMjg4NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTQ1NzEsNiArNDU3MSw3IEBACiAJCUMwQzA1NENCMTEx
OEM4RTQwMENFMjYzNiAvKiBDb2RlR2VuZXJhdG9yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVH
ZW5lcmF0b3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJQzBDMDU0Q0MxMTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIzMDcwQTMw
MEZFQTAwRjYxQUI4IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENEMTExOEM4RTQwMENFMjYzNiAv
KiBJRExQYXJzZXIucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAxNDgxM0JGMzA5RURGODhFMDBGNzU3RTEgLyogSURMUGFyc2VyLnBtICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUMwRTIwOEEyMjkzNzlDNkYw
MEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIu
aCAqLzsgfTsKIAkJQzBFMkYzMjcyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHku
dGJkIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBF
MkYzMjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFdlYWssICk7IH07IH07CiAJCUMwRThBREM1Mjk0QjVBNjMwMDc2
Q0JEQyAvKiBBWFRyZWVTdG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBGMkE0NDEx
Mzg2OUFBQjAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVw
cm9jZXNzb3IucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTE2NTMyLDYgKzE2NTMzLDkgQEAKIAkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8q
IEFYTG9nZ2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYTG9nZ2VyLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVDOCAv
KiBBWElzb2xhdGVkT2JqZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29sYXRl
ZE9iamVjdE1hYy5tbTsgcGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhMb2dn
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQlDMEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVGV4dE1hcmtlci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYVGV4dE1h
cmtlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEI1MjkzOTNEQ0Yw
MEMwRDJEMyAvKiBBWFRleHRNYXJrZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgcGF0aCA9IEFYVGV4dE1hcmtlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMEUyRjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50
YmQgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291
cmNlY29kZS50ZXh0LWJhc2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNzaWJp
bGl0eS50YmQ7IHBhdGggPSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VUcmVl
ID0gU0RLUk9PVDsgfTsKIAkJQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3Jl
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVHJlZVN0b3JlLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVw
cm9jZXNzb3IucG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSB0ZXh0LnNjcmlwdC5wZXJsOyBuYW1lID0gcHJlcHJvY2Vzc29yLnBtOyBwYXRoID0gc2Ny
aXB0cy9wcmVwcm9jZXNzb3IucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ5
OCw2ICsyMTUwMiw3IEBACiAJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmls
aXR5ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUy
MDhCNzI5MzkzRTFBMDBDMEQyRDMgLyogY29jb2EgKi8sCiAJCQkJQUFBNzI4RUYxNkQxRDhCQzAw
RDNCQkM2IC8qIGlvcyAqLywKIAkJCQkyOUFFMjEyOTIxQUI5RUNCMDA4NjkyODMgLyogaXNvbGF0
ZWR0cmVlICovLAogCQkJCTI5QTgxMjA1MEZCQjlCNTIwMDUxMDI5MyAvKiBtYWMgKi8sCkBAIC0y
MTU3NCw2ICsyMTU3OSw4IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9n
Z2VyLmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUu
Y3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmgg
Ki8sCisJCQkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8s
CisJCQkJQzBFMjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJ
CTkxQzlGMkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICov
LAogCQkJCUMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovLAogCQkJ
CUJDNEE1MzMwMjU2MDU5MDMwMDI4QzU5MiAvKiBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAq
LywKQEAgLTMxNjQyLDYgKzMxNjQ5LDE0IEBACiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsKIAkJfTsKKwkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29h
ICovID0geworCQkJaXNhID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUyMDhC
NTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0gKi8sCisJCQkpOworCQkJ
cGF0aCA9IGNvY29hOworCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0QwREJC
M0UxNDIyNzRFNjAwMjgwMjYzIC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJ
CQljaGlsZHJlbiA9ICgKQEAgLTM1MjE3LDYgKzM1MjMyLDcgQEAKIAkJCQkyOUFFMjEzNTIxQUJB
NDhBMDA4NjkyODMgLyogQVhJc29sYXRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlB
RTIxMkQyMUFCOUVFQjAwODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkyOUE4MTIzODBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRl
cnMgKi8sCisJCQkJQzBFMjA4QTIyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJOTFDOUYyRjkxQUUzQkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNC
REMgLyogQVhUcmVlU3RvcmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzdFNzc3MEJGNDEzNEEw
MDE1Mjg3MiAvKiBCYWNrRm9yd2FyZENhY2hlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDEzODkzMDA0MDVm
MC4uNGI1OGZkZGZjN2NkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYT2JqZWN0Q2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhP
YmplY3RDYWNoZS5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBWElzb2xhdGVkT2Jq
ZWN0LmgiCiAjaW5jbHVkZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dlci5o
IgorI2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklB
R3JpZC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKQEAgLTIyMjksNyArMjIzMCw3IEBAIFZpc2li
bGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0
YShUZXh0TWFya2VyRGF0YSYKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIGF1dG8qIGNhY2hl
ID0gcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwotICAgIGlmIChjYWNoZSAm
JiAhY2FjaGUtPm1faWRzSW5Vc2UuY29udGFpbnModGV4dE1hcmtlckRhdGEuYXhJRCkpCisgICAg
aWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyh0ZXh0TWFya2VyRGF0YS5v
YmplY3RJRCkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdmlzaWJsZVBvc2l0
aW9uOwpAQCAtMjUxMSwzMyArMjUxMiwzNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldFRleHRN
YXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcgogewog
ICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAgIHJldHVybjsKLSAgICAK
LSAgICBOb2RlKiBkb21Ob2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7Ci0gICAgaWYgKGlzPEhU
TUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigq
ZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkpIHsKKworICAgIE5vZGUqIG5vZGUgPSBjaGFyYWN0
ZXJPZmZzZXQubm9kZTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93
bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7CiAgICAg
ICAgIHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgPSB0cnVlOwogICAgICAgICByZXR1cm47CiAgICAg
fQotICAgIAotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRP
ckNyZWF0ZShkb21Ob2RlKTsKLSAgICBpZiAoIW9iaikKKworICAgIFJlZlB0ciBvYmplY3QgPSBn
ZXRPckNyZWF0ZShub2RlKTsKKyAgICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuOwotICAg
IAorCiAgICAgLy8gQ29udmVydCB0byB2aXNpYmxlIHBvc2l0aW9uLgotICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0
KGNoYXJhY3Rlck9mZnNldCk7CisgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9z
aXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CiAgICAgaW50IHZwT2Zm
c2V0ID0gMDsKICAgICBpZiAoIXZpc2libGVQb3NpdGlvbi5pc051bGwoKSkgewogICAgICAgICBQ
b3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CiAgICAg
ICAgIHZwT2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNhdGVkRWRpdGluZ09mZnNldCgpOwogICAgIH0K
LSAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRl
eHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOworCisgICAgdGV4dE1hcmtlckRhdGEudHJlZUlE
ID0gbV9pZDsKKyAgICB0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCA9IG9iamVjdC0+b2JqZWN0SUQo
KTsKKyAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gbm9kZTsKICAgICB0ZXh0TWFya2VyRGF0YS5j
aGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwogICAgIHRleHRNYXJrZXJE
YXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKICAg
ICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKICAgICB0ZXh0TWFya2VyRGF0YS5h
ZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAotICAgIHRoaXMtPnNl
dE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAvLyBUZXh0TWFya2VyRGF0YS5pZ25vcmVkIGlzIGRl
bGliZXJhdGVseSBub3QgYXNzaWduZWQgaGVyZSBzbyB3ZSBjYW4gcmV0dXJuIHZhbGlkIFRleHRN
YXJrZXJzIGZvciBpZ25vcmVkIEFYIG9iamVjdHMuCisKKyAgICBzZXROb2RlSW5Vc2Uobm9kZSk7
CiB9CiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVy
T2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQsIGJv
b2wgZW50ZXJUZXh0Q29udHJvbHMpCkBAIC0yNjU3LDcgKzI2NjAsNyBAQCBib29sIEFYT2JqZWN0
Q2FjaGU6OnNob3VsZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3Vz
LCBjb25zdCBDaAogICAgIAogICAgIHJldHVybiB0cnVlOwogfQotICAgIAorCiB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2Vy
RGF0YSYgdGV4dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zm
c2V0KQogewogICAgIENoYXJhY3Rlck9mZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwpAQCAt
MjY2OSw3ICsyNjcyLDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvck5l
eHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXIKICAgICAgICAgaWYgKHNo
b3VsZFNraXBCb3VuZGFyeShwcmV2aW91cywgbmV4dCkpCiAgICAgICAgICAgICBuZXh0ID0gbmV4
dENoYXJhY3Rlck9mZnNldChuZXh0LCBmYWxzZSk7CiAgICAgICAgIHRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBuZXh0KTsKLSAgICAgICAgCisKICAgICAg
ICAgLy8gV2Ugc2hvdWxkIHNraXAgbmV4dCBDaGFyYWN0ZXJPZmZzZXQgaWYgaXQncyB2aXN1YWxs
eSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFsZW5ndGhGb3JSYW5nZShyYW5nZUZvclVub3JkZXJl
ZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMsIG5leHQpKSkKICAgICAgICAgICAgIHNob3VsZENv
bnRpbnVlID0gdHJ1ZTsKQEAgLTI2NzcsNiArMjY4MCwyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4
dE1hcgogICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGlu
dWUpOwogfQogCitBWFRleHRNYXJrZXIgQVhPYmplY3RDYWNoZTo6bmV4dFRleHRNYXJrZXIoY29u
c3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJUKG1faWQgPT0gbWFya2VyLmRh
dGEoKS50cmVlSUQpOworICAgIEFYVGV4dE1hcmtlciByZXN1bHQ7CisKKyAgICBUZXh0TWFya2Vy
RGF0YSBkYXRhIHsgbWFya2VyLmRhdGEoKSB9OworICAgIHRleHRNYXJrZXJEYXRhRm9yTmV4dENo
YXJhY3Rlck9mZnNldChkYXRhLCBtYXJrZXIpOworICAgIGlmIChkYXRhLm5vZGUgIT0gbWFya2Vy
Lm1fZGF0YS5ub2RlKSB7CisgICAgICAgIC8vIFNpbmNlIHRoZSBOb2RlIGNoYW5nZWQsIG5lZWQg
dG8gdXBkYXRlIHRoZSBjb3JyZXNwb25kaW5nIEFYIG9iamVjdCBJRC4KKyAgICAgICAgaWYgKGF1
dG8qIG9iamVjdCA9IGdldE9yQ3JlYXRlKGRhdGEubm9kZSkpCisgICAgICAgICAgICBkYXRhLm9i
amVjdElEID0gb2JqZWN0LT5vYmplY3RJRCgpOworICAgIH0KKworICAgIHJlc3VsdC5tX2RhdGEg
PSBkYXRhOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKIHZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4
dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewog
ICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IGNoYXJhY3Rlck9mZnNldDsKQEAgLTI2OTQs
NiArMjcxNCwyMyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yUHJldmlv
dXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleAogICAgIH0gd2hpbGUgKHRleHRN
YXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOwogfQogCitBWFRleHRNYXJrZXIg
QVhPYmplY3RDYWNoZTo6cHJldmlvdXNUZXh0TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYgbWFy
a2VyKQoreworICAgIEFTU0VSVChtX2lkID09IG1hcmtlci5kYXRhKCkudHJlZUlEKTsKKyAgICBB
WFRleHRNYXJrZXIgcmVzdWx0OworCisgICAgVGV4dE1hcmtlckRhdGEgZGF0YSB7IG1hcmtlci5k
YXRhKCkgfTsKKyAgICB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGRh
dGEsIG1hcmtlcik7CisgICAgaWYgKGRhdGEubm9kZSAhPSBtYXJrZXIubV9kYXRhLm5vZGUpIHsK
KyAgICAgICAgLy8gU2luY2UgdGhlIE5vZGUgY2hhbmdlZCwgbmVlZCB0byB1cGRhdGUgdGhlIGNv
cnJlc3BvbmRpbmcgQVggb2JqZWN0IElELgorICAgICAgICBpZiAoYXV0byogb2JqZWN0ID0gZ2V0
T3JDcmVhdGUoZGF0YS5ub2RlKSkKKyAgICAgICAgICAgIGRhdGEub2JqZWN0SUQgPSBvYmplY3Qt
Pm9iamVjdElEKCk7CisgICAgfQorCisgICAgcmVzdWx0Lm1fZGF0YSA9IGRhdGE7CisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogTm9kZSogQVhPYmplY3RDYWNoZTo6bmV4dE5vZGUoTm9kZSogbm9k
ZSkgY29uc3QKIHsKICAgICBpZiAoIW5vZGUpCkBAIC0yNzk1LDEyICsyODMyLDEyIEBAIHN0ZDo6
b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9y
VmlzaWJsZVBvc2l0aW9uKGNvCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBQ
b3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAgIE5vZGUq
IGRvbU5vZGUgPSBkZWVwUG9zLmFuY2hvck5vZGUoKTsKLSAgICBBU1NFUlQoZG9tTm9kZSk7Ci0g
ICAgaWYgKCFkb21Ob2RlKQorICAgIE5vZGUqIG5vZGUgPSBkZWVwUG9zLmFuY2hvck5vZGUoKTsK
KyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAmJiBkb3du
Y2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkpCisgICAg
aWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBhbiBhbmNob3IgdHlwZSBy
ZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVkIG5vZGUsIHdlIHNob3Vs
ZApAQCAtMjgxMiwyOCArMjg0OSwzMiBAQCBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBB
WE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihjbwogICAgICAg
ICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CiAgICAgfQogCi0gICAgLy8gZmluZCBvciBjcmVhdGUg
YW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZQotICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gZG9tTm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgLy8gRmlu
ZCBvciBjcmVhdGUgYW4gYWNjZXNzaWJpbGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZS4KKyAgICBh
dXRvKiBjYWNoZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPEFjY2Vzc2li
aWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKKworICAgIFJl
ZlB0ciBvYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZSk7CisgICAgaWYgKCFvYmplY3Qp
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBUaGlzIG1lbW9yeSBtdXN0
IGJlIHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBm
b3IgYnl0ZS1lcXVpdmFsZW5jZS4KICAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBi
YWQgYmVjYXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KICAgICBUZXh0
TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+
KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAgIAotICAg
IHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmotPm9iamVjdElEKCk7Ci0gICAgdGV4dE1hcmtlckRh
dGEubm9kZSA9IGRvbU5vZGU7CisKKyAgICB0ZXh0TWFya2VyRGF0YS50cmVlSUQgPSBjYWNoZS0+
bV9pZDsKKyAgICB0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsK
KyAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gbm9kZTsKICAgICB0ZXh0TWFya2VyRGF0YS5vZmZz
ZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7CiAgICAgdGV4dE1hcmtlckRh
dGEuYW5jaG9yVHlwZSA9IGRlZXBQb3MuYW5jaG9yVHlwZSgpOwogICAgIHRleHRNYXJrZXJEYXRh
LmFmZmluaXR5ID0gdmlzaWJsZVBvcy5hZmZpbml0eSgpOwogCiAgICAgdGV4dE1hcmtlckRhdGEu
Y2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKICAgICB0ZXh0TWFya2Vy
RGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXg7Cisg
ICAgLy8gVGV4dE1hcmtlckRhdGEuaWdub3JlZCBpcyBkZWxpYmVyYXRlbHkgbm90IGFzc2lnbmVk
IGhlcmUgc28gd2UgY2FuIHJldHVybiB2YWxpZCBUZXh0TWFya2VycyBmb3IgaWdub3JlZCBBWCBv
YmplY3RzLgogCi0gICAgY2FjaGUtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKLQorICAgIGNhY2hl
LT5zZXROb2RlSW5Vc2Uobm9kZSk7CiAgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhOwogfQogCkBA
IC0yODQzLDI0ICsyODg0LDI0IEBAIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2Jq
ZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4CiAgICAgaWYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVt
ZW50Pih0ZXh0Q29udHJvbCkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHRleHRDb250cm9sLmRvY3Vt
ZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gdGV4dENvbnRyb2wuZG9j
dW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSBj
YWNoZS0+Z2V0T3JDcmVhdGUoJnRleHRDb250cm9sKTsKLSAgICBpZiAoIW9iaikKKyAgICBSZWZQ
dHIgb2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKCZ0ZXh0Q29udHJvbCk7CisgICAgaWYgKCFv
YmplY3QpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBUaGlzIG1lbW9y
eSBtdXN0IGJlIHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRl
c3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4KICAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5
IGFuZCBiYWQgYmVjYXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KICAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8
dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAg
IAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmotPm9iamVjdElEKCk7CisKKyAgICB0ZXh0
TWFya2VyRGF0YS50cmVlSUQgPSBjYWNoZS0+bV9pZDsKKyAgICB0ZXh0TWFya2VyRGF0YS5vYmpl
Y3RJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKICAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRl
eHRDb250cm9sOwogCiAgICAgY2FjaGUtPnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwotCiAg
ICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oCmluZGV4IDg2NWI1ZjY0OTk1NS4uNjFlMTliODk0YThhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDQs
NiArNDQsNyBAQCBjbGFzcyBUZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2Ns
YXNzIEFYVGV4dE1hcmtlcjsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTEFyZWFFbGVtZW50
OwogY2xhc3MgSFRNTFRhYmxlRWxlbWVudDsKQEAgLTU3LDE2ICs1OCwxOCBAQCBjbGFzcyBTY3Jv
bGxWaWV3OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xhc3MgV2lkZ2V0OwogCisvLyBGSVhN
RTogTW92ZSBpbnRvIEFYVGV4dE1hcmtlciBjbGFzcy4KIHN0cnVjdCBUZXh0TWFya2VyRGF0YSB7
Ci0gICAgQVhJRCBheElEOworICAgIEFYSUQgdHJlZUlEOworICAgIEFYSUQgb2JqZWN0SUQ7CiAK
ICAgICBOb2RlKiBub2RlIHsgbnVsbHB0ciB9OwogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsK
ICAgICBQb3NpdGlvbjo6QW5jaG9yVHlwZSBhbmNob3JUeXBlIHsgUG9zaXRpb246OlBvc2l0aW9u
SXNPZmZzZXRJbkFuY2hvciB9OwogICAgIEFmZmluaXR5IGFmZmluaXR5IHsgQWZmaW5pdHk6OkRv
d25zdHJlYW0gfTsKIAotICAgIGludCBjaGFyYWN0ZXJTdGFydEluZGV4IHsgMCB9OwotICAgIGlu
dCBjaGFyYWN0ZXJPZmZzZXQgeyAwIH07CisgICAgdW5zaWduZWQgY2hhcmFjdGVyU3RhcnRJbmRl
eCB7IDAgfTsKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQgeyAwIH07CiAgICAgYm9vbCBp
Z25vcmVkIHsgZmFsc2UgfTsKIH07CiAKQEAgLTE1MCw2ICsxNTMsNyBAQCBjbGFzcyBBWE9iamVj
dENhY2hlIDogcHVibGljIENhbk1ha2VXZWFrUHRyPEFYT2JqZWN0Q2FjaGU+CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiAgICAgZnJpZW5kIGNsYXNzIEFYSXNvbGF0ZWRUcmVlOwogICAg
IGZyaWVuZCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgQVhP
YmplY3RDYWNoZSYpOworICAgIGZyaWVuZCBBWFRleHRNYXJrZXI7CiBwdWJsaWM6CiAgICAgZXhw
bGljaXQgQVhPYmplY3RDYWNoZShEb2N1bWVudCYpOwogICAgIH5BWE9iamVjdENhY2hlKCk7CkBA
IC0yMzgsNyArMjQyLDkgQEAgcHVibGljOgogICAgIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRh
dGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRyb2woSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQmKTsKICAgICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVy
T2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgdm9p
ZCB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgbmV4dFRleHRNYXJrZXIo
Y29uc3QgQVhUZXh0TWFya2VyJik7CiAgICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3Vz
Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7
CisgICAgQVhUZXh0TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXIm
KTsKICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEo
VGV4dE1hcmtlckRhdGEmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9y
VGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICAvLyBVc2UgaWdub3JlTmV4dE5v
ZGVTdGFydC9pZ25vcmVQcmV2aW91c05vZGVFbmQgdG8gZGV0ZXJtaW5lIHRoZSBiZWhhdmlvciB3
aGVuIHdlIGFyZSBhdCBub2RlIGJvdW5kYXJ5LiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhUZXh0TWFya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjY4Njc1OTMyNWZmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApAQCAtMCwwICsxLDI3NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCisKKyNp
bmNsdWRlICJBWFRyZWVTdG9yZS5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRN
YXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlv
bikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKHZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgUG9zaXRpb24gZGVlcFBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CisgICAgbV9kYXRhLm5vZGUg
PSBkZWVwUG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAgIEFTU0VSVChtX2RhdGEubm9kZSk7Cisg
ICAgaWYgKCFtX2RhdGEubm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KG1fZGF0YS5ub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigq
bV9kYXRhLm5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBh
dXRvKiBjYWNoZSA9IG1fZGF0YS5ub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAg
ICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisgICAgbV9kYXRhLnRyZWVJRCA9IGNhY2hl
LT5tX2lkOworCisgICAgYXV0byogb2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKG1fZGF0YS5u
b2RlKTsKKyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGF0YS5vYmpl
Y3RJRCA9IG9iamVjdC0+b2JqZWN0SUQoKTsKKworICAgIG1fZGF0YS5vZmZzZXQgPSBkZWVwUG9z
aXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKKyAgICBtX2RhdGEuYW5jaG9yVHlwZSA9
IGRlZXBQb3NpdGlvbi5hbmNob3JUeXBlKCk7CisgICAgbV9kYXRhLmFmZmluaXR5ID0gdmlzaWJs
ZVBvc2l0aW9uLmFmZmluaXR5KCk7CisKKyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IGNhY2hl
LT5jaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7Cisg
ICAgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRl
eDsKKyAgICBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsK
KworICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UobV9kYXRhLm5vZGUpOworfQorCitBWFRleHRNYXJr
ZXI6OkFYVGV4dE1hcmtlcihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkK
K3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGNoYXJhY3Rlck9mZnNl
dC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9kYXRhLm5vZGUgPSBjaGFyYWN0
ZXJPZmZzZXQubm9kZTsKKyAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4obV9kYXRhLm5vZGUp
ICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCptX2RhdGEubm9kZSkuaXNQYXNzd29yZEZp
ZWxkKCkpIHsKKyAgICAgICAgbV9kYXRhLmlnbm9yZWQgPSB0cnVlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgYXV0byogY2FjaGUgPSBtX2RhdGEubm9kZS0+ZG9jdW1lbnQoKS5heE9i
amVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGF0
YS50cmVlSUQgPSBjYWNoZS0+bV9pZDsKKworICAgIGF1dG8qIG9iamVjdCA9IGNhY2hlLT5nZXRP
ckNyZWF0ZShtX2RhdGEubm9kZSk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAgIHJldHVybjsK
KyAgICBtX2RhdGEub2JqZWN0SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisKKyAgICAvLyBDb252
ZXJ0IHRvIHZpc2libGUgcG9zaXRpb24uCisgICAgYXV0byB2aXNpYmxlUG9zaXRpb24gPSBjYWNo
ZS0+dmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwor
ICAgIGlmICghdmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKSB7CisgICAgICAgIG1fZGF0YS5vZmZz
ZXQgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpOworICAgICAgICBtX2RhdGEuYW5jaG9yVHlwZSA9IHZpc2libGVQb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpLmFuY2hvclR5cGUoKTsKKyAgICAgICAgbV9kYXRhLmFmZmluaXR5ID0gdmlz
aWJsZVBvc2l0aW9uLmFmZmluaXR5KCk7CisgICAgfQorCisgICAgbV9kYXRhLmNoYXJhY3RlclN0
YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKKyAgICBtX2RhdGEuY2hhcmFj
dGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKKworICAgIGNhY2hlLT5zZXROb2Rl
SW5Vc2UobV9kYXRhLm5vZGUpOworfQorCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihOb2Rl
KiBub2RlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIW5vZGUp
CisgICAgICAgIHJldHVybjsKKyAgICBtX2RhdGEubm9kZSA9IG5vZGU7CisKKyAgICBhdXRvKiBj
YWNoZSA9IG1fZGF0YS5ub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAo
IWNhY2hlKQorICAgICAgICByZXR1cm47CisgICAgbV9kYXRhLnRyZWVJRCA9IGNhY2hlLT5tX2lk
OworCisgICAgYXV0byogb2JqZWN0ID0gY2FjaGUtPmdldE9yQ3JlYXRlKG1fZGF0YS5ub2RlKTsK
KyAgICBpZiAoIW9iamVjdCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fZGF0YS5vYmplY3RJRCA9
IG9iamVjdC0+b2JqZWN0SUQoKTsKKworICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UobV9kYXRhLm5v
ZGUpOworfQorCit2b2lkIEFYVGV4dE1hcmtlcjo6c2V0RGF0YShOb2RlKiBub2RlLCB1bnNpZ25l
ZCBvZmZzZXQsIFBvc2l0aW9uOjpBbmNob3JUeXBlIGFuY2hvclR5cGUsIEFmZmluaXR5IGFmZmlu
aXR5LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZz
ZXQpCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbm9kZSkKKyAg
ICAgICAgcmV0dXJuOworICAgIG1fZGF0YS5ub2RlID0gbm9kZTsKKworICAgIGF1dG8qIGNhY2hl
ID0gbV9kYXRhLm5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2Fj
aGUpCisgICAgICAgIHJldHVybjsKKyAgICBtX2RhdGEudHJlZUlEID0gY2FjaGUtPm1faWQ7CisK
KyAgICBhdXRvKiBvYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUobV9kYXRhLm5vZGUpOworICAg
IGlmICghb2JqZWN0KQorICAgICAgICByZXR1cm47CisgICAgbV9kYXRhLm9iamVjdElEID0gb2Jq
ZWN0LT5vYmplY3RJRCgpOworCisgICAgbV9kYXRhLm9mZnNldCA9IG9mZnNldDsKKyAgICBtX2Rh
dGEuYW5jaG9yVHlwZSA9IGFuY2hvclR5cGU7CisgICAgbV9kYXRhLmFmZmluaXR5ID0gYWZmaW5p
dHk7CisKKyAgICBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3RlclN0YXJ0SW5k
ZXg7CisgICAgbV9kYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldDsKK30KKwor
QVhUZXh0TWFya2VyOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb24oKSBjb25zdAoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNOdWxsKCkgfHwgbm9kZSgpLT5pc1Bz
ZXVkb0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIFBvc2l0aW9uIHBvc2l0
aW9uOworICAgIGlmIChtX2RhdGEuYW5jaG9yVHlwZSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc09m
ZnNldEluQW5jaG9yKQorICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwgbV9kYXRh
Lm9mZnNldCwgbV9kYXRhLmFuY2hvclR5cGUpOworICAgIGVsc2UKKyAgICAgICAgcG9zaXRpb24g
PSBQb3NpdGlvbihub2RlKCksIG1fZGF0YS5hbmNob3JUeXBlKTsKKworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb24ocG9zaXRpb24sIG1fZGF0YS5hZmZpbml0eSk7CisgICAgYXV0
byBkZWVwUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICBp
ZiAoZGVlcFBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0
byogcmVuZGVyZXIgPSBkZWVwUG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgYXV0byogY2Fj
aGUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKGNhY2hl
ICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyhtX2RhdGEub2JqZWN0SUQpKQorICAgICAg
ICByZXR1cm4geyB9OworICAgIHJldHVybiB2aXNpYmxlUG9zaXRpb247Cit9CisKK0FYVGV4dE1h
cmtlcjo6b3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHJlc3VsdChub2RlKCksIG1fZGF0
YS5jaGFyYWN0ZXJTdGFydEluZGV4LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAvLyBX
aGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBpcyB1cHN0
cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZp
b3VzIGxpbmUuCisgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQgc28g
dGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KKyAgICBpZiAobV9kYXRhLmFmZmluaXR5ID09
IEFmZmluaXR5OjpVcHN0cmVhbSkgeworICAgICAgICBpZiAoYXV0byBjYWNoZSA9IEFYVHJlZVN0
b3JlPEFYT2JqZWN0Q2FjaGU+Ojp0cmVlRm9ySUQobV9kYXRhLnRyZWVJRCkpCisgICAgICAgICAg
ICByZXR1cm4gY2FjaGUtPnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwgZmFsc2UpOwor
ICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBWENvcmVPYmplY3QqIEFYVGV4dE1hcmtl
cjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgYXV0byB0cmVlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRy
ZWVGb3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIHRyZWUgPyB0cmVlLT5vYmplY3RGb3JJRChv
YmplY3RJRCgpKSA6IG51bGxwdHI7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCitT
dHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAo
aXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisgICAgYXV0byBzZXBhcmF0
b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICAidHJlZUlEICIsIHRy
ZWVJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9iamVjdElEICIs
IG9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpCisgICAgICAgICwgc2VwYXJhdG9yLCBub2RlKCkt
PmRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9mZnNldCAiLCBtX2Rh
dGEub2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiQW5jaG9yVHlwZSAiLCBtX2RhdGEuYW5j
aG9yVHlwZQorICAgICAgICAsIHNlcGFyYXRvciwgIkFmZmluaXR5ICIsIG1fZGF0YS5hZmZpbml0
eQorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3RlclN0YXJ0SW5kZXggIiwgbV9kYXRhLmNo
YXJhY3RlclN0YXJ0SW5kZXgKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJPZmZzZXQg
IiwgbV9kYXRhLmNoYXJhY3Rlck9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgImlzSWdub3Jl
ZCAiLCBpc0lnbm9yZWQoKQorICAgICk7Cit9CisjZW5kaWYKKworQVhUZXh0TWFya2VyUmFuZ2U6
OkFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSkKKyAg
ICA6IG1fc3RhcnQocmFuZ2Uuc3RhcnQpCisgICAgLCBtX2VuZChyYW5nZS5lbmQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1h
cmtlclJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byogY2FjaGUgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKS5heE9iamVj
dENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGFy
dCA9IEFYVGV4dE1hcmtlcihjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdl
KCpyYW5nZSwgdHJ1ZSkpOworICAgIG1fZW5kID0gQVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9y
RW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRN
YXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25z
dCBBWFRleHRNYXJrZXImIGUpCisgICAgOiBtX3N0YXJ0KHMpCisgICAgLCBtX2VuZChlKQorewor
fQorCitBWFRleHRNYXJrZXJSYW5nZTo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBj
b25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIHsgbV9zdGFy
dCwgbV9lbmQgfTsKK30KKworc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhUZXh0TWFya2Vy
UmFuZ2U6OnNpbXBsZVJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgYXV0byBzdGFydEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChtX3N0
YXJ0KTsKKyAgICBhdXRvIGVuZEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChtX2Vu
ZCk7CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5UG9pbnQgfHwgIWVuZEJvdW5kYXJ5UG9pbnQpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyAqc3RhcnRCb3VuZGFy
eVBvaW50LCAqZW5kQm91bmRhcnlQb2ludCB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmQyOWYwMTZmODlkCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaApAQCAt
MCwwICsxLDEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBBY2Nlc3NpYmls
aXR5T2JqZWN0Oworc3RydWN0IENoYXJhY3Rlck9mZnNldDsKKworY2xhc3MgQVhUZXh0TWFya2Vy
IHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3MgQVhPYmpl
Y3RDYWNoZTsKKyAgICBmcmllbmQgY2xhc3MgQVhUZXh0TWFya2VyUmFuZ2U7CitwdWJsaWM6Cisg
ICAgLy8gQ29uc3RydWN0b3JzCisgICAgQVhUZXh0TWFya2VyKGNvbnN0IFZpc2libGVQb3NpdGlv
biYpOworICAgIEFYVGV4dE1hcmtlcihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRl
eHRNYXJrZXIoTm9kZSopOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYVGV4dE1hcmtlcihB
WFRleHRNYXJrZXJSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2VyKCkgPSBkZWZhdWx0Owor
CisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIG9w
ZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0OworICAgIG9wZXJhdG9yIENoYXJhY3Rlck9m
ZnNldCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPEFYVGV4
dE1hcmtlclJlZj4gcGxhdGZvcm1PYmplY3QoKSBjb25zdDsKKyAgICBvcGVyYXRvciBBWFRleHRN
YXJrZXJSZWYoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7
IH0KKyNlbmRpZgorCisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEudHJl
ZUlEOyB9CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5vYmplY3RJ
RDsgfQorICAgIEFYQ29yZU9iamVjdCogb2JqZWN0KCkgY29uc3Q7CisKKyAgICBUZXh0TWFya2Vy
RGF0YSBjb25zdCYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAgIE5vZGUqIG5v
ZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm9kZTsgfQorICAgIGJvb2wgaXNJZ25vcmVkKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhLmlnbm9yZWQ7IH0KKworI2lmIEVOQUJMRShUUkVFX0RFQlVH
R0lORykKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworI2VuZGlmCisKK3By
aXZhdGU6CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9kYXRhLnRyZWVJRC5p
c1ZhbGlkKCkgfHwgIW1fZGF0YS5vYmplY3RJRC5pc1ZhbGlkKCk7IH0KKyAgICB2b2lkIHNldERh
dGEoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFuY2hvclR5cGUsIEFmZmluaXR5
LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQp
OworICAgIFRleHRNYXJrZXJEYXRhIG1fZGF0YTsKK307CisKK2NsYXNzIEFYVGV4dE1hcmtlclJh
bmdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICAvLyBDb25z
dHJ1Y3RvcnMuCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFu
Z2UmKTsKKyAgICBBWFRleHRNYXJrZXJSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJh
bmdlPiYpOworICAgIEFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IEFYVGV4dE1hcmtlciYsIGNvbnN0
IEFYVGV4dE1hcmtlciYpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRNYXJrZXJSYW5n
ZShBWFRleHRNYXJrZXJSYW5nZVJlZik7CisjZW5kaWYKKyAgICBBWFRleHRNYXJrZXJSYW5nZSgp
ID0gZGVmYXVsdDsKKworICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhbV9zdGFy
dC5pc051bGwoKSAmJiAhbV9lbmQuaXNOdWxsKCk7IH0KKyAgICBvcGVyYXRvciBWaXNpYmxlUG9z
aXRpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNpbXBs
ZVJhbmdlKCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPEFYVGV4
dE1hcmtlclJhbmdlUmVmPiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0OworICAgIG9wZXJhdG9yIEFY
VGV4dE1hcmtlclJhbmdlUmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1PYmplY3QoKS5hdXRv
cmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFYVGV4dE1hcmtlciBzdGFydCgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RhcnQ7IH0KKyAgICBBWFRleHRNYXJrZXIgZW5kKCkgY29uc3QgeyByZXR1cm4g
bV9lbmQ7IH0KK3ByaXZhdGU6CisgICAgQVhUZXh0TWFya2VyIG1fc3RhcnQ7CisgICAgQVhUZXh0
TWFya2VyIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCmluZGV4IDMyMWRlZWZiMjJhOS4uODc0NDcz
OTE4N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0
b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCkBA
IC0zNiwxNSArMzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNsYXNzIEFYVHJlZVN0b3Jl
IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRyZWVTdG9yZSk7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgc3RhdGljIFQqIHRyZWVGb3JJRChBWElEKTsKIHByb3RlY3RlZDoKICAg
ICBBWFRyZWVTdG9yZSgpID0gZGVmYXVsdDsKICAgICBzdGF0aWMgdm9pZCBhZGQoQVhJRCwgV2Vh
a1B0cjxUPik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKEFYSUQpOwogICAgIHN0YXRpYyBib29s
IGNvbnRhaW5zKEFYSUQpOwogCi0gICAgc3RhdGljIFJlZlB0cjxUPiB0cmVlRm9ySUQoQVhJRCk7
CiAgICAgc3RhdGljIEFYSUQgZ2VuZXJhdGVOZXdJRCgpOwotCiAgICAgY29uc3QgQVhJRCBtX2lk
IHsgZ2VuZXJhdGVOZXdJRCgpIH07CiAgICAgc3RhdGljIExvY2sgc19zdG9yZUxvY2s7CiBwcml2
YXRlOgpAQCAtNzMsNyArNzQsNyBAQCBpbmxpbmUgYm9vbCBBWFRyZWVTdG9yZTxUPjo6Y29udGFp
bnMoQVhJRCBheElEKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgotaW5saW5lIFJlZlB0cjxU
PiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKK2lubGluZSBUKiBBWFRyZWVT
dG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKIHsKICAgICBMb2NrZXIgbG9ja2VyIHsgc19z
dG9yZUxvY2sgfTsKICAgICByZXR1cm4gbWFwKCkuZ2V0KGF4SUQpLmdldCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2Eu
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5iN2JhZDY3NjEyNzMK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FY
VGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisg
KiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKKworI2lmIFBMQVRGT1JNKE1B
QykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgiCisjaW1wb3J0
IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjZWxzZSAvLyBQTEFURk9STShJT1NfRkFN
SUxZKQorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MuaCIKKyNlbmRp
ZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKEFY
VGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyUmVmKQoreworICAgIGlmICghdGV4dE1hcmtlclJlZikK
KyAgICAgICAgcmV0dXJuOworCisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFTU0VSVChDRkdldFR5
cGVJRCh0ZXh0TWFya2VyUmVmKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7CisgICAgaWYg
KENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpICE9IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoQVhUZXh0TWFya2VyR2V0TGVuZ3RoKHRleHRN
YXJrZXJSZWYpID09IHNpemVvZihtX2RhdGEpKTsKKyAgICBpZiAoQVhUZXh0TWFya2VyR2V0TGVu
Z3RoKHRleHRNYXJrZXJSZWYpICE9IHNpemVvZihtX2RhdGEpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtZW1jcHkoJm1fZGF0YSwgQVhUZXh0TWFya2VyR2V0Qnl0ZVB0cih0ZXh0TWFya2VyUmVm
KSwgc2l6ZW9mKG1fZGF0YSkpOworI2Vsc2UgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBt
ZW1jcHkoJm1fZGF0YSwgdGV4dE1hcmtlclJlZiwgc2l6ZW9mKG1fZGF0YSkpOworI2VuZGlmCit9
CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IEFYVGV4dE1hcmtlcjo6cGxhdGZvcm1PYmpl
Y3QoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1cm4gYWRvcHRDRihBWFRl
eHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9kYXRh
LCBzaXplb2YobV9kYXRhKSkpOworI2Vsc2UgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBy
ZXR1cm4gKEFYVGV4dE1hcmtlclJlZikmbV9kYXRhOworI2VuZGlmCit9CisKKyNpZiBQTEFURk9S
TShNQUMpCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2Vy
UmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQorICAgIDogbV9zdGFydChBWFRleHRNYXJrZXJS
YW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFya2VyUmFuZ2VSZWYpKQorICAgICwgbV9lbmQoQVhU
ZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZikpCit7CisgICAg
QVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSYW5nZVJlZikgPT0gQVhUZXh0TWFya2VyUmFu
Z2VHZXRUeXBlSUQoKSk7Cit9CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gQVhU
ZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRv
cHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0CisgICAgICAg
ICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0
IFVJbnQ4KikmbV9zdGFydC5tX2RhdGEsIHNpemVvZihtX3N0YXJ0Lm1fZGF0YSkpKS5nZXQoKQor
ICAgICAgICAsIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJm1fZW5kLm1fZGF0YSwgc2l6ZW9mKG1fZW5kLm1fZGF0YSkpKS5nZXQo
KQorICAgICkpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhP
YmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KaW5kZXggN2I5MmRiYTNhNGE3Li5mMTc5MjZiOWRlNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bQpAQCAtODIzLDcgKzgyMyw3IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0CiAKICAgICBUZXh0
TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKICAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JD
aGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5heElEIHx8IHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCisgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQogICAg
ICAgICByZXR1cm4gbmlsOwogCiAgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXpl
b2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3JlbGVhc2UoKTsKQEAgLTg0OSw3ICs4NDksNyBAQCBB
WFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hl
KiBjYWNoZSwgY29uc3Qgc3RkOjpvcAogCiAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRh
dGE7CiAgICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKHRleHRNYXJr
ZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkK
KyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwog
CiAgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1
bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEp
KSkuYXV0b3JlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggNDIzNGNkNjlmOTE5Li43MjEwN2Q5NzE2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2Vy
LmgiCiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIK
ICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgpAQCAtNzE3LDM4ICs3
MTgsMjIgQEAgc3RhdGljIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNj
ZXNzaWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFy
a2VyIGhlbHBlcnMKIAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVm
PiBuZXh0VGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2Vy
JiBtYXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtl
ckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZz
ZXQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVs
dCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkp
KTsKKworICAgIGF1dG8gbmV4dE1hcmtlciA9IGNhY2hlLT5uZXh0VGV4dE1hcmtlcihtYXJrZXIp
OworICAgIHJldHVybiBuZXh0TWFya2VyID8gbmV4dE1hcmtlci5wbGF0Zm9ybU9iamVjdCgpIDog
bmlsOwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVm
PiBwcmV2aW91c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1h
cmtlciYgbWFya2VyKQogewogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRN
YXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJh
Y3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQotICAgICAgICByZXR1
cm4gbmlsOwotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJr
ZXJEYXRhKSkpOwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiluZXh0VGV4dE1h
cmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQK
LXsKLSAgICByZXR1cm4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJh
Y2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKLX0KIAotLSAo
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBw
cmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBhdXRvIHByZXZpb3VzTWFy
a2VyID0gY2FjaGUtPnByZXZpb3VzVGV4dE1hcmtlcihtYXJrZXIpOworICAgIHJldHVybiBwcmV2
aW91c01hcmtlciA/IHByZXZpb3VzTWFya2VyLnBsYXRmb3JtT2JqZWN0KCkgOiBuaWw7CiB9CiAK
IC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgc2luY2UgY2xpZW50cyBzaG91bGQgbm90IG5l
ZWQgdG8gY2FsbCB0aGlzIG1ldGhvZCBhbmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIGluIHRoZSBw
dWJsaWMgaW50ZXJmYWNlLgpAQCAtMzM3NCwyNCArMzM1OSwyNCBAQCAtIChBWFRleHRNYXJrZXJS
YW5nZVJlZilsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVm
KXRleHRNYQogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgICAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJr
ZXIoY2FjaGUsIHRleHRNYXJrZXIpOworICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRN
YXJrZXIpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5n
ZTsKICAgICAgICAgc3dpdGNoICh0ZXh0VW5pdCkgewogICAgICAgICBjYXNlIFRleHRVbml0OjpM
aW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5s
aW5lUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJs
ZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbihtYXJr
ZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRMaW5l
OgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0
TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2
aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0
aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRV
bml0OjpSaWdodExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tp
bmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7
CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0
TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdGV4dE1hcmtlclJhbmdl
RnJvbVZpc2libGVQb3NpdGlvbnMoY2FjaGUsIHZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2
aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQpOworICAgICAgICByZXR1cm4gQVhUZXh0TWFya2VyUmFu
Z2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpLnBsYXRmb3JtT2JqZWN0KCk7CiAgICAgfSk7CiB9CiAK
QEAgLTM2ODUsMjUgKzM2NzAsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgIHJldHVybiAoaWQpW3NlbGYgX3RleHRNYXJrZXJGb3JJbmRleDpbbnVtYmVy
IGludGVnZXJWYWx1ZV1dOwogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhVSUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFy
a2VyLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+
IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgp
LmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGFj
Y2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0KQotICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtl
cik7CisgICAgICAgIGF1dG8qIG9iamVjdCA9IG1hcmtlci5vYmplY3QoKTsKKyAgICAgICAgaWYg
KCFvYmplY3QpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBpZiAoYXhP
YmplY3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRW
aWV3XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNo
bWVudFZpZXddOworICAgICAgICBhdXRvKiB3cmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7Cisg
ICAgICAgIGlmICghd3JhcHBlcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAg
ICAgIHJldHVybiBheE9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYg
KGlkIGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykKKyAgICAgICAgICAg
IHJldHVybiBhdHRhY2htZW50VmlldzsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQog
CiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VG
b3JVSUVsZW1lbnQiXSkgewogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVB
dXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0
YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21S
YW5nZSh1aUVsZW1lbnQuZ2V0KCktPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LmdldCgpLT5l
bGVtZW50UmFuZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZy
b21SYW5nZSh1aUVsZW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LT5lbGVtZW50UmFu
Z2UoKSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzc1NCw3ICszNzM3LDcgQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJu
IChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBv
aW50KSk7CisgICAgICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0
LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9pbnQpKS5wbGF0Zm9ybU9iamVjdCgp
LmF1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzg0Myw5ICszODI2LDgg
QEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICB8fCAh
QVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0SW5kZXg6MF0pCiAgICAgICAgICAg
ICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pKQogICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJp
ZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZhcnJheV0gKCkgLT4gUmV0
YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21N
YXJrZXJzKChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MF0sIChBWFRleHRN
YXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pLmdldCgpOwotICAgICAgICB9KTsKKwor
ICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlclJhbmdlIHsgeyAoQVhUZXh0TWFya2VyUmVm
KVthcnJheSBvYmplY3RBdEluZGV4OjBdIH0sIHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2Jq
ZWN0QXRJbmRleDoxXSB9IH0ucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0K
IAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdl
Rm9yVW5vcmRlcmVkVGV4dE1hcmtlcnMiXSkgewpAQCAtMzg4NCw4ICszODY2LDggQEAgQUxMT1df
REVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWNhY2hlKQog
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0
ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVybiBicmlkZ2VfaWRfY2FzdChbcHJvdGVjdGVk
U2VsZiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsK
KyAgICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAg
ICByZXR1cm4gbmV4dFRleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRvcmVsZWFz
ZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM4OTksOCArMzg4MSw4IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAg
ICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQg
Y2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4
dE1hcmtlcik7Ci0gICAgICAgICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNl
bGYgcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0p
OworICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAg
ICAgIHJldHVybiBwcmV2aW91c1RleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRv
cmVsZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5ODEsMjYgKzM5NjMsMTMgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICAvLyBVc2VkIG9ubHkg
YnkgRHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRv
U3RyaW5nOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWlu
VGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2Jq
ZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBp
ZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAg
ICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3Qt
PmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLQotICAgICAgICAgICAgcmV0dXJu
IChpZClzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKSwgcmFuZ2UsIHRydWUpOwotICAgICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2Vy
UmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0
dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5zdGFydCgpLnBsYXRmb3JtT2JqZWN0KCkuYXV0b3Jl
bGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJB
WEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNj
ZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihb
JnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4g
UmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVj
dGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdP
YmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byBy
YW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVu
ZFRleHRNYXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdl
LCBmYWxzZSk7Ci0gICAgICAgIH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRN
YXJrZXJSYW5nZSB7IHRleHRNYXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gKGlkKWF4VGV4
dE1hcmtlclJhbmdlLmVuZCgpLnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9
CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBl
Y3RlZC50eHQKaW5kZXggNWQzM2RhY2IyZDNmLi41MDQ2MDI1OGZjMzMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10
ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTQgQEAKLXRleHQgaGVyZQotdGV4
dCBibG9jawotdGV4dCBoZXJlCiBUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2ls
bCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuCiAK
LU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZv
bGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQorUEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgocmFuZ2UpID09PSAxMAorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQor
UEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpID09PSAxMAorUEFTUzog
bmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkgPT09IHRydWUKIAotUEFTUyB0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSBpcyAxMAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVl
Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlciku
aXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5l
d01hcmtlclJhbmdlKSBpcyAxMAotUEFTUyBuZXdNYXJrZXJSYW5nZS5pc0VxdWFsKHRleHRNYXJr
ZXJSYW5nZTEpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQotCit0ZXh0IGhlcmUKK3RleHQgYmxvY2sKK3RleHQgaGVyZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFy
a2VyLmh0bWwKaW5kZXggZDQ5MzZhZDIyZDE4Li4zNDBhYjFlMTk4MGMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJr
ZXIuaHRtbApAQCAtMSw1MSArMSw0MiBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
YWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJv
ZHkiPgorPGJvZHk+CiAKIHRleHQgaGVyZQotPGRpdiBpZD0idGV4dDEiIHRhYmluZGV4PSIwIj50
ZXh0IGJsb2NrPC9kaXY+Cis8ZGl2IGlkPSJ0ZXh0MSI+dGV4dCBibG9jazwvZGl2PgogdGV4dCBo
ZXJlCiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Ci0KIDxzY3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJr
ZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRl
eHQgbWFya2VyLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
eworICAgICAgICBsZXQgdGVzdE91dHB1dCA9ICJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBz
eXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBt
YXJrZXIuXG5cbiI7CiAKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEi
KS5mb2N1cygpOwotICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
Zm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmNoaWxkQXRJbmRleCgwKTsKIAotICAg
ICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgICB0ZXh0ID0gdGV4
dC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUg
c3RhcnQgbWFya2VyIGZvciB0aGlzIGVsZW1lbnQncyByYW5nZS4KKyAgICAgICAgdmFyIHJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICB0ZXN0T3V0
cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgocmFuZ2UpIiwgIjEwIik7
CisgICAgICAgIHZhciBzdGFydCA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKHJhbmdlKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3Rh
cnQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgotICAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2Ux
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSIsICIxMCIp
OwotICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOworICAgICAgICAvLyBDaGVjayB0aGF0IHRo
ZSBzdGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFy
dGVkIHdpdGguCisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CiAK
LSAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBzdGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRo
ZSBzYW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFydGVkIHdpdGguCi0gICAgICAgICAgc2hvdWxkQmVU
cnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlciku
aXNFcXVhbCh0ZXh0KSIpOworICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNr
IHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KKyAgICAgICAgdmFyIGVuZCA9IHRl
eHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAgIHRlc3RP
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihl
bmQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gR2V0IHRoZSBlbmQg
bWFya2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVzIHVzIHRoZSBzYW1lIGVsZW1lbnQuCi0gICAg
ICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UxKTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOwor
ICAgICAgICAvLyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5kIGVuZCBt
YXJrZXJzIGFuZCBjaGVjayB0aGUgbGVuZ3RoLgorICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnQsIGVuZCk7CisgICAgICAgIHRlc3RPdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSkiLCAiMTAi
KTsKIAotICAgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBh
bmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5ndGgKLSAgICAgICAgICB2YXIgbmV3TWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGVu
ZE1hcmtlcik7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KG5ld01hcmtlclJhbmdlKSIsICIxMCIpOworICAgICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVx
dWFscyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ugd2Ugc3RhcnRlZCB3aXRoCisgICAgICAgIHRlc3RP
dXRwdXQgKz0gZXhwZWN0KCJuZXdSYW5nZS5pc0VxdWFsKHJhbmdlKSIsICJ0cnVlIik7CiAKLSAg
ICAgICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVxdWFscyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ug
d2Ugc3RhcnRlZCB3aXRoCi0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJuZXdNYXJrZXJSYW5nZS5p
c0VxdWFsKHRleHRNYXJrZXJSYW5nZTEpIik7CisgICAgICAgIGRlYnVnKHRlc3RPdXRwdXQpOwog
ICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNo
LXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKaW5kZXggMDJjNTc2
NThhNTZmLi44ZmM1ZmQ3MjQ4YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJv
bS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDE2ICsxLDEzIEBACi1GaXJzdCBs
aW5lIG9mIHRleHQKLWJ1dHRvbgotVGhpcmQgbGluZSBvZiB0ZXh0CiBUaGlzIHRlc3RzIHRoZSBh
YmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFuIGlnbm9yZWQg
ZWxlbWVudC4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBt
ZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogZWxlbWVudC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09PSAnRmlyc3QgbGluZSBvZiB0ZXh0JworUEFT
UzogZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09PSAnYnV0dG9uJwor
UEFTUzogcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IFRoaXJkIGxpbmUg
b2YgdGV4dCcKK1BBU1M6IHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBG
aXJzdCBsaW5lIG9mIHRleHQnCiAKLQotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkgaXMgJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKLVBBU1MgZWxlbWVudC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKSBpcyAnYnV0dG9uJwotUEFTUyByZXN1
bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnCi1Q
QVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2Yg
dGV4dCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQog
CisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXBy
ZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCmluZGV4
IDZlYTgxODdjMDIyNi4uOTVkN2E0NmNlY2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9t
LWlnbm9yZWQtZWxlbWVudC5odG1sCkBAIC0xLDUwICsxLDQ3IEBACiA8IURPQ1RZUEUgSFRNTCBQ
VUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+
Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAorPGRpdiBpZD0iY29udGFpbmVyIiByb2xlPSJn
cm91cCI+CiA8ZGl2IGlkPSJ0ZXN0Ij5GaXJzdCBsaW5lIG9mIHRleHQ8YnI+CiA8YnV0dG9uIGlk
PSJidXR0b24iIGFyaWEtaGlkZGVuPSJ0cnVlIj5idXR0b248L2J1dHRvbj4KIDxicj5UaGlyZCBs
aW5lIG9mIHRleHQ8L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJj
b25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9t
IGFuIGlnbm9yZWQgZWxlbWVudC4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiYm9keSIpLmZvY3VzKCk7Ci0gICAgICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIAorICAgICAgICBsZXQg
b3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxl
IGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LlxuXG4iOworCisgICAgICAgIHZhciBj
b250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
ImNvbnRhaW5lciIpOwogICAgICAgICB2YXIgZWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGVzdCIpLmNoaWxkQXRJbmRleCgwKTsKLSAgICAg
ICAgdmFyIG1hcmtlclJhbmdlID0gZWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVs
ZW1lbnQpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidGaXJzdCBsaW5lIG9mIHRleHQnIik7Ci0gICAgICAgIAotICAg
ICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVkIGVsZW1lbnQgdXNpbmcgbGluZSB0ZXh0IG1h
cmtlciBjYWxscwotICAgICAgICB2YXIgdGV4dE1hcmtlciA9IGVsZW1lbnQuZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSk7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBl
bGVtZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB0ZXh0TWFya2VyID0g
ZWxlbWVudC5uZXh0VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgdmFyIGxpbmVSYW5n
ZSA9IGVsZW1lbnQubGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7
Ci0gICAgICAgIHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShsaW5l
UmFuZ2UpIiwgIididXR0b24nIik7Ci0gICAgICAgIAotICAgICAgICB0ZXh0TWFya2VyID0gZWxl
bWVudC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKTsKLSAgICAg
ICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICAKKyAgICAgICAgdmFyIHJhbmdlID0gZWxlbWVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ0ZpcnN0
IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVkIGVs
ZW1lbnQgdXNpbmcgbGluZSB0ZXh0IG1hcmtlciBjYWxscy4KKyAgICAgICAgdmFyIG1hcmtlciA9
IGVsZW1lbnQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAg
IG1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgbWFya2Vy
ID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICByYW5nZSA9IGVsZW1l
bnQubGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwg
IididXR0b24nIik7CisKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5zdGFydFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB2YXIgc3RhcnRFbGVtZW50ID0gZWxl
bWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyKTsKKwogICAgICAg
ICAvLyBTZWFyY2ggZm9yd2FyZAotICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5l
ckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwg
IkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7
Ci0gICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNo
S2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVu
dC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOworCiAgICAg
ICAgIC8vIFNlYXJjaCBiYWNrd2FyZAotICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVy
RWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBmYWxzZSwg
IkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1
bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnIik7
CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFs
c2UpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVl
IiwgIidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnIik7CisKKyAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsK
KyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0gICAgICAgIAogPC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwv
Ym9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZv
ci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0
bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKaW5kZXggY2RjYzc3YzNjODcxLi42
YTdkMmY3OGEzZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Rl
eHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQK
QEAgLTEsMjgxICsxLDIwNyBAQAotVGhpbmsgZGlmZmVyZW50IEFwcGxlCi0KLWJvbGQgaXRhbGlj
Ci11bmRlcmxpbmUgbGFzdCEKLQotSGVsbG8gV29ybGQhCi1UaGlzIHRlc3QgdGhhdCB0ZXh0TWFy
a2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgotCitUaGlzIHRlc3RzIHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJv
cGVybHkuCiAKIGNvbnRlbnQgbGVuZ3RoOiA2NQogQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8g
ZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Ci0wCi0nJwotMQotJ1QnCi0yCi0nVGgnCi0zCi0n
VGhpJwotNAotJ1RoaW4nCi01Ci0nVGhpbmsnCi02Ci0nVGhpbmsgJwotNwotJ1RoaW5rIGQnCi04
Ci0nVGhpbmsgZGknCi05Ci0nVGhpbmsgZGlmJwotMTAKLSdUaGluayBkaWZmJwotMTEKLSdUaGlu
ayBkaWZmZScKLTEyCi0nVGhpbmsgZGlmZmVyJwotMTMKLSdUaGluayBkaWZmZXJlJwotMTQKLSdU
aGluayBkaWZmZXJlbicKLTE1Ci0nVGhpbmsgZGlmZmVyZW50JwotMTYKLSdUaGluayBkaWZmZXJl
bnQgJwotMTcKLSdUaGluayBkaWZmZXJlbnQgQScKLTE4Ci0nVGhpbmsgZGlmZmVyZW50IEFwJwot
MTkKLSdUaGluayBkaWZmZXJlbnQgQXBwJwotMjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbCcKLTIx
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUnCi0y
MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMCAnJworMSAnVCcKKzIgJ1RoJworMyAnVGhpJwor
NCAnVGhpbicKKzUgJ1RoaW5rJworNiAnVGhpbmsgJworNyAnVGhpbmsgZCcKKzggJ1RoaW5rIGRp
JworOSAnVGhpbmsgZGlmJworMTAgJ1RoaW5rIGRpZmYnCisxMSAnVGhpbmsgZGlmZmUnCisxMiAn
VGhpbmsgZGlmZmVyJworMTMgJ1RoaW5rIGRpZmZlcmUnCisxNCAnVGhpbmsgZGlmZmVyZW4nCisx
NSAnVGhpbmsgZGlmZmVyZW50JworMTYgJ1RoaW5rIGRpZmZlcmVudCAnCisxNyAnVGhpbmsgZGlm
ZmVyZW50IEEnCisxOCAnVGhpbmsgZGlmZmVyZW50IEFwJworMTkgJ1RoaW5rIGRpZmZlcmVudCBB
cHAnCisyMCAnVGhpbmsgZGlmZmVyZW50IEFwcGwnCisyMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
JworMjIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIzICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogJwotMjQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI0ICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYicKLTI1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNSAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvJwotMjYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI2ICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sJwotMjcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI3ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCcKLTI4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisy
OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgJwotMjkKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzI5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpJwotMzAKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzMwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdCcKLTMx
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgaXRhJwotMzIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMyICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsJwotMzMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMzICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaScKLTM0Ci0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiszNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljJwotMzUKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzM1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKICcKLTM2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNiAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1JwotMzcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM3ICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuJwotMzgKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzM4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZCcKLTM5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszOSAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bmRlJwotNDAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQwICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVyJwotNDEKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzQxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGVybCcKLTQyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MiAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpJwotNDMKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzQzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluJwot
NDQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZScKLTQ1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NSAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgJwotNDYKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzQ2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsJwotNDcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ3ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYScKLTQ4Ci0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCis0OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRh
bGljCiB1bmRlcmxpbmUgbGFzJwotNDkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ5ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0JwotNTAKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzUwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MSAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEnCi01
MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vCcKLTUzCi0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis1MyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
bmUgbGFzdCEKIAog77+8SCcKLTU0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NCAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGUn
Ci01NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbCcKLTU2Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis1NiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbCcKLTU3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1
NyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEK
IAog77+8SGVsbG8nCi01OAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTggJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvICcK
LTU5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1OSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gVycKLTYwCi0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis2MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV28nCi02MQotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGxhc3QhCiAKIO+/vEhlbGxvIFdvcicKLTYyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MiAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog
77+8SGVsbG8gV29ybCcKLTYzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MyAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8g
V29ybGQnCi02NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjQgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCkBAIC0yOTEsNyArMjE3LDExIEBA
IHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCEnCiAnJworCiBQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2Uu
aHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9y
LXJhbmdlLmh0bWwKaW5kZXggY2UxY2JmMmVlZmUzLi5jMzA0OTg2N2IwNTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdl
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5n
ZS1mb3ItcmFuZ2UuaHRtbApAQCAtMSw5ICsxLDkgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9k
eSI+Cis8Ym9keT4KIAogPGRpdiBpZD0iY29udGVudCIgcm9sZT0iZ3JvdXAiPgogICAgIDxwPlRo
aW5rIDxlbT5kaWZmZXJlbnQ8L2VtPiA8YSBocmVmPSJhcHBsZS5jb20iPkFwcGxlPC9hPjwvcD4K
QEAgLTExLDM2ICsxMSwzNCBAQAogICAgIDxidXR0b24+SGVsbG8gV29ybGQhPC9idXR0b24+CiA8
L2Rpdj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KLQogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtl
clJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIGF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlD
b250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOwotICAgICAgICBjb250
ZW50VGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
YXhFbGVtZW50KTsKLSAgICAgICAgdGV4dExlbmd0aCA9IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UoY29udGVudFRleHRNYXJrZXJSYW5nZSkubGVuZ3RoOwotICAgICAgICBkZWJ1
ZygiY29udGVudCBsZW5ndGg6ICIgKyB0ZXh0TGVuZ3RoKTsKKyAgICAgICAgbGV0IG91dHB1dCA9
ICJUaGlzIHRlc3RzIHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHku
XG5cbiI7CiAKLSAgICAgICAgZGVidWcoIkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2gg
Y2hhcmFjdGVyIGluIHRoZSB0ZXh0OiIpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dExl
bmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBkZWJ1ZyhpKTsKLSAgICAgICAgICAgIHRleHRNYXJr
ZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsKLSAgICAg
ICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAgIGxldCBjb250ZW50ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIGxl
dCByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChjb250ZW50KTsKKyAg
ICAgICAgbGV0IGNvbnRlbnRMZW5ndGggPSBjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShyYW5nZSkubGVuZ3RoOworICAgICAgICBvdXRwdXQgKz0gYGNvbnRlbnQgbGVuZ3RoOiAke2Nv
bnRlbnRMZW5ndGh9XG5gOworCisgICAgICAgIG91dHB1dCArPSAiQWxsIHJhbmdlcyBmcm9tIGlu
ZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6XG4iOworICAgICAgICBmb3IgKGkg
PSAwOyBpIDwgY29udGVudExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICByYW5nZSA9IGNvbnRl
bnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgaSk7CisgICAgICAgICAgICBvdXRwdXQgKz0g
YCR7aX0gJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CiAg
ICAgICAgIH0KIAotICAgICAgICBkZWJ1ZygiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBw
bGU6Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSgxNiwgNSk7Ci0gICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAgIG91dHB1
dCArPSAiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6XG4iOworICAgICAgICByYW5n
ZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMTYsIDUpOworICAgICAgICBvdXRw
dXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwor
CisgICAgICAgIG91dHB1dCArPSAiT3V0IG9mIHJhbmdlIHZhbHVlczpcbiI7CisgICAgICAgIHJh
bmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCAxMDApOworICAgICAgICBv
dXRwdXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5g
OworICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEw
MCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UocmFuZ2UpfSdcbmA7CiAKLSAgICAgICAgZGVidWcoIk91dCBvZiByYW5nZSB2YWx1ZXM6Iik7
Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JS
YW5nZSgwLCAxMDApOwotICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOwotICAgICAgICB0ZXh0TWFya2Vy
UmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7Ci0gICAg
ICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1h
cmtlclJhbmdlKSArICInIik7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250
ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQp
OwogICAgIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1u
b2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUt
cG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQKaW5kZXggOTE1ZDU2OWMw
ZWQwLi5kODRiOGIyMDE3NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1m
b3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSw3IEBACi1UaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2gg
aW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBp
dCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3
aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENP
TVBMRVRFIi4KK1BBU1M6IGNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwoZWxlbWVudCkg
PT09IHRydWUKIAotCi1QQVNTIGNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVs
ZW1lbnQpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJs
ZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAppbmRl
eCBjNzI1N2Q1ODVkMWEuLjYyZWI0ZTM1MjJlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFz
aC1mb3ItdGV4dC1ub2RlLmh0bWwKQEAgLTEsNDAgKzEsMzEgQEAKIDwhRE9DVFlQRSBIVE1MIFBV
QkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4K
LTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08ZGl2IGlkPSJjb250ZW50IiB0YWJpbmRleD0i
MCIgc3R5bGU9IndpZHRoOjIwMHB4OyI+Cis8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0id2lkdGg6
MjAwcHg7Ij4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiAKIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiA8L2Rp
dj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LQogPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBj
cmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0
aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy4iKTsKLQogICAgIGlmICh3
aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJU
aGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQg
Zm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQg
b2JqZWN0cy5cblxuIjsKIAotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250
ZW50IikuZm9jdXMoKTsKLSAgICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotCi0gICAgICAgICAgLy8gR2V0IHRoZSB0ZXh0IG1hcmtl
ciBhdCB0aGlzIHBvaW50LiBJdCBzaG91bGQgbm90IGNyYXNoLgotICAgICAgICAgIHZhciBtYXJr
ZXJBdFBvaW50ID0gY29udGVudC50ZXh0TWFya2VyRm9yUG9pbnQoY29udGVudC54ICsgY29udGVu
dC53aWR0aC8yLCBjb250ZW50LnkgKyBjb250ZW50LmhlaWdodC8yKTsKLSAgICAgICAgICB2YXIg
dGV4dEVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlciht
YXJrZXJBdFBvaW50KTsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgLy8gR2V0IHRo
ZSB0ZXh0IG1hcmtlciBhdCB0aGlzIHBvaW50LiBJdCBzaG91bGQgbm90IGNyYXNoLgorICAgICAg
ICB2YXIgbWFya2VyID0gY29udGVudC50ZXh0TWFya2VyRm9yUG9pbnQoY29udGVudC54ICsgY29u
dGVudC53aWR0aCAvIDIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVpZ2h0IC8gMik7CisgICAgICAg
IC8vIFZlcmlmeSB0aGUgZWxlbWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIHdhbnRlZC4K
KyAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJjb250ZW50LmNoaWxk
QXRJbmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIFZl
cmlmeSB0aGUgZWxlbWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIHdhbnRlZC4KLSAgICAg
ICAgICB2YXIgdGV4dEVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihtYXJrZXJBdFBvaW50KTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoImNvbnRlbnQu
Y2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVsZW1lbnQpIik7CisgICAgICAgIGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOwor
ICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3Jj
PSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwv
aHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtl
ci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAppbmRleCA1ZWQz
YmQwZDA2ZGUuLjM4ZjEzZWQ3YTNlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1u
ZXh0Lmh0bWwKQEAgLTEsMTUgKzEsMTcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxtZXRhIGNoYXJzZXQ9IlVURi0x
NiI+CiA8L2hlYWQ+CiA8c3R5bGU+CiAudXNlcnNlbGVjdCB7IHVzZXItc2VsZWN0OiBub25lOyAt
d2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CiA8L3N0eWxlPgotPGJvZHkgaWQ9ImJvZHkiPgor
PGJvZHk+CiAKLTxkaXYgaWQ9InRleHQiIHRhYmluZGV4PSIwIj50ZXh0PC9kaXY+Cis8ZGl2IGlk
PSJjb250ZW50Ij4KKzxkaXYgaWQ9InRleHQiPnRleHQ8L2Rpdj4KIDxicj4KIHRleHQxCiAKQEAg
LTMyLDI5ICszNCw0NSBAQCBmCiA8cCBpZD0idGV4dDYiPmEgICAgIGI8L3A+CiAKIDxwIGlkPSJ0
ZXh0NyI+YXVkaW88YXVkaW8gY29udHJvbHM+PC9hdWRpbz5maWxlPC9wPgotCi08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAKIDxzY3Jp
cHQ+CisgICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRN
YXJrZXIsIG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
KyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKKyAgICAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSBvYmoubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01h
cmtlciwKKyAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyLCBvYmopIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsr
KSB7CisgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIo
cHJldmlvdXNNYXJrZXIpOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5wcmV2aW91
c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKKyAgICAgICAgICAgIGN1cnJl
bnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAgICB9CiAKLSAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGlt
cGxlbWVudGVkIGNvcnJlY3RseS4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOwotICAgICAgICAvLyBH
ZXQgdGhlIGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRl
eCgwKTsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgbmV4
dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3Rs
eS5cblxuIjsKKworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAv
LyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0L2VuZCBtYXJrZXIgZm9yIHRoaXMgcmFu
Z2UuCiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxl
bmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAi
NCIpOworCiAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIHZhciBlbmRNYXJrZXIg
PSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsK
LSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOwotICAgICAgICBzaG91bGRCZVRydWUo
InRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVh
bCh0ZXh0KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCki
LCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwor
CiAgICAgICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hhcmFjdGVy
cywgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAgICB2YXIgY3VycmVudE1hcmtlciwgcHJl
dmlvdXNNYXJrZXIsIG1hcmtlclJhbmdlOzsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvcndhcmQo
NSwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKQEAgLTYyLDU4ICs4MCw1NyBA
QCBmCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB2YXIgbmV3bGluZSA9ICdcbic7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3
bGluZSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKKwogICAgICAgICAv
LyBBZHZhbmNlIG9uZSBtb3JlIGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZGUgYXQgInQiIGluICJ0
ZXh0MSIuCiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91
czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJr
ZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwg
Y3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAi
J3QnIik7CisKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBtYXJrZXIuIChUcmF2ZXJz
ZSBiYWNrd2FyZHMgb25lIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAg
ICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRl
eHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
cik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAibmV3bGluZSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUi
KTsKKwogICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIG1vcmUgY2hhcmFjdGVyLCBp
dCB3aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0Ii4KICAgICAgICAgcmVz
dWx0ID0gYmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsK
ICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwog
ICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1OYW1lID09ICJtYWMi
KQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICIndCcgKyBuZXdsaW5lIik7CisgICAgICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnICsg
bmV3bGluZSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworICAgICAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIid0JyIpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcmVwbGFjZWQg
bm9kZQogICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoInRleHQyIik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UyID0g
dGV4dDIudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0Mik7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikiLCAiNSIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4
dE1hcmtlclJhbmdlMikiLCAiNSIpOwogICAgICAgICB2YXIgc3RyID0gdGV4dDIuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpLnJlcGxhY2UoU3RyaW5nLmZyb21DaGFy
Q29kZSg2NTUzMiksICJbQVRUQUNITUVOVF0iKTsKLSAgICAgICAgZGVidWcoIk9iamVjdCBzdHJp
bmcgZm9yIHJhbmdlOiAiICsgc3RyKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBgT2Jq
ZWN0IHN0cmluZyBmb3IgcmFuZ2U6ICR7c3RyfVxuYDsKKwogICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5n
ZTIpOwogICAgICAgICAvLyBBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0ICJk
Ii4KICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1h
cmtlciwgdGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsK
ICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAi
J2QnIik7CisKICAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIDYgY2hhcmFjdGVycywgaXQg
d2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dDEiLgogICAgICAgICByZXN1
bHQgPSBiYWNrd2FyZHMoNiwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsK
ICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJzEnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOworCiAgICAg
ICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggdXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRleHRNYXJr
ZXIvcHJldmlvdXNUZXh0TWFya2VyIHNob3VsZCBzdGlsbCB3b3JrLgotICAgICAgICB2YXIgdGV4
dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQz
Iik7Ci0gICAgICAgIHRleHQzID0gdGV4dDMuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAKKyAg
ICAgICAgdmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJ0ZXh0MyIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAvLyBBZHZhbmNlIHRv
IGxhbmQgYXQgdXNlci1zZWxlY3Q6bm9uZSBub2RlLgogICAgICAgICB2YXIgbWFya2VyMSwgbWFy
a2VyMjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxODsgaSsrKSB7CkBAIC0xMjUsMzQg
KzE0MiwzMSBAQCBmCiAgICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7
CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyht
YXJrZXIxLCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0
JyIpOwogICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aGUgc2Vjb25kIG1hcmtlciBmb3Ig
NiBjaGFyYWN0ZXJzLCB0aGUgcmFuZ2Ugc2hvdWxkIGJlICJzZWwiCi0gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsr
KQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQzLnByZXZpb3VzVGV4dE1hcmtlcihj
dXJyZW50TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1hcmtl
cjsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KG1hcmtlcjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOworICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidz
ZWwnIik7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCBwYXNzd29yZCBmaWVsZC4K
ICAgICAgICAgdmFyIHBzdyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgicHN3Iik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UzID0gcHN3LnRleHRN
YXJrZXJSYW5nZUZvckVsZW1lbnQocHN3KTsKICAgICAgICAgdmFyIHN0YXJ0ID0gcHN3LnN0YXJ0
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UzKTsKLSAgICAgICAg
c2hvdWxkQmVUcnVlKCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dCkiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoIiFwc3cuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIsICJ0cnVlIik7CisKICAgICAgICAgLy8g
Q2hlY2sgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBjYWxsIHdpbGwgc2tpcCBwYXNzd29yZCBm
aWVsZAogICAgICAgICAvLyBXZSBzdGFydCBmcm9tIHRleHQyIGFuZCBhZHZhbmNlIDYgY2hhcmFj
dGVycywgaXQgc2hvdWxkIHNraXAgdGhlIHBhc3N3b3JkIGZpZWxkIGFuZCBsYW5kIG9uIHRleHQz
LgogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDY7IGkrKykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsK
LSAgICAgICAgfQotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiLCAidHJ1ZSIpOwogICAgICAgICAvLyBD
aGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlciwgaXQgc2hvdWxkIGxhbmQgb24gIiBkIiBub2RlLgog
ICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRN
YXJrZXIpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxk
QXRJbmRleCgyKSkiKTsKLSAgICAgICAgCi0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtl
cikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIiwgInRydWUiKTsKKwogICAgICAgICAv
LyBNYWtlIHN1cmUgdGhhdCB0ZXh0IG5vZGUgd2l0aCBsaW5lIGJyZWFrcywgd2UgY2FuIGdvIHRo
cm91Z2ggaXQgd2l0aCBuZXh0L3ByZXZpb3VzIGNhbGwuCiAgICAgICAgIHRleHQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ0Iik7CiAgICAgICAg
IHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsK
QEAgLTE2Myw4NyArMTc3LDY0IEBAIGYKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtl
clJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBj
dXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIiwgIidmJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidm
JyIpOworCiAgICAgICAgIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gZW5kTWFy
a2VyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykgeworICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IDc7IGkrKykKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBt
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwg
Y3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIn
YSciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBlbW9qaS4KICAgICAgICAgdGV4dCA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDUiKTsK
ICAgICAgICAgdmFyIGVtb2ppVGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwg
IjQiKTsKICAgICAgICAgLy8gTWFrZSBzdXJlIG5hdmlnYXRpbmcgbmV4dC9wcmV2aW91cyB0ZXh0
IG1hcmtlciBpcyBieSBlbW9qaS4KICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShlbW9qaVRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAg
IHJlc3VsdCA9IGZvcndhcmQoMiwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSki
LCAiJ/CfmI8nIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlv
dXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmI8nIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3
YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAg
c2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMn
Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2Fz
ZSB3aXRoIGNvbGxhcHNlZCB3aGl0ZXNwYWNlLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NiIpOwogICAgICAgICB2YXIg
Y29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JF
bGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5n
dGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CisgICAgICAgIG91dHB1
dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3Bh
Y2VNYXJrZXJSYW5nZSkiLCAiMyIpOwogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5n
ZSk7CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFy
a2VyLCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkiLCAiJ2EnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CiAgICAgICAgIHJlc3VsdCA9
IGZvcndhcmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicg
JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYiciKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn
YiciKTsKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKICAgICAgICAg
cmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRl
eHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSIsICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CisKICAgICAgICAgLy8g
VGVzdCBjYXNlIHdpdGggcmVwbGFjZWQgZWxlbWVudHMgKHNob3VsZCB1c2Ugb2JqZWN0IHJlcGxh
Y2VtZW50IGNoYXJhY3RlcikuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ3Iik7CiAgICAgICAgIHRleHRNYXJrZXJSYW5n
ZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1
ZGlvXHVGRkZDZmlsZSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNmaWxlJyIp
OwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2
OyBpKyspIHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKICAg
ICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJr
ZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91
bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZG
RkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7
CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAgICBwcmV2
aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0g
dGV4dC5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAg
ICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IidcdUZGRkMnIik7CiAKLSAgICAgICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJy
ZW50TWFya2VyOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoubmV4dFRleHRN
YXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKLSAgICAgICAgICAg
ICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0g
ICAgICAgIAotICAgICAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2Vy
LCBjdXJyZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZp
b3VzVGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7Ci0gICAgICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2
aW91c01hcmtlciwKLSAgICAgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAg
ICAgICAgICB9OwotICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRw
dXQpOwogICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQt
bWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1l
eHBlY3RlZC50eHQKaW5kZXggMjkyNjQxYTdlMDM4Li41YTBhMzJjMjhkNzAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQt
bWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5l
eHQtZXhwZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10ZXh0Ci0KLXRleHQxCi1jICBkCi0K
LWNhbid0IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0KLWEgYgotCi1hdWRpb2ZpbGUKLQog
VGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGlt
cGxlbWVudGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBB
U1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBpcyA0Ci1QQVNT
IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0Vx
dWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnICsgbmV3bGluZQotUEFT
UyB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgaXMgNQorUEFT
UzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFT
UzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlz
RXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JyAr
IG5ld2xpbmUKK1BBU1M6IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFu
Z2UyKSA9PT0gNQogT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6IGMgW0FUVEFDSE1FTlRdIGQKLVBB
U1MgdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZCcKLVBB
U1MgdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnMScKLVBB
U1MgdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZWN0Jwot
UEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdzZWwn
Ci1QQVNTICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSBpcyB0
cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKS5pc0VxdWFsKHRleHQzKSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJ
bmRleCgyKSkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgaXMgJ2YnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSBpcyAnYScKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0
TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSBpcyAn8J+YjycKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSBpcyAn8J+YgycKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hp
dGVzcGFjZU1hcmtlclJhbmdlKSBpcyAzCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgaXMgJyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkg
aXMgJ2InCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJyAn
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgaXMgJ2F1ZGlv
77+8ZmlsZScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICfvv7wnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAn77+8JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSA9PT0gJ2QnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpID09PSAnMScKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgPT09ICdlY3QnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpID09PSAnc2VsJworUEFTUzogIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoc3RhcnQpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgPT09IHRydWUK
K1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkgPT09IHRydWUKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2YnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdhJworUEFTUzogdGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YjycKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iDJworUEFTUzog
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdl
KSA9PT0gMworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0g
J2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdiJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgPT09ICdhdWRpb++/vGZp
bGUnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
ICfvv7wnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
PT09ICfvv7wnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQogCisKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464516</attachid>
            <date>2023-01-16 14:36:40 -0800</date>
            <delta_ts>2023-01-17 06:32:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230116173638.patch</filename>
            <type>text/plain</type>
            <size>101228</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA2MzFmNDkxZTY1Y2MzM2FiYjJhZTMwYTVlMTExMWIzODFlMzRhNjUyIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3cgZm9yIHRoZSByZXRyaWV2YWwgb2YgdGhlIFRleHRNYXJr
ZXIgcHJvcGVydGllcyB3aXRob3V0IGhhdmluZyB0byByZXNvdXJjZSB0byB0aGUgdW5kZXJseWlu
ZyBET00gYW5kIFJlbmRlclRyZWUgb2JqZWN0cy4KClRoZSBmb2xsb3dpbmcgTWFjIEFYIEFQSSBh
dHRyaWJ1dGVzIGFyZSBub3cgaW1wbGVtZW50ZWQgd2l0aG91dCBoaXR0aW5nIHRoZSBtYWluIHRo
cmVhZCB1c2luZyBBWFRleHRNYXJrZXIgYW5kIEFYVGV4dE1hcmtlclJhbmdlOgpBWFVJRWxlbWVu
dEZvclRleHRNYXJrZXIKQVhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VycwpBWFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZQpBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UKClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhbiB1cGRhdGUgb2Ygc2V2ZXJhbCBsYXlvdXQg
dGVzdHMgcmVsYXRlZCB0byBUZXh0TWFya2Vycy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAxNiArKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCAgIHwgMTY4ICsrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAyNyArLQogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIHwgMjMyICsrKysrKysrKysrKysrKysrKwogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCAgIHwgMTUxICsrKysrKysr
KysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oICAgIHwgICA3
ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAgfCAgODMg
KysrKysrKwogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSAgIHwg
IDQwICsrLQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gICAgIHwg
IDEyICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAx
MDEgKysrLS0tLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0
ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sICAgICAgICAg
IHwgIDUxICsrLS0KIC4uLnJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4
dCB8ICAxNSArLQogLi4uc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1s
IHwgIDYzICsrKy0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0
ICAgfCAyMTAgKysrKysrLS0tLS0tLS0tLQogLi4uL21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS5odG1sICAgICAgIHwgIDQ4ICsrLS0KIC4uLi1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1u
b2RlLWV4cGVjdGVkLnR4dCB8ICAgNSArLQogLi4uL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9y
LXRleHQtbm9kZS5odG1sIHwgIDM1ICstLQogLi4uL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQu
aHRtbCAgICAgICAgICAgIHwgMTc1ICsrKysrKystLS0tLS0KIC4uLi90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0LWV4cGVjdGVkLnR4dCAgICB8ICA3OCArKystLS0KIDIyIGZpbGVzIGNoYW5nZWQs
IDkwNSBpbnNlcnRpb25zKCspLCA2MzMgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQg
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBjcmVhdGUgbW9k
ZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaAogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0
TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dCBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYzMzczNmM4NTI5ZS4uNTU1NTNkMDEy
NjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIE1vZHVsZXMvd2VieHIvWFJT
ZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBhY2Nlc3NpYmlsaXR5
L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorYWNjZXNzaWJp
bGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKIGFjY2Vz
c2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50
eHQKaW5kZXggYjYzNDk5YjU2MTA5Li4yMDgxZTBkMTgwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVjaFJl
Y29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25pemVy
VGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUltYWdl
Lm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1tCith
Y2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCmluZGV4IDA2NTlkYTIyMTExNy4uYjE1MDM4ZDI4ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTcxLDYgKzQ1
NzEsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5wbSBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1MEEz
MDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAvKiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5w
bCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMw
NTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8qIElE
TFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyMDhBMDI5Mzc5QzZFMDBD
MEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJGMzI3MjQxMkJGMjkwMDlDNzNF
QyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3Np
YmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChXZWFrLCApOyB9OyB9Owog
CQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThBREM0Mjk0QjVBNjIwMDc2Q0JE
QyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0g
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEYyQTQzRjEz
ODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUzMiw2ICsxNjUzMyw5IEBACiAJCUMwNDkz
RUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMDc4
Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVjdE1hYy5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBhdGggPSBtYWMvQVhJc29sYXRl
ZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA4RjEzQTEyNDQ3
NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYTG9nZ2Vy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QTAyOTM3OUM2RTAwQzBE
MkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBB
WFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QTEyOTM3
OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWFRleHRNYXJrZXJDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYzMjUyNDEyQkYyOTAwOUM3M0VD
IC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxh
c3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1keWxpYi1kZWZpbml0aW9u
IjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0gdXNyL2xpYi9saWJBY2Nlc3Np
YmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCUMwRThBREM0Mjk0QjVBNjIw
MDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEYyQTQzRjEz
ODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHByZXBy
b2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjE0OTgsNiArMjE1MDIsNyBAQAogCQkyOUE4MTIwNDBGQkI5QjQx
MDA1MTAyOTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICovLAog
CQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8sCiAJCQkJMjlBRTIxMjkyMUFC
OUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQkyOUE4MTIwNTBGQkI5QjUyMDA1
MTAyOTMgLyogbWFjICovLApAQCAtMjE1NzQsNiArMjE1NzksOCBAQAogCQkJCUMwNDkzRUI3MjQ0
Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMwMEQx
MkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1MTAy
OTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAv
KiBBWFRleHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBB
WFRleHRNYXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlDMEU4QURDNDI5NEI1QTYyMDA3NkNCREMgLyog
QVhUcmVlU3RvcmUuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAzMDAyOEM1OTIgLyogRm9yY2Vk
QWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCkBAIC0zMTY0Miw2ICszMTY0OSwxNCBAQAogCQkJbmFt
ZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUMwRTIwOEI3Mjkz
OTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJY2hp
bGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlckNv
Y29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9IHsK
IAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNTIxNyw2ICszNTIzMiw3
IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0ZWRPYmplY3QuaCBp
biBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBBWElzb2xhdGVk
VHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8qIEFY
T2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIwOEEyMjkzNzlDNkYwMEMwRDJE
MyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQzlGMkY5MUFFM0JFQjAw
MDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0ZvcndhcmRDYWNoZS5oIGluIEhl
YWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAppbmRleCBlZWQ0ODgxZjVmYTAuLjBkNTk4Y2I5ZTI4MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVlLmgi
CiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFRleHRNYXJrZXIuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCkBAIC0y
MjI5LDcgKzIyMzAsNyBAQCBWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBv
c2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmCiAgICAgICAgIHJldHVybiB7
IH07CiAKICAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKTsKLSAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRleHRN
YXJrZXJEYXRhLmF4SUQpKQorICAgIGlmIChjYWNoZSAmJiAhY2FjaGUtPm1faWRzSW5Vc2UuY29u
dGFpbnModGV4dE1hcmtlckRhdGEub2JqZWN0SUQpKQogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbjsKQEAgLTI1MDcsMzcgKzI1MDgsMTggQEAgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRDaGFy
YWN0ZXJPZmZzZXRzKGNvbnMKICAgICByZXR1cm4geyB7ICpzdGFydCwgKmVuZCB9IH07CiB9CiAK
LXZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0
KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7Ci0gICAgICAgIHRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21O
b2RlKTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENvbnZl
cnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGludCB2cE9mZnNldCA9IDA7Ci0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2Jq
ZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRl
eHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJ
bmRleDsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAotICAg
IHRoaXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAgICAg
JiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmNoYXJhY3Rlck9mZnNldC5ub2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciwgeyB9LCAw
LCAwLCB0cnVlIH07CisKKyAgICBzZXROb2RlSW5Vc2UoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpOwor
ICAgIHJldHVybiB7IHRoaXMsIGNoYXJhY3Rlck9mZnNldC5ub2RlLCB2aXNpYmxlUG9zaXRpb25G
cm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCksCisgICAgICAgIGNoYXJhY3Rlck9m
ZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0LCBmYWxzZSB9OwogfQogCiBD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZv
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0LCBib29sIGVudGVy
VGV4dENvbnRyb2xzKQpAQCAtMjU3MSwxNyArMjU1MywxMiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhP
YmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbgogICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9mZnNl
dCwgb3B0aW9ucywgc3RheVdpdGhpblJhbmdlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpz
dGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtl
ckRhdGEsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQorVGV4dE1hcmtl
ckRhdGEgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7Ci0gICAgLy8gVGhpcyBtZW1v
cnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0
ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNr
eSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0g
ICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2Yo
VGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBpc1N0YXJ0KTsK
KyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JS
YW5nZShyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rl
ck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rl
ck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50IG9mZnNldCwgVHJhdmVyc2VP
cHRpb24gb3B0aW9uKQpAQCAtMjYzMCwxNSArMjYwNyw2IEBAIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmIG5vZGUsIGlu
dCBvCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hl
Ojp0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1h
cmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQotewotICAg
IC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2Vy
RGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6
IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJp
dmlhbCB0eXBlLgotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRh
KSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0KLSAgICBzZXRUZXh0TWFya2VyRGF0YVdp
dGhDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci19Ci0K
IGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgcHJldmlvdXMsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgbmV4dCkKIHsKICAgICAvLyBN
YXRjaCB0aGUgYmVoYXZpb3Igb2YgVmlzaWJsZVBvc2l0aW9uLCB3ZSBzaG91bGQgc2tpcCB0aGUg
bm9kZSBib3VuZGFyeSB3aGVuIHRoZXJlJ3Mgbm8gdmlzdWFsIHNwYWNlIG9yIG5ldyBsaW5lIGNo
YXJhY3Rlci4KQEAgLTI2NTcsNDEgKzI2MjUsNTcgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpzaG91
bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29uc3QgQ2gK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
a2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisKK1RleHRN
YXJrZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBDaGFy
YWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0ZXJPZmZzZXQg
cHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0YTsKKyAg
ICBhdXRvIG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBwcmV2aW91cyA9IGNoYXJh
Y3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAgICAgICAg
c2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZz
ZXQobmV4dCwgZmFsc2UpOwogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZpb3Vz
LCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQsIGZh
bHNlKTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIG5leHQpOwotICAgICAgICAKKyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KG5leHQpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIG5leHQg
Q2hhcmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAgICAgICAgIGlmICgh
bGVuZ3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHByZXZpb3Vz
LCBuZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7CiAgICAgICAgIHBy
ZXZpb3VzID0gbmV4dDsKLSAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8IHNo
b3VsZENvbnRpbnVlKTsKKyAgICB9IHdoaWxlIChkYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGlu
dWUpOworICAgIHJldHVybiBkYXRhOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJr
ZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJr
ZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK0FYVGV4dE1h
cmtlciBBWE9iamVjdENhY2hlOjpuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1h
cmtlcikKIHsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7
Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgQVNTRVJU
KG1faWQgPT0gbWFya2VyLmRhdGEoKS50cmVlSUQpOworICAgIHJldHVybiB0ZXh0TWFya2VyRGF0
YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKK30KKworVGV4dE1hcmtlckRhdGEgQVhP
YmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBUZXh0TWFya2VyRGF0
YSBkYXRhOworICAgIGF1dG8gcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBu
ZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwogICAgIGJvb2wgc2hvdWxkQ29udGludWU7CiAgICAgZG8g
ewogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNlOwogICAgICAgICBwcmV2aW91cyA9IHBy
ZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzLCBmYWxzZSk7Ci0gICAgICAgIHRleHRNYXJr
ZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBwcmV2aW91cyk7Ci0gICAg
ICAgIAorICAgICAgICBkYXRhID0gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQocHJl
dmlvdXMpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIHByZXZpb3VzIENoYXJhY3Rlck9m
ZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZvclJh
bmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkpKQog
ICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSB0cnVlOwogICAgICAgICBuZXh0ID0gcHJldmlv
dXM7Ci0gICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51
ZSk7CisgICAgfSB3aGlsZSAoZGF0YS5pZ25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsKKyAgICBy
ZXR1cm4gZGF0YTsKK30KKworQVhUZXh0TWFya2VyIEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzVGV4
dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBU1NFUlQobV9pZCA9
PSBtYXJrZXIuZGF0YSgpLnRyZWVJRCk7CisgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhRm9yUHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKIH0KIAogTm9kZSogQVhPYmplY3RDYWNoZTo6
bmV4dE5vZGUoTm9kZSogbm9kZSkgY29uc3QKQEAgLTI3ODksNTIgKzI3NzMsMzAgQEAgQWNjZXNz
aWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRN
YXJrZXJEYXRhKFRleHRNYXIKICAgICByZXR1cm4gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7
CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRN
YXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvcykKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRN
YXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJs
ZVBvc2l0aW9uKQogewotICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQorICAgIGlmICh2aXNp
YmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAg
ICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAgIE5v
ZGUqIGRvbU5vZGUgPSBkZWVwUG9zLmFuY2hvck5vZGUoKTsKLSAgICBBU1NFUlQoZG9tTm9kZSk7
Ci0gICAgaWYgKCFkb21Ob2RlKQorICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0
aW9uLmRlZXBFcXVpdmFsZW50KCk7CisgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmFuY2hvck5v
ZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwogCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAm
JiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkp
CisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBhbiBhbmNob3Ig
dHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVkIG5vZGUsIHdl
IHNob3VsZAogICAgIC8vIHNldCB0aGUgdGV4dCBtYXJrZXIgZGF0YSB3aXRoIENoYXJhY3Rlck9m
ZnNldCBzbyB0aGF0IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBub2RlLgotICAg
IENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGcm9tVmlz
aWJsZVBvc2l0aW9uKHZpc2libGVQb3MpOwotICAgIGlmIChkZWVwUG9zLmFuY2hvclR5cGUoKSA9
PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IGRlZXBQb3MuYW5jaG9yVHlwZSgp
ID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikgewotICAgICAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0
ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAgIHJldHVy
biB0ZXh0TWFya2VyRGF0YTsKLSAgICB9CisgICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFy
YWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisgICAgaWYg
KHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9y
IHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQ2hp
bGRyZW4pCisgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChj
aGFyYWN0ZXJPZmZzZXQpOwogCi0gICAgLy8gZmluZCBvciBjcmVhdGUgYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QgZm9yIHRoaXMgbm9kZQotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9tTm9k
ZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2Jq
ID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwotCi0gICAgLy8gVGhpcyBtZW1vcnkgbXVz
dCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQg
Zm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQg
YmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgVGV4
dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQq
PigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAg
ICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJE
YXRhLm5vZGUgPSBkb21Ob2RlOwotICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3Mu
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBl
ID0gZGVlcFBvcy5hbmNob3JUeXBlKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2
aXNpYmxlUG9zLmFmZmluaXR5KCk7Ci0KLSAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZz
ZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rl
clN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKLQotICAgIGNhY2hlLT5z
ZXROb2RlSW5Vc2UoZG9tTm9kZSk7Ci0KLSAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAg
YXV0byogY2FjaGUgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBjYWNo
ZS0+c2V0Tm9kZUluVXNlKG5vZGUpOworICAgIHJldHVybiB7IHsgY2FjaGUsIG5vZGUsIHZpc2li
bGVQb3NpdGlvbiwKKyAgICAgICAgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rl
ck9mZnNldC5vZmZzZXQsIGZhbHNlIH0gfTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBleGl0cyBh
cyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCBhIHN5bmNocm9ub3VzIGxheW91
dC4KQEAgLTI4NDMsMjQgKzI4MDUsMjQgQEAgc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4g
QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXgKICAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1
dEVsZW1lbnQ+KHRleHRDb250cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRyb2wu
ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29udHJv
bC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9i
aiA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwotICAgIGlmICghb2JqKQorICAg
IFJlZlB0ciBvYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJnRleHRDb250cm9sKTsKKyAgICBp
ZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRoaXMg
bWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4g
YmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMg
cmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBl
LgogICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0aWNf
Y2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7
Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKKworICAg
IHRleHRNYXJrZXJEYXRhLnRyZWVJRCA9IGNhY2hlLT5tX2lkOworICAgIHRleHRNYXJrZXJEYXRh
Lm9iamVjdElEID0gb2JqZWN0LT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5vZGUg
PSAmdGV4dENvbnRyb2w7CiAKICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7
Ci0KICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggYmNkZjNiYTk4NmIzLi4wMDFkZWMwZTk4
N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBA
IC00NCw2ICs0NCw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAorY2xhc3MgQVhUZXh0TWFya2VyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQXJlYUVs
ZW1lbnQ7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwpAQCAtNTYsMTkgKzU3LDcgQEAgY2xhc3Mg
UmVuZGVyVGV4dDsKIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiBj
bGFzcyBXaWRnZXQ7Ci0KLXN0cnVjdCBUZXh0TWFya2VyRGF0YSB7Ci0gICAgQVhJRCBheElEOwot
Ci0gICAgTm9kZSogbm9kZSB7IG51bGxwdHIgfTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07
Ci0gICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSB7IFBvc2l0aW9uOjpQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3IgfTsKLSAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5OjpE
b3duc3RyZWFtIH07Ci0KLSAgICBpbnQgY2hhcmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKLSAgICBp
bnQgY2hhcmFjdGVyT2Zmc2V0IHsgMCB9OwotICAgIGJvb2wgaWdub3JlZCB7IGZhbHNlIH07Ci19
Oworc3RydWN0IFRleHRNYXJrZXJEYXRhOwogCiBzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0IHsKICAg
ICBOb2RlKiBub2RlOwpAQCAtMTUwLDYgKzEzOSw3IEBAIGNsYXNzIEFYT2JqZWN0Q2FjaGUgOiBw
dWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4KICAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgQVhJc29sYXRlZFRyZWU7CiAgICAgZnJpZW5kIFdU
Rjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBWE9iamVjdENhY2hl
Jik7CisgICAgZnJpZW5kIEFYVGV4dE1hcmtlcjsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBBWE9i
amVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0Q2FjaGUoKTsKQEAgLTIzNiwxNSAr
MjI2LDE3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0IG1hcmtlciB1dGlsaXRpZXMuCiAgICAgc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRp
b24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0TWFya2Vy
RGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1MVGV4
dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0
ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICB2
b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYs
IGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JQcmV2
aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJE
YXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBB
WFRleHRNYXJrZXIgbmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJik7CisgICAgVGV4
dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFya2Vy
KGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAg
IC8vIFVzZSBpZ25vcmVOZXh0Tm9kZVN0YXJ0L2lnbm9yZVByZXZpb3VzTm9kZUVuZCB0byBkZXRl
cm1pbmUgdGhlIGJlaGF2aW9yIHdoZW4gd2UgYXJlIGF0IG5vZGUgYm91bmRhcnkuIAogICAgIENo
YXJhY3Rlck9mZnNldCBuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYs
IGJvb2wgaWdub3JlTmV4dE5vZGVTdGFydCA9IHRydWUpOwogICAgIENoYXJhY3Rlck9mZnNldCBw
cmV2aW91c0NoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9y
ZVByZXZpb3VzTm9kZUVuZCA9IHRydWUpOwotICAgIHZvaWQgc3RhcnRPckVuZFRleHRNYXJrZXJE
YXRhRm9yUmFuZ2UoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wpOwor
ICAgIFRleHRNYXJrZXJEYXRhIHN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiwgYm9vbCk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0T3JFbmRDaGFy
YWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wsIGJvb2wgZW50ZXJU
ZXh0Q29udHJvbHMgPSBmYWxzZSk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJp
bGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNv
bnN0IENoYXJhY3Rlck9mZnNldCYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwpAQCAtNDU2LDcg
KzQ0OCw2IEBAIHByb3RlY3RlZDoKICAgICBDaGFyYWN0ZXJPZmZzZXQgdHJhdmVyc2VUb09mZnNl
dEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBpbnQsIFRyYXZlcnNlT3B0aW9uID0gVHJhdmVy
c2VPcHRpb25EZWZhdWx0LCBib29sIHN0YXlXaXRoaW5SYW5nZSA9IGZhbHNlKTsKICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0RnJvbVZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICB2b2lkIHNldFRleHRN
YXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIgY2hhcmFjdGVyQWZ0ZXIoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0Jik7CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmUoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZz
ZXQoTm9kZSYsIGludCwgVHJhdmVyc2VPcHRpb24gPSBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmJjNGJkM2RjYWJlCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCkBA
IC0wLDAgKzEsMjMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNs
dWRlICJBWFRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFYVHJlZVN0b3JlLmgiCisjaW5jbHVk
ZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBOb2RlKiBub2RlID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuYW5j
aG9yTm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJl
dHVybjsKKworICAgIGF1dG8qIGNhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hl
KCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8gZGF0
YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zaXRp
b24pKQorICAgICAgICBtX2RhdGEgPSAqZGF0YTsKK30KKworQVhUZXh0TWFya2VyOjpBWFRleHRN
YXJrZXIoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBjYWNoZSA9IGNoYXJhY3Rlck9mZnNl
dC5ub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgbV9kYXRhID0gY2Fj
aGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7Cit9
CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworICAg
IG1fZGF0YS5ub2RlID0gbm9kZTsKKworICAgIGF1dG8qIGNhY2hlID0gbV9kYXRhLm5vZGUtPmRv
Y3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVy
bjsKKyAgICBtX2RhdGEudHJlZUlEID0gY2FjaGUtPm1faWQ7CisKKyAgICBhdXRvKiBvYmplY3Qg
PSBjYWNoZS0+Z2V0T3JDcmVhdGUobV9kYXRhLm5vZGUpOworICAgIGlmICghb2JqZWN0KQorICAg
ICAgICByZXR1cm47CisgICAgbV9kYXRhLm9iamVjdElEID0gb2JqZWN0LT5vYmplY3RJRCgpOwor
CisgICAgY2FjaGUtPnNldE5vZGVJblVzZShtX2RhdGEubm9kZSk7Cit9CisKK3ZvaWQgQVhUZXh0
TWFya2VyOjpzZXREYXRhKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFu
Y2hvclR5cGUgYW5jaG9yVHlwZSwgQWZmaW5pdHkgYWZmaW5pdHksIHVuc2lnbmVkIGNoYXJhY3Rl
clN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNN
YWluVGhyZWFkKCkpOworCisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisgICAgbV9k
YXRhLm5vZGUgPSBub2RlOworCisgICAgYXV0byogY2FjaGUgPSBtX2RhdGEubm9kZS0+ZG9jdW1l
bnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fZGF0YS50cmVlSUQgPSBjYWNoZS0+bV9pZDsKKworICAgIGF1dG8qIG9iamVjdCA9IGNh
Y2hlLT5nZXRPckNyZWF0ZShtX2RhdGEubm9kZSk7CisgICAgaWYgKCFvYmplY3QpCisgICAgICAg
IHJldHVybjsKKyAgICBtX2RhdGEub2JqZWN0SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisKKyAg
ICBtX2RhdGEub2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZGF0YS5hbmNob3JUeXBlID0gYW5jaG9y
VHlwZTsKKyAgICBtX2RhdGEuYWZmaW5pdHkgPSBhZmZpbml0eTsKKworICAgIG1fZGF0YS5jaGFy
YWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyU3RhcnRJbmRleDsKKyAgICBtX2RhdGEuY2hhcmFj
dGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0OworfQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9y
IFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIGlmIChpc051bGwoKSB8fCBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4geyB9OworCisgICAgUG9zaXRpb24gcG9zaXRpb247CisgICAgaWYgKG1fZGF0YS5h
bmNob3JUeXBlID09IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpCisgICAgICAg
IHBvc2l0aW9uID0gUG9zaXRpb24obm9kZSgpLCBtX2RhdGEub2Zmc2V0LCBtX2RhdGEuYW5jaG9y
VHlwZSk7CisgICAgZWxzZQorICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwgbV9k
YXRhLmFuY2hvclR5cGUpOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbihw
b3NpdGlvbiwgbV9kYXRhLmFmZmluaXR5KTsKKyAgICBhdXRvIGRlZXBQb3NpdGlvbiA9IHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgIGlmIChkZWVwUG9zaXRpb24uaXNOdWxs
KCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGRlZXBQb3Np
dGlvbi5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVu
dCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNl
LmNvbnRhaW5zKG1fZGF0YS5vYmplY3RJRCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0
dXJuIHZpc2libGVQb3NpdGlvbjsKK30KKworQVhUZXh0TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0
ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBp
ZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBD
aGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG5vZGUoKSwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgs
IG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAgIC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3
cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4
dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAvLyBXZSB1
c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhl
IFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKSB7
CisgICAgICAgIGlmIChhdXRvIGNhY2hlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRy
ZWVGb3JJRChtX2RhdGEudHJlZUlEKSkKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+cHJldmlv
dXNDaGFyYWN0ZXJPZmZzZXQocmVzdWx0LCBmYWxzZSk7CisgICAgfQorICAgIHJldHVybiByZXN1
bHQ7Cit9CisKK0FYQ29yZU9iamVjdCogQVhUZXh0TWFya2VyOjpvYmplY3QoKSBjb25zdAorewor
ICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRvIHRy
ZWUgPSBBWFRyZWVTdG9yZTxBWE9iamVjdENhY2hlPjo6dHJlZUZvcklEKHRyZWVJRCgpKTsKKyAg
ICByZXR1cm4gdHJlZSA/IHRyZWUtPm9iamVjdEZvcklEKG9iamVjdElEKCkpIDogbnVsbHB0cjsK
K30KKworI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKK1N0cmluZyBBWFRleHRNYXJrZXI6OmRl
YnVnRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0
dXJuICI8bnVsbD4iX3M7CisKKyAgICBhdXRvIHNlcGFyYXRvciA9ICIsICI7CisgICAgcmV0dXJu
IG1ha2VTdHJpbmcoCisgICAgICAgICJ0cmVlSUQgIiwgdHJlZUlEKCkubG9nZ2luZ1N0cmluZygp
CisgICAgICAgICwgc2VwYXJhdG9yLCAib2JqZWN0SUQgIiwgb2JqZWN0SUQoKS5sb2dnaW5nU3Ry
aW5nKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsIG5vZGUoKS0+ZGVidWdEZXNjcmlwdGlvbigpCisg
ICAgICAgICwgc2VwYXJhdG9yLCAib2Zmc2V0ICIsIG1fZGF0YS5vZmZzZXQKKyAgICAgICAgLCBz
ZXBhcmF0b3IsICJBbmNob3JUeXBlICIsIG1fZGF0YS5hbmNob3JUeXBlCisgICAgICAgICwgc2Vw
YXJhdG9yLCAiQWZmaW5pdHkgIiwgbV9kYXRhLmFmZmluaXR5CisgICAgICAgICwgc2VwYXJhdG9y
LCAiY2hhcmFjdGVyU3RhcnRJbmRleCAiLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleAorICAg
ICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAiLCBtX2RhdGEuY2hhcmFjdGVyT2Zm
c2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIsIGlzSWdub3JlZCgpCisgICAg
KTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29u
c3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorICAgIDogbV9zdGFydChyYW5nZS5zdGFy
dCkKKyAgICAsIG1fZW5kKHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3Qgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNo
ZSA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNh
Y2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXJ0ID0gQVhUZXh0TWFya2VyKGNhY2hl
LT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCB0cnVlKSk7CisgICAg
bV9lbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JS
YW5nZSgqcmFuZ2UsIGZhbHNlKSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJr
ZXJSYW5nZShjb25zdCBBWFRleHRNYXJrZXImIHMsIGNvbnN0IEFYVGV4dE1hcmtlciYgZSkKKyAg
ICA6IG1fc3RhcnQocykKKyAgICAsIG1fZW5kKGUpCit7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdl
OjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBtX3N0YXJ0LCBtX2VuZCB9OworfQorCitzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJSYW5nZTo6c2ltcGxlUmFuZ2UoKSBj
b25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHN0YXJ0Qm91
bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fc3RhcnQpOworICAgIGF1dG8gZW5kQm91
bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZW5kKTsKKyAgICBpZiAoIXN0YXJ0Qm91
bmRhcnlQb2ludCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICByZXR1cm4geyB7ICpzdGFydEJvdW5kYXJ5UG9pbnQsICplbmRCb3VuZGFyeVBv
aW50IH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi44M2Q0MGFkOTE4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCituYW1l
c3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBUZXh0TWFya2VyRGF0YSB7CisgICAgQVhJRCB0cmVl
SUQ7CisgICAgQVhJRCBvYmplY3RJRDsKKworICAgIE5vZGUqIG5vZGUgeyBudWxscHRyIH07Cisg
ICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworICAgIFBvc2l0aW9uOjpBbmNob3JUeXBlIGFuY2hv
clR5cGUgeyBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH07CisgICAgQWZmaW5p
dHkgYWZmaW5pdHkgeyBBZmZpbml0eTo6RG93bnN0cmVhbSB9OworCisgICAgdW5zaWduZWQgY2hh
cmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQgeyAw
IH07CisgICAgYm9vbCBpZ25vcmVkIHsgZmFsc2UgfTsKKworICAgIFRleHRNYXJrZXJEYXRhKCkg
PSBkZWZhdWx0OworICAgIFRleHRNYXJrZXJEYXRhKEFYSUQgdHJlZUlELCBBWElEIG9iamVjdElE
LAorICAgICAgICBOb2RlKiBub2RlID0gbnVsbHB0ciwgdW5zaWduZWQgb2Zmc2V0ID0gMCwKKyAg
ICAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSA9IFBvc2l0aW9uOjpQb3NpdGlv
bklzT2Zmc2V0SW5BbmNob3IsCisgICAgICAgIEFmZmluaXR5IGFmZmluaXR5ID0gQWZmaW5pdHk6
OkRvd25zdHJlYW0sCisgICAgICAgIHVuc2lnbmVkIGNoYXJTdGFydCA9IDAsIHVuc2lnbmVkIGNo
YXJPZmZzZXQgPSAwLCBib29sIGlnbm9yZWQgPSBmYWxzZSkKKyAgICAgICAgICAgIDogdHJlZUlE
KHRyZWVJRCksIG9iamVjdElEKG9iamVjdElEKQorICAgICAgICAgICAgLCBub2RlKG5vZGUpLCBv
ZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBhbmNob3JUeXBlKGFuY2hvclR5cGUpLCBhZmZp
bml0eShhZmZpbml0eSkKKyAgICAgICAgICAgICwgY2hhcmFjdGVyU3RhcnRJbmRleChjaGFyU3Rh
cnQpLCBjaGFyYWN0ZXJPZmZzZXQoY2hhck9mZnNldCksIGlnbm9yZWQoaWdub3JlZCkKKyAgICB7
IH0KKyAgICBUZXh0TWFya2VyRGF0YShBWE9iamVjdENhY2hlKiBjYWNoZSwgTm9kZSogbm9kZSwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCisgICAgICAgIGludCBjaGFy
U3RhcnQgPSAwLCBpbnQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZCA9IGZhbHNlKQorICAg
ICAgICAgICAgOiBub2RlKG5vZGUpCisgICAgICAgICAgICAsIGlnbm9yZWQoaWdub3JlZCkKKyAg
ICB7CisgICAgICAgIGlmIChjYWNoZSkgeworICAgICAgICAgICAgdHJlZUlEID0gY2FjaGUtPnRy
ZWVJRCgpOworCisgICAgICAgICAgICBpZiAoUmVmUHRyIG9iamVjdCA9IGNhY2hlLT5nZXRPckNy
ZWF0ZShub2RlKSkKKyAgICAgICAgICAgICAgICBvYmplY3RJRCA9IG9iamVjdC0+b2JqZWN0SUQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgb2Zmc2V0ID0gIXZpc2libGVQb3NpdGlvbi5pc051
bGwoKSA/IHN0ZDo6bWF4KHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIDApIDog
MDsKKyAgICAgICAgYW5jaG9yVHlwZSA9IHBvc2l0aW9uLmFuY2hvclR5cGUoKTsKKyAgICAgICAg
YWZmaW5pdHkgPSB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKKworICAgICAgICBjaGFyYWN0
ZXJTdGFydEluZGV4ID0gc3RkOjptYXgoY2hhclN0YXJ0LCAwKTsKKyAgICAgICAgY2hhcmFjdGVy
T2Zmc2V0ID0gc3RkOjptYXgoY2hhck9mZnNldCwgMCk7CisgICAgfQorfTsKKworY2xhc3MgQVhU
ZXh0TWFya2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xh
c3MgQVhUZXh0TWFya2VyUmFuZ2U7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzCisgICAg
QVhUZXh0TWFya2VyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIEFYVGV4dE1hcmtlcihj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIoY29uc3QgVGV4dE1hcmtl
ckRhdGEmIGRhdGEpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeyB9CisgICAgQVhUZXh0
TWFya2VyKFRleHRNYXJrZXJEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAg
ICB7IH0KKyAgICBBWFRleHRNYXJrZXIoTm9kZSopOworI2lmIFBMQVRGT1JNKENPQ09BKQorICAg
IEFYVGV4dE1hcmtlcihBWFRleHRNYXJrZXJSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2Vy
KCkgPSBkZWZhdWx0OworCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051
bGwoKTsgfQorICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0OworICAgIG9wZXJh
dG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcGxhdGZvcm1PYmplY3QoKSBjb25zdDsKKyAgICBv
cGVyYXRvciBBWFRleHRNYXJrZXJSZWYoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVjdCgp
LmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRpZgorCisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7IHJl
dHVybiBtX2RhdGEudHJlZUlEOyB9CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5vYmplY3RJRDsgfQorICAgIEFYQ29yZU9iamVjdCogb2JqZWN0KCkgY29uc3Q7CisK
KyAgICBUZXh0TWFya2VyRGF0YSBjb25zdCYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsg
fQorICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm9kZTsgfQorICAgIGJv
b2wgaXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlnbm9yZWQ7IH0KKworI2lmIEVO
QUJMRShUUkVFX0RFQlVHR0lORykKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0
OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAh
bV9kYXRhLnRyZWVJRC5pc1ZhbGlkKCkgfHwgIW1fZGF0YS5vYmplY3RJRC5pc1ZhbGlkKCk7IH0K
KyAgICB2b2lkIHNldERhdGEoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFuY2hv
clR5cGUsIEFmZmluaXR5LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25lZCBj
aGFyYWN0ZXJPZmZzZXQpOworICAgIFRleHRNYXJrZXJEYXRhIG1fZGF0YTsKK307CisKK2NsYXNz
IEFYVGV4dE1hcmtlclJhbmdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMuCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlz
aWJsZVBvc2l0aW9uUmFuZ2UmKTsKKyAgICBBWFRleHRNYXJrZXJSYW5nZShjb25zdCBzdGQ6Om9w
dGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIEFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IEFYVGV4
dE1hcmtlciYsIGNvbnN0IEFYVGV4dE1hcmtlciYpOworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBB
WFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJlZik7CisjZW5kaWYKKyAgICBBWFRl
eHRNYXJrZXJSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIG9wZXJhdG9yIGJvb2woKSBjb25zdCB7
IHJldHVybiAhbV9zdGFydC5pc051bGwoKSAmJiAhbV9lbmQuaXNOdWxsKCk7IH0KKyAgICBvcGVy
YXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8U2lt
cGxlUmFuZ2U+IHNpbXBsZVJhbmdlKCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisgICAg
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0Owor
ICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdlUmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZv
cm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFYVGV4dE1hcmtlciBz
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KKyAgICBBWFRleHRNYXJrZXIgZW5kKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KK3ByaXZhdGU6CisgICAgQVhUZXh0TWFya2VyIG1fc3Rh
cnQ7CisgICAgQVhUZXh0TWFya2VyIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCmluZGV4IDMyMWRl
ZWZiMjJhOS4uODc0NDczOTE4N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVHJlZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRyZWVTdG9yZS5oCkBAIC0zNiwxNSArMzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KIGNs
YXNzIEFYVHJlZVN0b3JlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRyZWVTdG9yZSk7
CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQVhJRCB0cmVlSUQo
KSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgc3RhdGljIFQqIHRyZWVGb3JJRChBWElEKTsK
IHByb3RlY3RlZDoKICAgICBBWFRyZWVTdG9yZSgpID0gZGVmYXVsdDsKICAgICBzdGF0aWMgdm9p
ZCBhZGQoQVhJRCwgV2Vha1B0cjxUPik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKEFYSUQpOwog
ICAgIHN0YXRpYyBib29sIGNvbnRhaW5zKEFYSUQpOwogCi0gICAgc3RhdGljIFJlZlB0cjxUPiB0
cmVlRm9ySUQoQVhJRCk7CiAgICAgc3RhdGljIEFYSUQgZ2VuZXJhdGVOZXdJRCgpOwotCiAgICAg
Y29uc3QgQVhJRCBtX2lkIHsgZ2VuZXJhdGVOZXdJRCgpIH07CiAgICAgc3RhdGljIExvY2sgc19z
dG9yZUxvY2s7CiBwcml2YXRlOgpAQCAtNzMsNyArNzQsNyBAQCBpbmxpbmUgYm9vbCBBWFRyZWVT
dG9yZTxUPjo6Y29udGFpbnMoQVhJRCBheElEKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgot
aW5saW5lIFJlZlB0cjxUPiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKK2lu
bGluZSBUKiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKIHsKICAgICBMb2Nr
ZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKICAgICByZXR1cm4gbWFwKCkuZ2V0KGF4SUQpLmdl
dCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRl
eHRNYXJrZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhU
ZXh0TWFya2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5iN2JhZDY3NjEyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsODMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKKwor
I2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVy
TWFjLmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjZWxzZSAvLyBQ
TEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1hcmtlcjo6
QVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyUmVmKQoreworICAgIGlmICgh
dGV4dE1hcmtlclJlZikKKyAgICAgICAgcmV0dXJuOworCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IEFTU0VSVChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSA9PSBBWFRleHRNYXJrZXJHZXRUeXBl
SUQoKSk7CisgICAgaWYgKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpICE9IEFYVGV4dE1hcmtl
ckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoQVhUZXh0TWFya2Vy
R2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpID09IHNpemVvZihtX2RhdGEpKTsKKyAgICBpZiAoQVhU
ZXh0TWFya2VyR2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpICE9IHNpemVvZihtX2RhdGEpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtZW1jcHkoJm1fZGF0YSwgQVhUZXh0TWFya2VyR2V0Qnl0ZVB0
cih0ZXh0TWFya2VyUmVmKSwgc2l6ZW9mKG1fZGF0YSkpOworI2Vsc2UgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICBtZW1jcHkoJm1fZGF0YSwgdGV4dE1hcmtlclJlZiwgc2l6ZW9mKG1fZGF0
YSkpOworI2VuZGlmCit9CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IEFYVGV4dE1hcmtl
cjo6cGxhdGZvcm1PYmplY3QoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICByZXR1
cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0
IFVJbnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOworI2Vsc2UgLy8gUExBVEZPUk0oSU9T
X0ZBTUlMWSkKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZikmbV9kYXRhOworI2VuZGlmCit9
CisKKyNpZiBQTEFURk9STShNQUMpCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFu
Z2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQorICAgIDogbV9zdGFy
dChBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFya2VyUmFuZ2VSZWYpKQor
ICAgICwgbV9lbmQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJSYW5n
ZVJlZikpCit7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSYW5nZVJlZikgPT0g
QVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKSk7Cit9CisKK1JldGFpblB0cjxBWFRleHRNYXJr
ZXJSYW5nZVJlZj4gQVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QKK3sK
KyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0CisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9y
RGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9zdGFydC5tX2RhdGEsIHNpemVvZihtX3N0YXJ0Lm1f
ZGF0YSkpKS5nZXQoKQorICAgICAgICAsIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFs
bG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJm1fZW5kLm1fZGF0YSwgc2l6ZW9mKG1fZW5k
Lm1fZGF0YSkpKS5nZXQoKQorICAgICkpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQppbmRleCBlM2EyZTYxYzZlYjguLjAzODM2Y2YyMzY3NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJ
T1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE4MSwyOCArMTgxLDIyIEBAICsgKFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246KFZpc2li
bGVQb3NpdGlvbiYpCiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtl
cldpdGhDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0IGNh
Y2hlOihBWE9iamVjdENhY2hlKiljYWNoZQogewotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICBp
ZiAoIWNhY2hlIHx8IGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5p
bDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+
dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rl
ck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEICYmICF0ZXh0TWFya2VyRGF0
YS5pZ25vcmVkKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4dE1h
cmtlckRhdGEub2JqZWN0SUQgJiYgIXRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJl
dHVybiBuaWw7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0p
LmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3Rh
cnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5n
ZT4mKXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2Fj
aGUKIHsKLSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmICghcmFu
Z2UpCisgICAgaWYgKCFjYWNoZSB8fCAhcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0
TWFya2VyRGF0YUZvclJhbmdlKHRleHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAg
IGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBj
YWNoZS0+c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoKnJhbmdlLCBpc1N0YXJ0KTsK
KyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGlu
aXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFz
ZSgpOwogfQpAQCAtMjY3MywyNiArMjY2NywyNCBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciAqKXRleHRNYXJrZXJGb3JQb2ludDooQ0dQb2ludClwb2ludAogCiAtIChXZWJBY2Nlc3Np
YmlsaXR5VGV4dE1hcmtlciAqKW5leHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rl
ck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0g
c2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQog
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJE
YXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4
dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5h
eElEKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZv
ck5leHRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXRleHRNYXJr
ZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9wdE5T
KFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjom
dGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAogewotICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBhdXRv
KiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgaWYg
KCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0
ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRl
eHRNYXJrZXJEYXRhLmF4SUQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRl
eHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsK
KyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGlu
aXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFz
ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhP
YmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KaW5kZXggN2I5MmRiYTNhNGE3Li4xNWViZjM1NDlkMzkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bQpAQCAtODIxLDExICs4MjEsOSBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAogICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFy
a2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4
dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5h
eElEIHx8IHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9
IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OworICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdu
b3JlZCkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1h
cmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2Vy
RGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKQEAgLTg0
NywxMSArODQ1LDkgQEAgQVhUZXh0TWFya2VyUmVmIHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFu
Z2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IHN0ZDo6b3AKICAgICBpZiAoIWNhY2hlIHx8
ICFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRN
YXJrZXJEYXRhOwotICAgIGNhY2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSh0
ZXh0TWFya2VyRGF0YSwgKnJhbmdlLCBpc1N0YXJ0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRh
LmF4SUQpCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT5zdGFydE9yRW5kVGV4dE1h
cmtlckRhdGFGb3JSYW5nZSgqcmFuZ2UsIGlzU3RhcnQpOworICAgIGlmICghdGV4dE1hcmtlckRh
dGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gYWRvcHRDRihB
WFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4
dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5hdXRvcmVsZWFzZSgpOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDQyMzRjZDY5Zjkx
OS4uNzIxMDdkOTcxNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5t
bQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhP
YmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nlc3Np
YmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKQEAgLTcxNywzOCArNzE4LDIyIEBAIHN0YXRpYyBz
dGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFyY2hE
aXJlY3Rpb24+IGFjY2VzCiAKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJzCiAKLXN0
YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rl
ck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJP
ZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXIo
QVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQogewogICAg
IGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRh
dGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRl
eHRNYXJrZXJEYXRhLmF4SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCop
JnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisKKyAgICBhdXRvIG5l
eHRNYXJrZXIgPSBjYWNoZS0+bmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gbmV4
dE1hcmtlciA/IG5leHRNYXJrZXIucGxhdGZvcm1PYmplY3QoKSA6IG5pbDsKIH0KIAotc3RhdGlj
IFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rl
ck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJP
ZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFy
a2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsK
ICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAg
IGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1
cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0
IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKLX0KLQot
LSAoUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAgcmV0dXJuIG5l
eHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9i
amVjdENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7Ci19CiAKLS0gKFJldGFpblB0cjxBWFRleHRN
YXJrZXJSZWY+KXByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVy
T2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0TWFya2Vy
Rm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCks
IGNoYXJhY3Rlck9mZnNldCk7CisgICAgYXV0byBwcmV2aW91c01hcmtlciA9IGNhY2hlLT5wcmV2
aW91c1RleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gcHJldmlvdXNNYXJrZXIgPyBwcmV2
aW91c01hcmtlci5wbGF0Zm9ybU9iamVjdCgpIDogbmlsOwogfQogCiAvLyBGSVhNRTogUmVtb3Zl
IHRoaXMgbWV0aG9kIHNpbmNlIGNsaWVudHMgc2hvdWxkIG5vdCBuZWVkIHRvIGNhbGwgdGhpcyBt
ZXRob2QgYW5kIHNob3VsZCBub3QgYmUgZXhwb3NlZCBpbiB0aGUgcHVibGljIGludGVyZmFjZS4K
QEAgLTMzNzQsMjQgKzMzNTksMjQgQEAgLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpbGluZVRleHRN
YXJrZXJSYW5nZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZil0ZXh0TWEKICAgICAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgYXV0byB2aXNp
YmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFy
a2VyKTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAgICAg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2U7CiAgICAgICAgIHN3aXRj
aCAodGV4dFVuaXQpIHsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGluZToKLSAgICAgICAgICAg
IHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9zaXRp
b24odmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0g
YmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9zaXRpb24obWFya2VyKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0OjpMZWZ0TGluZToKLSAgICAgICAgICAgIHZp
c2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRp
b25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFu
Z2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6UmlnaHRMaW5lOgot
ICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdodExp
bmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlz
aWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdodExpbmVWaXNpYmxlUG9zaXRp
b25SYW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAg
ICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRp
b25zKGNhY2hlLCB2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwgdmlzaWJsZVBvc2l0aW9uUmFu
Z2UuZW5kKTsKKyAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJhbmdlKHZpc2libGVQb3NpdGlv
blJhbmdlKS5wbGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNjg1LDI1ICszNjcw
LDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1
cm4gKGlkKVtzZWxmIF90ZXh0TWFya2VyRm9ySW5kZXg6W251bWJlciBpbnRlZ2VyVmFsdWVdXTsK
IAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9yVGV4
dE1hcmtlciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9y
ZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlciwgcHJvdGVjdGVkU2Vs
ZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBh
dXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7
Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKLQotICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0
Rm9yVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXIp
OwotICAgICAgICAgICAgaWYgKCFheE9iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmls
OworICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICBhdXRv
KiBvYmplY3QgPSBtYXJrZXIub2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KQorICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1l
bnQoKSAmJiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAg
ICAgYXV0byogd3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOworICAgICAgICBpZiAoIXdyYXBw
ZXIpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4gYXhPYmpl
Y3QtPndyYXBwZXIoKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChpZCBhdHRhY2htZW50Vmll
dyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcpCisgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVu
dFZpZXc7CisgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAogICAgIGlmIChbYXR0cmli
dXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50Il0pIHsK
ICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVG
cm9tTWFpblRocmVhZDxpZD4oWyZ1aUVsZW1lbnRdICgpIC0+IFJldGFpblB0cjxpZD4gewotICAg
ICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50Lmdl
dCgpLT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC5nZXQoKS0+ZWxlbWVudFJhbmdlKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50
LT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC0+ZWxlbWVudFJhbmdlKCkpOwogICAgICAgICB9
KTsKICAgICB9CiAKQEAgLTM3NTQsNyArMzczNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlckZv
clZpc2libGVQb3NpdGlvbihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tpbmdP
YmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpOworICAgICAgICAg
ICAgcmV0dXJuIChpZClBWFRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQod2ViQ29yZVBvaW50KSkucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwog
ICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM4NDMsOSArMzgyNiw4IEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0TWFy
a2VyKFthcnJheSBvYmplY3RBdEluZGV4OjBdKQogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNU
ZXh0TWFya2VyKFthcnJheSBvYmplY3RBdEluZGV4OjFdKSkKICAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZh
bHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmYXJyYXldICgpIC0+IFJldGFpblB0cjxpZD4gewotICAg
ICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycygoQVhUZXh0TWFy
a2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjBdLCAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBv
YmplY3RBdEluZGV4OjFdKS5nZXQoKTsKLSAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJuIChp
ZClBWFRleHRNYXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJ
bmRleDowXSB9LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gfSB9
LnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJp
YnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRN
YXJrZXJzIl0pIHsKQEAgLTM4ODQsOCArMzg2Niw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVN
RU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0
ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAg
ICAgICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRNYXJr
ZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBBWFRl
eHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIG5leHRUZXh0
TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7
CiAgICAgfQogCkBAIC0zODk5LDggKzM4ODEsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVO
VEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9
IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAg
ICAgICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1h
cmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFY
VGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gcHJldmlv
dXNUZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCkBAIC0zOTgxLDI2ICszOTYzLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVl
IChzbyBmYXIpLgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3RhcnRU
ZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2li
aWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0
TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFp
blB0cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNl
bGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0
KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2Ug
PSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCks
IHRleHRNYXJrZXJSYW5nZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRl
eHRNYXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCB0
cnVlKTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtl
clJhbmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiAoaWQpYXhUZXh0TWFy
a2VyUmFuZ2Uuc3RhcnQoKS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQog
CiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJp
ZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2Us
IHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewot
ICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhC
YWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRl
eHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJS
YW5nZSk7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFu
Z2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwgZmFsc2UpOwotICAgICAg
ICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0
TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5lbmQo
KS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAjaWYgRU5BQkxFKFRS
RUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
ZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CmluZGV4IDVk
MzNkYWNiMmQzZi4uNTA0NjAyNThmYzMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0
ZWQudHh0CkBAIC0xLDE3ICsxLDE0IEBACi10ZXh0IGhlcmUKLXRleHQgYmxvY2sKLXRleHQgaGVy
ZQogVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3Jy
ZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLgogCi1PbiBzdWNjZXNzLCB5b3Ug
d2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBD
T01QTEVURSIuCi0KK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSA9PT0g
MTAKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KS5p
c0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihlbmQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSA9PT0gMTAKK1BBU1M6IG5ld1JhbmdlLmlzRXF1YWwo
cmFuZ2UpID09PSB0cnVlCiAKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1h
cmtlclJhbmdlMSkgaXMgMTAKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMg
dHJ1ZQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJrZXJSYW5nZSkgaXMg
MTAKLVBBU1MgbmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFya2VyUmFuZ2UxKSBpcyB0cnVl
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKLQordGV4
dCBoZXJlCit0ZXh0IGJsb2NrCit0ZXh0IGhlcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCmluZGV4IGQ0
OTM2YWQyMmQxOC4uMzQwYWIxZTE5ODBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwKQEAgLTEsNTEg
KzEsNDIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiB0
ZXh0IGhlcmUKLTxkaXYgaWQ9InRleHQxIiB0YWJpbmRleD0iMCI+dGV4dCBibG9jazwvZGl2Pgor
PGRpdiBpZD0idGV4dDEiPnRleHQgYmxvY2s8L2Rpdj4KIHRleHQgaGVyZQogCi08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0g
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJl
dHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4iKTsKLQog
ICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbGV0IHRl
c3RPdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJu
IHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLlxuXG4iOwogCi0g
ICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKLSAgICAg
ICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50Owor
ICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVt
ZW50QnlJZCgidGV4dDEiKS5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgICAvLyBHZXQgdGhl
IGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDAp
OworICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1hcmtlciBmb3Ig
dGhpcyBlbGVtZW50J3MgcmFuZ2UuCisgICAgICAgIHZhciByYW5nZSA9IHRleHQudGV4dE1hcmtl
clJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSIsICIxMCIpOworICAgICAgICB2YXIgc3Rh
cnQgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CiAKLSAg
ICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1hcmtlciBmb3IgdGhp
cyByYW5nZS4KLSAgICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMSA9IHRleHQudGV4dE1hcmtl
clJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMSkiLCAiMTAiKTsKLSAgICAgICAgICB2YXIg
c3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UxKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdp
bGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQgd2Ugc3RhcnRlZCB3aXRoLgorICAgICAg
ICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gQ2hl
Y2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRo
YXQgd2Ugc3RhcnRlZCB3aXRoLgotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsK
KyAgICAgICAgLy8gR2V0IHRoZSBlbmQgbWFya2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVzIHVz
IHRoZSBzYW1lIGVsZW1lbnQuCisgICAgICAgIHZhciBlbmQgPSB0ZXh0LmVuZFRleHRNYXJrZXJG
b3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRleHQp
IiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sg
dGhhdCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50LgotICAgICAgICAgIHZhciBlbmRNYXJr
ZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdl
MSk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAgICAgLy8gTWFrZSBh
IG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hlY2sg
dGhlIGxlbmd0aC4KKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHN0YXJ0LCBlbmQpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpIiwgIjEwIik7CiAKLSAgICAgICAgICAv
LyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5kIGVuZCBtYXJrZXJzIGFu
ZCBjaGVjayB0aGUgbGVuZ3RoCi0gICAgICAgICAgdmFyIG5ld01hcmtlclJhbmdlID0gdGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpOwotICAgICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJrZXJSYW5nZSki
LCAiMTAiKTsKKyAgICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFy
a2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAorICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgi
bmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gQW5kIG1h
a2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAot
ICAgICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFya2Vy
UmFuZ2UxKSIpOworICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0
PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1p
Z25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYzU3NjU4YTU2Zi4uOGZjNWZkNzI0
OGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJl
ZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
LWV4cGVjdGVkLnR4dApAQCAtMSwxNiArMSwxMyBAQAotRmlyc3QgbGluZSBvZiB0ZXh0Ci1idXR0
b24KLVRoaXJkIGxpbmUgb2YgdGV4dAogVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2gg
Zm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQuCiAKLU9uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KK1BBU1M6IGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHJhbmdlKSA9PT0gJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKK1BBU1M6IGVsZW1lbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSA9PT0gJ2J1dHRvbicKK1BBU1M6IHJlc3VsdEVsZW1l
bnQuc3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnCitQQVNTOiBy
ZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0
JwogCi0KLVBBU1MgZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICdGaXJzdCBsaW5lIG9mIHRleHQnCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKGxpbmVSYW5nZSkgaXMgJ2J1dHRvbicKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJpbmdW
YWx1ZSBpcyAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JwotUEFTUyByZXN1bHRFbGVtZW50
LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnCiBQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25v
cmVkLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1w
cmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAppbmRleCA2ZWE4MTg3YzAyMjYuLjk1
ZDdhNDZjZWNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2Vh
cmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQu
aHRtbApAQCAtMSw1MCArMSw0NyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHki
PgorPGJvZHk+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgcm9sZT0iZ3JvdXAiPgogPGRpdiBpZD0i
dGVzdCI+Rmlyc3QgbGluZSBvZiB0ZXh0PGJyPgogPGJ1dHRvbiBpZD0iYnV0dG9uIiBhcmlhLWhp
ZGRlbj0idHJ1ZSI+YnV0dG9uPC9idXR0b24+CiA8YnI+VGhpcmQgbGluZSBvZiB0ZXh0PC9kaXY+
Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
L2Rpdj4KIAogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0
eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1l
bnQuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewot
ICAgICAgICAKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5mb2N1cygp
OwotICAgICAgICB2YXIgY29udGFpbmVyRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmZvY3VzZWRFbGVtZW50OwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRl
c3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFu
IGlnbm9yZWQgZWxlbWVudC5cblxuIjsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsKICAg
ICAgICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRlc3QiKS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIHZhciBtYXJrZXJSYW5n
ZSA9IGVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICAgICAg
c2hvdWxkQmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKLSAgICAgICAgLy8gVHJ5IHRvIGdl
dCB0aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxpbmUgdGV4dCBtYXJrZXIgY2FsbHMKLSAgICAg
ICAgdmFyIHRleHRNYXJrZXIgPSBlbGVtZW50LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpOwotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1h
cmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRN
YXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHZhciBsaW5lUmFuZ2UgPSBlbGVtZW50LmxpbmVU
ZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICBzaG91bGRC
ZSgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKSIsICInYnV0dG9u
JyIpOwotICAgICAgICAKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSk7Ci0gICAgICAgIHZhciBzdGFydEVsZW1l
bnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcih0ZXh0TWFya2Vy
KTsKLSAgICAgICAgCisgICAgICAgIHZhciByYW5nZSA9IGVsZW1lbnQudGV4dE1hcmtlclJhbmdl
Rm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwgIidGaXJzdCBsaW5lIG9mIHRleHQnIik7
CisKKyAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxpbmUg
dGV4dCBtYXJrZXIgY2FsbHMuCisgICAgICAgIHZhciBtYXJrZXIgPSBlbGVtZW50LmVuZFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50
Lm5leHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG1hcmtlciA9IGVsZW1lbnQubmV4dFRl
eHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgcmFuZ2UgPSBlbGVtZW50LmxpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVs
ZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInYnV0dG9uJyIpOworCisg
ICAgICAgIG1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KHJhbmdlKTsKKyAgICAgICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisKICAgICAgICAgLy8gU2VhcmNoIGZvcndh
cmQKLSAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hL
ZXkiLCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKKyAgICAg
ICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKKwogICAgICAgICAvLyBTZWFyY2ggYmFj
a3dhcmQKLSAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50
Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFueVR5cGVTZWFyY2hL
ZXkiLCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJpbmdW
YWx1ZSIsICInQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworICAgICAgICByZXN1bHRF
bGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1l
bnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogRmly
c3QgbGluZSBvZiB0ZXh0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJj
b250YWluZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91
dHB1dCk7CiAgICAgfQotICAgICAgICAKIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3It
cmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGNkY2M3N2MzYzg3MS4uNmE3ZDJmNzhhM2U0IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZv
ci1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDI4MSArMSwyMDcg
QEAKLVRoaW5rIGRpZmZlcmVudCBBcHBsZQotCi1ib2xkIGl0YWxpYwotdW5kZXJsaW5lIGxhc3Qh
Ci0KLUhlbGxvIFdvcmxkIQotVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ug
d29ya3MgcHJvcGVybHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQorVGhpcyB0ZXN0
cyB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LgogCiBjb250ZW50
IGxlbmd0aDogNjUKIEFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFjdGVyIGlu
IHRoZSB0ZXh0OgotMAotJycKLTEKLSdUJwotMgotJ1RoJwotMwotJ1RoaScKLTQKLSdUaGluJwot
NQotJ1RoaW5rJwotNgotJ1RoaW5rICcKLTcKLSdUaGluayBkJwotOAotJ1RoaW5rIGRpJwotOQot
J1RoaW5rIGRpZicKLTEwCi0nVGhpbmsgZGlmZicKLTExCi0nVGhpbmsgZGlmZmUnCi0xMgotJ1Ro
aW5rIGRpZmZlcicKLTEzCi0nVGhpbmsgZGlmZmVyZScKLTE0Ci0nVGhpbmsgZGlmZmVyZW4nCi0x
NQotJ1RoaW5rIGRpZmZlcmVudCcKLTE2Ci0nVGhpbmsgZGlmZmVyZW50ICcKLTE3Ci0nVGhpbmsg
ZGlmZmVyZW50IEEnCi0xOAotJ1RoaW5rIGRpZmZlcmVudCBBcCcKLTE5Ci0nVGhpbmsgZGlmZmVy
ZW50IEFwcCcKLTIwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGwnCi0yMQotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZScKLTIyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjMKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzAgJycKKzEgJ1QnCisyICdUaCcKKzMgJ1RoaScKKzQgJ1RoaW4nCis1ICdUaGlu
aycKKzYgJ1RoaW5rICcKKzcgJ1RoaW5rIGQnCis4ICdUaGluayBkaScKKzkgJ1RoaW5rIGRpZicK
KzEwICdUaGluayBkaWZmJworMTEgJ1RoaW5rIGRpZmZlJworMTIgJ1RoaW5rIGRpZmZlcicKKzEz
ICdUaGluayBkaWZmZXJlJworMTQgJ1RoaW5rIGRpZmZlcmVuJworMTUgJ1RoaW5rIGRpZmZlcmVu
dCcKKzE2ICdUaGluayBkaWZmZXJlbnQgJworMTcgJ1RoaW5rIGRpZmZlcmVudCBBJworMTggJ1Ro
aW5rIGRpZmZlcmVudCBBcCcKKzE5ICdUaGluayBkaWZmZXJlbnQgQXBwJworMjAgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsJworMjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIyICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUnCisyMyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKICcKLTI0Ci0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCisyNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGInCi0yNQotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorMjUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBibycKLTI2
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bCcKLTI3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNyAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQnCi0yOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjggJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkICcKLTI5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyOSAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaScKLTMwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisz
MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXQnCi0zMQotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorMzEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YScKLTMyCi0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiszMiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRh
bCcKLTMzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMyAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGknCi0zNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzQgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYycKLTM1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiszNSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiAnCi0zNgotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMzYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdScKLTM3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNyAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1bicKLTM4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszOCAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmQnCi0zOQotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorMzkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dW5kZScKLTQwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MCAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcicKLTQxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0
MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmwnCi00MgotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorNDIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0
YWxpYwogdW5kZXJsaScKLTQzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MyAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbicKLTQ0Ci0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCis0NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRl
cmxpbmUnCi00NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDUgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lICcKLTQ2Ci0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCis0NiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUg
bCcKLTQ3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NyAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGEnCi00OAotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNDggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
cycKLTQ5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0OSAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCcKLTUwCi0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCis1MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUg
bGFzdCEnCi01MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTEgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwotNTIKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzUyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVy
bGluZSBsYXN0IQogCiDvv7wnCi01MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTMgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEgn
Ci01NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlJwotNTUKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzU1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGluZSBsYXN0IQogCiDvv7xIZWwnCi01NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTYg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAK
IO+/vEhlbGwnCi01NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTcgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvJwotNTgK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyAnCi01OQotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNTkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFcnCi02MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NjAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3Qh
CiAKIO+/vEhlbGxvIFdvJwotNjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYxICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxs
byBXb3InCi02MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjIgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmwnCi02
MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxkJwotNjQKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzY0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0IQpAQCAtMjkxLDcgKzIxNywxMSBAQCB1bmRlcmxpbmUgbGFzdCEK
IAog77+8SGVsbG8gV29ybGQhJwogJycKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1
ZQogCiBURVNUIENPTVBMRVRFCiAKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCmluZGV4
IGNlMWNiZjJlZWZlMy4uYzMwNDk4NjdiMDUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCisrKyBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwK
QEAgLTEsOSArMSw5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1M
Ly9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRl
c3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKIDxk
aXYgaWQ9ImNvbnRlbnQiIHJvbGU9Imdyb3VwIj4KICAgICA8cD5UaGluayA8ZW0+ZGlmZmVyZW50
PC9lbT4gPGEgaHJlZj0iYXBwbGUuY29tIj5BcHBsZTwvYT48L3A+CkBAIC0xMSwzNiArMTEsMzQg
QEAKICAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwvYnV0dG9uPgogPC9kaXY+CiAKLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0g
ICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdv
cmtzIHByb3Blcmx5LiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxl
cikgewotICAgICAgICBheEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKLSAgICAgICAgY29udGVudFRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGF4RWxlbWVudCk7Ci0gICAg
ICAgIHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGNvbnRl
bnRUZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKLSAgICAgICAgZGVidWcoImNvbnRlbnQgbGVuZ3Ro
OiAiICsgdGV4dExlbmd0aCk7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGF0
IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LlxuXG4iOwogCi0gICAgICAg
IGRlYnVnKCJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUg
dGV4dDoiKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHRleHRMZW5ndGg7ICsraSkgewotICAg
ICAgICAgICAgZGVidWcoaSk7Ci0gICAgICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1l
bnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgaSk7Ci0gICAgICAgICAgICBkZWJ1ZygiJyIg
KyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAi
JyIpOworICAgICAgICBsZXQgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICBsZXQgcmFuZ2UgPSBjb250ZW50
LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoY29udGVudCk7CisgICAgICAgIGxldCBjb250ZW50
TGVuZ3RoID0gY29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpLmxlbmd0aDsK
KyAgICAgICAgb3V0cHV0ICs9IGBjb250ZW50IGxlbmd0aDogJHtjb250ZW50TGVuZ3RofVxuYDsK
KworICAgICAgICBvdXRwdXQgKz0gIkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hh
cmFjdGVyIGluIHRoZSB0ZXh0OlxuIjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbnRlbnRM
ZW5ndGg7ICsraSkgeworICAgICAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5n
ZUZvclJhbmdlKDAsIGkpOworICAgICAgICAgICAgb3V0cHV0ICs9IGAke2l9ICcke2NvbnRlbnQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwogICAgICAgICB9CiAKLSAgICAg
ICAgZGVidWcoIkdldCB0aGUgcmFuZ2UgZm9yIHRoZSB3b3JkIEFwcGxlOiIpOwotICAgICAgICB0
ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMTYsIDUp
OwotICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOworICAgICAgICBvdXRwdXQgKz0gIkdldCB0aGUgcmFu
Z2UgZm9yIHRoZSB3b3JkIEFwcGxlOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRN
YXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250ZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKworICAgICAgICBvdXRwdXQg
Kz0gIk91dCBvZiByYW5nZSB2YWx1ZXM6XG4iOworICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4
dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250
ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKyAgICAgICAgcmFuZ2Ug
PSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOworICAgICAgICBvdXRw
dXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwog
Ci0gICAgICAgIGRlYnVnKCJPdXQgb2YgcmFuZ2UgdmFsdWVzOiIpOwotICAgICAgICB0ZXh0TWFy
a2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsKLSAg
ICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpICsgIiciKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50
LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOwotICAgICAgICBkZWJ1ZygiJyIgKyBh
eEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIp
OworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9CiA8L3Njcmlw
dD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Njcmlw
dD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZv
ci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDkxNWQ1NjljMGVkMC4uZDg0YjhiMjAxNzQy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0
aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBl
Y3RlZC50eHQKQEAgLTEsMTAgKzEsNyBAQAotVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4KIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3Igdmlz
aWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwg
UmVuZGVyVGV4dCBvYmplY3RzLgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMg
b2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNTOiBj
b250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpID09PSB0cnVlCiAKLQotUEFT
UyBjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKHRleHRFbGVtZW50KSBpcyB0cnVlCiBQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gt
Zm9yLXRleHQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJs
ZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKaW5kZXggYzcyNTdkNTg1ZDFhLi42
MmViNGUzNTIyZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zp
c2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5o
dG1sCkBAIC0xLDQwICsxLDMxIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+
Cis8Ym9keT4KIAotPGRpdiBpZD0iY29udGVudCIgdGFiaW5kZXg9IjAiIHN0eWxlPSJ3aWR0aDoy
MDBweDsiPgorPGRpdiBpZD0iY29udGVudCIgc3R5bGU9IndpZHRoOjIwMHB4OyI+CiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogPC9kaXY+CiAKLTxwIGlkPSJkZXNj
cmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0KLSAg
ICBkZXNjcmlwdGlvbigiVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZv
ciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxl
IGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxp
dHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyBwcm90ZWN0cyBhZ2Fp
bnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBl
bnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuXG5cbiI7CiAK
LSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmZvY3VzKCk7Ci0g
ICAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxl
bWVudDsKLQotICAgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIgYXQgdGhpcyBwb2ludC4g
SXQgc2hvdWxkIG5vdCBjcmFzaC4KLSAgICAgICAgICB2YXIgbWFya2VyQXRQb2ludCA9IGNvbnRl
bnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lkdGgvMiwgY29udGVu
dC55ICsgY29udGVudC5oZWlnaHQvMik7Ci0gICAgICAgICAgdmFyIHRleHRFbGVtZW50ID0gY29u
dGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyQXRQb2ludCk7Cisg
ICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIgYXQg
dGhpcyBwb2ludC4gSXQgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgdmFyIG1hcmtlciA9IGNv
bnRlbnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lkdGggLyAyLCBj
b250ZW50LnkgKyBjb250ZW50LmhlaWdodCAvIDIpOworICAgICAgICAvLyBWZXJpZnkgdGhlIGVs
ZW1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCisgICAgICAgIHZhciBlbGVt
ZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyKTsK
KyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVh
bChlbGVtZW50KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBWZXJpZnkgdGhlIGVsZW1lbnQg
aXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCi0gICAgICAgICAgdmFyIHRleHRFbGVt
ZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyQXRQ
b2ludCk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb250ZW50LmNoaWxkQXRJbmRleCgwKS5p
c0VxdWFsKHRleHRFbGVtZW50KSIpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0
cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90
ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKaW5kZXggNWVkM2JkMGQwNmRlLi4zOGYxM2Vk
N2EzZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIv
dGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCkBAIC0xLDE1
ICsxLDE3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiA8bWV0YSBjaGFyc2V0PSJVVEYtMTYiPgogPC9oZWFkPgogPHN0
eWxlPgogLnVzZXJzZWxlY3QgeyB1c2VyLXNlbGVjdDogbm9uZTsgLXdlYmtpdC11c2VyLXNlbGVj
dDogbm9uZTsgfQogPC9zdHlsZT4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08ZGl2IGlk
PSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2PgorPGRpdiBpZD0iY29udGVudCI+Cis8ZGl2
IGlkPSJ0ZXh0Ij50ZXh0PC9kaXY+CiA8YnI+CiB0ZXh0MQogCkBAIC0zMiwyOSArMzQsNDUgQEAg
ZgogPHAgaWQ9InRleHQ2Ij5hICAgICBiPC9wPgogCiA8cCBpZD0idGV4dDciPmF1ZGlvPGF1ZGlv
IGNvbnRyb2xzPjwvYXVkaW8+ZmlsZTwvcD4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgorICAgIGZ1bmN0aW9u
IGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmopIHsKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBwcmV2
aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0g
b2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAg
ICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rp
b24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7
CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAg
cHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsK
KyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwcmV2
aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2Vy
CisgICAgICAgIH07CisgICAgfQogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIG5l
eHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0
bHkuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewot
ICAgICAgICAKLSAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4
dCBub2RlLgotICAgICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAor
ICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBt
YXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cbiI7CisKKyAgICAg
ICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInRleHQiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBj
YW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgogICAgICAgICB2YXIg
dGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwot
ICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJh
bmdlKSIsICI0Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKwogICAgICAgICB2
YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgIHNob3VsZEJl
VHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIp
LmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAg
ICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBDaGVj
ayBuZXh0IHRleHQgbWFya2VyLiAoQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBh
dCA8YnI+LikKICAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIsIHByZXZpb3VzTWFya2VyLCBtYXJr
ZXJSYW5nZTs7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2Vy
LCBzdGFydE1hcmtlciwgdGV4dCk7CkBAIC02Miw1OCArODAsNTcgQEAgZgogICAgICAgICBjdXJy
ZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsK
ICAgICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKLSAgICAgICAg
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gQWR2YW5jZSBvbmUgbW9y
ZSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmRlIGF0ICJ0IiBpbiAidGV4dDEiLgogICAgICAgICBy
ZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsK
ICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwot
ICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIid0JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworCiAgICAgICAg
IC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLiAoVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBj
aGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgcmVzdWx0ID0gYmFja3dh
cmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAgICAgcHJl
dmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBy
ZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91
bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xp
bmUiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8g
VHJhdmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IHRo
ZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygx
LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0
LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgaWYgKGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAibWFjIikKLSAgICAgICAgICAgIHNo
b3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3Qn
ICsgbmV3bGluZSIpOworICAgICAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKIAog
ICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUKICAgICAgICAgdmFy
IHRleHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0
ZXh0MiIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMiA9IHRleHQyLnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQodGV4dDIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwg
IjUiKTsKICAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzIpLCAiW0FU
VEFDSE1FTlRdIik7Ci0gICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogIiAr
IHN0cik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gYE9iamVjdCBzdHJpbmcgZm9yIHJh
bmdlOiAke3N0cn1cbmA7CisKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKTsKICAgICAgICAgLy8g
QWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCAiZCIuCiAgICAgICAgIHJlc3Vs
dCA9IGZvcndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsKICAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ2QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOworCiAgICAgICAg
IC8vIFRyYXZlcnNlIGJhY2t3YXJkcyA2IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUg
bGFzdCBjaGFyYWN0ZXIgb2YgInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDYs
IHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0
LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOwot
ICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKKwogICAgICAgICAvLyBDaGVjayB0aGUg
Y2FzZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZpb3VzVGV4dE1h
cmtlciBzaG91bGQgc3RpbGwgd29yay4KLSAgICAgICAgdmFyIHRleHQzID0gYWNjZXNzaWJpbGl0
eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOwotICAgICAgICB0ZXh0
MyA9IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgCisgICAgICAgIHZhciB0ZXh0MyA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKS5j
aGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0IHVzZXItc2Vs
ZWN0Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7CiAgICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgMTg7IGkrKykgewpAQCAtMTI1LDM0ICsxNDIsMzEgQEAgZgogICAg
ICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIidlY3QnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQzLnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKICAgICAgICAgLy8g
SXRlcmF0ZSBiYWNrd2FyZHMgdGhlIHNlY29uZCBtYXJrZXIgZm9yIDYgY2hhcmFjdGVycywgdGhl
IHJhbmdlIHNob3VsZCBiZSAic2VsIgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkr
KykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0g
ICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgIG1hcmtl
clJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIy
KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ3NlbCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDMuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOwogCiAgICAgICAg
IC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcGFzc3dvcmQgZmllbGQuCiAgICAgICAgIHZhciBwc3cg
PSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInBzdyIpOwog
ICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMyA9IHBzdy50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KHBzdyk7CiAgICAgICAgIHZhciBzdGFydCA9IHBzdy5zdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiIXBz
dy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIik7Ci0gICAgICAgIAor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihzdGFydCkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIENoZWNrIG5leHQvcHJldmlv
dXMgdGV4dCBtYXJrZXIgY2FsbCB3aWxsIHNraXAgcGFzc3dvcmQgZmllbGQKICAgICAgICAgLy8g
V2Ugc3RhcnQgZnJvbSB0ZXh0MiBhbmQgYWR2YW5jZSA2IGNoYXJhY3RlcnMsIGl0IHNob3VsZCBz
a2lwIHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgbGFuZCBvbiB0ZXh0My4KICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UyKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KLSAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
LmlzRXF1YWwodGV4dDMpIiwgInRydWUiKTsKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4
dCBtYXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIgbm9kZS4KICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsK
LSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIik7Ci0g
ICAgICAgIAotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIu
Y2hpbGRBdEluZGV4KDIpKSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQg
dGV4dCBub2RlIHdpdGggbGluZSBicmVha3MsIHdlIGNhbiBnbyB0aHJvdWdoIGl0IHdpdGggbmV4
dC9wcmV2aW91cyBjYWxsLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2Ug
PSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CkBAIC0xNjMsODcgKzE3Nyw2
NCBAQCBmCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihj
dXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInZiciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZiciKTsKKwogICAgICAgICBl
bmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IGVuZE1hcmtlcjsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3
OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5wcmV2aW91c1RleHRNYXJr
ZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2EnIik7CisKICAgICAgICAg
Ly8gVGVzdCBjYXNlIHdpdGggZW1vamkuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ1Iik7CiAgICAgICAgIHZhciBlbW9q
aVRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1h
cmtlclJhbmdlKSIsICI0Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CiAgICAgICAgIC8v
IE1ha2Ugc3VyZSBuYXZpZ2F0aW5nIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgaXMgYnkgZW1v
amkuCiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UoZW1vamlUZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJk
KDIsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iPJyIpOworICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCkpIiwgIifwn5iPJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOwotICAgICAgICAKKyAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSIsICIn8J+YgyciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBjb2xsYXBzZWQg
d2hpdGVzcGFjZS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vz
c2libGVFbGVtZW50QnlJZCgidGV4dDYiKTsKICAgICAgICAgdmFyIGNvbGxhcHNlZFdoaXRlc3Bh
Y2VNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRl
c3BhY2VNYXJrZXJSYW5nZSkiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwg
IjMiKTsKICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZShjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1
bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidh
JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIiwgIidhJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn
ICciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CiAgICAgICAgIHJl
c3VsdCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0
KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlv
dXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJk
cygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hv
dWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7Ci0g
ICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIHJl
cGxhY2VkIGVsZW1lbnRzIChzaG91bGQgdXNlIG9iamVjdCByZXBsYWNlbWVudCBjaGFyYWN0ZXIp
LgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1l
bnRCeUlkKCJ0ZXh0NyIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVGRkZDZmlsZSciKTsKICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJr
ZXJSYW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CiAgICAgICAg
ICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50
TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQog
ICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2
aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ1x1RkZGQyciKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQuZW5kVGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJy
ZW50TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogCi0g
ICAgICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykg
ewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKLSAgICAg
ICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJr
ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg
ICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAgICAgICAgICAgY3VycmVudDogY3Vy
cmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAg
ZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
b2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAg
ICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIocHJl
dmlvdXNNYXJrZXIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlv
dXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAg
ICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0KIDwv
c2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1u
ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CmluZGV4
IDI5MjY0MWE3ZTAzOC4uNWEwYTMyYzI4ZDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1u
ZXh0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dApA
QCAtMSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4ndCBzZWxlY3QKLWFi
YyBkZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMgdGVzdHMgdGhlIG5l
eHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0
bHkuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVl
Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlciku
aXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JyArIG5ld2xpbmUKLVBBU1MgdGV4dDIudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKK1BBU1M6IHRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0
cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJr
ZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcgKyBuZXdsaW5lCitQQVNTOiB0
ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09IDUKIE9iamVj
dCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQyLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQyLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQzLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4dDMuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAhcHN3LmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5h
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0
ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIGlzIHRydWUK
LVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdmJwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2EnCi1Q
QVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSBpcyA0
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmI8nCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmIMnCi1QQVNT
IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5n
ZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdh
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUnCi1QQVNTIHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8JwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcKK1BBU1M6
IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdkJworUEFT
UzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJzEnCitQ
QVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZWN0
JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
J3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0
KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0
Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMKK1BBU1M6IHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworCiBQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464525</attachid>
            <date>2023-01-17 06:32:10 -0800</date>
            <delta_ts>2023-01-18 09:18:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230117093208.patch</filename>
            <type>text/plain</type>
            <size>106428</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA2ZTgwMTYwNDhkMmNkNmEwODVlNzc1ZDZkYjk5MTBjNjI1MTIwN2RjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3cgZm9yIHRoZSByZXRyaWV2YWwgb2YgdGhlIFRleHRNYXJr
ZXIgcHJvcGVydGllcyB3aXRob3V0IGhhdmluZyB0byByZXNvdXJjZSB0byB0aGUgdW5kZXJseWlu
ZyBET00gYW5kIFJlbmRlclRyZWUgb2JqZWN0cy4KClRoZSBmb2xsb3dpbmcgTWFjIEFYIEFQSSBh
dHRyaWJ1dGVzIGFyZSBub3cgaW1wbGVtZW50ZWQgd2l0aG91dCBoaXR0aW5nIHRoZSBtYWluIHRo
cmVhZCB1c2luZyBBWFRleHRNYXJrZXIgYW5kIEFYVGV4dE1hcmtlclJhbmdlOgpBWFVJRWxlbWVu
dEZvclRleHRNYXJrZXIKQVhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VycwpBWFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZQpBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UKClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhbiB1cGRhdGUgb2Ygc2V2ZXJhbCBsYXlvdXQg
dGVzdHMgcmVsYXRlZCB0byBUZXh0TWFya2Vycy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAxNiArKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCAgIHwgMTY4ICsrKysrLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAyNyArLQogU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwIHwgMjMyICsrKysrKysrKysrKysrKysrKwogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCAgIHwgMTUxICsrKysrKysr
KysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oICAgIHwgICA3
ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAgfCAgODMg
KysrKysrKwogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSAgIHwg
IDQwICsrLQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gICAgIHwg
IDEyICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAgfCAx
MDEgKysrLS0tLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0
ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sICAgICAgICAg
IHwgIDUxICsrLS0KIC4uLnJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4
dCB8ICAxNSArLQogLi4uc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1s
IHwgIDYzICsrKy0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0
ICAgfCAyMTAgKysrKysrLS0tLS0tLS0tLQogLi4uL21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS5odG1sICAgICAgIHwgIDQ4ICsrLS0KIC4uLi1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1u
b2RlLWV4cGVjdGVkLnR4dCB8ICAgNSArLQogLi4uL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9y
LXRleHQtbm9kZS5odG1sIHwgIDM1ICstLQogLi4uL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQt
ZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrKy0tLQogLi4uL3RleHQtbWFya2VyLXByZXZpb3VzLW5l
eHQuaHRtbCAgICAgICAgICAgIHwgMTc1ICsrKysrKystLS0tLS0KIC4uLi90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCAgICB8ICA3OCArKystLS0KIDIzIGZpbGVzIGNoYW5n
ZWQsIDkzOCBpbnNlcnRpb25zKCspLCA2NzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2
NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBjcmVhdGUg
bW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaAog
Y3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhU
ZXh0TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYzMzczNmM4NTI5ZS4uNTU1NTNk
MDEyNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIE1vZHVsZXMvd2VieHIv
WFJTZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3BwCiBhY2Nlc3NpYmls
aXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorYWNjZXNz
aWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklB
R3JpZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5jcHAKIGFj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggYjYzNDk5YjU2MTA5Li4yMDgxZTBkMTgwY2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNoL2NvY29hL1dlYlNwZWVj
aFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJTcGVlY2hSZWNvZ25p
emVyVGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRCYWRnZVN5c3RlbUlt
YWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFuYWdlckNvY29hLm1t
CithY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCiBhY2Nlc3NpYmlsaXR5
L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9BY2Nlc3NpYmlsaXR5
T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDA2NTlkYTIyMTExNy4uYjE1MDM4ZDI4ODc1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC00NTcxLDYg
KzQ1NzEsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29kZUdlbmVyYXRvci5w
bSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA1
MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4RTQwMENFMjYzNiAv
KiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5lcmF0ZS1iaW5kaW5n
cy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlD
MEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4RTAwRjc1N0UxIC8q
IElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyMDhBMDI5Mzc5QzZF
MDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJGMzI3MjQxMkJGMjkwMDlD
NzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nl
c3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChXZWFrLCApOyB9OyB9
OwogCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThBREM0Mjk0QjVBNjIwMDc2
Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3Iu
cG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEYyQTQz
RjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUzMiw2ICsxNjUzMyw5IEBACiAJCUMw
NDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlD
MDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVjdE1hYy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
Lm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBhdGggPSBtYWMvQVhJc29s
YXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzA4RjEzQTEy
NDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYTG9n
Z2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QTAyOTM3OUM2RTAw
QzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QTEy
OTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWFRleHRNYXJrZXJDb2Nv
YS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYzMjUyNDEyQkYyOTAwOUM3
M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1keWxpYi1kZWZpbml0
aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0gdXNyL2xpYi9saWJBY2Nl
c3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCUMwRThBREM0Mjk0QjVB
NjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEYyQTQz
RjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVybDsgbmFtZSA9IHBy
ZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBtOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjE0OTgsNiArMjE1MDIsNyBAQAogCQkyOUE4MTIwNDBGQkI5
QjQxMDA1MTAyOTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICov
LAogCQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8sCiAJCQkJMjlBRTIxMjky
MUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQkyOUE4MTIwNTBGQkI5QjUy
MDA1MTAyOTMgLyogbWFjICovLApAQCAtMjE1NzQsNiArMjE1NzksOCBAQAogCQkJCUMwNDkzRUI3
MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFDQUFGMTMxODIyRUMw
MEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIxQTBGQkI5QzFEMDA1
MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJE
MyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAv
KiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyogQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlDMEU4QURDNDI5NEI1QTYyMDA3NkNCREMg
LyogQVhUcmVlU3RvcmUuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAzMDAyOEM1OTIgLyogRm9y
Y2VkQWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCkBAIC0zMTY0Miw2ICszMTY0OSwxNCBAQAogCQkJ
bmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07CisJCUMwRTIwOEI3
MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBCWEdyb3VwOworCQkJ
Y2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtl
ckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAvKiBhdWRpbyAqLyA9
IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0zNTIxNyw2ICszNTIz
Miw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNvbGF0ZWRPYmplY3Qu
aCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4MyAvKiBBWElzb2xh
dGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMxRDAwNTEwMjkzIC8q
IEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIwOEEyMjkzNzlDNkYwMEMw
RDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkxQzlGMkY5MUFFM0JF
QjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0ZvcndhcmRDYWNoZS5oIGlu
IEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAppbmRleCBlZWQ0ODgxZjVmYTAuLjBkNTk4Y2I5ZTI4MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0zNiw2ICszNiw3IEBA
CiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFYSXNvbGF0ZWRUcmVl
LmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFRleHRNYXJrZXIuaCIKICNp
bmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCkBA
IC0yMjI5LDcgKzIyMzAsNyBAQCBWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJs
ZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmCiAgICAgICAgIHJldHVy
biB7IH07CiAKICAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKTsKLSAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRl
eHRNYXJrZXJEYXRhLmF4SUQpKQorICAgIGlmIChjYWNoZSAmJiAhY2FjaGUtPm1faWRzSW5Vc2Uu
Y29udGFpbnModGV4dE1hcmtlckRhdGEub2JqZWN0SUQpKQogICAgICAgICByZXR1cm4geyB9Owog
CiAgICAgcmV0dXJuIHZpc2libGVQb3NpdGlvbjsKQEAgLTI1MDcsMzcgKzI1MDgsMTggQEAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRD
aGFyYWN0ZXJPZmZzZXRzKGNvbnMKICAgICByZXR1cm4geyB7ICpzdGFydCwgKmVuZCB9IH07CiB9
CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zm
c2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0
JiBjaGFyYWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFy
a2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rl
ck9mZnNldCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICBy
ZXR1cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwot
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElu
cHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7Ci0gICAgICAgIHRleHRN
YXJrZXJEYXRhLmlnbm9yZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAot
ICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShk
b21Ob2RlKTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENv
bnZlcnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBv
c2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZz
ZXQpOwotICAgIGludCB2cE9mZnNldCA9IDA7Ci0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNO
dWxsKCkpIHsKLSAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVw
RXF1aXZhbGVudCgpOwotICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+
b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0
TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAg
IHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3Rh
cnRJbmRleDsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKLSAgICB0ZXh0
TWFya2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAot
ICAgIHRoaXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKwor
ICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAg
ICAgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmNoYXJhY3Rlck9mZnNldC5ub2RlKS5p
c1Bhc3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciwgeyB9
LCAwLCAwLCB0cnVlIH07CisKKyAgICBzZXROb2RlSW5Vc2UoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUp
OworICAgIHJldHVybiB7IHRoaXMsIGNoYXJhY3Rlck9mZnNldC5ub2RlLCB2aXNpYmxlUG9zaXRp
b25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCksCisgICAgICAgIGNoYXJhY3Rl
ck9mZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0LCBmYWxzZSB9OwogfQog
CiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNl
dEZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0LCBib29sIGVu
dGVyVGV4dENvbnRyb2xzKQpAQCAtMjU3MSwxNyArMjU1MywxMiBAQCBDaGFyYWN0ZXJPZmZzZXQg
QVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0IFNp
bXBsZVJhbgogICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9m
ZnNldCwgb3B0aW9ucywgc3RheVdpdGhpblJhbmdlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hl
OjpzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0YSYgdGV4dE1h
cmtlckRhdGEsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQorVGV4dE1h
cmtlckRhdGEgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2Uo
Y29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7Ci0gICAgLy8gVGhpcyBt
ZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBi
ZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyBy
aXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUu
Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXpl
b2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBpc1N0YXJ0
KTsKKyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRG
b3JSYW5nZShyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hh
cmFjdGVyT2Zmc2V0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJh
Y3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50IG9mZnNldCwgVHJhdmVy
c2VPcHRpb24gb3B0aW9uKQpAQCAtMjYzMCwxNSArMjYwNyw2IEBAIENoYXJhY3Rlck9mZnNldCBB
WE9iamVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmIG5vZGUs
IGludCBvCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKIH0KIAotdm9pZCBBWE9iamVjdENh
Y2hlOjp0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4
dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQotewot
ICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFy
a2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5p
bmc6IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9u
dHJpdmlhbCB0eXBlLgotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJE
YXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0KLSAgICBzZXRUZXh0TWFya2VyRGF0
YVdpdGhDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci19
Ci0KIGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYgcHJldmlvdXMsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgbmV4dCkKIHsKICAgICAv
LyBNYXRjaCB0aGUgYmVoYXZpb3Igb2YgVmlzaWJsZVBvc2l0aW9uLCB3ZSBzaG91bGQgc2tpcCB0
aGUgbm9kZSBib3VuZGFyeSB3aGVuIHRoZXJlJ3Mgbm8gdmlzdWFsIHNwYWNlIG9yIG5ldyBsaW5l
IGNoYXJhY3Rlci4KQEAgLTI2NTcsNDEgKzI2MjUsNTcgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpz
aG91bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29uc3Qg
Q2gKICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6
dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0
TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisKK1Rl
eHRNYXJrZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rl
ck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBD
aGFyYWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0ZXJPZmZz
ZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0YTsK
KyAgICBhdXRvIG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBwcmV2aW91cyA9IGNo
YXJhY3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAgICAg
ICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJP
ZmZzZXQobmV4dCwgZmFsc2UpOwogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZp
b3VzLCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQs
IGZhbHNlKTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1h
cmtlckRhdGEsIG5leHQpOwotICAgICAgICAKKyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRh
Rm9yQ2hhcmFjdGVyT2Zmc2V0KG5leHQpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIG5l
eHQgQ2hhcmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAgICAgICAgIGlm
ICghbGVuZ3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHByZXZp
b3VzLCBuZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7CiAgICAgICAg
IHByZXZpb3VzID0gbmV4dDsKLSAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8
IHNob3VsZENvbnRpbnVlKTsKKyAgICB9IHdoaWxlIChkYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29u
dGludWUpOworICAgIHJldHVybiBkYXRhOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRN
YXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXJrZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK0FYVGV4
dE1hcmtlciBBWE9iamVjdENhY2hlOjpuZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXIm
IG1hcmtlcikKIHsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZz
ZXQ7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgQVNT
RVJUKG1faWQgPT0gbWFya2VyLmRhdGEoKS50cmVlSUQpOworICAgIHJldHVybiB0ZXh0TWFya2Vy
RGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKK30KKworVGV4dE1hcmtlckRhdGEg
QVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBUZXh0TWFya2Vy
RGF0YSBkYXRhOworICAgIGF1dG8gcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0
byBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwogICAgIGJvb2wgc2hvdWxkQ29udGludWU7CiAgICAg
ZG8gewogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNlOwogICAgICAgICBwcmV2aW91cyA9
IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzLCBmYWxzZSk7Ci0gICAgICAgIHRleHRN
YXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBwcmV2aW91cyk7Ci0g
ICAgICAgIAorICAgICAgICBkYXRhID0gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQo
cHJldmlvdXMpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIHByZXZpb3VzIENoYXJhY3Rl
ck9mZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZv
clJhbmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkp
KQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSB0cnVlOwogICAgICAgICBuZXh0ID0gcHJl
dmlvdXM7Ci0gICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250
aW51ZSk7CisgICAgfSB3aGlsZSAoZGF0YS5pZ25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsKKyAg
ICByZXR1cm4gZGF0YTsKK30KKworQVhUZXh0TWFya2VyIEFYT2JqZWN0Q2FjaGU6OnByZXZpb3Vz
VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBU1NFUlQobV9p
ZCA9PSBtYXJrZXIuZGF0YSgpLnRyZWVJRCk7CisgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhRm9y
UHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKIH0KIAogTm9kZSogQVhPYmplY3RDYWNo
ZTo6bmV4dE5vZGUoTm9kZSogbm9kZSkgY29uc3QKQEAgLTI3ODksNTIgKzI3NzMsMzAgQEAgQWNj
ZXNzaWJpbGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRl
eHRNYXJrZXJEYXRhKFRleHRNYXIKICAgICByZXR1cm4gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9k
ZSk7CiB9CiAKLXN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRl
eHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVBvcykKK3N0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRl
eHRNYXJrZXJEYXRhRm9yVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlz
aWJsZVBvc2l0aW9uKQogewotICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQorICAgIGlmICh2
aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
LSAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAg
IE5vZGUqIGRvbU5vZGUgPSBkZWVwUG9zLmFuY2hvck5vZGUoKTsKLSAgICBBU1NFUlQoZG9tTm9k
ZSk7Ci0gICAgaWYgKCFkb21Ob2RlKQorICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CisgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmFuY2hv
ck5vZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2Rl
KSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxk
KCkpCisgICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KCpub2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKIAogICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBhbiBhbmNo
b3IgdHlwZSByZWZlcnJpbmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVkIG5vZGUs
IHdlIHNob3VsZAogICAgIC8vIHNldCB0aGUgdGV4dCBtYXJrZXIgZGF0YSB3aXRoIENoYXJhY3Rl
ck9mZnNldCBzbyB0aGF0IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBub2RlLgot
ICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGcm9t
VmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3MpOwotICAgIGlmIChkZWVwUG9zLmFuY2hvclR5cGUo
KSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IGRlZXBQb3MuYW5jaG9yVHlw
ZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikgewotICAgICAgICBUZXh0
TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAgIHJl
dHVybiB0ZXh0TWFya2VyRGF0YTsKLSAgICB9CisgICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQgPSBj
aGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisgICAg
aWYgKHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5j
aG9yIHx8IHBvc2l0aW9uLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVy
Q2hpbGRyZW4pCisgICAgICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNl
dChjaGFyYWN0ZXJPZmZzZXQpOwogCi0gICAgLy8gZmluZCBvciBjcmVhdGUgYW4gYWNjZXNzaWJp
bGl0eSBvYmplY3QgZm9yIHRoaXMgbm9kZQotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZG9t
Tm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4g
b2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwotCi0gICAgLy8gVGhpcyBtZW1vcnkg
bXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0
ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBh
bmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZv
aWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAK
LSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJr
ZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwotICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQ
b3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5hbmNob3JU
eXBlID0gZGVlcFBvcy5hbmNob3JUeXBlKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkg
PSB2aXNpYmxlUG9zLmFmZmluaXR5KCk7Ci0KLSAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJP
ZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJh
Y3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKLQotICAgIGNhY2hl
LT5zZXROb2RlSW5Vc2UoZG9tTm9kZSk7Ci0KLSAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7Cisg
ICAgYXV0byogY2FjaGUgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBj
YWNoZS0+c2V0Tm9kZUluVXNlKG5vZGUpOworICAgIHJldHVybiB7IHsgY2FjaGUsIG5vZGUsIHZp
c2libGVQb3NpdGlvbiwKKyAgICAgICAgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJh
Y3Rlck9mZnNldC5vZmZzZXQsIGZhbHNlIH0gfTsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBleGl0
cyBhcyBhIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCBhIHN5bmNocm9ub3VzIGxh
eW91dC4KQEAgLTI4NDMsMjQgKzI4MDUsMjQgQEAgc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0
YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXgKICAg
ICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJ
bnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRy
b2wuZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29u
dHJvbC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+
IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwotICAgIGlmICghb2JqKQor
ICAgIFJlZlB0ciBvYmplY3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUoJnRleHRDb250cm9sKTsKKyAg
ICBpZiAoIW9iamVjdCkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIC8vIFRo
aXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBj
YW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgogICAgIC8vIFdhcm5pbmc6IFRoaXMg
aXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0
eXBlLgogICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwogICAgIG1lbXNldChzdGF0
aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRh
KSk7Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKKwor
ICAgIHRleHRNYXJrZXJEYXRhLnRyZWVJRCA9IGNhY2hlLT5tX2lkOworICAgIHRleHRNYXJrZXJE
YXRhLm9iamVjdElEID0gb2JqZWN0LT5vYmplY3RJRCgpOwogICAgIHRleHRNYXJrZXJEYXRhLm5v
ZGUgPSAmdGV4dENvbnRyb2w7CiAKICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJv
bCk7Ci0KICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKaW5kZXggYmNkZjNiYTk4NmIzLi4wMDFkZWMw
ZTk4N2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5o
CkBAIC00NCw2ICs0NCw3IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorY2xhc3MgQVhUZXh0TWFya2VyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQXJl
YUVsZW1lbnQ7CiBjbGFzcyBIVE1MVGFibGVFbGVtZW50OwpAQCAtNTYsMTkgKzU3LDcgQEAgY2xh
c3MgUmVuZGVyVGV4dDsKIGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247
CiBjbGFzcyBXaWRnZXQ7Ci0KLXN0cnVjdCBUZXh0TWFya2VyRGF0YSB7Ci0gICAgQVhJRCBheElE
OwotCi0gICAgTm9kZSogbm9kZSB7IG51bGxwdHIgfTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgeyAw
IH07Ci0gICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSB7IFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IgfTsKLSAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5
OjpEb3duc3RyZWFtIH07Ci0KLSAgICBpbnQgY2hhcmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKLSAg
ICBpbnQgY2hhcmFjdGVyT2Zmc2V0IHsgMCB9OwotICAgIGJvb2wgaWdub3JlZCB7IGZhbHNlIH07
Ci19Oworc3RydWN0IFRleHRNYXJrZXJEYXRhOwogCiBzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0IHsK
ICAgICBOb2RlKiBub2RlOwpAQCAtMTUwLDYgKzEzOSw3IEBAIGNsYXNzIEFYT2JqZWN0Q2FjaGUg
OiBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QVhPYmplY3RDYWNoZT4KICAgICBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKICAgICBmcmllbmQgY2xhc3MgQVhJc29sYXRlZFRyZWU7CiAgICAgZnJpZW5k
IFdURjo6VGV4dFN0cmVhbSYgb3BlcmF0b3I8PChXVEY6OlRleHRTdHJlYW0mLCBBWE9iamVjdENh
Y2hlJik7CisgICAgZnJpZW5kIEFYVGV4dE1hcmtlcjsKIHB1YmxpYzoKICAgICBleHBsaWNpdCBB
WE9iamVjdENhY2hlKERvY3VtZW50Jik7CiAgICAgfkFYT2JqZWN0Q2FjaGUoKTsKQEAgLTIzNiwx
NSArMjI2LDE3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0IG1hcmtlciB1dGlsaXRpZXMuCiAgICAg
c3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0TWFy
a2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAg
ICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JQ
cmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zm
c2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJr
ZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAg
ICBBWFRleHRNYXJrZXIgbmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJik7CisgICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgcHJldmlvdXNUZXh0TWFy
a2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYpOwog
ICAgIC8vIFVzZSBpZ25vcmVOZXh0Tm9kZVN0YXJ0L2lnbm9yZVByZXZpb3VzTm9kZUVuZCB0byBk
ZXRlcm1pbmUgdGhlIGJlaGF2aW9yIHdoZW4gd2UgYXJlIGF0IG5vZGUgYm91bmRhcnkuIAogICAg
IENoYXJhY3Rlck9mZnNldCBuZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYsIGJvb2wgaWdub3JlTmV4dE5vZGVTdGFydCA9IHRydWUpOwogICAgIENoYXJhY3Rlck9mZnNl
dCBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGln
bm9yZVByZXZpb3VzTm9kZUVuZCA9IHRydWUpOwotICAgIHZvaWQgc3RhcnRPckVuZFRleHRNYXJr
ZXJEYXRhRm9yUmFuZ2UoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wp
OworICAgIFRleHRNYXJrZXJEYXRhIHN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiwgYm9vbCk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHN0YXJ0T3JFbmRD
aGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wsIGJvb2wgZW50
ZXJUZXh0Q29udHJvbHMgPSBmYWxzZSk7CiAgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNz
aWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRz
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwpAQCAtNDU2
LDcgKzQ0OCw2IEBAIHByb3RlY3RlZDoKICAgICBDaGFyYWN0ZXJPZmZzZXQgdHJhdmVyc2VUb09m
ZnNldEluUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBpbnQsIFRyYXZlcnNlT3B0aW9uID0gVHJh
dmVyc2VPcHRpb25EZWZhdWx0LCBib29sIHN0YXlXaXRoaW5SYW5nZSA9IGZhbHNlKTsKICAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0RnJv
bVZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICB2b2lkIHNldFRl
eHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENo
YXJhY3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIgY2hhcmFjdGVyQWZ0ZXIoY29uc3QgQ2hhcmFj
dGVyT2Zmc2V0Jik7CiAgICAgVUNoYXIzMiBjaGFyYWN0ZXJCZWZvcmUoY29uc3QgQ2hhcmFjdGVy
T2Zmc2V0Jik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRP
ZmZzZXQoTm9kZSYsIGludCwgVHJhdmVyc2VPcHRpb24gPSBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZmJjNGJkM2RjYWJlCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3Bw
CkBAIC0wLDAgKzEsMjMyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJBWFRleHRNYXJrZXIuaCIKKworI2luY2x1ZGUgIkFYVHJlZVN0b3JlLmgiCisjaW5j
bHVkZSAiSFRNTElucHV0RWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQorICAgICAgICByZXR1
cm47CisKKyAgICBOb2RlKiBub2RlID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCku
YW5jaG9yTm9kZSgpOworICAgIEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCisgICAgICAg
IHJldHVybjsKKworICAgIGF1dG8qIGNhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8g
ZGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9z
aXRpb24pKQorICAgICAgICBtX2RhdGEgPSAqZGF0YTsKK30KKworQVhUZXh0TWFya2VyOjpBWFRl
eHRNYXJrZXIoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxs
KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvKiBjYWNoZSA9IGNoYXJhY3Rlck9m
ZnNldC5ub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgbV9kYXRhID0g
Y2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7
Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKE5vZGUqIG5vZGUpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIG1fZGF0YS5ub2RlID0gbm9kZTsKKworICAgIGF1dG8qIGNhY2hlID0gbV9kYXRhLm5vZGUt
PmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJl
dHVybjsKKyAgICBtX2RhdGEudHJlZUlEID0gY2FjaGUtPm1faWQ7CisKKyAgICBhdXRvKiBvYmpl
Y3QgPSBjYWNoZS0+Z2V0T3JDcmVhdGUobV9kYXRhLm5vZGUpOworICAgIGlmICghb2JqZWN0KQor
ICAgICAgICByZXR1cm47CisgICAgbV9kYXRhLm9iamVjdElEID0gb2JqZWN0LT5vYmplY3RJRCgp
OworCisgICAgY2FjaGUtPnNldE5vZGVJblVzZShtX2RhdGEubm9kZSk7Cit9CisKK3ZvaWQgQVhU
ZXh0TWFya2VyOjpzZXREYXRhKE5vZGUqIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246
OkFuY2hvclR5cGUgYW5jaG9yVHlwZSwgQWZmaW5pdHkgYWZmaW5pdHksIHVuc2lnbmVkIGNoYXJh
Y3RlclN0YXJ0SW5kZXgsIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisgICAg
bV9kYXRhLm5vZGUgPSBub2RlOworCisgICAgYXV0byogY2FjaGUgPSBtX2RhdGEubm9kZS0+ZG9j
dW1lbnQoKS5heE9iamVjdENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJu
OworICAgIG1fZGF0YS50cmVlSUQgPSBjYWNoZS0+bV9pZDsKKworICAgIGF1dG8qIG9iamVjdCA9
IGNhY2hlLT5nZXRPckNyZWF0ZShtX2RhdGEubm9kZSk7CisgICAgaWYgKCFvYmplY3QpCisgICAg
ICAgIHJldHVybjsKKyAgICBtX2RhdGEub2JqZWN0SUQgPSBvYmplY3QtPm9iamVjdElEKCk7CisK
KyAgICBtX2RhdGEub2Zmc2V0ID0gb2Zmc2V0OworICAgIG1fZGF0YS5hbmNob3JUeXBlID0gYW5j
aG9yVHlwZTsKKyAgICBtX2RhdGEuYWZmaW5pdHkgPSBhZmZpbml0eTsKKworICAgIG1fZGF0YS5j
aGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyU3RhcnRJbmRleDsKKyAgICBtX2RhdGEuY2hh
cmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0OworfQorCitBWFRleHRNYXJrZXI6Om9wZXJh
dG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGlmIChpc051bGwoKSB8fCBub2RlKCktPmlzUHNldWRvRWxlbWVudCgpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgUG9zaXRpb24gcG9zaXRpb247CisgICAgaWYgKG1fZGF0
YS5hbmNob3JUeXBlID09IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpCisgICAg
ICAgIHBvc2l0aW9uID0gUG9zaXRpb24obm9kZSgpLCBtX2RhdGEub2Zmc2V0LCBtX2RhdGEuYW5j
aG9yVHlwZSk7CisgICAgZWxzZQorICAgICAgICBwb3NpdGlvbiA9IFBvc2l0aW9uKG5vZGUoKSwg
bV9kYXRhLmFuY2hvclR5cGUpOworCisgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bihwb3NpdGlvbiwgbV9kYXRhLmFmZmluaXR5KTsKKyAgICBhdXRvIGRlZXBQb3NpdGlvbiA9IHZp
c2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgIGlmIChkZWVwUG9zaXRpb24uaXNO
dWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiByZW5kZXJlciA9IGRlZXBQ
b3NpdGlvbi5kZXByZWNhdGVkTm9kZSgpLT5yZW5kZXJlcigpOworICAgIGlmICghcmVuZGVyZXIp
CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1
bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0lu
VXNlLmNvbnRhaW5zKG1fZGF0YS5vYmplY3RJRCkpCisgICAgICAgIHJldHVybiB7IH07CisgICAg
cmV0dXJuIHZpc2libGVQb3NpdGlvbjsKK30KKworQVhUZXh0TWFya2VyOjpvcGVyYXRvciBDaGFy
YWN0ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAg
ICBDaGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG5vZGUoKSwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0SW5k
ZXgsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAgIC8vIFdoZW4gd2UgYXJlIGF0IGEgbGlu
ZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVwc3RyZWFtLCBpdCBtZWFucyB0aGUg
dGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAvLyBX
ZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2gg
dGhlIFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFt
KSB7CisgICAgICAgIGlmIChhdXRvIGNhY2hlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46
OnRyZWVGb3JJRChtX2RhdGEudHJlZUlEKSkKKyAgICAgICAgICAgIHJldHVybiBjYWNoZS0+cHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQocmVzdWx0LCBmYWxzZSk7CisgICAgfQorICAgIHJldHVybiBy
ZXN1bHQ7Cit9CisKK0FYQ29yZU9iamVjdCogQVhUZXh0TWFya2VyOjpvYmplY3QoKSBjb25zdAor
eworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBhdXRv
IHRyZWUgPSBBWFRyZWVTdG9yZTxBWE9iamVjdENhY2hlPjo6dHJlZUZvcklEKHRyZWVJRCgpKTsK
KyAgICByZXR1cm4gdHJlZSA/IHRyZWUtPm9iamVjdEZvcklEKG9iamVjdElEKCkpIDogbnVsbHB0
cjsKK30KKworI2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKK1N0cmluZyBBWFRleHRNYXJrZXI6
OmRlYnVnRGVzY3JpcHRpb24oKSBjb25zdAoreworICAgIGlmIChpc051bGwoKSkKKyAgICAgICAg
cmV0dXJuICI8bnVsbD4iX3M7CisKKyAgICBhdXRvIHNlcGFyYXRvciA9ICIsICI7CisgICAgcmV0
dXJuIG1ha2VTdHJpbmcoCisgICAgICAgICJ0cmVlSUQgIiwgdHJlZUlEKCkubG9nZ2luZ1N0cmlu
ZygpCisgICAgICAgICwgc2VwYXJhdG9yLCAib2JqZWN0SUQgIiwgb2JqZWN0SUQoKS5sb2dnaW5n
U3RyaW5nKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsIG5vZGUoKS0+ZGVidWdEZXNjcmlwdGlvbigp
CisgICAgICAgICwgc2VwYXJhdG9yLCAib2Zmc2V0ICIsIG1fZGF0YS5vZmZzZXQKKyAgICAgICAg
LCBzZXBhcmF0b3IsICJBbmNob3JUeXBlICIsIG1fZGF0YS5hbmNob3JUeXBlCisgICAgICAgICwg
c2VwYXJhdG9yLCAiQWZmaW5pdHkgIiwgbV9kYXRhLmFmZmluaXR5CisgICAgICAgICwgc2VwYXJh
dG9yLCAiY2hhcmFjdGVyU3RhcnRJbmRleCAiLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnRJbmRleAor
ICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAiLCBtX2RhdGEuY2hhcmFjdGVy
T2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIsIGlzSWdub3JlZCgpCisg
ICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2Uo
Y29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorICAgIDogbV9zdGFydChyYW5nZS5z
dGFydCkKKyAgICAsIG1fZW5kKHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3Qgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CisKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBj
YWNoZSA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAo
IWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXJ0ID0gQVhUZXh0TWFya2VyKGNh
Y2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCB0cnVlKSk7Cisg
ICAgbV9lbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRG
b3JSYW5nZSgqcmFuZ2UsIGZhbHNlKSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRN
YXJrZXJSYW5nZShjb25zdCBBWFRleHRNYXJrZXImIHMsIGNvbnN0IEFYVGV4dE1hcmtlciYgZSkK
KyAgICA6IG1fc3RhcnQocykKKyAgICAsIG1fZW5kKGUpCit7Cit9CisKK0FYVGV4dE1hcmtlclJh
bmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJU
KGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBtX3N0YXJ0LCBtX2VuZCB9OworfQorCitz
dGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJSYW5nZTo6c2ltcGxlUmFuZ2Uo
KSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHN0YXJ0
Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fc3RhcnQpOworICAgIGF1dG8gZW5k
Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZW5kKTsKKyAgICBpZiAoIXN0YXJ0
Qm91bmRhcnlQb2ludCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICByZXR1cm4geyB7ICpzdGFydEJvdW5kYXJ5UG9pbnQsICplbmRCb3VuZGFy
eVBvaW50IH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwLi44M2Q0MGFkOTE4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0wLDAgKzEsMTUxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBUZXh0TWFya2VyRGF0YSB7CisgICAgQVhJRCB0
cmVlSUQ7CisgICAgQVhJRCBvYmplY3RJRDsKKworICAgIE5vZGUqIG5vZGUgeyBudWxscHRyIH07
CisgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OworICAgIFBvc2l0aW9uOjpBbmNob3JUeXBlIGFu
Y2hvclR5cGUgeyBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH07CisgICAgQWZm
aW5pdHkgYWZmaW5pdHkgeyBBZmZpbml0eTo6RG93bnN0cmVhbSB9OworCisgICAgdW5zaWduZWQg
Y2hhcmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQg
eyAwIH07CisgICAgYm9vbCBpZ25vcmVkIHsgZmFsc2UgfTsKKworICAgIFRleHRNYXJrZXJEYXRh
KCkgPSBkZWZhdWx0OworICAgIFRleHRNYXJrZXJEYXRhKEFYSUQgdHJlZUlELCBBWElEIG9iamVj
dElELAorICAgICAgICBOb2RlKiBub2RlID0gbnVsbHB0ciwgdW5zaWduZWQgb2Zmc2V0ID0gMCwK
KyAgICAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSA9IFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IsCisgICAgICAgIEFmZmluaXR5IGFmZmluaXR5ID0gQWZmaW5p
dHk6OkRvd25zdHJlYW0sCisgICAgICAgIHVuc2lnbmVkIGNoYXJTdGFydCA9IDAsIHVuc2lnbmVk
IGNoYXJPZmZzZXQgPSAwLCBib29sIGlnbm9yZWQgPSBmYWxzZSkKKyAgICAgICAgICAgIDogdHJl
ZUlEKHRyZWVJRCksIG9iamVjdElEKG9iamVjdElEKQorICAgICAgICAgICAgLCBub2RlKG5vZGUp
LCBvZmZzZXQob2Zmc2V0KQorICAgICAgICAgICAgLCBhbmNob3JUeXBlKGFuY2hvclR5cGUpLCBh
ZmZpbml0eShhZmZpbml0eSkKKyAgICAgICAgICAgICwgY2hhcmFjdGVyU3RhcnRJbmRleChjaGFy
U3RhcnQpLCBjaGFyYWN0ZXJPZmZzZXQoY2hhck9mZnNldCksIGlnbm9yZWQoaWdub3JlZCkKKyAg
ICB7IH0KKyAgICBUZXh0TWFya2VyRGF0YShBWE9iamVjdENhY2hlKiBjYWNoZSwgTm9kZSogbm9k
ZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCisgICAgICAgIGludCBj
aGFyU3RhcnQgPSAwLCBpbnQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZCA9IGZhbHNlKQor
ICAgICAgICAgICAgOiBub2RlKG5vZGUpCisgICAgICAgICAgICAsIGlnbm9yZWQoaWdub3JlZCkK
KyAgICB7CisgICAgICAgIGlmIChjYWNoZSkgeworICAgICAgICAgICAgdHJlZUlEID0gY2FjaGUt
PnRyZWVJRCgpOworCisgICAgICAgICAgICBpZiAoUmVmUHRyIG9iamVjdCA9IGNhY2hlLT5nZXRP
ckNyZWF0ZShub2RlKSkKKyAgICAgICAgICAgICAgICBvYmplY3RJRCA9IG9iamVjdC0+b2JqZWN0
SUQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRp
b24uZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgb2Zmc2V0ID0gIXZpc2libGVQb3NpdGlvbi5p
c051bGwoKSA/IHN0ZDo6bWF4KHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIDAp
IDogMDsKKyAgICAgICAgYW5jaG9yVHlwZSA9IHBvc2l0aW9uLmFuY2hvclR5cGUoKTsKKyAgICAg
ICAgYWZmaW5pdHkgPSB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKKworICAgICAgICBjaGFy
YWN0ZXJTdGFydEluZGV4ID0gc3RkOjptYXgoY2hhclN0YXJ0LCAwKTsKKyAgICAgICAgY2hhcmFj
dGVyT2Zmc2V0ID0gc3RkOjptYXgoY2hhck9mZnNldCwgMCk7CisgICAgfQorfTsKKworY2xhc3Mg
QVhUZXh0TWFya2VyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQg
Y2xhc3MgQVhUZXh0TWFya2VyUmFuZ2U7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzCisg
ICAgQVhUZXh0TWFya2VyKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOworICAgIEFYVGV4dE1hcmtl
cihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIoY29uc3QgVGV4dE1h
cmtlckRhdGEmIGRhdGEpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeyB9CisgICAgQVhU
ZXh0TWFya2VyKFRleHRNYXJrZXJEYXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkK
KyAgICB7IH0KKyAgICBBWFRleHRNYXJrZXIoTm9kZSopOworI2lmIFBMQVRGT1JNKENPQ09BKQor
ICAgIEFYVGV4dE1hcmtlcihBWFRleHRNYXJrZXJSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFy
a2VyKCkgPSBkZWZhdWx0OworCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFp
c051bGwoKTsgfQorICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0OworICAgIG9w
ZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisg
ICAgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcGxhdGZvcm1PYmplY3QoKSBjb25zdDsKKyAg
ICBvcGVyYXRvciBBWFRleHRNYXJrZXJSZWYoKSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVj
dCgpLmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRpZgorCisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7
IHJldHVybiBtX2RhdGEudHJlZUlEOyB9CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5vYmplY3RJRDsgfQorICAgIEFYQ29yZU9iamVjdCogb2JqZWN0KCkgY29uc3Q7
CisKKyAgICBUZXh0TWFya2VyRGF0YSBjb25zdCYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0
YTsgfQorICAgIE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm9kZTsgfQorICAg
IGJvb2wgaXNJZ25vcmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlnbm9yZWQ7IH0KKworI2lm
IEVOQUJMRShUUkVFX0RFQlVHR0lORykKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNv
bnN0OworI2VuZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVy
biAhbV9kYXRhLnRyZWVJRC5pc1ZhbGlkKCkgfHwgIW1fZGF0YS5vYmplY3RJRC5pc1ZhbGlkKCk7
IH0KKyAgICB2b2lkIHNldERhdGEoTm9kZSosIHVuc2lnbmVkIG9mZnNldCwgUG9zaXRpb246OkFu
Y2hvclR5cGUsIEFmZmluaXR5LCB1bnNpZ25lZCBjaGFyYWN0ZXJTdGFydEluZGV4LCB1bnNpZ25l
ZCBjaGFyYWN0ZXJPZmZzZXQpOworICAgIFRleHRNYXJrZXJEYXRhIG1fZGF0YTsKK307CisKK2Ns
YXNzIEFYVGV4dE1hcmtlclJhbmdlIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1
YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMuCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3Qg
VmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsKKyAgICBBWFRleHRNYXJrZXJSYW5nZShjb25zdCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIEFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IEFY
VGV4dE1hcmtlciYsIGNvbnN0IEFYVGV4dE1hcmtlciYpOworI2lmIFBMQVRGT1JNKE1BQykKKyAg
ICBBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJlZik7CisjZW5kaWYKKyAgICBB
WFRleHRNYXJrZXJSYW5nZSgpID0gZGVmYXVsdDsKKworICAgIG9wZXJhdG9yIGJvb2woKSBjb25z
dCB7IHJldHVybiAhbV9zdGFydC5pc051bGwoKSAmJiAhbV9lbmQuaXNOdWxsKCk7IH0KKyAgICBv
cGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0OworICAgIHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+IHNpbXBsZVJhbmdlKCkgY29uc3Q7CisKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0
OworICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdlUmVmKCkgY29uc3QgeyByZXR1cm4gcGxh
dGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFYVGV4dE1hcmtl
ciBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KKyAgICBBWFRleHRNYXJrZXIgZW5k
KCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KK3ByaXZhdGU6CisgICAgQVhUZXh0TWFya2VyIG1f
c3RhcnQ7CisgICAgQVhUZXh0TWFya2VyIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9y
ZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCmluZGV4IDMy
MWRlZWZiMjJhOS4uODc0NDczOTE4N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWFRyZWVTdG9yZS5oCkBAIC0zNiwxNSArMzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4K
IGNsYXNzIEFYVHJlZVN0b3JlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRyZWVTdG9y
ZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQVhJRCB0cmVl
SUQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgc3RhdGljIFQqIHRyZWVGb3JJRChBWElE
KTsKIHByb3RlY3RlZDoKICAgICBBWFRyZWVTdG9yZSgpID0gZGVmYXVsdDsKICAgICBzdGF0aWMg
dm9pZCBhZGQoQVhJRCwgV2Vha1B0cjxUPik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3ZlKEFYSUQp
OwogICAgIHN0YXRpYyBib29sIGNvbnRhaW5zKEFYSUQpOwogCi0gICAgc3RhdGljIFJlZlB0cjxU
PiB0cmVlRm9ySUQoQVhJRCk7CiAgICAgc3RhdGljIEFYSUQgZ2VuZXJhdGVOZXdJRCgpOwotCiAg
ICAgY29uc3QgQVhJRCBtX2lkIHsgZ2VuZXJhdGVOZXdJRCgpIH07CiAgICAgc3RhdGljIExvY2sg
c19zdG9yZUxvY2s7CiBwcml2YXRlOgpAQCAtNzMsNyArNzQsNyBAQCBpbmxpbmUgYm9vbCBBWFRy
ZWVTdG9yZTxUPjo6Y29udGFpbnMoQVhJRCBheElEKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBU
PgotaW5saW5lIFJlZlB0cjxUPiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkK
K2lubGluZSBUKiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKIHsKICAgICBM
b2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKICAgICByZXR1cm4gbWFwKCkuZ2V0KGF4SUQp
LmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9B
WFRleHRNYXJrZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2Ev
QVhUZXh0TWFya2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwLi5iN2JhZDY3NjEyNzMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsODMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICog
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIK
KworI2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyTWFjLmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+CisjZWxzZSAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJJT1MuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4dE1hcmtl
cjo6QVhUZXh0TWFya2VyKEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyUmVmKQoreworICAgIGlm
ICghdGV4dE1hcmtlclJlZikKKyAgICAgICAgcmV0dXJuOworCisjaWYgUExBVEZPUk0oTUFDKQor
ICAgIEFTU0VSVChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSA9PSBBWFRleHRNYXJrZXJHZXRU
eXBlSUQoKSk7CisgICAgaWYgKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpICE9IEFYVGV4dE1h
cmtlckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQoQVhUZXh0TWFy
a2VyR2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpID09IHNpemVvZihtX2RhdGEpKTsKKyAgICBpZiAo
QVhUZXh0TWFya2VyR2V0TGVuZ3RoKHRleHRNYXJrZXJSZWYpICE9IHNpemVvZihtX2RhdGEpKQor
ICAgICAgICByZXR1cm47CisKKyAgICBtZW1jcHkoJm1fZGF0YSwgQVhUZXh0TWFya2VyR2V0Qnl0
ZVB0cih0ZXh0TWFya2VyUmVmKSwgc2l6ZW9mKG1fZGF0YSkpOworI2Vsc2UgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICBtZW1jcHkoJm1fZGF0YSwgdGV4dE1hcmtlclJlZiwgc2l6ZW9mKG1f
ZGF0YSkpOworI2VuZGlmCit9CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IEFYVGV4dE1h
cmtlcjo6cGxhdGZvcm1PYmplY3QoKSBjb25zdAoreworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBy
ZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNv
bnN0IFVJbnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOworI2Vsc2UgLy8gUExBVEZPUk0o
SU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gKEFYVGV4dE1hcmtlclJlZikmbV9kYXRhOworI2VuZGlm
Cit9CisKKyNpZiBQTEFURk9STShNQUMpCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2Vy
UmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQorICAgIDogbV9z
dGFydChBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0ZXh0TWFya2VyUmFuZ2VSZWYp
KQorICAgICwgbV9lbmQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5RW5kTWFya2VyKHRleHRNYXJrZXJS
YW5nZVJlZikpCit7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSYW5nZVJlZikg
PT0gQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKSk7Cit9CisKK1JldGFpblB0cjxBWFRleHRN
YXJrZXJSYW5nZVJlZj4gQVhUZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0ZShrQ0ZBbGxvY2F0
b3JEZWZhdWx0CisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2Nh
dG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9zdGFydC5tX2RhdGEsIHNpemVvZihtX3N0YXJ0
Lm1fZGF0YSkpKS5nZXQoKQorICAgICAgICAsIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtD
RkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJm1fZW5kLm1fZGF0YSwgc2l6ZW9mKG1f
ZW5kLm1fZGF0YSkpKS5nZXQoKQorICAgICkpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykK
KworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
cklPUy5tbQppbmRleCBlM2EyZTYxYzZlYjguLjAzODM2Y2YyMzY3NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTE4MSwyOCArMTgxLDIyIEBAICsgKFdlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246KFZp
c2libGVQb3NpdGlvbiYpCiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1h
cmtlcldpdGhDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0
IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNoZQogewotICAgIGlmICghY2FjaGUpCi0gICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAg
ICBpZiAoIWNhY2hlIHx8IGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJu
IG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNo
ZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJh
Y3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEICYmICF0ZXh0TWFya2Vy
RGF0YS5pZ25vcmVkKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFy
a2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4
dE1hcmtlckRhdGEub2JqZWN0SUQgJiYgIXRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNo
ZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICop
c3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVS
YW5nZT4mKXJhbmdlIGlzU3RhcnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSop
Y2FjaGUKIHsKLSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmICgh
cmFuZ2UpCisgICAgaWYgKCFjYWNoZSB8fCAhcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0g
ICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRU
ZXh0TWFya2VyRGF0YUZvclJhbmdlKHRleHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwot
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEg
PSBjYWNoZS0+c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoKnJhbmdlLCBpc1N0YXJ0
KTsKKyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2Nd
IGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVs
ZWFzZSgpOwogfQpAQCAtMjY3MywyNiArMjY2NywyNCBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKXRleHRNYXJrZXJGb3JQb2ludDooQ0dQb2ludClwb2ludAogCiAtIChXZWJBY2Nl
c3NpYmlsaXR5VGV4dE1hcmtlciAqKW5leHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJh
Y3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUg
PSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8qIGNhY2hl
ID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hl
KQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJr
ZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQo
dGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0
YS5heElEKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0
YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXRleHRN
YXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtl
cjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChX
ZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zm
c2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAogewotICAgIEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBh
dXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0
YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0No
YXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAo
IXRleHRNYXJrZXJEYXRhLmF4SUQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUt
PnRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0
KTsKKyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmls
OwogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2Nd
IGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVs
ZWFzZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
QVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FY
T2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggN2I5MmRiYTNhNGE3Li4xNWViZjM1NDlkMzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMu
bW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1h
Yy5tbQpAQCAtODIxLDExICs4MjEsOSBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAogICAgIGlm
ICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0
TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQo
dGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0
YS5heElEIHx8IHRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCisgICAgYXV0byB0ZXh0TWFya2VyRGF0
YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZz
ZXQpOworICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQgfHwgdGV4dE1hcmtlckRhdGEu
aWdub3JlZCkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBhZG9wdENGKEFYVGV4
dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFy
a2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKQEAg
LTg0NywxMSArODQ1LDkgQEAgQVhUZXh0TWFya2VyUmVmIHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9y
UmFuZ2UoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IHN0ZDo6b3AKICAgICBpZiAoIWNhY2hl
IHx8ICFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFRleHRNYXJrZXJEYXRhIHRl
eHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5n
ZSh0ZXh0TWFya2VyRGF0YSwgKnJhbmdlLCBpc1N0YXJ0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJE
YXRhLmF4SUQpCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT5zdGFydE9yRW5kVGV4
dE1hcmtlckRhdGFGb3JSYW5nZSgqcmFuZ2UsIGlzU3RhcnQpOworICAgIGlmICghdGV4dE1hcmtl
ckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gYWRvcHRD
RihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikm
dGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5hdXRvcmVsZWFzZSgpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDQyMzRjZDY5
ZjkxOS4uNzIxMDdkOTcxNjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1h
Yy5tbQpAQCAtMzMsNiArMzMsNyBAQAogCiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAi
QVhPYmplY3RDYWNoZS5oIgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nl
c3NpYmlsaXR5QVJJQUdyaWRSb3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgog
I2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxpc3QuaCIKQEAgLTcxNywzOCArNzE4LDIyIEBAIHN0YXRp
YyBzdGQ6OnBhaXI8c3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFy
Y2hEaXJlY3Rpb24+IGFjY2VzCiAKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJzCiAK
LXN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0
ZXJPZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJr
ZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQogewog
ICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtl
ckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENo
YXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAo
IXRleHRNYXJrZXJEYXRhLmF4SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFk
b3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50
OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisKKyAgICBhdXRv
IG5leHRNYXJrZXIgPSBjYWNoZS0+bmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4g
bmV4dE1hcmtlciA/IG5leHRNYXJrZXIucGxhdGZvcm1PYmplY3QoKSA6IG5pbDsKIH0KIAotc3Rh
dGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJh
Y3Rlck9mZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0
ZXJPZmZzZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0
TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikK
IHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRN
YXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclBy
ZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwot
ICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBy
ZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNv
bnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKLX0K
LQotLSAoUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0
ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAgcmV0dXJu
IG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5h
eE9iamVjdENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7Ci19CiAKLS0gKFJldGFpblB0cjxBWFRl
eHRNYXJrZXJSZWY+KXByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFj
dGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hl
KCksIGNoYXJhY3Rlck9mZnNldCk7CisgICAgYXV0byBwcmV2aW91c01hcmtlciA9IGNhY2hlLT5w
cmV2aW91c1RleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gcHJldmlvdXNNYXJrZXIgPyBw
cmV2aW91c01hcmtlci5wbGF0Zm9ybU9iamVjdCgpIDogbmlsOwogfQogCiAvLyBGSVhNRTogUmVt
b3ZlIHRoaXMgbWV0aG9kIHNpbmNlIGNsaWVudHMgc2hvdWxkIG5vdCBuZWVkIHRvIGNhbGwgdGhp
cyBtZXRob2QgYW5kIHNob3VsZCBub3QgYmUgZXhwb3NlZCBpbiB0aGUgcHVibGljIGludGVyZmFj
ZS4KQEAgLTMzNzQsMjQgKzMzNTksMjQgQEAgLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpbGluZVRl
eHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZil0ZXh0TWEKICAgICAg
ICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgYXV0byB2
aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0
TWFya2VyKTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKICAgICAg
ICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2U7CiAgICAgICAgIHN3
aXRjaCAodGV4dFVuaXQpIHsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGluZToKLSAgICAgICAg
ICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9z
aXRpb24odmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdl
ID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9zaXRpb24obWFya2VyKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0OjpMZWZ0TGluZToKLSAgICAgICAgICAg
IHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9z
aXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9u
UmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtl
cik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6UmlnaHRMaW5l
OgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdo
dExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAg
dmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdodExpbmVWaXNpYmxlUG9z
aXRpb25SYW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9z
aXRpb25zKGNhY2hlLCB2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwgdmlzaWJsZVBvc2l0aW9u
UmFuZ2UuZW5kKTsKKyAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJhbmdlKHZpc2libGVQb3Np
dGlvblJhbmdlKS5wbGF0Zm9ybU9iamVjdCgpOwogICAgIH0pOwogfQogCkBAIC0zNjg1LDI1ICsz
NjcwLDIzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICBy
ZXR1cm4gKGlkKVtzZWxmIF90ZXh0TWFya2VyRm9ySW5kZXg6W251bWJlciBpbnRlZ2VyVmFsdWVd
XTsKIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9y
VGV4dE1hcmtlciJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1
dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlciwgcHJvdGVjdGVk
U2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAg
ICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmpl
Y3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0
dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byogYXhPYmplY3QgPSBhY2Nlc3NpYmlsaXR5T2Jq
ZWN0Rm9yVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJr
ZXIpOwotICAgICAgICAgICAgaWYgKCFheE9iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4g
bmlsOworICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICBh
dXRvKiBvYmplY3QgPSBtYXJrZXIub2JqZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KQorICAg
ICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFj
aG1lbnQoKSAmJiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld10pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XTsKKyAg
ICAgICAgYXV0byogd3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpOworICAgICAgICBpZiAoIXdy
YXBwZXIpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4gYXhP
YmplY3QtPndyYXBwZXIoKTsKLSAgICAgICAgfSk7CisgICAgICAgIGlmIChpZCBhdHRhY2htZW50
VmlldyA9IHdyYXBwZXIuYXR0YWNobWVudFZpZXcpCisgICAgICAgICAgICByZXR1cm4gYXR0YWNo
bWVudFZpZXc7CisgICAgICAgIHJldHVybiB3cmFwcGVyOwogICAgIH0KIAogICAgIGlmIChbYXR0
cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50Il0p
IHsKICAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFs
dWVGcm9tTWFpblRocmVhZDxpZD4oWyZ1aUVsZW1lbnRdICgpIC0+IFJldGFpblB0cjxpZD4gewot
ICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50
LmdldCgpLT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC5nZXQoKS0+ZWxlbWVudFJhbmdlKCkp
OworICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVt
ZW50LT5heE9iamVjdENhY2hlKCksIHVpRWxlbWVudC0+ZWxlbWVudFJhbmdlKCkpOwogICAgICAg
ICB9KTsKICAgICB9CiAKQEAgLTM3NTQsNyArMzczNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtl
ckZvclZpc2libGVQb3NpdGlvbihiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tp
bmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpOworICAgICAg
ICAgICAgcmV0dXJuIChpZClBWFRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0
aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KSkucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgp
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM4NDMsOSArMzgyNiw4IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNUZXh0
TWFya2VyKFthcnJheSBvYmplY3RBdEluZGV4OjBdKQogICAgICAgICAgICAgfHwgIUFYT2JqZWN0
SXNUZXh0TWFya2VyKFthcnJheSBvYmplY3RBdEluZGV4OjFdKSkKICAgICAgICAgICAgIHJldHVy
biBuaWw7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNl
ZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmYXJyYXldICgpIC0+IFJldGFpblB0cjxpZD4gewot
ICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycygoQVhUZXh0
TWFya2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjBdLCAoQVhUZXh0TWFya2VyUmVmKVthcnJh
eSBvYmplY3RBdEluZGV4OjFdKS5nZXQoKTsKLSAgICAgICAgfSk7CisKKyAgICAgICAgcmV0dXJu
IChpZClBWFRleHRNYXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0
QXRJbmRleDowXSB9LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0g
fSB9LnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRl
eHRNYXJrZXJzIl0pIHsKQEAgLTM4ODQsOCArMzg2Niw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0g
ICAgICAgICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBB
WFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIG5leHRU
ZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAg
fSk7CiAgICAgfQogCkBAIC0zODk5LDggKzM4ODEsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExF
TUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNl
dCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAg
ICAgICAgICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4
dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAg
IEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gcHJl
dmlvdXNUZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAg
ICAgICAgfSk7CiAgICAgfQogCkBAIC0zOTgxLDI2ICszOTYzLDEzIEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJU
cmVlIChzbyBmYXIpLgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0
ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJl
dGFpblB0cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3Rl
ZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2Jq
ZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFu
Z2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hl
KCksIHRleHRNYXJrZXJSYW5nZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVu
ZFRleHRNYXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdl
LCB0cnVlKTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1h
cmtlclJhbmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiAoaWQpYXhUZXh0
TWFya2VyUmFuZ2Uuc3RhcnQoKS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAg
fQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJl
dHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFu
Z2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4g
ewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCku
YXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZv
clRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJr
ZXJSYW5nZSk7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9y
UmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwgZmFsc2UpOwotICAg
ICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0
ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0dXJuIChpZClheFRleHRNYXJrZXJSYW5nZS5l
bmQoKS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAjaWYgRU5BQkxF
KFRSRUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CmluZGV4
IDVkMzNkYWNiMmQzZi4uNTA0NjAyNThmYzMzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhw
ZWN0ZWQudHh0CkBAIC0xLDE3ICsxLDE0IEBACi10ZXh0IGhlcmUKLXRleHQgYmxvY2sKLXRleHQg
aGVyZQogVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBj
b3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLgogCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSA9
PT0gMTAKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0
KS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihlbmQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSA9PT0gMTAKK1BBU1M6IG5ld1JhbmdlLmlzRXF1
YWwocmFuZ2UpID09PSB0cnVlCiAKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4
dE1hcmtlclJhbmdlMSkgaXMgMTAKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkg
aXMgdHJ1ZQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJrZXJSYW5nZSkg
aXMgMTAKLVBBU1MgbmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFya2VyUmFuZ2UxKSBpcyB0
cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKLQor
dGV4dCBoZXJlCit0ZXh0IGJsb2NrCit0ZXh0IGhlcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCmluZGV4
IGQ0OTM2YWQyMmQxOC4uMzQwYWIxZTE5ODBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwKQEAgLTEs
NTEgKzEsNDIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHkt
aGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5Pgog
CiB0ZXh0IGhlcmUKLTxkaXYgaWQ9InRleHQxIiB0YWJpbmRleD0iMCI+dGV4dCBibG9jazwvZGl2
PgorPGRpdiBpZD0idGV4dDEiPnRleHQgYmxvY2s8L2Rpdj4KIHRleHQgaGVyZQogCi08cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0Pgot
Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxs
IHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4iKTsK
LQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbGV0
IHRlc3RPdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0
dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLlxuXG4iOwog
Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9jdXMoKTsKLSAg
ICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50
OworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgidGV4dDEiKS5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAgICAvLyBHZXQg
dGhlIGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4
KDApOworICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1hcmtlciBm
b3IgdGhpcyBlbGVtZW50J3MgcmFuZ2UuCisgICAgICAgIHZhciByYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3Qo
InRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSIsICIxMCIpOworICAgICAgICB2YXIg
c3RhcnQgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CiAK
LSAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1hcmtlciBmb3Ig
dGhpcyByYW5nZS4KLSAgICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0
TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMSkiLCAiMTAiKTsKLSAgICAgICAgICB2
YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UxKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgc3RhcnQgbWFya2Vy
IHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQgd2Ugc3RhcnRlZCB3aXRoLgorICAg
ICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8g
Q2hlY2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50
IHRoYXQgd2Ugc3RhcnRlZCB3aXRoLgotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCki
KTsKKyAgICAgICAgLy8gR2V0IHRoZSBlbmQgbWFya2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVz
IHVzIHRoZSBzYW1lIGVsZW1lbnQuCisgICAgICAgIHZhciBlbmQgPSB0ZXh0LmVuZFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVj
dCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRl
eHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hl
Y2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50LgotICAgICAgICAgIHZhciBlbmRN
YXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlMSk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAgICAgLy8gTWFr
ZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBhbmQgY2hl
Y2sgdGhlIGxlbmd0aC4KKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHN0YXJ0LCBlbmQpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpIiwgIjEwIik7CiAKLSAgICAgICAg
ICAvLyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5kIGVuZCBtYXJrZXJz
IGFuZCBjaGVjayB0aGUgbGVuZ3RoCi0gICAgICAgICAgdmFyIG5ld01hcmtlclJhbmdlID0gdGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRNYXJrZXIpOwotICAg
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJrZXJSYW5n
ZSkiLCAiMTAiKTsKKyAgICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUg
bWFya2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAorICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVj
dCgibmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gQW5k
IG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0
aAotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFy
a2VyUmFuZ2UxKSIpOworICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKICAgICB9Ci0KIDwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJv
bS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYzU3NjU4YTU2Zi4uOGZjNWZk
NzI0OGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gt
cHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVt
ZW50LWV4cGVjdGVkLnR4dApAQCAtMSwxNiArMSwxMyBAQAotRmlyc3QgbGluZSBvZiB0ZXh0Ci1i
dXR0b24KLVRoaXJkIGxpbmUgb2YgdGV4dAogVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFy
Y2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQuCiAKLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KK1BBU1M6IGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHJhbmdlKSA9PT0gJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKK1BBU1M6IGVsZW1lbnQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSA9PT0gJ2J1dHRvbicKK1BBU1M6IHJlc3VsdEVs
ZW1lbnQuc3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnCitQQVNT
OiByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0
ZXh0JwogCi0KLVBBU1MgZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIGlzICdGaXJzdCBsaW5lIG9mIHRleHQnCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKGxpbmVSYW5nZSkgaXMgJ2J1dHRvbicKLVBBU1MgcmVzdWx0RWxlbWVudC5zdHJp
bmdWYWx1ZSBpcyAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JwotUEFTUyByZXN1bHRFbGVt
ZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1p
Z25vcmVkLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJj
aC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAppbmRleCA2ZWE4MTg3YzAyMjYu
Ljk1ZDdhNDZjZWNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
c2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1l
bnQuaHRtbApAQCAtMSw1MCArMSw0NyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRG
Ly9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
YWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJv
ZHkiPgorPGJvZHk+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgcm9sZT0iZ3JvdXAiPgogPGRpdiBp
ZD0idGVzdCI+Rmlyc3QgbGluZSBvZiB0ZXh0PGJyPgogPGJ1dHRvbiBpZD0iYnV0dG9uIiBhcmlh
LWhpZGRlbj0idHJ1ZSI+YnV0dG9uPC9idXR0b24+CiA8YnI+VGhpcmQgbGluZSBvZiB0ZXh0PC9k
aXY+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
Cis8L2Rpdj4KIAogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgYWJp
bGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVs
ZW1lbnQuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikg
ewotICAgICAgICAKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJvZHkiKS5mb2N1
cygpOwotICAgICAgICB2YXIgY29udGFpbmVyRWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlz
IHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9t
IGFuIGlnbm9yZWQgZWxlbWVudC5cblxuIjsKKworICAgICAgICB2YXIgY29udGFpbmVyID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250YWluZXIiKTsK
ICAgICAgICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInRlc3QiKS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIHZhciBtYXJrZXJS
YW5nZSA9IGVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICAg
ICAgc2hvdWxkQmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKLSAgICAgICAgLy8gVHJ5IHRv
IGdldCB0aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxpbmUgdGV4dCBtYXJrZXIgY2FsbHMKLSAg
ICAgICAgdmFyIHRleHRNYXJrZXIgPSBlbGVtZW50LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpOwotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVudC5uZXh0VGV4
dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRl
eHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHZhciBsaW5lUmFuZ2UgPSBlbGVtZW50Lmxp
bmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICBzaG91
bGRCZSgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKSIsICInYnV0
dG9uJyIpOwotICAgICAgICAKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSk7Ci0gICAgICAgIHZhciBzdGFydEVs
ZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcih0ZXh0TWFy
a2VyKTsKLSAgICAgICAgCisgICAgICAgIHZhciByYW5nZSA9IGVsZW1lbnQudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwgIidGaXJzdCBsaW5lIG9mIHRleHQn
Iik7CisKKyAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxp
bmUgdGV4dCBtYXJrZXIgY2FsbHMuCisgICAgICAgIHZhciBtYXJrZXIgPSBlbGVtZW50LmVuZFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICBtYXJrZXIgPSBlbGVt
ZW50Lm5leHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG1hcmtlciA9IGVsZW1lbnQubmV4
dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgcmFuZ2UgPSBlbGVtZW50LmxpbmVUZXh0TWFy
a2VyUmFuZ2VGb3JUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
ImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInYnV0dG9uJyIpOwor
CisgICAgICAgIG1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKHJhbmdlKTsKKyAgICAgICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisKICAgICAgICAgLy8gU2VhcmNoIGZv
cndhcmQKLSAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxl
bWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFy
Y2hLZXkiLCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKKyAg
ICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxz
ZSk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUi
LCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKKwogICAgICAgICAvLyBTZWFyY2gg
YmFja3dhcmQKLSAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVt
ZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFueVR5cGVTZWFy
Y2hLZXkiLCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxlbWVudC5zdHJp
bmdWYWx1ZSIsICInQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworICAgICAgICByZXN1
bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVs
ZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTog
Rmlyc3QgbGluZSBvZiB0ZXh0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJjb250YWluZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVn
KG91dHB1dCk7CiAgICAgfQotICAgICAgICAKIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+Ci08L2h0bWw+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1m
b3ItcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGNkY2M3N2MzYzg3MS4uNmE3ZDJmNzhhM2U0IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdl
LWZvci1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0xLDI4MSArMSwy
MDcgQEAKLVRoaW5rIGRpZmZlcmVudCBBcHBsZQotCi1ib2xkIGl0YWxpYwotdW5kZXJsaW5lIGxh
c3QhCi0KLUhlbGxvIFdvcmxkIQotVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFu
Z2Ugd29ya3MgcHJvcGVybHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBv
ZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQorVGhpcyB0
ZXN0cyB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LgogCiBjb250
ZW50IGxlbmd0aDogNjUKIEFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFjdGVy
IGluIHRoZSB0ZXh0OgotMAotJycKLTEKLSdUJwotMgotJ1RoJwotMwotJ1RoaScKLTQKLSdUaGlu
JwotNQotJ1RoaW5rJwotNgotJ1RoaW5rICcKLTcKLSdUaGluayBkJwotOAotJ1RoaW5rIGRpJwot
OQotJ1RoaW5rIGRpZicKLTEwCi0nVGhpbmsgZGlmZicKLTExCi0nVGhpbmsgZGlmZmUnCi0xMgot
J1RoaW5rIGRpZmZlcicKLTEzCi0nVGhpbmsgZGlmZmVyZScKLTE0Ci0nVGhpbmsgZGlmZmVyZW4n
Ci0xNQotJ1RoaW5rIGRpZmZlcmVudCcKLTE2Ci0nVGhpbmsgZGlmZmVyZW50ICcKLTE3Ci0nVGhp
bmsgZGlmZmVyZW50IEEnCi0xOAotJ1RoaW5rIGRpZmZlcmVudCBBcCcKLTE5Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcCcKLTIwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGwnCi0yMQotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZScKLTIyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjMKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzAgJycKKzEgJ1QnCisyICdUaCcKKzMgJ1RoaScKKzQgJ1RoaW4nCis1ICdU
aGluaycKKzYgJ1RoaW5rICcKKzcgJ1RoaW5rIGQnCis4ICdUaGluayBkaScKKzkgJ1RoaW5rIGRp
ZicKKzEwICdUaGluayBkaWZmJworMTEgJ1RoaW5rIGRpZmZlJworMTIgJ1RoaW5rIGRpZmZlcicK
KzEzICdUaGluayBkaWZmZXJlJworMTQgJ1RoaW5rIGRpZmZlcmVuJworMTUgJ1RoaW5rIGRpZmZl
cmVudCcKKzE2ICdUaGluayBkaWZmZXJlbnQgJworMTcgJ1RoaW5rIGRpZmZlcmVudCBBJworMTgg
J1RoaW5rIGRpZmZlcmVudCBBcCcKKzE5ICdUaGluayBkaWZmZXJlbnQgQXBwJworMjAgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsJworMjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIyICdUaGluayBk
aWZmZXJlbnQgQXBwbGUnCisyMyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKICcKLTI0Ci0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCisyNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGInCi0yNQot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBibycK
LTI2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbCcKLTI3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNyAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQnCi0yOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjggJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkICcKLTI5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyOSAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaScKLTMwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiszMCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXQnCi0zMQotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorMzEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YScKLTMyCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbCcKLTMzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMyAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGknCi0zNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzQgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYycKLTM1Ci0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiszNSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiAnCi0zNgotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorMzYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0
YWxpYwogdScKLTM3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNyAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bicKLTM4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisz
OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmQnCi0zOQotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMzkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW5kZScKLTQwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MCAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcicKLTQxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
Cis0MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmwnCi00Mgot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaScKLTQzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MyAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbicKLTQ0Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis0NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUnCi00NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDUgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lICcKLTQ2Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis0NiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
bmUgbCcKLTQ3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NyAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGEnCi00OAotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNDggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGxhcycKLTQ5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0OSAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCcKLTUwCi0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis1MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
bmUgbGFzdCEnCi01MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTEgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwotNTIKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzUyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGluZSBsYXN0IQogCiDvv7wnCi01MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTMgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/
vEgnCi01NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTQgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlJwotNTUKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzU1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWwnCi01NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NTYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3Qh
CiAKIO+/vEhlbGwnCi01NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTcgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvJwot
NTgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyAnCi01OQotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorNTkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFcnCi02MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNjAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
c3QhCiAKIO+/vEhlbGxvIFdvJwotNjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYxICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
ZWxsbyBXb3InCi02MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjIgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmwn
Ci02MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxkJwotNjQKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzY0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IQpAQCAtMjkxLDcgKzIxNywxMSBAQCB1bmRlcmxpbmUgbGFz
dCEKIAog77+8SGVsbG8gV29ybGQhJwogJycKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMg
dHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCmlu
ZGV4IGNlMWNiZjJlZWZlMy4uYzMwNDk4NjdiMDUwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0
bWwKQEAgLTEsOSArMSw5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBI
VE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAK
IDxkaXYgaWQ9ImNvbnRlbnQiIHJvbGU9Imdyb3VwIj4KICAgICA8cD5UaGluayA8ZW0+ZGlmZmVy
ZW50PC9lbT4gPGEgaHJlZj0iYXBwbGUuY29tIj5BcHBsZTwvYT48L3A+CkBAIC0xMSwzNiArMTEs
MzQgQEAKICAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwvYnV0dG9uPgogPC9kaXY+CiAKLTxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+
Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdl
IHdvcmtzIHByb3Blcmx5LiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJv
bGxlcikgewotICAgICAgICBheEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKLSAgICAgICAgY29udGVudFRleHRNYXJrZXJS
YW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGF4RWxlbWVudCk7Ci0g
ICAgICAgIHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGNv
bnRlbnRUZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKLSAgICAgICAgZGVidWcoImNvbnRlbnQgbGVu
Z3RoOiAiICsgdGV4dExlbmd0aCk7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0
aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LlxuXG4iOwogCi0gICAg
ICAgIGRlYnVnKCJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBpbiB0
aGUgdGV4dDoiKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHRleHRMZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgZGVidWcoaSk7Ci0gICAgICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVs
ZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgaSk7Ci0gICAgICAgICAgICBkZWJ1Zygi
JyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkg
KyAiJyIpOworICAgICAgICBsZXQgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICBsZXQgcmFuZ2UgPSBjb250
ZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoY29udGVudCk7CisgICAgICAgIGxldCBjb250
ZW50TGVuZ3RoID0gY29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpLmxlbmd0
aDsKKyAgICAgICAgb3V0cHV0ICs9IGBjb250ZW50IGxlbmd0aDogJHtjb250ZW50TGVuZ3RofVxu
YDsKKworICAgICAgICBvdXRwdXQgKz0gIkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2gg
Y2hhcmFjdGVyIGluIHRoZSB0ZXh0OlxuIjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGNvbnRl
bnRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJS
YW5nZUZvclJhbmdlKDAsIGkpOworICAgICAgICAgICAgb3V0cHV0ICs9IGAke2l9ICcke2NvbnRl
bnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwogICAgICAgICB9CiAKLSAg
ICAgICAgZGVidWcoIkdldCB0aGUgcmFuZ2UgZm9yIHRoZSB3b3JkIEFwcGxlOiIpOwotICAgICAg
ICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMTYs
IDUpOwotICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOworICAgICAgICBvdXRwdXQgKz0gIkdldCB0aGUg
cmFuZ2UgZm9yIHRoZSB3b3JkIEFwcGxlOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250
ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKworICAgICAgICBvdXRw
dXQgKz0gIk91dCBvZiByYW5nZSB2YWx1ZXM6XG4iOworICAgICAgICByYW5nZSA9IGNvbnRlbnQu
dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsKKyAgICAgICAgb3V0cHV0ICs9IGAnJHtj
b250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKyAgICAgICAgcmFu
Z2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOworICAgICAgICBv
dXRwdXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5g
OwogCi0gICAgICAgIGRlYnVnKCJPdXQgb2YgcmFuZ2UgdmFsdWVzOiIpOwotICAgICAgICB0ZXh0
TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsK
LSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVt
ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOwotICAgICAgICBkZWJ1ZygiJyIg
KyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAi
JyIpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZp
c2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9CiA8L3Nj
cmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3Nj
cmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDkxNWQ1NjljMGVkMC4uZDg0YjhiMjAx
NzQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBv
c2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1l
eHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsNyBAQAotVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4KIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3Ig
dmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBh
bGwgUmVuZGVyVGV4dCBvYmplY3RzLgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNT
OiBjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpID09PSB0cnVlCiAKLQot
UEFTUyBjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKHRleHRFbGVtZW50KSBpcyB0cnVl
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jh
c2gtZm9yLXRleHQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlz
aWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKaW5kZXggYzcyNTdkNTg1ZDFh
Li42MmViNGUzNTIyZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCisrKyBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9k
ZS5odG1sCkBAIC0xLDQwICsxLDMxIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYv
L0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9h
Y2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9k
eSI+Cis8Ym9keT4KIAotPGRpdiBpZD0iY29udGVudCIgdGFiaW5kZXg9IjAiIHN0eWxlPSJ3aWR0
aDoyMDBweDsiPgorPGRpdiBpZD0iY29udGVudCIgc3R5bGU9IndpZHRoOjIwMHB4OyI+CiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogPC9kaXY+CiAKLTxwIGlkPSJk
ZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0K
LSAgICBkZXNjcmlwdGlvbigiVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5n
IGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFu
ZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyBwcm90ZWN0cyBh
Z2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0
byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuXG5cbiI7
CiAKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLmZvY3VzKCk7
Ci0gICAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2Vk
RWxlbWVudDsKLQotICAgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIgYXQgdGhpcyBwb2lu
dC4gSXQgc2hvdWxkIG5vdCBjcmFzaC4KLSAgICAgICAgICB2YXIgbWFya2VyQXRQb2ludCA9IGNv
bnRlbnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lkdGgvMiwgY29u
dGVudC55ICsgY29udGVudC5oZWlnaHQvMik7Ci0gICAgICAgICAgdmFyIHRleHRFbGVtZW50ID0g
Y29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyQXRQb2ludCk7
CisgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIg
YXQgdGhpcyBwb2ludC4gSXQgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgdmFyIG1hcmtlciA9
IGNvbnRlbnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lkdGggLyAy
LCBjb250ZW50LnkgKyBjb250ZW50LmhlaWdodCAvIDIpOworICAgICAgICAvLyBWZXJpZnkgdGhl
IGVsZW1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCisgICAgICAgIHZhciBl
bGVtZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2Vy
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNF
cXVhbChlbGVtZW50KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBWZXJpZnkgdGhlIGVsZW1l
bnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCi0gICAgICAgICAgdmFyIHRleHRF
bGVtZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2Vy
QXRQb2ludCk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb250ZW50LmNoaWxkQXRJbmRleCgw
KS5pc0VxdWFsKHRleHRFbGVtZW50KSIpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWco
b3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+Ci0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXIt
cHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rl
eHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CmluZGV4IDA0
MDQzODQ5ZGUxNi4uZWE0Yjg3N2Q0OTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXIt
cHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAKLXRleHQKLQotdGV4
dDEKLWMgIGQKLQotY2FuJ3Qgc2VsZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8KLQotYSBiCi0KLWF1
ZGlvZmlsZQotCiBUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0
aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCi0KLQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Up
IGlzIDQKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRN
YXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcKLVBB
U1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKK1BB
U1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BB
U1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5p
c0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcK
K1BBU1M6IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSA9PT0g
NQogT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6IGMgW0FUVEFDSE1FTlRdIGQKLVBBU1MgdGV4dDIu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZCcKLVBBU1MgdGV4dDIu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnMScKLVBBU1MgdGV4dDMu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZWN0JwotUEFTUyB0ZXh0
My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdzZWwnCi1QQVNTICFw
c3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSBpcyB0cnVlCi1QQVNT
IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5p
c0VxdWFsKHRleHQzKSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkg
aXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
aXMgJ2YnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAnYScKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFu
Z2UpIGlzIDQKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn
8J+YjycKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn8J+Y
gycKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1h
cmtlclJhbmdlKSBpcyAzCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMg
JyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2InCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJyAnCi1QQVNTIHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgaXMgJ2F1ZGlv77+8ZmlsZScK
LVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfvv7wn
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8
JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
J2QnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSAnMScKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
PT09ICdlY3QnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpID09PSAnc2VsJworUEFTUzogIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnQpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgPT09IHRydWUKK1BBU1M6IHRl
eHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0Vx
dWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2YnCitQQVNTOiB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdhJworUEFTUzogdGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YjycKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iDJworUEFTUzogdGV4dC50ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSA9PT0gMwor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6IHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdiJworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgPT09ICdhdWRpb++/vGZpbGUnCitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICfvv7wnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICfvv7wn
CisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisK
KworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
dGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCmluZGV4IDVlZDNiZDBk
MDZkZS4uMzhmMTNlZDdhM2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQu
aHRtbApAQCAtMSwxNSArMSwxNyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPG1ldGEgY2hhcnNldD0iVVRGLTE2Ij4K
IDwvaGVhZD4KIDxzdHlsZT4KIC51c2Vyc2VsZWN0IHsgdXNlci1zZWxlY3Q6IG5vbmU7IC13ZWJr
aXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KIDwvc3R5bGU+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9k
eT4KIAotPGRpdiBpZD0idGV4dCIgdGFiaW5kZXg9IjAiPnRleHQ8L2Rpdj4KKzxkaXYgaWQ9ImNv
bnRlbnQiPgorPGRpdiBpZD0idGV4dCI+dGV4dDwvZGl2PgogPGJyPgogdGV4dDEKIApAQCAtMzIs
MjkgKzM0LDQ1IEBAIGYKIDxwIGlkPSJ0ZXh0NiI+YSAgICAgYjwvcD4KIAogPHAgaWQ9InRleHQ3
Ij5hdWRpbzxhdWRpbyBjb250cm9scz48L2F1ZGlvPmZpbGU8L3A+Ci0KLTxwIGlkPSJkZXNjcmlw
dGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Rpdj4KIAogPHNjcmlwdD4K
KyAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
ciwgb2JqKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAg
ICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAgICAgICAgY3Vy
cmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAg
fQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2Vy
LAorICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9OworICAgIH0K
KworICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRN
YXJrZXIsIG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsK
KyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihwcmV2
aW91c01hcmtlcik7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geworICAg
ICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAgY3VycmVudDog
Y3VycmVudE1hcmtlcgorICAgICAgICB9OworICAgIH0KIAotICAgIGRlc2NyaXB0aW9uKCJUaGlz
IHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVt
ZW50ZWQgY29ycmVjdGx5LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0gICAgICAgIC8vIEdldCB0
aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRBdEluZGV4KDAp
OwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoZSBuZXh0L3By
ZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5Llxu
XG4iOworCisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJ0ZXh0IikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8vIENo
ZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQvZW5kIG1hcmtlciBmb3IgdGhpcyByYW5nZS4K
ICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxl
bWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KHRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7
CisKICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRl
eHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwotICAg
ICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRl
eHQpIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0
cnVlIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CisKICAg
ICAgICAgLy8gQ2hlY2sgbmV4dCB0ZXh0IG1hcmtlci4gKEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBp
dCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHZhciBjdXJyZW50TWFya2VyLCBwcmV2aW91
c01hcmtlciwgbWFya2VyUmFuZ2U7OwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9yd2FyZCg1LCBw
cmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwpAQCAtNjIsNTggKzgwLDU3IEBAIGYK
ICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3Vy
cmVudE1hcmtlcik7CiAgICAgICAgIHZhciBuZXdsaW5lID0gJ1xuJzsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5l
Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAgICAgIC8vIEFk
dmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kZSBhdCAidCIgaW4gInRleHQx
Ii4KICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1h
cmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwog
ICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJh
bmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCci
KTsKKwogICAgICAgICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRyYXZlcnNlIGJh
Y2t3YXJkcyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHJl
c3VsdCA9IGJhY2t3YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7
CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJy
ZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOwor
CiAgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgbW9yZSBjaGFyYWN0ZXIsIGl0IHdp
bGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQiLgogICAgICAgICByZXN1bHQg
PSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQpOwogICAg
ICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVudE1h
cmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7CiAgICAg
ICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0gIm1hYyIpCi0g
ICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCcgKyBuZXds
aW5lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CisgICAgICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ3QnIik7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCByZXBsYWNlZCBub2Rl
CiAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgidGV4dDIiKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTIgPSB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQyKTsKLSAgICAgICAgc2hvdWxkQmUoInRl
eHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7CisgICAg
ICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFy
a2VyUmFuZ2UyKSIsICI1Iik7CiAgICAgICAgIHZhciBzdHIgPSB0ZXh0Mi5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMikucmVwbGFjZShTdHJpbmcuZnJvbUNoYXJDb2Rl
KDY1NTMyKSwgIltBVFRBQ0hNRU5UXSIpOwotICAgICAgICBkZWJ1ZygiT2JqZWN0IHN0cmluZyBm
b3IgcmFuZ2U6ICIgKyBzdHIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGBPYmplY3Qg
c3RyaW5nIGZvciByYW5nZTogJHtzdHJ9XG5gOworCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0
ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7
CiAgICAgICAgIC8vIEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgImQiLgog
ICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
LCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAg
ICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZCci
KTsKKwogICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgNiBjaGFyYWN0ZXJzLCBpdCB3aWxs
IGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0MSIuCiAgICAgICAgIHJlc3VsdCA9
IGJhY2t3YXJkcyg2LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dDIpOwogICAg
ICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVudE1h
cmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQyLnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInMSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJzEnIik7CisKICAgICAgICAg
Ly8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCB1c2VyLXNlbGVjdDpub25lLCBuZXh0VGV4dE1hcmtlci9w
cmV2aW91c1RleHRNYXJrZXIgc2hvdWxkIHN0aWxsIHdvcmsuCi0gICAgICAgIHZhciB0ZXh0MyA9
IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKTsK
LSAgICAgICAgdGV4dDMgPSB0ZXh0My5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAorICAgICAg
ICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5
SWQoInRleHQzIikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8vIEFkdmFuY2UgdG8gbGFu
ZCBhdCB1c2VyLXNlbGVjdDpub25lIG5vZGUuCiAgICAgICAgIHZhciBtYXJrZXIxLCBtYXJrZXIy
OwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE4OyBpKyspIHsKQEAgLTEyNSwzNCArMTQy
LDMxIEBAIGYKICAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1hcmtlcjsKICAg
ICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKG1hcmtl
cjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0JyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidlY3QnIik7
CiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQgbWFya2VyIGZvciA2IGNo
YXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAg
ICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDMucHJldmlvdXNUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwog
ICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFy
a2VyMSwgbWFya2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidzZWwnIik7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCci
KTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZpZWxkLgogICAg
ICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJwc3ciKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cudGV4dE1hcmtl
clJhbmdlRm9yRWxlbWVudChwc3cpOwogICAgICAgICB2YXIgc3RhcnQgPSBwc3cuc3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOwotICAgICAgICBzaG91
bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIp
OwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiIXBzdy5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBDaGVj
ayBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGNhbGwgd2lsbCBza2lwIHBhc3N3b3JkIGZpZWxk
CiAgICAgICAgIC8vIFdlIHN0YXJ0IGZyb20gdGV4dDIgYW5kIGFkdmFuY2UgNiBjaGFyYWN0ZXJz
LCBpdCBzaG91bGQgc2tpcCB0aGUgcGFzc3dvcmQgZmllbGQgYW5kIGxhbmQgb24gdGV4dDMuCiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlMik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsg
aSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQogICAgICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7CisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihj
dXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIsICJ0cnVlIik7CiAgICAgICAgIC8vIENoZWNr
IHByZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5vZGUuCiAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtl
cik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdElu
ZGV4KDIpKSIpOwotICAgICAgICAKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5p
c0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIE1h
a2Ugc3VyZSB0aGF0IHRleHQgbm9kZSB3aXRoIGxpbmUgYnJlYWtzLCB3ZSBjYW4gZ28gdGhyb3Vn
aCBpdCB3aXRoIG5leHQvcHJldmlvdXMgY2FsbC4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDQiKTsKICAgICAgICAgdGV4
dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwpAQCAt
MTYzLDg3ICsxNzcsNjQgQEAgZgogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4
dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFu
Z2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7
CisKICAgICAgICAgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBlbmRNYXJrZXI7
Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7CisgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgNzsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJl
dmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtl
clJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBjdXJy
ZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIp
OworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIGVtb2ppLgogICAgICAgICB0ZXh0ID0gYWNj
ZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NSIpOwogICAg
ICAgICB2YXIgZW1vamlUZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVs
ZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIp
OwogICAgICAgICAvLyBNYWtlIHN1cmUgbmF2aWdhdGluZyBuZXh0L3ByZXZpb3VzIHRleHQgbWFy
a2VyIGlzIGJ5IGVtb2ppLgogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKGVtb2ppVGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgcmVz
dWx0ID0gZm9yd2FyZCgyLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn
8J+YjyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRz
KDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91
bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YgyciKTsK
LSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7CisKICAgICAgICAgLy8gVGVzdCBjYXNlIHdp
dGggY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ2Iik7CiAgICAgICAgIHZhciBjb2xs
YXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChj
b2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMiKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1h
cmtlclJhbmdlKSIsICIzIik7CiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRN
YXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKTsK
ICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIs
IHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQpKSIsICInYSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKICAgICAgICAgcmVzdWx0ID0gZm9y
d2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAg
c2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5j
dXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIp
OwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1
bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKwogICAgICAgICAvLyBUZXN0
IGNhc2Ugd2l0aCByZXBsYWNlZCBlbGVtZW50cyAoc2hvdWxkIHVzZSBvYmplY3QgcmVwbGFjZW1l
bnQgY2hhcmFjdGVyKS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDciKTsKICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9c
dUZGRkNmaWxlJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7CiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkr
KykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwogICAgICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7
CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyci
KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0
ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAgIHByZXZpb3Vz
TWFya2VyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0
LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBt
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtl
ciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1
RkZGQyciKTsKIAotICAgICAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtl
ciwgY3VycmVudE1hcmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRN
YXJrZXI7Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtl
cihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0g
ICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAgICAgICAgICAg
IGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KLSAgICAg
ICAgCi0gICAgICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNU
ZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50TWFya2Vy
ID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3Vz
TWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAg
ICAgIH07Ci0gICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRl
bnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7
CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJr
ZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
YWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVj
dGVkLnR4dAppbmRleCAyOTI2NDFhN2UwMzguLjVhMGEzMmMyOGQ3MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJr
ZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1l
eHBlY3RlZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAKLXRleHQKLQotdGV4dDEKLWMgIGQKLQotY2Fu
J3Qgc2VsZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8KLQotYSBiCi0KLWF1ZGlvZmlsZQotCiBUaGlz
IHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVt
ZW50ZWQgY29ycmVjdGx5LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyB0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwo
dGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtl
cihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNTIHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcgKyBuZXdsaW5lCi1QQVNTIHRl
eHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSBpcyA1CitQQVNTOiB0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0
ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVh
bCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnICsgbmV3
bGluZQorUEFTUzogdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIp
ID09PSA1CiBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogYyBbQVRUQUNITUVOVF0gZAotUEFTUyB0
ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdkJwotUEFTUyB0
ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICcxJwotUEFTUyB0
ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNT
IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBB
U1MgIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUK
LVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJr
ZXIpLmlzRXF1YWwodGV4dDMpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4
KDIpKSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSBpcyAnZicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIGlzICdhJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJr
ZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IGlzICfwn5iPJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlz
ICfwn5iDJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNw
YWNlTWFya2VyUmFuZ2UpIGlzIDMKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn
YicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBB
U1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSBpcyAnYXVkaW/vv7xm
aWxlJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J++/vCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICfvv7wnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
ID09PSAnZCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09ICcxJworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSA9PT0gJ2VjdCcKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgPT09ICdzZWwnCitQQVNTOiAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihzdGFydCkgPT09IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSA9PT0gdHJ1ZQorUEFT
UzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
LmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZicKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iPJworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmIMnCitQQVNTOiB0ZXh0
LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpID09
PSAzCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2InCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSA9PT0gJ2F1ZGlv77+8ZmlsZScK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/
vCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
J++/vCcKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRF
CiAKKworCisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464537</attachid>
            <date>2023-01-18 09:18:41 -0800</date>
            <delta_ts>2023-01-18 09:23:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230118121839.patch</filename>
            <type>text/plain</type>
            <size>106210</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA5N2U1NzA5MTQxZWM5NmU5MjJmY2E5YTY1NjliNzJkYTBlMDAxYjg1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3cgZm9yIHRoZSByZXRyaWV2YWwgb2YgdGhlIFRleHRNYXJr
ZXIgcHJvcGVydGllcyB3aXRob3V0IGhhdmluZyB0byByZXNvdXJjZSB0byB0aGUgdW5kZXJseWlu
ZyBET00gYW5kIFJlbmRlclRyZWUgb2JqZWN0cy4KClRoZSBmb2xsb3dpbmcgTWFjIEFYIEFQSSBh
dHRyaWJ1dGVzIGFyZSBub3cgaW1wbGVtZW50ZWQgd2l0aG91dCBoaXR0aW5nIHRoZSBtYWluIHRo
cmVhZCB1c2luZyBBWFRleHRNYXJrZXIgYW5kIEFYVGV4dE1hcmtlclJhbmdlOgpBWFVJRWxlbWVu
dEZvclRleHRNYXJrZXIKQVhUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VycwpBWFN0YXJ0VGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZQpBWEVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UKClRoaXMgcGF0Y2ggYWxzbyBpbmNsdWRlcyBhbiB1cGRhdGUgb2Ygc2V2ZXJhbCBsYXlvdXQg
dGVzdHMgcmVsYXRlZCB0byBUZXh0TWFya2Vycy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dCAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogU291cmNlL1dlYkNvcmUvU291cmNlc0Nv
Y29hLnR4dCAgICAgICAgICAgICAgIHwgICAxICsKIC4uLi9XZWJDb3JlL1dlYkNvcmUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiB8ICAxNiArKwogLi4uL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCAgIHwgMTg4ICsrKysrKy0tLS0tLS0tLS0KIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oICB8ICAyOCArLS0KIFNvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCB8IDE2NSArKysrKysrKysrKysrKwogU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCAgIHwgMTcyICsrKysrKysr
KysrKysrCiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmggICAgfCAg
IDcgKy0KIC4uLi9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tICB8ICA4
MyArKysrKysrCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tICAg
fCAgNDAgKystLQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gICAg
IHwgIDEyICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tICAg
fCAxMDEgKysrLS0tLS0tCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVk
LnR4dCAgfCAgMTkgKy0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAgICAg
ICAgICB8ICA1MSArKy0tLQogLi4ucmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0
ZWQudHh0IHwgIDE1ICstCiAuLi5zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
Lmh0bWwgfCAgNjMgKysrLS0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0
ZWQudHh0ICAgfCAyMTAgKysrKysrLS0tLS0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXItcmFu
Z2UtZm9yLXJhbmdlLmh0bWwgICAgICAgfCAgNDggKystLQogLi4uLXBvc2l0aW9uLWNyYXNoLWZv
ci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlvbi1j
cmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgfCAgMzUgKystCiAuLi4vdGV4dC1tYXJrZXItcHJldmlv
dXMtbmV4dC1leHBlY3RlZC50eHQgICAgfCAgNzggKysrLS0tLQogLi4uL3RleHQtbWFya2VyLXBy
ZXZpb3VzLW5leHQuaHRtbCAgICAgICAgICAgIHwgMTc1ICsrKysrKystLS0tLS0tLQogLi4uL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrKy0tLS0KIDIz
IGZpbGVzIGNoYW5nZWQsIDg5NCBpbnNlcnRpb25zKCspLCA2OTcgZGVsZXRpb25zKC0pCiBjcmVh
dGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIu
Y3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRl
eHRNYXJrZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYzMzczNmM4
NTI5ZS4uNTU1NTNkMDEyNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4
dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBAIE1v
ZHVsZXMvd2VieHIvWFJTZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2UuY3Bw
CiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hl
LmNwcAorYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlBUklBR3JpZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlk
Q2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJDb3Jl
L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjYzNDk5YjU2MTA5Li4yMDgxZTBkMTgwY2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNv
cmUvU291cmNlc0NvY29hLnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNoL2Nv
Y29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9XZWJT
cGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJLaXRC
YWRnZVN5c3RlbUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNlTWFu
YWdlckNvY29hLm1tCithY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCiBh
Y2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9B
Y2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NTlkYTIyMTExNy4uYjE1MDM4ZDI4ODc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CkBAIC00NTcxLDYgKzQ1NzEsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyogQ29k
ZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTExOEM4
RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBnZW5l
cmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVERjg4
RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFy
a2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUy
MDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJGMzI3
MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlDNzNF
QyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChX
ZWFrLCApOyB9OyB9OwogCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3RvcmUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThBREM0
Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAvKiBw
cmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUzMiw2ICsxNjUz
Myw5IEBACiAJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVjdE1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBhdGgg
PSBtYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQzA4RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4
QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0TWFy
a2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBBWFRl
eHRNYXJrZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYzMjUy
NDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNlZC1k
eWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0gdXNy
L2xpYi9saWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJCUMw
RThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQucGVy
bDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29yLnBt
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE0OTgsNiArMjE1MDIsNyBAQAogCQky
OUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlzYSA9
IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQz
IC8qIGNvY29hICovLAogCQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8sCiAJ
CQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQkyOUE4
MTIwNTBGQkI5QjUyMDA1MTAyOTMgLyogbWFjICovLApAQCAtMjE1NzQsNiArMjE1NzksOCBAQAog
CQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5ODFD
QUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4MTIx
QTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEExMjkz
NzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkzNzlD
NkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0MDA5
NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlDMEU4QURDNDI5NEI1
QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAzMDAy
OEM1OTIgLyogRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCkBAIC0zMTY0Miw2ICszMTY0
OSwxNCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJCX07
CisJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9IFBC
WEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8q
IEFYVGV4dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJCXNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2MyAv
KiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBAIC0z
NTIxNyw2ICszNTIzMiw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFYSXNv
bGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2OTI4
MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJCOUMx
RDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIwOEEy
MjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTkx
QzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0Zvcndh
cmRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlZWQ0ODgxZjVmYTAuLjA5OWYzYzJkMDA0MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0z
Niw2ICszNiw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUgIkFY
SXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFRleHRN
YXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRlICJB
Y2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFH
cmlkUm93LmgiCkBAIC0yMjEzLDcgKzIyMTQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0b3BD
YWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKICAgICBtX2NvbXB1dGVkT2JqZWN0QXR0
cmlidXRlQ2FjaGUgPSBudWxscHRyOwogfQogCi1WaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNo
ZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXJrZXJEYXRhKQorVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXJEYXRhKGNvbnN0IFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkK
IHsKICAgICBpZiAoIWlzTm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpCiAgICAgICAgIHx8
IHRleHRNYXJrZXJEYXRhLm5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQpAQCAtMjIyOSw3ICsyMjMw
LDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJgogICAgICAgICByZXR1cm4geyB9OwogCiAgICAg
YXV0byogY2FjaGUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7Ci0gICAg
aWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyh0ZXh0TWFya2VyRGF0YS5h
eElEKSkKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRleHRN
YXJrZXJEYXRhLmF4T2JqZWN0SUQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1
cm4gdmlzaWJsZVBvc2l0aW9uOwpAQCAtMjIzNywxMyArMjIzOCwxMCBAQCBWaXNpYmxlUG9zaXRp
b24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1h
cmtlckRhdGEmCiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJPZmZz
ZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEpCiB7Ci0g
ICAgaWYgKCFpc05vZGVJblVzZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKLSAgICAgICAgcmV0dXJu
IENoYXJhY3Rlck9mZnNldCgpOwotICAgIAotICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVk
KQotICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgQ2hhcmFjdGVy
T2Zmc2V0IHJlc3VsdCA9IENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YS5ub2RlLCB0ZXh0
TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJP
ZmZzZXQpOworICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8ICFpc05vZGVJblVzZSh0
ZXh0TWFya2VyRGF0YS5ub2RlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoYXJhY3Rl
ck9mZnNldCByZXN1bHQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtlckRhdGEuY2hhcmFj
dGVyU3RhcnQsIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCk7CiAgICAgLy8gV2hlbiB3
ZSBhcmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBWaXNpYmxlUG9zaXRpb24gaXMgdXBzdHJlYW0s
IGl0IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBs
aW5lLgogICAgIC8vIFdlIHVzZSB0aGUgcHJldmlvdXMgQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQg
aXQgd2lsbCBtYXRjaCB0aGUgUmFuZ2UuCiAgICAgaWYgKHRleHRNYXJrZXJEYXRhLmFmZmluaXR5
ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKQEAgLTI1MDcsMzcgKzI1MDUsMTggQEAgc3RkOjpvcHRp
b25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0
ZXJPZmZzZXRzKGNvbnMKICAgICByZXR1cm4geyB7ICpzdGFydCwgKmVuZCB9IH07CiB9CiAKLXZv
aWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0KFRl
eHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFy
YWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0
YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNl
dCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAgIGlm
IChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxl
bWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7Ci0gICAgICAgIHRleHRNYXJrZXJE
YXRhLmlnbm9yZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAgIFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21Ob2Rl
KTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENvbnZlcnQg
dG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9u
ID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwot
ICAgIGludCB2cE9mZnNldCA9IDA7Ci0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxsKCkp
IHsKLSAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZh
bGVudCgpOwotICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZz
ZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0
SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFya2Vy
RGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRleHRN
YXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRl
eDsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKLSAgICB0ZXh0TWFya2Vy
RGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAotICAgIHRo
aXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIGlm
IChpczxIVE1MSW5wdXRFbGVtZW50PihjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAgICAgJiYg
ZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmNoYXJhY3Rlck9mZnNldC5ub2RlKS5pc1Bhc3N3
b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciwgeyB9LCAwLCAw
LCB0cnVlIH07CisKKyAgICBzZXROb2RlSW5Vc2UoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpOworICAg
IHJldHVybiB7IHRoaXMsIGNoYXJhY3Rlck9mZnNldC5ub2RlLCB2aXNpYmxlUG9zaXRpb25Gcm9t
Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCksCisgICAgICAgIGNoYXJhY3Rlck9mZnNl
dC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0LCBmYWxzZSB9OwogfQogCiBDaGFy
YWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJh
bmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0LCBib29sIGVudGVyVGV4
dENvbnRyb2xzKQpAQCAtMjU3MSwxNyArMjU1MCwxMiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmpl
Y3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0IFNpbXBsZVJh
bgogICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9mZnNldCwg
b3B0aW9ucywgc3RheVdpdGhpblJhbmdlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpzdGFy
dE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRh
dGEsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQorVGV4dE1hcmtlckRh
dGEgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoY29uc3Qg
U2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7Ci0gICAgLy8gVGhpcyBtZW1vcnkg
bXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0
ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBh
bmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAg
bWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4
dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0
ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBpc1N0YXJ0KTsKKyAg
ICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5n
ZShyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKLSAg
ICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9m
ZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVy
T2Zmc2V0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rlck9m
ZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50IG9mZnNldCwgVHJhdmVyc2VPcHRp
b24gb3B0aW9uKQpAQCAtMjYzMCwxNSArMjYwNCw2IEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVj
dENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmIG5vZGUsIGludCBv
CiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjp0
ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtl
ckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQotewotICAgIC8v
IFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0
YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6IFRo
aXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlh
bCB0eXBlLgotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwg
MCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0KLSAgICBzZXRUZXh0TWFya2VyRGF0YVdpdGhD
aGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci19Ci0KIGJv
b2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYgcHJldmlvdXMsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgbmV4dCkKIHsKICAgICAvLyBNYXRj
aCB0aGUgYmVoYXZpb3Igb2YgVmlzaWJsZVBvc2l0aW9uLCB3ZSBzaG91bGQgc2tpcCB0aGUgbm9k
ZSBib3VuZGFyeSB3aGVuIHRoZXJlJ3Mgbm8gdmlzdWFsIHNwYWNlIG9yIG5ldyBsaW5lIGNoYXJh
Y3Rlci4KQEAgLTI2NTcsNDEgKzI2MjIsNTcgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpzaG91bGRT
a2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29uc3QgQ2gKICAg
ICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1h
cmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2Vy
RGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisKK1RleHRNYXJr
ZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNl
dChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBDaGFyYWN0
ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgcHJl
dmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0YTsKKyAgICBh
dXRvIG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBwcmV2aW91cyA9IGNoYXJhY3Rl
ck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAgICAgICAgc2hv
dWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZzZXQo
bmV4dCwgZmFsc2UpOwogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZpb3VzLCBu
ZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQsIGZhbHNl
KTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRh
dGEsIG5leHQpOwotICAgICAgICAKKyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9yQ2hh
cmFjdGVyT2Zmc2V0KG5leHQpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIG5leHQgQ2hh
cmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAgICAgICAgIGlmICghbGVu
Z3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHByZXZpb3VzLCBu
ZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7CiAgICAgICAgIHByZXZp
b3VzID0gbmV4dDsKLSAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8IHNob3Vs
ZENvbnRpbnVlKTsKKyAgICB9IHdoaWxlIChkYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUp
OworICAgIHJldHVybiBkYXRhOworfQorCitBWFRleHRNYXJrZXIgQVhPYmplY3RDYWNoZTo6bmV4
dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJUKG1f
aWQgPT0gbWFya2VyLnRyZWVJRCgpKTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JOZXh0
Q2hhcmFjdGVyT2Zmc2V0KG1hcmtlcik7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4dE1h
cmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1h
cmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorVGV4dE1h
cmtlckRhdGEgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rl
ck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBD
aGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7Ci0gICAgQ2hhcmFjdGVy
T2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0YTsK
KyAgICBhdXRvIHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OworICAgIGF1dG8gbmV4dCA9IGNo
YXJhY3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAgICAg
ICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgcHJldmlvdXMgPSBwcmV2aW91c0No
YXJhY3Rlck9mZnNldChwcmV2aW91cywgZmFsc2UpOwotICAgICAgICB0ZXh0TWFya2VyRGF0YUZv
ckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgcHJldmlvdXMpOwotICAgICAgICAKKyAg
ICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzKTsK
KwogICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQgaWYg
aXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFsZW5ndGhGb3JSYW5nZShyYW5n
ZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMsIG5leHQpKSkKICAgICAgICAg
ICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgbmV4dCA9IHByZXZpb3VzOwotICAg
IH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOworICAg
IH0gd2hpbGUgKGRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CisgICAgcmV0dXJuIGRh
dGE7Cit9CisKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpwcmV2aW91c1RleHRNYXJrZXIo
Y29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJUKG1faWQgPT0gbWFya2Vy
LnRyZWVJRCgpKTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rl
ck9mZnNldChtYXJrZXIpOwogfQogCiBOb2RlKiBBWE9iamVjdENhY2hlOjpuZXh0Tm9kZShOb2Rl
KiBub2RlKSBjb25zdApAQCAtMjc4OSw3OSArMjc3MCw0NCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRhdGEoVGV4
dE1hcgogICAgIHJldHVybiB0aGlzLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKIH0KIAotc3RkOjpv
cHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JW
aXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKQorc3RkOjpv
cHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JW
aXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24pCiB7
Ci0gICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5p
c051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFBvc2l0aW9uIGRl
ZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogZG9tTm9kZSA9
IGRlZXBQb3MuYW5jaG9yTm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2RlKTsKLSAgICBpZiAoIWRv
bU5vZGUpCisgICAgUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKTsKKyAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAgIEFT
U0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhU
TUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICBpZiAoaXM8
SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKm5v
ZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgLy8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVycmlu
ZyB0byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCiAgICAg
Ly8gc2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zmc2V0IHNvIHRoYXQg
dGhlIG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCi0gICAgQ2hhcmFjdGVyT2Zm
c2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24o
dmlzaWJsZVBvcyk7Ci0gICAgaWYgKGRlZXBQb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQ
b3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgZGVlcFBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246
OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKSB7Ci0gICAgICAgIFRleHRNYXJrZXJEYXRhIHRleHRN
YXJrZXJEYXRhOwotICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJE
YXRhOwotICAgIH0KLQotICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vzc2liaWxpdHkgb2Jq
ZWN0IGZvciB0aGlzIG5vZGUKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvbU5vZGUtPmRv
Y3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNh
Y2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKLQotICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUg
emVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBi
eXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBi
ZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgotICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRl
eHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgdGV4
dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5u
b2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSBkZWVwUG9zLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYW5jaG9yVHlwZSA9IGRl
ZXBQb3MuYW5jaG9yVHlwZSgpOwotICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJs
ZVBvcy5hZmZpbml0eSgpOworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zm
c2V0RnJvbVZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAgIGlmIChwb3NpdGlv
bi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBwb3Np
dGlvbi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKQor
ICAgICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVy
T2Zmc2V0KTsKIAotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rl
ck9mZnNldC5vZmZzZXQ7Ci0gICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9
IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwotCi0gICAgY2FjaGUtPnNldE5vZGVJblVzZShk
b21Ob2RlKTsKLQotICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKKyAgICBhdXRvKiBjYWNoZSA9
IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGNhY2hlLT5zZXROb2RlSW5V
c2Uobm9kZSk7CisgICAgcmV0dXJuIHsgeyBjYWNoZSwgbm9kZSwgdmlzaWJsZVBvc2l0aW9uLAor
ICAgICAgICBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNl
dCwgZmFsc2UgfSB9OwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVyZm9ybWFu
Y2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0LgorLy8gVGhpcyBm
dW5jdGlvbiBleGlzdHMgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgYSBz
eW5jaHJvbm91cyBsYXlvdXQuCiBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVj
dENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaXM8SFRNTElu
cHV0RWxlbWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHRl
eHRDb250cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRyb2wuZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVudCgp
LmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OwogCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5n
ZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OwotCi0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5z
dGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVu
Y2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1h
cmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1h
cmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEp
LCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5h
eElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4dENv
bnRyb2w7Ci0KICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7Ci0KLSAgICBy
ZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAgcmV0dXJuIHsgeyBjYWNoZSwgJnRleHRDb250cm9s
LCB7IH0gfSB9OwogfQogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dENoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgYm9vbCBp
Z25vcmVOZXh0Tm9kZVN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2Jq
ZWN0Q2FjaGUuaAppbmRleCBiY2RmM2JhOTg2YjMuLjExYjI5MWEwYmJhOCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ0LDYgKzQ0LDcgQEAg
Y2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRleHRN
YXJrZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNzIEhU
TUxUYWJsZUVsZW1lbnQ7CkBAIC01NiwxOSArNTcsNyBAQCBjbGFzcyBSZW5kZXJUZXh0OwogY2xh
c3MgU2Nyb2xsVmlldzsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsKLQot
c3RydWN0IFRleHRNYXJrZXJEYXRhIHsKLSAgICBBWElEIGF4SUQ7Ci0KLSAgICBOb2RlKiBub2Rl
IHsgbnVsbHB0ciB9OwotICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKLSAgICBQb3NpdGlvbjo6
QW5jaG9yVHlwZSBhbmNob3JUeXBlIHsgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hv
ciB9OwotICAgIEFmZmluaXR5IGFmZmluaXR5IHsgQWZmaW5pdHk6OkRvd25zdHJlYW0gfTsKLQot
ICAgIGludCBjaGFyYWN0ZXJTdGFydEluZGV4IHsgMCB9OwotICAgIGludCBjaGFyYWN0ZXJPZmZz
ZXQgeyAwIH07Ci0gICAgYm9vbCBpZ25vcmVkIHsgZmFsc2UgfTsKLX07CitzdHJ1Y3QgVGV4dE1h
cmtlckRhdGE7CiAKIHN0cnVjdCBDaGFyYWN0ZXJPZmZzZXQgewogICAgIE5vZGUqIG5vZGU7CkBA
IC0yMzYsMTUgKzIyNSwxNyBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0aWVz
LgogICAgIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yVmlz
aWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogICAgIHN0ZDo6b3B0aW9uYWw8
VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENvbnRy
b2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKTsKLSAgICB2b2lkIHRleHRNYXJrZXJEYXRh
Rm9yQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0
Jik7Ci0gICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1h
cmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICB2b2lkIHRleHRNYXJrZXJE
YXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4
dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKKyAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFy
a2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBU
ZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyIG5leHRUZXh0TWFya2VyKGNvbnN0
IEFYVGV4dE1hcmtlciYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhRm9yUHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0
TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKKyAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoY29uc3QgVGV4dE1h
cmtlckRhdGEmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1h
cmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICAvLyBVc2UgaWdub3JlTmV4dE5vZGVTdGFy
dC9pZ25vcmVQcmV2aW91c05vZGVFbmQgdG8gZGV0ZXJtaW5lIHRoZSBiZWhhdmlvciB3aGVuIHdl
IGFyZSBhdCBub2RlIGJvdW5kYXJ5LiAKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJhY3Rl
ck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZU5leHROb2RlU3RhcnQg
PSB0cnVlKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCBpZ25vcmVQcmV2aW91c05vZGVFbmQgPSB0cnVlKTsK
LSAgICB2b2lkIHN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJEYXRh
JiwgY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sKTsKKyAgICBUZXh0TWFya2VyRGF0YSBzdGFydE9y
RW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wpOwogICAg
IENoYXJhY3Rlck9mZnNldCBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3Qg
U2ltcGxlUmFuZ2UmLCBib29sLCBib29sIGVudGVyVGV4dENvbnRyb2xzID0gZmFsc2UpOwogICAg
IEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0
YShUZXh0TWFya2VyRGF0YSYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJhbmdl
Rm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmKTsKQEAgLTQ1Niw3ICs0NDcsNiBAQCBwcm90ZWN0ZWQ6CiAgICAg
Q2hhcmFjdGVyT2Zmc2V0IHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvbnN0IFNpbXBsZVJhbmdl
JiwgaW50LCBUcmF2ZXJzZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCwgYm9vbCBzdGF5
V2l0aGluUmFuZ2UgPSBmYWxzZSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
bkZyb21DaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJs
ZVBvc2l0aW9uJik7Ci0gICAgdm9pZCBzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZz
ZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hhcjMy
IGNoYXJhY3RlckFmdGVyKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIgY2hh
cmFjdGVyQmVmb3JlKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNl
dCBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNlT3B0
aW9uID0gVHJhdmVyc2VPcHRpb25EZWZhdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhUZXh0TWFya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAuLjQ2OTU1YmExYTMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
KyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCisKKyNp
bmNsdWRlICJBWFRyZWVTdG9yZS5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRN
YXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlv
bikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKHZpc2libGVQb3Np
dGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZSogbm9kZSA9IHZpc2li
bGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKTsKKyAgICBBU1NFUlQobm9k
ZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNoZSA9
IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAg
ICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKSkKKyAgICAgICAgbV9kYXRhID0gKmRh
dGE7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYgY2hhcmFjdGVyT2Zmc2V0KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBp
ZiAoYXV0byogY2FjaGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZS0+ZG9jdW1lbnQoKS5heE9iamVj
dENhY2hlKCkpCisgICAgICAgIG1fZGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJh
Y3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworfQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9y
IFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
KworICAgIGF1dG8qIGNhY2hlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVGb3JJ
RCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIGNhY2hlID8gY2FjaGUtPnZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXJEYXRhKG1fZGF0YSkgOiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKworQVhUZXh0
TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VSVChp
c01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAg
ICAgIHJldHVybiB7IH07CisKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG1fZGF0YS5ub2Rl
LCBtX2RhdGEuY2hhcmFjdGVyU3RhcnQsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAgIC8v
IFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVw
c3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJl
dmlvdXMgbGluZS4KKyAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBz
byB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5pdHkg
PT0gQWZmaW5pdHk6OlVwc3RyZWFtKSB7CisgICAgICAgIGlmIChhdXRvIGNhY2hlID0gQVhUcmVl
U3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVGb3JJRChtX2RhdGEuYXhUcmVlSUQoKSkpCisgICAg
ICAgICAgICByZXR1cm4gY2FjaGUtPnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwgZmFs
c2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBWENvcmVPYmplY3QqIEFYVGV4
dE1hcmtlcjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgYXV0byB0cmVlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNo
ZT46OnRyZWVGb3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIHRyZWUgPyB0cmVlLT5vYmplY3RG
b3JJRChvYmplY3RJRCgpKSA6IG51bGxwdHI7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCitTdHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAg
ICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisgICAgYXV0byBz
ZXBhcmF0b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICAidHJlZUlE
ICIsIHRyZWVJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9iamVj
dElEICIsIG9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpCisgICAgICAgICwgc2VwYXJhdG9yLCBu
b2RlKCktPmRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9mZnNldCAi
LCBtX2RhdGEub2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiQW5jaG9yVHlwZSAiLCBtX2Rh
dGEuYW5jaG9yVHlwZQorICAgICAgICAsIHNlcGFyYXRvciwgIkFmZmluaXR5ICIsIG1fZGF0YS5h
ZmZpbml0eQorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3RlclN0YXJ0ICIsIG1fZGF0YS5j
aGFyYWN0ZXJTdGFydAorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAiLCBt
X2RhdGEuY2hhcmFjdGVyT2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIs
IGlzSWdub3JlZCgpCisgICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhU
ZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorICAgIDog
bV9zdGFydChyYW5nZS5zdGFydCkKKyAgICAsIG1fZW5kKHJhbmdlLmVuZCkKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2Vy
UmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQoreworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47
CisKKyAgICBhdXRvKiBjYWNoZSA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmF4T2JqZWN0Q2Fj
aGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXJ0ID0g
QVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJh
bmdlLCB0cnVlKSk7CisgICAgbV9lbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUtPnN0YXJ0T3JFbmRD
aGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIGZhbHNlKSk7Cit9CisKK0FYVGV4dE1hcmtl
clJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShjb25zdCBBWFRleHRNYXJrZXImIHMsIGNvbnN0IEFY
VGV4dE1hcmtlciYgZSkKKyAgICA6IG1fc3RhcnQocykKKyAgICAsIG1fZW5kKGUpCit7Cit9CisK
K0FYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0
Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBtX3N0YXJ0LCBt
X2VuZCB9OworfQorCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJSYW5n
ZTo6c2ltcGxlUmFuZ2UoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBhdXRvIHN0YXJ0Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fc3RhcnQp
OworICAgIGF1dG8gZW5kQm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZW5kKTsK
KyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2ludCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7ICpzdGFydEJvdW5kYXJ5UG9p
bnQsICplbmRCb3VuZGFyeVBvaW50IH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44NWRmMzc4YTVhZGIKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0wLDAg
KzEsMTcyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICog
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVhPYmpl
Y3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBUZXh0TWFya2VyRGF0
YSB7CisgICAgdW5zaWduZWQgdHJlZUlEOworICAgIHVuc2lnbmVkIG9iamVjdElEOworCisgICAg
Tm9kZSogbm9kZTsKKyAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUG9zaXRpb246OkFuY2hvclR5
cGUgYW5jaG9yVHlwZTsKKyAgICBBZmZpbml0eSBhZmZpbml0eTsKKworICAgIHVuc2lnbmVkIGNo
YXJhY3RlclN0YXJ0OworICAgIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldDsKKyAgICBib29sIGln
bm9yZWQ7CisKKyAgICBUZXh0TWFya2VyRGF0YSgpCisgICAgeworICAgICAgICBtZW1zZXQoc3Rh
dGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAgICBU
ZXh0TWFya2VyRGF0YShBWElEIGF4VHJlZUlELCBBWElEIGF4T2JqZWN0SUQsCisgICAgICAgIE5v
ZGUqIG5vZGVQYXJhbSA9IG51bGxwdHIsIHVuc2lnbmVkIG9mZnNldFBhcmFtID0gMCwKKyAgICAg
ICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZVBhcmFtID0gUG9zaXRpb246OlBvc2l0
aW9uSXNPZmZzZXRJbkFuY2hvciwKKyAgICAgICAgQWZmaW5pdHkgYWZmaW5pdHlQYXJhbSA9IEFm
ZmluaXR5OjpEb3duc3RyZWFtLAorICAgICAgICB1bnNpZ25lZCBjaGFyU3RhcnQgPSAwLCB1bnNp
Z25lZCBjaGFyT2Zmc2V0ID0gMCwgYm9vbCBpZ25vcmVkUGFyYW0gPSBmYWxzZSkKKyAgICB7Cisg
ICAgICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAsIHNpemVvZigqdGhpcykp
OworICAgICAgICB0cmVlSUQgPSBheFRyZWVJRC50b1VJbnQ2NCgpOworICAgICAgICBvYmplY3RJ
RCA9IGF4T2JqZWN0SUQudG9VSW50NjQoKTsKKyAgICAgICAgbm9kZSA9IG5vZGVQYXJhbTsKKyAg
ICAgICAgb2Zmc2V0ID0gb2Zmc2V0UGFyYW07CisgICAgICAgIGFuY2hvclR5cGUgPSBhbmNob3JU
eXBlUGFyYW07CisgICAgICAgIGFmZmluaXR5ID0gYWZmaW5pdHlQYXJhbTsKKyAgICAgICAgY2hh
cmFjdGVyU3RhcnQgPSBjaGFyU3RhcnQ7CisgICAgICAgIGNoYXJhY3Rlck9mZnNldCA9IGNoYXJP
ZmZzZXQ7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVkUGFyYW07CisgICAgfQorCisgICAgVGV4
dE1hcmtlckRhdGEoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5vZGVQYXJhbSwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCisgICAgICAgIGludCBjaGFyU3RhcnQg
PSAwLCBpbnQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZFBhcmFtID0gZmFsc2UpCisgICAg
eworICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRo
aXMpKTsKKyAgICAgICAgaWYgKGNhY2hlKSB7CisgICAgICAgICAgICB0cmVlSUQgPSBjYWNoZS0+
dHJlZUlEKCkudG9VSW50NjQoKTsKKworICAgICAgICAgICAgaWYgKFJlZlB0ciBvYmplY3QgPSBj
YWNoZS0+Z2V0T3JDcmVhdGUobm9kZVBhcmFtKSkKKyAgICAgICAgICAgICAgICBvYmplY3RJRCA9
IG9iamVjdC0+b2JqZWN0SUQoKS50b1VJbnQ2NCgpOworICAgICAgICB9CisKKyAgICAgICAgbm9k
ZSA9IG5vZGVQYXJhbTsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5k
ZWVwRXF1aXZhbGVudCgpOworICAgICAgICBvZmZzZXQgPSAhdmlzaWJsZVBvc2l0aW9uLmlzTnVs
bCgpID8gc3RkOjptYXgocG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMCkgOiAw
OworICAgICAgICBhbmNob3JUeXBlID0gcG9zaXRpb24uYW5jaG9yVHlwZSgpOworICAgICAgICBh
ZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOworCisgICAgICAgIGNoYXJhY3Rl
clN0YXJ0ID0gc3RkOjptYXgoY2hhclN0YXJ0LCAwKTsKKyAgICAgICAgY2hhcmFjdGVyT2Zmc2V0
ID0gc3RkOjptYXgoY2hhck9mZnNldCwgMCk7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVkUGFy
YW07CisgICAgfQorCisgICAgQVhJRCBheFRyZWVJRCgpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8QVhJRFR5cGU+KHRyZWVJRCk7CisgICAgfQorCisg
ICAgQVhJRCBheE9iamVjdElEKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtlT2Jq
ZWN0SWRlbnRpZmllcjxBWElEVHlwZT4ob2JqZWN0SUQpOworICAgIH0KK307CisKK2NsYXNzIEFY
VGV4dE1hcmtlciB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgZnJpZW5kIGNs
YXNzIEFYVGV4dE1hcmtlclJhbmdlOworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycworICAg
IEFYVGV4dE1hcmtlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKKyAgICBBWFRleHRNYXJrZXIo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyKGNvbnN0IFRleHRNYXJr
ZXJEYXRhJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIHsgfQorICAgIEFYVGV4
dE1hcmtlcihUZXh0TWFya2VyRGF0YSYmIGRhdGEpCisgICAgICAgIDogbV9kYXRhKGRhdGEpCisg
ICAgeyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgQVhUZXh0TWFya2VyKEFYVGV4dE1hcmtl
clJlZik7CisjZW5kaWYKKyAgICBBWFRleHRNYXJrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBvcGVy
YXRvciBib29sKCkgY29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgb3BlcmF0b3IgVmlz
aWJsZVBvc2l0aW9uKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29u
c3Q7CisKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVm
PiBwbGF0Zm9ybU9iamVjdCgpIGNvbnN0OworICAgIG9wZXJhdG9yIEFYVGV4dE1hcmtlclJlZigp
IGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlm
CisKKyAgICBBWElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5heFRyZWVJRCgpOyB9
CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5heE9iamVjdElEKCk7
IH0KKyAgICBBWENvcmVPYmplY3QqIG9iamVjdCgpIGNvbnN0OworCisgICAgVGV4dE1hcmtlckRh
dGEgY29uc3QmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm5vZGU7IH0KKyAgICBib29sIGlzSWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pZ25vcmVkOyB9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXRyZWVJRCgpLmlzVmFsaWQo
KSB8fCAhb2JqZWN0SUQoKS5pc1ZhbGlkKCk7IH0KKyAgICBUZXh0TWFya2VyRGF0YSBtX2RhdGE7
Cit9OworCitjbGFzcyBBWFRleHRNYXJrZXJSYW5nZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzLgorICAgIEFYVGV4dE1hcmtlclJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2Uo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKyAgICBBWFRleHRNYXJrZXJSYW5n
ZShjb25zdCBBWFRleHRNYXJrZXImLCBjb25zdCBBWFRleHRNYXJrZXImKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworI2Vu
ZGlmCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIW1fc3RhcnQuaXNOdWxsKCkgJiYgIW1fZW5kLmlzTnVsbCgp
OyB9CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNvbnN0OworCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIFJldGFpblB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gcGxhdGZvcm1PYmpl
Y3QoKSBjb25zdDsKKyAgICBvcGVyYXRvciBBWFRleHRNYXJrZXJSYW5nZVJlZigpIGNvbnN0IHsg
cmV0dXJuIHBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlmCisKKyAgICBB
WFRleHRNYXJrZXIgc3RhcnQoKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgQVhUZXh0
TWFya2VyIGVuZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kOyB9Citwcml2YXRlOgorICAgIEFYVGV4
dE1hcmtlciBtX3N0YXJ0OworICAgIEFYVGV4dE1hcmtlciBtX2VuZDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhUcmVlU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUu
aAppbmRleCAzMjFkZWVmYjIyYTkuLjg3NDQ3MzkxODdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaApAQCAtMzYsMTUgKzM2LDE2IEBAIHRlbXBsYXRlPHR5
cGVuYW1lIFQ+CiBjbGFzcyBBWFRyZWVTdG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUo
QVhUcmVlU3RvcmUpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAg
IEFYSUQgdHJlZUlEKCkgY29uc3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHN0YXRpYyBUKiB0cmVl
Rm9ySUQoQVhJRCk7CiBwcm90ZWN0ZWQ6CiAgICAgQVhUcmVlU3RvcmUoKSA9IGRlZmF1bHQ7CiAg
ICAgc3RhdGljIHZvaWQgYWRkKEFYSUQsIFdlYWtQdHI8VD4pOwogICAgIHN0YXRpYyB2b2lkIHJl
bW92ZShBWElEKTsKICAgICBzdGF0aWMgYm9vbCBjb250YWlucyhBWElEKTsKIAotICAgIHN0YXRp
YyBSZWZQdHI8VD4gdHJlZUZvcklEKEFYSUQpOwogICAgIHN0YXRpYyBBWElEIGdlbmVyYXRlTmV3
SUQoKTsKLQogICAgIGNvbnN0IEFYSUQgbV9pZCB7IGdlbmVyYXRlTmV3SUQoKSB9OwogICAgIHN0
YXRpYyBMb2NrIHNfc3RvcmVMb2NrOwogcHJpdmF0ZToKQEAgLTczLDcgKzc0LDcgQEAgaW5saW5l
IGJvb2wgQVhUcmVlU3RvcmU8VD46OmNvbnRhaW5zKEFYSUQgYXhJRCkKIH0KIAogdGVtcGxhdGU8
dHlwZW5hbWUgVD4KLWlubGluZSBSZWZQdHI8VD4gQVhUcmVlU3RvcmU8VD46OnRyZWVGb3JJRChB
WElEIGF4SUQpCitpbmxpbmUgVCogQVhUcmVlU3RvcmU8VD46OnRyZWVGb3JJRChBWElEIGF4SUQp
CiB7CiAgICAgTG9ja2VyIGxvY2tlciB7IHNfc3RvcmVMb2NrIH07CiAgICAgcmV0dXJuIG1hcCgp
LmdldChheElEKS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uYjdiYWQ2NzYxMjczCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpAQCAtMCwwICsx
LDgzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQVhUZXh0
TWFya2VyLmgiCisKKyNpZiBQTEFURk9STShNQUMpCisjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5oIgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5o
PgorI2Vsc2UgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitB
WFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlclJlZikK
K3sKKyAgICBpZiAoIXRleHRNYXJrZXJSZWYpCisgICAgICAgIHJldHVybjsKKworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJlZikgPT0gQVhUZXh0
TWFya2VyR2V0VHlwZUlEKCkpOworICAgIGlmIChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmVmKSAh
PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJU
KEFYVGV4dE1hcmtlckdldExlbmd0aCh0ZXh0TWFya2VyUmVmKSA9PSBzaXplb2YobV9kYXRhKSk7
CisgICAgaWYgKEFYVGV4dE1hcmtlckdldExlbmd0aCh0ZXh0TWFya2VyUmVmKSAhPSBzaXplb2Yo
bV9kYXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWVtY3B5KCZtX2RhdGEsIEFYVGV4dE1h
cmtlckdldEJ5dGVQdHIodGV4dE1hcmtlclJlZiksIHNpemVvZihtX2RhdGEpKTsKKyNlbHNlIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgbWVtY3B5KCZtX2RhdGEsIHRleHRNYXJrZXJSZWYs
IHNpemVvZihtX2RhdGEpKTsKKyNlbmRpZgorfQorCitSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVm
PiBBWFRleHRNYXJrZXI6OnBsYXRmb3JtT2JqZWN0KCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShN
QUMpCisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChjb25zdCBVSW50OCopJm1fZGF0YSwgc2l6ZW9mKG1fZGF0YSkpKTsKKyNlbHNlIC8v
IFBMQVRGT1JNKElPU19GQU1JTFkpCisgICAgcmV0dXJuIChBWFRleHRNYXJrZXJSZWYpJm1fZGF0
YTsKKyNlbmRpZgorfQorCisjaWYgUExBVEZPUk0oTUFDKQorQVhUZXh0TWFya2VyUmFuZ2U6OkFY
VGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZVJlZikK
KyAgICA6IG1fc3RhcnQoQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRNYXJrZXIodGV4dE1hcmtl
clJhbmdlUmVmKSkKKyAgICAsIG1fZW5kKEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0
ZXh0TWFya2VyUmFuZ2VSZWYpKQoreworICAgIEFTU0VSVChDRkdldFR5cGVJRCh0ZXh0TWFya2Vy
UmFuZ2VSZWYpID09IEFYVGV4dE1hcmtlclJhbmdlR2V0VHlwZUlEKCkpOworfQorCitSZXRhaW5Q
dHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IEFYVGV4dE1hcmtlclJhbmdlOjpwbGF0Zm9ybU9iamVj
dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUo
a0NGQWxsb2NhdG9yRGVmYXVsdAorICAgICAgICAsIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJm1fc3RhcnQubV9kYXRhLCBzaXpl
b2YobV9zdGFydC5tX2RhdGEpKSkuZ2V0KCkKKyAgICAgICAgLCBhZG9wdENGKEFYVGV4dE1hcmtl
ckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZtX2VuZC5tX2RhdGEs
IHNpemVvZihtX2VuZC5tX2RhdGEpKSkuZ2V0KCkKKyAgICApKTsKK30KKyNlbmRpZiAvLyBQTEFU
Rk9STShNQUMpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW0KaW5kZXggZTNhMmU2MWM2ZWI4Li4wMzgzNmNmMjM2NzUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xODEsMjggKzE4MSwyMiBA
QCArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJXaXRoVmlzaWJsZVBv
c2l0aW9uOihWaXNpYmxlUG9zaXRpb24mKQogCiArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciAqKXRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJh
Y3Rlck9mZnNldCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUKIHsKLSAgICBpZiAoIWNhY2hl
KQotICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNO
dWxsKCkpCisgICAgaWYgKCFjYWNoZSB8fCBjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7
Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJE
YXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCAmJiAh
dGV4dE1hcmtlckRhdGEuaWdub3JlZCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNo
ZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAg
ICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEICYmICF0ZXh0TWFya2VyRGF0YS5pZ25vcmVk
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEg
Y2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6KGNvbnN0IHN0ZDo6b3B0aW9u
YWw8U2ltcGxlUmFuZ2U+JilyYW5nZSBpc1N0YXJ0OihCT09MKWlzU3RhcnQgY2FjaGU6KEFYT2Jq
ZWN0Q2FjaGUqKWNhY2hlCiB7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG5pbDsK
LSAgICBpZiAoIXJhbmdlKQorICAgIGlmICghY2FjaGUgfHwgIXJhbmdlKQogICAgICAgICByZXR1
cm4gbmlsOwotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT5z
dGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSh0ZXh0TWFya2VyRGF0YSwgKnJhbmdlLCBp
c1N0YXJ0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCisKKyAgICBhdXRvIHRleHRN
YXJrZXJEYXRhID0gY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKCpyYW5n
ZSwgaXNTdGFydCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hl
XSkuYXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2NzMsMjYgKzI2NjcsMjQgQEAgLSAoV2ViQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyRm9yUG9pbnQ6KENHUG9pbnQpcG9pbnQKIAog
LSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKiluZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zm
c2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAogewotICAgIEFYT2JqZWN0Q2Fj
aGUqIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBh
dXRvKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0
YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+dGV4
dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAg
aWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICBy
ZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0
aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsK
IH0KIAogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtlckZvckNo
YXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKIHsKLSAgICBB
WE9iamVjdENhY2hlKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hl
KCk7CisgICAgYXV0byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNo
ZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4
dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9y
UHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7
Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0
YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNoYXJh
Y3Rlck9mZnNldCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAg
cmV0dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hl
XSkuYXV0b3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDdiOTJkYmEzYTRhNy4uMTVlYmYzNTQ5
ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVj
dENhY2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2Jq
ZWN0Q2FjaGVNYWMubW0KQEAgLTgyMSwxMSArODIxLDkgQEAgQVhUZXh0TWFya2VyUmVmIHRleHRN
YXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IENoYXJh
Y3QKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVGV4dE1hcmtl
ckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQorICAgIGF1dG8gdGV4
dE1hcmtlckRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hh
cmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEIHx8IHRleHRN
YXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gYWRv
cHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4
KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5hdXRvcmVsZWFzZSgp
OwogfQogCkBAIC04NDcsMTEgKzg0NSw5IEBAIEFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4
dE1hcmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBzdGQ6Om9wCiAgICAg
aWYgKCFjYWNoZSB8fCAhcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+c3RhcnRPckVuZFRleHRNYXJrZXJE
YXRhRm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwgaXNTdGFydCk7Ci0gICAgaWYgKCF0
ZXh0TWFya2VyRGF0YS5heElEKQorICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+c3Rh
cnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoKnJhbmdlLCBpc1N0YXJ0KTsKKyAgICBpZiAo
IXRleHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgcmV0
dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25z
dCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3Jl
bGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRl
eCA0MjM0Y2Q2OWY5MTkuLjcyMTA3ZDk3MTYxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJNYWMubW0KQEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiQVhMb2dnZXIuaCIK
ICNpbXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2lt
cG9ydCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5
TGFiZWwuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCkBAIC03MTcsMzggKzcxOCwy
MiBAQCBzdGF0aWMgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3Np
YmlsaXR5U2VhcmNoRGlyZWN0aW9uPiBhY2NlcwogCiAjcHJhZ21hIG1hcmsgVGV4dCBNYXJrZXIg
aGVscGVycwogCi1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJr
ZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNl
dCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5l
eHRUZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1h
cmtlcikKIHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAg
IFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0
YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7
Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQotICAgICAgICByZXR1cm4gbmlsOwotICAg
IHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAo
Y29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOwor
CisgICAgYXV0byBuZXh0TWFya2VyID0gY2FjaGUtPm5leHRUZXh0TWFya2VyKG1hcmtlcik7Cisg
ICAgcmV0dXJuIG5leHRNYXJrZXIgPyBuZXh0TWFya2VyLnBsYXRmb3JtT2JqZWN0KCkgOiBuaWw7
CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJr
ZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNl
dCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHBy
ZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2Vy
JiBtYXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAK
LSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtl
ckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVy
T2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCi0gICAgICAgIHJldHVybiBu
aWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRl
ZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRh
dGEpKSk7Ci19Ci0KLS0gKFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+KW5leHRUZXh0TWFya2Vy
Rm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewot
ICAgIHJldHVybiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2lu
Z09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOwotfQogCi0tIChSZXRh
aW5QdHI8QVhUZXh0TWFya2VyUmVmPilwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZz
ZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAgcmV0dXJuIHByZXZp
b3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQpOworICAgIGF1dG8gcHJldmlvdXNNYXJrZXIg
PSBjYWNoZS0+cHJldmlvdXNUZXh0TWFya2VyKG1hcmtlcik7CisgICAgcmV0dXJuIHByZXZpb3Vz
TWFya2VyID8gcHJldmlvdXNNYXJrZXIucGxhdGZvcm1PYmplY3QoKSA6IG5pbDsKIH0KIAogLy8g
RklYTUU6IFJlbW92ZSB0aGlzIG1ldGhvZCBzaW5jZSBjbGllbnRzIHNob3VsZCBub3QgbmVlZCB0
byBjYWxsIHRoaXMgbWV0aG9kIGFuZCBzaG91bGQgbm90IGJlIGV4cG9zZWQgaW4gdGhlIHB1Ymxp
YyBpbnRlcmZhY2UuCkBAIC0zMzc0LDI0ICszMzU5LDI0IEBAIC0gKEFYVGV4dE1hcmtlclJhbmdl
UmVmKWxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpdGV4
dE1hCiAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAg
ICAgIGF1dG8gdmlzaWJsZVBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihj
YWNoZSwgdGV4dE1hcmtlcik7CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtl
cik7CiAgICAgICAgIFZpc2libGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlOwog
ICAgICAgICBzd2l0Y2ggKHRleHRVbml0KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxpbmU6
Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxpbmVS
YW5nZUZvclBvc2l0aW9uKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9z
aXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKG1hcmtlcik7
CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGVmdExpbmU6Ci0g
ICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxlZnRMaW5l
VmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2li
bGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25S
YW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6
OlJpZ2h0TGluZToKLSAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09i
amVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uKTsKKyAg
ICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+cmlnaHRMaW5l
VmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9t
VmlzaWJsZVBvc2l0aW9ucyhjYWNoZSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIHZpc2li
bGVQb3NpdGlvblJhbmdlLmVuZCk7CisgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXJSYW5nZSh2
aXNpYmxlUG9zaXRpb25SYW5nZSkucGxhdGZvcm1PYmplY3QoKTsKICAgICB9KTsKIH0KIApAQCAt
MzY4NSwyNSArMzY3MCwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQK
ICAgICAgICAgcmV0dXJuIChpZClbc2VsZiBfdGV4dE1hcmtlckZvckluZGV4OltudW1iZXIgaW50
ZWdlclZhbHVlXV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFVJ
RWxlbWVudEZvclRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6
cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXIs
IHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewot
ICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhC
YWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYWNjZXNz
aWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3QpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5pbDsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsK
KyAgICAgICAgYXV0byogb2JqZWN0ID0gbWFya2VyLm9iamVjdCgpOworICAgICAgICBpZiAoIW9i
amVjdCkKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIGlmIChheE9iamVj
dC0+aXNBdHRhY2htZW50KCkgJiYgW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXdd
KQotICAgICAgICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50
Vmlld107CisgICAgICAgIGF1dG8qIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICAg
ICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAg
cmV0dXJuIGF4T2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgICAgIH0pOworICAgICAgICBpZiAoaWQg
YXR0YWNobWVudFZpZXcgPSB3cmFwcGVyLmF0dGFjaG1lbnRWaWV3KQorICAgICAgICAgICAgcmV0
dXJuIGF0dGFjaG1lbnRWaWV3OworICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKICAg
ICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJ
RWxlbWVudCJdKSB7CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9y
ZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdWlFbGVtZW50XSAoKSAtPiBSZXRhaW5Q
dHI8aWQ+IHsKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVJhbmdl
KHVpRWxlbWVudC5nZXQoKS0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQuZ2V0KCktPmVsZW1l
bnRSYW5nZSgpKTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVJh
bmdlKHVpRWxlbWVudC0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQtPmVsZW1lbnRSYW5nZSgp
KTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zNzU0LDcgKzM3MzcsNyBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2luZ09iamVj
dCkKICAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4gKGlk
KXRleHRNYXJrZXJGb3JWaXNpYmxlUG9zaXRpb24oYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNo
ZSgpLCBiYWNraW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9pbnQp
KTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPnZp
c2libGVQb3NpdGlvbkZvclBvaW50KHdlYkNvcmVQb2ludCkpLnBsYXRmb3JtT2JqZWN0KCkuYXV0
b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAgICAgfQogCkBAIC0zODQzLDkgKzM4MjYsOCBAQCBB
TExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHx8ICFBWE9i
amVjdElzVGV4dE1hcmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDowXSkKICAgICAgICAgICAgIHx8
ICFBWE9iamVjdElzVGV4dE1hcmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkpCiAgICAgICAg
ICAgICByZXR1cm4gbmlsOwotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVB
dXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJmFycmF5XSAoKSAtPiBSZXRhaW5Q
dHI8aWQ+IHsKLSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtl
cnMoKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSwgKEFYVGV4dE1hcmtl
clJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkuZ2V0KCk7Ci0gICAgICAgIH0pOworCisgICAg
ICAgIHJldHVybiAoaWQpQVhUZXh0TWFya2VyUmFuZ2UgeyB7IChBWFRleHRNYXJrZXJSZWYpW2Fy
cmF5IG9iamVjdEF0SW5kZXg6MF0gfSwgeyAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RB
dEluZGV4OjFdIH0gfS5wbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JV
bm9yZGVyZWRUZXh0TWFya2VycyJdKSB7CkBAIC0zODg0LDggKzM4NjYsOCBAQCBBTExPV19ERVBS
RUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNo
YXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRN
YXJrZXIpOwotICAgICAgICAgICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxm
IG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0pOworICAg
ICAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJl
dHVybiBuZXh0VGV4dE1hcmtlcihjYWNoZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7
CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzg5OSw4ICszODgxLDggQEAgQUxMT1dfREVQUkVD
QVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFy
YWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFy
a2VyKTsKLSAgICAgICAgICAgIHJldHVybiBicmlkZ2VfaWRfY2FzdChbcHJvdGVjdGVkU2VsZiBw
cmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7Cisg
ICAgICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAg
cmV0dXJuIHByZXZpb3VzVGV4dE1hcmtlcihjYWNoZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9yZWxl
YXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzk4MSwyNiArMzk2MywxMyBAQCBBTExP
V19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKIAogICAgIC8vIFVzZWQgb25seSBieSBE
dW1wUmVuZGVyVHJlZSAoc28gZmFyKS4KICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJp
bmc6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIHJl
dHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJl
YWQ8aWQ+KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYp
XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3Qg
PSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICgh
YmFja2luZ09iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAg
ICBhdXRvIHJhbmdlID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2UpOwotCi0gICAgICAgICAgICByZXR1cm4gKGlk
KXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNo
ZSgpLCByYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5n
ZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRNYXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4g
KGlkKWF4VGV4dE1hcmtlclJhbmdlLnN0YXJ0KCkucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFz
ZSgpOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYRW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3Np
YmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4
dE1hcmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRh
aW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRT
ZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVj
dCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvIHJhbmdl
ID0gcmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
LCB0ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4
dE1hcmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIGZh
bHNlKTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtl
clJhbmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiAoaWQpYXhUZXh0TWFy
a2VyUmFuZ2UuZW5kKCkucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAog
I2lmIEVOQUJMRShUUkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVk
LnR4dAppbmRleCA1ZDMzZGFjYjJkM2YuLjUwNDYwMjU4ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQt
bWFya2VyLWV4cGVjdGVkLnR4dApAQCAtMSwxNyArMSwxNCBAQAotdGV4dCBoZXJlCi10ZXh0IGJs
b2NrCi10ZXh0IGhlcmUKIFRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJl
dHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4KIAotT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aChyYW5nZSkgPT09IDEwCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihzdGFydCkuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNT
OiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSkgPT09IDEwCitQQVNTOiBuZXdS
YW5nZS5pc0VxdWFsKHJhbmdlKSA9PT0gdHJ1ZQogCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIGlzIDEwCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBB
U1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0Vx
dWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFy
a2VyUmFuZ2UpIGlzIDEwCi1QQVNTIG5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJh
bmdlMSkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCi0KK3RleHQgaGVyZQordGV4dCBibG9jawordGV4dCBoZXJlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1s
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIu
aHRtbAppbmRleCBkNDkzNmFkMjJkMTguLjM0MGFiMWUxOTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5o
dG1sCkBAIC0xLDUxICsxLDQyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RU
RCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nl
c3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+
Cis8Ym9keT4KIAogdGV4dCBoZXJlCi08ZGl2IGlkPSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPnRleHQg
YmxvY2s8L2Rpdj4KKzxkaXYgaWQ9InRleHQxIj50ZXh0IGJsb2NrPC9kaXY+CiB0ZXh0IGhlcmUK
IAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQog
PHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBz
eXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBt
YXJrZXIuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Cisg
ICAgICAgIGxldCB0ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3Rl
bSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtl
ci5cblxuIjsKIAotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZv
Y3VzKCk7Ci0gICAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1
c2VkRWxlbWVudDsKKyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQxIikuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAg
ICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBub2RlLgotICAgICAgICAgIHRleHQgPSB0ZXh0LmNo
aWxkQXRJbmRleCgwKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFy
dCBtYXJrZXIgZm9yIHRoaXMgZWxlbWVudCdzIHJhbmdlLgorICAgICAgICB2YXIgcmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAgIHRlc3RPdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkiLCAiMTAiKTsKKyAg
ICAgICAgdmFyIHN0YXJ0ID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2Uo
cmFuZ2UpOwogCi0gICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBt
YXJrZXIgZm9yIHRoaXMgcmFuZ2UuCi0gICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTEgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgICAgc2hvdWxkQmUo
InRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIiwgIjEwIik7Ci0g
ICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMSk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0
YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQg
d2l0aC4KKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAg
ICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNh
bWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KLSAgICAgICAgICBzaG91bGRCZVRydWUo
InRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0Vx
dWFsKHRleHQpIik7CisgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhh
dCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50LgorICAgICAgICB2YXIgZW5kID0gdGV4dC5l
bmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgdGVzdE91dHB1
dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCku
aXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJr
ZXIgYW5kIGNoZWNrIHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KLSAgICAgICAg
ICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZTEpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAg
ICAgIC8vIE1ha2UgYSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtl
cnMgYW5kIGNoZWNrIHRoZSBsZW5ndGguCisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydCwgZW5kKTsKKyAgICAgICAgdGVzdE91dHB1dCAr
PSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSIsICIxMCIpOwog
Ci0gICAgICAgICAgLy8gTWFrZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBl
bmQgbWFya2VycyBhbmQgY2hlY2sgdGhlIGxlbmd0aAotICAgICAgICAgIHZhciBuZXdNYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFy
a2VyKTsKLSAgICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3
TWFya2VyUmFuZ2UpIiwgIjEwIik7CisgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxz
IHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKKyAgICAgICAgdGVzdE91dHB1
dCArPSBleHBlY3QoIm5ld1JhbmdlLmlzRXF1YWwocmFuZ2UpIiwgInRydWUiKTsKIAotICAgICAg
ICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBz
dGFydGVkIHdpdGgKLSAgICAgICAgICBzaG91bGRCZVRydWUoIm5ld01hcmtlclJhbmdlLmlzRXF1
YWwodGV4dE1hcmtlclJhbmdlMSkiKTsKKyAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CiAgICAg
fQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVu
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJl
ZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCAwMmM1NzY1OGE1
NmYuLjhmYzVmZDcyNDhiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWln
bm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMTMgQEAKLUZpcnN0IGxpbmUg
b2YgdGV4dAotYnV0dG9uCi1UaGlyZCBsaW5lIG9mIHRleHQKIFRoaXMgdGVzdHMgdGhlIGFiaWxp
dHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVt
ZW50LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNTOiBlbGVtZW50LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdGaXJzdCBsaW5lIG9mIHRleHQnCitQQVNTOiBl
bGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdidXR0b24nCitQQVNT
OiByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0
ZXh0JworUEFTUzogcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IEZpcnN0
IGxpbmUgb2YgdGV4dCcKIAotCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAnRmlyc3QgbGluZSBvZiB0ZXh0JwotUEFTUyBlbGVtZW50LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpIGlzICdidXR0b24nCi1QQVNTIHJlc3VsdEVs
ZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCcKLVBBU1Mg
cmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0
JwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKwor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGlj
YXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKaW5kZXggNmVh
ODE4N2MwMjI2Li45NWQ3YTQ2Y2VjZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdu
b3JlZC1lbGVtZW50Lmh0bWwKQEAgLTEsNTAgKzEsNDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxi
b2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCis8ZGl2IGlkPSJjb250YWluZXIiIHJvbGU9Imdyb3Vw
Ij4KIDxkaXYgaWQ9InRlc3QiPkZpcnN0IGxpbmUgb2YgdGV4dDxicj4KIDxidXR0b24gaWQ9ImJ1
dHRvbiIgYXJpYS1oaWRkZW49InRydWUiPmJ1dHRvbjwvYnV0dG9uPgogPGJyPlRoaXJkIGxpbmUg
b2YgdGV4dDwvZGl2PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNv
bGUiPjwvZGl2PgorPC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVz
dHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4g
aWdub3JlZCBlbGVtZW50LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJi
b2R5IikuZm9jdXMoKTsKLSAgICAgICAgdmFyIGNvbnRhaW5lckVsZW1lbnQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRw
dXQgPSAiVGhpcyB0ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxl
bWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1lbnQuXG5cbiI7CisKKyAgICAgICAgdmFyIGNvbnRh
aW5lciA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29u
dGFpbmVyIik7CiAgICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXN0IikuY2hpbGRBdEluZGV4KDApOwotICAgICAgICB2
YXIgbWFya2VyUmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVu
dCk7Ci0gICAgICAgIHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAiJ0ZpcnN0IGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAg
IC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2Vy
IGNhbGxzCi0gICAgICAgIHZhciB0ZXh0TWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1l
bnQubmV4dFRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVt
ZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB2YXIgbGluZVJhbmdlID0g
ZWxlbWVudC5saW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAg
ICAgICAgc2hvdWxkQmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5n
ZSkiLCAiJ2J1dHRvbiciKTsKLSAgICAgICAgCi0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50
LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpOwotICAgICAgICB2
YXIgc3RhcnRFbGVtZW50ID0gZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50LnRl
eHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInRmlyc3QgbGlu
ZSBvZiB0ZXh0JyIpOworCisgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVu
dCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzLgorICAgICAgICB2YXIgbWFya2VyID0gZWxl
bWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgbWFy
a2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBtYXJrZXIgPSBl
bGVtZW50Lm5leHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIHJhbmdlID0gZWxlbWVudC5s
aW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ2J1
dHRvbiciKTsKKworICAgICAgICBtYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQgPSBlbGVtZW50
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworCiAgICAgICAgIC8v
IFNlYXJjaCBmb3J3YXJkCi0gICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhB
bnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKLSAg
ICAgICAgCisgICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZv
clNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXki
LCAiIiwgZmFsc2UpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0
cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7CisKICAgICAgICAg
Ly8gU2VhcmNoIGJhY2t3YXJkCi0gICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhB
bnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVs
ZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKyAg
ICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNh
dGUoc3RhcnRFbGVtZW50LCBmYWxzZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAi
J0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGFpbmVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAg
ICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KLSAgICAgICAgCiA8L3NjcmlwdD4KLQotPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5
PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJh
bmdlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJr
ZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBjZGNjNzdjM2M4NzEuLjZhN2Qy
Zjc4YTNlNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1h
cmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAt
MSwyODEgKzEsMjA3IEBACi1UaGluayBkaWZmZXJlbnQgQXBwbGUKLQotYm9sZCBpdGFsaWMKLXVu
ZGVybGluZSBsYXN0IQotCi1IZWxsbyBXb3JsZCEKLVRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJS
YW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUg
YSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIu
Ci0KK1RoaXMgdGVzdHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJs
eS4KIAogY29udGVudCBsZW5ndGg6IDY1CiBBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNo
IGNoYXJhY3RlciBpbiB0aGUgdGV4dDoKLTAKLScnCi0xCi0nVCcKLTIKLSdUaCcKLTMKLSdUaGkn
Ci00Ci0nVGhpbicKLTUKLSdUaGluaycKLTYKLSdUaGluayAnCi03Ci0nVGhpbmsgZCcKLTgKLSdU
aGluayBkaScKLTkKLSdUaGluayBkaWYnCi0xMAotJ1RoaW5rIGRpZmYnCi0xMQotJ1RoaW5rIGRp
ZmZlJwotMTIKLSdUaGluayBkaWZmZXInCi0xMwotJ1RoaW5rIGRpZmZlcmUnCi0xNAotJ1RoaW5r
IGRpZmZlcmVuJwotMTUKLSdUaGluayBkaWZmZXJlbnQnCi0xNgotJ1RoaW5rIGRpZmZlcmVudCAn
Ci0xNwotJ1RoaW5rIGRpZmZlcmVudCBBJwotMTgKLSdUaGluayBkaWZmZXJlbnQgQXAnCi0xOQot
J1RoaW5rIGRpZmZlcmVudCBBcHAnCi0yMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsJwotMjEKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUnCi0yMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKLTIzCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiswICcnCisxICdUJworMiAnVGgnCiszICdUaGknCis0ICdU
aGluJworNSAnVGhpbmsnCis2ICdUaGluayAnCis3ICdUaGluayBkJworOCAnVGhpbmsgZGknCis5
ICdUaGluayBkaWYnCisxMCAnVGhpbmsgZGlmZicKKzExICdUaGluayBkaWZmZScKKzEyICdUaGlu
ayBkaWZmZXInCisxMyAnVGhpbmsgZGlmZmVyZScKKzE0ICdUaGluayBkaWZmZXJlbicKKzE1ICdU
aGluayBkaWZmZXJlbnQnCisxNiAnVGhpbmsgZGlmZmVyZW50ICcKKzE3ICdUaGluayBkaWZmZXJl
bnQgQScKKzE4ICdUaGluayBkaWZmZXJlbnQgQXAnCisxOSAnVGhpbmsgZGlmZmVyZW50IEFwcCcK
KzIwICdUaGluayBkaWZmZXJlbnQgQXBwbCcKKzIxICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisy
MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlJworMjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiAn
Ci0yNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBiJwotMjUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI1ICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYm8nCi0yNgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjYgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2wnCi0yNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjcgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkJwotMjgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI4ICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCAnCi0yOQotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMjkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGknCi0zMAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorMzAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0JwotMzEKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzMxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGEnCi0zMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzIgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWwnCi0zMwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzMgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpJwotMzQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzM0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMnCi0zNQotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorMzUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
JwotMzYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHUnCi0zNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzcgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW4nCi0zOAotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorMzggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kJwot
MzkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGUnCi00MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDAgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXInCi00MQotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNDEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsJwotNDIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQyICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGknCi00MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NDMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW4nCi00NAot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaW5lJwotNDUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ1ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSAnCi00NgotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorNDYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW5kZXJsaW5lIGwnCi00NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDcgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhJwotNDgKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzQ4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGVybGluZSBsYXMnCi00OQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDkgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QnCi01MAotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorNTAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxp
YwogdW5kZXJsaW5lIGxhc3QhJwotNTEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUxICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUyCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8JwotNTMKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzUzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBs
YXN0IQogCiDvv7xIJwotNTQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU0ICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZScKLTU1
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsJwotNTYKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzU2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVy
bGluZSBsYXN0IQogCiDvv7xIZWxsJwotNTcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU3ICdU
aGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDv
v7xIZWxsbycKLTU4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1OCAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gJwotNTkK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXJwotNjAKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzYwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXbycKLTYxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
Cis2MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFz
dCEKIAog77+8SGVsbG8gV29yJwotNjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYyICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
ZWxsbyBXb3JsJwotNjMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYzICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3Js
ZCcKLTY0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKQEAgLTI5MSw3ICsyMTcsMTEgQEAgdW5k
ZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxkIScKICcnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5
UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisKKworCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1s
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFu
Z2UuaHRtbAppbmRleCBjZTFjYmYyZWVmZTMuLmMzMDQ5ODY3YjA1MCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRt
bAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZv
ci1yYW5nZS5odG1sCkBAIC0xLDkgKzEsOSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4K
Kzxib2R5PgogCiA8ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CiAgICAgPHA+VGhpbmsg
PGVtPmRpZmZlcmVudDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgpAQCAt
MTEsMzYgKzExLDM0IEBACiAgICAgPGJ1dHRvbj5IZWxsbyBXb3JsZCE8L2J1dHRvbj4KIDwvZGl2
PgogCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgot
CiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgYXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7Ci0gICAgICAgIGNvbnRlbnRU
ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChheEVs
ZW1lbnQpOwotICAgICAgICB0ZXh0TGVuZ3RoID0gYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShjb250ZW50VGV4dE1hcmtlclJhbmdlKS5sZW5ndGg7Ci0gICAgICAgIGRlYnVnKCJj
b250ZW50IGxlbmd0aDogIiArIHRleHRMZW5ndGgpOworICAgICAgICBsZXQgb3V0cHV0ID0gIlRo
aXMgdGVzdHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS5cblxu
IjsKIAotICAgICAgICBkZWJ1ZygiQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFy
YWN0ZXIgaW4gdGhlIHRleHQ6Iik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3Ro
OyArK2kpIHsKLSAgICAgICAgICAgIGRlYnVnKGkpOwotICAgICAgICAgICAgdGV4dE1hcmtlclJh
bmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIGkpOwotICAgICAgICAg
ICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgbGV0IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgbGV0IHJh
bmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGNvbnRlbnQpOworICAgICAg
ICBsZXQgY29udGVudExlbmd0aCA9IGNvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJh
bmdlKS5sZW5ndGg7CisgICAgICAgIG91dHB1dCArPSBgY29udGVudCBsZW5ndGg6ICR7Y29udGVu
dExlbmd0aH1cbmA7CisKKyAgICAgICAgb3V0cHV0ICs9ICJBbGwgcmFuZ2VzIGZyb20gaW5kZXgg
MCB0byBlYWNoIGNoYXJhY3RlciBpbiB0aGUgdGV4dDpcbiI7CisgICAgICAgIGZvciAoaSA9IDA7
IGkgPCBjb250ZW50TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHJhbmdlID0gY29udGVudC50
ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgJHtp
fSAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKICAgICAg
ICAgfQogCi0gICAgICAgIGRlYnVnKCJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToi
KTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZv
clJhbmdlKDE2LCA1KTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgb3V0cHV0ICs9
ICJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZTpcbiI7CisgICAgICAgIHJhbmdlID0g
Y29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7CisgICAgICAgIG91dHB1dCAr
PSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisKKyAg
ICAgICAgb3V0cHV0ICs9ICJPdXQgb2YgcmFuZ2UgdmFsdWVzOlxuIjsKKyAgICAgICAgcmFuZ2Ug
PSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7CisgICAgICAgIG91dHB1
dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7Cisg
ICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsK
KyAgICAgICAgb3V0cHV0ICs9IGAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShy
YW5nZSl9J1xuYDsKIAotICAgICAgICBkZWJ1ZygiT3V0IG9mIHJhbmdlIHZhbHVlczoiKTsKLSAg
ICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdl
KDAsIDEwMCk7Ci0gICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKLSAgICAgICAg
ZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UpICsgIiciKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQi
KS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAg
ICAgfQogPC9zY3JpcHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3Np
dGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAppbmRleCA5MTVkNTY5YzBlZDAu
LmQ4NGI4YjIwMTc0MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10
ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CkBAIC0xLDEwICsxLDcgQEAKLVRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBh
c2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNh
biBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy4KIAotT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExF
VEUiLgorUEFTUzogY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChlbGVtZW50KSA9PT0g
dHJ1ZQogCi0KLVBBU1MgY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVu
dCkgaXMgdHJ1ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBM
RVRFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBv
c2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCmluZGV4IGM3
MjU3ZDU4NWQxYS4uNjJlYjRlMzUyMmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZv
ci10ZXh0LW5vZGUuaHRtbApAQCAtMSw0MCArMSwzMSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJv
ZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKLTxkaXYgaWQ9ImNvbnRlbnQiIHRhYmluZGV4PSIwIiBz
dHlsZT0id2lkdGg6MjAwcHg7Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBw
eDsiPgogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIAogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIDwvZGl2Pgog
Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8
c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNo
IGluIGFza2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQg
aXQgY2FuIGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLiIpOwotCiAgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMg
cHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3Ig
cG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmpl
Y3RzLlxuXG4iOwogCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQi
KS5mb2N1cygpOwotICAgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuZm9jdXNlZEVsZW1lbnQ7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0
IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCi0gICAgICAgICAgdmFyIG1hcmtlckF0
UG9pbnQgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50Lndp
ZHRoLzIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVpZ2h0LzIpOwotICAgICAgICAgIHZhciB0ZXh0
RWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtl
ckF0UG9pbnQpOworICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICAvLyBHZXQgdGhlIHRl
eHQgbWFya2VyIGF0IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHZh
ciBtYXJrZXIgPSBjb250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50
LndpZHRoIC8gMiwgY29udGVudC55ICsgY29udGVudC5oZWlnaHQgLyAyKTsKKyAgICAgICAgLy8g
VmVyaWZ5IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgorICAg
ICAgICB2YXIgZWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImNvbnRlbnQuY2hpbGRBdElu
ZGV4KDApLmlzRXF1YWwoZWxlbWVudCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gVmVyaWZ5
IHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgotICAgICAgICAg
IHZhciB0ZXh0RWxlbWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKG1hcmtlckF0UG9pbnQpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29udGVudC5jaGls
ZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkiKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAg
ICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1s
PgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4
dAppbmRleCAwNDA0Mzg0OWRlMTYuLmVhNGI4NzdkNDkzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4
cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3Rl
eHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10
ZXh0Ci0KLXRleHQxCi1jICBkCi0KLWNhbid0IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0K
LWEgYgotCi1hdWRpb2ZpbGUKLQogVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1h
cmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2Vzcywg
eW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRF
U1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1h
cmtlclJhbmdlKSBpcyA0Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRy
dWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5l
d2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICd0JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
bmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
aXMgJ3QnCi1QQVNTIHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Uy
KSBpcyA1CitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2Up
ID09PSA0CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xp
bmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
J3QnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
IG5ld2xpbmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ3QnCitQQVNTOiB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJh
bmdlMikgPT09IDUKIE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1Q
QVNTIHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1Q
QVNTIHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1Q
QVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcK
LVBBU1MgdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2Vs
JwotUEFTUyAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMg
dHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVu
dE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0
SW5kZXgoMikpIGlzIHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIGlzICdmJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgaXMgJ2EnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4
dE1hcmtlclJhbmdlKSBpcyA0Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgaXMgJ/CfmI8nCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkgaXMgJ/CfmIMnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdo
aXRlc3BhY2VNYXJrZXJSYW5nZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIGlzICcgJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IGlzICdiJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcg
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRp
b++/vGZpbGUnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAn77+8JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgaXMgJ++/vCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkgPT09ICdkJworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSA9PT0gJzEnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpID09PSAnZWN0JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSA9PT0gJ3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKHN0YXJ0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVl
CitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1h
cmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6
IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5n
ZSkgPT09IDMKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09
ICdhJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAn
CitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xm
aWxlJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSAn77+8JworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
ID09PSAn77+8JworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKIAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAppbmRl
eCA1ZWQzYmQwZDA2ZGUuLjM4ZjEzZWQ3YTNlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0Lmh0bWwKQEAgLTEsMTUgKzEsMTcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAi
LS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxtZXRhIGNoYXJzZXQ9
IlVURi0xNiI+CiA8L2hlYWQ+CiA8c3R5bGU+CiAudXNlcnNlbGVjdCB7IHVzZXItc2VsZWN0OiBu
b25lOyAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOyB9CiA8L3N0eWxlPgotPGJvZHkgaWQ9ImJv
ZHkiPgorPGJvZHk+CiAKLTxkaXYgaWQ9InRleHQiIHRhYmluZGV4PSIwIj50ZXh0PC9kaXY+Cis8
ZGl2IGlkPSJjb250ZW50Ij4KKzxkaXYgaWQ9InRleHQiPnRleHQ8L2Rpdj4KIDxicj4KIHRleHQx
CiAKQEAgLTMyLDI5ICszNCw0NSBAQCBmCiA8cCBpZD0idGV4dDYiPmEgICAgIGI8L3A+CiAKIDxw
IGlkPSJ0ZXh0NyI+YXVkaW88YXVkaW8gY29udHJvbHM+PC9hdWRpbz5maWxlPC9wPgotCi08cCBp
ZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAK
IDxzY3JpcHQ+CisgICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIsIG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBp
KyspIHsKKyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKKyAgICAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7
CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2
aW91c01hcmtlciwKKyAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAg
fTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2Vy
LCBjdXJyZW50TWFya2VyLCBvYmopIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3Vu
dDsgaSsrKSB7CisgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRN
YXJrZXIocHJldmlvdXNNYXJrZXIpOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5w
cmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIHsKKyAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKKyAgICAgICAgICAg
IGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAgICB9CiAKLSAgICBkZXNjcmlw
dGlvbigiVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vz
c2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICB2YXIgdGV4dCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOwotICAgICAg
ICAvLyBHZXQgdGhlIGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgIHRleHQgPSB0ZXh0LmNoaWxk
QXRJbmRleCgwKTsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0
aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNv
cnJlY3RseS5cblxuIjsKKworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAg
ICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0L2VuZCBtYXJrZXIgZm9yIHRo
aXMgcmFuZ2UuCiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKLSAgICAgICAgCisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5n
ZSkiLCAiNCIpOworCiAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIHZhciBlbmRN
YXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOwotICAgICAgICBzaG91bGRC
ZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlciku
aXNFcXVhbCh0ZXh0KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwo
dGV4dCkiLCAidHJ1ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiLCAidHJ1
ZSIpOworCiAgICAgICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hh
cmFjdGVycywgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAgICB2YXIgY3VycmVudE1hcmtl
ciwgcHJldmlvdXNNYXJrZXIsIG1hcmtlclJhbmdlOzsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZv
cndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKQEAgLTYyLDU4ICs4
MCw1NyBAQCBmCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAg
ICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB2YXIgbmV3bGluZSA9ICdcbic7Ci0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAibmV3bGluZSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKKwogICAg
ICAgICAvLyBBZHZhbmNlIG9uZSBtb3JlIGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZGUgYXQgInQi
IGluICJ0ZXh0MSIuCiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5w
cmV2aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01h
cmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7Ci0gICAgICAgIAorICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ3QnIik7CisKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBtYXJrZXIuIChU
cmF2ZXJzZSBiYWNrd2FyZHMgb25lIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQog
ICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5l
d2xpbmUiKTsKKwogICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIG1vcmUgY2hhcmFj
dGVyLCBpdCB3aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0Ii4KICAgICAg
ICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0
ZXh0KTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIpOwogICAgICAgICBpZiAoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1OYW1lID09
ICJtYWMiKQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSIsICIndCcgKyBuZXdsaW5lIik7CisgICAgICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAi
J3QnICsgbmV3bGluZSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworICAgICAg
ICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIiwgIid0JyIpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcmVw
bGFjZWQgbm9kZQogICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQyIik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFu
Z2UyID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0Mik7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikiLCAi
NSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5n
dGgodGV4dE1hcmtlclJhbmdlMikiLCAiNSIpOwogICAgICAgICB2YXIgc3RyID0gdGV4dDIuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpLnJlcGxhY2UoU3RyaW5nLmZy
b21DaGFyQ29kZSg2NTUzMiksICJbQVRUQUNITUVOVF0iKTsKLSAgICAgICAgZGVidWcoIk9iamVj
dCBzdHJpbmcgZm9yIHJhbmdlOiAiICsgc3RyKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCAr
PSBgT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6ICR7c3RyfVxuYDsKKwogICAgICAgICBjdXJyZW50
TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJr
ZXJSYW5nZTIpOwogICAgICAgICAvLyBBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5k
IGF0ICJkIi4KICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgY3Vy
cmVudE1hcmtlciwgdGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2
aW91czsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBt
YXJrZXJSYW5nZSA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJr
ZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZCciKTsKLSAgICAgICAgCisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ2QnIik7CisKICAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIDYgY2hhcmFjdGVy
cywgaXQgd2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dDEiLgogICAgICAg
ICByZXN1bHQgPSBiYWNrd2FyZHMoNiwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRl
eHQyKTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAg
IGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0
ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkiLCAiJzEnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOwor
CiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggdXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRl
eHRNYXJrZXIvcHJldmlvdXNUZXh0TWFya2VyIHNob3VsZCBzdGlsbCB3b3JrLgotICAgICAgICB2
YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRleHQzIik7Ci0gICAgICAgIHRleHQzID0gdGV4dDMuY2hpbGRBdEluZGV4KDApOwotICAgICAg
ICAKKyAgICAgICAgdmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAvLyBBZHZh
bmNlIHRvIGxhbmQgYXQgdXNlci1zZWxlY3Q6bm9uZSBub2RlLgogICAgICAgICB2YXIgbWFya2Vy
MSwgbWFya2VyMjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxODsgaSsrKSB7CkBAIC0x
MjUsMzQgKzE0MiwzMSBAQCBmCiAgICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRN
YXJrZXI7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhtYXJrZXIxLCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICInZWN0JyIpOwogICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aGUgc2Vjb25kIG1hcmtl
ciBmb3IgNiBjaGFyYWN0ZXJzLCB0aGUgcmFuZ2Ugc2hvdWxkIGJlICJzZWwiCi0gICAgICAgIGZv
ciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
NjsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQzLnByZXZpb3VzVGV4dE1h
cmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVu
dE1hcmtlcjsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKG1hcmtlcjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIidzZWwnIik7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCBwYXNzd29yZCBm
aWVsZC4KICAgICAgICAgdmFyIHBzdyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgicHN3Iik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UzID0gcHN3
LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQocHN3KTsKICAgICAgICAgdmFyIHN0YXJ0ID0gcHN3
LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UzKTsKLSAg
ICAgICAgc2hvdWxkQmVUcnVlKCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtl
cihzdGFydCkiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoIiFwc3cuYWNj
ZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIsICJ0cnVlIik7CisKICAgICAg
ICAgLy8gQ2hlY2sgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBjYWxsIHdpbGwgc2tpcCBwYXNz
d29yZCBmaWVsZAogICAgICAgICAvLyBXZSBzdGFydCBmcm9tIHRleHQyIGFuZCBhZHZhbmNlIDYg
Y2hhcmFjdGVycywgaXQgc2hvdWxkIHNraXAgdGhlIHBhc3N3b3JkIGZpZWxkIGFuZCBsYW5kIG9u
IHRleHQzLgogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwotICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IDY7IGkrKykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAg
ICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKTsKLSAgICAgICAgfQotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiLCAidHJ1ZSIpOwogICAgICAg
ICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlciwgaXQgc2hvdWxkIGxhbmQgb24gIiBkIiBu
b2RlLgogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vz
c2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQy
LmNoaWxkQXRJbmRleCgyKSkiKTsKLSAgICAgICAgCi0gICAgICAgIAorICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVu
dE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIiwgInRydWUiKTsKKwogICAg
ICAgICAvLyBNYWtlIHN1cmUgdGhhdCB0ZXh0IG5vZGUgd2l0aCBsaW5lIGJyZWFrcywgd2UgY2Fu
IGdvIHRocm91Z2ggaXQgd2l0aCBuZXh0L3ByZXZpb3VzIGNhbGwuCiAgICAgICAgIHRleHQgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ0Iik7CiAg
ICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0
ZXh0KTsKQEAgLTE2Myw4NyArMTc3LDY0IEBAIGYKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIg
PSB0ZXh0Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAg
IG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFy
a2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidmJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIidmJyIpOworCiAgICAgICAgIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBjdXJyZW50TWFya2VyID0g
ZW5kTWFya2VyOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykgeworICAgICAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIg
PSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQogICAg
ICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1h
cmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInYSciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBlbW9qaS4KICAgICAgICAg
dGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4
dDUiKTsKICAgICAgICAgdmFyIGVtb2ppVGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFu
Z2UpIiwgIjQiKTsKICAgICAgICAgLy8gTWFrZSBzdXJlIG5hdmlnYXRpbmcgbmV4dC9wcmV2aW91
cyB0ZXh0IG1hcmtlciBpcyBieSBlbW9qaS4KICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0
YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShlbW9qaVRleHRNYXJrZXJSYW5nZSk7CiAg
ICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMiwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkiLCAiJ/CfmI8nIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmI8nIik7CiAgICAgICAgIHJlc3VsdCA9
IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAi
J/CfmIMnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOworCiAgICAgICAgIC8vIFRl
c3QgY2FzZSB3aXRoIGNvbGxhcHNlZCB3aGl0ZXNwYWNlLgogICAgICAgICB0ZXh0ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NiIpOwogICAgICAg
ICB2YXIgY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFu
Z2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdo
aXRlc3BhY2VNYXJrZXJSYW5nZSkiLCAiMyIpOwogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQu
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSk7CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIHN0
YXJ0TWFya2VyLCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vy
cyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CiAgICAgICAgIHJl
c3VsdCA9IGZvcndhcmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7
Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIicgJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEs
IHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRC
ZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYiciKTsKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICInYiciKTsKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKICAg
ICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSIsICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CisKICAgICAg
ICAgLy8gVGVzdCBjYXNlIHdpdGggcmVwbGFjZWQgZWxlbWVudHMgKHNob3VsZCB1c2Ugb2JqZWN0
IHJlcGxhY2VtZW50IGNoYXJhY3RlcikuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ3Iik7CiAgICAgICAgIHRleHRNYXJr
ZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAg
c2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSki
LCAiJ2F1ZGlvXHVGRkZDZmlsZSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNm
aWxlJyIpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCA2OyBpKyspIHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtl
cjsKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAg
ICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IidcdUZGRkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogICAgICAgICBjdXJyZW50
TWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAg
ICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFy
a2VyID0gdGV4dC5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0K
ICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJl
dmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidcdUZGRkMnIik7CiAKLSAgICAgICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJl
dmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIg
PSBjdXJyZW50TWFya2VyOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoubmV4
dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBy
ZXR1cm4gewotICAgICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKLSAgICAg
ICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAgICAgICAgICB9OwotICAgICAg
ICB9Ci0gICAgICAgIAotICAgICAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3Vz
TWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2Jq
LnByZXZpb3VzVGV4dE1hcmtlcihwcmV2aW91c01hcmtlcik7Ci0gICAgICAgICAgICAgICAgY3Vy
cmVudE1hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAg
ICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHByZXZpb3Vz
OiBwcmV2aW91c01hcmtlciwKLSAgICAgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2Vy
Ci0gICAgICAgICAgICB9OwotICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJjb250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1
ZyhvdXRwdXQpOwogICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2Vy
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMt
bmV4dC1leHBlY3RlZC50eHQKaW5kZXggMjkyNjQxYTdlMDM4Li41YTBhMzJjMjhkNzAgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2Vy
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZp
b3VzLW5leHQtZXhwZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10ZXh0Ci0KLXRleHQxCi1j
ICBkCi0KLWNhbid0IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0KLWEgYgotCi1hdWRpb2Zp
bGUKLQogVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMg
YXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEg
c2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgot
Ci0KLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBpcyA0
Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2Vy
KS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnICsgbmV3bGlu
ZQotUEFTUyB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgaXMg
NQorUEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSA9PT0g
NAorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJr
ZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0Jwor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXds
aW5lCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
ICd0JyArIG5ld2xpbmUKK1BBU1M6IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFy
a2VyUmFuZ2UyKSA9PT0gNQogT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6IGMgW0FUVEFDSE1FTlRd
IGQKLVBBU1MgdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn
ZCcKLVBBU1MgdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn
MScKLVBBU1MgdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn
ZWN0JwotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICdzZWwnCi1QQVNTICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0
KSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihj
dXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNo
aWxkQXRJbmRleCgyKSkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgaXMgJ2YnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAnYScKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1v
amlUZXh0TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSBpcyAn8J+YjycKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQpKSBpcyAn8J+YgycKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFw
c2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSBpcyAzCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkgaXMgJyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgaXMgJ2InCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkg
aXMgJyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2En
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgaXMg
J2F1ZGlv77+8ZmlsZScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIGlzICfvv7wnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSBpcyAn77+8JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSA9PT0gJ2QnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpID09PSAnMScKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgPT09ICdlY3QnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpID09PSAnc2VsJworUEFTUzogIXBzdy5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoc3RhcnQpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgPT09
IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkgPT09IHRydWUKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2YnCitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdhJworUEFT
UzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpID09PSA0
CitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YjycK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iDJwor
UEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtl
clJhbmdlKSA9PT0gMworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09
PSAnICcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdi
JworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgPT09ICdhdWRp
b++/vGZpbGUnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09ICfvv7wnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkgPT09ICfvv7wnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVT
VCBDT01QTEVURQogCisKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464538</attachid>
            <date>2023-01-18 09:23:37 -0800</date>
            <delta_ts>2023-01-18 13:53:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230118122336.patch</filename>
            <type>text/plain</type>
            <size>106211</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSBlYWVjNDdlYTBhYzdmOWY5ZmRmNTNiMjhlMjU5OGUyNTQ5YzMzNTM3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3dzIGZvciB0aGUgcmV0cmlldmFsIG9mIHRoZSBUZXh0TWFy
a2VyIHByb3BlcnRpZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3VyY2UgdG8gdGhlIHVuZGVybHlp
bmcgRE9NIGFuZCBSZW5kZXJUcmVlIG9iamVjdHMuCgpUaGUgZm9sbG93aW5nIE1hYyBBWCBBUEkg
YXR0cmlidXRlcyBhcmUgbm93IGltcGxlbWVudGVkIHdpdGhvdXQgaGl0dGluZyB0aGUgbWFpbiB0
aHJlYWQgdXNpbmcgQVhUZXh0TWFya2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZToKQVhVSUVsZW1l
bnRGb3JUZXh0TWFya2VyCkFYVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcnMKQVhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UKQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYW4gdXBkYXRlIG9mIHNldmVyYWwgbGF5b3V0
IHRlc3RzIHJlbGF0ZWQgdG8gVGV4dE1hcmtlcnMuCi0tLQogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgICB8IDE4OCArKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMjggKy0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxNjUgKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDE3MiArKysrKysr
KysrKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oICAgIHwg
ICA3ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAgfCAg
ODMgKysrKysrKwogLi4uL2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSAg
IHwgIDQwICsrLS0KIC4uLi9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tICAg
ICB8ICAxMiArLQogLi4uL21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSAg
IHwgMTAxICsrKy0tLS0tLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3Rl
ZC50eHQgIHwgIDE5ICstCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwgICAg
ICAgICAgfCAgNTEgKystLS0KIC4uLnJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVj
dGVkLnR4dCB8ICAxNSArLQogLi4uc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVu
dC5odG1sIHwgIDYzICsrKy0tLQogLi4uL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVj
dGVkLnR4dCAgIHwgMjEwICsrKysrKy0tLS0tLS0tLS0tLQogLi4uL21hYy90ZXh0bWFya2VyLXJh
bmdlLWZvci1yYW5nZS5odG1sICAgICAgIHwgIDQ4ICsrLS0KIC4uLi1wb3NpdGlvbi1jcmFzaC1m
b3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dCB8ICAgNSArLQogLi4uL3Zpc2libGUtcG9zaXRpb24t
Y3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sIHwgIDM1ICsrLQogLi4uL3RleHQtbWFya2VyLXByZXZp
b3VzLW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrKy0tLS0KIC4uLi90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0Lmh0bWwgICAgICAgICAgICB8IDE3NSArKysrKysrLS0tLS0tLS0KIC4uLi90
ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCAgICB8ICA3OCArKystLS0tCiAy
MyBmaWxlcyBjaGFuZ2VkLCA4OTQgaW5zZXJ0aW9ucygrKSwgNjk3IGRlbGV0aW9ucygtKQogY3Jl
YXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2Vy
LmNwcAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhU
ZXh0TWFya2VyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAppbmRleCBmMzM3MzZj
ODUyOWUuLjU1NTUzZDAxMjY0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50
eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKQEAgLTQ1NSw2ICs0NTUsNyBAQCBN
b2R1bGVzL3dlYnhyL1hSU2Vzc2lvbkV2ZW50LmNwcAogYWNjZXNzaWJpbGl0eS9BWEltYWdlLmNw
cAogYWNjZXNzaWJpbGl0eS9BWExvZ2dlci5jcHAKIGFjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5jcHAKK2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5QVJJQUdyaWQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3Jp
ZENlbGwuY3BwCiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5jcHAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGI2MzQ5OWI1NjEwOS4uMjA4MWUwZDE4MGNiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTEyNiw2ICsxMjYsNyBAQCBNb2R1bGVzL3NwZWVjaC9j
b2NvYS9XZWJTcGVlY2hSZWNvZ25pemVyVGFzay5tbQogTW9kdWxlcy9zcGVlY2gvY29jb2EvV2Vi
U3BlZWNoUmVjb2duaXplclRhc2tNb2NrLm1tCiBNb2R1bGVzL3N5c3RlbS1wcmV2aWV3L0FSS2l0
QmFkZ2VTeXN0ZW1JbWFnZS5tbQogTW9kdWxlcy93ZWJkYXRhYmFzZS9jb2NvYS9EYXRhYmFzZU1h
bmFnZXJDb2NvYS5tbQorYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQog
YWNjZXNzaWJpbGl0eS9pb3MvQVhPYmplY3RDYWNoZUlPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3Mv
QWNjZXNzaWJpbGl0eU9iamVjdElPUy5tbQogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAwNjU5ZGEyMjExMTcuLmIxNTAzOGQyODg3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDU3MSw2ICs0NTcxLDcgQEAKIAkJQzBDMDU0Q0IxMTE4QzhFNDAwQ0UyNjM2IC8qIENv
ZGVHZW5lcmF0b3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5M0Y4QjMwNTBBMzAwRkUxMDBGNjFBQjggLyogQ29kZUdlbmVyYXRvci5wbSAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEMwNTRDQzExMThD
OEU0MDBDRTI2MzYgLyogZ2VuZXJhdGUtYmluZGluZ3MucGwgaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5M0Y4QjMwNzBBMzAwRkVBMDBGNjFBQjggLyogZ2Vu
ZXJhdGUtYmluZGluZ3MucGwgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJQzBDMDU0Q0QxMTE4QzhFNDAwQ0UyNjM2IC8qIElETFBhcnNlci5wbSBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDE0ODEzQkYzMDlFREY4
OEUwMEY3NTdFMSAvKiBJRExQYXJzZXIucG0gKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKKwkJQzBFMjA4QTIyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1h
cmtlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBF
MjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovOyB9OwogCQlDMEUyRjMy
NzI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgaW4gRnJhbWV3b3JrcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEUyRjMyNTI0MTJCRjI5MDA5Qzcz
RUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
V2VhaywgKTsgfTsgfTsKIAkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3Jl
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMEU4QURD
NDI5NEI1QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlDMEYyQTQ0MTEzODY5QUFCMDA2NkM1MzQgLyog
cHJlcHJvY2Vzc29yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTY1MzIsNiArMTY1
MzMsOSBAQAogCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhMb2dnZXIuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzA3ODM3NjAyM0RGMjUzRTAwQzlDNUM4IC8qIEFYSXNvbGF0ZWRPYmplY3RN
YWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBBWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBwYXRo
ID0gbWFjL0FYSXNvbGF0ZWRPYmplY3RNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCUMwOEYxM0ExMjQ0NzY2REMwMEFCOTg5RiAvKiBBWExvZ2dlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBBWExvZ2dlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIw
OEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gQVhUZXh0TWFya2VyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCUMwRTIwOEExMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVhUZXh0TWFya2VyLmNwcDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQzIC8qIEFYVGV4dE1h
cmtlckNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQVhU
ZXh0TWFya2VyQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMwRTJGMzI1
MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLnRleHQtYmFzZWQt
ZHlsaWItZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJBY2Nlc3NpYmlsaXR5LnRiZDsgcGF0aCA9IHVz
ci9saWIvbGliQWNjZXNzaWJpbGl0eS50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQlD
MEU4QURDNDI5NEI1QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVhUcmVlU3RvcmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzBGMkE0M0YxMzg2OUEyODAwNjZDNTM0IC8qIHByZXByb2Nlc3Nvci5wbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2NyaXB0LnBl
cmw7IG5hbWUgPSBwcmVwcm9jZXNzb3IucG07IHBhdGggPSBzY3JpcHRzL3ByZXByb2Nlc3Nvci5w
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxNDk4LDYgKzIxNTAyLDcgQEAKIAkJ
MjlBODEyMDQwRkJCOUI0MTAwNTEwMjkzIC8qIGFjY2Vzc2liaWxpdHkgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJE
MyAvKiBjb2NvYSAqLywKIAkJCQlBQUE3MjhFRjE2RDFEOEJDMDBEM0JCQzYgLyogaW9zICovLAog
CQkJCTI5QUUyMTI5MjFBQjlFQ0IwMDg2OTI4MyAvKiBpc29sYXRlZHRyZWUgKi8sCiAJCQkJMjlB
ODEyMDUwRkJCOUI1MjAwNTEwMjkzIC8qIG1hYyAqLywKQEAgLTIxNTc0LDYgKzIxNTc5LDggQEAK
IAkJCQlDMDQ5M0VCNzI0NDY5OUU0MDA5QUFDODAgLyogQVhMb2dnZXIuaCAqLywKIAkJCQkyOTgx
Q0FBRjEzMTgyMkVDMDBEMTJGMkEgLyogQVhPYmplY3RDYWNoZS5jcHAgKi8sCiAJCQkJMjlBODEy
MUEwRkJCOUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCAqLywKKwkJCQlDMEUyMDhBMTI5
Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLywKKwkJCQlDMEUyMDhBMDI5Mzc5
QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8sCiAJCQkJOTFDOUYyRjgxQUUzQkUyNDAw
OTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggKi8sCiAJCQkJQzBFOEFEQzQyOTRC
NUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi8sCiAJCQkJQkM0QTUzMzAyNTYwNTkwMzAw
MjhDNTkyIC8qIEZvcmNlZEFjY2Vzc2liaWxpdHlWYWx1ZS5oICovLApAQCAtMzE2NDIsNiArMzE2
NDksMTQgQEAKIAkJCW5hbWUgPSBtYWM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwogCQl9
OworCQlDMEUyMDhCNzI5MzkzRTFBMDBDMEQyRDMgLyogY29jb2EgKi8gPSB7CisJCQlpc2EgPSBQ
QlhHcm91cDsKKwkJCWNoaWxkcmVuID0gKAorCQkJCUMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAv
KiBBWFRleHRNYXJrZXJDb2NvYS5tbSAqLywKKwkJCSk7CisJCQlwYXRoID0gY29jb2E7CisJCQlz
b3VyY2VUcmVlID0gIjxncm91cD4iOworCQl9OwogCQlDRDBEQkIzRTE0MjI3NEU2MDAyODAyNjMg
LyogYXVkaW8gKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKApAQCAt
MzUyMTcsNiArMzUyMzIsNyBAQAogCQkJCTI5QUUyMTM1MjFBQkE0OEEwMDg2OTI4MyAvKiBBWElz
b2xhdGVkT2JqZWN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUFFMjEyRDIxQUI5RUVCMDA4Njky
ODMgLyogQVhJc29sYXRlZFRyZWUuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QTgxMjM4MEZCQjlD
MUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggaW4gSGVhZGVycyAqLywKKwkJCQlDMEUyMDhB
MjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQk5
MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQ3N0U3NzcwQkY0MTM0QTAwMTUyODcyIC8qIEJhY2tGb3J3
YXJkQ2FjaGUuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhPYmplY3RDYWNoZS5jcHAKaW5kZXggZWVkNDg4MWY1ZmEwLi4wOTlmM2MyZDAwNDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcApAQCAt
MzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkFYSXNvbGF0ZWRPYmplY3QuaCIKICNpbmNsdWRlICJB
WElzb2xhdGVkVHJlZS5oIgogI2luY2x1ZGUgIkFYTG9nZ2VyLmgiCisjaW5jbHVkZSAiQVhUZXh0
TWFya2VyLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkLmgiCiAjaW5jbHVkZSAi
QWNjZXNzaWJpbGl0eUFSSUFHcmlkQ2VsbC5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklB
R3JpZFJvdy5oIgpAQCAtMjIxMyw3ICsyMjE0LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpzdG9w
Q2FjaGluZ0NvbXB1dGVkT2JqZWN0QXR0cmlidXRlcygpCiAgICAgbV9jb21wdXRlZE9iamVjdEF0
dHJpYnV0ZUNhY2hlID0gbnVsbHB0cjsKIH0KIAotVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2Fj
aGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJiB0ZXh0
TWFya2VyRGF0YSkKK1Zpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyRGF0YShjb25zdCBUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEp
CiB7CiAgICAgaWYgKCFpc05vZGVJblVzZSh0ZXh0TWFya2VyRGF0YS5ub2RlKQogICAgICAgICB8
fCB0ZXh0TWFya2VyRGF0YS5ub2RlLT5pc1BzZXVkb0VsZW1lbnQoKSkKQEAgLTIyMjksNyArMjIz
MCw3IEBAIFZpc2libGVQb3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25Gb3JU
ZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IGF1dG8qIGNhY2hlID0gcmVuZGVyZXItPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwotICAg
IGlmIChjYWNoZSAmJiAhY2FjaGUtPm1faWRzSW5Vc2UuY29udGFpbnModGV4dE1hcmtlckRhdGEu
YXhJRCkpCisgICAgaWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyh0ZXh0
TWFya2VyRGF0YS5heE9iamVjdElEKCkpKQogICAgICAgICByZXR1cm4geyB9OwogCiAgICAgcmV0
dXJuIHZpc2libGVQb3NpdGlvbjsKQEAgLTIyMzcsMTMgKzIyMzgsMTAgQEAgVmlzaWJsZVBvc2l0
aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKFRleHRN
YXJrZXJEYXRhJgogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zm
c2V0Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhKQogewot
ICAgIGlmICghaXNOb2RlSW5Vc2UodGV4dE1hcmtlckRhdGEubm9kZSkpCi0gICAgICAgIHJldHVy
biBDaGFyYWN0ZXJPZmZzZXQoKTsKLSAgICAKLSAgICBpZiAodGV4dE1hcmtlckRhdGEuaWdub3Jl
ZCkKLSAgICAgICAgcmV0dXJuIENoYXJhY3Rlck9mZnNldCgpOwotICAgIAotICAgIENoYXJhY3Rl
ck9mZnNldCByZXN1bHQgPSBDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4
dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCwgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVy
T2Zmc2V0KTsKKyAgICBpZiAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCAhaXNOb2RlSW5Vc2Uo
dGV4dE1hcmtlckRhdGEubm9kZSkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGFyYWN0
ZXJPZmZzZXQgcmVzdWx0KHRleHRNYXJrZXJEYXRhLm5vZGUsIHRleHRNYXJrZXJEYXRhLmNoYXJh
Y3RlclN0YXJ0LCB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQpOwogICAgIC8vIFdoZW4g
d2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVwc3RyZWFt
LCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMg
bGluZS4KICAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0
IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgogICAgIGlmICh0ZXh0TWFya2VyRGF0YS5hZmZpbml0
eSA9PSBBZmZpbml0eTo6VXBzdHJlYW0pCkBAIC0yNTA3LDM3ICsyNTA1LDE4IEBAIHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+IEFYT2JqZWN0Q2FjaGU6OnJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFj
dGVyT2Zmc2V0cyhjb25zCiAgICAgcmV0dXJuIHsgeyAqc3RhcnQsICplbmQgfSB9OwogfQogCi12
b2lkIEFYT2JqZWN0Q2FjaGU6OnNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldChU
ZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hh
cmFjdGVyT2Zmc2V0KQorVGV4dE1hcmtlckRhdGEgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRh
dGFGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQpCiB7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKLSAgICAgICAgcmV0dXJu
OwotICAgIAotICAgIE5vZGUqIGRvbU5vZGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZTsKLSAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVs
ZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkgewotICAgICAgICB0ZXh0TWFya2Vy
RGF0YS5pZ25vcmVkID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLSAgICAKLSAgICBS
ZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9k
ZSk7Ci0gICAgaWYgKCFvYmopCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICAvLyBDb252ZXJ0
IHRvIHZpc2libGUgcG9zaXRpb24uCi0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlv
biA9IHZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsK
LSAgICBpbnQgdnBPZmZzZXQgPSAwOwotICAgIGlmICghdmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgp
KSB7Ci0gICAgICAgIFBvc2l0aW9uIGRlZXBQb3MgPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2
YWxlbnQoKTsKLSAgICAgICAgdnBPZmZzZXQgPSBkZWVwUG9zLmRlcHJlY2F0ZWRFZGl0aW5nT2Zm
c2V0KCk7Ci0gICAgfQotICAgIAotICAgIHRleHRNYXJrZXJEYXRhLmF4SUQgPSBvYmotPm9iamVj
dElEKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEubm9kZSA9IGRvbU5vZGU7Ci0gICAgdGV4dE1hcmtl
ckRhdGEuY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldDsKLSAgICB0ZXh0
TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4ID0gY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5k
ZXg7Ci0gICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gdnBPZmZzZXQ7Ci0gICAgdGV4dE1hcmtl
ckRhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKLSAgICAKLSAgICB0
aGlzLT5zZXROb2RlSW5Vc2UoZG9tTm9kZSk7CisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBp
ZiAoaXM8SFRNTElucHV0RWxlbWVudD4oY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpCisgICAgICAgICYm
IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpjaGFyYWN0ZXJPZmZzZXQubm9kZSkuaXNQYXNz
d29yZEZpZWxkKCkpCisgICAgICAgIHJldHVybiB7IG51bGxwdHIsIG51bGxwdHIsIHsgfSwgMCwg
MCwgdHJ1ZSB9OworCisgICAgc2V0Tm9kZUluVXNlKGNoYXJhY3Rlck9mZnNldC5ub2RlKTsKKyAg
ICByZXR1cm4geyB0aGlzLCBjaGFyYWN0ZXJPZmZzZXQubm9kZSwgdmlzaWJsZVBvc2l0aW9uRnJv
bUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpLAorICAgICAgICBjaGFyYWN0ZXJPZmZz
ZXQuc3RhcnRJbmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCwgZmFsc2UgfTsKIH0KIAogQ2hh
cmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JS
YW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFydCwgYm9vbCBlbnRlclRl
eHRDb250cm9scykKQEAgLTI1NzEsMTcgKzI1NTAsMTIgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2Jq
ZWN0Q2FjaGU6OnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVS
YW4KICAgICByZXR1cm4gdHJhdmVyc2VUb09mZnNldEluUmFuZ2UoY29weVJhbmdlLCBvZmZzZXQs
IG9wdGlvbnMsIHN0YXlXaXRoaW5SYW5nZSk7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6c3Rh
cnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJE
YXRhLCBjb25zdCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFydCkKK1RleHRNYXJrZXJE
YXRhIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQogewotICAgIC8vIFRoaXMgbWVtb3J5
IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVz
dGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kg
YW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgotICAg
IG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRl
eHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNl
dCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShyYW5nZSwgaXNTdGFydCk7Cisg
ICAgYXV0byBjaGFyYWN0ZXJPZmZzZXQgPSBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFu
Z2UocmFuZ2UsIGlzU3RhcnQpOwogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCi0g
ICAgICAgIHJldHVybjsKLSAgICAKLSAgICBzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJP
ZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rl
ck9mZnNldCk7CiB9CiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJP
ZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmIG5vZGUsIGludCBvZmZzZXQsIFRyYXZlcnNlT3B0
aW9uIG9wdGlvbikKQEAgLTI2MzAsMTUgKzI2MDQsNiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhPYmpl
Y3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldChOb2RlJiBub2RlLCBpbnQg
bwogICAgIHJldHVybiBjaGFyYWN0ZXJPZmZzZXQ7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6
dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJr
ZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKLXsKLSAgICAv
LyBUaGlzIG1lbW9yeSBtdXN0IGJlIHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRh
dGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBU
aGlzIGlzIHJpc2t5IGFuZCBiYWQgYmVjYXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZp
YWwgdHlwZS4KLSAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSks
IDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotCi0gICAgc2V0VGV4dE1hcmtlckRhdGFXaXRo
Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotfQotCiBi
b29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIHByZXZpb3VzLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIG5leHQpCiB7CiAgICAgLy8gTWF0
Y2ggdGhlIGJlaGF2aW9yIG9mIFZpc2libGVQb3NpdGlvbiwgd2Ugc2hvdWxkIHNraXAgdGhlIG5v
ZGUgYm91bmRhcnkgd2hlbiB0aGVyZSdzIG5vIHZpc3VhbCBzcGFjZSBvciBuZXcgbGluZSBjaGFy
YWN0ZXIuCkBAIC0yNjU3LDQxICsyNjIyLDU3IEBAIGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxk
U2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgcHJldmlvdXMsIGNvbnN0IENoCiAg
ICAgCiAgICAgcmV0dXJuIHRydWU7CiB9Ci0gICAgCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRN
YXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtl
ckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorCitUZXh0TWFy
a2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZz
ZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7Ci0gICAgQ2hhcmFj
dGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7Ci0gICAgQ2hhcmFjdGVyT2Zmc2V0IHBy
ZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OworICAgIFRleHRNYXJrZXJEYXRhIGRhdGE7CisgICAg
YXV0byBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OworICAgIGF1dG8gcHJldmlvdXMgPSBjaGFyYWN0
ZXJPZmZzZXQ7CiAgICAgYm9vbCBzaG91bGRDb250aW51ZTsKICAgICBkbyB7CiAgICAgICAgIHNo
b3VsZENvbnRpbnVlID0gZmFsc2U7CiAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0
KG5leHQsIGZhbHNlKTsKICAgICAgICAgaWYgKHNob3VsZFNraXBCb3VuZGFyeShwcmV2aW91cywg
bmV4dCkpCiAgICAgICAgICAgICBuZXh0ID0gbmV4dENoYXJhY3Rlck9mZnNldChuZXh0LCBmYWxz
ZSk7Ci0gICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJE
YXRhLCBuZXh0KTsKLSAgICAgICAgCisgICAgICAgIGRhdGEgPSB0ZXh0TWFya2VyRGF0YUZvckNo
YXJhY3Rlck9mZnNldChuZXh0KTsKKwogICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCBuZXh0IENo
YXJhY3Rlck9mZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIWxl
bmd0aEZvclJhbmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhwcmV2aW91cywg
bmV4dCkpKQogICAgICAgICAgICAgc2hvdWxkQ29udGludWUgPSB0cnVlOwogICAgICAgICBwcmV2
aW91cyA9IG5leHQ7Ci0gICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91
bGRDb250aW51ZSk7CisgICAgfSB3aGlsZSAoZGF0YS5pZ25vcmVkIHx8IHNob3VsZENvbnRpbnVl
KTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworQVhUZXh0TWFya2VyIEFYT2JqZWN0Q2FjaGU6Om5l
eHRUZXh0TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQoreworICAgIEFTU0VSVCht
X2lkID09IG1hcmtlci50cmVlSUQoKSk7CisgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhRm9yTmV4
dENoYXJhY3Rlck9mZnNldChtYXJrZXIpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRN
YXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRN
YXJrZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK1RleHRN
YXJrZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0
ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCiB7Ci0gICAg
Q2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OwotICAgIENoYXJhY3Rl
ck9mZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OworICAgIFRleHRNYXJrZXJEYXRhIGRhdGE7
CisgICAgYXV0byBwcmV2aW91cyA9IGNoYXJhY3Rlck9mZnNldDsKKyAgICBhdXRvIG5leHQgPSBj
aGFyYWN0ZXJPZmZzZXQ7CiAgICAgYm9vbCBzaG91bGRDb250aW51ZTsKICAgICBkbyB7CiAgICAg
ICAgIHNob3VsZENvbnRpbnVlID0gZmFsc2U7CiAgICAgICAgIHByZXZpb3VzID0gcHJldmlvdXND
aGFyYWN0ZXJPZmZzZXQocHJldmlvdXMsIGZhbHNlKTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFG
b3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIHByZXZpb3VzKTsKLSAgICAgICAgCisg
ICAgICAgIGRhdGEgPSB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChwcmV2aW91cyk7
CisKICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgcHJldmlvdXMgQ2hhcmFjdGVyT2Zmc2V0IGlm
IGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAgICAgICAgIGlmICghbGVuZ3RoRm9yUmFuZ2UocmFu
Z2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHByZXZpb3VzLCBuZXh0KSkpCiAgICAgICAg
ICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7CiAgICAgICAgIG5leHQgPSBwcmV2aW91czsKLSAg
ICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsKKyAg
ICB9IHdoaWxlIChkYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOworICAgIHJldHVybiBk
YXRhOworfQorCitBWFRleHRNYXJrZXIgQVhPYmplY3RDYWNoZTo6cHJldmlvdXNUZXh0TWFya2Vy
KGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQoreworICAgIEFTU0VSVChtX2lkID09IG1hcmtl
ci50cmVlSUQoKSk7CisgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0
ZXJPZmZzZXQobWFya2VyKTsKIH0KIAogTm9kZSogQVhPYmplY3RDYWNoZTo6bmV4dE5vZGUoTm9k
ZSogbm9kZSkgY29uc3QKQEAgLTI3ODksNzkgKzI3NzAsNDQgQEAgQWNjZXNzaWJpbGl0eU9iamVj
dCogQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRl
eHRNYXIKICAgICByZXR1cm4gdGhpcy0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7CiB9CiAKLXN0ZDo6
b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvcykKK3N0ZDo6
b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uKQog
ewotICAgIGlmICh2aXNpYmxlUG9zLmlzTnVsbCgpKQorICAgIGlmICh2aXNpYmxlUG9zaXRpb24u
aXNOdWxsKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBQb3NpdGlvbiBk
ZWVwUG9zID0gdmlzaWJsZVBvcy5kZWVwRXF1aXZhbGVudCgpOwotICAgIE5vZGUqIGRvbU5vZGUg
PSBkZWVwUG9zLmFuY2hvck5vZGUoKTsKLSAgICBBU1NFUlQoZG9tTm9kZSk7Ci0gICAgaWYgKCFk
b21Ob2RlKQorICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBFcXVp
dmFsZW50KCk7CisgICAgTm9kZSogbm9kZSA9IHBvc2l0aW9uLmFuY2hvck5vZGUoKTsKKyAgICBB
U1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxI
VE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkpCisgICAgaWYgKGlz
PEhUTUxJbnB1dEVsZW1lbnQ+KG5vZGUpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KCpu
b2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAog
ICAgIC8vIElmIHRoZSB2aXNpYmxlIHBvc2l0aW9uIGhhcyBhbiBhbmNob3IgdHlwZSByZWZlcnJp
bmcgdG8gYSBub2RlIG90aGVyIHRoYW4gdGhlIGFuY2hvcmVkIG5vZGUsIHdlIHNob3VsZAogICAg
IC8vIHNldCB0aGUgdGV4dCBtYXJrZXIgZGF0YSB3aXRoIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0
IHRoZSBvZmZzZXQgd2lsbCBjb3JyZXNwb25kIHRvIHRoZSBub2RlLgotICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9u
KHZpc2libGVQb3MpOwotICAgIGlmIChkZWVwUG9zLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6
UG9zaXRpb25Jc0FmdGVyQW5jaG9yIHx8IGRlZXBQb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9u
OjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikgewotICAgICAgICBUZXh0TWFya2VyRGF0YSB0ZXh0
TWFya2VyRGF0YTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4
dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAgICAgIHJldHVybiB0ZXh0TWFya2Vy
RGF0YTsKLSAgICB9Ci0KLSAgICAvLyBmaW5kIG9yIGNyZWF0ZSBhbiBhY2Nlc3NpYmlsaXR5IG9i
amVjdCBmb3IgdGhpcyBub2RlCi0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb21Ob2RlLT5k
b2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKLSAgICBpZiAoIWNhY2hlKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSBj
YWNoZS0+Z2V0T3JDcmVhdGUoZG9tTm9kZSk7Ci0KLSAgICAvLyBUaGlzIG1lbW9yeSBtdXN0IGJl
IHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3Ig
Ynl0ZS1lcXVpdmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBiYWQg
YmVjYXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KLSAgICBUZXh0TWFy
a2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0
ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwotICAgIAotICAgIHRl
eHRNYXJrZXJEYXRhLmF4SUQgPSBvYmotPm9iamVjdElEKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEu
bm9kZSA9IGRvbU5vZGU7Ci0gICAgdGV4dE1hcmtlckRhdGEub2Zmc2V0ID0gZGVlcFBvcy5kZXBy
ZWNhdGVkRWRpdGluZ09mZnNldCgpOwotICAgIHRleHRNYXJrZXJEYXRhLmFuY2hvclR5cGUgPSBk
ZWVwUG9zLmFuY2hvclR5cGUoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5hZmZpbml0eSA9IHZpc2li
bGVQb3MuYWZmaW5pdHkoKTsKKyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9m
ZnNldEZyb21WaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKKyAgICBpZiAocG9zaXRp
b24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgcG9z
aXRpb24uYW5jaG9yVHlwZSgpID09IFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJDaGlsZHJlbikK
KyAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rl
ck9mZnNldCk7CiAKLSAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0
ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgg
PSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKLQotICAgIGNhY2hlLT5zZXROb2RlSW5Vc2Uo
ZG9tTm9kZSk7Ci0KLSAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAgYXV0byogY2FjaGUg
PSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBjYWNoZS0+c2V0Tm9kZUlu
VXNlKG5vZGUpOworICAgIHJldHVybiB7IHsgY2FjaGUsIG5vZGUsIHZpc2libGVQb3NpdGlvbiwK
KyAgICAgICAgY2hhcmFjdGVyT2Zmc2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rlck9mZnNldC5vZmZz
ZXQsIGZhbHNlIH0gfTsKIH0KIAotLy8gVGhpcyBmdW5jdGlvbiBleGl0cyBhcyBhIHBlcmZvcm1h
bmNlIG9wdGltaXphdGlvbiB0byBhdm9pZCBhIHN5bmNocm9ub3VzIGxheW91dC4KKy8vIFRoaXMg
ZnVuY3Rpb24gZXhpc3RzIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEg
c3luY2hyb25vdXMgbGF5b3V0Lgogc3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmpl
Y3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCYgdGV4dENvbnRyb2wpCiB7CiAgICAgaWYgKGlzPEhUTUxJ
bnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pih0
ZXh0Q29udHJvbCkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHRleHRDb250cm9sLmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gdGV4dENvbnRyb2wuZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKIAotICAgIFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSBjYWNoZS0+
Z2V0T3JDcmVhdGUoJnRleHRDb250cm9sKTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKLQotICAgIC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGlu
c3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxl
bmNlLgotICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRN
YXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgotICAgIFRleHRNYXJrZXJEYXRhIHRleHRN
YXJrZXJEYXRhOwotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRh
KSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEu
YXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gJnRleHRD
b250cm9sOwotCiAgICAgY2FjaGUtPnNldE5vZGVJblVzZSgmdGV4dENvbnRyb2wpOwotCi0gICAg
cmV0dXJuIHRleHRNYXJrZXJEYXRhOworICAgIHJldHVybiB7IHsgY2FjaGUsICZ0ZXh0Q29udHJv
bCwgeyB9IH0gfTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRDaGFy
YWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJvb2wg
aWdub3JlTmV4dE5vZGVTdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9i
amVjdENhY2hlLmgKaW5kZXggYmNkZjNiYTk4NmIzLi4xMWIyOTFhMGJiYTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00NCw2ICs0NCw3IEBA
IGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhUZXh0
TWFya2VyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFzcyBI
VE1MVGFibGVFbGVtZW50OwpAQCAtNTYsMTkgKzU3LDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsKIGNs
YXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiBjbGFzcyBXaWRnZXQ7Ci0K
LXN0cnVjdCBUZXh0TWFya2VyRGF0YSB7Ci0gICAgQVhJRCBheElEOwotCi0gICAgTm9kZSogbm9k
ZSB7IG51bGxwdHIgfTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07Ci0gICAgUG9zaXRpb246
OkFuY2hvclR5cGUgYW5jaG9yVHlwZSB7IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNo
b3IgfTsKLSAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5OjpEb3duc3RyZWFtIH07Ci0K
LSAgICBpbnQgY2hhcmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKLSAgICBpbnQgY2hhcmFjdGVyT2Zm
c2V0IHsgMCB9OwotICAgIGJvb2wgaWdub3JlZCB7IGZhbHNlIH07Ci19Oworc3RydWN0IFRleHRN
YXJrZXJEYXRhOwogCiBzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0IHsKICAgICBOb2RlKiBub2RlOwpA
QCAtMjM2LDE1ICsyMjUsMTcgQEAgcHVibGljOgogICAgIC8vIFRleHQgbWFya2VyIHV0aWxpdGll
cy4KICAgICBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvclZp
c2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICBzdGQ6Om9wdGlvbmFs
PFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250
cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7Ci0gICAgdm9pZCB0ZXh0TWFya2VyRGF0
YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNl
dCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRN
YXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7Ci0gICAgdm9pZCB0ZXh0TWFya2Vy
RGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0Jik7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRl
eHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CisgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1h
cmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0
IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlciBuZXh0VGV4dE1hcmtlcihjb25z
dCBBWFRleHRNYXJrZXImKTsKKyAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YUZvclBy
ZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4
dE1hcmtlciBwcmV2aW91c1RleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJik7CisgICAgVmlz
aWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKGNvbnN0IFRleHRN
YXJrZXJEYXRhJik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRleHRN
YXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgLy8gVXNlIGlnbm9yZU5leHROb2RlU3Rh
cnQvaWdub3JlUHJldmlvdXNOb2RlRW5kIHRvIGRldGVybWluZSB0aGUgYmVoYXZpb3Igd2hlbiB3
ZSBhcmUgYXQgbm9kZSBib3VuZGFyeS4gCiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRDaGFyYWN0
ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCBpZ25vcmVOZXh0Tm9kZVN0YXJ0
ID0gdHJ1ZSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IENoYXJhY3Rlck9mZnNldCYsIGJvb2wgaWdub3JlUHJldmlvdXNOb2RlRW5kID0gdHJ1ZSk7
Ci0gICAgdm9pZCBzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0
YSYsIGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCk7CisgICAgVGV4dE1hcmtlckRhdGEgc3RhcnRP
ckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sKTsKICAg
ICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0
IFNpbXBsZVJhbmdlJiwgYm9vbCwgYm9vbCBlbnRlclRleHRDb250cm9scyA9IGZhbHNlKTsKICAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRh
dGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiByYW5n
ZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CkBAIC00NTYsNyArNDQ3LDYgQEAgcHJvdGVjdGVkOgogICAg
IENoYXJhY3Rlck9mZnNldCB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb25zdCBTaW1wbGVSYW5n
ZSYsIGludCwgVHJhdmVyc2VPcHRpb24gPSBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQsIGJvb2wgc3Rh
eVdpdGhpblJhbmdlID0gZmFsc2UpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRp
b25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJh
Y3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYpOwotICAgIHZvaWQgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zm
c2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgVUNoYXIz
MiBjaGFyYWN0ZXJBZnRlcihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hhcjMyIGNo
YXJhY3RlckJlZm9yZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJPZmZz
ZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldChOb2RlJiwgaW50LCBUcmF2ZXJzZU9w
dGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwLi40Njk1NWJhMWEzMjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
CisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgorCisj
aW5jbHVkZSAiQVhUcmVlU3RvcmUuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50LmgiCisj
aW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQVhUZXh0
TWFya2VyOjpBWFRleHRNYXJrZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRp
b24pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICh2aXNpYmxlUG9z
aXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIE5vZGUqIG5vZGUgPSB2aXNp
YmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCk7CisgICAgQVNTRVJUKG5v
ZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY2FjaGUg
PSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBkYXRhID0gY2FjaGUtPnRleHRNYXJrZXJEYXRh
Rm9yVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbikpCisgICAgICAgIG1fZGF0YSA9ICpk
YXRhOworfQorCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisg
ICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGF1dG8qIGNhY2hlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGUtPmRvY3VtZW50KCkuYXhPYmpl
Y3RDYWNoZSgpKQorICAgICAgICBtX2RhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKK30KKworQVhUZXh0TWFya2VyOjpvcGVyYXRv
ciBWaXNpYmxlUG9zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBhdXRvKiBjYWNoZSA9IEFYVHJlZVN0b3JlPEFYT2JqZWN0Q2FjaGU+Ojp0cmVlRm9y
SUQodHJlZUlEKCkpOworICAgIHJldHVybiBjYWNoZSA/IGNhY2hlLT52aXNpYmxlUG9zaXRpb25G
b3JUZXh0TWFya2VyRGF0YShtX2RhdGEpIDogVmlzaWJsZVBvc2l0aW9uKCk7Cit9CisKK0FYVGV4
dE1hcmtlcjo6b3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
aXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgpKQorICAg
ICAgICByZXR1cm4geyB9OworCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHJlc3VsdChtX2RhdGEubm9k
ZSwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAv
LyBXaGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBpcyB1
cHN0cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHBy
ZXZpb3VzIGxpbmUuCisgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQg
c28gdGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KKyAgICBpZiAobV9kYXRhLmFmZmluaXR5
ID09IEFmZmluaXR5OjpVcHN0cmVhbSkgeworICAgICAgICBpZiAoYXV0byBjYWNoZSA9IEFYVHJl
ZVN0b3JlPEFYT2JqZWN0Q2FjaGU+Ojp0cmVlRm9ySUQobV9kYXRhLmF4VHJlZUlEKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGNhY2hlLT5wcmV2aW91c0NoYXJhY3Rlck9mZnNldChyZXN1bHQsIGZh
bHNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVhDb3JlT2JqZWN0KiBBWFRl
eHRNYXJrZXI6Om9iamVjdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdHJlZSA9IEFYVHJlZVN0b3JlPEFYT2JqZWN0Q2Fj
aGU+Ojp0cmVlRm9ySUQodHJlZUlEKCkpOworICAgIHJldHVybiB0cmVlID8gdHJlZS0+b2JqZWN0
Rm9ySUQob2JqZWN0SUQoKSkgOiBudWxscHRyOworfQorCisjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQorU3RyaW5nIEFYVGV4dE1hcmtlcjo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7Cisg
ICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gIjxudWxsPiJfczsKKworICAgIGF1dG8g
c2VwYXJhdG9yID0gIiwgIjsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgInRyZWVJ
RCAiLCB0cmVlSUQoKS5sb2dnaW5nU3RyaW5nKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJvYmpl
Y3RJRCAiLCBvYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRvciwg
bm9kZSgpLT5kZWJ1Z0Rlc2NyaXB0aW9uKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJvZmZzZXQg
IiwgbV9kYXRhLm9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgIkFuY2hvclR5cGUgIiwgbV9k
YXRhLmFuY2hvclR5cGUKKyAgICAgICAgLCBzZXBhcmF0b3IsICJBZmZpbml0eSAiLCBtX2RhdGEu
YWZmaW5pdHkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJTdGFydCAiLCBtX2RhdGEu
Y2hhcmFjdGVyU3RhcnQKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJPZmZzZXQgIiwg
bV9kYXRhLmNoYXJhY3Rlck9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgImlzSWdub3JlZCAi
LCBpc0lnbm9yZWQoKQorICAgICk7Cit9CisjZW5kaWYKKworQVhUZXh0TWFya2VyUmFuZ2U6OkFY
VGV4dE1hcmtlclJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSkKKyAgICA6
IG1fc3RhcnQocmFuZ2Uuc3RhcnQpCisgICAgLCBtX2VuZChyYW5nZS5lbmQpCit7CisgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtl
clJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgYXV0byogY2FjaGUgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGFydCA9
IEFYVGV4dE1hcmtlcihjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKCpy
YW5nZSwgdHJ1ZSkpOworICAgIG1fZW5kID0gQVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9yRW5k
Q2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRNYXJr
ZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25zdCBB
WFRleHRNYXJrZXImIGUpCisgICAgOiBtX3N0YXJ0KHMpCisgICAgLCBtX2VuZChlKQoreworfQor
CitBWFRleHRNYXJrZXJSYW5nZTo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25z
dAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIHsgbV9zdGFydCwg
bV9lbmQgfTsKK30KKworc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhUZXh0TWFya2VyUmFu
Z2U6OnNpbXBsZVJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgYXV0byBzdGFydEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChtX3N0YXJ0
KTsKKyAgICBhdXRvIGVuZEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChtX2VuZCk7
CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5UG9pbnQgfHwgIWVuZEJvdW5kYXJ5UG9pbnQpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyAqc3RhcnRCb3VuZGFyeVBv
aW50LCAqZW5kQm91bmRhcnlQb2ludCB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uODVkZjM3OGE1YWRiCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaApAQCAtMCww
ICsxLDE3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAq
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFYT2Jq
ZWN0Q2FjaGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgVGV4dE1hcmtlckRh
dGEgeworICAgIHVuc2lnbmVkIHRyZWVJRDsKKyAgICB1bnNpZ25lZCBvYmplY3RJRDsKKworICAg
IE5vZGUqIG5vZGU7CisgICAgdW5zaWduZWQgb2Zmc2V0OworICAgIFBvc2l0aW9uOjpBbmNob3JU
eXBlIGFuY2hvclR5cGU7CisgICAgQWZmaW5pdHkgYWZmaW5pdHk7CisKKyAgICB1bnNpZ25lZCBj
aGFyYWN0ZXJTdGFydDsKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYm9vbCBp
Z25vcmVkOworCisgICAgVGV4dE1hcmtlckRhdGEoKQorICAgIHsKKyAgICAgICAgbWVtc2V0KHN0
YXRpY19jYXN0PHZvaWQqPih0aGlzKSwgMCwgc2l6ZW9mKCp0aGlzKSk7CisgICAgfQorCisgICAg
VGV4dE1hcmtlckRhdGEoQVhJRCBheFRyZWVJRCwgQVhJRCBheE9iamVjdElELAorICAgICAgICBO
b2RlKiBub2RlUGFyYW0gPSBudWxscHRyLCB1bnNpZ25lZCBvZmZzZXRQYXJhbSA9IDAsCisgICAg
ICAgIFBvc2l0aW9uOjpBbmNob3JUeXBlIGFuY2hvclR5cGVQYXJhbSA9IFBvc2l0aW9uOjpQb3Np
dGlvbklzT2Zmc2V0SW5BbmNob3IsCisgICAgICAgIEFmZmluaXR5IGFmZmluaXR5UGFyYW0gPSBB
ZmZpbml0eTo6RG93bnN0cmVhbSwKKyAgICAgICAgdW5zaWduZWQgY2hhclN0YXJ0ID0gMCwgdW5z
aWduZWQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZFBhcmFtID0gZmFsc2UpCisgICAgewor
ICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRoaXMp
KTsKKyAgICAgICAgdHJlZUlEID0gYXhUcmVlSUQudG9VSW50NjQoKTsKKyAgICAgICAgb2JqZWN0
SUQgPSBheE9iamVjdElELnRvVUludDY0KCk7CisgICAgICAgIG5vZGUgPSBub2RlUGFyYW07Cisg
ICAgICAgIG9mZnNldCA9IG9mZnNldFBhcmFtOworICAgICAgICBhbmNob3JUeXBlID0gYW5jaG9y
VHlwZVBhcmFtOworICAgICAgICBhZmZpbml0eSA9IGFmZmluaXR5UGFyYW07CisgICAgICAgIGNo
YXJhY3RlclN0YXJ0ID0gY2hhclN0YXJ0OworICAgICAgICBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFy
T2Zmc2V0OworICAgICAgICBpZ25vcmVkID0gaWdub3JlZFBhcmFtOworICAgIH0KKworICAgIFRl
eHRNYXJrZXJEYXRhKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBOb2RlKiBub2RlUGFyYW0sIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLAorICAgICAgICBpbnQgY2hhclN0YXJ0
ID0gMCwgaW50IGNoYXJPZmZzZXQgPSAwLCBib29sIGlnbm9yZWRQYXJhbSA9IGZhbHNlKQorICAg
IHsKKyAgICAgICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSwgMCwgc2l6ZW9mKCp0
aGlzKSk7CisgICAgICAgIGlmIChjYWNoZSkgeworICAgICAgICAgICAgdHJlZUlEID0gY2FjaGUt
PnRyZWVJRCgpLnRvVUludDY0KCk7CisKKyAgICAgICAgICAgIGlmIChSZWZQdHIgb2JqZWN0ID0g
Y2FjaGUtPmdldE9yQ3JlYXRlKG5vZGVQYXJhbSkpCisgICAgICAgICAgICAgICAgb2JqZWN0SUQg
PSBvYmplY3QtPm9iamVjdElEKCkudG9VSW50NjQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG5v
ZGUgPSBub2RlUGFyYW07CisgICAgICAgIGF1dG8gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24u
ZGVlcEVxdWl2YWxlbnQoKTsKKyAgICAgICAgb2Zmc2V0ID0gIXZpc2libGVQb3NpdGlvbi5pc051
bGwoKSA/IHN0ZDo6bWF4KHBvc2l0aW9uLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCksIDApIDog
MDsKKyAgICAgICAgYW5jaG9yVHlwZSA9IHBvc2l0aW9uLmFuY2hvclR5cGUoKTsKKyAgICAgICAg
YWZmaW5pdHkgPSB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKKworICAgICAgICBjaGFyYWN0
ZXJTdGFydCA9IHN0ZDo6bWF4KGNoYXJTdGFydCwgMCk7CisgICAgICAgIGNoYXJhY3Rlck9mZnNl
dCA9IHN0ZDo6bWF4KGNoYXJPZmZzZXQsIDApOworICAgICAgICBpZ25vcmVkID0gaWdub3JlZFBh
cmFtOworICAgIH0KKworICAgIEFYSUQgYXhUcmVlSUQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPEFYSURUeXBlPih0cmVlSUQpOworICAgIH0KKwor
ICAgIEFYSUQgYXhPYmplY3RJRCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbWFrZU9i
amVjdElkZW50aWZpZXI8QVhJRFR5cGU+KG9iamVjdElEKTsKKyAgICB9Cit9OworCitjbGFzcyBB
WFRleHRNYXJrZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBj
bGFzcyBBWFRleHRNYXJrZXJSYW5nZTsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMKKyAg
ICBBWFRleHRNYXJrZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgQVhUZXh0TWFya2Vy
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlcihjb25zdCBUZXh0TWFy
a2VyRGF0YSYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7IH0KKyAgICBBWFRl
eHRNYXJrZXIoVGV4dE1hcmtlckRhdGEmJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShkYXRhKQor
ICAgIHsgfQorI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYVGV4dE1hcmtlcihBWFRleHRNYXJr
ZXJSZWYpOworI2VuZGlmCisgICAgQVhUZXh0TWFya2VyKCkgPSBkZWZhdWx0OworCisgICAgb3Bl
cmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJuICFpc051bGwoKTsgfQorICAgIG9wZXJhdG9yIFZp
c2libGVQb3NpdGlvbigpIGNvbnN0OworICAgIG9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNv
bnN0OworCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJl
Zj4gcGxhdGZvcm1PYmplY3QoKSBjb25zdDsKKyAgICBvcGVyYXRvciBBWFRleHRNYXJrZXJSZWYo
KSBjb25zdCB7IHJldHVybiBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRp
ZgorCisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXhUcmVlSUQoKTsg
fQorICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXhPYmplY3RJRCgp
OyB9CisgICAgQVhDb3JlT2JqZWN0KiBvYmplY3QoKSBjb25zdDsKKworICAgIFRleHRNYXJrZXJE
YXRhIGNvbnN0JiBkYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgTm9kZSogbm9k
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5ub2RlOyB9CisgICAgYm9vbCBpc0lnbm9yZWQoKSBj
b25zdCB7IHJldHVybiBtX2RhdGEuaWdub3JlZDsgfQorCisjaWYgRU5BQkxFKFRSRUVfREVCVUdH
SU5HKQorICAgIFN0cmluZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CisjZW5kaWYKKworcHJp
dmF0ZToKKyAgICBib29sIGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICF0cmVlSUQoKS5pc1ZhbGlk
KCkgfHwgIW9iamVjdElEKCkuaXNWYWxpZCgpOyB9CisgICAgVGV4dE1hcmtlckRhdGEgbV9kYXRh
OworfTsKKworY2xhc3MgQVhUZXh0TWFya2VyUmFuZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxM
T0NBVEVEOworcHVibGljOgorICAgIC8vIENvbnN0cnVjdG9ycy4KKyAgICBBWFRleHRNYXJrZXJS
YW5nZShjb25zdCBWaXNpYmxlUG9zaXRpb25SYW5nZSYpOworICAgIEFYVGV4dE1hcmtlclJhbmdl
KGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisgICAgQVhUZXh0TWFya2VyUmFu
Z2UoY29uc3QgQVhUZXh0TWFya2VyJiwgY29uc3QgQVhUZXh0TWFya2VyJik7CisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIEFYVGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKKyNl
bmRpZgorICAgIEFYVGV4dE1hcmtlclJhbmdlKCkgPSBkZWZhdWx0OworCisgICAgb3BlcmF0b3Ig
Ym9vbCgpIGNvbnN0IHsgcmV0dXJuICFtX3N0YXJ0LmlzTnVsbCgpICYmICFtX2VuZC5pc051bGwo
KTsgfQorICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Q7CisgICAgc3Rk
OjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gc2ltcGxlUmFuZ2UoKSBjb25zdDsKKworI2lmIFBMQVRG
T1JNKE1BQykKKyAgICBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBsYXRmb3JtT2Jq
ZWN0KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmFuZ2VSZWYoKSBjb25zdCB7
IHJldHVybiBwbGF0Zm9ybU9iamVjdCgpLmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRpZgorCisgICAg
QVhUZXh0TWFya2VyIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQorICAgIEFYVGV4
dE1hcmtlciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQorcHJpdmF0ZToKKyAgICBBWFRl
eHRNYXJrZXIgbV9zdGFydDsKKyAgICBBWFRleHRNYXJrZXIgbV9lbmQ7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYVHJlZVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3Jl
LmgKaW5kZXggMzIxZGVlZmIyMmE5Li44NzQ0NzM5MTg3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKQEAgLTM2LDE1ICszNiwxNiBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgogY2xhc3MgQVhUcmVlU3RvcmUgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KEFYVHJlZVN0b3JlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAg
ICBBWElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBzdGF0aWMgVCogdHJl
ZUZvcklEKEFYSUQpOwogcHJvdGVjdGVkOgogICAgIEFYVHJlZVN0b3JlKCkgPSBkZWZhdWx0Owog
ICAgIHN0YXRpYyB2b2lkIGFkZChBWElELCBXZWFrUHRyPFQ+KTsKICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmUoQVhJRCk7CiAgICAgc3RhdGljIGJvb2wgY29udGFpbnMoQVhJRCk7CiAKLSAgICBzdGF0
aWMgUmVmUHRyPFQ+IHRyZWVGb3JJRChBWElEKTsKICAgICBzdGF0aWMgQVhJRCBnZW5lcmF0ZU5l
d0lEKCk7Ci0KICAgICBjb25zdCBBWElEIG1faWQgeyBnZW5lcmF0ZU5ld0lEKCkgfTsKICAgICBz
dGF0aWMgTG9jayBzX3N0b3JlTG9jazsKIHByaXZhdGU6CkBAIC03Myw3ICs3NCw3IEBAIGlubGlu
ZSBib29sIEFYVHJlZVN0b3JlPFQ+Ojpjb250YWlucyhBWElEIGF4SUQpCiB9CiAKIHRlbXBsYXRl
PHR5cGVuYW1lIFQ+Ci1pbmxpbmUgUmVmUHRyPFQ+IEFYVHJlZVN0b3JlPFQ+Ojp0cmVlRm9ySUQo
QVhJRCBheElEKQoraW5saW5lIFQqIEFYVHJlZVN0b3JlPFQ+Ojp0cmVlRm9ySUQoQVhJRCBheElE
KQogewogICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OwogICAgIHJldHVybiBtYXAo
KS5nZXQoYXhJRCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAuLmI3YmFkNjc2MTI3MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KQEAgLTAsMCAr
MSw4MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIkFYVGV4
dE1hcmtlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMuaCIKKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2VydmljZXNTUEku
aD4KKyNlbHNlIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0ICJXZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwor
QVhUZXh0TWFya2VyOjpBWFRleHRNYXJrZXIoQVhUZXh0TWFya2VyUmVmIHRleHRNYXJrZXJSZWYp
Cit7CisgICAgaWYgKCF0ZXh0TWFya2VyUmVmKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJrZXJSZWYpID09IEFYVGV4
dE1hcmtlckdldFR5cGVJRCgpKTsKKyAgICBpZiAoQ0ZHZXRUeXBlSUQodGV4dE1hcmtlclJlZikg
IT0gQVhUZXh0TWFya2VyR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEFTU0VS
VChBWFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikgPT0gc2l6ZW9mKG1fZGF0YSkp
OworICAgIGlmIChBWFRleHRNYXJrZXJHZXRMZW5ndGgodGV4dE1hcmtlclJlZikgIT0gc2l6ZW9m
KG1fZGF0YSkpCisgICAgICAgIHJldHVybjsKKworICAgIG1lbWNweSgmbV9kYXRhLCBBWFRleHRN
YXJrZXJHZXRCeXRlUHRyKHRleHRNYXJrZXJSZWYpLCBzaXplb2YobV9kYXRhKSk7CisjZWxzZSAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIG1lbWNweSgmbV9kYXRhLCB0ZXh0TWFya2VyUmVm
LCBzaXplb2YobV9kYXRhKSk7CisjZW5kaWYKK30KKworUmV0YWluUHRyPEFYVGV4dE1hcmtlclJl
Zj4gQVhUZXh0TWFya2VyOjpwbGF0Zm9ybU9iamVjdCgpIGNvbnN0Cit7CisjaWYgUExBVEZPUk0o
TUFDKQorICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZtX2RhdGEsIHNpemVvZihtX2RhdGEpKSk7CisjZWxzZSAv
LyBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiAoQVhUZXh0TWFya2VyUmVmKSZtX2Rh
dGE7CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKE1BQykKK0FYVGV4dE1hcmtlclJhbmdlOjpB
WFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJlZiB0ZXh0TWFya2VyUmFuZ2VSZWYp
CisgICAgOiBtX3N0YXJ0KEFYVGV4dE1hcmtlclJhbmdlQ29weVN0YXJ0TWFya2VyKHRleHRNYXJr
ZXJSYW5nZVJlZikpCisgICAgLCBtX2VuZChBWFRleHRNYXJrZXJSYW5nZUNvcHlFbmRNYXJrZXIo
dGV4dE1hcmtlclJhbmdlUmVmKSkKK3sKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQodGV4dE1hcmtl
clJhbmdlUmVmKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgpKTsKK30KKworUmV0YWlu
UHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBBWFRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1PYmpl
Y3QoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlclJhbmdlQ3JlYXRl
KGtDRkFsbG9jYXRvckRlZmF1bHQKKyAgICAgICAgLCBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZtX3N0YXJ0Lm1fZGF0YSwgc2l6
ZW9mKG1fc3RhcnQubV9kYXRhKSkpLmdldCgpCisgICAgICAgICwgYWRvcHRDRihBWFRleHRNYXJr
ZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9lbmQubV9kYXRh
LCBzaXplb2YobV9lbmQubV9kYXRhKSkpLmdldCgpCisgICAgKSk7Cit9CisjZW5kaWYgLy8gUExB
VEZPUk0oTUFDKQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGUzYTJlNjFjNmViOC4uMDM4MzZjZjIzNjc1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lv
cy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTgxLDI4ICsxODEsMjIg
QEAgKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZpc2libGVQ
b3NpdGlvbjooVmlzaWJsZVBvc2l0aW9uJikKIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXIgKil0ZXh0TWFya2VyV2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFy
YWN0ZXJPZmZzZXQgY2FjaGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCiB7Ci0gICAgaWYgKCFjYWNo
ZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0Lmlz
TnVsbCgpKQorICAgIGlmICghY2FjaGUgfHwgY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQogICAg
ICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRh
OwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2Vy
RGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQgJiYg
IXRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2Fj
aGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7Cisg
ICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCAmJiAhdGV4dE1hcmtlckRhdGEuaWdub3Jl
ZCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRh
IGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRl
eHRNYXJrZXIgKilzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBzdGQ6Om9wdGlv
bmFsPFNpbXBsZVJhbmdlPiYpcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9i
amVjdENhY2hlKiljYWNoZQogewotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgaWYgKCFyYW5nZSkKKyAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKICAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+
c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwg
aXNTdGFydCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byB0ZXh0
TWFya2VyRGF0YSA9IGNhY2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSgqcmFu
Z2UsIGlzU3RhcnQpOworICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNo
ZV0pLmF1dG9yZWxlYXNlKCk7CiB9CkBAIC0yNjczLDI2ICsyNjY3LDI0IEBAIC0gKFdlYkFjY2Vz
c2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlckZvclBvaW50OihDR1BvaW50KXBvaW50CiAK
IC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopbmV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKIHsKLSAgICBBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAg
YXV0byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAg
IGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRh
dGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRl
eHRNYXJrZXJEYXRhLmF4SUQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRl
eHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAg
IGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdp
dGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJGb3JD
aGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7Ci0gICAg
QVhPYmplY3RDYWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNo
ZSgpOworICAgIGF1dG8qIGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRl
eHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZv
clByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRh
dGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFy
YWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAg
IHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNo
ZV0pLmF1dG9yZWxlYXNlKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQppbmRleCA3YjkyZGJhM2E0YTcuLjE1ZWJmMzU0
OWQzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tCkBAIC04MjEsMTEgKzgyMSw5IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0
TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFy
YWN0CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJh
Y3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRl
eHRNYXJrZXJEYXRhLmF4SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKKyAgICBhdXRvIHRl
eHRNYXJrZXJEYXRhID0gY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNo
YXJhY3Rlck9mZnNldCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCB8fCB0ZXh0
TWFya2VyRGF0YS5pZ25vcmVkKQogICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgcmV0dXJuIGFk
b3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50
OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3JlbGVhc2Uo
KTsKIH0KIApAQCAtODQ3LDExICs4NDUsOSBAQCBBWFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRl
eHRNYXJrZXJGb3JSYW5nZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcAogICAg
IGlmICghY2FjaGUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVGV4dE1h
cmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2Vy
RGF0YUZvclJhbmdlKHRleHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAgIGlmICgh
dGV4dE1hcmtlckRhdGEuYXhJRCkKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnN0
YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKCpyYW5nZSwgaXNTdGFydCk7CisgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJl
dHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9y
ZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5k
ZXggNDIzNGNkNjlmOTE5Li43MjEwN2Q5NzE2MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLm1tCkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2VyLmgi
CiAjaW1wb3J0ICJBWE9iamVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNp
bXBvcnQgIkFjY2Vzc2liaWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0
eUxhYmVsLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgpAQCAtNzE3LDM4ICs3MTgs
MjIgQEAgc3RhdGljIHN0ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNz
aWJpbGl0eVNlYXJjaERpcmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFya2Vy
IGhlbHBlcnMKIAotc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBu
ZXh0VGV4dE1hcmtlcihBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBt
YXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRh
dGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwg
KGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsK
KworICAgIGF1dG8gbmV4dE1hcmtlciA9IGNhY2hlLT5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOwor
ICAgIHJldHVybiBuZXh0TWFya2VyID8gbmV4dE1hcmtlci5wbGF0Zm9ybU9iamVjdCgpIDogbmls
OwogfQogCi1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFy
a2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZz
ZXQmIGNoYXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBw
cmV2aW91c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtl
ciYgbWFya2VyKQogewogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJr
ZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rl
ck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQotICAgICAgICByZXR1cm4g
bmlsOwotICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JE
ZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJE
YXRhKSkpOwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiluZXh0VGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsK
LSAgICByZXR1cm4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tp
bmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKLX0KIAotLSAoUmV0
YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zm
c2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBwcmV2
aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4
T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBhdXRvIHByZXZpb3VzTWFya2Vy
ID0gY2FjaGUtPnByZXZpb3VzVGV4dE1hcmtlcihtYXJrZXIpOworICAgIHJldHVybiBwcmV2aW91
c01hcmtlciA/IHByZXZpb3VzTWFya2VyLnBsYXRmb3JtT2JqZWN0KCkgOiBuaWw7CiB9CiAKIC8v
IEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgc2luY2UgY2xpZW50cyBzaG91bGQgbm90IG5lZWQg
dG8gY2FsbCB0aGlzIG1ldGhvZCBhbmQgc2hvdWxkIG5vdCBiZSBleHBvc2VkIGluIHRoZSBwdWJs
aWMgaW50ZXJmYWNlLgpAQCAtMzM3NCwyNCArMzM1OSwyNCBAQCAtIChBWFRleHRNYXJrZXJSYW5n
ZVJlZilsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcjooQVhUZXh0TWFya2VyUmVmKXRl
eHRNYQogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
ICAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXIo
Y2FjaGUsIHRleHRNYXJrZXIpOworICAgICAgICBBWFRleHRNYXJrZXIgbWFya2VyKHRleHRNYXJr
ZXIpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5nZSB2aXNpYmxlUG9zaXRpb25SYW5nZTsK
ICAgICAgICAgc3dpdGNoICh0ZXh0VW5pdCkgewogICAgICAgICBjYXNlIFRleHRVbml0OjpMaW5l
OgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5l
UmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBv
c2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbihtYXJrZXIp
OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxlZnRMaW5lOgot
ICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGlu
ZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNp
YmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9u
UmFuZ2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0
OjpSaWdodExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdP
YmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3NpdGlvbik7Cisg
ICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGlu
ZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gdGV4dE1hcmtlclJhbmdlRnJv
bVZpc2libGVQb3NpdGlvbnMoY2FjaGUsIHZpc2libGVQb3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNp
YmxlUG9zaXRpb25SYW5nZS5lbmQpOworICAgICAgICByZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2Uo
dmlzaWJsZVBvc2l0aW9uUmFuZ2UpLnBsYXRmb3JtT2JqZWN0KCk7CiAgICAgfSk7CiB9CiAKQEAg
LTM2ODUsMjUgKzM2NzAsMjMgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5E
CiAgICAgICAgIHJldHVybiAoaWQpW3NlbGYgX3RleHRNYXJrZXJGb3JJbmRleDpbbnVtYmVyIGlu
dGVnZXJWYWx1ZV1dOwogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhV
SUVsZW1lbnRGb3JUZXh0TWFya2VyIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6
OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2Vy
LCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsK
LSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4
QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGFjY2Vz
c2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUo
KSwgdGV4dE1hcmtlcik7Ci0gICAgICAgICAgICBpZiAoIWF4T2JqZWN0KQotICAgICAgICAgICAg
ICAgIHJldHVybiBuaWw7CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7
CisgICAgICAgIGF1dG8qIG9iamVjdCA9IG1hcmtlci5vYmplY3QoKTsKKyAgICAgICAgaWYgKCFv
YmplY3QpCisgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBpZiAoYXhPYmpl
Y3QtPmlzQXR0YWNobWVudCgpICYmIFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3
XSkKLSAgICAgICAgICAgICAgICByZXR1cm4gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVu
dFZpZXddOworICAgICAgICBhdXRvKiB3cmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAg
ICAgIGlmICghd3JhcHBlcikKKyAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAg
IHJldHVybiBheE9iamVjdC0+d3JhcHBlcigpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYgKGlk
IGF0dGFjaG1lbnRWaWV3ID0gd3JhcHBlci5hdHRhY2htZW50VmlldykKKyAgICAgICAgICAgIHJl
dHVybiBhdHRhY2htZW50VmlldzsKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCiAg
ICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JV
SUVsZW1lbnQiXSkgewogICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRv
cmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0YWlu
UHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5n
ZSh1aUVsZW1lbnQuZ2V0KCktPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LmdldCgpLT5lbGVt
ZW50UmFuZ2UoKSk7CisgICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21S
YW5nZSh1aUVsZW1lbnQtPmF4T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LT5lbGVtZW50UmFuZ2Uo
KSk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzc1NCw3ICszNzM3LDcgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIChp
ZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKSwgYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50
KSk7CisgICAgICAgICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlcihiYWNraW5nT2JqZWN0LT52
aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9pbnQpKS5wbGF0Zm9ybU9iamVjdCgpLmF1
dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzg0Myw5ICszODI2LDggQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICB8fCAhQVhP
YmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0SW5kZXg6MF0pCiAgICAgICAgICAgICB8
fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pKQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZl
QXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZhcnJheV0gKCkgLT4gUmV0YWlu
UHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21NYXJr
ZXJzKChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MF0sIChBWFRleHRNYXJr
ZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pLmdldCgpOwotICAgICAgICB9KTsKKworICAg
ICAgICByZXR1cm4gKGlkKUFYVGV4dE1hcmtlclJhbmdlIHsgeyAoQVhUZXh0TWFya2VyUmVmKVth
cnJheSBvYmplY3RBdEluZGV4OjBdIH0sIHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0
QXRJbmRleDoxXSB9IH0ucGxhdGZvcm1PYmplY3QoKS5hdXRvcmVsZWFzZSgpOwogICAgIH0KIAog
ICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9y
VW5vcmRlcmVkVGV4dE1hcmtlcnMiXSkgewpAQCAtMzg4NCw4ICszODY2LDggQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAg
ICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBj
aGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0
TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVybiBicmlkZ2VfaWRfY2FzdChbcHJvdGVjdGVkU2Vs
ZiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAg
ICAgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICBy
ZXR1cm4gbmV4dFRleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM4OTksOCArMzg4MSw4IEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hh
cmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1h
cmtlcik7Ci0gICAgICAgICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYg
cHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0pOwor
ICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAg
IHJldHVybiBwcmV2aW91c1RleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRvcmVs
ZWFzZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5ODEsMjYgKzM5NjMsMTMgQEAgQUxM
T1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICAvLyBVc2VkIG9ubHkgYnkg
RHVtcFJlbmRlclRyZWUgKHNvIGZhcikuCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICBy
ZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhy
ZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxm
KV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0
ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAo
IWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAg
ICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4
T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLQotICAgICAgICAgICAgcmV0dXJuIChp
ZClzdGFydE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2Fj
aGUoKSwgcmFuZ2UsIHRydWUpOwotICAgICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2VyUmFu
Z2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0dXJu
IChpZClheFRleHRNYXJrZXJSYW5nZS5zdGFydCgpLnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVh
c2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNz
aWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRl
eHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0
YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVk
U2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmpl
Y3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5n
ZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUo
KSwgdGV4dE1hcmtlclJhbmdlKTsKLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRl
eHRNYXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBm
YWxzZSk7Ci0gICAgICAgIH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJr
ZXJSYW5nZSB7IHRleHRNYXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gKGlkKWF4VGV4dE1h
cmtlclJhbmdlLmVuZCgpLnBsYXRmb3JtT2JqZWN0KCkuYXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3Rl
ZC50eHQKaW5kZXggNWQzM2RhY2IyZDNmLi41MDQ2MDI1OGZjMzMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0
LW1hcmtlci1leHBlY3RlZC50eHQKQEAgLTEsMTcgKzEsMTQgQEAKLXRleHQgaGVyZQotdGV4dCBi
bG9jawotdGV4dCBoZXJlCiBUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCBy
ZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuCiAKLU9u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQorUEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5n
dGgocmFuZ2UpID09PSAxMAorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFT
UzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpID09PSAxMAorUEFTUzogbmV3
UmFuZ2UuaXNFcXVhbChyYW5nZSkgPT09IHRydWUKIAotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSBpcyAxMAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1Q
QVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld01h
cmtlclJhbmdlKSBpcyAxMAotUEFTUyBuZXdNYXJrZXJSYW5nZS5pc0VxdWFsKHRleHRNYXJrZXJS
YW5nZTEpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBD
T01QTEVURQotCit0ZXh0IGhlcmUKK3RleHQgYmxvY2sKK3RleHQgaGVyZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2Vy
Lmh0bWwKaW5kZXggZDQ5MzZhZDIyZDE4Li4zNDBhYjFlMTk4MGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIu
aHRtbApAQCAtMSw1MSArMSw0MiBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHki
PgorPGJvZHk+CiAKIHRleHQgaGVyZQotPGRpdiBpZD0idGV4dDEiIHRhYmluZGV4PSIwIj50ZXh0
IGJsb2NrPC9kaXY+Cis8ZGl2IGlkPSJ0ZXh0MSI+dGV4dCBibG9jazwvZGl2PgogdGV4dCBoZXJl
CiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0K
IDxzY3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIg
c3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQg
bWFya2VyLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewor
ICAgICAgICBsZXQgdGVzdE91dHB1dCA9ICJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0
ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJr
ZXIuXG5cbiI7CiAKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5m
b2N1cygpOwotICAgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9j
dXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmNoaWxkQXRJbmRleCgwKTsKIAotICAgICAg
ICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgICB0ZXh0ID0gdGV4dC5j
aGlsZEF0SW5kZXgoMCk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3Rh
cnQgbWFya2VyIGZvciB0aGlzIGVsZW1lbnQncyByYW5nZS4KKyAgICAgICAgdmFyIHJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOworICAgICAgICB0ZXN0T3V0cHV0
ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgocmFuZ2UpIiwgIjEwIik7Cisg
ICAgICAgIHZhciBzdGFydCA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
KHJhbmdlKTsKIAotICAgICAgICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQg
bWFya2VyIGZvciB0aGlzIHJhbmdlLgotICAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UxID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSIsICIxMCIpOwot
ICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEpOworICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBz
dGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFydGVk
IHdpdGguCisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkuaXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CiAKLSAg
ICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBzdGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRoZSBz
YW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFydGVkIHdpdGguCi0gICAgICAgICAgc2hvdWxkQmVUcnVl
KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSIpOworICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNrIHRo
YXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KKyAgICAgICAgdmFyIGVuZCA9IHRleHQu
ZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAgIHRlc3RPdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmQp
LmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gR2V0IHRoZSBlbmQgbWFy
a2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVzIHVzIHRoZSBzYW1lIGVsZW1lbnQuCi0gICAgICAg
ICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0TWFya2VyUmFuZ2UxKTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOworICAg
ICAgICAvLyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5kIGVuZCBtYXJr
ZXJzIGFuZCBjaGVjayB0aGUgbGVuZ3RoLgorICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnQsIGVuZCk7CisgICAgICAgIHRlc3RPdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSkiLCAiMTAiKTsK
IAotICAgICAgICAgIC8vIE1ha2UgYSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQg
ZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBsZW5ndGgKLSAgICAgICAgICB2YXIgbmV3TWFya2Vy
UmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGVuZE1h
cmtlcik7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5l
d01hcmtlclJhbmdlKSIsICIxMCIpOworICAgICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVxdWFs
cyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ugd2Ugc3RhcnRlZCB3aXRoCisgICAgICAgIHRlc3RPdXRw
dXQgKz0gZXhwZWN0KCJuZXdSYW5nZS5pc0VxdWFsKHJhbmdlKSIsICJ0cnVlIik7CiAKLSAgICAg
ICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVxdWFscyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ugd2Ug
c3RhcnRlZCB3aXRoCi0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJuZXdNYXJrZXJSYW5nZS5pc0Vx
dWFsKHRleHRNYXJrZXJSYW5nZTEpIik7CisgICAgICAgIGRlYnVnKHRlc3RPdXRwdXQpOwogICAg
IH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1l
bnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXBy
ZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKaW5kZXggMDJjNTc2NThh
NTZmLi44ZmM1ZmQ3MjQ4YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1p
Z25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CkBAIC0xLDE2ICsxLDEzIEBACi1GaXJzdCBsaW5l
IG9mIHRleHQKLWJ1dHRvbgotVGhpcmQgbGluZSBvZiB0ZXh0CiBUaGlzIHRlc3RzIHRoZSBhYmls
aXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFuIGlnbm9yZWQgZWxl
bWVudC4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzogZWxlbWVudC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09PSAnRmlyc3QgbGluZSBvZiB0ZXh0JworUEFTUzog
ZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09PSAnYnV0dG9uJworUEFT
UzogcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2Yg
dGV4dCcKK1BBU1M6IHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBGaXJz
dCBsaW5lIG9mIHRleHQnCiAKLQotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgaXMgJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKLVBBU1MgZWxlbWVudC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKSBpcyAnYnV0dG9uJwotUEFTUyByZXN1bHRF
bGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnCi1QQVNT
IHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgaXMgJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4
dCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRp
Y2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCmluZGV4IDZl
YTgxODdjMDIyNi4uOTVkN2E0NmNlY2QzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWln
bm9yZWQtZWxlbWVudC5odG1sCkBAIC0xLDUwICsxLDQ3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJM
SUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9
Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08
Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAorPGRpdiBpZD0iY29udGFpbmVyIiByb2xlPSJncm91
cCI+CiA8ZGl2IGlkPSJ0ZXN0Ij5GaXJzdCBsaW5lIG9mIHRleHQ8YnI+CiA8YnV0dG9uIGlkPSJi
dXR0b24iIGFyaWEtaGlkZGVuPSJ0cnVlIj5idXR0b248L2J1dHRvbj4KIDxicj5UaGlyZCBsaW5l
IG9mIHRleHQ8L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25z
b2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRl
c3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFu
IGlnbm9yZWQgZWxlbWVudC4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlD
b250cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Ym9keSIpLmZvY3VzKCk7Ci0gICAgICAgIHZhciBjb250YWluZXJFbGVtZW50ID0gYWNjZXNzaWJp
bGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7Ci0gICAgICAgIAorICAgICAgICBsZXQgb3V0
cHV0ID0gIlRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVs
ZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LlxuXG4iOworCisgICAgICAgIHZhciBjb250
YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNv
bnRhaW5lciIpOwogICAgICAgICB2YXIgZWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVy
LmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGVzdCIpLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAg
dmFyIG1hcmtlclJhbmdlID0gZWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVsZW1l
bnQpOwotICAgICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIiwgIidGaXJzdCBsaW5lIG9mIHRleHQnIik7Ci0gICAgICAgIAotICAgICAg
ICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVkIGVsZW1lbnQgdXNpbmcgbGluZSB0ZXh0IG1hcmtl
ciBjYWxscwotICAgICAgICB2YXIgdGV4dE1hcmtlciA9IGVsZW1lbnQuZW5kVGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSk7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVt
ZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB0ZXh0TWFya2VyID0gZWxl
bWVudC5uZXh0VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgdmFyIGxpbmVSYW5nZSA9
IGVsZW1lbnQubGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0g
ICAgICAgIHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFu
Z2UpIiwgIididXR0b24nIik7Ci0gICAgICAgIAotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVu
dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdlKTsKLSAgICAgICAg
dmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKHRleHRNYXJrZXIpOwotICAgICAgICAKKyAgICAgICAgdmFyIHJhbmdlID0gZWxlbWVudC50
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVsZW1lbnQpOworICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ0ZpcnN0IGxp
bmUgb2YgdGV4dCciKTsKKworICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVkIGVsZW1l
bnQgdXNpbmcgbGluZSB0ZXh0IG1hcmtlciBjYWxscy4KKyAgICAgICAgdmFyIG1hcmtlciA9IGVs
ZW1lbnQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAgIG1h
cmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgbWFya2VyID0g
ZWxlbWVudC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICByYW5nZSA9IGVsZW1lbnQu
bGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwgIidi
dXR0b24nIik7CisKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5zdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB2YXIgc3RhcnRFbGVtZW50ID0gZWxlbWVu
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2VyKTsKKwogICAgICAgICAv
LyBTZWFyY2ggZm9yd2FyZAotICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVs
ZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFY
QW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7Ci0g
ICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1lbnRG
b3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5
IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVudC5z
dHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOworCiAgICAgICAg
IC8vIFNlYXJjaCBiYWNrd2FyZAotICAgICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxl
bWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCBmYWxzZSwgIkFY
QW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHRF
bGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnIik7Cisg
ICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGlj
YXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2Up
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAg
ICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0gICAgICAgIAogPC9zY3JpcHQ+Ci0KLTxzY3Jp
cHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9k
eT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L2h0bWw+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1y
YW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFy
a2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKaW5kZXggY2RjYzc3YzNjODcxLi42YTdk
MmY3OGEzZTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRt
YXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKQEAg
LTEsMjgxICsxLDIwNyBAQAotVGhpbmsgZGlmZmVyZW50IEFwcGxlCi0KLWJvbGQgaXRhbGljCi11
bmRlcmxpbmUgbGFzdCEKLQotSGVsbG8gV29ybGQhCi1UaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2Vy
UmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCitUaGlzIHRlc3RzIHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVy
bHkuCiAKIGNvbnRlbnQgbGVuZ3RoOiA2NQogQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFj
aCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Ci0wCi0nJwotMQotJ1QnCi0yCi0nVGgnCi0zCi0nVGhp
JwotNAotJ1RoaW4nCi01Ci0nVGhpbmsnCi02Ci0nVGhpbmsgJwotNwotJ1RoaW5rIGQnCi04Ci0n
VGhpbmsgZGknCi05Ci0nVGhpbmsgZGlmJwotMTAKLSdUaGluayBkaWZmJwotMTEKLSdUaGluayBk
aWZmZScKLTEyCi0nVGhpbmsgZGlmZmVyJwotMTMKLSdUaGluayBkaWZmZXJlJwotMTQKLSdUaGlu
ayBkaWZmZXJlbicKLTE1Ci0nVGhpbmsgZGlmZmVyZW50JwotMTYKLSdUaGluayBkaWZmZXJlbnQg
JwotMTcKLSdUaGluayBkaWZmZXJlbnQgQScKLTE4Ci0nVGhpbmsgZGlmZmVyZW50IEFwJwotMTkK
LSdUaGluayBkaWZmZXJlbnQgQXBwJwotMjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbCcKLTIxCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUnCi0yMwot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMCAnJworMSAnVCcKKzIgJ1RoJworMyAnVGhpJworNCAn
VGhpbicKKzUgJ1RoaW5rJworNiAnVGhpbmsgJworNyAnVGhpbmsgZCcKKzggJ1RoaW5rIGRpJwor
OSAnVGhpbmsgZGlmJworMTAgJ1RoaW5rIGRpZmYnCisxMSAnVGhpbmsgZGlmZmUnCisxMiAnVGhp
bmsgZGlmZmVyJworMTMgJ1RoaW5rIGRpZmZlcmUnCisxNCAnVGhpbmsgZGlmZmVyZW4nCisxNSAn
VGhpbmsgZGlmZmVyZW50JworMTYgJ1RoaW5rIGRpZmZlcmVudCAnCisxNyAnVGhpbmsgZGlmZmVy
ZW50IEEnCisxOCAnVGhpbmsgZGlmZmVyZW50IEFwJworMTkgJ1RoaW5rIGRpZmZlcmVudCBBcHAn
CisyMCAnVGhpbmsgZGlmZmVyZW50IEFwcGwnCisyMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlJwor
MjIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
JwotMjQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYicKLTI1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNSAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvJwotMjYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI2ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sJwotMjcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI3ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCcKLTI4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyOCAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgJwotMjkKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzI5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpJwotMzAKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzMwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdCcKLTMxCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhJwotMzIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMyICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYm9sZCBpdGFsJwotMzMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMzICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaScKLTM0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiszNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljJwotMzUKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzM1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
ICcKLTM2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNiAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljCiB1JwotMzcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM3ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuJwotMzgKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzM4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZCcK
LTM5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszOSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGJvbGQgaXRhbGljCiB1bmRlJwotNDAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQwICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVyJwotNDEKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzQxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybCcKLTQyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MiAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpJwotNDMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzQzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluJwotNDQK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZScKLTQ1Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NSAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgJwotNDYKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzQ2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsJwotNDcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ3ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYScKLTQ4Ci0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis0OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbGFzJwotNDkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ5ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0JwotNTAKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzUwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0IScKLTUxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MSAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEnCi01Mgot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vCcKLTUzCi0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCis1MyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUg
bGFzdCEKIAog77+8SCcKLTU0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NCAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGUnCi01
NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbCcKLTU2Ci0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCis1NiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRl
cmxpbmUgbGFzdCEKIAog77+8SGVsbCcKLTU3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NyAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog
77+8SGVsbG8nCi01OAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTggJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvICcKLTU5
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1OSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gVycKLTYwCi0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis2MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV28nCi02MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
c3QhCiAKIO+/vEhlbGxvIFdvcicKLTYyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MiAnVGhp
bmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8
SGVsbG8gV29ybCcKLTYzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MyAnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29y
bGQnCi02NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCkBAIC0yOTEsNyArMjE3LDExIEBAIHVu
ZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCEnCiAnJworCiBQQVNTIHN1Y2Nlc3NmdWxs
eVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRt
bCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJh
bmdlLmh0bWwKaW5kZXggY2UxY2JmMmVlZmUzLi5jMzA0OTg2N2IwNTAgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0
bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1m
b3ItcmFuZ2UuaHRtbApAQCAtMSw5ICsxLDkgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8v
SUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+
Cis8Ym9keT4KIAogPGRpdiBpZD0iY29udGVudCIgcm9sZT0iZ3JvdXAiPgogICAgIDxwPlRoaW5r
IDxlbT5kaWZmZXJlbnQ8L2VtPiA8YSBocmVmPSJhcHBsZS5jb20iPkFwcGxlPC9hPjwvcD4KQEAg
LTExLDM2ICsxMSwzNCBAQAogICAgIDxidXR0b24+SGVsbG8gV29ybGQhPC9idXR0b24+CiA8L2Rp
dj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LQogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJh
bmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuIik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2li
aWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIGF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOwotICAgICAgICBjb250ZW50
VGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoYXhF
bGVtZW50KTsKLSAgICAgICAgdGV4dExlbmd0aCA9IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UoY29udGVudFRleHRNYXJrZXJSYW5nZSkubGVuZ3RoOwotICAgICAgICBkZWJ1Zygi
Y29udGVudCBsZW5ndGg6ICIgKyB0ZXh0TGVuZ3RoKTsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJU
aGlzIHRlc3RzIHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuXG5c
biI7CiAKLSAgICAgICAgZGVidWcoIkFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hh
cmFjdGVyIGluIHRoZSB0ZXh0OiIpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dExlbmd0
aDsgKytpKSB7Ci0gICAgICAgICAgICBkZWJ1ZyhpKTsKLSAgICAgICAgICAgIHRleHRNYXJrZXJS
YW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCBpKTsKLSAgICAgICAg
ICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1h
cmtlclJhbmdlKSArICInIik7CisgICAgICAgIGxldCBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIGxldCBy
YW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChjb250ZW50KTsKKyAgICAg
ICAgbGV0IGNvbnRlbnRMZW5ndGggPSBjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShy
YW5nZSkubGVuZ3RoOworICAgICAgICBvdXRwdXQgKz0gYGNvbnRlbnQgbGVuZ3RoOiAke2NvbnRl
bnRMZW5ndGh9XG5gOworCisgICAgICAgIG91dHB1dCArPSAiQWxsIHJhbmdlcyBmcm9tIGluZGV4
IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6XG4iOworICAgICAgICBmb3IgKGkgPSAw
OyBpIDwgY29udGVudExlbmd0aDsgKytpKSB7CisgICAgICAgICAgICByYW5nZSA9IGNvbnRlbnQu
dGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgaSk7CisgICAgICAgICAgICBvdXRwdXQgKz0gYCR7
aX0gJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CiAgICAg
ICAgIH0KIAotICAgICAgICBkZWJ1ZygiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6
Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VG
b3JSYW5nZSgxNiwgNSk7Ci0gICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAgIG91dHB1dCAr
PSAiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6XG4iOworICAgICAgICByYW5nZSA9
IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMTYsIDUpOworICAgICAgICBvdXRwdXQg
Kz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOworCisg
ICAgICAgIG91dHB1dCArPSAiT3V0IG9mIHJhbmdlIHZhbHVlczpcbiI7CisgICAgICAgIHJhbmdl
ID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCAxMDApOworICAgICAgICBvdXRw
dXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwor
ICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7
CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
cmFuZ2UpfSdcbmA7CiAKLSAgICAgICAgZGVidWcoIk91dCBvZiByYW5nZSB2YWx1ZXM6Iik7Ci0g
ICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5n
ZSgwLCAxMDApOwotICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOwotICAgICAgICB0ZXh0TWFya2VyUmFu
Z2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7Ci0gICAgICAg
IGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlKSArICInIik7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50
Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwog
ICAgIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBv
c3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2Rl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9z
aXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQKaW5kZXggOTE1ZDU2OWMwZWQw
Li5kODRiOGIyMDE3NDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3It
dGV4dC1ub2RlLWV4cGVjdGVkLnR4dApAQCAtMSwxMCArMSw3IEBACi1UaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4g
YXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBj
YW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxs
IHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBM
RVRFIi4KK1BBU1M6IGNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwoZWxlbWVudCkgPT09
IHRydWUKIAotCi1QQVNTIGNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVsZW1l
bnQpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1w
b3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAppbmRleCBj
NzI1N2Q1ODVkMWEuLjYyZWI0ZTM1MjJlYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1m
b3ItdGV4dC1ub2RlLmh0bWwKQEAgLTEsNDAgKzEsMzEgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0i
Li4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
cmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxi
b2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08ZGl2IGlkPSJjb250ZW50IiB0YWJpbmRleD0iMCIg
c3R5bGU9IndpZHRoOjIwMHB4OyI+Cis8ZGl2IGlkPSJjb250ZW50IiBzdHlsZT0id2lkdGg6MjAw
cHg7Ij4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiAKIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxv
dCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0
LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBh
IGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuCiA8L2Rpdj4K
IAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQog
PHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFz
aCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0
IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy4iKTsKLQogICAgIGlmICh3aW5k
b3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlz
IHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9y
IHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2Jq
ZWN0cy5cblxuIjsKIAotICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50
IikuZm9jdXMoKTsKLSAgICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLmZvY3VzZWRFbGVtZW50OwotCi0gICAgICAgICAgLy8gR2V0IHRoZSB0ZXh0IG1hcmtlciBh
dCB0aGlzIHBvaW50LiBJdCBzaG91bGQgbm90IGNyYXNoLgotICAgICAgICAgIHZhciBtYXJrZXJB
dFBvaW50ID0gY29udGVudC50ZXh0TWFya2VyRm9yUG9pbnQoY29udGVudC54ICsgY29udGVudC53
aWR0aC8yLCBjb250ZW50LnkgKyBjb250ZW50LmhlaWdodC8yKTsKLSAgICAgICAgICB2YXIgdGV4
dEVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJr
ZXJBdFBvaW50KTsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgLy8gR2V0IHRoZSB0
ZXh0IG1hcmtlciBhdCB0aGlzIHBvaW50LiBJdCBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICB2
YXIgbWFya2VyID0gY29udGVudC50ZXh0TWFya2VyRm9yUG9pbnQoY29udGVudC54ICsgY29udGVu
dC53aWR0aCAvIDIsIGNvbnRlbnQueSArIGNvbnRlbnQuaGVpZ2h0IC8gMik7CisgICAgICAgIC8v
IFZlcmlmeSB0aGUgZWxlbWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIHdhbnRlZC4KKyAg
ICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJjb250ZW50LmNoaWxkQXRJ
bmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIFZlcmlm
eSB0aGUgZWxlbWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHdlIHdhbnRlZC4KLSAgICAgICAg
ICB2YXIgdGV4dEVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihtYXJrZXJBdFBvaW50KTsKLSAgICAgICAgICBzaG91bGRCZVRydWUoImNvbnRlbnQuY2hp
bGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVsZW1lbnQpIik7CisgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAg
ICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRt
bD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90
ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50
eHQKaW5kZXggMDQwNDM4NDlkZTE2Li5lYTRiODc3ZDQ5M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90
ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMSw1MiArMSw0MCBAQAot
dGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4ndCBzZWxlY3QKLWFiYyBkZSBmCi3wn5iD8J+Yjwot
Ci1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBt
YXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuCiAKLU9uIHN1Y2Nlc3Ms
IHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJU
RVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRN
YXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0
cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBu
ZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
IG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICd0JwotUEFTUyB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
MikgaXMgNQorUEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
KSA9PT0gNAorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3Rh
cnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXds
aW5lCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
ICd0JworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSBuZXdsaW5lCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09ICd0JworUEFTUzogdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJS
YW5nZTIpID09PSA1CiBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogYyBbQVRUQUNITUVOVF0gZAot
UEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdkJwot
UEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICcxJwot
UEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3Qn
Ci1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3Nl
bCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlz
IHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRB
dEluZGV4KDIpKSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSBpcyAnZicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpIGlzICdhJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRl
eHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIGlzICfwn5iPJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCkpIGlzICfwn5iDJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRX
aGl0ZXNwYWNlTWFya2VyUmFuZ2UpIGlzIDMKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSBpcyAnYicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn
ICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBB
U1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSBpcyAnYXVk
aW/vv7xmaWxlJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgaXMgJ++/vCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIGlzICfvv7wnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpID09PSAnZCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgPT09ICcxJworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSA9PT0gJ2VjdCcKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgPT09ICdzZWwnCitQQVNTOiAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihzdGFydCkgPT09IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSA9PT0gdHJ1
ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRN
YXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSA9PT0gdHJ1ZQorUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZicKK1BBU1M6IHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2EnCitQQVNTOiB0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iPJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmIMnCitQQVNT
OiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFu
Z2UpID09PSAzCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09
PSAnYScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcg
JworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2InCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSA9PT0gJ2F1ZGlv77+8
ZmlsZScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9
PT0gJ++/vCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ++/vCcKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENP
TVBMRVRFCiAKKworCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4
dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKaW5k
ZXggNWVkM2JkMGQwNmRlLi4zOGYxM2VkN2EzZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisr
KyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC5odG1sCkBAIC0xLDE1ICsxLDE3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8bWV0YSBjaGFyc2V0
PSJVVEYtMTYiPgogPC9oZWFkPgogPHN0eWxlPgogLnVzZXJzZWxlY3QgeyB1c2VyLXNlbGVjdDog
bm9uZTsgLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsgfQogPC9zdHlsZT4KLTxib2R5IGlkPSJi
b2R5Ij4KKzxib2R5PgogCi08ZGl2IGlkPSJ0ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2Pgor
PGRpdiBpZD0iY29udGVudCI+Cis8ZGl2IGlkPSJ0ZXh0Ij50ZXh0PC9kaXY+CiA8YnI+CiB0ZXh0
MQogCkBAIC0zMiwyOSArMzQsNDUgQEAgZgogPHAgaWQ9InRleHQ2Ij5hICAgICBiPC9wPgogCiA8
cCBpZD0idGV4dDciPmF1ZGlvPGF1ZGlvIGNvbnRyb2xzPjwvYXVkaW8+ZmlsZTwvcD4KLQotPHAg
aWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2Pgog
CiA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBj
dXJyZW50TWFya2VyLCBvYmopIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsg
aSsrKSB7CisgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAg
ICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
OworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwcmV2aW91czogcHJl
dmlvdXNNYXJrZXIsCisgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAg
IH07CisgICAgfQorCisgICAgZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtl
ciwgY3VycmVudE1hcmtlciwgb2JqKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291
bnQ7IGkrKykgeworICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0
TWFya2VyKHByZXZpb3VzTWFya2VyKTsKKyAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmou
cHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJl
dHVybiB7CisgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAg
ICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQogCi0gICAgZGVzY3Jp
cHRpb24oIlRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25z
IGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nl
c3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICAKLSAgICAgICAgdmFyIHRleHQgPSBhY2Nl
c3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAg
ICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBub2RlLgotICAgICAgICB0ZXh0ID0gdGV4dC5jaGls
ZEF0SW5kZXgoMCk7Ci0gICAgICAgIAorICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMg
dGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBj
b3JyZWN0bHkuXG5cbiI7CisKKyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAg
ICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0
aGlzIHJhbmdlLgogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSIsICI0Iik7Ci0gICAgICAgIAorICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFu
Z2UpIiwgIjQiKTsKKwogICAgICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICB2YXIgZW5k
TWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxk
QmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIp
LmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFs
KHRleHQpIiwgInRydWUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRy
dWUiKTsKKwogICAgICAgICAvLyBDaGVjayBuZXh0IHRleHQgbWFya2VyLiAoQWR2YW5jZSA1IGNo
YXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgdmFyIGN1cnJlbnRNYXJr
ZXIsIHByZXZpb3VzTWFya2VyLCBtYXJrZXJSYW5nZTs7CiAgICAgICAgIHZhciByZXN1bHQgPSBm
b3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7CkBAIC02Miw1OCAr
ODAsNTcgQEAgZgogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3Vz
TWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIm5ld2xpbmUiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAg
ICAgICAgLy8gQWR2YW5jZSBvbmUgbW9yZSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmRlIGF0ICJ0
IiBpbiAidGV4dDEiLgogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2Vy
LCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQu
cHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAg
ICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOwotICAgICAgICAKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIid0JyIpOworCiAgICAgICAgIC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLiAo
VHJhdmVyc2UgYmFja3dhcmRzIG9uZSBjaGFyYWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikK
ICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyLCB0ZXh0KTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFu
Z2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJu
ZXdsaW5lIik7CisKICAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJh
Y3RlciwgaXQgd2lsbCBsYW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCiAgICAg
ICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
dGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAg
ICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0g
dGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyKTsKICAgICAgICAgaWYgKGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9
PSAibWFjIikKLSAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnICsgbmV3bGluZSIpOworICAgICAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
Iid0JyArIG5ld2xpbmUiKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKKyAgICAg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICIndCciKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJl
cGxhY2VkIG5vZGUKICAgICAgICAgdmFyIHRleHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MiIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJh
bmdlMiA9IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dDIpOwotICAgICAgICBz
aG91bGRCZSgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwg
IjUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVu
Z3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUiKTsKICAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5m
cm9tQ2hhckNvZGUoNjU1MzIpLCAiW0FUVEFDSE1FTlRdIik7Ci0gICAgICAgIGRlYnVnKCJPYmpl
Y3Qgc3RyaW5nIGZvciByYW5nZTogIiArIHN0cik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQg
Kz0gYE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiAke3N0cn1cbmA7CisKICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFy
a2VyUmFuZ2UyKTsKICAgICAgICAgLy8gQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFu
ZCBhdCAiZCIuCiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIGN1
cnJlbnRNYXJrZXIsIHRleHQyKTsKICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJl
dmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAg
bWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFy
a2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2QnIik7Ci0gICAgICAgIAorICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidkJyIpOworCiAgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyA2IGNoYXJhY3Rl
cnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQxIi4KICAgICAg
ICAgcmVzdWx0ID0gYmFja3dhcmRzKDYsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0
ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAg
ICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0g
dGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1h
cmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIiwgIicxJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsK
KwogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRU
ZXh0TWFya2VyL3ByZXZpb3VzVGV4dE1hcmtlciBzaG91bGQgc3RpbGwgd29yay4KLSAgICAgICAg
dmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0MyIpOwotICAgICAgICB0ZXh0MyA9IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKLSAgICAg
ICAgCisgICAgICAgIHZhciB0ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dDMiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQWR2
YW5jZSB0byBsYW5kIGF0IHVzZXItc2VsZWN0Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtl
cjEsIG1hcmtlcjI7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMTg7IGkrKykgewpAQCAt
MTI1LDM0ICsxNDIsMzEgQEAgZgogICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50
TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidlY3QnIik7CisgICAgICAgIG91dHB1
dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ2VjdCciKTsKICAgICAgICAgLy8gSXRlcmF0ZSBiYWNrd2FyZHMgdGhlIHNlY29uZCBtYXJr
ZXIgZm9yIDYgY2hhcmFjdGVycywgdGhlIHJhbmdlIHNob3VsZCBiZSAic2VsIgotICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDY7IGkrKykKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRN
YXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJl
bnRNYXJrZXI7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3NlbCciKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInc2VsJyIpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcGFzc3dvcmQg
ZmllbGQuCiAgICAgICAgIHZhciBwc3cgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoInBzdyIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMyA9IHBz
dy50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHBzdyk7CiAgICAgICAgIHZhciBzdGFydCA9IHBz
dy5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMyk7Ci0g
ICAgICAgIHNob3VsZEJlVHJ1ZSgiIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnQpIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCIhcHN3LmFj
Y2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkiLCAidHJ1ZSIpOworCiAgICAg
ICAgIC8vIENoZWNrIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgY2FsbCB3aWxsIHNraXAgcGFz
c3dvcmQgZmllbGQKICAgICAgICAgLy8gV2Ugc3RhcnQgZnJvbSB0ZXh0MiBhbmQgYWR2YW5jZSA2
IGNoYXJhY3RlcnMsIGl0IHNob3VsZCBza2lwIHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgbGFuZCBv
biB0ZXh0My4KICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZv
clRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKTsKLSAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAg
ICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1h
cmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsK
KyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIiwgInRydWUiKTsKICAgICAg
ICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBtYXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIg
bm9kZS4KICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihj
dXJyZW50TWFya2VyKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0
Mi5jaGlsZEF0SW5kZXgoMikpIik7Ci0gICAgICAgIAotICAgICAgICAKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSIsICJ0cnVlIik7CisKICAg
ICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGV4dCBub2RlIHdpdGggbGluZSBicmVha3MsIHdlIGNh
biBnbyB0aHJvdWdoIGl0IHdpdGggbmV4dC9wcmV2aW91cyBjYWxsLgogICAgICAgICB0ZXh0ID0g
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOwog
ICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQo
dGV4dCk7CkBAIC0xNjMsODcgKzE3Nyw2NCBAQCBmCiAgICAgICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01h
cmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZiciKTsKLSAgICAgICAgCisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInZiciKTsKKwogICAgICAgICBlbmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9
IGVuZE1hcmtlcjsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2Vy
ID0gdGV4dC5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAg
ICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRN
YXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ2EnIik7CisKICAgICAgICAgLy8gVGVzdCBjYXNlIHdpdGggZW1vamkuCiAgICAgICAg
IHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRl
eHQ1Iik7CiAgICAgICAgIHZhciBlbW9qaVRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtl
clJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CisgICAgICAgIG91dHB1
dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJh
bmdlKSIsICI0Iik7CiAgICAgICAgIC8vIE1ha2Ugc3VyZSBuYXZpZ2F0aW5nIG5leHQvcHJldmlv
dXMgdGV4dCBtYXJrZXIgaXMgYnkgZW1vamkuCiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5z
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoZW1vamlUZXh0TWFya2VyUmFuZ2UpOwog
ICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDIsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwg
dGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIiwgIifwn5iPJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iPJyIpOwogICAgICAgICByZXN1bHQg
PSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwg
Iifwn5iDJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YgyciKTsKKwogICAgICAgICAvLyBU
ZXN0IGNhc2Ugd2l0aCBjb2xsYXBzZWQgd2hpdGVzcGFjZS4KICAgICAgICAgdGV4dCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDYiKTsKICAgICAg
ICAgdmFyIGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkiLCAiMyIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRX
aGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMiKTsKICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0
LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShjb2xsYXBzZWRXaGl0ZXNwYWNlTWFy
a2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBz
dGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOwogICAgICAgICBy
ZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQp
OwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICInICciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgx
LCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CisgICAg
ICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkiLCAiJ2InIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlv
dXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAg
ICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkiLCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIpOworCiAgICAg
ICAgIC8vIFRlc3QgY2FzZSB3aXRoIHJlcGxhY2VkIGVsZW1lbnRzIChzaG91bGQgdXNlIG9iamVj
dCByZXBsYWNlbWVudCBjaGFyYWN0ZXIpLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NyIpOwogICAgICAgICB0ZXh0TWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2Up
IiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVGRkZD
ZmlsZSciKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9y
VGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKSB7CiAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJr
ZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICInXHVGRkZDJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9
CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHBy
ZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CisgICAgICAg
IG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICInXHVGRkZDJyIpOwogCi0gICAgICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHBy
ZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2Vy
ID0gY3VycmVudE1hcmtlcjsKLSAgICAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5l
eHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAg
ICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAg
ICAgfQotICAgICAgICAKLSAgICAgICAgZnVuY3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91
c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9i
ai5wcmV2aW91c1RleHRNYXJrZXIocHJldmlvdXNNYXJrZXIpOwotICAgICAgICAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91
czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtl
cgotICAgICAgICAgICAgfTsKLSAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVi
dWcob3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtl
ci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3Vz
LW5leHQtZXhwZWN0ZWQudHh0CmluZGV4IDI5MjY0MWE3ZTAzOC4uNWEwYTMyYzI4ZDcwIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtl
ci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2
aW91cy1uZXh0LWV4cGVjdGVkLnR4dApAQCAtMSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQot
YyAgZAotCi1jYW4ndCBzZWxlY3QKLWFiYyBkZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9m
aWxlCi0KIFRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25z
IGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMg
NAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtl
cikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRG
b3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1Mg
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JyArIG5ld2xp
bmUKLVBBU1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlz
IDUKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09
IDQKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFy
a2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3
bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSAndCcgKyBuZXdsaW5lCitQQVNTOiB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1h
cmtlclJhbmdlMikgPT09IDUKIE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5U
XSBkCi1QQVNTIHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2QnCi1QQVNTIHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
JzEnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2VjdCcKLVBBU1MgdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAnc2VsJwotUEFTUyAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFy
dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5j
aGlsZEF0SW5kZXgoMikpIGlzIHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIGlzICdmJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkgaXMgJ2EnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVt
b2ppVGV4dE1hcmtlclJhbmdlKSBpcyA0Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkgaXMgJ/CfmI8nCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5j
dXJyZW50KSkgaXMgJ/CfmIMnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxh
cHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIGlzICdiJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IGlzICcgJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdh
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlz
ICdhdWRpb++/vGZpbGUnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSBpcyAn77+8JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgaXMgJ++/vCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkgPT09ICdkJworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSA9PT0gJzEnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpID09PSAnZWN0JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09
PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BB
U1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0g
NAorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8n
CitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycK
K1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSkgPT09IDMKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50
KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9
PT0gJyAnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn
YicKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJwor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVk
aW/vv7xmaWxlJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpID09PSAn77+8JworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpID09PSAn77+8JworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRF
U1QgQ09NUExFVEUKIAorCisKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464545</attachid>
            <date>2023-01-18 13:53:39 -0800</date>
            <delta_ts>2023-01-18 14:32:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230118165337.patch</filename>
            <type>text/plain</type>
            <size>106369</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA4ZDRmMWE2NmViZmM5MGViZDA2YjE1NGZkMTgyYjE3ZWNiMDUyYjViIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3dzIGZvciB0aGUgcmV0cmlldmFsIG9mIHRoZSBUZXh0TWFy
a2VyIHByb3BlcnRpZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3VyY2UgdG8gdGhlIHVuZGVybHlp
bmcgRE9NIGFuZCBSZW5kZXJUcmVlIG9iamVjdHMuCgpUaGUgZm9sbG93aW5nIE1hYyBBWCBBUEkg
YXR0cmlidXRlcyBhcmUgbm93IGltcGxlbWVudGVkIHdpdGhvdXQgaGl0dGluZyB0aGUgbWFpbiB0
aHJlYWQgdXNpbmcgQVhUZXh0TWFya2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZToKQVhVSUVsZW1l
bnRGb3JUZXh0TWFya2VyCkFYVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcnMKQVhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UKQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYW4gdXBkYXRlIG9mIHNldmVyYWwgbGF5b3V0
IHRlc3RzIHJlbGF0ZWQgdG8gVGV4dE1hcmtlcnMuCi0tLQogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgICB8IDE4OCArKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMjggKy0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxNjUgKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDE3OCArKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaCAgICB8
ICAgNyArLQogLi4uL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0gIHwg
IDkwICsrKysrKysrCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
ICAgfCAgNDAgKystLQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0g
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
ICAgfCAxMDEgKysrLS0tLS0tCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dCAgfCAgMTkgKy0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAg
ICAgICAgICB8ICA1MSArKy0tLQogLi4ucmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0IHwgIDE1ICstCiAuLi5zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVt
ZW50Lmh0bWwgfCAgNjMgKysrLS0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhw
ZWN0ZWQudHh0ICAgfCAyMTAgKysrKysrLS0tLS0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXIt
cmFuZ2UtZm9yLXJhbmdlLmh0bWwgICAgICAgfCAgNDggKystLQogLi4uLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlv
bi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgfCAgMzUgKystCiAuLi4vdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1leHBlY3RlZC50eHQgICAgfCAgNzggKysrLS0tLQogLi4uL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQuaHRtbCAgICAgICAgICAgIHwgMTc1ICsrKysrKystLS0tLS0tLQogLi4u
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrKy0tLS0K
IDIzIGZpbGVzIGNoYW5nZWQsIDkwNyBpbnNlcnRpb25zKCspLCA2OTcgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJr
ZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRleHRNYXJrZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYzMzcz
NmM4NTI5ZS4uNTU1NTNkMDEyNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBA
IE1vZHVsZXMvd2VieHIvWFJTZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2Uu
Y3BwCiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjYzNDk5YjU2MTA5Li4yMDgxZTBkMTgwY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJL
aXRCYWRnZVN5c3RlbUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNl
TWFuYWdlckNvY29hLm1tCithY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NTlkYTIyMTExNy4uYjE1MDM4ZDI4ODc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NTcxLDYgKzQ1NzEsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyog
Q29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTEx
OEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVE
Rjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJG
MzI3MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlD
NzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChXZWFrLCApOyB9OyB9OwogCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThB
REM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAv
KiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUzMiw2ICsx
NjUzMyw5IEBACiAJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVj
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBh
dGggPSBtYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzA4RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBF
MjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
WFRleHRNYXJrZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYz
MjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNl
ZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0g
dXNyL2xpYi9saWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJ
CUMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29y
LnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE0OTgsNiArMjE1MDIsNyBAQAog
CQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBE
MkQzIC8qIGNvY29hICovLAogCQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8s
CiAJCQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQky
OUE4MTIwNTBGQkI5QjUyMDA1MTAyOTMgLyogbWFjICovLApAQCAtMjE1NzQsNiArMjE1NzksOCBA
QAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5
ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4
MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEEx
MjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkz
NzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0
MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlDMEU4QURDNDI5
NEI1QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAz
MDAyOEM1OTIgLyogRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCkBAIC0zMTY0Miw2ICsz
MTY0OSwxNCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQz
IC8qIEFYVGV4dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2
MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0zNTIxNyw2ICszNTIzMiw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFY
SXNvbGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2
OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJC
OUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIw
OEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0Zv
cndhcmRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlZWQ0ODgxZjVmYTAuLjA5OWYzYzJkMDA0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUg
IkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFRl
eHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmgiCkBAIC0yMjEzLDcgKzIyMTQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0
b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKICAgICBtX2NvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGUgPSBudWxscHRyOwogfQogCi1WaXNpYmxlUG9zaXRpb24gQVhPYmplY3RD
YWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRl
eHRNYXJrZXJEYXRhKQorVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXJEYXRhKGNvbnN0IFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0
YSkKIHsKICAgICBpZiAoIWlzTm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpCiAgICAgICAg
IHx8IHRleHRNYXJrZXJEYXRhLm5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQpAQCAtMjIyOSw3ICsy
MjMwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJgogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgYXV0byogY2FjaGUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7Ci0g
ICAgaWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyh0ZXh0TWFya2VyRGF0
YS5heElEKSkKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRl
eHRNYXJrZXJEYXRhLmF4T2JqZWN0SUQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBy
ZXR1cm4gdmlzaWJsZVBvc2l0aW9uOwpAQCAtMjIzNywxMyArMjIzOCwxMCBAQCBWaXNpYmxlUG9z
aXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4
dE1hcmtlckRhdGEmCiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJP
ZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEpCiB7
Ci0gICAgaWYgKCFpc05vZGVJblVzZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKLSAgICAgICAgcmV0
dXJuIENoYXJhY3Rlck9mZnNldCgpOwotICAgIAotICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25v
cmVkKQotICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgQ2hhcmFj
dGVyT2Zmc2V0IHJlc3VsdCA9IENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YS5ub2RlLCB0
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0
ZXJPZmZzZXQpOworICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8ICFpc05vZGVJblVz
ZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoYXJh
Y3Rlck9mZnNldCByZXN1bHQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtlckRhdGEuY2hh
cmFjdGVyU3RhcnQsIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCk7CiAgICAgLy8gV2hl
biB3ZSBhcmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBWaXNpYmxlUG9zaXRpb24gaXMgdXBzdHJl
YW0sIGl0IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lLgogICAgIC8vIFdlIHVzZSB0aGUgcHJldmlvdXMgQ2hhcmFjdGVyT2Zmc2V0IHNvIHRo
YXQgaXQgd2lsbCBtYXRjaCB0aGUgUmFuZ2UuCiAgICAgaWYgKHRleHRNYXJrZXJEYXRhLmFmZmlu
aXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKQEAgLTI1MDcsMzcgKzI1MDUsMTggQEAgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRDaGFy
YWN0ZXJPZmZzZXRzKGNvbnMKICAgICByZXR1cm4geyB7ICpzdGFydCwgKmVuZCB9IH07CiB9CiAK
LXZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0
KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7Ci0gICAgICAgIHRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21O
b2RlKTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENvbnZl
cnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGludCB2cE9mZnNldCA9IDA7Ci0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2Jq
ZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRl
eHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJ
bmRleDsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAotICAg
IHRoaXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAgICAg
JiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmNoYXJhY3Rlck9mZnNldC5ub2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciwgeyB9LCAw
LCAwLCB0cnVlIH07CisKKyAgICBzZXROb2RlSW5Vc2UoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpOwor
ICAgIHJldHVybiB7IHRoaXMsIGNoYXJhY3Rlck9mZnNldC5ub2RlLCB2aXNpYmxlUG9zaXRpb25G
cm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCksCisgICAgICAgIGNoYXJhY3Rlck9m
ZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0LCBmYWxzZSB9OwogfQogCiBD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZv
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0LCBib29sIGVudGVy
VGV4dENvbnRyb2xzKQpAQCAtMjU3MSwxNyArMjU1MCwxMiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhP
YmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbgogICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9mZnNl
dCwgb3B0aW9ucywgc3RheVdpdGhpblJhbmdlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpz
dGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtl
ckRhdGEsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQorVGV4dE1hcmtl
ckRhdGEgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7Ci0gICAgLy8gVGhpcyBtZW1v
cnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0
ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNr
eSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0g
ICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2Yo
VGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBpc1N0YXJ0KTsK
KyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JS
YW5nZShyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rl
ck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rl
ck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50IG9mZnNldCwgVHJhdmVyc2VP
cHRpb24gb3B0aW9uKQpAQCAtMjYzMCwxNSArMjYwNCw2IEBAIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmIG5vZGUsIGlu
dCBvCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hl
Ojp0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1h
cmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQotewotICAg
IC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2Vy
RGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6
IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJp
dmlhbCB0eXBlLgotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRh
KSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0KLSAgICBzZXRUZXh0TWFya2VyRGF0YVdp
dGhDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci19Ci0K
IGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgcHJldmlvdXMsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgbmV4dCkKIHsKICAgICAvLyBN
YXRjaCB0aGUgYmVoYXZpb3Igb2YgVmlzaWJsZVBvc2l0aW9uLCB3ZSBzaG91bGQgc2tpcCB0aGUg
bm9kZSBib3VuZGFyeSB3aGVuIHRoZXJlJ3Mgbm8gdmlzdWFsIHNwYWNlIG9yIG5ldyBsaW5lIGNo
YXJhY3Rlci4KQEAgLTI2NTcsNDEgKzI2MjIsNTcgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpzaG91
bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29uc3QgQ2gK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
a2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisKK1RleHRN
YXJrZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBDaGFy
YWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0ZXJPZmZzZXQg
cHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0YTsKKyAg
ICBhdXRvIG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBwcmV2aW91cyA9IGNoYXJh
Y3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAgICAgICAg
c2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZz
ZXQobmV4dCwgZmFsc2UpOwogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZpb3Vz
LCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQsIGZh
bHNlKTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIG5leHQpOwotICAgICAgICAKKyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KG5leHQpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIG5leHQg
Q2hhcmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAgICAgICAgIGlmICgh
bGVuZ3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHByZXZpb3Vz
LCBuZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7CiAgICAgICAgIHBy
ZXZpb3VzID0gbmV4dDsKLSAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8IHNo
b3VsZENvbnRpbnVlKTsKKyAgICB9IHdoaWxlIChkYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGlu
dWUpOworICAgIHJldHVybiBkYXRhOworfQorCitBWFRleHRNYXJrZXIgQVhPYmplY3RDYWNoZTo6
bmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJU
KG1faWQgPT0gbWFya2VyLnRyZWVJRCgpKTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JO
ZXh0Q2hhcmFjdGVyT2Zmc2V0KG1hcmtlcik7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4
dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorVGV4
dE1hcmtlckRhdGEgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAg
ICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7Ci0gICAgQ2hhcmFj
dGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0
YTsKKyAgICBhdXRvIHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OworICAgIGF1dG8gbmV4dCA9
IGNoYXJhY3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAg
ICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgcHJldmlvdXMgPSBwcmV2aW91
c0NoYXJhY3Rlck9mZnNldChwcmV2aW91cywgZmFsc2UpOwotICAgICAgICB0ZXh0TWFya2VyRGF0
YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgcHJldmlvdXMpOwotICAgICAgICAK
KyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3Vz
KTsKKwogICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQg
aWYgaXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFsZW5ndGhGb3JSYW5nZShy
YW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMsIG5leHQpKSkKICAgICAg
ICAgICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgbmV4dCA9IHByZXZpb3VzOwot
ICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOwor
ICAgIH0gd2hpbGUgKGRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CisgICAgcmV0dXJu
IGRhdGE7Cit9CisKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpwcmV2aW91c1RleHRNYXJr
ZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJUKG1faWQgPT0gbWFy
a2VyLnRyZWVJRCgpKTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJh
Y3Rlck9mZnNldChtYXJrZXIpOwogfQogCiBOb2RlKiBBWE9iamVjdENhY2hlOjpuZXh0Tm9kZShO
b2RlKiBub2RlKSBjb25zdApAQCAtMjc4OSw3OSArMjc3MCw0NCBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRhdGEo
VGV4dE1hcgogICAgIHJldHVybiB0aGlzLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKQorc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24p
CiB7Ci0gICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCisgICAgaWYgKHZpc2libGVQb3NpdGlv
bi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFBvc2l0aW9u
IGRlZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogZG9tTm9k
ZSA9IGRlZXBQb3MuYW5jaG9yTm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2RlKTsKLSAgICBpZiAo
IWRvbU5vZGUpCisgICAgUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKTsKKyAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAg
IEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICBpZiAo
aXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVy
cmluZyB0byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCiAg
ICAgLy8gc2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zmc2V0IHNvIHRo
YXQgdGhlIG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCi0gICAgQ2hhcmFjdGVy
T2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRp
b24odmlzaWJsZVBvcyk7Ci0gICAgaWYgKGRlZXBQb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9u
OjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgZGVlcFBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRp
b246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKSB7Ci0gICAgICAgIFRleHRNYXJrZXJEYXRhIHRl
eHRNYXJrZXJEYXRhOwotICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHRleHRNYXJr
ZXJEYXRhOwotICAgIH0KLQotICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IGZvciB0aGlzIG5vZGUKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvbU5vZGUt
PmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9
IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKLQotICAgIC8vIFRoaXMgbWVtb3J5IG11c3Qg
YmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZv
ciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJh
ZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgotICAgIFRleHRN
YXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4o
JnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAg
dGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0
YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSBkZWVwUG9zLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYW5jaG9yVHlwZSA9
IGRlZXBQb3MuYW5jaG9yVHlwZSgpOwotICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlz
aWJsZVBvcy5hZmZpbml0eSgpOworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVy
T2Zmc2V0RnJvbVZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAgIGlmIChwb3Np
dGlvbi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBw
b3NpdGlvbi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVu
KQorICAgICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKIAotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJh
Y3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRl
eCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwotCi0gICAgY2FjaGUtPnNldE5vZGVJblVz
ZShkb21Ob2RlKTsKLQotICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKKyAgICBhdXRvKiBjYWNo
ZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGNhY2hlLT5zZXROb2Rl
SW5Vc2Uobm9kZSk7CisgICAgcmV0dXJuIHsgeyBjYWNoZSwgbm9kZSwgdmlzaWJsZVBvc2l0aW9u
LAorICAgICAgICBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9m
ZnNldCwgZmFsc2UgfSB9OwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0LgorLy8gVGhp
cyBmdW5jdGlvbiBleGlzdHMgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQg
YSBzeW5jaHJvbm91cyBsYXlvdXQuCiBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KHRleHRDb250cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRyb2wuZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVu
dCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hl
LT5nZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwotICAgIGlmICghb2JqKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28g
aW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZh
bGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4
dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRh
dGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0
YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4
dENvbnRyb2w7Ci0KICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7Ci0KLSAg
ICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAgcmV0dXJuIHsgeyBjYWNoZSwgJnRleHRDb250
cm9sLCB7IH0gfSB9OwogfQogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dENo
YXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgYm9v
bCBpZ25vcmVOZXh0Tm9kZVN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAppbmRleCBiY2RmM2JhOTg2YjMuLjExYjI5MWEwYmJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRl
eHRNYXJrZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNz
IEhUTUxUYWJsZUVsZW1lbnQ7CkBAIC01NiwxOSArNTcsNyBAQCBjbGFzcyBSZW5kZXJUZXh0Owog
Y2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsK
LQotc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKLSAgICBBWElEIGF4SUQ7Ci0KLSAgICBOb2RlKiBu
b2RlIHsgbnVsbHB0ciB9OwotICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKLSAgICBQb3NpdGlv
bjo6QW5jaG9yVHlwZSBhbmNob3JUeXBlIHsgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvciB9OwotICAgIEFmZmluaXR5IGFmZmluaXR5IHsgQWZmaW5pdHk6OkRvd25zdHJlYW0gfTsK
LQotICAgIGludCBjaGFyYWN0ZXJTdGFydEluZGV4IHsgMCB9OwotICAgIGludCBjaGFyYWN0ZXJP
ZmZzZXQgeyAwIH07Ci0gICAgYm9vbCBpZ25vcmVkIHsgZmFsc2UgfTsKLX07CitzdHJ1Y3QgVGV4
dE1hcmtlckRhdGE7CiAKIHN0cnVjdCBDaGFyYWN0ZXJPZmZzZXQgewogICAgIE5vZGUqIG5vZGU7
CkBAIC0yMzYsMTUgKzIyNSwxNyBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0
aWVzLgogICAgIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogICAgIHN0ZDo6b3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENv
bnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKTsKLSAgICB2b2lkIHRleHRNYXJrZXJE
YXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0Jik7Ci0gICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4
dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICB2b2lkIHRleHRNYXJr
ZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
VGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKKyAgICBUZXh0TWFya2VyRGF0YSB0ZXh0
TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyIG5leHRUZXh0TWFya2VyKGNv
bnN0IEFYVGV4dE1hcmtlciYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhRm9y
UHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhU
ZXh0TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoY29uc3QgVGV4
dE1hcmtlckRhdGEmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4
dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICAvLyBVc2UgaWdub3JlTmV4dE5vZGVT
dGFydC9pZ25vcmVQcmV2aW91c05vZGVFbmQgdG8gZGV0ZXJtaW5lIHRoZSBiZWhhdmlvciB3aGVu
IHdlIGFyZSBhdCBub2RlIGJvdW5kYXJ5LiAKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZU5leHROb2RlU3Rh
cnQgPSB0cnVlKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCBpZ25vcmVQcmV2aW91c05vZGVFbmQgPSB0cnVl
KTsKLSAgICB2b2lkIHN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJE
YXRhJiwgY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sKTsKKyAgICBUZXh0TWFya2VyRGF0YSBzdGFy
dE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wpOwog
ICAgIENoYXJhY3Rlck9mZnNldCBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmLCBib29sLCBib29sIGVudGVyVGV4dENvbnRyb2xzID0gZmFsc2UpOwog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2Vy
RGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKQEAgLTQ1Niw3ICs0NDcsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQ2hhcmFjdGVyT2Zmc2V0IHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJiwgaW50LCBUcmF2ZXJzZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCwgYm9vbCBz
dGF5V2l0aGluUmFuZ2UgPSBmYWxzZSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hh
cmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJik7Ci0gICAgdm9pZCBzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJP
ZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hh
cjMyIGNoYXJhY3RlckFmdGVyKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIg
Y2hhcmFjdGVyQmVmb3JlKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNl
T3B0aW9uID0gVHJhdmVyc2VPcHRpb25EZWZhdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjQ2OTU1YmExYTMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCisK
KyNpbmNsdWRlICJBWFRyZWVTdG9yZS5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRl
eHRNYXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3Np
dGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKHZpc2libGVQ
b3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZSogbm9kZSA9IHZp
c2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKTsKKyAgICBBU1NFUlQo
bm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNo
ZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRh
dGFGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKSkKKyAgICAgICAgbV9kYXRhID0g
KmRhdGE7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoYXV0byogY2FjaGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZS0+ZG9jdW1lbnQoKS5heE9i
amVjdENhY2hlKCkpCisgICAgICAgIG1fZGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNo
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworfQorCitBWFRleHRNYXJrZXI6Om9wZXJh
dG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGF1dG8qIGNhY2hlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVG
b3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIGNhY2hlID8gY2FjaGUtPnZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXJEYXRhKG1fZGF0YSkgOiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKworQVhU
ZXh0TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG1fZGF0YS5u
b2RlLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnQsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAg
IC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlz
IHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUg
cHJldmlvdXMgbGluZS4KKyAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNl
dCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5p
dHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKSB7CisgICAgICAgIGlmIChhdXRvIGNhY2hlID0gQVhU
cmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVGb3JJRChtX2RhdGEuYXhUcmVlSUQoKSkpCisg
ICAgICAgICAgICByZXR1cm4gY2FjaGUtPnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwg
ZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBWENvcmVPYmplY3QqIEFY
VGV4dE1hcmtlcjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0cmVlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RD
YWNoZT46OnRyZWVGb3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIHRyZWUgPyB0cmVlLT5vYmpl
Y3RGb3JJRChvYmplY3RJRCgpKSA6IG51bGxwdHI7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJV
R0dJTkcpCitTdHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sK
KyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisgICAgYXV0
byBzZXBhcmF0b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICAidHJl
ZUlEICIsIHRyZWVJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9i
amVjdElEICIsIG9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpCisgICAgICAgICwgc2VwYXJhdG9y
LCBub2RlKCktPmRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9mZnNl
dCAiLCBtX2RhdGEub2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiQW5jaG9yVHlwZSAiLCBt
X2RhdGEuYW5jaG9yVHlwZQorICAgICAgICAsIHNlcGFyYXRvciwgIkFmZmluaXR5ICIsIG1fZGF0
YS5hZmZpbml0eQorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3RlclN0YXJ0ICIsIG1fZGF0
YS5jaGFyYWN0ZXJTdGFydAorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAi
LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVk
ICIsIGlzSWdub3JlZCgpCisgICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6
QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorICAg
IDogbV9zdGFydChyYW5nZS5zdGFydCkKKyAgICAsIG1fZW5kKHJhbmdlLmVuZCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFy
a2VyUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvKiBjYWNoZSA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXJ0
ID0gQVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2Uo
KnJhbmdlLCB0cnVlKSk7CisgICAgbV9lbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUtPnN0YXJ0T3JF
bmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIGZhbHNlKSk7Cit9CisKK0FYVGV4dE1h
cmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShjb25zdCBBWFRleHRNYXJrZXImIHMsIGNvbnN0
IEFYVGV4dE1hcmtlciYgZSkKKyAgICA6IG1fc3RhcnQocykKKyAgICAsIG1fZW5kKGUpCit7Cit9
CisKK0FYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBtX3N0YXJ0
LCBtX2VuZCB9OworfQorCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJS
YW5nZTo6c2ltcGxlUmFuZ2UoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBhdXRvIHN0YXJ0Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fc3Rh
cnQpOworICAgIGF1dG8gZW5kQm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZW5k
KTsKKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2ludCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7ICpzdGFydEJvdW5kYXJ5
UG9pbnQsICplbmRCb3VuZGFyeVBvaW50IH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi40Y2QwYzg3MmRmNjgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0w
LDAgKzEsMTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBUZXh0TWFya2Vy
RGF0YSB7CisgICAgdW5zaWduZWQgdHJlZUlEOworICAgIHVuc2lnbmVkIG9iamVjdElEOworCisg
ICAgTm9kZSogbm9kZTsKKyAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUG9zaXRpb246OkFuY2hv
clR5cGUgYW5jaG9yVHlwZTsKKyAgICBBZmZpbml0eSBhZmZpbml0eTsKKworICAgIHVuc2lnbmVk
IGNoYXJhY3RlclN0YXJ0OworICAgIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldDsKKyAgICBib29s
IGlnbm9yZWQ7CisKKyAgICBUZXh0TWFya2VyRGF0YSgpCisgICAgeworICAgICAgICBtZW1zZXQo
c3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAg
ICBUZXh0TWFya2VyRGF0YShBWElEIGF4VHJlZUlELCBBWElEIGF4T2JqZWN0SUQsCisgICAgICAg
IE5vZGUqIG5vZGVQYXJhbSA9IG51bGxwdHIsIHVuc2lnbmVkIG9mZnNldFBhcmFtID0gMCwKKyAg
ICAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZVBhcmFtID0gUG9zaXRpb246OlBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvciwKKyAgICAgICAgQWZmaW5pdHkgYWZmaW5pdHlQYXJhbSA9
IEFmZmluaXR5OjpEb3duc3RyZWFtLAorICAgICAgICB1bnNpZ25lZCBjaGFyU3RhcnQgPSAwLCB1
bnNpZ25lZCBjaGFyT2Zmc2V0ID0gMCwgYm9vbCBpZ25vcmVkUGFyYW0gPSBmYWxzZSkKKyAgICB7
CisgICAgICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAsIHNpemVvZigqdGhp
cykpOworICAgICAgICB0cmVlSUQgPSBheFRyZWVJRC50b1VJbnQ2NCgpOworICAgICAgICBvYmpl
Y3RJRCA9IGF4T2JqZWN0SUQudG9VSW50NjQoKTsKKyAgICAgICAgbm9kZSA9IG5vZGVQYXJhbTsK
KyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0UGFyYW07CisgICAgICAgIGFuY2hvclR5cGUgPSBhbmNo
b3JUeXBlUGFyYW07CisgICAgICAgIGFmZmluaXR5ID0gYWZmaW5pdHlQYXJhbTsKKyAgICAgICAg
Y2hhcmFjdGVyU3RhcnQgPSBjaGFyU3RhcnQ7CisgICAgICAgIGNoYXJhY3Rlck9mZnNldCA9IGNo
YXJPZmZzZXQ7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVkUGFyYW07CisgICAgfQorCisgICAg
VGV4dE1hcmtlckRhdGEoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5vZGVQYXJhbSwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCisgICAgICAgIGludCBjaGFyU3Rh
cnQgPSAwLCBpbnQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZFBhcmFtID0gZmFsc2UpCisg
ICAgeworICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2Yo
KnRoaXMpKTsKKyAgICAgICAgaWYgKGNhY2hlKSB7CisgICAgICAgICAgICB0cmVlSUQgPSBjYWNo
ZS0+dHJlZUlEKCkudG9VSW50NjQoKTsKKworICAgICAgICAgICAgaWYgKFJlZlB0ciBvYmplY3Qg
PSBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZVBhcmFtKSkKKyAgICAgICAgICAgICAgICBvYmplY3RJ
RCA9IG9iamVjdC0+b2JqZWN0SUQoKS50b1VJbnQ2NCgpOworICAgICAgICB9CisKKyAgICAgICAg
bm9kZSA9IG5vZGVQYXJhbTsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBvZmZzZXQgPSAhdmlzaWJsZVBvc2l0aW9uLmlz
TnVsbCgpID8gc3RkOjptYXgocG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMCkg
OiAwOworICAgICAgICBhbmNob3JUeXBlID0gcG9zaXRpb24uYW5jaG9yVHlwZSgpOworICAgICAg
ICBhZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOworCisgICAgICAgIGNoYXJh
Y3RlclN0YXJ0ID0gc3RkOjptYXgoY2hhclN0YXJ0LCAwKTsKKyAgICAgICAgY2hhcmFjdGVyT2Zm
c2V0ID0gc3RkOjptYXgoY2hhck9mZnNldCwgMCk7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVk
UGFyYW07CisgICAgfQorCisgICAgQVhJRCBheFRyZWVJRCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8QVhJRFR5cGU+KHRyZWVJRCk7CisgICAgfQor
CisgICAgQVhJRCBheE9iamVjdElEKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
T2JqZWN0SWRlbnRpZmllcjxBWElEVHlwZT4ob2JqZWN0SUQpOworICAgIH0KK307CisKKyNpZiBQ
TEFURk9STShNQUMpCit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJEYXRhID0gQVhUZXh0TWFya2Vy
UmVmOworI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3VzaW5nIFBsYXRmb3JtVGV4dE1hcmtl
ckRhdGEgPSBOU0RhdGEgKjs7CisjZW5kaWYKKworY2xhc3MgQVhUZXh0TWFya2VyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3MgQVhUZXh0TWFya2VyUmFu
Z2U7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzCisgICAgQVhUZXh0TWFya2VyKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpOworICAgIEFYVGV4dE1hcmtlcihjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKTsKKyAgICBBWFRleHRNYXJrZXIoY29uc3QgVGV4dE1hcmtlckRhdGEmIGRhdGEpCisgICAg
ICAgIDogbV9kYXRhKGRhdGEpCisgICAgeyB9CisgICAgQVhUZXh0TWFya2VyKFRleHRNYXJrZXJE
YXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7IH0KKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBBWFRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyRGF0YSk7CisjZW5k
aWYKKyAgICBBWFRleHRNYXJrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9u
KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3Q7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1UZXh0TWFya2VyRGF0YT4gcGxh
dGZvcm1EYXRhKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGxhdGZvcm1UZXh0TWFya2VyRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtRGF0YSgpLmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRpZgor
CisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXhUcmVlSUQoKTsgfQor
ICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXhPYmplY3RJRCgpOyB9
CisgICAgQVhDb3JlT2JqZWN0KiBvYmplY3QoKSBjb25zdDsKKworLy8gICAgVGV4dE1hcmtlckRh
dGEgY29uc3QmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm5vZGU7IH0KKyAgICBib29sIGlzSWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pZ25vcmVkOyB9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXRyZWVJRCgpLmlzVmFsaWQo
KSB8fCAhb2JqZWN0SUQoKS5pc1ZhbGlkKCk7IH0KKyAgICBUZXh0TWFya2VyRGF0YSBtX2RhdGE7
Cit9OworCitjbGFzcyBBWFRleHRNYXJrZXJSYW5nZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzLgorICAgIEFYVGV4dE1hcmtlclJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2Uo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKyAgICBBWFRleHRNYXJrZXJSYW5n
ZShjb25zdCBBWFRleHRNYXJrZXImLCBjb25zdCBBWFRleHRNYXJrZXImKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworI2Vu
ZGlmCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIW1fc3RhcnQuaXNOdWxsKCkgJiYgIW1fZW5kLmlzTnVsbCgp
OyB9CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNvbnN0OworCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIFJldGFpblB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gcGxhdGZvcm1EYXRh
KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmFuZ2VSZWYoKSBjb25zdCB7IHJl
dHVybiBwbGF0Zm9ybURhdGEoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFYVGV4
dE1hcmtlciBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KKyAgICBBWFRleHRNYXJr
ZXIgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KK3ByaXZhdGU6CisgICAgQVhUZXh0TWFy
a2VyIG1fc3RhcnQ7CisgICAgQVhUZXh0TWFya2VyIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRy
ZWVTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCmlu
ZGV4IDMyMWRlZWZiMjJhOS4uODc0NDczOTE4N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFRyZWVTdG9yZS5oCkBAIC0zNiwxNSArMzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIGNsYXNzIEFYVHJlZVN0b3JlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRy
ZWVTdG9yZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQVhJ
RCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgc3RhdGljIFQqIHRyZWVGb3JJ
RChBWElEKTsKIHByb3RlY3RlZDoKICAgICBBWFRyZWVTdG9yZSgpID0gZGVmYXVsdDsKICAgICBz
dGF0aWMgdm9pZCBhZGQoQVhJRCwgV2Vha1B0cjxUPik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
KEFYSUQpOwogICAgIHN0YXRpYyBib29sIGNvbnRhaW5zKEFYSUQpOwogCi0gICAgc3RhdGljIFJl
ZlB0cjxUPiB0cmVlRm9ySUQoQVhJRCk7CiAgICAgc3RhdGljIEFYSUQgZ2VuZXJhdGVOZXdJRCgp
OwotCiAgICAgY29uc3QgQVhJRCBtX2lkIHsgZ2VuZXJhdGVOZXdJRCgpIH07CiAgICAgc3RhdGlj
IExvY2sgc19zdG9yZUxvY2s7CiBwcml2YXRlOgpAQCAtNzMsNyArNzQsNyBAQCBpbmxpbmUgYm9v
bCBBWFRyZWVTdG9yZTxUPjo6Y29udGFpbnMoQVhJRCBheElEKQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotaW5saW5lIFJlZlB0cjxUPiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQg
YXhJRCkKK2lubGluZSBUKiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKICAgICByZXR1cm4gbWFwKCkuZ2V0
KGF4SUQpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9j
b2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
Y29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5iNGNlYmIxZDQ1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJr
ZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+Cisj
ZWxzZSAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4
dE1hcmtlcjo6QVhUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlckRhdGEgcGxhdGZvcm1EYXRh
KQoreworICAgIGlmICghcGxhdGZvcm1EYXRhKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHBsYXRmb3JtRGF0YSkgPT0gQVhUZXh0
TWFya2VyR2V0VHlwZUlEKCkpOworICAgIGlmIChDRkdldFR5cGVJRChwbGF0Zm9ybURhdGEpICE9
IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
QVhUZXh0TWFya2VyR2V0TGVuZ3RoKHBsYXRmb3JtRGF0YSkgPT0gc2l6ZW9mKG1fZGF0YSkpOwor
ICAgIGlmIChBWFRleHRNYXJrZXJHZXRMZW5ndGgocGxhdGZvcm1EYXRhKSAhPSBzaXplb2YobV9k
YXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWVtY3B5KCZtX2RhdGEsIEFYVGV4dE1hcmtl
ckdldEJ5dGVQdHIocGxhdGZvcm1EYXRhKSwgc2l6ZW9mKG1fZGF0YSkpOworI2Vsc2UgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbcGxhdGZvcm1EYXRhIGdldEJ5dGVzOiZtX2RhdGEgbGVu
Z3RoOnNpemVvZihtX2RhdGEpXTsKKyNlbmRpZgorfQorCitSZXRhaW5QdHI8UGxhdGZvcm1UZXh0
TWFya2VyRGF0YT4gQVhUZXh0TWFya2VyOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOwor
I2Vsc2UgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiZtX2RhdGEgbGVuZ3RoOnNpemVvZihtX2RhdGEpXTsKKyNlbmRpZgorfQorCisjaWYg
UExBVEZPUk0oTUFDKQorQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYVGV4
dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZVJlZikKK3sKKyAgICBBU1NFUlQoQ0ZHZXRU
eXBlSUQodGV4dE1hcmtlclJhbmdlUmVmKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgp
KTsKKworICAgIGF1dG8gc3RhcnQgPSBBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0
ZXh0TWFya2VyUmFuZ2VSZWYpOworICAgIGF1dG8gZW5kID0gQVhUZXh0TWFya2VyUmFuZ2VDb3B5
RW5kTWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZik7CisKKyAgICBtX3N0YXJ0ID0gc3RhcnQ7Cisg
ICAgbV9lbmQgPSBlbmQ7CisKKyAgICBDRlJlbGVhc2Uoc3RhcnQpOworICAgIENGUmVsZWFzZShl
bmQpOworfQorCitSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IEFYVGV4dE1hcmtlclJh
bmdlOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQKKyAgICAgICAgLCBtX3N0YXJ0LnBs
YXRmb3JtRGF0YSgpLmF1dG9yZWxlYXNlKCkKKyAgICAgICAgLCBtX2VuZC5wbGF0Zm9ybURhdGEo
KS5hdXRvcmVsZWFzZSgpCisgICAgKSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCmluZGV4IGUzYTJlNjFjNmViOC4uMDM4MzZjZjIzNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTgxLDI4ICsxODEsMjIgQEAgKyAoV2ViQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZpc2libGVQb3NpdGlvbjooVmlzaWJs
ZVBvc2l0aW9uJikKIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2Vy
V2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQgY2Fj
aGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCiB7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgIGlm
ICghY2FjaGUgfHwgY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50
ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVy
T2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQgJiYgIXRleHRNYXJrZXJEYXRh
Lmlnbm9yZWQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRleHRNYXJrZXJE
YXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgaWYgKCF0ZXh0TWFy
a2VyRGF0YS5vYmplY3RJRCAmJiAhdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNo
ZQogewotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKCFyYW5n
ZSkKKyAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBU
ZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+c3RhcnRPckVuZFRleHRN
YXJrZXJEYXRhRm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwgaXNTdGFydCk7Ci0gICAg
aWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNh
Y2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSgqcmFuZ2UsIGlzU3RhcnQpOwor
ICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5p
dFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNl
KCk7CiB9CkBAIC0yNjczLDI2ICsyNjY3LDI0IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyICopdGV4dE1hcmtlckZvclBvaW50OihDR1BvaW50KXBvaW50CiAKIC0gKFdlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyICopbmV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVy
T2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKIHsKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRh
dGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9y
TmV4dENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4dE1hcmtl
ckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGFkb3B0TlMo
W1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0
ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6
KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7Ci0gICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8q
IGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAo
IWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRl
eHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+dGV4
dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwor
ICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5p
dFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQppbmRleCA3YjkyZGJhM2E0YTcuLjE1ZWJmMzU0OWQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1t
CkBAIC04MjEsMTEgKzgyMSw5IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0CiAgICAgaWYgKCFj
YWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJr
ZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0g
Y2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7
CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25v
cmVkKQogICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFy
a2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJE
YXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIApAQCAtODQ3
LDExICs4NDUsOSBAQCBBWFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5n
ZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcAogICAgIGlmICghY2FjaGUgfHwg
IXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1h
cmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKHRl
eHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFy
a2VyRGF0YUZvclJhbmdlKCpyYW5nZSwgaXNTdGFydCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0
YS5vYmplY3RJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBhZG9wdENGKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDIzNGNkNjlmOTE5
Li4wNWM2NTcxMzY4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9i
amVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgpAQCAtNzE3LDM4ICs3MTgsMjIgQEAgc3RhdGljIHN0
ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0eVNlYXJjaERp
cmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFya2VyIGhlbHBlcnMKIAotc3Rh
dGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1hcmtlcihB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCiB7CiAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0
YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gYWRvcHRD
RihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikm
dGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKworICAgIGF1dG8gbmV4
dE1hcmtlciA9IGNhY2hlLT5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgIHJldHVybiBuZXh0
TWFya2VyID8gbmV4dE1hcmtlci5wbGF0Zm9ybURhdGEoKSA6IG5pbDsKIH0KIAotc3RhdGljIFJl
dGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2Vy
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsKICAg
ICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJE
YXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3Vz
Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlm
ICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
YWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJ
bnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKLX0KLQotLSAo
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZz
ZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAgcmV0dXJuIG5leHRU
ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVj
dENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7Ci19CiAKLS0gKFJldGFpblB0cjxBWFRleHRNYXJr
ZXJSZWY+KXByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zm
c2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGNo
YXJhY3Rlck9mZnNldCk7CisgICAgYXV0byBwcmV2aW91c01hcmtlciA9IGNhY2hlLT5wcmV2aW91
c1RleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gcHJldmlvdXNNYXJrZXIgPyBwcmV2aW91
c01hcmtlci5wbGF0Zm9ybURhdGEoKSA6IG5pbDsKIH0KIAogLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG1ldGhvZCBzaW5jZSBjbGllbnRzIHNob3VsZCBub3QgbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9k
IGFuZCBzaG91bGQgbm90IGJlIGV4cG9zZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuCkBAIC0z
Mzc0LDI0ICszMzU5LDI0IEBAIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKWxpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpdGV4dE1hCiAgICAgICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgIGF1dG8gdmlzaWJsZVBv
c2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7
CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlOwogICAgICAgICBzd2l0Y2ggKHRl
eHRVbml0KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxpbmU6Ci0gICAgICAgICAgICB2aXNp
YmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKHZp
c2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tp
bmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKG1hcmtlcik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGVmdExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxl
UG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFu
Z2UodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0g
YmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShtYXJrZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OlJpZ2h0TGluZToKLSAgICAg
ICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+cmlnaHRMaW5lVmlz
aWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQ
b3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFu
Z2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyhj
YWNoZSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVu
ZCk7CisgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXJSYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5n
ZSkucGxhdGZvcm1EYXRhKCk7CiAgICAgfSk7CiB9CiAKQEAgLTM2ODUsMjUgKzM2NzAsMjMgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiAoaWQp
W3NlbGYgX3RleHRNYXJrZXJGb3JJbmRleDpbbnVtYmVyIGludGVnZXJWYWx1ZV1dOwogCiAgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2Vy
Il0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2Vk
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAg
ICAgICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0
TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlcik7Ci0gICAg
ICAgICAgICBpZiAoIWF4T2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAg
ICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgIGF1dG8qIG9iamVj
dCA9IG1hcmtlci5vYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpCisgICAgICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYm
IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddOworICAgICAgICBhdXRv
KiB3cmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgICAgIGlmICghd3JhcHBlcikKKyAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+d3Jh
cHBlcigpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3Jh
cHBlci5hdHRhY2htZW50VmlldykKKyAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewogICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWlu
VGhyZWFkPGlkPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAg
ICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQuZ2V0KCktPmF4
T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKSk7CisgICAgICAg
ICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQtPmF4T2Jq
ZWN0Q2FjaGUoKSwgdWlFbGVtZW50LT5lbGVtZW50UmFuZ2UoKSk7CiAgICAgICAgIH0pOwogICAg
IH0KIApAQCAtMzc1NCw3ICszNzM3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJs
ZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KSk7CisgICAgICAgICAgICByZXR1
cm4gQVhUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdl
YkNvcmVQb2ludCkpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCkBAIC0zODQzLDkgKzM4MjYsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHx8ICFBWE9iamVjdElzVGV4dE1hcmtlcihb
YXJyYXkgb2JqZWN0QXRJbmRleDowXSkKICAgICAgICAgICAgIHx8ICFBWE9iamVjdElzVGV4dE1h
cmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwot
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbJmFycmF5XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAg
ICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnMoKEFYVGV4dE1hcmtlclJl
ZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSwgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0
QXRJbmRleDoxXSkuZ2V0KCk7Ci0gICAgICAgIH0pOworCisgICAgICAgIHJldHVybiBBWFRleHRN
YXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSB9
LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gfSB9LnBsYXRmb3Jt
RGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJr
ZXJzIl0pIHsKQEAgLTM4ODQsOCArMzg2Niw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0g
Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAgICAg
ICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBBWFRleHRN
YXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIG5leHRUZXh0TWFy
a2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAg
ICAgfQogCkBAIC0zODk5LDggKzM4ODEsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNo
YXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICAg
ICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFYVGV4
dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNU
ZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAg
fSk7CiAgICAgfQogCkBAIC0zOTgxLDI2ICszOTYzLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIChz
byBmYXIpLgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFy
a2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0
cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYu
Z2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQot
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBy
YW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRl
eHRNYXJrZXJSYW5nZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRN
YXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCB0cnVl
KTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtlclJh
bmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiBheFRleHRNYXJrZXJSYW5n
ZS5zdGFydCgpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwg
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0g
ICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4
dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJh
bmdlKTsKLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5n
ZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBmYWxzZSk7Ci0gICAgICAg
IH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRN
YXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gYXhUZXh0TWFya2VyUmFuZ2UuZW5kKCkucGxh
dGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgIH0KIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1
ZDMzZGFjYjJkM2YuLjUwNDYwMjU4ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dApAQCAtMSwxNyArMSwxNCBAQAotdGV4dCBoZXJlCi10ZXh0IGJsb2NrCi10ZXh0IGhl
cmUKIFRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29y
cmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4KIAotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkgPT09
IDEwCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCku
aXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSkgPT09IDEwCitQQVNTOiBuZXdSYW5nZS5pc0VxdWFs
KHJhbmdlKSA9PT0gdHJ1ZQogCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRN
YXJrZXJSYW5nZTEpIGlzIDEwCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlz
IHRydWUKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIGlz
IDEwCi1QQVNTIG5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK3Rl
eHQgaGVyZQordGV4dCBibG9jawordGV4dCBoZXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAppbmRleCBk
NDkzNmFkMjJkMTguLjM0MGFiMWUxOTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCkBAIC0xLDUx
ICsxLDQyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAog
dGV4dCBoZXJlCi08ZGl2IGlkPSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPnRleHQgYmxvY2s8L2Rpdj4K
KzxkaXYgaWQ9InRleHQxIj50ZXh0IGJsb2NrPC9kaXY+CiB0ZXh0IGhlcmUKIAotPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQot
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCBy
ZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuIik7Ci0K
ICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCB0
ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVy
biB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci5cblxuIjsKIAot
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7Ci0gICAg
ICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRleHQxIikuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgICAgLy8gR2V0IHRo
ZSBhY3R1YWwgdGV4dCBub2RlLgotICAgICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9y
IHRoaXMgZWxlbWVudCdzIHJhbmdlLgorICAgICAgICB2YXIgcmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgdmFyIHN0
YXJ0ID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOwogCi0g
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRo
aXMgcmFuZ2UuCi0gICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTEgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIiwgIjEwIik7Ci0gICAgICAgICAgdmFy
IHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlMSk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3
aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KKyAgICAg
ICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKHN0YXJ0KS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIENo
ZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0
aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7
CisgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1
cyB0aGUgc2FtZSBlbGVtZW50LgorICAgICAgICB2YXIgZW5kID0gdGV4dC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3Qo
InRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0
KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNr
IHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KLSAgICAgICAgICB2YXIgZW5kTWFy
a2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5n
ZTEpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIE1ha2Ug
YSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNr
IHRoZSBsZW5ndGguCisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhzdGFydCwgZW5kKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSIsICIxMCIpOwogCi0gICAgICAgICAg
Ly8gTWFrZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBh
bmQgY2hlY2sgdGhlIGxlbmd0aAotICAgICAgICAgIHZhciBuZXdNYXJrZXJSYW5nZSA9IHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAg
ICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2Up
IiwgIjEwIik7CisgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1h
cmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3Qo
Im5ld1JhbmdlLmlzRXF1YWwocmFuZ2UpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEFuZCBt
YWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgK
LSAgICAgICAgICBzaG91bGRCZVRydWUoIm5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtl
clJhbmdlMSkiKTsKKyAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CiAgICAgfQotCiA8L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20t
aWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCAwMmM1NzY1OGE1NmYuLjhmYzVmZDcy
NDhiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXBy
ZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVu
dC1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMTMgQEAKLUZpcnN0IGxpbmUgb2YgdGV4dAotYnV0
dG9uCi1UaGlyZCBsaW5lIG9mIHRleHQKIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNo
IGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LgogCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShyYW5nZSkgPT09ICdGaXJzdCBsaW5lIG9mIHRleHQnCitQQVNTOiBlbGVtZW50LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdidXR0b24nCitQQVNTOiByZXN1bHRFbGVt
ZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JworUEFTUzog
cmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4
dCcKIAotCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAnRmlyc3QgbGluZSBvZiB0ZXh0JwotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShsaW5lUmFuZ2UpIGlzICdidXR0b24nCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5n
VmFsdWUgaXMgJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCcKLVBBU1MgcmVzdWx0RWxlbWVu
dC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JwogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdu
b3JlZC1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gt
cHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKaW5kZXggNmVhODE4N2MwMjI2Li45
NWQ3YTQ2Y2VjZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Nl
YXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
Lmh0bWwKQEAgLTEsNTAgKzEsNDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2Fj
Y2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5
Ij4KKzxib2R5PgogCis8ZGl2IGlkPSJjb250YWluZXIiIHJvbGU9Imdyb3VwIj4KIDxkaXYgaWQ9
InRlc3QiPkZpcnN0IGxpbmUgb2YgdGV4dDxicj4KIDxidXR0b24gaWQ9ImJ1dHRvbiIgYXJpYS1o
aWRkZW49InRydWUiPmJ1dHRvbjwvYnV0dG9uPgogPGJyPlRoaXJkIGxpbmUgb2YgdGV4dDwvZGl2
PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxp
dHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVt
ZW50LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
LSAgICAgICAgCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMo
KTsKLSAgICAgICAgdmFyIGNvbnRhaW5lckVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0
ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBh
biBpZ25vcmVkIGVsZW1lbnQuXG5cbiI7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAg
ICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJ0ZXN0IikuY2hpbGRBdEluZGV4KDApOwotICAgICAgICB2YXIgbWFya2VyUmFu
Z2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAg
IHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ0ZpcnN0IGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRyeSB0byBn
ZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzCi0gICAg
ICAgIHZhciB0ZXh0TWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRN
YXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0
TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB2YXIgbGluZVJhbmdlID0gZWxlbWVudC5saW5l
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgc2hvdWxk
QmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSkiLCAiJ2J1dHRv
biciKTsKLSAgICAgICAgCi0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpOwotICAgICAgICB2YXIgc3RhcnRFbGVt
ZW50ID0gZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIodGV4dE1hcmtl
cik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIp
OworCisgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5l
IHRleHQgbWFya2VyIGNhbGxzLgorICAgICAgICB2YXIgbWFya2VyID0gZWxlbWVudC5lbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVu
dC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50Lm5leHRU
ZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIHJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJl
bGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ2J1dHRvbiciKTsKKwor
ICAgICAgICBtYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShyYW5nZSk7CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworCiAgICAgICAgIC8vIFNlYXJjaCBmb3J3
YXJkCi0gICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNo
S2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCisgICAg
ICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2Up
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7CisKICAgICAgICAgLy8gU2VhcmNoIGJh
Y2t3YXJkCi0gICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNo
S2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKyAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBmYWxzZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZp
cnN0IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGFpbmVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1Zyhv
dXRwdXQpOwogICAgIH0KLSAgICAgICAgCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9y
LXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBjZGNjNzdjM2M4NzEuLjZhN2QyZjc4YTNlNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1m
b3ItcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMSwyODEgKzEsMjA3
IEBACi1UaGluayBkaWZmZXJlbnQgQXBwbGUKLQotYm9sZCBpdGFsaWMKLXVuZGVybGluZSBsYXN0
IQotCi1IZWxsbyBXb3JsZCEKLVRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdl
IHdvcmtzIHByb3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1RoaXMgdGVz
dHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KIAogY29udGVu
dCBsZW5ndGg6IDY1CiBBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBp
biB0aGUgdGV4dDoKLTAKLScnCi0xCi0nVCcKLTIKLSdUaCcKLTMKLSdUaGknCi00Ci0nVGhpbicK
LTUKLSdUaGluaycKLTYKLSdUaGluayAnCi03Ci0nVGhpbmsgZCcKLTgKLSdUaGluayBkaScKLTkK
LSdUaGluayBkaWYnCi0xMAotJ1RoaW5rIGRpZmYnCi0xMQotJ1RoaW5rIGRpZmZlJwotMTIKLSdU
aGluayBkaWZmZXInCi0xMwotJ1RoaW5rIGRpZmZlcmUnCi0xNAotJ1RoaW5rIGRpZmZlcmVuJwot
MTUKLSdUaGluayBkaWZmZXJlbnQnCi0xNgotJ1RoaW5rIGRpZmZlcmVudCAnCi0xNwotJ1RoaW5r
IGRpZmZlcmVudCBBJwotMTgKLSdUaGluayBkaWZmZXJlbnQgQXAnCi0xOQotJ1RoaW5rIGRpZmZl
cmVudCBBcHAnCi0yMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsJwotMjEKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUnCi0yMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKLTIzCi0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiswICcnCisxICdUJworMiAnVGgnCiszICdUaGknCis0ICdUaGluJworNSAnVGhp
bmsnCis2ICdUaGluayAnCis3ICdUaGluayBkJworOCAnVGhpbmsgZGknCis5ICdUaGluayBkaWYn
CisxMCAnVGhpbmsgZGlmZicKKzExICdUaGluayBkaWZmZScKKzEyICdUaGluayBkaWZmZXInCisx
MyAnVGhpbmsgZGlmZmVyZScKKzE0ICdUaGluayBkaWZmZXJlbicKKzE1ICdUaGluayBkaWZmZXJl
bnQnCisxNiAnVGhpbmsgZGlmZmVyZW50ICcKKzE3ICdUaGluayBkaWZmZXJlbnQgQScKKzE4ICdU
aGluayBkaWZmZXJlbnQgQXAnCisxOSAnVGhpbmsgZGlmZmVyZW50IEFwcCcKKzIwICdUaGluayBk
aWZmZXJlbnQgQXBwbCcKKzIxICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMiAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlJworMjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiAnCi0yNAotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBiJwotMjUKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzI1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm8nCi0y
NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2wnCi0yNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjcgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkJwotMjgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI4ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCAnCi0yOQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjkgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGknCi0zMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
MzAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0JwotMzEKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzMxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGEnCi0zMgotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorMzIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0
YWwnCi0zMwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzMgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpJwotMzQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM0ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMnCi0zNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMzUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogJwotMzYKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzM2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHUnCi0zNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzcgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW4nCi0zOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzgg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kJwotMzkKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzM5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGUnCi00MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDAgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXInCi00MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NDEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsJwotNDIKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzQyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGknCi00MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDMgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW4nCi00NAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNDQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsaW5lJwotNDUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ1ICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSAnCi00NgotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNDYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGwnCi00NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDcgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhJwotNDgKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzQ4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBs
YXMnCi00OQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDkgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QnCi01MAotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNTAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGxhc3QhJwotNTEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUxICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUyCi0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCis1MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRl
cmxpbmUgbGFzdCEKIAog77+8JwotNTMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUzICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
JwotNTQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZScKLTU1Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis1NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsJwotNTYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU2
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQog
CiDvv7xIZWxsJwotNTcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU3ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbycKLTU4
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gJwotNTkKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzU5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXJwotNjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzYwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0
IQogCiDvv7xIZWxsbyBXbycKLTYxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MSAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVs
bG8gV29yJwotNjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYyICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsJwot
NjMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCcKLTY0Ci0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCis2NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRh
bGljCiB1bmRlcmxpbmUgbGFzdCEKQEAgLTI5MSw3ICsyMTcsMTEgQEAgdW5kZXJsaW5lIGxhc3Qh
CiAKIO+/vEhlbGxvIFdvcmxkIScKICcnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQogCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAppbmRl
eCBjZTFjYmYyZWVmZTMuLmMzMDQ5ODY3YjA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1s
CkBAIC0xLDkgKzEsOSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiA8
ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CiAgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVu
dDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgpAQCAtMTEsMzYgKzExLDM0
IEBACiAgICAgPGJ1dHRvbj5IZWxsbyBXb3JsZCE8L2J1dHRvbj4KIDwvZGl2PgogCi08cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0Pgot
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3
b3JrcyBwcm9wZXJseS4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKLSAgICAgICAgYXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7Ci0gICAgICAgIGNvbnRlbnRUZXh0TWFya2VyUmFu
Z2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChheEVsZW1lbnQpOwotICAg
ICAgICB0ZXh0TGVuZ3RoID0gYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjb250
ZW50VGV4dE1hcmtlclJhbmdlKS5sZW5ndGg7Ci0gICAgICAgIGRlYnVnKCJjb250ZW50IGxlbmd0
aDogIiArIHRleHRMZW5ndGgpOworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhh
dCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS5cblxuIjsKIAotICAgICAg
ICBkZWJ1ZygiQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhl
IHRleHQ6Iik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIGRlYnVnKGkpOwotICAgICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVt
ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIGkpOwotICAgICAgICAgICAgZGVidWcoIici
ICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsg
IiciKTsKKyAgICAgICAgbGV0IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgbGV0IHJhbmdlID0gY29udGVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGNvbnRlbnQpOworICAgICAgICBsZXQgY29udGVu
dExlbmd0aCA9IGNvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKS5sZW5ndGg7
CisgICAgICAgIG91dHB1dCArPSBgY29udGVudCBsZW5ndGg6ICR7Y29udGVudExlbmd0aH1cbmA7
CisKKyAgICAgICAgb3V0cHV0ICs9ICJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNo
YXJhY3RlciBpbiB0aGUgdGV4dDpcbiI7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZW50
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSgwLCBpKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgJHtpfSAnJHtjb250ZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKICAgICAgICAgfQogCi0gICAg
ICAgIGRlYnVnKCJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToiKTsKLSAgICAgICAg
dGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1
KTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgb3V0cHV0ICs9ICJHZXQgdGhlIHJh
bmdlIGZvciB0aGUgd29yZCBBcHBsZTpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0
TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisKKyAgICAgICAgb3V0cHV0
ICs9ICJPdXQgb2YgcmFuZ2UgdmFsdWVzOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29u
dGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisgICAgICAgIHJhbmdl
ID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKKyAgICAgICAgb3V0
cHV0ICs9IGAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsK
IAotICAgICAgICBkZWJ1ZygiT3V0IG9mIHJhbmdlIHZhbHVlczoiKTsKLSAgICAgICAgdGV4dE1h
cmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7Ci0g
ICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKSArICInIik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKLSAgICAgICAgZGVidWcoIiciICsg
YXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIici
KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQogPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1m
b3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAppbmRleCA5MTVkNTY5YzBlZDAuLmQ4NGI4YjIwMTc0
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3Np
dGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhw
ZWN0ZWQudHh0CkBAIC0xLDEwICsxLDcgQEAKLVRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuCiBUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZp
c2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxs
IFJlbmRlclRleHQgb2JqZWN0cy4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzog
Y29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChlbGVtZW50KSA9PT0gdHJ1ZQogCi0KLVBB
U1MgY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkgaXMgdHJ1ZQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2li
bGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCmluZGV4IGM3MjU3ZDU4NWQxYS4u
NjJlYjRlMzUyMmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92
aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUu
aHRtbApAQCAtMSw0MCArMSwzMSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHki
PgorPGJvZHk+CiAKLTxkaXYgaWQ9ImNvbnRlbnQiIHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6
MjAwcHg7Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweDsiPgogVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIAogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIDwvZGl2PgogCi08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0g
ICAgZGVzY3JpcHRpb24oIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBm
b3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRs
ZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgcHJvdGVjdHMgYWdh
aW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8g
ZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLlxuXG4iOwog
Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5mb2N1cygpOwot
ICAgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRoaXMgcG9pbnQu
IEl0IHNob3VsZCBub3QgY3Jhc2guCi0gICAgICAgICAgdmFyIG1hcmtlckF0UG9pbnQgPSBjb250
ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoLzIsIGNvbnRl
bnQueSArIGNvbnRlbnQuaGVpZ2h0LzIpOwotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNv
bnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOwor
ICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0
IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHZhciBtYXJrZXIgPSBj
b250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoIC8gMiwg
Y29udGVudC55ICsgY29udGVudC5oZWlnaHQgLyAyKTsKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBl
bGVtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgorICAgICAgICB2YXIgZWxl
bWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1
YWwoZWxlbWVudCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50
IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgotICAgICAgICAgIHZhciB0ZXh0RWxl
bWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0
UG9pbnQpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29udGVudC5jaGlsZEF0SW5kZXgoMCku
aXNFcXVhbCh0ZXh0RWxlbWVudCkiKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91
dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXBy
ZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAppbmRleCAwNDA0
Mzg0OWRlMTYuLmVhNGI4NzdkNDkzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXBy
ZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10ZXh0Ci0KLXRleHQx
Ci1jICBkCi0KLWNhbid0IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0KLWEgYgotCi1hdWRp
b2ZpbGUKLQogVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlv
bnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBp
cyA0Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFy
a2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1Mg
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNT
IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSBpcyA1CitQQVNT
OiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNT
OiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQ
QVNTOiB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09IDUK
IE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQzLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4dDMu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAhcHN3
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFTUyB0
ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNF
cXVhbCh0ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIGlz
IHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICdmJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2EnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdl
KSBpcyA0Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/Cf
mI8nCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmIMn
Ci1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcg
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUnCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8Jwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcK
K1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdk
JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
JzEnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSAnZWN0JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0ZXh0
Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVh
bCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8Jwor
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rl
eHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAppbmRleCA1ZWQzYmQwZDA2
ZGUuLjM4ZjEzZWQ3YTNlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0
bWwKQEAgLTEsMTUgKzEsMTcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vz
c2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxtZXRhIGNoYXJzZXQ9IlVURi0xNiI+CiA8
L2hlYWQ+CiA8c3R5bGU+CiAudXNlcnNlbGVjdCB7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0
LXVzZXItc2VsZWN0OiBub25lOyB9CiA8L3N0eWxlPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+
CiAKLTxkaXYgaWQ9InRleHQiIHRhYmluZGV4PSIwIj50ZXh0PC9kaXY+Cis8ZGl2IGlkPSJjb250
ZW50Ij4KKzxkaXYgaWQ9InRleHQiPnRleHQ8L2Rpdj4KIDxicj4KIHRleHQxCiAKQEAgLTMyLDI5
ICszNCw0NSBAQCBmCiA8cCBpZD0idGV4dDYiPmEgICAgIGI8L3A+CiAKIDxwIGlkPSJ0ZXh0NyI+
YXVkaW88YXVkaW8gY29udHJvbHM+PC9hdWRpbz5maWxlPC9wPgotCi08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAKIDxzY3JpcHQ+Cisg
ICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIs
IG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKKyAgICAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSBvYmoubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwK
KyAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyLCBvYmopIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIocHJldmlv
dXNNYXJrZXIpOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5wcmV2aW91c1RleHRN
YXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKKyAgICAgICAgICAgIGN1cnJlbnQ6IGN1
cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAgICB9CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVu
dGVkIGNvcnJlY3RseS4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOwotICAgICAgICAvLyBHZXQgdGhl
IGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgwKTsK
LSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2
aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS5cblxu
IjsKKworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dCIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAvLyBDaGVj
ayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0L2VuZCBtYXJrZXIgZm9yIHRoaXMgcmFuZ2UuCiAg
ICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0
ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwor
CiAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0
LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKLSAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihz
dGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0
KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiLCAidHJ1
ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOworCiAgICAg
ICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQg
d2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAgICB2YXIgY3VycmVudE1hcmtlciwgcHJldmlvdXNN
YXJrZXIsIG1hcmtlclJhbmdlOzsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvcndhcmQoNSwgcHJl
dmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKQEAgLTYyLDU4ICs4MCw1NyBAQCBmCiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFu
Z2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIpOwogICAgICAgICB2YXIgbmV3bGluZSA9ICdcbic7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIp
OwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKKwogICAgICAgICAvLyBBZHZh
bmNlIG9uZSBtb3JlIGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZGUgYXQgInQiIGluICJ0ZXh0MSIu
CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7
CisKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBtYXJrZXIuIChUcmF2ZXJzZSBiYWNr
d2FyZHMgb25lIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAgICByZXN1
bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQpOwog
ICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAibmV3bGluZSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKKwog
ICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIG1vcmUgY2hhcmFjdGVyLCBpdCB3aWxs
IGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0Ii4KICAgICAgICAgcmVzdWx0ID0g
YmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwogICAgICAg
ICBpZiAoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1OYW1lID09ICJtYWMiKQotICAg
ICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICIndCcgKyBuZXdsaW5lIik7CisgICAgICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnICsgbmV3bGlu
ZSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworICAgICAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
Iid0JyIpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcmVwbGFjZWQgbm9kZQog
ICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRleHQyIik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UyID0gdGV4dDIu
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0Mik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikiLCAiNSIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtl
clJhbmdlMikiLCAiNSIpOwogICAgICAgICB2YXIgc3RyID0gdGV4dDIuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpLnJlcGxhY2UoU3RyaW5nLmZyb21DaGFyQ29kZSg2
NTUzMiksICJbQVRUQUNITUVOVF0iKTsKLSAgICAgICAgZGVidWcoIk9iamVjdCBzdHJpbmcgZm9y
IHJhbmdlOiAiICsgc3RyKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBgT2JqZWN0IHN0
cmluZyBmb3IgcmFuZ2U6ICR7c3RyfVxuYDsKKwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4
dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwog
ICAgICAgICAvLyBBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0ICJkIi4KICAg
ICAgICAgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
dGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9
IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRN
YXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInZCciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2QnIik7
CisKICAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIDYgY2hhcmFjdGVycywgaXQgd2lsbCBs
YW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dDEiLgogICAgICAgICByZXN1bHQgPSBi
YWNrd2FyZHMoNiwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJzEnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOworCiAgICAgICAgIC8v
IENoZWNrIHRoZSBjYXNlIHdpdGggdXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRleHRNYXJrZXIvcHJl
dmlvdXNUZXh0TWFya2VyIHNob3VsZCBzdGlsbCB3b3JrLgotICAgICAgICB2YXIgdGV4dDMgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIik7Ci0g
ICAgICAgIHRleHQzID0gdGV4dDMuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAKKyAgICAgICAg
dmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0MyIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAvLyBBZHZhbmNlIHRvIGxhbmQg
YXQgdXNlci1zZWxlY3Q6bm9uZSBub2RlLgogICAgICAgICB2YXIgbWFya2VyMSwgbWFya2VyMjsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxODsgaSsrKSB7CkBAIC0xMjUsMzQgKzE0Miwz
MSBAQCBmCiAgICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIx
LCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0JyIpOwog
ICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aGUgc2Vjb25kIG1hcmtlciBmb3IgNiBjaGFy
YWN0ZXJzLCB0aGUgcmFuZ2Ugc2hvdWxkIGJlICJzZWwiCi0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQogICAg
ICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQzLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1hcmtlcjsKICAg
ICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKG1hcmtl
cjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidzZWwnIik7
CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCBwYXNzd29yZCBmaWVsZC4KICAgICAg
ICAgdmFyIHBzdyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgicHN3Iik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UzID0gcHN3LnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQocHN3KTsKICAgICAgICAgdmFyIHN0YXJ0ID0gcHN3LnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UzKTsKLSAgICAgICAgc2hvdWxk
QmVUcnVlKCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkiKTsK
LSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoIiFwc3cuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gQ2hlY2sg
bmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBjYWxsIHdpbGwgc2tpcCBwYXNzd29yZCBmaWVsZAog
ICAgICAgICAvLyBXZSBzdGFydCBmcm9tIHRleHQyIGFuZCBhZHZhbmNlIDYgY2hhcmFjdGVycywg
aXQgc2hvdWxkIHNraXAgdGhlIHBhc3N3b3JkIGZpZWxkIGFuZCBsYW5kIG9uIHRleHQzLgogICAg
ICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZTIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkr
KykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0Mi5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgfQotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiLCAidHJ1ZSIpOwogICAgICAgICAvLyBDaGVjayBw
cmV2aW91cyB0ZXh0IG1hcmtlciwgaXQgc2hvdWxkIGxhbmQgb24gIiBkIiBub2RlLgogICAgICAg
ICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
OwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRl
eCgyKSkiKTsKLSAgICAgICAgCi0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNF
cXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB0ZXh0IG5vZGUgd2l0aCBsaW5lIGJyZWFrcywgd2UgY2FuIGdvIHRocm91Z2gg
aXQgd2l0aCBuZXh0L3ByZXZpb3VzIGNhbGwuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ0Iik7CiAgICAgICAgIHRleHRN
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKQEAgLTE2
Myw4NyArMTc3LDY0IEBAIGYKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50
TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIiwgIidmJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidmJyIpOwor
CiAgICAgICAgIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gZW5kTWFya2VyOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDc7IGkrKykKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZp
b3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgY3VycmVu
dE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInYSciKTsK
KwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBlbW9qaS4KICAgICAgICAgdGV4dCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDUiKTsKICAgICAg
ICAgdmFyIGVtb2ppVGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgo
ZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIG5hdmlnYXRpbmcgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtl
ciBpcyBieSBlbW9qaS4KICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShlbW9qaVRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIHJlc3Vs
dCA9IGZvcndhcmQoMiwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/Cf
mI8nIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkiLCAiJ/CfmI8nIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygx
LCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7Ci0g
ICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRo
IGNvbGxhcHNlZCB3aGl0ZXNwYWNlLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NiIpOwogICAgICAgICB2YXIgY29sbGFw
c2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29s
bGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSkiLCAiMyIpOwogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSk7CiAg
ICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkiLCAiJ2EnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CiAgICAgICAgIHJlc3VsdCA9IGZvcndh
cmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYiciKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYiciKTsK
ICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKICAgICAgICAgcmVzdWx0
ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwot
ICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIs
ICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CisKICAgICAgICAgLy8gVGVzdCBj
YXNlIHdpdGggcmVwbGFjZWQgZWxlbWVudHMgKHNob3VsZCB1c2Ugb2JqZWN0IHJlcGxhY2VtZW50
IGNoYXJhY3RlcikuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRleHQ3Iik7CiAgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVG
RkZDZmlsZSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNmaWxlJyIpOwogICAg
ICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKysp
IHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwog
ICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4
dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAgICBwcmV2aW91c01h
cmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5w
cmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZG
RkMnIik7CiAKLSAgICAgICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFy
a2VyOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoubmV4dFRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKLSAgICAgICAgICAgICAgICBj
dXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZpb3VzVGV4
dE1hcmtlcihwcmV2aW91c01hcmtlcik7Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9
IG9iai5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01h
cmtlciwKLSAgICAgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAgICAgICAg
ICB9OwotICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50
Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwog
ICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3Rl
ZC50eHQKaW5kZXggMjkyNjQxYTdlMDM4Li41YTBhMzJjMjhkNzAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10ZXh0Ci0KLXRleHQxCi1jICBkCi0KLWNhbid0
IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0KLWEgYgotCi1hdWRpb2ZpbGUKLQogVGhpcyB0
ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVu
dGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBpcyA0Ci1QQVNTIHRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRl
eHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
ZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnICsgbmV3bGluZQotUEFTUyB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgaXMgNQorUEFTUzogdGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwo
dGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JyArIG5ld2xp
bmUKK1BBU1M6IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSA9
PT0gNQogT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6IGMgW0FUVEFDSE1FTlRdIGQKLVBBU1MgdGV4
dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZCcKLVBBU1MgdGV4
dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnMScKLVBBU1MgdGV4
dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZWN0JwotUEFTUyB0
ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdzZWwnCi1QQVNT
ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSBpcyB0cnVlCi1Q
QVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2Vy
KS5pc0VxdWFsKHRleHQzKSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgy
KSkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgaXMgJ2YnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAnYScKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2Vy
UmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBp
cyAn8J+YjycKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn
8J+YgycKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFj
ZU1hcmtlclJhbmdlKSBpcyAzCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkg
aXMgJyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2In
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJyAnCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgaXMgJ2F1ZGlv77+8Zmls
ZScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfv
v7wnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn
77+8JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9
PT0gJ2QnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
ID09PSAnMScKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09ICdlY3QnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpID09PSAnc2VsJworUEFTUzogIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoc3RhcnQpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgPT09IHRydWUKK1BBU1M6
IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5p
c0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2YnCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdhJworUEFTUzogdGV4dC50ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YjycKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iDJworUEFTUzogdGV4dC50
ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSA9PT0g
MworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdiJworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgPT09ICdhdWRpb++/vGZpbGUnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICfvv7wn
CitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICfv
v7wnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQog
CisKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464546</attachid>
            <date>2023-01-18 14:32:25 -0800</date>
            <delta_ts>2023-01-19 08:39:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230118173223.patch</filename>
            <type>text/plain</type>
            <size>106825</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA2OTAzNjJjOGU1Y2FmODkwZGM5NGYxMTMzMjIwMWJmNjc3NzZkMTg2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3dzIGZvciB0aGUgcmV0cmlldmFsIG9mIHRoZSBUZXh0TWFy
a2VyIHByb3BlcnRpZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3VyY2UgdG8gdGhlIHVuZGVybHlp
bmcgRE9NIGFuZCBSZW5kZXJUcmVlIG9iamVjdHMuCgpUaGUgZm9sbG93aW5nIE1hYyBBWCBBUEkg
YXR0cmlidXRlcyBhcmUgbm93IGltcGxlbWVudGVkIHdpdGhvdXQgaGl0dGluZyB0aGUgbWFpbiB0
aHJlYWQgdXNpbmcgQVhUZXh0TWFya2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZToKQVhVSUVsZW1l
bnRGb3JUZXh0TWFya2VyCkFYVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcnMKQVhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UKQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYW4gdXBkYXRlIG9mIHNldmVyYWwgbGF5b3V0
IHRlc3RzIHJlbGF0ZWQgdG8gVGV4dE1hcmtlcnMuCi0tLQogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgICB8IDE4OCArKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMjggKy0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxNjUgKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDE4MSArKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaCAgICB8
ICAgNyArLQogLi4uL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0gIHwg
IDkwICsrKysrKysrCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
ICAgfCAgNDAgKystLQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0g
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
ICAgfCAxMDEgKysrLS0tLS0tCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dCAgfCAgMTkgKy0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAg
ICAgICAgICB8ICA1MSArKy0tLQogLi4ucmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0IHwgIDE1ICstCiAuLi5zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVt
ZW50Lmh0bWwgfCAgNjMgKysrLS0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhw
ZWN0ZWQudHh0ICAgfCAyMTAgKysrKysrLS0tLS0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXIt
cmFuZ2UtZm9yLXJhbmdlLmh0bWwgICAgICAgfCAgNDggKystLQogLi4uLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlv
bi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgfCAgMzUgKystCiAuLi4vdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1leHBlY3RlZC50eHQgICAgfCAgNzggKysrLS0tLQogLi4uL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQuaHRtbCAgICAgICAgICAgIHwgMTc1ICsrKysrKystLS0tLS0tLQogLi4u
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrKy0tLS0K
IDIzIGZpbGVzIGNoYW5nZWQsIDkxMCBpbnNlcnRpb25zKCspLCA2OTcgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJr
ZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRleHRNYXJrZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYzMzcz
NmM4NTI5ZS4uNTU1NTNkMDEyNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBA
IE1vZHVsZXMvd2VieHIvWFJTZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2Uu
Y3BwCiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjYzNDk5YjU2MTA5Li4yMDgxZTBkMTgwY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJL
aXRCYWRnZVN5c3RlbUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNl
TWFuYWdlckNvY29hLm1tCithY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NTlkYTIyMTExNy4uYjE1MDM4ZDI4ODc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NTcxLDYgKzQ1NzEsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyog
Q29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTEx
OEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVE
Rjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJG
MzI3MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlD
NzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChXZWFrLCApOyB9OyB9OwogCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThB
REM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAv
KiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUzMiw2ICsx
NjUzMyw5IEBACiAJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVj
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBh
dGggPSBtYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzA4RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBF
MjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
WFRleHRNYXJrZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYz
MjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNl
ZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0g
dXNyL2xpYi9saWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJ
CUMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29y
LnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE0OTgsNiArMjE1MDIsNyBAQAog
CQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBE
MkQzIC8qIGNvY29hICovLAogCQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8s
CiAJCQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQky
OUE4MTIwNTBGQkI5QjUyMDA1MTAyOTMgLyogbWFjICovLApAQCAtMjE1NzQsNiArMjE1NzksOCBA
QAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5
ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4
MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEEx
MjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkz
NzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0
MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlDMEU4QURDNDI5
NEI1QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAz
MDAyOEM1OTIgLyogRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCkBAIC0zMTY0Miw2ICsz
MTY0OSwxNCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQz
IC8qIEFYVGV4dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2
MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0zNTIxNyw2ICszNTIzMiw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFY
SXNvbGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2
OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJC
OUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIw
OEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0Zv
cndhcmRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlZWQ0ODgxZjVmYTAuLjA5OWYzYzJkMDA0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUg
IkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFRl
eHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmgiCkBAIC0yMjEzLDcgKzIyMTQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0
b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKICAgICBtX2NvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGUgPSBudWxscHRyOwogfQogCi1WaXNpYmxlUG9zaXRpb24gQVhPYmplY3RD
YWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRl
eHRNYXJrZXJEYXRhKQorVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXJEYXRhKGNvbnN0IFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0
YSkKIHsKICAgICBpZiAoIWlzTm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpCiAgICAgICAg
IHx8IHRleHRNYXJrZXJEYXRhLm5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQpAQCAtMjIyOSw3ICsy
MjMwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJgogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgYXV0byogY2FjaGUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7Ci0g
ICAgaWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyh0ZXh0TWFya2VyRGF0
YS5heElEKSkKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRl
eHRNYXJrZXJEYXRhLmF4T2JqZWN0SUQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBy
ZXR1cm4gdmlzaWJsZVBvc2l0aW9uOwpAQCAtMjIzNywxMyArMjIzOCwxMCBAQCBWaXNpYmxlUG9z
aXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4
dE1hcmtlckRhdGEmCiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJP
ZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEpCiB7
Ci0gICAgaWYgKCFpc05vZGVJblVzZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKLSAgICAgICAgcmV0
dXJuIENoYXJhY3Rlck9mZnNldCgpOwotICAgIAotICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25v
cmVkKQotICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgQ2hhcmFj
dGVyT2Zmc2V0IHJlc3VsdCA9IENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YS5ub2RlLCB0
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0
ZXJPZmZzZXQpOworICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8ICFpc05vZGVJblVz
ZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoYXJh
Y3Rlck9mZnNldCByZXN1bHQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtlckRhdGEuY2hh
cmFjdGVyU3RhcnQsIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCk7CiAgICAgLy8gV2hl
biB3ZSBhcmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBWaXNpYmxlUG9zaXRpb24gaXMgdXBzdHJl
YW0sIGl0IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lLgogICAgIC8vIFdlIHVzZSB0aGUgcHJldmlvdXMgQ2hhcmFjdGVyT2Zmc2V0IHNvIHRo
YXQgaXQgd2lsbCBtYXRjaCB0aGUgUmFuZ2UuCiAgICAgaWYgKHRleHRNYXJrZXJEYXRhLmFmZmlu
aXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKQEAgLTI1MDcsMzcgKzI1MDUsMTggQEAgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRDaGFy
YWN0ZXJPZmZzZXRzKGNvbnMKICAgICByZXR1cm4geyB7ICpzdGFydCwgKmVuZCB9IH07CiB9CiAK
LXZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0
KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7Ci0gICAgICAgIHRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21O
b2RlKTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENvbnZl
cnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGludCB2cE9mZnNldCA9IDA7Ci0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2Jq
ZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRl
eHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJ
bmRleDsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAotICAg
IHRoaXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAgICAg
JiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmNoYXJhY3Rlck9mZnNldC5ub2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIHsgbnVsbHB0ciwgbnVsbHB0ciwgeyB9LCAw
LCAwLCB0cnVlIH07CisKKyAgICBzZXROb2RlSW5Vc2UoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpOwor
ICAgIHJldHVybiB7IHRoaXMsIGNoYXJhY3Rlck9mZnNldC5ub2RlLCB2aXNpYmxlUG9zaXRpb25G
cm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCksCisgICAgICAgIGNoYXJhY3Rlck9m
ZnNldC5zdGFydEluZGV4LCBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0LCBmYWxzZSB9OwogfQogCiBD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZv
clJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0LCBib29sIGVudGVy
VGV4dENvbnRyb2xzKQpAQCAtMjU3MSwxNyArMjU1MCwxMiBAQCBDaGFyYWN0ZXJPZmZzZXQgQVhP
YmplY3RDYWNoZTo6c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNvbnN0IFNpbXBs
ZVJhbgogICAgIHJldHVybiB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb3B5UmFuZ2UsIG9mZnNl
dCwgb3B0aW9ucywgc3RheVdpdGhpblJhbmdlKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjpz
dGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtl
ckRhdGEsIGNvbnN0IFNpbXBsZVJhbmdlJiByYW5nZSwgYm9vbCBpc1N0YXJ0KQorVGV4dE1hcmtl
ckRhdGEgQVhPYmplY3RDYWNoZTo6c3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCiB7Ci0gICAgLy8gVGhpcyBtZW1v
cnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0
ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNr
eSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0g
ICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2Yo
VGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBpc1N0YXJ0KTsK
KyAgICBhdXRvIGNoYXJhY3Rlck9mZnNldCA9IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JS
YW5nZShyYW5nZSwgaXNTdGFydCk7CiAgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkK
LSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rl
ck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rl
ck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50IG9mZnNldCwgVHJhdmVyc2VP
cHRpb24gb3B0aW9uKQpAQCAtMjYzMCwxNSArMjYwNCw2IEBAIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmIG5vZGUsIGlu
dCBvCiAgICAgcmV0dXJuIGNoYXJhY3Rlck9mZnNldDsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hl
Ojp0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4dE1h
cmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQotewotICAg
IC8vIFRoaXMgbWVtb3J5IG11c3QgYmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2Vy
RGF0YSBjYW4gYmUgdGVzdGVkIGZvciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6
IFRoaXMgaXMgcmlza3kgYW5kIGJhZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJp
dmlhbCB0eXBlLgotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4oJnRleHRNYXJrZXJEYXRh
KSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0KLSAgICBzZXRUZXh0TWFya2VyRGF0YVdp
dGhDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci19Ci0K
IGJvb2wgQVhPYmplY3RDYWNoZTo6c2hvdWxkU2tpcEJvdW5kYXJ5KGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgcHJldmlvdXMsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgbmV4dCkKIHsKICAgICAvLyBN
YXRjaCB0aGUgYmVoYXZpb3Igb2YgVmlzaWJsZVBvc2l0aW9uLCB3ZSBzaG91bGQgc2tpcCB0aGUg
bm9kZSBib3VuZGFyeSB3aGVuIHRoZXJlJ3Mgbm8gdmlzdWFsIHNwYWNlIG9yIG5ldyBsaW5lIGNo
YXJhY3Rlci4KQEAgLTI2NTcsNDEgKzI2MjIsNTcgQEAgYm9vbCBBWE9iamVjdENhY2hlOjpzaG91
bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29uc3QgQ2gK
ICAgICAKICAgICByZXR1cm4gdHJ1ZTsKIH0KLSAgICAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
a2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCisKK1RleHRN
YXJrZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9m
ZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAgICBDaGFy
YWN0ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0ZXJPZmZzZXQg
cHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0YTsKKyAg
ICBhdXRvIG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBwcmV2aW91cyA9IGNoYXJh
Y3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAgICAgICAg
c2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZz
ZXQobmV4dCwgZmFsc2UpOwogICAgICAgICBpZiAoc2hvdWxkU2tpcEJvdW5kYXJ5KHByZXZpb3Vz
LCBuZXh0KSkKICAgICAgICAgICAgIG5leHQgPSBuZXh0Q2hhcmFjdGVyT2Zmc2V0KG5leHQsIGZh
bHNlKTsKLSAgICAgICAgdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtl
ckRhdGEsIG5leHQpOwotICAgICAgICAKKyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KG5leHQpOworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIG5leHQg
Q2hhcmFjdGVyT2Zmc2V0IGlmIGl0J3MgdmlzdWFsbHkgdGhlIHNhbWUuCiAgICAgICAgIGlmICgh
bGVuZ3RoRm9yUmFuZ2UocmFuZ2VGb3JVbm9yZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKHByZXZpb3Vz
LCBuZXh0KSkpCiAgICAgICAgICAgICBzaG91bGRDb250aW51ZSA9IHRydWU7CiAgICAgICAgIHBy
ZXZpb3VzID0gbmV4dDsKLSAgICB9IHdoaWxlICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8IHNo
b3VsZENvbnRpbnVlKTsKKyAgICB9IHdoaWxlIChkYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGlu
dWUpOworICAgIHJldHVybiBkYXRhOworfQorCitBWFRleHRNYXJrZXIgQVhPYmplY3RDYWNoZTo6
bmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJU
KG1faWQgPT0gbWFya2VyLnRyZWVJRCgpKTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JO
ZXh0Q2hhcmFjdGVyT2Zmc2V0KG1hcmtlcik7CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6dGV4
dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYgdGV4
dE1hcmtlckRhdGEsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorVGV4
dE1hcmtlckRhdGEgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKIHsKLSAg
ICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7Ci0gICAgQ2hhcmFj
dGVyT2Zmc2V0IG5leHQgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgVGV4dE1hcmtlckRhdGEgZGF0
YTsKKyAgICBhdXRvIHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OworICAgIGF1dG8gbmV4dCA9
IGNoYXJhY3Rlck9mZnNldDsKICAgICBib29sIHNob3VsZENvbnRpbnVlOwogICAgIGRvIHsKICAg
ICAgICAgc2hvdWxkQ29udGludWUgPSBmYWxzZTsKICAgICAgICAgcHJldmlvdXMgPSBwcmV2aW91
c0NoYXJhY3Rlck9mZnNldChwcmV2aW91cywgZmFsc2UpOwotICAgICAgICB0ZXh0TWFya2VyRGF0
YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgcHJldmlvdXMpOwotICAgICAgICAK
KyAgICAgICAgZGF0YSA9IHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHByZXZpb3Vz
KTsKKwogICAgICAgICAvLyBXZSBzaG91bGQgc2tpcCBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQg
aWYgaXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFsZW5ndGhGb3JSYW5nZShy
YW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMsIG5leHQpKSkKICAgICAg
ICAgICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgbmV4dCA9IHByZXZpb3VzOwot
ICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOwor
ICAgIH0gd2hpbGUgKGRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CisgICAgcmV0dXJu
IGRhdGE7Cit9CisKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpwcmV2aW91c1RleHRNYXJr
ZXIoY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCit7CisgICAgQVNTRVJUKG1faWQgPT0gbWFy
a2VyLnRyZWVJRCgpKTsKKyAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJh
Y3Rlck9mZnNldChtYXJrZXIpOwogfQogCiBOb2RlKiBBWE9iamVjdENhY2hlOjpuZXh0Tm9kZShO
b2RlKiBub2RlKSBjb25zdApAQCAtMjc4OSw3OSArMjc3MCw0NCBAQCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlckRhdGEo
VGV4dE1hcgogICAgIHJldHVybiB0aGlzLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKIH0KIAotc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zKQorc3Rk
OjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFG
b3JWaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24p
CiB7Ci0gICAgaWYgKHZpc2libGVQb3MuaXNOdWxsKCkpCisgICAgaWYgKHZpc2libGVQb3NpdGlv
bi5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIFBvc2l0aW9u
IGRlZXBQb3MgPSB2aXNpYmxlUG9zLmRlZXBFcXVpdmFsZW50KCk7Ci0gICAgTm9kZSogZG9tTm9k
ZSA9IGRlZXBQb3MuYW5jaG9yTm9kZSgpOwotICAgIEFTU0VSVChkb21Ob2RlKTsKLSAgICBpZiAo
IWRvbU5vZGUpCisgICAgUG9zaXRpb24gcG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb24uZGVlcEVx
dWl2YWxlbnQoKTsKKyAgICBOb2RlKiBub2RlID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpOworICAg
IEFTU0VSVChub2RlKTsKKyAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CiAKLSAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpICYmIGRvd25jYXN0
PEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKS5pc1Bhc3N3b3JkRmllbGQoKSkKKyAgICBpZiAo
aXM8SFRNTElucHV0RWxlbWVudD4obm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
Km5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
CiAgICAgLy8gSWYgdGhlIHZpc2libGUgcG9zaXRpb24gaGFzIGFuIGFuY2hvciB0eXBlIHJlZmVy
cmluZyB0byBhIG5vZGUgb3RoZXIgdGhhbiB0aGUgYW5jaG9yZWQgbm9kZSwgd2Ugc2hvdWxkCiAg
ICAgLy8gc2V0IHRoZSB0ZXh0IG1hcmtlciBkYXRhIHdpdGggQ2hhcmFjdGVyT2Zmc2V0IHNvIHRo
YXQgdGhlIG9mZnNldCB3aWxsIGNvcnJlc3BvbmQgdG8gdGhlIG5vZGUuCi0gICAgQ2hhcmFjdGVy
T2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRp
b24odmlzaWJsZVBvcyk7Ci0gICAgaWYgKGRlZXBQb3MuYW5jaG9yVHlwZSgpID09IFBvc2l0aW9u
OjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IgfHwgZGVlcFBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRp
b246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKSB7Ci0gICAgICAgIFRleHRNYXJrZXJEYXRhIHRl
eHRNYXJrZXJEYXRhOwotICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICAgICAgcmV0dXJuIHRleHRNYXJr
ZXJEYXRhOwotICAgIH0KLQotICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vzc2liaWxpdHkg
b2JqZWN0IGZvciB0aGlzIG5vZGUKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvbU5vZGUt
PmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9
IGNhY2hlLT5nZXRPckNyZWF0ZShkb21Ob2RlKTsKLQotICAgIC8vIFRoaXMgbWVtb3J5IG11c3Qg
YmUgemVybydkIHNvIGluc3RhbmNlcyBvZiBUZXh0TWFya2VyRGF0YSBjYW4gYmUgdGVzdGVkIGZv
ciBieXRlLWVxdWl2YWxlbmNlLgotICAgIC8vIFdhcm5pbmc6IFRoaXMgaXMgcmlza3kgYW5kIGJh
ZCBiZWNhdXNlIFRleHRNYXJrZXJEYXRhIGlzIGEgbm9udHJpdmlhbCB0eXBlLgotICAgIFRleHRN
YXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4o
JnRleHRNYXJrZXJEYXRhKSwgMCwgc2l6ZW9mKFRleHRNYXJrZXJEYXRhKSk7Ci0gICAgCi0gICAg
dGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2JqZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0
YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSBkZWVwUG9zLmRl
cHJlY2F0ZWRFZGl0aW5nT2Zmc2V0KCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYW5jaG9yVHlwZSA9
IGRlZXBQb3MuYW5jaG9yVHlwZSgpOwotICAgIHRleHRNYXJrZXJEYXRhLmFmZmluaXR5ID0gdmlz
aWJsZVBvcy5hZmZpbml0eSgpOworICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVy
T2Zmc2V0RnJvbVZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAgIGlmIChwb3Np
dGlvbi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBw
b3NpdGlvbi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVu
KQorICAgICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKIAotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJh
Y3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRl
eCA9IGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4OwotCi0gICAgY2FjaGUtPnNldE5vZGVJblVz
ZShkb21Ob2RlKTsKLQotICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YTsKKyAgICBhdXRvKiBjYWNo
ZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGNhY2hlLT5zZXROb2Rl
SW5Vc2Uobm9kZSk7CisgICAgcmV0dXJuIHsgeyBjYWNoZSwgbm9kZSwgdmlzaWJsZVBvc2l0aW9u
LAorICAgICAgICBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9m
ZnNldCwgZmFsc2UgfSB9OwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0LgorLy8gVGhp
cyBmdW5jdGlvbiBleGlzdHMgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQg
YSBzeW5jaHJvbm91cyBsYXlvdXQuCiBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KHRleHRDb250cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRyb2wuZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVu
dCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hl
LT5nZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwotICAgIGlmICghb2JqKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28g
aW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZh
bGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4
dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRh
dGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0
YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4
dENvbnRyb2w7Ci0KICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7Ci0KLSAg
ICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAgcmV0dXJuIHsgeyBjYWNoZSwgJnRleHRDb250
cm9sLCB7IH0gfSB9OwogfQogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6bmV4dENo
YXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCwgYm9v
bCBpZ25vcmVOZXh0Tm9kZVN0YXJ0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWE9iamVjdENhY2hlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaAppbmRleCBiY2RmM2JhOTg2YjMuLjExYjI5MWEwYmJhOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTQ0LDYgKzQ0LDcg
QEAgY2xhc3MgVGV4dFN0cmVhbTsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjbGFzcyBBWFRl
eHRNYXJrZXI7CiBjbGFzcyBEb2N1bWVudDsKIGNsYXNzIEhUTUxBcmVhRWxlbWVudDsKIGNsYXNz
IEhUTUxUYWJsZUVsZW1lbnQ7CkBAIC01NiwxOSArNTcsNyBAQCBjbGFzcyBSZW5kZXJUZXh0Owog
Y2xhc3MgU2Nyb2xsVmlldzsKIGNsYXNzIFZpc2libGVQb3NpdGlvbjsKIGNsYXNzIFdpZGdldDsK
LQotc3RydWN0IFRleHRNYXJrZXJEYXRhIHsKLSAgICBBWElEIGF4SUQ7Ci0KLSAgICBOb2RlKiBu
b2RlIHsgbnVsbHB0ciB9OwotICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKLSAgICBQb3NpdGlv
bjo6QW5jaG9yVHlwZSBhbmNob3JUeXBlIHsgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvciB9OwotICAgIEFmZmluaXR5IGFmZmluaXR5IHsgQWZmaW5pdHk6OkRvd25zdHJlYW0gfTsK
LQotICAgIGludCBjaGFyYWN0ZXJTdGFydEluZGV4IHsgMCB9OwotICAgIGludCBjaGFyYWN0ZXJP
ZmZzZXQgeyAwIH07Ci0gICAgYm9vbCBpZ25vcmVkIHsgZmFsc2UgfTsKLX07CitzdHJ1Y3QgVGV4
dE1hcmtlckRhdGE7CiAKIHN0cnVjdCBDaGFyYWN0ZXJPZmZzZXQgewogICAgIE5vZGUqIG5vZGU7
CkBAIC0yMzYsMTUgKzIyNSwxNyBAQCBwdWJsaWM6CiAgICAgLy8gVGV4dCBtYXJrZXIgdXRpbGl0
aWVzLgogICAgIHN0ZDo6b3B0aW9uYWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9y
VmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwogICAgIHN0ZDo6b3B0aW9u
YWw8VGV4dE1hcmtlckRhdGE+IHRleHRNYXJrZXJEYXRhRm9yRmlyc3RQb3NpdGlvbkluVGV4dENv
bnRyb2woSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQmKTsKLSAgICB2b2lkIHRleHRNYXJrZXJE
YXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0Jik7Ci0gICAgdm9pZCB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4
dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAgICB2b2lkIHRleHRNYXJr
ZXJEYXRhRm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9y
VGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKKyAgICBUZXh0TWFya2VyRGF0YSB0ZXh0
TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAg
ICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhUZXh0TWFya2VyIG5leHRUZXh0TWFya2VyKGNv
bnN0IEFYVGV4dE1hcmtlciYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhRm9y
UHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhU
ZXh0TWFya2VyIHByZXZpb3VzVGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoY29uc3QgVGV4
dE1hcmtlckRhdGEmKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4
dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICAvLyBVc2UgaWdub3JlTmV4dE5vZGVT
dGFydC9pZ25vcmVQcmV2aW91c05vZGVFbmQgdG8gZGV0ZXJtaW5lIHRoZSBiZWhhdmlvciB3aGVu
IHdlIGFyZSBhdCBub2RlIGJvdW5kYXJ5LiAKICAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dENoYXJh
Y3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZU5leHROb2RlU3Rh
cnQgPSB0cnVlKTsKICAgICBDaGFyYWN0ZXJPZmZzZXQgcHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQo
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCBpZ25vcmVQcmV2aW91c05vZGVFbmQgPSB0cnVl
KTsKLSAgICB2b2lkIHN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJE
YXRhJiwgY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sKTsKKyAgICBUZXh0TWFya2VyRGF0YSBzdGFy
dE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYsIGJvb2wpOwog
ICAgIENoYXJhY3Rlck9mZnNldCBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29u
c3QgU2ltcGxlUmFuZ2UmLCBib29sLCBib29sIGVudGVyVGV4dENvbnRyb2xzID0gZmFsc2UpOwog
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2Vy
RGF0YShUZXh0TWFya2VyRGF0YSYpOwogICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHJh
bmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhjb25zdCBDaGFyYWN0ZXJPZmZzZXQmLCBj
b25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKQEAgLTQ1Niw3ICs0NDcsNiBAQCBwcm90ZWN0ZWQ6CiAg
ICAgQ2hhcmFjdGVyT2Zmc2V0IHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvbnN0IFNpbXBsZVJh
bmdlJiwgaW50LCBUcmF2ZXJzZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCwgYm9vbCBz
dGF5V2l0aGluUmFuZ2UgPSBmYWxzZSk7CiAgICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3Np
dGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgQ2hh
cmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZyb21WaXNpYmxlUG9zaXRpb24oY29uc3QgVmlz
aWJsZVBvc2l0aW9uJik7Ci0gICAgdm9pZCBzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJP
ZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hh
cjMyIGNoYXJhY3RlckFmdGVyKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIg
Y2hhcmFjdGVyQmVmb3JlKGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9m
ZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5kT2Zmc2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNl
T3B0aW9uID0gVHJhdmVyc2VPcHRpb25EZWZhdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAuLjQ2OTU1YmExYTMyNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCisK
KyNpbmNsdWRlICJBWFRyZWVTdG9yZS5oIgorI2luY2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIK
KyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRl
eHRNYXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3Np
dGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKHZpc2libGVQ
b3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgTm9kZSogbm9kZSA9IHZp
c2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmFuY2hvck5vZGUoKTsKKyAgICBBU1NFUlQo
bm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNo
ZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGlmICghY2FjaGUpCisg
ICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIGRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRh
dGFGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKSkKKyAgICAgICAgbV9kYXRhID0g
KmRhdGE7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhUZXh0TWFya2VyKGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisK
KyAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAg
ICBpZiAoYXV0byogY2FjaGUgPSBjaGFyYWN0ZXJPZmZzZXQubm9kZS0+ZG9jdW1lbnQoKS5heE9i
amVjdENhY2hlKCkpCisgICAgICAgIG1fZGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNo
YXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworfQorCitBWFRleHRNYXJrZXI6Om9wZXJh
dG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKKworICAgIGF1dG8qIGNhY2hlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVG
b3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIGNhY2hlID8gY2FjaGUtPnZpc2libGVQb3NpdGlv
bkZvclRleHRNYXJrZXJEYXRhKG1fZGF0YSkgOiBWaXNpYmxlUG9zaXRpb24oKTsKK30KKworQVhU
ZXh0TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VS
VChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoaXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisg
ICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGFyYWN0ZXJPZmZzZXQgcmVzdWx0KG1fZGF0YS5u
b2RlLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnQsIG1fZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAg
IC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFwIGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlz
IHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBtYXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUg
cHJldmlvdXMgbGluZS4KKyAgICAvLyBXZSB1c2UgdGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNl
dCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJhbmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5p
dHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKSB7CisgICAgICAgIGlmIChhdXRvIGNhY2hlID0gQVhU
cmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVGb3JJRChtX2RhdGEuYXhUcmVlSUQoKSkpCisg
ICAgICAgICAgICByZXR1cm4gY2FjaGUtPnByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwg
ZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitBWENvcmVPYmplY3QqIEFY
VGV4dE1hcmtlcjo6b2JqZWN0KCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0cmVlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RD
YWNoZT46OnRyZWVGb3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIHRyZWUgPyB0cmVlLT5vYmpl
Y3RGb3JJRChvYmplY3RJRCgpKSA6IG51bGxwdHI7Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJV
R0dJTkcpCitTdHJpbmcgQVhUZXh0TWFya2VyOjpkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sK
KyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiAiPG51bGw+Il9zOworCisgICAgYXV0
byBzZXBhcmF0b3IgPSAiLCAiOworICAgIHJldHVybiBtYWtlU3RyaW5nKAorICAgICAgICAidHJl
ZUlEICIsIHRyZWVJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9i
amVjdElEICIsIG9iamVjdElEKCkubG9nZ2luZ1N0cmluZygpCisgICAgICAgICwgc2VwYXJhdG9y
LCBub2RlKCktPmRlYnVnRGVzY3JpcHRpb24oKQorICAgICAgICAsIHNlcGFyYXRvciwgIm9mZnNl
dCAiLCBtX2RhdGEub2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiQW5jaG9yVHlwZSAiLCBt
X2RhdGEuYW5jaG9yVHlwZQorICAgICAgICAsIHNlcGFyYXRvciwgIkFmZmluaXR5ICIsIG1fZGF0
YS5hZmZpbml0eQorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3RlclN0YXJ0ICIsIG1fZGF0
YS5jaGFyYWN0ZXJTdGFydAorICAgICAgICAsIHNlcGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAi
LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0CisgICAgICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVk
ICIsIGlzSWdub3JlZCgpCisgICAgKTsKK30KKyNlbmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6
QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorICAg
IDogbV9zdGFydChyYW5nZS5zdGFydCkKKyAgICAsIG1fZW5kKHJhbmdlLmVuZCkKK3sKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworfQorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFy
a2VyUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mIHJhbmdlKQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvKiBjYWNoZSA9IHJhbmdlLT5zdGFydC5kb2N1bWVudCgpLmF4T2JqZWN0
Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3N0YXJ0
ID0gQVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2Uo
KnJhbmdlLCB0cnVlKSk7CisgICAgbV9lbmQgPSBBWFRleHRNYXJrZXIoY2FjaGUtPnN0YXJ0T3JF
bmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFuZ2UsIGZhbHNlKSk7Cit9CisKK0FYVGV4dE1h
cmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShjb25zdCBBWFRleHRNYXJrZXImIHMsIGNvbnN0
IEFYVGV4dE1hcmtlciYgZSkKKyAgICA6IG1fc3RhcnQocykKKyAgICAsIG1fZW5kKGUpCit7Cit9
CisKK0FYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNv
bnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICByZXR1cm4geyBtX3N0YXJ0
LCBtX2VuZCB9OworfQorCitzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJS
YW5nZTo6c2ltcGxlUmFuZ2UoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7
CisKKyAgICBhdXRvIHN0YXJ0Qm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fc3Rh
cnQpOworICAgIGF1dG8gZW5kQm91bmRhcnlQb2ludCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZW5k
KTsKKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2ludCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7ICpzdGFydEJvdW5kYXJ5
UG9pbnQsICplbmRCb3VuZGFyeVBvaW50IH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi44MjJjNjc0M2ZjMjcKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0w
LDAgKzEsMTgxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwor
ICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVhP
YmplY3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBUZXh0TWFya2Vy
RGF0YSB7CisgICAgdW5zaWduZWQgdHJlZUlEOworICAgIHVuc2lnbmVkIG9iamVjdElEOworCisg
ICAgTm9kZSogbm9kZTsKKyAgICB1bnNpZ25lZCBvZmZzZXQ7CisgICAgUG9zaXRpb246OkFuY2hv
clR5cGUgYW5jaG9yVHlwZTsKKyAgICBBZmZpbml0eSBhZmZpbml0eTsKKworICAgIHVuc2lnbmVk
IGNoYXJhY3RlclN0YXJ0OworICAgIHVuc2lnbmVkIGNoYXJhY3Rlck9mZnNldDsKKyAgICBib29s
IGlnbm9yZWQ7CisKKyAgICAvLyBDb25zdHJ1Y3RvcnMgb2YgVGV4dE1hcmtlckRhdGEgbXVzdCB6
ZXJvIHRoZSBzdHJ1Y3QncyBibG9jayBvZiBtZW1vcnkgYmVjYXVzZSBwbGF0Zm9ybSBjbGllbnQg
Y29kZSBtYXkgcmVseSBvbiBhIGJ5dGUtY29tcGFyaXNvbiB0byBkZXRlcm1pbmUgaW5zdGFuY2Vz
IGVxdWFsaXR5LgorICAgIC8vIE1lbWJlcnMgaW5pdGlhbGl6YXRpb24gYWxvbmUgaXMgbm90IGVu
b3VnaCB0byBndWFyYW50eSB0aGF0IGFsbCBieXRlcyBpbiB0aGUgc3RydWN0IG1lbWVvcnkgYXJl
IGluaXRpYWxpemVkLCBhbmQgbWF5IGNhdXNlIHJhbmRvbSBpbmVxdWFsaXRpZXMgd2hlbiBkb2lu
ZyBieXRlLWNvbXBhcmlzb25zLgorICAgIC8vIEZvciBhbiBleGFtcGVsIG9mIHN1Y2ggYnl0ZS1j
b21wYXJpc29uLCBzZWUgdGhlIFRlc3RSdW5uZXIgV1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
cjo6aXNFcXVhbC4KKyAgICBUZXh0TWFya2VyRGF0YSgpCisgICAgeworICAgICAgICBtZW1zZXQo
c3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAg
ICBUZXh0TWFya2VyRGF0YShBWElEIGF4VHJlZUlELCBBWElEIGF4T2JqZWN0SUQsCisgICAgICAg
IE5vZGUqIG5vZGVQYXJhbSA9IG51bGxwdHIsIHVuc2lnbmVkIG9mZnNldFBhcmFtID0gMCwKKyAg
ICAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZVBhcmFtID0gUG9zaXRpb246OlBv
c2l0aW9uSXNPZmZzZXRJbkFuY2hvciwKKyAgICAgICAgQWZmaW5pdHkgYWZmaW5pdHlQYXJhbSA9
IEFmZmluaXR5OjpEb3duc3RyZWFtLAorICAgICAgICB1bnNpZ25lZCBjaGFyU3RhcnQgPSAwLCB1
bnNpZ25lZCBjaGFyT2Zmc2V0ID0gMCwgYm9vbCBpZ25vcmVkUGFyYW0gPSBmYWxzZSkKKyAgICB7
CisgICAgICAgIG1lbXNldChzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAsIHNpemVvZigqdGhp
cykpOworICAgICAgICB0cmVlSUQgPSBheFRyZWVJRC50b1VJbnQ2NCgpOworICAgICAgICBvYmpl
Y3RJRCA9IGF4T2JqZWN0SUQudG9VSW50NjQoKTsKKyAgICAgICAgbm9kZSA9IG5vZGVQYXJhbTsK
KyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0UGFyYW07CisgICAgICAgIGFuY2hvclR5cGUgPSBhbmNo
b3JUeXBlUGFyYW07CisgICAgICAgIGFmZmluaXR5ID0gYWZmaW5pdHlQYXJhbTsKKyAgICAgICAg
Y2hhcmFjdGVyU3RhcnQgPSBjaGFyU3RhcnQ7CisgICAgICAgIGNoYXJhY3Rlck9mZnNldCA9IGNo
YXJPZmZzZXQ7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVkUGFyYW07CisgICAgfQorCisgICAg
VGV4dE1hcmtlckRhdGEoQVhPYmplY3RDYWNoZSogY2FjaGUsIE5vZGUqIG5vZGVQYXJhbSwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9zaXRpb24sCisgICAgICAgIGludCBjaGFyU3Rh
cnQgPSAwLCBpbnQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZFBhcmFtID0gZmFsc2UpCisg
ICAgeworICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2Yo
KnRoaXMpKTsKKyAgICAgICAgaWYgKGNhY2hlKSB7CisgICAgICAgICAgICB0cmVlSUQgPSBjYWNo
ZS0+dHJlZUlEKCkudG9VSW50NjQoKTsKKworICAgICAgICAgICAgaWYgKFJlZlB0ciBvYmplY3Qg
PSBjYWNoZS0+Z2V0T3JDcmVhdGUobm9kZVBhcmFtKSkKKyAgICAgICAgICAgICAgICBvYmplY3RJ
RCA9IG9iamVjdC0+b2JqZWN0SUQoKS50b1VJbnQ2NCgpOworICAgICAgICB9CisKKyAgICAgICAg
bm9kZSA9IG5vZGVQYXJhbTsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlv
bi5kZWVwRXF1aXZhbGVudCgpOworICAgICAgICBvZmZzZXQgPSAhdmlzaWJsZVBvc2l0aW9uLmlz
TnVsbCgpID8gc3RkOjptYXgocG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMCkg
OiAwOworICAgICAgICBhbmNob3JUeXBlID0gcG9zaXRpb24uYW5jaG9yVHlwZSgpOworICAgICAg
ICBhZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOworCisgICAgICAgIGNoYXJh
Y3RlclN0YXJ0ID0gc3RkOjptYXgoY2hhclN0YXJ0LCAwKTsKKyAgICAgICAgY2hhcmFjdGVyT2Zm
c2V0ID0gc3RkOjptYXgoY2hhck9mZnNldCwgMCk7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVk
UGFyYW07CisgICAgfQorCisgICAgQVhJRCBheFRyZWVJRCgpIGNvbnN0CisgICAgeworICAgICAg
ICByZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8QVhJRFR5cGU+KHRyZWVJRCk7CisgICAgfQor
CisgICAgQVhJRCBheE9iamVjdElEKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtYWtl
T2JqZWN0SWRlbnRpZmllcjxBWElEVHlwZT4ob2JqZWN0SUQpOworICAgIH0KK307CisKKyNpZiBQ
TEFURk9STShNQUMpCit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJEYXRhID0gQVhUZXh0TWFya2Vy
UmVmOworI2VsaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKK3VzaW5nIFBsYXRmb3JtVGV4dE1hcmtl
ckRhdGEgPSBOU0RhdGEgKjs7CisjZW5kaWYKKworY2xhc3MgQVhUZXh0TWFya2VyIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKKyAgICBmcmllbmQgY2xhc3MgQVhUZXh0TWFya2VyUmFu
Z2U7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzCisgICAgQVhUZXh0TWFya2VyKGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpOworICAgIEFYVGV4dE1hcmtlcihjb25zdCBDaGFyYWN0ZXJPZmZz
ZXQmKTsKKyAgICBBWFRleHRNYXJrZXIoY29uc3QgVGV4dE1hcmtlckRhdGEmIGRhdGEpCisgICAg
ICAgIDogbV9kYXRhKGRhdGEpCisgICAgeyB9CisgICAgQVhUZXh0TWFya2VyKFRleHRNYXJrZXJE
YXRhJiYgZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7IH0KKyNpZiBQTEFURk9S
TShDT0NPQSkKKyAgICBBWFRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyRGF0YSk7CisjZW5k
aWYKKyAgICBBWFRleHRNYXJrZXIoKSA9IGRlZmF1bHQ7CisKKyAgICBvcGVyYXRvciBib29sKCkg
Y29uc3QgeyByZXR1cm4gIWlzTnVsbCgpOyB9CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9u
KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3Q7CisKKyNpZiBQ
TEFURk9STShDT0NPQSkKKyAgICBSZXRhaW5QdHI8UGxhdGZvcm1UZXh0TWFya2VyRGF0YT4gcGxh
dGZvcm1EYXRhKCkgY29uc3Q7CisgICAgb3BlcmF0b3IgUGxhdGZvcm1UZXh0TWFya2VyRGF0YSgp
IGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtRGF0YSgpLmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRpZgor
CisgICAgQVhJRCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXhUcmVlSUQoKTsgfQor
ICAgIEFYSUQgb2JqZWN0SUQoKSBjb25zdCB7IHJldHVybiBtX2RhdGEuYXhPYmplY3RJRCgpOyB9
CisgICAgQVhDb3JlT2JqZWN0KiBvYmplY3QoKSBjb25zdDsKKworLy8gICAgVGV4dE1hcmtlckRh
dGEgY29uc3QmIGRhdGEoKSBjb25zdCB7IHJldHVybiBtX2RhdGE7IH0KKyAgICBOb2RlKiBub2Rl
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLm5vZGU7IH0KKyAgICBib29sIGlzSWdub3JlZCgpIGNv
bnN0IHsgcmV0dXJuIG1fZGF0YS5pZ25vcmVkOyB9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJ
TkcpCisgICAgU3RyaW5nIGRlYnVnRGVzY3JpcHRpb24oKSBjb25zdDsKKyNlbmRpZgorCitwcml2
YXRlOgorICAgIGJvb2wgaXNOdWxsKCkgY29uc3QgeyByZXR1cm4gIXRyZWVJRCgpLmlzVmFsaWQo
KSB8fCAhb2JqZWN0SUQoKS5pc1ZhbGlkKCk7IH0KKyAgICBUZXh0TWFya2VyRGF0YSBtX2RhdGE7
Cit9OworCitjbGFzcyBBWFRleHRNYXJrZXJSYW5nZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7CitwdWJsaWM6CisgICAgLy8gQ29uc3RydWN0b3JzLgorICAgIEFYVGV4dE1hcmtlclJh
bmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2Uo
Y29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKTsKKyAgICBBWFRleHRNYXJrZXJSYW5n
ZShjb25zdCBBWFRleHRNYXJrZXImLCBjb25zdCBBWFRleHRNYXJrZXImKTsKKyNpZiBQTEFURk9S
TShNQUMpCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYpOworI2Vu
ZGlmCisgICAgQVhUZXh0TWFya2VyUmFuZ2UoKSA9IGRlZmF1bHQ7CisKKyAgICBvcGVyYXRvciBi
b29sKCkgY29uc3QgeyByZXR1cm4gIW1fc3RhcnQuaXNOdWxsKCkgJiYgIW1fZW5kLmlzTnVsbCgp
OyB9CisgICAgb3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBjb25zdDsKKyAgICBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBzaW1wbGVSYW5nZSgpIGNvbnN0OworCisjaWYgUExBVEZP
Uk0oTUFDKQorICAgIFJldGFpblB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gcGxhdGZvcm1EYXRh
KCkgY29uc3Q7CisgICAgb3BlcmF0b3IgQVhUZXh0TWFya2VyUmFuZ2VSZWYoKSBjb25zdCB7IHJl
dHVybiBwbGF0Zm9ybURhdGEoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFYVGV4
dE1hcmtlciBzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RhcnQ7IH0KKyAgICBBWFRleHRNYXJr
ZXIgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9lbmQ7IH0KK3ByaXZhdGU6CisgICAgQVhUZXh0TWFy
a2VyIG1fc3RhcnQ7CisgICAgQVhUZXh0TWFya2VyIG1fZW5kOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRy
ZWVTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oCmlu
ZGV4IDMyMWRlZWZiMjJhOS4uODc0NDczOTE4N2ViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9BWFRyZWVTdG9yZS5oCkBAIC0zNiwxNSArMzYsMTYgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVD4KIGNsYXNzIEFYVHJlZVN0b3JlIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBWFRy
ZWVTdG9yZSk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgQVhJ
RCB0cmVlSUQoKSBjb25zdCB7IHJldHVybiBtX2lkOyB9CisgICAgc3RhdGljIFQqIHRyZWVGb3JJ
RChBWElEKTsKIHByb3RlY3RlZDoKICAgICBBWFRyZWVTdG9yZSgpID0gZGVmYXVsdDsKICAgICBz
dGF0aWMgdm9pZCBhZGQoQVhJRCwgV2Vha1B0cjxUPik7CiAgICAgc3RhdGljIHZvaWQgcmVtb3Zl
KEFYSUQpOwogICAgIHN0YXRpYyBib29sIGNvbnRhaW5zKEFYSUQpOwogCi0gICAgc3RhdGljIFJl
ZlB0cjxUPiB0cmVlRm9ySUQoQVhJRCk7CiAgICAgc3RhdGljIEFYSUQgZ2VuZXJhdGVOZXdJRCgp
OwotCiAgICAgY29uc3QgQVhJRCBtX2lkIHsgZ2VuZXJhdGVOZXdJRCgpIH07CiAgICAgc3RhdGlj
IExvY2sgc19zdG9yZUxvY2s7CiBwcml2YXRlOgpAQCAtNzMsNyArNzQsNyBAQCBpbmxpbmUgYm9v
bCBBWFRyZWVTdG9yZTxUPjo6Y29udGFpbnMoQVhJRCBheElEKQogfQogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgotaW5saW5lIFJlZlB0cjxUPiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQg
YXhJRCkKK2lubGluZSBUKiBBWFRyZWVTdG9yZTxUPjo6dHJlZUZvcklEKEFYSUQgYXhJRCkKIHsK
ICAgICBMb2NrZXIgbG9ja2VyIHsgc19zdG9yZUxvY2sgfTsKICAgICByZXR1cm4gbWFwKCkuZ2V0
KGF4SUQpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9j
b2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
Y29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi5iNGNlYmIxZDQ1NTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tCkBAIC0wLDAgKzEsOTAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkK
KyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJBWFRleHRNYXJr
ZXIuaCIKKworI2lmIFBMQVRGT1JNKE1BQykKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyTWFjLmgiCisjaW1wb3J0IDxwYWwvc3BpL21hYy9ISVNlcnZpY2VzU1BJLmg+Cisj
ZWxzZSAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorI2ltcG9ydCAiV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK0FYVGV4
dE1hcmtlcjo6QVhUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlckRhdGEgcGxhdGZvcm1EYXRh
KQoreworICAgIGlmICghcGxhdGZvcm1EYXRhKQorICAgICAgICByZXR1cm47CisKKyNpZiBQTEFU
Rk9STShNQUMpCisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHBsYXRmb3JtRGF0YSkgPT0gQVhUZXh0
TWFya2VyR2V0VHlwZUlEKCkpOworICAgIGlmIChDRkdldFR5cGVJRChwbGF0Zm9ybURhdGEpICE9
IEFYVGV4dE1hcmtlckdldFR5cGVJRCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBBU1NFUlQo
QVhUZXh0TWFya2VyR2V0TGVuZ3RoKHBsYXRmb3JtRGF0YSkgPT0gc2l6ZW9mKG1fZGF0YSkpOwor
ICAgIGlmIChBWFRleHRNYXJrZXJHZXRMZW5ndGgocGxhdGZvcm1EYXRhKSAhPSBzaXplb2YobV9k
YXRhKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbWVtY3B5KCZtX2RhdGEsIEFYVGV4dE1hcmtl
ckdldEJ5dGVQdHIocGxhdGZvcm1EYXRhKSwgc2l6ZW9mKG1fZGF0YSkpOworI2Vsc2UgLy8gUExB
VEZPUk0oSU9TX0ZBTUlMWSkKKyAgICBbcGxhdGZvcm1EYXRhIGdldEJ5dGVzOiZtX2RhdGEgbGVu
Z3RoOnNpemVvZihtX2RhdGEpXTsKKyNlbmRpZgorfQorCitSZXRhaW5QdHI8UGxhdGZvcm1UZXh0
TWFya2VyRGF0YT4gQVhUZXh0TWFya2VyOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworI2lmIFBM
QVRGT1JNKE1BQykKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxs
b2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmbV9kYXRhLCBzaXplb2YobV9kYXRhKSkpOwor
I2Vsc2UgLy8gUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICByZXR1cm4gW05TRGF0YSBkYXRhV2l0
aEJ5dGVzOiZtX2RhdGEgbGVuZ3RoOnNpemVvZihtX2RhdGEpXTsKKyNlbmRpZgorfQorCisjaWYg
UExBVEZPUk0oTUFDKQorQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1hcmtlclJhbmdlKEFYVGV4
dE1hcmtlclJhbmdlUmVmIHRleHRNYXJrZXJSYW5nZVJlZikKK3sKKyAgICBBU1NFUlQoQ0ZHZXRU
eXBlSUQodGV4dE1hcmtlclJhbmdlUmVmKSA9PSBBWFRleHRNYXJrZXJSYW5nZUdldFR5cGVJRCgp
KTsKKworICAgIGF1dG8gc3RhcnQgPSBBWFRleHRNYXJrZXJSYW5nZUNvcHlTdGFydE1hcmtlcih0
ZXh0TWFya2VyUmFuZ2VSZWYpOworICAgIGF1dG8gZW5kID0gQVhUZXh0TWFya2VyUmFuZ2VDb3B5
RW5kTWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZik7CisKKyAgICBtX3N0YXJ0ID0gc3RhcnQ7Cisg
ICAgbV9lbmQgPSBlbmQ7CisKKyAgICBDRlJlbGVhc2Uoc3RhcnQpOworICAgIENGUmVsZWFzZShl
bmQpOworfQorCitSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IEFYVGV4dE1hcmtlclJh
bmdlOjpwbGF0Zm9ybURhdGEoKSBjb25zdAoreworICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1h
cmtlclJhbmdlQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQKKyAgICAgICAgLCBtX3N0YXJ0LnBs
YXRmb3JtRGF0YSgpLmF1dG9yZWxlYXNlKCkKKyAgICAgICAgLCBtX2VuZC5wbGF0Zm9ybURhdGEo
KS5hdXRvcmVsZWFzZSgpCisgICAgKSk7Cit9CisjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQorCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
Lm1tCmluZGV4IGUzYTJlNjFjNmViOC4uMDM4MzZjZjIzNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlcklPUy5tbQpAQCAtMTgxLDI4ICsxODEsMjIgQEAgKyAoV2ViQWNjZXNz
aWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyV2l0aFZpc2libGVQb3NpdGlvbjooVmlzaWJs
ZVBvc2l0aW9uJikKIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2Vy
V2l0aENoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQgY2Fj
aGU6KEFYT2JqZWN0Q2FjaGUqKWNhY2hlCiB7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0
dXJuIG5pbDsKLSAgICAKLSAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQorICAgIGlm
ICghY2FjaGUgfHwgY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gbmls
OwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50
ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVy
T2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQgJiYgIXRleHRNYXJrZXJEYXRh
Lmlnbm9yZWQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRleHRNYXJrZXJE
YXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgaWYgKCF0ZXh0TWFy
a2VyRGF0YS5vYmplY3RJRCAmJiAhdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSku
YXV0b3JlbGVhc2UoKTsKIH0KIAogKyAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclJhbmdlOihjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdl
PiYpcmFuZ2UgaXNTdGFydDooQk9PTClpc1N0YXJ0IGNhY2hlOihBWE9iamVjdENhY2hlKiljYWNo
ZQogewotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgaWYgKCFyYW5n
ZSkKKyAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICBU
ZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+c3RhcnRPckVuZFRleHRN
YXJrZXJEYXRhRm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwgaXNTdGFydCk7Ci0gICAg
aWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNh
Y2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSgqcmFuZ2UsIGlzU3RhcnQpOwor
ICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5p
dFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNl
KCk7CiB9CkBAIC0yNjczLDI2ICsyNjY3LDI0IEBAIC0gKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyICopdGV4dE1hcmtlckZvclBvaW50OihDR1BvaW50KXBvaW50CiAKIC0gKFdlYkFjY2Vzc2li
aWxpdHlUZXh0TWFya2VyICopbmV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVy
T2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKIHsKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSBz
ZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRh
dGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9y
TmV4dENoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4dE1hcmtl
ckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgcmV0dXJuIGFkb3B0TlMo
W1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdpdGhUZXh0TWFya2VyOiZ0
ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7CiB9CiAKIC0gKFdlYkFj
Y2Vzc2liaWxpdHlUZXh0TWFya2VyICopcHJldmlvdXNNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6
KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0CiB7Ci0gICAgQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8q
IGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAo
IWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRl
eHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+dGV4
dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwor
ICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAgICAgICAgIHJldHVybiBuaWw7CiAg
ICAgcmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5p
dFdpdGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNl
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9i
amVjdENhY2hlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmpl
Y3RDYWNoZU1hYy5tbQppbmRleCA3YjkyZGJhM2E0YTcuLjE1ZWJmMzU0OWQzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENhY2hlTWFjLm1t
CkBAIC04MjEsMTEgKzgyMSw5IEBAIEFYVGV4dE1hcmtlclJlZiB0ZXh0TWFya2VyRm9yQ2hhcmFj
dGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBDaGFyYWN0CiAgICAgaWYgKCFj
YWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJr
ZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0g
Y2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7
CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25v
cmVkKQogICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFy
a2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJE
YXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3JlbGVhc2UoKTsKIH0KIApAQCAtODQ3
LDExICs4NDUsOSBAQCBBWFRleHRNYXJrZXJSZWYgc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5n
ZShBWE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3Qgc3RkOjpvcAogICAgIGlmICghY2FjaGUgfHwg
IXJhbmdlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1h
cmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKHRl
eHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEu
YXhJRCkKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFy
a2VyRGF0YUZvclJhbmdlKCpyYW5nZSwgaXNTdGFydCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0
YS5vYmplY3RJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBhZG9wdENGKEFY
VGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0
TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNDIzNGNkNjlmOTE5
Li4wNWM2NTcxMzY4MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CkBAIC0zMyw2ICszMyw3IEBACiAKICNpbXBvcnQgIkFYTG9nZ2VyLmgiCiAjaW1wb3J0ICJBWE9i
amVjdENhY2hlLmgiCisjaW1wb3J0ICJBWFRleHRNYXJrZXIuaCIKICNpbXBvcnQgIkFjY2Vzc2li
aWxpdHlBUklBR3JpZFJvdy5oIgogI2ltcG9ydCAiQWNjZXNzaWJpbGl0eUxhYmVsLmgiCiAjaW1w
b3J0ICJBY2Nlc3NpYmlsaXR5TGlzdC5oIgpAQCAtNzE3LDM4ICs3MTgsMjIgQEAgc3RhdGljIHN0
ZDo6cGFpcjxzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiwgQWNjZXNzaWJpbGl0eVNlYXJjaERp
cmVjdGlvbj4gYWNjZXMKIAogI3ByYWdtYSBtYXJrIFRleHQgTWFya2VyIGhlbHBlcnMKIAotc3Rh
dGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVy
T2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1hcmtlcihB
WE9iamVjdENhY2hlKiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCiB7CiAgICAg
aWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0
YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFj
dGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4
dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gYWRvcHRD
RihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikm
dGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKKworICAgIGF1dG8gbmV4
dE1hcmtlciA9IGNhY2hlLT5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgIHJldHVybiBuZXh0
TWFya2VyID8gbmV4dE1hcmtlci5wbGF0Zm9ybURhdGEoKSA6IG5pbDsKIH0KIAotc3RhdGljIFJl
dGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9m
ZnNldChBWE9iamVjdENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZz
ZXQpCitzdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2Vy
KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKIHsKICAg
ICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRleHRNYXJrZXJE
YXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3Vz
Q2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlm
ICghdGV4dE1hcmtlckRhdGEuYXhJRCkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4g
YWRvcHRDRihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJ
bnQ4KikmdGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKTsKLX0KLQotLSAo
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4pbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZz
ZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0Ci17Ci0gICAgcmV0dXJuIG5leHRU
ZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVj
dENhY2hlKCksIGNoYXJhY3Rlck9mZnNldCk7Ci19CiAKLS0gKFJldGFpblB0cjxBWFRleHRNYXJr
ZXJSZWY+KXByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zm
c2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICByZXR1cm4gcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGNo
YXJhY3Rlck9mZnNldCk7CisgICAgYXV0byBwcmV2aW91c01hcmtlciA9IGNhY2hlLT5wcmV2aW91
c1RleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gcHJldmlvdXNNYXJrZXIgPyBwcmV2aW91
c01hcmtlci5wbGF0Zm9ybURhdGEoKSA6IG5pbDsKIH0KIAogLy8gRklYTUU6IFJlbW92ZSB0aGlz
IG1ldGhvZCBzaW5jZSBjbGllbnRzIHNob3VsZCBub3QgbmVlZCB0byBjYWxsIHRoaXMgbWV0aG9k
IGFuZCBzaG91bGQgbm90IGJlIGV4cG9zZWQgaW4gdGhlIHB1YmxpYyBpbnRlcmZhY2UuCkBAIC0z
Mzc0LDI0ICszMzU5LDI0IEBAIC0gKEFYVGV4dE1hcmtlclJhbmdlUmVmKWxpbmVUZXh0TWFya2Vy
UmFuZ2VGb3JUZXh0TWFya2VyOihBWFRleHRNYXJrZXJSZWYpdGV4dE1hCiAgICAgICAgIGlmICgh
Y2FjaGUpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgIGF1dG8gdmlzaWJsZVBv
c2l0aW9uID0gdmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7
CisgICAgICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CiAgICAgICAgIFZpc2li
bGVQb3NpdGlvblJhbmdlIHZpc2libGVQb3NpdGlvblJhbmdlOwogICAgICAgICBzd2l0Y2ggKHRl
eHRVbml0KSB7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OkxpbmU6Ci0gICAgICAgICAgICB2aXNp
YmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKHZp
c2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tp
bmdPYmplY3QtPmxpbmVSYW5nZUZvclBvc2l0aW9uKG1hcmtlcik7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGVmdExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxl
UG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFu
Z2UodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0g
YmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZShtYXJrZXIpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgVGV4dFVuaXQ6OlJpZ2h0TGluZToKLSAgICAg
ICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+cmlnaHRMaW5lVmlz
aWJsZVBvc2l0aW9uUmFuZ2UodmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQ
b3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+cmlnaHRMaW5lVmlzaWJsZVBvc2l0aW9uUmFu
Z2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJsZVBvc2l0aW9ucyhj
YWNoZSwgdmlzaWJsZVBvc2l0aW9uUmFuZ2Uuc3RhcnQsIHZpc2libGVQb3NpdGlvblJhbmdlLmVu
ZCk7CisgICAgICAgIHJldHVybiBBWFRleHRNYXJrZXJSYW5nZSh2aXNpYmxlUG9zaXRpb25SYW5n
ZSkucGxhdGZvcm1EYXRhKCk7CiAgICAgfSk7CiB9CiAKQEAgLTM2ODUsMjUgKzM2NzAsMjMgQEAg
QUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgIHJldHVybiAoaWQp
W3NlbGYgX3RleHRNYXJrZXJGb3JJbmRleDpbbnVtYmVyIGludGVnZXJWYWx1ZV1dOwogCiAgICAg
aWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhVSUVsZW1lbnRGb3JUZXh0TWFya2Vy
Il0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2Vk
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyLCBwcm90ZWN0ZWRTZWxmID0gcmV0
YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJh
Y2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAg
ICAgICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwot
Ci0gICAgICAgICAgICBhdXRvKiBheE9iamVjdCA9IGFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0
TWFya2VyKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlcik7Ci0gICAg
ICAgICAgICBpZiAoIWF4T2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CisgICAg
ICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgIGF1dG8qIG9iamVj
dCA9IG1hcmtlci5vYmplY3QoKTsKKyAgICAgICAgaWYgKCFvYmplY3QpCisgICAgICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBpZiAoYXhPYmplY3QtPmlzQXR0YWNobWVudCgpICYm
IFtheE9iamVjdC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XSkKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddOworICAgICAgICBhdXRv
KiB3cmFwcGVyID0gb2JqZWN0LT53cmFwcGVyKCk7CisgICAgICAgIGlmICghd3JhcHBlcikKKyAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIHJldHVybiBheE9iamVjdC0+d3Jh
cHBlcigpOwotICAgICAgICB9KTsKKyAgICAgICAgaWYgKGlkIGF0dGFjaG1lbnRWaWV3ID0gd3Jh
cHBlci5hdHRhY2htZW50VmlldykKKyAgICAgICAgICAgIHJldHVybiBhdHRhY2htZW50VmlldzsK
KyAgICAgICAgcmV0dXJuIHdyYXBwZXI7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNF
cXVhbFRvU3RyaW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVSUVsZW1lbnQiXSkgewogICAgICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWlu
VGhyZWFkPGlkPihbJnVpRWxlbWVudF0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAg
ICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQuZ2V0KCktPmF4
T2JqZWN0Q2FjaGUoKSwgdWlFbGVtZW50LmdldCgpLT5lbGVtZW50UmFuZ2UoKSk7CisgICAgICAg
ICAgICByZXR1cm4gKGlkKXRleHRNYXJrZXJSYW5nZUZyb21SYW5nZSh1aUVsZW1lbnQtPmF4T2Jq
ZWN0Q2FjaGUoKSwgdWlFbGVtZW50LT5lbGVtZW50UmFuZ2UoKSk7CiAgICAgICAgIH0pOwogICAg
IH0KIApAQCAtMzc1NCw3ICszNzM3LDcgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJs
ZVBvc2l0aW9uKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgYmFja2luZ09iamVjdC0+
dmlzaWJsZVBvc2l0aW9uRm9yUG9pbnQod2ViQ29yZVBvaW50KSk7CisgICAgICAgICAgICByZXR1
cm4gQVhUZXh0TWFya2VyKGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlvbkZvclBvaW50KHdl
YkNvcmVQb2ludCkpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCkBAIC0zODQzLDkgKzM4MjYsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIHx8ICFBWE9iamVjdElzVGV4dE1hcmtlcihb
YXJyYXkgb2JqZWN0QXRJbmRleDowXSkKICAgICAgICAgICAgIHx8ICFBWE9iamVjdElzVGV4dE1h
cmtlcihbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSkpCiAgICAgICAgICAgICByZXR1cm4gbmlsOwot
ICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZy
b21NYWluVGhyZWFkPGlkPihbJmFycmF5XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAgICAg
ICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbU1hcmtlcnMoKEFYVGV4dE1hcmtlclJl
ZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSwgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0
QXRJbmRleDoxXSkuZ2V0KCk7Ci0gICAgICAgIH0pOworCisgICAgICAgIHJldHVybiBBWFRleHRN
YXJrZXJSYW5nZSB7IHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDowXSB9
LCB7IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0gfSB9LnBsYXRmb3Jt
RGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICAgICBpZiAoW2F0dHJpYnV0
ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVub3JkZXJlZFRleHRNYXJr
ZXJzIl0pIHsKQEAgLTM4ODQsOCArMzg2Niw4IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5U
QVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0g
Y2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7Ci0gICAgICAg
ICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgbmV4dFRleHRNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBBWFRleHRN
YXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIG5leHRUZXh0TWFy
a2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAgfSk7CiAg
ICAgfQogCkBAIC0zODk5LDggKzM4ODEsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFU
SU9OU19FTkQKICAgICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKIAotICAgICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNo
YXJhY3Rlck9mZnNldEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICAg
ICAgcmV0dXJuIGJyaWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIHByZXZpb3VzVGV4dE1hcmtl
ckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAgICAgIEFYVGV4
dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4gcHJldmlvdXNU
ZXh0TWFya2VyKGNhY2hlLCBtYXJrZXIpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICAgICAg
fSk7CiAgICAgfQogCkBAIC0zOTgxLDI2ICszOTYzLDEzIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1Q
TEVNRU5UQVRJT05TX0VORAogCiAgICAgLy8gVXNlZCBvbmx5IGJ5IER1bXBSZW5kZXJUcmVlIChz
byBmYXIpLgogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYU3RhcnRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlIl0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxp
dHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFy
a2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0
cjxpZD4gewotICAgICAgICAgICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYu
Z2V0KCkuYXhCYWNraW5nT2JqZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQot
ICAgICAgICAgICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSBy
YW5nZUZvclRleHRNYXJrZXJSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRl
eHRNYXJrZXJSYW5nZSk7Ci0KLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRN
YXJrZXJGb3JSYW5nZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCB0cnVl
KTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtlclJh
bmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiBheFRleHRNYXJrZXJSYW5n
ZS5zdGFydCgpLnBsYXRmb3JtRGF0YSgpLmJyaWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICB9CiAK
ICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWEVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmll
dmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXJSYW5nZSwg
cHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0g
ICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJvdGVjdGVkU2VsZi5nZXQoKS5heEJh
Y2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tpbmdPYmplY3QpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0byByYW5nZSA9IHJhbmdlRm9yVGV4
dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgdGV4dE1hcmtlclJh
bmdlKTsKLSAgICAgICAgICAgIHJldHVybiAoaWQpc3RhcnRPckVuZFRleHRNYXJrZXJGb3JSYW5n
ZShiYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHJhbmdlLCBmYWxzZSk7Ci0gICAgICAg
IH0pOworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRN
YXJrZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gYXhUZXh0TWFya2VyUmFuZ2UuZW5kKCkucGxh
dGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgIH0KIAogI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAppbmRleCA1
ZDMzZGFjYjJkM2YuLjUwNDYwMjU4ZmMzMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dApAQCAtMSwxNyArMSwxNCBAQAotdGV4dCBoZXJlCi10ZXh0IGJsb2NrCi10ZXh0IGhl
cmUKIFRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVybiB0aGUgY29y
cmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci4KIAotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkgPT09
IDEwCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCku
aXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aChuZXdSYW5nZSkgPT09IDEwCitQQVNTOiBuZXdSYW5nZS5pc0VxdWFs
KHJhbmdlKSA9PT0gdHJ1ZQogCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRN
YXJrZXJSYW5nZTEpIGlzIDEwCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlz
IHRydWUKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2UpIGlz
IDEwCi1QQVNTIG5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtlclJhbmdlMSkgaXMgdHJ1
ZQogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCi0KK3Rl
eHQgaGVyZQordGV4dCBibG9jawordGV4dCBoZXJlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAppbmRleCBk
NDkzNmFkMjJkMTguLjM0MGFiMWUxOTgwYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCkBAIC0xLDUx
ICsxLDQyIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAog
dGV4dCBoZXJlCi08ZGl2IGlkPSJ0ZXh0MSIgdGFiaW5kZXg9IjAiPnRleHQgYmxvY2s8L2Rpdj4K
KzxkaXYgaWQ9InRleHQxIj50ZXh0IGJsb2NrPC9kaXY+CiB0ZXh0IGhlcmUKIAotPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQot
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCBy
ZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuIik7Ci0K
ICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCB0
ZXN0T3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5c3RlbSB3aWxsIHJldHVy
biB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1hcmtlci5cblxuIjsKIAot
ICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXh0MSIpLmZvY3VzKCk7Ci0gICAg
ICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5mb2N1c2VkRWxlbWVudDsK
KyAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRleHQxIikuY2hpbGRBdEluZGV4KDApOwogCi0gICAgICAgICAgLy8gR2V0IHRo
ZSBhY3R1YWwgdGV4dCBub2RlLgotICAgICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgw
KTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9y
IHRoaXMgZWxlbWVudCdzIHJhbmdlLgorICAgICAgICB2YXIgcmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChyYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgdmFyIHN0
YXJ0ID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOwogCi0g
ICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4gZ2V0IHRoZSBzdGFydCBtYXJrZXIgZm9yIHRo
aXMgcmFuZ2UuCi0gICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTEgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTEpIiwgIjEwIik7Ci0gICAgICAgICAgdmFy
IHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlMSk7CisgICAgICAgIC8vIENoZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3
aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KKyAgICAg
ICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKHN0YXJ0KS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIENo
ZWNrIHRoYXQgdGhlIHN0YXJ0IG1hcmtlciB3aWxsIGdpdmUgdXMgdGhlIHNhbWUgZWxlbWVudCB0
aGF0IHdlIHN0YXJ0ZWQgd2l0aC4KLSAgICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7
CisgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtlciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1
cyB0aGUgc2FtZSBlbGVtZW50LgorICAgICAgICB2YXIgZW5kID0gdGV4dC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3Qo
InRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZCkuaXNFcXVhbCh0ZXh0
KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBHZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNr
IHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxlbWVudC4KLSAgICAgICAgICB2YXIgZW5kTWFy
a2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5n
ZTEpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIik7CisgICAgICAgIC8vIE1ha2Ug
YSBtYXJrZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNr
IHRoZSBsZW5ndGguCisgICAgICAgIHZhciBuZXdSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhzdGFydCwgZW5kKTsKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3QoInRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSIsICIxMCIpOwogCi0gICAgICAgICAg
Ly8gTWFrZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2VycyBh
bmQgY2hlY2sgdGhlIGxlbmd0aAotICAgICAgICAgIHZhciBuZXdNYXJrZXJSYW5nZSA9IHRleHQu
dGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgZW5kTWFya2VyKTsKLSAgICAg
ICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3TWFya2VyUmFuZ2Up
IiwgIjEwIik7CisgICAgICAgIC8vIEFuZCBtYWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1h
cmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgKKyAgICAgICAgdGVzdE91dHB1dCArPSBleHBlY3Qo
Im5ld1JhbmdlLmlzRXF1YWwocmFuZ2UpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEFuZCBt
YWtlIHN1cmUgaXQgZXF1YWxzIHRoZSBzYW1lIG1hcmtlciByYW5nZSB3ZSBzdGFydGVkIHdpdGgK
LSAgICAgICAgICBzaG91bGRCZVRydWUoIm5ld01hcmtlclJhbmdlLmlzRXF1YWwodGV4dE1hcmtl
clJhbmdlMSkiKTsKKyAgICAgICAgZGVidWcodGVzdE91dHB1dCk7CiAgICAgfQotCiA8L3Njcmlw
dD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2Ny
aXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20t
aWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAppbmRleCAwMmM1NzY1OGE1NmYuLjhmYzVmZDcy
NDhiMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXBy
ZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVu
dC1leHBlY3RlZC50eHQKQEAgLTEsMTYgKzEsMTMgQEAKLUZpcnN0IGxpbmUgb2YgdGV4dAotYnV0
dG9uCi1UaGlyZCBsaW5lIG9mIHRleHQKIFRoaXMgdGVzdHMgdGhlIGFiaWxpdHkgdG8gc2VhcmNo
IGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVtZW50LgogCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCitQQVNTOiBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShyYW5nZSkgPT09ICdGaXJzdCBsaW5lIG9mIHRleHQnCitQQVNTOiBlbGVtZW50LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkgPT09ICdidXR0b24nCitQQVNTOiByZXN1bHRFbGVt
ZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JworUEFTUzog
cmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSA9PT0gJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4
dCcKIAotCi1QQVNTIGVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAnRmlyc3QgbGluZSBvZiB0ZXh0JwotUEFTUyBlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShsaW5lUmFuZ2UpIGlzICdidXR0b24nCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5n
VmFsdWUgaXMgJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCcKLVBBU1MgcmVzdWx0RWxlbWVu
dC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JwogUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdu
b3JlZC1lbGVtZW50Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gt
cHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKaW5kZXggNmVhODE4N2MwMjI2Li45
NWQ3YTQ2Y2VjZDMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Nl
YXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
Lmh0bWwKQEAgLTEsNTAgKzEsNDcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8v
RFREIEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2Fj
Y2Vzc2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5
Ij4KKzxib2R5PgogCis8ZGl2IGlkPSJjb250YWluZXIiIHJvbGU9Imdyb3VwIj4KIDxkaXYgaWQ9
InRlc3QiPkZpcnN0IGxpbmUgb2YgdGV4dDxicj4KIDxidXR0b24gaWQ9ImJ1dHRvbiIgYXJpYS1o
aWRkZW49InRydWUiPmJ1dHRvbjwvYnV0dG9uPgogPGJyPlRoaXJkIGxpbmUgb2YgdGV4dDwvZGl2
PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2Pgor
PC9kaXY+CiAKIDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIGFiaWxp
dHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVt
ZW50LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsK
LSAgICAgICAgCi0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJib2R5IikuZm9jdXMo
KTsKLSAgICAgICAgdmFyIGNvbnRhaW5lckVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKLSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0
ZXN0cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBh
biBpZ25vcmVkIGVsZW1lbnQuXG5cbiI7CisKKyAgICAgICAgdmFyIGNvbnRhaW5lciA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGFpbmVyIik7CiAg
ICAgICAgIHZhciBlbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVs
ZW1lbnRCeUlkKCJ0ZXN0IikuY2hpbGRBdEluZGV4KDApOwotICAgICAgICB2YXIgbWFya2VyUmFu
Z2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgICAg
IHNob3VsZEJlKCJlbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ0ZpcnN0IGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRyeSB0byBn
ZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5lIHRleHQgbWFya2VyIGNhbGxzCi0gICAg
ICAgIHZhciB0ZXh0TWFya2VyID0gZWxlbWVudC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRN
YXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0
TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICB2YXIgbGluZVJhbmdlID0gZWxlbWVudC5saW5l
VGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgc2hvdWxk
QmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSkiLCAiJ2J1dHRv
biciKTsKLSAgICAgICAgCi0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpOwotICAgICAgICB2YXIgc3RhcnRFbGVt
ZW50ID0gZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIodGV4dE1hcmtl
cik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmFuZ2UgPSBlbGVtZW50LnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImVsZW1lbnQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIp
OworCisgICAgICAgIC8vIFRyeSB0byBnZXQgdGhlIGlnbm9yZWQgZWxlbWVudCB1c2luZyBsaW5l
IHRleHQgbWFya2VyIGNhbGxzLgorICAgICAgICB2YXIgbWFya2VyID0gZWxlbWVudC5lbmRUZXh0
TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVu
dC5uZXh0VGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBtYXJrZXIgPSBlbGVtZW50Lm5leHRU
ZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIHJhbmdlID0gZWxlbWVudC5saW5lVGV4dE1hcmtl
clJhbmdlRm9yVGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJl
bGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkiLCAiJ2J1dHRvbiciKTsKKwor
ICAgICAgICBtYXJrZXIgPSBlbGVtZW50LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZShyYW5nZSk7CisgICAgICAgIHZhciBzdGFydEVsZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworCiAgICAgICAgIC8vIFNlYXJjaCBmb3J3
YXJkCi0gICAgICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1l
bnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVtZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNo
S2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKLSAgICAgICAgCisgICAg
ICAgIHZhciByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRp
Y2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2Up
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwg
IidBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7CisKICAgICAgICAgLy8gU2VhcmNoIGJh
Y2t3YXJkCi0gICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVtZW50LnVpRWxlbWVu
dEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNo
S2V5IiwgIiIsIGZhbHNlKTsKLSAgICAgICAgc2hvdWxkQmUoInJlc3VsdEVsZW1lbnQuc3RyaW5n
VmFsdWUiLCAiJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKyAgICAgICAgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCBmYWxzZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxzZSk7CisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUiLCAiJ0FYVmFsdWU6IEZp
cnN0IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgi
Y29udGFpbmVyIikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1Zyhv
dXRwdXQpOwogICAgIH0KLSAgICAgICAgCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgotPC9odG1sPgpc
IE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9y
LXJhbmdlLWV4cGVjdGVkLnR4dAppbmRleCBjZGNjNzdjM2M4NzEuLjZhN2QyZjc4YTNlNCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1m
b3ItcmFuZ2UtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVjdGVkLnR4dApAQCAtMSwyODEgKzEsMjA3
IEBACi1UaGluayBkaWZmZXJlbnQgQXBwbGUKLQotYm9sZCBpdGFsaWMKLXVuZGVybGluZSBsYXN0
IQotCi1IZWxsbyBXb3JsZCEKLVRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdl
IHdvcmtzIHByb3Blcmx5LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1RoaXMgdGVz
dHMgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS4KIAogY29udGVu
dCBsZW5ndGg6IDY1CiBBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJhY3RlciBp
biB0aGUgdGV4dDoKLTAKLScnCi0xCi0nVCcKLTIKLSdUaCcKLTMKLSdUaGknCi00Ci0nVGhpbicK
LTUKLSdUaGluaycKLTYKLSdUaGluayAnCi03Ci0nVGhpbmsgZCcKLTgKLSdUaGluayBkaScKLTkK
LSdUaGluayBkaWYnCi0xMAotJ1RoaW5rIGRpZmYnCi0xMQotJ1RoaW5rIGRpZmZlJwotMTIKLSdU
aGluayBkaWZmZXInCi0xMwotJ1RoaW5rIGRpZmZlcmUnCi0xNAotJ1RoaW5rIGRpZmZlcmVuJwot
MTUKLSdUaGluayBkaWZmZXJlbnQnCi0xNgotJ1RoaW5rIGRpZmZlcmVudCAnCi0xNwotJ1RoaW5r
IGRpZmZlcmVudCBBJwotMTgKLSdUaGluayBkaWZmZXJlbnQgQXAnCi0xOQotJ1RoaW5rIGRpZmZl
cmVudCBBcHAnCi0yMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsJwotMjEKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUnCi0yMgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKLTIzCi0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiswICcnCisxICdUJworMiAnVGgnCiszICdUaGknCis0ICdUaGluJworNSAnVGhp
bmsnCis2ICdUaGluayAnCis3ICdUaGluayBkJworOCAnVGhpbmsgZGknCis5ICdUaGluayBkaWYn
CisxMCAnVGhpbmsgZGlmZicKKzExICdUaGluayBkaWZmZScKKzEyICdUaGluayBkaWZmZXInCisx
MyAnVGhpbmsgZGlmZmVyZScKKzE0ICdUaGluayBkaWZmZXJlbicKKzE1ICdUaGluayBkaWZmZXJl
bnQnCisxNiAnVGhpbmsgZGlmZmVyZW50ICcKKzE3ICdUaGluayBkaWZmZXJlbnQgQScKKzE4ICdU
aGluayBkaWZmZXJlbnQgQXAnCisxOSAnVGhpbmsgZGlmZmVyZW50IEFwcCcKKzIwICdUaGluayBk
aWZmZXJlbnQgQXBwbCcKKzIxICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMiAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlJworMjMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiAnCi0yNAotJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQorMjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBiJwotMjUKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzI1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm8nCi0y
NgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2wnCi0yNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjcgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkJwotMjgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI4ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCAnCi0yOQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjkgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGknCi0zMAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
MzAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0JwotMzEKLSdUaGluayBkaWZmZXJl
bnQgQXBwbGUKKzMxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGEnCi0zMgotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorMzIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0
YWwnCi0zMwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzMgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpJwotMzQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM0ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMnCi0zNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorMzUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogJwotMzYKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzM2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHUnCi0zNwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzcgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW4nCi0zOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzgg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kJwotMzkKLSdUaGluayBk
aWZmZXJlbnQgQXBwbGUKKzM5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMK
IHVuZGUnCi00MAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDAgJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXInCi00MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NDEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsJwotNDIKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzQyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGknCi00MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDMgJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW4nCi00NAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNDQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsaW5lJwotNDUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ1ICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSAnCi00NgotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNDYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGwnCi00NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDcgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhJwotNDgKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzQ4ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBs
YXMnCi00OQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDkgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QnCi01MAotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNTAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGxhc3QhJwotNTEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUxICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUyCi0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCis1MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRl
cmxpbmUgbGFzdCEKIAog77+8JwotNTMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUzICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xI
JwotNTQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZScKLTU1Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis1NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsJwotNTYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU2
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQog
CiDvv7xIZWxsJwotNTcKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU3ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbycKLTU4
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1OCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gJwotNTkKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzU5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVu
ZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXJwotNjAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzYwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0
IQogCiDvv7xIZWxsbyBXbycKLTYxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MSAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVs
bG8gV29yJwotNjIKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYyICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsJwot
NjMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzYzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAog
Ym9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBXb3JsZCcKLTY0Ci0nVGhp
bmsgZGlmZmVyZW50IEFwcGxlCis2NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRh
bGljCiB1bmRlcmxpbmUgbGFzdCEKQEAgLTI5MSw3ICsyMTcsMTEgQEAgdW5kZXJsaW5lIGxhc3Qh
CiAKIO+/vEhlbGxvIFdvcmxkIScKICcnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKIAogVEVTVCBDT01QTEVURQogCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1sIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAppbmRl
eCBjZTFjYmYyZWVmZTMuLmMzMDQ5ODY3YjA1MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNj
ZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1s
CkBAIC0xLDkgKzEsOSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRN
TC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCiA8
ZGl2IGlkPSJjb250ZW50IiByb2xlPSJncm91cCI+CiAgICAgPHA+VGhpbmsgPGVtPmRpZmZlcmVu
dDwvZW0+IDxhIGhyZWY9ImFwcGxlLmNvbSI+QXBwbGU8L2E+PC9wPgpAQCAtMTEsMzYgKzExLDM0
IEBACiAgICAgPGJ1dHRvbj5IZWxsbyBXb3JsZCE8L2J1dHRvbj4KIDwvZGl2PgogCi08cCBpZD0i
ZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0Pgot
ICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3
b3JrcyBwcm9wZXJseS4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIpIHsKLSAgICAgICAgYXhFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNz
aWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7Ci0gICAgICAgIGNvbnRlbnRUZXh0TWFya2VyUmFu
Z2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChheEVsZW1lbnQpOwotICAg
ICAgICB0ZXh0TGVuZ3RoID0gYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShjb250
ZW50VGV4dE1hcmtlclJhbmdlKS5sZW5ndGg7Ci0gICAgICAgIGRlYnVnKCJjb250ZW50IGxlbmd0
aDogIiArIHRleHRMZW5ndGgpOworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhh
dCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJseS5cblxuIjsKIAotICAgICAg
ICBkZWJ1ZygiQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhl
IHRleHQ6Iik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZXh0TGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIGRlYnVnKGkpOwotICAgICAgICAgICAgdGV4dE1hcmtlclJhbmdlID0gYXhFbGVt
ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIGkpOwotICAgICAgICAgICAgZGVidWcoIici
ICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsg
IiciKTsKKyAgICAgICAgbGV0IGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKKyAgICAgICAgbGV0IHJhbmdlID0gY29udGVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGNvbnRlbnQpOworICAgICAgICBsZXQgY29udGVu
dExlbmd0aCA9IGNvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKS5sZW5ndGg7
CisgICAgICAgIG91dHB1dCArPSBgY29udGVudCBsZW5ndGg6ICR7Y29udGVudExlbmd0aH1cbmA7
CisKKyAgICAgICAgb3V0cHV0ICs9ICJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNo
YXJhY3RlciBpbiB0aGUgdGV4dDpcbiI7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBjb250ZW50
TGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFu
Z2VGb3JSYW5nZSgwLCBpKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBgJHtpfSAnJHtjb250ZW50
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKICAgICAgICAgfQogCi0gICAg
ICAgIGRlYnVnKCJHZXQgdGhlIHJhbmdlIGZvciB0aGUgd29yZCBBcHBsZToiKTsKLSAgICAgICAg
dGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1
KTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKKyAgICAgICAgb3V0cHV0ICs9ICJHZXQgdGhlIHJh
bmdlIGZvciB0aGUgd29yZCBBcHBsZTpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0
TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29udGVu
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisKKyAgICAgICAgb3V0cHV0
ICs9ICJPdXQgb2YgcmFuZ2UgdmFsdWVzOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29u
dGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CisgICAgICAgIHJhbmdl
ID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKKyAgICAgICAgb3V0
cHV0ICs9IGAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsK
IAotICAgICAgICBkZWJ1ZygiT3V0IG9mIHJhbmdlIHZhbHVlczoiKTsKLSAgICAgICAgdGV4dE1h
cmtlclJhbmdlID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIDEwMCk7Ci0g
ICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlKSArICInIik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVu
dC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSg3MCwgMTAwKTsKLSAgICAgICAgZGVidWcoIiciICsg
YXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIici
KTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5zdHlsZS52aXNp
YmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQogPC9zY3Jp
cHQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1m
b3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAppbmRleCA5MTVkNTY5YzBlZDAuLmQ4NGI4YjIwMTc0
MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3Np
dGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9h
Y2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhw
ZWN0ZWQudHh0CkBAIC0xLDEwICsxLDcgQEAKLVRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuCiBUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZp
c2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxs
IFJlbmRlclRleHQgb2JqZWN0cy4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorUEFTUzog
Y29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbChlbGVtZW50KSA9PT0gdHJ1ZQogCi0KLVBB
U1MgY29udGVudC5jaGlsZEF0SW5kZXgoMCkuaXNFcXVhbCh0ZXh0RWxlbWVudCkgaXMgdHJ1ZQog
UEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2li
bGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCmluZGV4IGM3MjU3ZDU4NWQxYS4u
NjJlYjRlMzUyMmViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92
aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUu
aHRtbApAQCAtMSw0MCArMSwzMSBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9E
VEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNj
ZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHki
PgorPGJvZHk+CiAKLTxkaXYgaWQ9ImNvbnRlbnQiIHRhYmluZGV4PSIwIiBzdHlsZT0id2lkdGg6
MjAwcHg7Ij4KKzxkaXYgaWQ9ImNvbnRlbnQiIHN0eWxlPSJ3aWR0aDoyMDBweDsiPgogVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIAogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEg
bG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIDwvZGl2PgogCi08cCBpZD0iZGVz
Y3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8c2NyaXB0PgotCi0g
ICAgZGVzY3JpcHRpb24oIlRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFza2luZyBm
b3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRs
ZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgeworICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgcHJvdGVjdHMgYWdh
aW5zdCBhIGNyYXNoIGluIGFza2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8g
ZW5zdXJlIHRoYXQgaXQgY2FuIGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLlxuXG4iOwog
Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnQiKS5mb2N1cygpOwot
ICAgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVs
ZW1lbnQ7Ci0KLSAgICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0IHRoaXMgcG9pbnQu
IEl0IHNob3VsZCBub3QgY3Jhc2guCi0gICAgICAgICAgdmFyIG1hcmtlckF0UG9pbnQgPSBjb250
ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoLzIsIGNvbnRl
bnQueSArIGNvbnRlbnQuaGVpZ2h0LzIpOwotICAgICAgICAgIHZhciB0ZXh0RWxlbWVudCA9IGNv
bnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0UG9pbnQpOwor
ICAgICAgICB2YXIgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVF
bGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICAvLyBHZXQgdGhlIHRleHQgbWFya2VyIGF0
IHRoaXMgcG9pbnQuIEl0IHNob3VsZCBub3QgY3Jhc2guCisgICAgICAgIHZhciBtYXJrZXIgPSBj
b250ZW50LnRleHRNYXJrZXJGb3JQb2ludChjb250ZW50LnggKyBjb250ZW50LndpZHRoIC8gMiwg
Y29udGVudC55ICsgY29udGVudC5oZWlnaHQgLyAyKTsKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBl
bGVtZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgorICAgICAgICB2YXIgZWxl
bWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoImNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1
YWwoZWxlbWVudCkiLCAidHJ1ZSIpOwogCi0gICAgICAgICAgLy8gVmVyaWZ5IHRoZSBlbGVtZW50
IGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2Ugd2FudGVkLgotICAgICAgICAgIHZhciB0ZXh0RWxl
bWVudCA9IGNvbnRlbnQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlckF0
UG9pbnQpOwotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgiY29udGVudC5jaGlsZEF0SW5kZXgoMCku
aXNFcXVhbCh0ZXh0RWxlbWVudCkiKTsKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
ImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVnKG91
dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgotCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXBy
ZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0
LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAppbmRleCAwNDA0
Mzg0OWRlMTYuLmVhNGI4NzdkNDkzYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dAor
KysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXBy
ZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10ZXh0Ci0KLXRleHQx
Ci1jICBkCi0KLWNhbid0IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0KLWEgYgotCi1hdWRp
b2ZpbGUKLQogVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlv
bnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2Vl
IGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUi
LgotCi0KLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBp
cyA0Ci1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFy
a2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1Mg
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNT
IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSBpcyA1CitQQVNT
OiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNT
OiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BBU1M6IHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQ
QVNTOiB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09IDUK
IE9iamVjdCBzdHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQyLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQzLnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4dDMu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAhcHN3
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFTUyB0
ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNF
cXVhbCh0ZXh0MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIGlz
IHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlz
ICdmJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J2EnCi1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdl
KSBpcyA0Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/Cf
mI8nCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJh
bmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmIMn
Ci1QQVNTIHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSkgaXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcg
JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUnCi1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8Jwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcK
K1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdk
JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
JzEnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09
PSAnZWN0JworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ3NlbCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0
TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0ZXh0
Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVh
bCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4dE1h
cmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1
bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8Jwor
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisK
KwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3Rl
eHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAppbmRleCA1ZWQzYmQwZDA2
ZGUuLjM4ZjEzZWQ3YTNlYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90
ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0
bWwKQEAgLTEsMTUgKzEsMTcgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vz
c2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDxtZXRhIGNoYXJzZXQ9IlVURi0xNiI+CiA8
L2hlYWQ+CiA8c3R5bGU+CiAudXNlcnNlbGVjdCB7IHVzZXItc2VsZWN0OiBub25lOyAtd2Via2l0
LXVzZXItc2VsZWN0OiBub25lOyB9CiA8L3N0eWxlPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+
CiAKLTxkaXYgaWQ9InRleHQiIHRhYmluZGV4PSIwIj50ZXh0PC9kaXY+Cis8ZGl2IGlkPSJjb250
ZW50Ij4KKzxkaXYgaWQ9InRleHQiPnRleHQ8L2Rpdj4KIDxicj4KIHRleHQxCiAKQEAgLTMyLDI5
ICszNCw0NSBAQCBmCiA8cCBpZD0idGV4dDYiPmEgICAgIGI8L3A+CiAKIDxwIGlkPSJ0ZXh0NyI+
YXVkaW88YXVkaW8gY29udHJvbHM+PC9hdWRpbz5maWxlPC9wPgotCi08cCBpZD0iZGVzY3JpcHRp
b24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPC9kaXY+CiAKIDxzY3JpcHQ+Cisg
ICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIs
IG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAg
ICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKKyAgICAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSBvYmoubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwK
KyAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAgICB9CisK
KyAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFy
a2VyLCBvYmopIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIocHJldmlv
dXNNYXJrZXIpOworICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5wcmV2aW91c1RleHRN
YXJrZXIoY3VycmVudE1hcmtlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHsKKyAgICAg
ICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKKyAgICAgICAgICAgIGN1cnJlbnQ6IGN1
cnJlbnRNYXJrZXIKKyAgICAgICAgfTsKKyAgICB9CiAKLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0
ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVu
dGVkIGNvcnJlY3RseS4iKTsKLSAgICAKICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250
cm9sbGVyKSB7Ci0gICAgICAgIAotICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOwotICAgICAgICAvLyBHZXQgdGhl
IGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgIHRleHQgPSB0ZXh0LmNoaWxkQXRJbmRleCgwKTsK
LSAgICAgICAgCisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgbmV4dC9wcmV2
aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVudGVkIGNvcnJlY3RseS5cblxu
IjsKKworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dCIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAvLyBDaGVj
ayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0L2VuZCBtYXJrZXIgZm9yIHRoaXMgcmFuZ2UuCiAg
ICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1l
bnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0
ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwor
CiAgICAgICAgIHZhciBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIHZhciBlbmRNYXJrZXIgPSB0ZXh0
LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKLSAgICAg
ICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihz
dGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0
KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmls
aXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkiLCAidHJ1
ZSIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOworCiAgICAg
ICAgIC8vIENoZWNrIG5leHQgdGV4dCBtYXJrZXIuIChBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQg
d2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAgICB2YXIgY3VycmVudE1hcmtlciwgcHJldmlvdXNN
YXJrZXIsIG1hcmtlclJhbmdlOzsKICAgICAgICAgdmFyIHJlc3VsdCA9IGZvcndhcmQoNSwgcHJl
dmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKQEAgLTYyLDU4ICs4MCw1NyBAQCBmCiAg
ICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFu
Z2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJl
bnRNYXJrZXIpOwogICAgICAgICB2YXIgbmV3bGluZSA9ICdcbic7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIp
OwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKKwogICAgICAgICAvLyBBZHZh
bmNlIG9uZSBtb3JlIGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZGUgYXQgInQiIGluICJ0ZXh0MSIu
CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIsIHRleHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAg
ICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVu
dE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7
CisKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBtYXJrZXIuIChUcmF2ZXJzZSBiYWNr
d2FyZHMgb25lIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IDxicj4uKQogICAgICAgICByZXN1
bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQpOwog
ICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAgY3VycmVu
dE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAibmV3bGluZSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKKwog
ICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgb25lIG1vcmUgY2hhcmFjdGVyLCBpdCB3aWxs
IGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0Ii4KICAgICAgICAgcmVzdWx0ID0g
YmFja3dhcmRzKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwogICAgICAg
ICBpZiAoYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIucGxhdGZvcm1OYW1lID09ICJtYWMiKQotICAg
ICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSIsICIndCcgKyBuZXdsaW5lIik7CisgICAgICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnICsgbmV3bGlu
ZSIpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworICAgICAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
Iid0JyIpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBjYXNlIHdpdGggcmVwbGFjZWQgbm9kZQog
ICAgICAgICB2YXIgdGV4dDIgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxl
bWVudEJ5SWQoInRleHQyIik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UyID0gdGV4dDIu
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0Mik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikiLCAiNSIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtl
clJhbmdlMikiLCAiNSIpOwogICAgICAgICB2YXIgc3RyID0gdGV4dDIuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpLnJlcGxhY2UoU3RyaW5nLmZyb21DaGFyQ29kZSg2
NTUzMiksICJbQVRUQUNITUVOVF0iKTsKLSAgICAgICAgZGVidWcoIk9iamVjdCBzdHJpbmcgZm9y
IHJhbmdlOiAiICsgc3RyKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBgT2JqZWN0IHN0
cmluZyBmb3IgcmFuZ2U6ICR7c3RyfVxuYDsKKwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4
dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTIpOwog
ICAgICAgICAvLyBBZHZhbmNlIDUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kIGF0ICJkIi4KICAg
ICAgICAgcmVzdWx0ID0gZm9yd2FyZCg1LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwg
dGV4dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAg
ICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9
IHRleHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRN
YXJrZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInZCciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2QnIik7
CisKICAgICAgICAgLy8gVHJhdmVyc2UgYmFja3dhcmRzIDYgY2hhcmFjdGVycywgaXQgd2lsbCBs
YW5kIGF0IHRoZSBsYXN0IGNoYXJhY3RlciBvZiAidGV4dDEiLgogICAgICAgICByZXN1bHQgPSBi
YWNrd2FyZHMoNiwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJzEnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOworCiAgICAgICAgIC8v
IENoZWNrIHRoZSBjYXNlIHdpdGggdXNlci1zZWxlY3Q6bm9uZSwgbmV4dFRleHRNYXJrZXIvcHJl
dmlvdXNUZXh0TWFya2VyIHNob3VsZCBzdGlsbCB3b3JrLgotICAgICAgICB2YXIgdGV4dDMgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQzIik7Ci0g
ICAgICAgIHRleHQzID0gdGV4dDMuY2hpbGRBdEluZGV4KDApOwotICAgICAgICAKKyAgICAgICAg
dmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlk
KCJ0ZXh0MyIpLmNoaWxkQXRJbmRleCgwKTsKKwogICAgICAgICAvLyBBZHZhbmNlIHRvIGxhbmQg
YXQgdXNlci1zZWxlY3Q6bm9uZSBub2RlLgogICAgICAgICB2YXIgbWFya2VyMSwgbWFya2VyMjsK
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxODsgaSsrKSB7CkBAIC0xMjUsMzQgKzE0Miwz
MSBAQCBmCiAgICAgICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIx
LCBtYXJrZXIyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0JyIpOwog
ICAgICAgICAvLyBJdGVyYXRlIGJhY2t3YXJkcyB0aGUgc2Vjb25kIG1hcmtlciBmb3IgNiBjaGFy
YWN0ZXJzLCB0aGUgcmFuZ2Ugc2hvdWxkIGJlICJzZWwiCi0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQogICAg
ICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQzLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1hcmtlcjsKICAg
ICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKG1hcmtl
cjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidzZWwnIik7
CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCBwYXNzd29yZCBmaWVsZC4KICAgICAg
ICAgdmFyIHBzdyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgicHN3Iik7CiAgICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UzID0gcHN3LnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQocHN3KTsKICAgICAgICAgdmFyIHN0YXJ0ID0gcHN3LnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UzKTsKLSAgICAgICAgc2hvdWxk
QmVUcnVlKCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkiKTsK
LSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoIiFwc3cuYWNjZXNzaWJpbGl0eUVs
ZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gQ2hlY2sg
bmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBjYWxsIHdpbGwgc2tpcCBwYXNzd29yZCBmaWVsZAog
ICAgICAgICAvLyBXZSBzdGFydCBmcm9tIHRleHQyIGFuZCBhZHZhbmNlIDYgY2hhcmFjdGVycywg
aXQgc2hvdWxkIHNraXAgdGhlIHBhc3N3b3JkIGZpZWxkIGFuZCBsYW5kIG9uIHRleHQzLgogICAg
ICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlKHRleHRNYXJrZXJSYW5nZTIpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkr
KykgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgIGN1
cnJlbnRNYXJrZXIgPSB0ZXh0Mi5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgfQotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiLCAidHJ1ZSIpOwogICAgICAgICAvLyBDaGVjayBw
cmV2aW91cyB0ZXh0IG1hcmtlciwgaXQgc2hvdWxkIGxhbmQgb24gIiBkIiBub2RlLgogICAgICAg
ICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
OwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDIucHJldmlvdXNUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRl
eCgyKSkiKTsKLSAgICAgICAgCi0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0
ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNF
cXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBNYWtl
IHN1cmUgdGhhdCB0ZXh0IG5vZGUgd2l0aCBsaW5lIGJyZWFrcywgd2UgY2FuIGdvIHRocm91Z2gg
aXQgd2l0aCBuZXh0L3ByZXZpb3VzIGNhbGwuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5
Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ0Iik7CiAgICAgICAgIHRleHRN
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKQEAgLTE2
Myw4NyArMTc3LDY0IEBAIGYKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50
TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIiwgIidmJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidmJyIpOwor
CiAgICAgICAgIGVuZE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gZW5kTWFya2VyOwot
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDc7IGkrKykgeworICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDc7IGkrKykKICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnByZXZp
b3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgfQogICAgICAgICBtYXJrZXJS
YW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhzdGFydE1hcmtlciwgY3VycmVu
dE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBl
Y3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInYSciKTsK
KwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBlbW9qaS4KICAgICAgICAgdGV4dCA9IGFjY2Vz
c2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDUiKTsKICAgICAg
ICAgdmFyIGVtb2ppVGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgo
ZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsK
ICAgICAgICAgLy8gTWFrZSBzdXJlIG5hdmlnYXRpbmcgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtl
ciBpcyBieSBlbW9qaS4KICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZShlbW9qaVRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIHJlc3Vs
dCA9IGZvcndhcmQoMiwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0ZXh0KTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/Cf
mI8nIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkiLCAiJ/CfmI8nIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygx
LCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7Ci0g
ICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRo
IGNvbGxhcHNlZCB3aGl0ZXNwYWNlLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRy
b2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NiIpOwogICAgICAgICB2YXIgY29sbGFw
c2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29s
bGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CisgICAgICAgIG91dHB1dCArPSBl
eHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJr
ZXJSYW5nZSkiLCAiMyIpOwogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3RhcnRUZXh0TWFy
a2VyRm9yVGV4dE1hcmtlclJhbmdlKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSk7CiAg
ICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwgcHJldmlvdXNNYXJrZXIsIHN0YXJ0TWFya2VyLCB0
ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkiLCAiJ2EnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CiAgICAgICAgIHJlc3VsdCA9IGZvcndh
cmQoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNo
b3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwor
ICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIiwgIicgJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3VsdC5wcmV2
aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYiciKTsKKyAgICAgICAgb3V0cHV0ICs9
IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYiciKTsK
ICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1
cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKICAgICAgICAgcmVzdWx0
ID0gYmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwot
ICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIs
ICInYSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7CisKICAgICAgICAgLy8gVGVzdCBj
YXNlIHdpdGggcmVwbGFjZWQgZWxlbWVudHMgKHNob3VsZCB1c2Ugb2JqZWN0IHJlcGxhY2VtZW50
IGNoYXJhY3RlcikuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nl
c3NpYmxlRWxlbWVudEJ5SWQoInRleHQ3Iik7CiAgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVG
RkZDZmlsZSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIsICInYXVkaW9cdUZGRkNmaWxlJyIpOwogICAg
ICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKysp
IHsKICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAg
ICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwog
ICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4
dC5lbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAg
ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7CiAgICAgICAgICAgICBwcmV2aW91c01h
cmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5w
cmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFy
a2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZG
RkMnIik7CiAKLSAgICAgICAgZnVuY3Rpb24gZm9yd2FyZChjb3VudCwgcHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
b3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFy
a2VyOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoubmV4dFRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01hcmtlciwKLSAgICAgICAgICAgICAgICBj
dXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAgICAgICAgICB9OwotICAgICAgICB9Ci0gICAgICAg
IAotICAgICAgICBmdW5jdGlvbiBiYWNrd2FyZHMoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyLCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7
IGkrKykgewotICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZpb3VzVGV4
dE1hcmtlcihwcmV2aW91c01hcmtlcik7Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9
IG9iai5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHByZXZpb3VzOiBwcmV2aW91c01h
cmtlciwKLSAgICAgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCi0gICAgICAgICAg
ICB9OwotICAgICAgICB9CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50
Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwog
ICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVz
dC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3Rl
ZC50eHQKaW5kZXggMjkyNjQxYTdlMDM4Li41YTBhMzJjMjhkNzAgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhw
ZWN0ZWQudHh0CkBAIC0xLDUyICsxLDQwIEBACi10ZXh0Ci0KLXRleHQxCi1jICBkCi0KLWNhbid0
IHNlbGVjdAotYWJjIGRlIGYKLfCfmIPwn5iPCi0KLWEgYgotCi1hdWRpb2ZpbGUKLQogVGhpcyB0
ZXN0cyB0aGUgbmV4dC9wcmV2aW91cyB0ZXh0IG1hcmtlciBmdW5jdGlvbnMgYXJlIGltcGxlbWVu
dGVkIGNvcnJlY3RseS4KIAotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCi0KLVBBU1MgdGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSBpcyA0Ci1QQVNTIHRleHQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRl
eHQpIGlzIHRydWUKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
ZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIGlzIHRydWUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnICsgbmV3bGluZQotUEFTUyB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgaXMgNQorUEFTUzogdGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwo
dGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JyArIG5ld2xp
bmUKK1BBU1M6IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSA9
PT0gNQogT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6IGMgW0FUVEFDSE1FTlRdIGQKLVBBU1MgdGV4
dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZCcKLVBBU1MgdGV4
dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnMScKLVBBU1MgdGV4
dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZWN0JwotUEFTUyB0
ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdzZWwnCi1QQVNT
ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSBpcyB0cnVlCi1Q
QVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2Vy
KS5pc0VxdWFsKHRleHQzKSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgy
KSkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgaXMgJ2YnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAnYScKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2Vy
UmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBp
cyAn8J+YjycKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAn
8J+YgycKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFj
ZU1hcmtlclJhbmdlKSBpcyAzCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkg
aXMgJyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2In
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJyAnCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgaXMgJ2F1ZGlv77+8Zmls
ZScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfv
v7wnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn
77+8JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9
PT0gJ2QnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
ID09PSAnMScKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkgPT09ICdlY3QnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpID09PSAnc2VsJworUEFTUzogIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRN
YXJrZXIoc3RhcnQpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgPT09IHRydWUKK1BBU1M6
IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5p
c0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2YnCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdhJworUEFTUzogdGV4dC50ZXh0
TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YjycKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iDJworUEFTUzogdGV4dC50
ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdlKSA9PT0g
MworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFu
Z2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdiJworUEFTUzogdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgPT09ICdhdWRpb++/vGZpbGUnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICfvv7wn
CitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICfv
v7wnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQog
CisKKworCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464563</attachid>
            <date>2023-01-19 08:39:49 -0800</date>
            <delta_ts>2023-01-20 11:23:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230119113947.patch</filename>
            <type>text/plain</type>
            <size>106779</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSAyNmFkYjIwYmJjODg4ZjE2ZGQ5NWIyZDRjYWJmYjc5NTZjMDJmZDBlIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3dzIGZvciB0aGUgcmV0cmlldmFsIG9mIHRoZSBUZXh0TWFy
a2VyIHByb3BlcnRpZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3VyY2UgdG8gdGhlIHVuZGVybHlp
bmcgRE9NIGFuZCBSZW5kZXJUcmVlIG9iamVjdHMuCgpUaGUgZm9sbG93aW5nIE1hYyBBWCBBUEkg
YXR0cmlidXRlcyBhcmUgbm93IGltcGxlbWVudGVkIHdpdGhvdXQgaGl0dGluZyB0aGUgbWFpbiB0
aHJlYWQgdXNpbmcgQVhUZXh0TWFya2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZToKQVhVSUVsZW1l
bnRGb3JUZXh0TWFya2VyCkFYVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcnMKQVhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UKQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYW4gdXBkYXRlIG9mIHNldmVyYWwgbGF5b3V0
IHRlc3RzIHJlbGF0ZWQgdG8gVGV4dE1hcmtlcnMuCi0tLQogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgICB8IDE4NyArKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMjggKy0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxNjUgKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDE3OSArKysrKysr
KysrKysrKysKIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaCAgICB8
ICAgNyArLQogLi4uL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0gIHwg
IDkwICsrKysrKysrCiAuLi4vaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
ICAgfCAgNDAgKystLQogLi4uL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0g
ICAgIHwgIDEyICstCiAuLi4vbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
ICAgfCAxMDEgKysrLS0tLS0tCiAuLi4vbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVj
dGVkLnR4dCAgfCAgMTkgKy0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCAg
ICAgICAgICB8ICA1MSArKy0tLQogLi4ucmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhw
ZWN0ZWQudHh0IHwgIDE1ICstCiAuLi5zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVt
ZW50Lmh0bWwgfCAgNjMgKysrLS0tCiAuLi4vdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhw
ZWN0ZWQudHh0ICAgfCAyMTAgKysrKysrLS0tLS0tLS0tLS0tCiAuLi4vbWFjL3RleHRtYXJrZXIt
cmFuZ2UtZm9yLXJhbmdlLmh0bWwgICAgICAgfCAgNDggKystLQogLi4uLXBvc2l0aW9uLWNyYXNo
LWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0IHwgICA1ICstCiAuLi4vdmlzaWJsZS1wb3NpdGlv
bi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwgfCAgMzUgKystCiAuLi4vdGV4dC1tYXJrZXItcHJl
dmlvdXMtbmV4dC1leHBlY3RlZC50eHQgICAgfCAgNzggKysrLS0tLQogLi4uL3RleHQtbWFya2Vy
LXByZXZpb3VzLW5leHQuaHRtbCAgICAgICAgICAgIHwgMTc1ICsrKysrKystLS0tLS0tLQogLi4u
L3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0ICAgIHwgIDc4ICsrKy0tLS0K
IDIzIGZpbGVzIGNoYW5nZWQsIDkwOCBpbnNlcnRpb25zKCspLCA2OTYgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJr
ZXIuY3BwCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WFRleHRNYXJrZXIuaAogY3JlYXRlIG1vZGUgMTAwNjQ0IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGYzMzcz
NmM4NTI5ZS4uNTU1NTNkMDEyNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAtNDU1LDYgKzQ1NSw3IEBA
IE1vZHVsZXMvd2VieHIvWFJTZXNzaW9uRXZlbnQuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYSW1hZ2Uu
Y3BwCiBhY2Nlc3NpYmlsaXR5L0FYTG9nZ2VyLmNwcAogYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcAorYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlBUklBR3JpZC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFH
cmlkQ2VsbC5jcHAKIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmNwcApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJD
b3JlL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjYzNDk5YjU2MTA5Li4yMDgxZTBkMTgwY2IgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtMTI2LDYgKzEyNiw3IEBAIE1vZHVsZXMvc3BlZWNo
L2NvY29hL1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrLm1tCiBNb2R1bGVzL3NwZWVjaC9jb2NvYS9X
ZWJTcGVlY2hSZWNvZ25pemVyVGFza01vY2subW0KIE1vZHVsZXMvc3lzdGVtLXByZXZpZXcvQVJL
aXRCYWRnZVN5c3RlbUltYWdlLm1tCiBNb2R1bGVzL3dlYmRhdGFiYXNlL2NvY29hL0RhdGFiYXNl
TWFuYWdlckNvY29hLm1tCithY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1t
CiBhY2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lv
cy9BY2Nlc3NpYmlsaXR5T2JqZWN0SU9TLm1tCiBhY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDA2NTlkYTIyMTExNy4uYjE1MDM4ZDI4ODc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC00NTcxLDYgKzQ1NzEsNyBAQAogCQlDMEMwNTRDQjExMThDOEU0MDBDRTI2MzYgLyog
Q29kZUdlbmVyYXRvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDkzRjhCMzA1MEEzMDBGRTEwMEY2MUFCOCAvKiBDb2RlR2VuZXJhdG9yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwQzA1NENDMTEx
OEM4RTQwMENFMjYzNiAvKiBnZW5lcmF0ZS1iaW5kaW5ncy5wbCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjhCMzA3MEEzMDBGRUEwMEY2MUFCOCAvKiBn
ZW5lcmF0ZS1iaW5kaW5ncy5wbCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMEMwNTRDRDExMThDOEU0MDBDRTI2MzYgLyogSURMUGFyc2VyLnBtIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMTQ4MTNCRjMwOUVE
Rjg4RTAwRjc1N0UxIC8qIElETFBhcnNlci5wbSAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQlDMEUyMDhBMjI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBD
MEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi87IH07CiAJCUMwRTJG
MzI3MjQxMkJGMjkwMDlDNzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCBpbiBGcmFtZXdvcmtz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRTJGMzI1MjQxMkJGMjkwMDlD
NzNFQyAvKiBsaWJBY2Nlc3NpYmlsaXR5LnRiZCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChXZWFrLCApOyB9OyB9OwogCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3Rv
cmUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMwRThB
REM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMwRjJBNDQxMTM4NjlBQUIwMDY2QzUzNCAv
KiBwcmVwcm9jZXNzb3IucG0gaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xNjUzMiw2ICsx
NjUzMyw5IEBACiAJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBWExvZ2dlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlDMDc4Mzc2MDIzREYyNTNFMDBDOUM1QzggLyogQVhJc29sYXRlZE9iamVj
dE1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IEFYSXNvbGF0ZWRPYmplY3RNYWMubW07IHBh
dGggPSBtYWMvQVhJc29sYXRlZE9iamVjdE1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQzA4RjEzQTEyNDQ3NjZEQzAwQUI5ODlGIC8qIEFYTG9nZ2VyLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEFYTG9nZ2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzBF
MjA4QTAyOTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBBWFRleHRNYXJrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJQzBFMjA4QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBBWFRleHRNYXJrZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQyRDMgLyogQVhUZXh0
TWFya2VyQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBB
WFRleHRNYXJrZXJDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzBFMkYz
MjUyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gInNvdXJjZWNvZGUudGV4dC1iYXNl
ZC1keWxpYi1kZWZpbml0aW9uIjsgbmFtZSA9IGxpYkFjY2Vzc2liaWxpdHkudGJkOyBwYXRoID0g
dXNyL2xpYi9saWJBY2Nlc3NpYmlsaXR5LnRiZDsgc291cmNlVHJlZSA9IFNES1JPT1Q7IH07CiAJ
CUMwRThBREM0Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBBWFRyZWVTdG9yZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMEYyQTQzRjEzODY5QTI4MDA2NkM1MzQgLyogcHJlcHJvY2Vzc29yLnBtICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5zY3JpcHQu
cGVybDsgbmFtZSA9IHByZXByb2Nlc3Nvci5wbTsgcGF0aCA9IHNjcmlwdHMvcHJlcHJvY2Vzc29y
LnBtOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjE0OTgsNiArMjE1MDIsNyBAQAog
CQkyOUE4MTIwNDBGQkI5QjQxMDA1MTAyOTMgLyogYWNjZXNzaWJpbGl0eSAqLyA9IHsKIAkJCWlz
YSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjcyOTM5M0UxQTAwQzBE
MkQzIC8qIGNvY29hICovLAogCQkJCUFBQTcyOEVGMTZEMUQ4QkMwMEQzQkJDNiAvKiBpb3MgKi8s
CiAJCQkJMjlBRTIxMjkyMUFCOUVDQjAwODY5MjgzIC8qIGlzb2xhdGVkdHJlZSAqLywKIAkJCQky
OUE4MTIwNTBGQkI5QjUyMDA1MTAyOTMgLyogbWFjICovLApAQCAtMjE1NzQsNiArMjE1NzksOCBA
QAogCQkJCUMwNDkzRUI3MjQ0Njk5RTQwMDlBQUM4MCAvKiBBWExvZ2dlci5oICovLAogCQkJCTI5
ODFDQUFGMTMxODIyRUMwMEQxMkYyQSAvKiBBWE9iamVjdENhY2hlLmNwcCAqLywKIAkJCQkyOUE4
MTIxQTBGQkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oICovLAorCQkJCUMwRTIwOEEx
MjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuY3BwICovLAorCQkJCUMwRTIwOEEwMjkz
NzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLywKIAkJCQk5MUM5RjJGODFBRTNCRTI0
MDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLywKIAkJCQlDMEU4QURDNDI5
NEI1QTYyMDA3NkNCREMgLyogQVhUcmVlU3RvcmUuaCAqLywKIAkJCQlCQzRBNTMzMDI1NjA1OTAz
MDAyOEM1OTIgLyogRm9yY2VkQWNjZXNzaWJpbGl0eVZhbHVlLmggKi8sCkBAIC0zMTY0Miw2ICsz
MTY0OSwxNCBAQAogCQkJbmFtZSA9IG1hYzsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CiAJ
CX07CisJCUMwRTIwOEI3MjkzOTNFMUEwMEMwRDJEMyAvKiBjb2NvYSAqLyA9IHsKKwkJCWlzYSA9
IFBCWEdyb3VwOworCQkJY2hpbGRyZW4gPSAoCisJCQkJQzBFMjA4QjUyOTM5M0RDRjAwQzBEMkQz
IC8qIEFYVGV4dE1hcmtlckNvY29hLm1tICovLAorCQkJKTsKKwkJCXBhdGggPSBjb2NvYTsKKwkJ
CXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CisJCX07CiAJCUNEMERCQjNFMTQyMjc0RTYwMDI4MDI2
MyAvKiBhdWRpbyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCkBA
IC0zNTIxNyw2ICszNTIzMiw3IEBACiAJCQkJMjlBRTIxMzUyMUFCQTQ4QTAwODY5MjgzIC8qIEFY
SXNvbGF0ZWRPYmplY3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTI5QUUyMTJEMjFBQjlFRUIwMDg2
OTI4MyAvKiBBWElzb2xhdGVkVHJlZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBODEyMzgwRkJC
OUMxRDAwNTEwMjkzIC8qIEFYT2JqZWN0Q2FjaGUuaCBpbiBIZWFkZXJzICovLAorCQkJCUMwRTIw
OEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTkxQzlGMkY5MUFFM0JFQjAwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQzBFOEFEQzUyOTRCNUE2MzAwNzZDQkRDIC8qIEFYVHJlZVN0b3Jl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDc3RTc3NzBCRjQxMzRBMDAxNTI4NzIgLyogQmFja0Zv
cndhcmRDYWNoZS5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BWE9iamVjdENhY2hlLmNwcAppbmRleCBlZWQ0ODgxZjVmYTAuLmM1OGNlMjU3ZWI0OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQVhJc29sYXRlZE9iamVjdC5oIgogI2luY2x1ZGUg
IkFYSXNvbGF0ZWRUcmVlLmgiCiAjaW5jbHVkZSAiQVhMb2dnZXIuaCIKKyNpbmNsdWRlICJBWFRl
eHRNYXJrZXIuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWQuaCIKICNpbmNsdWRl
ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRDZWxsLmgiCiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eUFS
SUFHcmlkUm93LmgiCkBAIC0yMjEzLDcgKzIyMTQsNyBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnN0
b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCkKICAgICBtX2NvbXB1dGVkT2JqZWN0
QXR0cmlidXRlQ2FjaGUgPSBudWxscHRyOwogfQogCi1WaXNpYmxlUG9zaXRpb24gQVhPYmplY3RD
YWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmIHRl
eHRNYXJrZXJEYXRhKQorVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3Np
dGlvbkZvclRleHRNYXJrZXJEYXRhKGNvbnN0IFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0
YSkKIHsKICAgICBpZiAoIWlzTm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpCiAgICAgICAg
IHx8IHRleHRNYXJrZXJEYXRhLm5vZGUtPmlzUHNldWRvRWxlbWVudCgpKQpAQCAtMjIyOSw3ICsy
MjMwLDcgQEAgVmlzaWJsZVBvc2l0aW9uIEFYT2JqZWN0Q2FjaGU6OnZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJgogICAgICAgICByZXR1cm4geyB9OwogCiAg
ICAgYXV0byogY2FjaGUgPSByZW5kZXJlci0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7Ci0g
ICAgaWYgKGNhY2hlICYmICFjYWNoZS0+bV9pZHNJblVzZS5jb250YWlucyh0ZXh0TWFya2VyRGF0
YS5heElEKSkKKyAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRl
eHRNYXJrZXJEYXRhLmF4T2JqZWN0SUQoKSkpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICBy
ZXR1cm4gdmlzaWJsZVBvc2l0aW9uOwpAQCAtMjIzNywxMyArMjIzOCwxMCBAQCBWaXNpYmxlUG9z
aXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoVGV4
dE1hcmtlckRhdGEmCiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpjaGFyYWN0ZXJP
ZmZzZXRGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYgdGV4dE1hcmtlckRhdGEpCiB7
Ci0gICAgaWYgKCFpc05vZGVJblVzZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKLSAgICAgICAgcmV0
dXJuIENoYXJhY3Rlck9mZnNldCgpOwotICAgIAotICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25v
cmVkKQotICAgICAgICByZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgQ2hhcmFj
dGVyT2Zmc2V0IHJlc3VsdCA9IENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YS5ub2RlLCB0
ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJTdGFydEluZGV4LCB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0
ZXJPZmZzZXQpOworICAgIGlmICh0ZXh0TWFya2VyRGF0YS5pZ25vcmVkIHx8ICFpc05vZGVJblVz
ZSh0ZXh0TWFya2VyRGF0YS5ub2RlKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAgIENoYXJh
Y3Rlck9mZnNldCByZXN1bHQodGV4dE1hcmtlckRhdGEubm9kZSwgdGV4dE1hcmtlckRhdGEuY2hh
cmFjdGVyU3RhcnQsIHRleHRNYXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCk7CiAgICAgLy8gV2hl
biB3ZSBhcmUgYXQgYSBsaW5lIHdyYXAgYW5kIHRoZSBWaXNpYmxlUG9zaXRpb24gaXMgdXBzdHJl
YW0sIGl0IG1lYW5zIHRoZSB0ZXh0IG1hcmtlciBpcyBhdCB0aGUgZW5kIG9mIHRoZSBwcmV2aW91
cyBsaW5lLgogICAgIC8vIFdlIHVzZSB0aGUgcHJldmlvdXMgQ2hhcmFjdGVyT2Zmc2V0IHNvIHRo
YXQgaXQgd2lsbCBtYXRjaCB0aGUgUmFuZ2UuCiAgICAgaWYgKHRleHRNYXJrZXJEYXRhLmFmZmlu
aXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkKQEAgLTI1MDcsMzcgKzI1MDUsMTggQEAgc3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4gQVhPYmplY3RDYWNoZTo6cmFuZ2VGb3JVbm9yZGVyZWRDaGFy
YWN0ZXJPZmZzZXRzKGNvbnMKICAgICByZXR1cm4geyB7ICpzdGFydCwgKmVuZCB9IH07CiB9CiAK
LXZvaWQgQVhPYmplY3RDYWNoZTo6c2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0
KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBj
aGFyYWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9m
ZnNldCkKIHsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICByZXR1
cm47Ci0gICAgCi0gICAgTm9kZSogZG9tTm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOwotICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0
RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKSB7Ci0gICAgICAgIHRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQgPSB0cnVlOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIAotICAg
IFJlZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiBvYmogPSB0aGlzLT5nZXRPckNyZWF0ZShkb21O
b2RlKTsKLSAgICBpZiAoIW9iaikKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIC8vIENvbnZl
cnQgdG8gdmlzaWJsZSBwb3NpdGlvbi4KLSAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0
aW9uID0gdmlzaWJsZVBvc2l0aW9uRnJvbUNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OwotICAgIGludCB2cE9mZnNldCA9IDA7Ci0gICAgaWYgKCF2aXNpYmxlUG9zaXRpb24uaXNOdWxs
KCkpIHsKLSAgICAgICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpOwotICAgICAgICB2cE9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdP
ZmZzZXQoKTsKLSAgICB9Ci0gICAgCi0gICAgdGV4dE1hcmtlckRhdGEuYXhJRCA9IG9iai0+b2Jq
ZWN0SUQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5ub2RlID0gZG9tTm9kZTsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAgIHRl
eHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJ
bmRleDsKLSAgICB0ZXh0TWFya2VyRGF0YS5vZmZzZXQgPSB2cE9mZnNldDsKLSAgICB0ZXh0TWFy
a2VyRGF0YS5hZmZpbml0eSA9IHZpc2libGVQb3NpdGlvbi5hZmZpbml0eSgpOwotICAgIAotICAg
IHRoaXMtPnNldE5vZGVJblVzZShkb21Ob2RlKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKworICAg
IGlmIChpczxIVE1MSW5wdXRFbGVtZW50PihjaGFyYWN0ZXJPZmZzZXQubm9kZSkKKyAgICAgICAg
JiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4oKmNoYXJhY3Rlck9mZnNldC5ub2RlKS5pc1Bh
c3N3b3JkRmllbGQoKSkKKyAgICAgICAgcmV0dXJuIHsgKnRoaXMsIG51bGxwdHIsIHsgfSwgMCwg
MCwgdHJ1ZSB9OworCisgICAgc2V0Tm9kZUluVXNlKGNoYXJhY3Rlck9mZnNldC5ub2RlKTsKKyAg
ICByZXR1cm4geyAqdGhpcywgY2hhcmFjdGVyT2Zmc2V0Lm5vZGUsIHZpc2libGVQb3NpdGlvbkZy
b21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KSwKKyAgICAgICAgY2hhcmFjdGVyT2Zm
c2V0LnN0YXJ0SW5kZXgsIGNoYXJhY3Rlck9mZnNldC5vZmZzZXQsIGZhbHNlIH07CiB9CiAKIENo
YXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9y
UmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQsIGJvb2wgZW50ZXJU
ZXh0Q29udHJvbHMpCkBAIC0yNTcxLDE3ICsyNTUwLDEyIEBAIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxl
UmFuCiAgICAgcmV0dXJuIHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvcHlSYW5nZSwgb2Zmc2V0
LCBvcHRpb25zLCBzdGF5V2l0aGluUmFuZ2UpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnN0
YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2Vy
RGF0YSwgY29uc3QgU2ltcGxlUmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCitUZXh0TWFya2Vy
RGF0YSBBWE9iamVjdENhY2hlOjpzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShjb25z
dCBTaW1wbGVSYW5nZSYgcmFuZ2UsIGJvb2wgaXNTdGFydCkKIHsKLSAgICAvLyBUaGlzIG1lbW9y
eSBtdXN0IGJlIHplcm8nZCBzbyBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRl
c3RlZCBmb3IgYnl0ZS1lcXVpdmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5
IGFuZCBiYWQgYmVjYXVzZSBUZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KLSAg
ICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihU
ZXh0TWFya2VyRGF0YSkpOwotICAgIAotICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZz
ZXQgPSBzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UocmFuZ2UsIGlzU3RhcnQpOwor
ICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJh
bmdlKHJhbmdlLCBpc1N0YXJ0KTsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQot
ICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVy
T2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICByZXR1cm4g
eyB9OworICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0
ZXJPZmZzZXQpOwogfQogCiBDaGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVy
T2Zmc2V0Rm9yTm9kZUFuZE9mZnNldChOb2RlJiBub2RlLCBpbnQgb2Zmc2V0LCBUcmF2ZXJzZU9w
dGlvbiBvcHRpb24pCkBAIC0yNjMwLDE1ICsyNjA0LDYgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2Jq
ZWN0Q2FjaGU6OmNoYXJhY3Rlck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50
IG8KICAgICByZXR1cm4gY2hhcmFjdGVyT2Zmc2V0OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6
OnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFy
a2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCi17Ci0gICAg
Ly8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJE
YXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzog
VGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2
aWFsIHR5cGUuCi0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEp
LCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLQotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0
aENoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLX0KLQog
Ym9vbCBBWE9iamVjdENhY2hlOjpzaG91bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0JiBwcmV2aW91cywgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBuZXh0KQogewogICAgIC8vIE1h
dGNoIHRoZSBiZWhhdmlvciBvZiBWaXNpYmxlUG9zaXRpb24sIHdlIHNob3VsZCBza2lwIHRoZSBu
b2RlIGJvdW5kYXJ5IHdoZW4gdGhlcmUncyBubyB2aXN1YWwgc3BhY2Ugb3IgbmV3IGxpbmUgY2hh
cmFjdGVyLgpAQCAtMjY1Nyw0MSArMjYyMiw1NyBAQCBib29sIEFYT2JqZWN0Q2FjaGU6OnNob3Vs
ZFNraXBCb3VuZGFyeShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3VzLCBjb25zdCBDaAog
ICAgIAogICAgIHJldHVybiB0cnVlOwogfQotICAgIAotdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0
TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJr
ZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKKworVGV4dE1h
cmtlckRhdGEgQVhPYmplY3RDYWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zm
c2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewotICAgIENoYXJh
Y3Rlck9mZnNldCBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0OwotICAgIENoYXJhY3Rlck9mZnNldCBw
cmV2aW91cyA9IGNoYXJhY3Rlck9mZnNldDsKKyAgICBUZXh0TWFya2VyRGF0YSBkYXRhOworICAg
IGF1dG8gbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKKyAgICBhdXRvIHByZXZpb3VzID0gY2hhcmFj
dGVyT2Zmc2V0OwogICAgIGJvb2wgc2hvdWxkQ29udGludWU7CiAgICAgZG8gewogICAgICAgICBz
aG91bGRDb250aW51ZSA9IGZhbHNlOwogICAgICAgICBuZXh0ID0gbmV4dENoYXJhY3Rlck9mZnNl
dChuZXh0LCBmYWxzZSk7CiAgICAgICAgIGlmIChzaG91bGRTa2lwQm91bmRhcnkocHJldmlvdXMs
IG5leHQpKQogICAgICAgICAgICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZzZXQobmV4dCwgZmFs
c2UpOwotICAgICAgICB0ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2Vy
RGF0YSwgbmV4dCk7Ci0gICAgICAgIAorICAgICAgICBkYXRhID0gdGV4dE1hcmtlckRhdGFGb3JD
aGFyYWN0ZXJPZmZzZXQobmV4dCk7CisKICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgbmV4dCBD
aGFyYWN0ZXJPZmZzZXQgaWYgaXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFs
ZW5ndGhGb3JSYW5nZShyYW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMs
IG5leHQpKSkKICAgICAgICAgICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgcHJl
dmlvdXMgPSBuZXh0OwotICAgIH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hv
dWxkQ29udGludWUpOworICAgIH0gd2hpbGUgKGRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51
ZSk7CisgICAgcmV0dXJuIGRhdGE7Cit9CisKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpu
ZXh0VGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBU1NFUlQo
bV9pZCA9PSBtYXJrZXIudHJlZUlEKCkpOworICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YUZvck5l
eHRDaGFyYWN0ZXJPZmZzZXQobWFya2VyKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0
TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0
TWFya2VyRGF0YSwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitUZXh0
TWFya2VyRGF0YSBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFj
dGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewotICAg
IENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0
ZXJPZmZzZXQgbmV4dCA9IGNoYXJhY3Rlck9mZnNldDsKKyAgICBUZXh0TWFya2VyRGF0YSBkYXRh
OworICAgIGF1dG8gcHJldmlvdXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBuZXh0ID0g
Y2hhcmFjdGVyT2Zmc2V0OwogICAgIGJvb2wgc2hvdWxkQ29udGludWU7CiAgICAgZG8gewogICAg
ICAgICBzaG91bGRDb250aW51ZSA9IGZhbHNlOwogICAgICAgICBwcmV2aW91cyA9IHByZXZpb3Vz
Q2hhcmFjdGVyT2Zmc2V0KHByZXZpb3VzLCBmYWxzZSk7Ci0gICAgICAgIHRleHRNYXJrZXJEYXRh
Rm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBwcmV2aW91cyk7Ci0gICAgICAgIAor
ICAgICAgICBkYXRhID0gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQocHJldmlvdXMp
OworCiAgICAgICAgIC8vIFdlIHNob3VsZCBza2lwIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBp
ZiBpdCdzIHZpc3VhbGx5IHRoZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZvclJhbmdlKHJh
bmdlRm9yVW5vcmRlcmVkQ2hhcmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkpKQogICAgICAg
ICAgICAgc2hvdWxkQ29udGludWUgPSB0cnVlOwogICAgICAgICBuZXh0ID0gcHJldmlvdXM7Ci0g
ICAgfSB3aGlsZSAodGV4dE1hcmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7Cisg
ICAgfSB3aGlsZSAoZGF0YS5pZ25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsKKyAgICByZXR1cm4g
ZGF0YTsKK30KKworQVhUZXh0TWFya2VyIEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzVGV4dE1hcmtl
cihjb25zdCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBU1NFUlQobV9pZCA9PSBtYXJr
ZXIudHJlZUlEKCkpOworICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFj
dGVyT2Zmc2V0KG1hcmtlcik7CiB9CiAKIE5vZGUqIEFYT2JqZWN0Q2FjaGU6Om5leHROb2RlKE5v
ZGUqIG5vZGUpIGNvbnN0CkBAIC0yNzg5LDc5ICsyNzcwLDQ1IEBAIEFjY2Vzc2liaWxpdHlPYmpl
Y3QqIEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0YShU
ZXh0TWFyCiAgICAgcmV0dXJuIHRoaXMtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwogfQogCi1zdGQ6
Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZv
clZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCitzdGQ6
Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZv
clZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikK
IHsKLSAgICBpZiAodmlzaWJsZVBvcy5pc051bGwoKSkKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9u
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUG9zaXRpb24g
ZGVlcFBvcyA9IHZpc2libGVQb3MuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlKiBkb21Ob2Rl
ID0gZGVlcFBvcy5hbmNob3JOb2RlKCk7Ci0gICAgQVNTRVJUKGRvbU5vZGUpOwotICAgIGlmICgh
ZG9tTm9kZSkKKyAgICBQb3NpdGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1
aXZhbGVudCgpOworICAgIE5vZGUqIG5vZGUgPSBwb3NpdGlvbi5hbmNob3JOb2RlKCk7CisgICAg
QVNTRVJUKG5vZGUpOworICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQorICAgIGlmIChp
czxIVE1MSW5wdXRFbGVtZW50Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigq
bm9kZSkuaXNQYXNzd29yZEZpZWxkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICAvLyBJZiB0aGUgdmlzaWJsZSBwb3NpdGlvbiBoYXMgYW4gYW5jaG9yIHR5cGUgcmVmZXJy
aW5nIHRvIGEgbm9kZSBvdGhlciB0aGFuIHRoZSBhbmNob3JlZCBub2RlLCB3ZSBzaG91bGQKICAg
ICAvLyBzZXQgdGhlIHRleHQgbWFya2VyIGRhdGEgd2l0aCBDaGFyYWN0ZXJPZmZzZXQgc28gdGhh
dCB0aGUgb2Zmc2V0IHdpbGwgY29ycmVzcG9uZCB0byB0aGUgbm9kZS4KLSAgICBDaGFyYWN0ZXJP
ZmZzZXQgY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0RnJvbVZpc2libGVQb3NpdGlv
bih2aXNpYmxlUG9zKTsKLSAgICBpZiAoZGVlcFBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246
OlBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBkZWVwUG9zLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlv
bjo6UG9zaXRpb25Jc0FmdGVyQ2hpbGRyZW4pIHsKLSAgICAgICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7Ci0gICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRl
eHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgICAgICByZXR1cm4gdGV4dE1hcmtl
ckRhdGE7Ci0gICAgfQorICAgIGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0
RnJvbVZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24pOworICAgIGlmIChwb3NpdGlvbi5h
bmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBwb3NpdGlv
bi5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKQorICAg
ICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zm
c2V0KTsKIAotICAgIC8vIGZpbmQgb3IgY3JlYXRlIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZv
ciB0aGlzIG5vZGUKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvbU5vZGUtPmRvY3VtZW50
KCkuYXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5h
eE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKLSAgICBSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gY2FjaGUtPmdldE9y
Q3JlYXRlKGRvbU5vZGUpOwotCi0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28g
aW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZh
bGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4
dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRh
dGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0
YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21O
b2RlOwotICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRp
bmdPZmZzZXQoKTsKLSAgICB0ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBlID0gZGVlcFBvcy5hbmNo
b3JUeXBlKCk7Ci0gICAgdGV4dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zLmFmZmlu
aXR5KCk7Ci0KLSAgICB0ZXh0TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJP
ZmZzZXQub2Zmc2V0OwotICAgIHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBj
aGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleDsKLQotICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UoZG9t
Tm9kZSk7Ci0KLSAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAgY2FjaGUtPnNldE5vZGVJ
blVzZShub2RlKTsKKyAgICByZXR1cm4geyB7ICpjYWNoZSwgbm9kZSwgdmlzaWJsZVBvc2l0aW9u
LAorICAgICAgICBjaGFyYWN0ZXJPZmZzZXQuc3RhcnRJbmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9m
ZnNldCwgZmFsc2UgfSB9OwogfQogCi0vLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9uIHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0LgorLy8gVGhp
cyBmdW5jdGlvbiBleGlzdHMgYXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQg
YSBzeW5jaHJvbm91cyBsYXlvdXQuCiBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9i
amVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhU
TUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaXM8SFRN
TElucHV0RWxlbWVudD4odGV4dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+
KHRleHRDb250cm9sKS5pc1Bhc3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRyb2wuZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCk7CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVu
dCgpLmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwotCi0gICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hl
LT5nZXRPckNyZWF0ZSgmdGV4dENvbnRyb2wpOwotICAgIGlmICghb2JqKQotICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OwotCi0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28g
aW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZh
bGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4
dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGE7Ci0gICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRh
dGEpLCAwLCBzaXplb2YoVGV4dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0
YS5heElEID0gb2JqLT5vYmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4
dENvbnRyb2w7Ci0KICAgICBjYWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7Ci0KLSAg
ICByZXR1cm4gdGV4dE1hcmtlckRhdGE7CisgICAgcmV0dXJuIHsgeyAqY2FjaGUsICZ0ZXh0Q29u
dHJvbCwgeyB9IH0gfTsKIH0KIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6Om5leHRD
aGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQsIGJv
b2wgaWdub3JlTmV4dE5vZGVTdGFydCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmgKaW5kZXggYmNkZjNiYTk4NmIzLi4xMWIyOTFhMGJiYTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oCkBAIC00NCw2ICs0NCw3
IEBAIGNsYXNzIFRleHRTdHJlYW07CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQVhU
ZXh0TWFya2VyOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBIVE1MQXJlYUVsZW1lbnQ7CiBjbGFz
cyBIVE1MVGFibGVFbGVtZW50OwpAQCAtNTYsMTkgKzU3LDcgQEAgY2xhc3MgUmVuZGVyVGV4dDsK
IGNsYXNzIFNjcm9sbFZpZXc7CiBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiBjbGFzcyBXaWRnZXQ7
Ci0KLXN0cnVjdCBUZXh0TWFya2VyRGF0YSB7Ci0gICAgQVhJRCBheElEOwotCi0gICAgTm9kZSog
bm9kZSB7IG51bGxwdHIgfTsKLSAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07Ci0gICAgUG9zaXRp
b246OkFuY2hvclR5cGUgYW5jaG9yVHlwZSB7IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5B
bmNob3IgfTsKLSAgICBBZmZpbml0eSBhZmZpbml0eSB7IEFmZmluaXR5OjpEb3duc3RyZWFtIH07
Ci0KLSAgICBpbnQgY2hhcmFjdGVyU3RhcnRJbmRleCB7IDAgfTsKLSAgICBpbnQgY2hhcmFjdGVy
T2Zmc2V0IHsgMCB9OwotICAgIGJvb2wgaWdub3JlZCB7IGZhbHNlIH07Ci19Oworc3RydWN0IFRl
eHRNYXJrZXJEYXRhOwogCiBzdHJ1Y3QgQ2hhcmFjdGVyT2Zmc2V0IHsKICAgICBOb2RlKiBub2Rl
OwpAQCAtMjM2LDE1ICsyMjUsMTcgQEAgcHVibGljOgogICAgIC8vIFRleHQgbWFya2VyIHV0aWxp
dGllcy4KICAgICBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZv
clZpc2libGVQb3NpdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKICAgICBzdGQ6Om9wdGlv
bmFsPFRleHRNYXJrZXJEYXRhPiB0ZXh0TWFya2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRD
b250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Jik7Ci0gICAgdm9pZCB0ZXh0TWFya2Vy
RGF0YUZvckNoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KFRl
eHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7Ci0gICAgdm9pZCB0ZXh0TWFy
a2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0Jik7Ci0gICAgVmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZv
clRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CisgICAgVGV4dE1hcmtlckRhdGEgdGV4
dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7Cisg
ICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KGNv
bnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlciBuZXh0VGV4dE1hcmtlcihj
b25zdCBBWFRleHRNYXJrZXImKTsKKyAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YUZv
clByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIEFY
VGV4dE1hcmtlciBwcmV2aW91c1RleHRNYXJrZXIoY29uc3QgQVhUZXh0TWFya2VyJik7CisgICAg
VmlzaWJsZVBvc2l0aW9uIHZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKGNvbnN0IFRl
eHRNYXJrZXJEYXRhJik7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZvclRl
eHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJik7CiAgICAgLy8gVXNlIGlnbm9yZU5leHROb2Rl
U3RhcnQvaWdub3JlUHJldmlvdXNOb2RlRW5kIHRvIGRldGVybWluZSB0aGUgYmVoYXZpb3Igd2hl
biB3ZSBhcmUgYXQgbm9kZSBib3VuZGFyeS4gCiAgICAgQ2hhcmFjdGVyT2Zmc2V0IG5leHRDaGFy
YWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiwgYm9vbCBpZ25vcmVOZXh0Tm9kZVN0
YXJ0ID0gdHJ1ZSk7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGJvb2wgaWdub3JlUHJldmlvdXNOb2RlRW5kID0gdHJ1
ZSk7Ci0gICAgdm9pZCBzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShUZXh0TWFya2Vy
RGF0YSYsIGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCk7CisgICAgVGV4dE1hcmtlckRhdGEgc3Rh
cnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuZ2UmLCBib29sKTsK
ICAgICBDaGFyYWN0ZXJPZmZzZXQgc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKGNv
bnN0IFNpbXBsZVJhbmdlJiwgYm9vbCwgYm9vbCBlbnRlclRleHRDb250cm9scyA9IGZhbHNlKTsK
ICAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtl
ckRhdGEoVGV4dE1hcmtlckRhdGEmKTsKICAgICBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBy
YW5nZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jiwg
Y29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CkBAIC00NTYsNyArNDQ3LDYgQEAgcHJvdGVjdGVkOgog
ICAgIENoYXJhY3Rlck9mZnNldCB0cmF2ZXJzZVRvT2Zmc2V0SW5SYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYsIGludCwgVHJhdmVyc2VPcHRpb24gPSBUcmF2ZXJzZU9wdGlvbkRlZmF1bHQsIGJvb2wg
c3RheVdpdGhpblJhbmdlID0gZmFsc2UpOwogICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwogICAgIENo
YXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGcm9tVmlzaWJsZVBvc2l0aW9uKGNvbnN0IFZp
c2libGVQb3NpdGlvbiYpOwotICAgIHZvaWQgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVy
T2Zmc2V0KFRleHRNYXJrZXJEYXRhJiwgY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CiAgICAgVUNo
YXIzMiBjaGFyYWN0ZXJBZnRlcihjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hhcjMy
IGNoYXJhY3RlckJlZm9yZShjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKICAgICBDaGFyYWN0ZXJP
ZmZzZXQgY2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9mZnNldChOb2RlJiwgaW50LCBUcmF2ZXJz
ZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwLi43ZjRmOTVlMDUzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKQEAgLTAsMCArMSwxNjUgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFYVGV4dE1hcmtlci5oIgor
CisjaW5jbHVkZSAiQVhUcmVlU3RvcmUuaCIKKyNpbmNsdWRlICJIVE1MSW5wdXRFbGVtZW50Lmgi
CisjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworQVhU
ZXh0TWFya2VyOjpBWFRleHRNYXJrZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24pCit7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGlmICh2aXNpYmxl
UG9zaXRpb24uaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIG5vZGUgPSB2
aXNpYmxlUG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5hbmNob3JOb2RlKCk7CisgICAgQVNTRVJU
KG5vZGUpOworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY2Fj
aGUgPSBub2RlLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQor
ICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byBkYXRhID0gY2FjaGUtPnRleHRNYXJrZXJE
YXRhRm9yVmlzaWJsZVBvc2l0aW9uKHZpc2libGVQb3NpdGlvbikpCisgICAgICAgIG1fZGF0YSA9
ICpkYXRhOworfQorCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBDaGFyYWN0ZXJP
ZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwor
CisgICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgaWYgKGF1dG8qIGNhY2hlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGUtPmRvY3VtZW50KCkuYXhP
YmplY3RDYWNoZSgpKQorICAgICAgICBtX2RhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JD
aGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKK30KKworQVhUZXh0TWFya2VyOjpvcGVy
YXRvciBWaXNpYmxlUG9zaXRpb24oKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CisKKyAgICBhdXRvKiBjYWNoZSA9IEFYVHJlZVN0b3JlPEFYT2JqZWN0Q2FjaGU+Ojp0cmVl
Rm9ySUQodHJlZUlEKCkpOworICAgIHJldHVybiBjYWNoZSA/IGNhY2hlLT52aXNpYmxlUG9zaXRp
b25Gb3JUZXh0TWFya2VyRGF0YShtX2RhdGEpIDogVmlzaWJsZVBvc2l0aW9uKCk7Cit9CisKK0FY
VGV4dE1hcmtlcjo6b3BlcmF0b3IgQ2hhcmFjdGVyT2Zmc2V0KCkgY29uc3QKK3sKKyAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKGlzSWdub3JlZCgpIHx8IGlzTnVsbCgpKQor
ICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hhcmFjdGVyT2Zmc2V0IHJlc3VsdChtX2RhdGEu
bm9kZSwgbV9kYXRhLmNoYXJhY3RlclN0YXJ0LCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKKyAg
ICAvLyBXaGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBp
cyB1cHN0cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhl
IHByZXZpb3VzIGxpbmUuCisgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZz
ZXQgc28gdGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KKyAgICBpZiAobV9kYXRhLmFmZmlu
aXR5ID09IEFmZmluaXR5OjpVcHN0cmVhbSkgeworICAgICAgICBpZiAoYXV0byBjYWNoZSA9IEFY
VHJlZVN0b3JlPEFYT2JqZWN0Q2FjaGU+Ojp0cmVlRm9ySUQobV9kYXRhLmF4VHJlZUlEKCkpKQor
ICAgICAgICAgICAgcmV0dXJuIGNhY2hlLT5wcmV2aW91c0NoYXJhY3Rlck9mZnNldChyZXN1bHQs
IGZhbHNlKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworQVhDb3JlT2JqZWN0KiBB
WFRleHRNYXJrZXI6Om9iamVjdCgpIGNvbnN0Cit7CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKKworICAgIGF1dG8gdHJlZSA9IEFYVHJlZVN0b3JlPEFYT2JqZWN0
Q2FjaGU+Ojp0cmVlRm9ySUQodHJlZUlEKCkpOworICAgIHJldHVybiB0cmVlID8gdHJlZS0+b2Jq
ZWN0Rm9ySUQob2JqZWN0SUQoKSkgOiBudWxscHRyOworfQorCisjaWYgRU5BQkxFKFRSRUVfREVC
VUdHSU5HKQorU3RyaW5nIEFYVGV4dE1hcmtlcjo6ZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0Cit7
CisgICAgaWYgKGlzTnVsbCgpKQorICAgICAgICByZXR1cm4gIjxudWxsPiJfczsKKworICAgIGF1
dG8gc2VwYXJhdG9yID0gIiwgIjsKKyAgICByZXR1cm4gbWFrZVN0cmluZygKKyAgICAgICAgInRy
ZWVJRCAiLCB0cmVlSUQoKS5sb2dnaW5nU3RyaW5nKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJv
YmplY3RJRCAiLCBvYmplY3RJRCgpLmxvZ2dpbmdTdHJpbmcoKQorICAgICAgICAsIHNlcGFyYXRv
ciwgbm9kZSgpLT5kZWJ1Z0Rlc2NyaXB0aW9uKCkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJvZmZz
ZXQgIiwgbV9kYXRhLm9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgIkFuY2hvclR5cGUgIiwg
bV9kYXRhLmFuY2hvclR5cGUKKyAgICAgICAgLCBzZXBhcmF0b3IsICJBZmZpbml0eSAiLCBtX2Rh
dGEuYWZmaW5pdHkKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJTdGFydCAiLCBtX2Rh
dGEuY2hhcmFjdGVyU3RhcnQKKyAgICAgICAgLCBzZXBhcmF0b3IsICJjaGFyYWN0ZXJPZmZzZXQg
IiwgbV9kYXRhLmNoYXJhY3Rlck9mZnNldAorICAgICAgICAsIHNlcGFyYXRvciwgImlzSWdub3Jl
ZCAiLCBpc0lnbm9yZWQoKQorICAgICk7Cit9CisjZW5kaWYKKworQVhUZXh0TWFya2VyUmFuZ2U6
OkFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IFZpc2libGVQb3NpdGlvblJhbmdlJiByYW5nZSkKKyAg
ICA6IG1fc3RhcnQocmFuZ2Uuc3RhcnQpCisgICAgLCBtX2VuZChyYW5nZS5lbmQpCit7CisgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKK30KKworQVhUZXh0TWFya2VyUmFuZ2U6OkFYVGV4dE1h
cmtlclJhbmdlKGNvbnN0IHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+JiByYW5nZSkKK3sKKyAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byogY2FjaGUgPSByYW5nZS0+c3RhcnQuZG9jdW1lbnQoKS5heE9iamVj
dENhY2hlKCk7CisgICAgaWYgKCFjYWNoZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9zdGFy
dCA9IEFYVGV4dE1hcmtlcihjYWNoZS0+c3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdl
KCpyYW5nZSwgdHJ1ZSkpOworICAgIG1fZW5kID0gQVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9y
RW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCBmYWxzZSkpOworfQorCitBWFRleHRN
YXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0TWFya2VyJiBzLCBjb25z
dCBBWFRleHRNYXJrZXImIGUpCisgICAgOiBtX3N0YXJ0KHMpCisgICAgLCBtX2VuZChlKQorewor
fQorCitBWFRleHRNYXJrZXJSYW5nZTo6b3BlcmF0b3IgVmlzaWJsZVBvc2l0aW9uUmFuZ2UoKSBj
b25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgcmV0dXJuIHsgbV9zdGFy
dCwgbV9lbmQgfTsKK30KKworc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gQVhUZXh0TWFya2Vy
UmFuZ2U6OnNpbXBsZVJhbmdlKCkgY29uc3QKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkp
OworCisgICAgYXV0byBzdGFydEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChtX3N0
YXJ0KTsKKyAgICBhdXRvIGVuZEJvdW5kYXJ5UG9pbnQgPSBtYWtlQm91bmRhcnlQb2ludChtX2Vu
ZCk7CisgICAgaWYgKCFzdGFydEJvdW5kYXJ5UG9pbnQgfHwgIWVuZEJvdW5kYXJ5UG9pbnQpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyAqc3RhcnRCb3VuZGFy
eVBvaW50LCAqZW5kQm91bmRhcnlQb2ludCB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2Vy
LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYzU1Njg1YThjYmIyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaApAQCAt
MCwwICsxLDE3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1Y3QgVGV4dE1hcmtl
ckRhdGEgeworICAgIHVuc2lnbmVkIHRyZWVJRDsKKyAgICB1bnNpZ25lZCBvYmplY3RJRDsKKwor
ICAgIE5vZGUqIG5vZGU7CisgICAgdW5zaWduZWQgb2Zmc2V0OworICAgIFBvc2l0aW9uOjpBbmNo
b3JUeXBlIGFuY2hvclR5cGU7CisgICAgQWZmaW5pdHkgYWZmaW5pdHk7CisKKyAgICB1bnNpZ25l
ZCBjaGFyYWN0ZXJTdGFydDsKKyAgICB1bnNpZ25lZCBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYm9v
bCBpZ25vcmVkOworCisgICAgLy8gQ29uc3RydWN0b3JzIG9mIFRleHRNYXJrZXJEYXRhIG11c3Qg
emVybyB0aGUgc3RydWN0J3MgYmxvY2sgb2YgbWVtb3J5IGJlY2F1c2UgcGxhdGZvcm0gY2xpZW50
IGNvZGUgbWF5IHJlbHkgb24gYSBieXRlLWNvbXBhcmlzb24gdG8gZGV0ZXJtaW5lIGluc3RhbmNl
cyBlcXVhbGl0eS4KKyAgICAvLyBNZW1iZXJzIGluaXRpYWxpemF0aW9uIGFsb25lIGlzIG5vdCBl
bm91Z2ggdG8gZ3VhcmFudHkgdGhhdCBhbGwgYnl0ZXMgaW4gdGhlIHN0cnVjdCBtZW1lb3J5IGFy
ZSBpbml0aWFsaXplZCwgYW5kIG1heSBjYXVzZSByYW5kb20gaW5lcXVhbGl0aWVzIHdoZW4gZG9p
bmcgYnl0ZS1jb21wYXJpc29ucy4KKyAgICAvLyBGb3IgYW4gZXhhbXBlbCBvZiBzdWNoIGJ5dGUt
Y29tcGFyaXNvbiwgc2VlIHRoZSBUZXN0UnVubmVyIFdUUjo6QWNjZXNzaWJpbGl0eVRleHRNYXJr
ZXI6OmlzRXF1YWwuCisgICAgVGV4dE1hcmtlckRhdGEoKQorICAgIHsKKyAgICAgICAgbWVtc2V0
KHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSwgMCwgc2l6ZW9mKCp0aGlzKSk7CisgICAgfQorCisg
ICAgVGV4dE1hcmtlckRhdGEoQVhJRCBheFRyZWVJRCwgQVhJRCBheE9iamVjdElELAorICAgICAg
ICBOb2RlKiBub2RlUGFyYW0gPSBudWxscHRyLCB1bnNpZ25lZCBvZmZzZXRQYXJhbSA9IDAsCisg
ICAgICAgIFBvc2l0aW9uOjpBbmNob3JUeXBlIGFuY2hvclR5cGVQYXJhbSA9IFBvc2l0aW9uOjpQ
b3NpdGlvbklzT2Zmc2V0SW5BbmNob3IsCisgICAgICAgIEFmZmluaXR5IGFmZmluaXR5UGFyYW0g
PSBBZmZpbml0eTo6RG93bnN0cmVhbSwKKyAgICAgICAgdW5zaWduZWQgY2hhclN0YXJ0ID0gMCwg
dW5zaWduZWQgY2hhck9mZnNldCA9IDAsIGJvb2wgaWdub3JlZFBhcmFtID0gZmFsc2UpCisgICAg
eworICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRo
aXMpKTsKKyAgICAgICAgdHJlZUlEID0gYXhUcmVlSUQudG9VSW50NjQoKTsKKyAgICAgICAgb2Jq
ZWN0SUQgPSBheE9iamVjdElELnRvVUludDY0KCk7CisgICAgICAgIG5vZGUgPSBub2RlUGFyYW07
CisgICAgICAgIG9mZnNldCA9IG9mZnNldFBhcmFtOworICAgICAgICBhbmNob3JUeXBlID0gYW5j
aG9yVHlwZVBhcmFtOworICAgICAgICBhZmZpbml0eSA9IGFmZmluaXR5UGFyYW07CisgICAgICAg
IGNoYXJhY3RlclN0YXJ0ID0gY2hhclN0YXJ0OworICAgICAgICBjaGFyYWN0ZXJPZmZzZXQgPSBj
aGFyT2Zmc2V0OworICAgICAgICBpZ25vcmVkID0gaWdub3JlZFBhcmFtOworICAgIH0KKworICAg
IFRleHRNYXJrZXJEYXRhKEFYT2JqZWN0Q2FjaGUmIGNhY2hlLCBOb2RlKiBub2RlUGFyYW0sIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYgdmlzaWJsZVBvc2l0aW9uLAorICAgICAgICBpbnQgY2hhclN0
YXJ0ID0gMCwgaW50IGNoYXJPZmZzZXQgPSAwLCBib29sIGlnbm9yZWRQYXJhbSA9IGZhbHNlKQor
ICAgIHsKKyAgICAgICAgbWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSwgMCwgc2l6ZW9m
KCp0aGlzKSk7CisKKyAgICAgICAgdHJlZUlEID0gY2FjaGUudHJlZUlEKCkudG9VSW50NjQoKTsK
KyAgICAgICAgaWYgKFJlZlB0ciBvYmplY3QgPSBjYWNoZS5nZXRPckNyZWF0ZShub2RlUGFyYW0p
KQorICAgICAgICAgICAgb2JqZWN0SUQgPSBvYmplY3QtPm9iamVjdElEKCkudG9VSW50NjQoKTsK
KworICAgICAgICBub2RlID0gbm9kZVBhcmFtOworICAgICAgICBhdXRvIHBvc2l0aW9uID0gdmlz
aWJsZVBvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCk7CisgICAgICAgIG9mZnNldCA9ICF2aXNpYmxl
UG9zaXRpb24uaXNOdWxsKCkgPyBzdGQ6Om1heChwb3NpdGlvbi5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCAwKSA6IDA7CisgICAgICAgIGFuY2hvclR5cGUgPSBwb3NpdGlvbi5hbmNob3JUeXBl
KCk7CisgICAgICAgIGFmZmluaXR5ID0gdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCk7CisKKyAg
ICAgICAgY2hhcmFjdGVyU3RhcnQgPSBzdGQ6Om1heChjaGFyU3RhcnQsIDApOworICAgICAgICBj
aGFyYWN0ZXJPZmZzZXQgPSBzdGQ6Om1heChjaGFyT2Zmc2V0LCAwKTsKKyAgICAgICAgaWdub3Jl
ZCA9IGlnbm9yZWRQYXJhbTsKKyAgICB9CisKKyAgICBBWElEIGF4VHJlZUlEKCkgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxBWElEVHlwZT4odHJlZUlE
KTsKKyAgICB9CisKKyAgICBBWElEIGF4T2JqZWN0SUQoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1ha2VPYmplY3RJZGVudGlmaWVyPEFYSURUeXBlPihvYmplY3RJRCk7CisgICAgfQor
fTsKKworI2lmIFBMQVRGT1JNKE1BQykKK3VzaW5nIFBsYXRmb3JtVGV4dE1hcmtlckRhdGEgPSBB
WFRleHRNYXJrZXJSZWY7CisjZWxpZiBQTEFURk9STShJT1NfRkFNSUxZKQordXNpbmcgUGxhdGZv
cm1UZXh0TWFya2VyRGF0YSA9IE5TRGF0YSAqOzsKKyNlbmRpZgorCitjbGFzcyBBWFRleHRNYXJr
ZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIGZyaWVuZCBjbGFzcyBBWFRl
eHRNYXJrZXJSYW5nZTsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMKKyAgICBBWFRleHRN
YXJrZXIoY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CisgICAgQVhUZXh0TWFya2VyKGNvbnN0IENo
YXJhY3Rlck9mZnNldCYpOworICAgIEFYVGV4dE1hcmtlcihjb25zdCBUZXh0TWFya2VyRGF0YSYg
ZGF0YSkKKyAgICAgICAgOiBtX2RhdGEoZGF0YSkKKyAgICB7IH0KKyAgICBBWFRleHRNYXJrZXIo
VGV4dE1hcmtlckRhdGEmJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShkYXRhKQorICAgIHsgfQor
I2lmIFBMQVRGT1JNKENPQ09BKQorICAgIEFYVGV4dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXJE
YXRhKTsKKyNlbmRpZgorICAgIEFYVGV4dE1hcmtlcigpID0gZGVmYXVsdDsKKworICAgIG9wZXJh
dG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhaXNOdWxsKCk7IH0KKyAgICBvcGVyYXRvciBWaXNp
YmxlUG9zaXRpb24oKSBjb25zdDsKKyAgICBvcGVyYXRvciBDaGFyYWN0ZXJPZmZzZXQoKSBjb25z
dDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIFJldGFpblB0cjxQbGF0Zm9ybVRleHRNYXJr
ZXJEYXRhPiBwbGF0Zm9ybURhdGEoKSBjb25zdDsKKyAgICBvcGVyYXRvciBQbGF0Zm9ybVRleHRN
YXJrZXJEYXRhKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1EYXRhKCkuYXV0b3JlbGVhc2UoKTsg
fQorI2VuZGlmCisKKyAgICBBWElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5heFRy
ZWVJRCgpOyB9CisgICAgQVhJRCBvYmplY3RJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5heE9i
amVjdElEKCk7IH0KKyAgICBBWENvcmVPYmplY3QqIG9iamVjdCgpIGNvbnN0OworCisvLyAgICBU
ZXh0TWFya2VyRGF0YSBjb25zdCYgZGF0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YTsgfQorICAg
IE5vZGUqIG5vZGUoKSBjb25zdCB7IHJldHVybiBtX2RhdGEubm9kZTsgfQorICAgIGJvb2wgaXNJ
Z25vcmVkKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmlnbm9yZWQ7IH0KKworI2lmIEVOQUJMRShU
UkVFX0RFQlVHR0lORykKKyAgICBTdHJpbmcgZGVidWdEZXNjcmlwdGlvbigpIGNvbnN0OworI2Vu
ZGlmCisKK3ByaXZhdGU6CisgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhdHJlZUlE
KCkuaXNWYWxpZCgpIHx8ICFvYmplY3RJRCgpLmlzVmFsaWQoKTsgfQorICAgIFRleHRNYXJrZXJE
YXRhIG1fZGF0YTsKK307CisKK2NsYXNzIEFYVGV4dE1hcmtlclJhbmdlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3RvcnMuCisgICAgQVhU
ZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlzaWJsZVBvc2l0aW9uUmFuZ2UmKTsKKyAgICBBWFRleHRN
YXJrZXJSYW5nZShjb25zdCBzdGQ6Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiYpOworICAgIEFYVGV4
dE1hcmtlclJhbmdlKGNvbnN0IEFYVGV4dE1hcmtlciYsIGNvbnN0IEFYVGV4dE1hcmtlciYpOwor
I2lmIFBMQVRGT1JNKE1BQykKKyAgICBBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5n
ZVJlZik7CisjZW5kaWYKKyAgICBBWFRleHRNYXJrZXJSYW5nZSgpID0gZGVmYXVsdDsKKworICAg
IG9wZXJhdG9yIGJvb2woKSBjb25zdCB7IHJldHVybiAhbV9zdGFydC5pc051bGwoKSAmJiAhbV9l
bmQuaXNOdWxsKCk7IH0KKyAgICBvcGVyYXRvciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0
OworICAgIHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+IHNpbXBsZVJhbmdlKCkgY29uc3Q7CisK
KyNpZiBQTEFURk9STShNQUMpCisgICAgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBw
bGF0Zm9ybURhdGEoKSBjb25zdDsKKyAgICBvcGVyYXRvciBBWFRleHRNYXJrZXJSYW5nZVJlZigp
IGNvbnN0IHsgcmV0dXJuIHBsYXRmb3JtRGF0YSgpLmF1dG9yZWxlYXNlKCk7IH0KKyNlbmRpZgor
CisgICAgQVhUZXh0TWFya2VyIHN0YXJ0KCkgY29uc3QgeyByZXR1cm4gbV9zdGFydDsgfQorICAg
IEFYVGV4dE1hcmtlciBlbmQoKSBjb25zdCB7IHJldHVybiBtX2VuZDsgfQorcHJpdmF0ZToKKyAg
ICBBWFRleHRNYXJrZXIgbV9zdGFydDsKKyAgICBBWFRleHRNYXJrZXIgbV9lbmQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVHJlZVN0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJl
ZVN0b3JlLmgKaW5kZXggMzIxZGVlZmIyMmE5Li44NzQ0NzM5MTg3ZWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FYVHJlZVN0b3JlLmgKQEAgLTM2LDE1ICszNiwxNiBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgogY2xhc3MgQVhUcmVlU3RvcmUgewogICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEFYVHJlZVN0b3JlKTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1Ymxp
YzoKKyAgICBBWElEIHRyZWVJRCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7IH0KKyAgICBzdGF0aWMg
VCogdHJlZUZvcklEKEFYSUQpOwogcHJvdGVjdGVkOgogICAgIEFYVHJlZVN0b3JlKCkgPSBkZWZh
dWx0OwogICAgIHN0YXRpYyB2b2lkIGFkZChBWElELCBXZWFrUHRyPFQ+KTsKICAgICBzdGF0aWMg
dm9pZCByZW1vdmUoQVhJRCk7CiAgICAgc3RhdGljIGJvb2wgY29udGFpbnMoQVhJRCk7CiAKLSAg
ICBzdGF0aWMgUmVmUHRyPFQ+IHRyZWVGb3JJRChBWElEKTsKICAgICBzdGF0aWMgQVhJRCBnZW5l
cmF0ZU5ld0lEKCk7Ci0KICAgICBjb25zdCBBWElEIG1faWQgeyBnZW5lcmF0ZU5ld0lEKCkgfTsK
ICAgICBzdGF0aWMgTG9jayBzX3N0b3JlTG9jazsKIHByaXZhdGU6CkBAIC03Myw3ICs3NCw3IEBA
IGlubGluZSBib29sIEFYVHJlZVN0b3JlPFQ+Ojpjb250YWlucyhBWElEIGF4SUQpCiB9CiAKIHRl
bXBsYXRlPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgUmVmUHRyPFQ+IEFYVHJlZVN0b3JlPFQ+Ojp0cmVl
Rm9ySUQoQVhJRCBheElEKQoraW5saW5lIFQqIEFYVHJlZVN0b3JlPFQ+Ojp0cmVlRm9ySUQoQVhJ
RCBheElEKQogewogICAgIExvY2tlciBsb2NrZXIgeyBzX3N0b3JlTG9jayB9OwogICAgIHJldHVy
biBtYXAoKS5nZXQoYXhJRCkuZ2V0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L2NvY29hL0FYVGV4dE1hcmtlckNvY29hLm1tIGIvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAuLmI0Y2ViYjFkNDU1OAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2EubW0KQEAg
LTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBB
TlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQg
IkFYVGV4dE1hcmtlci5oIgorCisjaWYgUExBVEZPUk0oTUFDKQorI2ltcG9ydCAiV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMuaCIKKyNpbXBvcnQgPHBhbC9zcGkvbWFjL0hJU2Vydmlj
ZXNTUEkuaD4KKyNlbHNlIC8vIFBMQVRGT1JNKElPU19GQU1JTFkpCisjaW1wb3J0ICJXZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5oIgorI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworQVhUZXh0TWFya2VyOjpBWFRleHRNYXJrZXIoUGxhdGZvcm1UZXh0TWFya2VyRGF0YSBw
bGF0Zm9ybURhdGEpCit7CisgICAgaWYgKCFwbGF0Zm9ybURhdGEpCisgICAgICAgIHJldHVybjsK
KworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBBU1NFUlQoQ0ZHZXRUeXBlSUQocGxhdGZvcm1EYXRh
KSA9PSBBWFRleHRNYXJrZXJHZXRUeXBlSUQoKSk7CisgICAgaWYgKENGR2V0VHlwZUlEKHBsYXRm
b3JtRGF0YSkgIT0gQVhUZXh0TWFya2VyR2V0VHlwZUlEKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIEFTU0VSVChBWFRleHRNYXJrZXJHZXRMZW5ndGgocGxhdGZvcm1EYXRhKSA9PSBzaXplb2Yo
bV9kYXRhKSk7CisgICAgaWYgKEFYVGV4dE1hcmtlckdldExlbmd0aChwbGF0Zm9ybURhdGEpICE9
IHNpemVvZihtX2RhdGEpKQorICAgICAgICByZXR1cm47CisKKyAgICBtZW1jcHkoJm1fZGF0YSwg
QVhUZXh0TWFya2VyR2V0Qnl0ZVB0cihwbGF0Zm9ybURhdGEpLCBzaXplb2YobV9kYXRhKSk7Cisj
ZWxzZSAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIFtwbGF0Zm9ybURhdGEgZ2V0Qnl0ZXM6
Jm1fZGF0YSBsZW5ndGg6c2l6ZW9mKG1fZGF0YSldOworI2VuZGlmCit9CisKK1JldGFpblB0cjxQ
bGF0Zm9ybVRleHRNYXJrZXJEYXRhPiBBWFRleHRNYXJrZXI6OnBsYXRmb3JtRGF0YSgpIGNvbnN0
Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNy
ZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZtX2RhdGEsIHNpemVvZiht
X2RhdGEpKSk7CisjZWxzZSAvLyBQTEFURk9STShJT1NfRkFNSUxZKQorICAgIHJldHVybiBbTlNE
YXRhIGRhdGFXaXRoQnl0ZXM6Jm1fZGF0YSBsZW5ndGg6c2l6ZW9mKG1fZGF0YSldOworI2VuZGlm
Cit9CisKKyNpZiBQTEFURk9STShNQUMpCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2Vy
UmFuZ2UoQVhUZXh0TWFya2VyUmFuZ2VSZWYgdGV4dE1hcmtlclJhbmdlUmVmKQoreworICAgIEFT
U0VSVChDRkdldFR5cGVJRCh0ZXh0TWFya2VyUmFuZ2VSZWYpID09IEFYVGV4dE1hcmtlclJhbmdl
R2V0VHlwZUlEKCkpOworCisgICAgYXV0byBzdGFydCA9IEFYVGV4dE1hcmtlclJhbmdlQ29weVN0
YXJ0TWFya2VyKHRleHRNYXJrZXJSYW5nZVJlZik7CisgICAgYXV0byBlbmQgPSBBWFRleHRNYXJr
ZXJSYW5nZUNvcHlFbmRNYXJrZXIodGV4dE1hcmtlclJhbmdlUmVmKTsKKworICAgIG1fc3RhcnQg
PSBzdGFydDsKKyAgICBtX2VuZCA9IGVuZDsKKworICAgIENGUmVsZWFzZShzdGFydCk7CisgICAg
Q0ZSZWxlYXNlKGVuZCk7Cit9CisKK1JldGFpblB0cjxBWFRleHRNYXJrZXJSYW5nZVJlZj4gQVhU
ZXh0TWFya2VyUmFuZ2U6OnBsYXRmb3JtRGF0YSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGFkb3B0
Q0YoQVhUZXh0TWFya2VyUmFuZ2VDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdAorICAgICAgICAs
IG1fc3RhcnQucGxhdGZvcm1EYXRhKCkuYXV0b3JlbGVhc2UoKQorICAgICAgICAsIG1fZW5kLnBs
YXRmb3JtRGF0YSgpLmF1dG9yZWxlYXNlKCkKKyAgICApKTsKK30KKyNlbmRpZiAvLyBQTEFURk9S
TShNQUMpCisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXJJT1MubW0KaW5kZXggZTNhMmU2MWM2ZWI4Li4wMzgzNmNmMjM2NzUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVySU9TLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCkBAIC0xODEsMjggKzE4MSwyMiBAQCAr
IChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJrZXJXaXRoVmlzaWJsZVBvc2l0
aW9uOihWaXNpYmxlUG9zaXRpb24mKQogCiArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAq
KXRleHRNYXJrZXJXaXRoQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rl
ck9mZnNldCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUKIHsKLSAgICBpZiAoIWNhY2hlKQot
ICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxs
KCkpCisgICAgaWYgKCFjYWNoZSB8fCBjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0g
ICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRh
LCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4dE1hcmtlckRhdGEuYXhJRCAmJiAhdGV4
dE1hcmtlckRhdGEuaWdub3JlZCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+
dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBp
ZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEICYmICF0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQog
ICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJpbGl0
eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEgY2Fj
aGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiArIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1h
cmtlciAqKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2U6KGNvbnN0IHN0ZDo6b3B0aW9uYWw8
U2ltcGxlUmFuZ2U+JilyYW5nZSBpc1N0YXJ0OihCT09MKWlzU3RhcnQgY2FjaGU6KEFYT2JqZWN0
Q2FjaGUqKWNhY2hlCiB7Ci0gICAgaWYgKCFjYWNoZSkKLSAgICAgICAgcmV0dXJuIG5pbDsKLSAg
ICBpZiAoIXJhbmdlKQorICAgIGlmICghY2FjaGUgfHwgIXJhbmdlKQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT5zdGFy
dE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSh0ZXh0TWFya2VyRGF0YSwgKnJhbmdlLCBpc1N0
YXJ0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCisKKyAgICBhdXRvIHRleHRNYXJr
ZXJEYXRhID0gY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJhbmdlKCpyYW5nZSwg
aXNTdGFydCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSku
YXV0b3JlbGVhc2UoKTsKIH0KQEAgLTI2NzMsMjYgKzI2NjcsMjQgQEAgLSAoV2ViQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgKil0ZXh0TWFya2VyRm9yUG9pbnQ6KENHUG9pbnQpcG9pbnQKIAogLSAo
V2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKiluZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0
OihDaGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAogewotICAgIEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBhdXRv
KiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgaWYg
KCFjYWNoZSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0
ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVy
T2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4dE1h
cmtlckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+dGV4dE1h
cmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNldCk7CisgICAgaWYg
KCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICByZXR1
cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyIGFsbG9jXSBpbml0V2l0aFRl
eHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSkuYXV0b3JlbGVhc2UoKTsKIH0K
IAogLSAoV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgKilwcmV2aW91c01hcmtlckZvckNoYXJh
Y3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKIHsKLSAgICBBWE9i
amVjdENhY2hlKiBjYWNoZSA9IHNlbGYuYXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7
CisgICAgYXV0byogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgp
OwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1h
cmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yUHJl
dmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0g
ICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9
IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rl
ck9mZnNldCk7CisgICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5vYmplY3RJRCkKICAgICAgICAgcmV0
dXJuIG5pbDsKICAgICByZXR1cm4gYWRvcHROUyhbW1dlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
IGFsbG9jXSBpbml0V2l0aFRleHRNYXJrZXI6JnRleHRNYXJrZXJEYXRhIGNhY2hlOmNhY2hlXSku
YXV0b3JlbGVhc2UoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9BWE9iamVjdENhY2hlTWFjLm1tCmluZGV4IDdiOTJkYmEzYTRhNy4uMTVlYmYzNTQ5ZDM5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0
Q2FjaGVNYWMubW0KQEAgLTgyMSwxMSArODIxLDkgQEAgQVhUZXh0TWFya2VyUmVmIHRleHRNYXJr
ZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IENoYXJhY3QK
ICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgVGV4dE1hcmtlckRh
dGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVy
T2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFyYWN0ZXJPZmZzZXQpOwotICAgIGlmICghdGV4dE1h
cmtlckRhdGEuYXhJRCB8fCB0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQorICAgIGF1dG8gdGV4dE1h
cmtlckRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFj
dGVyT2Zmc2V0KTsKKyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElEIHx8IHRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gYWRvcHRD
RihBWFRleHRNYXJrZXJDcmVhdGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4Kikm
dGV4dE1hcmtlckRhdGEsIHNpemVvZih0ZXh0TWFya2VyRGF0YSkpKS5hdXRvcmVsZWFzZSgpOwog
fQogCkBAIC04NDcsMTEgKzg0NSw5IEBAIEFYVGV4dE1hcmtlclJlZiBzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBzdGQ6Om9wCiAgICAgaWYg
KCFjYWNoZSB8fCAhcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICBUZXh0TWFya2Vy
RGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+c3RhcnRPckVuZFRleHRNYXJrZXJEYXRh
Rm9yUmFuZ2UodGV4dE1hcmtlckRhdGEsICpyYW5nZSwgaXNTdGFydCk7Ci0gICAgaWYgKCF0ZXh0
TWFya2VyRGF0YS5heElEKQorICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+c3RhcnRP
ckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoKnJhbmdlLCBpc1N0YXJ0KTsKKyAgICBpZiAoIXRl
eHRNYXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwotCiAgICAgcmV0dXJu
IGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBV
SW50OCopJnRleHRNYXJrZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSkuYXV0b3JlbGVh
c2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQppbmRleCA0
MjM0Y2Q2OWY5MTkuLjA1YzY1NzEzNjgzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNj
ZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJNYWMubW0KQEAgLTMzLDYgKzMzLDcgQEAKIAogI2ltcG9ydCAiQVhMb2dnZXIuaCIKICNp
bXBvcnQgIkFYT2JqZWN0Q2FjaGUuaCIKKyNpbXBvcnQgIkFYVGV4dE1hcmtlci5oIgogI2ltcG9y
dCAiQWNjZXNzaWJpbGl0eUFSSUFHcmlkUm93LmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5TGFi
ZWwuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMaXN0LmgiCkBAIC03MTcsMzggKzcxOCwyMiBA
QCBzdGF0aWMgc3RkOjpwYWlyPHN0ZDo6b3B0aW9uYWw8U2ltcGxlUmFuZ2U+LCBBY2Nlc3NpYmls
aXR5U2VhcmNoRGlyZWN0aW9uPiBhY2NlcwogCiAjcHJhZ21hIG1hcmsgVGV4dCBNYXJrZXIgaGVs
cGVycwogCi1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXJG
b3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RDYWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYg
Y2hhcmFjdGVyT2Zmc2V0KQorc3RhdGljIFJldGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IG5leHRU
ZXh0TWFya2VyKEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBjb25zdCBBWFRleHRNYXJrZXImIG1hcmtl
cikKIHsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gbmlsOwotICAgIAotICAgIFRl
eHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hlLT50ZXh0TWFya2VyRGF0YUZv
ck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0g
ICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIHJl
dHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoY29u
c3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkpOworCisg
ICAgYXV0byBuZXh0TWFya2VyID0gY2FjaGUtPm5leHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAg
cmV0dXJuIG5leHRNYXJrZXIgPyBuZXh0TWFya2VyLnBsYXRmb3JtRGF0YSgpIDogbmlsOwogfQog
Ci1zdGF0aWMgUmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gcHJldmlvdXNUZXh0TWFya2VyRm9y
Q2hhcmFjdGVyT2Zmc2V0KEFYT2JqZWN0Q2FjaGUqIGNhY2hlLCBDaGFyYWN0ZXJPZmZzZXQmIGNo
YXJhY3Rlck9mZnNldCkKK3N0YXRpYyBSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiBwcmV2aW91
c1RleHRNYXJrZXIoQVhPYmplY3RDYWNoZSogY2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFy
a2VyKQogewogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAg
VGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRh
Rm9yUHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNl
dCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQotICAgICAgICByZXR1cm4gbmlsOwot
ICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0
LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRleHRNYXJrZXJEYXRhKSkp
OwotfQotCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPiluZXh0VGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldDooQ2hhcmFjdGVyT2Zmc2V0JiljaGFyYWN0ZXJPZmZzZXQKLXsKLSAgICBy
ZXR1cm4gbmV4dFRleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmpl
Y3QtPmF4T2JqZWN0Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKLX0KIAotLSAoUmV0YWluUHRy
PEFYVGV4dE1hcmtlclJlZj4pcHJldmlvdXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihD
aGFyYWN0ZXJPZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBwcmV2aW91c1Rl
eHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoc2VsZi5heEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKSwgY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBhdXRvIHByZXZpb3VzTWFya2VyID0gY2Fj
aGUtPnByZXZpb3VzVGV4dE1hcmtlcihtYXJrZXIpOworICAgIHJldHVybiBwcmV2aW91c01hcmtl
ciA/IHByZXZpb3VzTWFya2VyLnBsYXRmb3JtRGF0YSgpIDogbmlsOwogfQogCiAvLyBGSVhNRTog
UmVtb3ZlIHRoaXMgbWV0aG9kIHNpbmNlIGNsaWVudHMgc2hvdWxkIG5vdCBuZWVkIHRvIGNhbGwg
dGhpcyBtZXRob2QgYW5kIHNob3VsZCBub3QgYmUgZXhwb3NlZCBpbiB0aGUgcHVibGljIGludGVy
ZmFjZS4KQEAgLTMzNzQsMjQgKzMzNTksMjQgQEAgLSAoQVhUZXh0TWFya2VyUmFuZ2VSZWYpbGlu
ZVRleHRNYXJrZXJSYW5nZUZvclRleHRNYXJrZXI6KEFYVGV4dE1hcmtlclJlZil0ZXh0TWEKICAg
ICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgYXV0
byB2aXNpYmxlUG9zaXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyKGNhY2hlLCB0
ZXh0TWFya2VyKTsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKICAg
ICAgICAgVmlzaWJsZVBvc2l0aW9uUmFuZ2UgdmlzaWJsZVBvc2l0aW9uUmFuZ2U7CiAgICAgICAg
IHN3aXRjaCAodGV4dFVuaXQpIHsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6TGluZToKLSAgICAg
ICAgICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9y
UG9zaXRpb24odmlzaWJsZVBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZpc2libGVQb3NpdGlvblJh
bmdlID0gYmFja2luZ09iamVjdC0+bGluZVJhbmdlRm9yUG9zaXRpb24obWFya2VyKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFRleHRVbml0OjpMZWZ0TGluZToKLSAgICAgICAg
ICAgIHZpc2libGVQb3NpdGlvblJhbmdlID0gYmFja2luZ09iamVjdC0+bGVmdExpbmVWaXNpYmxl
UG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAgICAgdmlzaWJsZVBvc2l0
aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1h
cmtlcik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBUZXh0VW5pdDo6UmlnaHRM
aW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5y
aWdodExpbmVWaXNpYmxlUG9zaXRpb25SYW5nZSh2aXNpYmxlUG9zaXRpb24pOworICAgICAgICAg
ICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5yaWdodExpbmVWaXNpYmxl
UG9zaXRpb25SYW5nZShtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1
bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJuIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxl
UG9zaXRpb25zKGNhY2hlLCB2aXNpYmxlUG9zaXRpb25SYW5nZS5zdGFydCwgdmlzaWJsZVBvc2l0
aW9uUmFuZ2UuZW5kKTsKKyAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtlclJhbmdlKHZpc2libGVQ
b3NpdGlvblJhbmdlKS5wbGF0Zm9ybURhdGEoKTsKICAgICB9KTsKIH0KIApAQCAtMzY4NSwyNSAr
MzY3MCwyMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAgICAgICAg
cmV0dXJuIChpZClbc2VsZiBfdGV4dE1hcmtlckZvckluZGV4OltudW1iZXIgaW50ZWdlclZhbHVl
XV07CiAKICAgICBpZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFVJRWxlbWVudEZv
clRleHRNYXJrZXIiXSkgewotICAgICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eTo6cmV0cmlldmVB
dXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlkPihbJnRleHRNYXJrZXIsIHByb3RlY3Rl
ZFNlbGYgPSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAg
ICAgYXV0byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2Jq
ZWN0OwotICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0KLSAgICAgICAgICAgIGF1dG8qIGF4T2JqZWN0ID0gYWNjZXNzaWJpbGl0eU9i
amVjdEZvclRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFy
a2VyKTsKLSAgICAgICAgICAgIGlmICghYXhPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IG5pbDsKKyAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAg
YXV0byogb2JqZWN0ID0gbWFya2VyLm9iamVjdCgpOworICAgICAgICBpZiAoIW9iamVjdCkKKyAg
ICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIGlmIChheE9iamVjdC0+aXNBdHRh
Y2htZW50KCkgJiYgW2F4T2JqZWN0LT53cmFwcGVyKCkgYXR0YWNobWVudFZpZXddKQotICAgICAg
ICAgICAgICAgIHJldHVybiBbYXhPYmplY3QtPndyYXBwZXIoKSBhdHRhY2htZW50Vmlld107Cisg
ICAgICAgIGF1dG8qIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKTsKKyAgICAgICAgaWYgKCF3
cmFwcGVyKQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICAgICAgcmV0dXJuIGF4
T2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgICAgIH0pOworICAgICAgICBpZiAoaWQgYXR0YWNobWVu
dFZpZXcgPSB3cmFwcGVyLmF0dGFjaG1lbnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuIGF0dGFj
aG1lbnRWaWV3OworICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9CiAKICAgICBpZiAoW2F0
dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFRleHRNYXJrZXJSYW5nZUZvclVJRWxlbWVudCJd
KSB7CiAgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZh
bHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdWlFbGVtZW50XSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsK
LSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVJhbmdlKHVpRWxlbWVu
dC5nZXQoKS0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQuZ2V0KCktPmVsZW1lbnRSYW5nZSgp
KTsKKyAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVJhbmdlKHVpRWxl
bWVudC0+YXhPYmplY3RDYWNoZSgpLCB1aUVsZW1lbnQtPmVsZW1lbnRSYW5nZSgpKTsKICAgICAg
ICAgfSk7CiAgICAgfQogCkBAIC0zNzU0LDcgKzM3MzcsNyBAQCBBTExPV19ERVBSRUNBVEVEX0lN
UExFTUVOVEFUSU9OU19FTkQKICAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkKICAgICAg
ICAgICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4gKGlkKXRleHRNYXJr
ZXJGb3JWaXNpYmxlUG9zaXRpb24oYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBiYWNr
aW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9pbnQpKTsKKyAgICAg
ICAgICAgIHJldHVybiBBWFRleHRNYXJrZXIoYmFja2luZ09iamVjdC0+dmlzaWJsZVBvc2l0aW9u
Rm9yUG9pbnQod2ViQ29yZVBvaW50KSkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFz
ZSgpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM4NDMsOSArMzgyNiw4IEBAIEFMTE9XX0RF
UFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgfHwgIUFYT2JqZWN0SXNU
ZXh0TWFya2VyKFthcnJheSBvYmplY3RBdEluZGV4OjBdKQogICAgICAgICAgICAgfHwgIUFYT2Jq
ZWN0SXNUZXh0TWFya2VyKFthcnJheSBvYmplY3RBdEluZGV4OjFdKSkKICAgICAgICAgICAgIHJl
dHVybiBuaWw7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxl
YXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmYXJyYXldICgpIC0+IFJldGFpblB0cjxpZD4g
ewotICAgICAgICAgICAgcmV0dXJuIChpZCl0ZXh0TWFya2VyUmFuZ2VGcm9tTWFya2VycygoQVhU
ZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjBdLCAoQVhUZXh0TWFya2VyUmVmKVth
cnJheSBvYmplY3RBdEluZGV4OjFdKS5nZXQoKTsKLSAgICAgICAgfSk7CisKKyAgICAgICAgcmV0
dXJuIEFYVGV4dE1hcmtlclJhbmdlIHsgeyAoQVhUZXh0TWFya2VyUmVmKVthcnJheSBvYmplY3RB
dEluZGV4OjBdIH0sIHsgKEFYVGV4dE1hcmtlclJlZilbYXJyYXkgb2JqZWN0QXRJbmRleDoxXSB9
IH0ucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAgIH0KIAogICAgIGlm
IChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYVGV4dE1hcmtlclJhbmdlRm9yVW5vcmRl
cmVkVGV4dE1hcmtlcnMiXSkgewpAQCAtMzg4NCw4ICszODY2LDggQEAgQUxMT1dfREVQUkVDQVRF
RF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAgICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAg
ICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAgICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0
ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2Vy
KTsKLSAgICAgICAgICAgIHJldHVybiBicmlkZ2VfaWRfY2FzdChbcHJvdGVjdGVkU2VsZiBuZXh0
VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldDpjaGFyYWN0ZXJPZmZzZXRdKTsKKyAgICAgICAg
ICAgIEFYVGV4dE1hcmtlciBtYXJrZXIodGV4dE1hcmtlcik7CisgICAgICAgICAgICByZXR1cm4g
bmV4dFRleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRvcmVsZWFzZSgpOwogICAg
ICAgICB9KTsKICAgICB9CiAKQEAgLTM4OTksOCArMzg4MSw4IEBAIEFMTE9XX0RFUFJFQ0FURURf
SU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICAgICAgaWYgKCFjYWNoZSkKICAgICAgICAgICAg
ICAgICByZXR1cm4gbmlsOwogCi0gICAgICAgICAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVy
T2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0Rm9yVGV4dE1hcmtlcihjYWNoZSwgdGV4dE1hcmtlcik7
Ci0gICAgICAgICAgICByZXR1cm4gYnJpZGdlX2lkX2Nhc3QoW3Byb3RlY3RlZFNlbGYgcHJldmlv
dXNUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OmNoYXJhY3Rlck9mZnNldF0pOworICAgICAg
ICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJldHVy
biBwcmV2aW91c1RleHRNYXJrZXIoY2FjaGUsIG1hcmtlcikuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
OwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM5ODEsMjYgKzM5NjMsMTMgQEAgQUxMT1dfREVQ
UkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAKICAgICAvLyBVc2VkIG9ubHkgYnkgRHVtcFJl
bmRlclRyZWUgKHNvIGZhcikuCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAi
QVhTdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UiXSkgewotICAgICAgICByZXR1cm4g
QWNjZXNzaWJpbGl0eTo6cmV0cmlldmVBdXRvcmVsZWFzZWRWYWx1ZUZyb21NYWluVGhyZWFkPGlk
PihbJnRleHRNYXJrZXJSYW5nZSwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0gKCkg
LT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0gcHJv
dGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJhY2tp
bmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAgYXV0
byByYW5nZSA9IHJhbmdlRm9yVGV4dE1hcmtlclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0
Q2FjaGUoKSwgdGV4dE1hcmtlclJhbmdlKTsKLQotICAgICAgICAgICAgcmV0dXJuIChpZClzdGFy
dE9yRW5kVGV4dE1hcmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwg
cmFuZ2UsIHRydWUpOwotICAgICAgICB9KTsKKyAgICAgICAgQVhUZXh0TWFya2VyUmFuZ2UgYXhU
ZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsKKyAgICAgICAgcmV0dXJuIGF4VGV4
dE1hcmtlclJhbmdlLnN0YXJ0KCkucGxhdGZvcm1EYXRhKCkuYnJpZGdpbmdBdXRvcmVsZWFzZSgp
OwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpAIkFYRW5kVGV4
dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmls
aXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1h
cmtlclJhbmdlLCBwcm90ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5Q
dHI8aWQ+IHsKLSAgICAgICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxm
LmdldCgpLmF4QmFja2luZ09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkK
LSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvIHJhbmdlID0g
cmFuZ2VGb3JUZXh0TWFya2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0
ZXh0TWFya2VyUmFuZ2UpOwotICAgICAgICAgICAgcmV0dXJuIChpZClzdGFydE9yRW5kVGV4dE1h
cmtlckZvclJhbmdlKGJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgcmFuZ2UsIGZhbHNl
KTsKLSAgICAgICAgfSk7CisgICAgICAgIEFYVGV4dE1hcmtlclJhbmdlIGF4VGV4dE1hcmtlclJh
bmdlIHsgdGV4dE1hcmtlclJhbmdlIH07CisgICAgICAgIHJldHVybiBheFRleHRNYXJrZXJSYW5n
ZS5lbmQoKS5wbGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAj
aWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhwZWN0ZWQu
dHh0CmluZGV4IDVkMzNkYWNiMmQzZi4uNTA0NjAyNThmYzMzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1t
YXJrZXItZXhwZWN0ZWQudHh0CkBAIC0xLDE3ICsxLDE0IEBACi10ZXh0IGhlcmUKLXRleHQgYmxv
Y2sKLXRleHQgaGVyZQogVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0
dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLgogCi1PbiBz
dWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dl
ZCBieSAiVEVTVCBDT01QTEVURSIuCi0KK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3Ro
KHJhbmdlKSA9PT0gMTAKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFy
a2VyKHN0YXJ0KS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmQpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6
IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld1JhbmdlKSA9PT0gMTAKK1BBU1M6IG5ld1Jh
bmdlLmlzRXF1YWwocmFuZ2UpID09PSB0cnVlCiAKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VM
ZW5ndGgodGV4dE1hcmtlclJhbmdlMSkgaXMgMTAKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFT
UyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1
YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdNYXJr
ZXJSYW5nZSkgaXMgMTAKLVBBU1MgbmV3TWFya2VyUmFuZ2UuaXNFcXVhbCh0ZXh0TWFya2VyUmFu
Z2UxKSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKLQordGV4dCBoZXJlCit0ZXh0IGJsb2NrCit0ZXh0IGhlcmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5o
dG1sCmluZGV4IGQ0OTM2YWQyMmQxOC4uMzQwYWIxZTE5ODBjIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0
bWwKQEAgLTEsNTEgKzEsNDIgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFRE
IEhUTUwvL0VOIj4KIDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vz
c2liaWxpdHktaGVscGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4K
Kzxib2R5PgogCiB0ZXh0IGhlcmUKLTxkaXYgaWQ9InRleHQxIiB0YWJpbmRleD0iMCI+dGV4dCBi
bG9jazwvZGl2PgorPGRpdiBpZD0idGV4dDEiPnRleHQgYmxvY2s8L2Rpdj4KIHRleHQgaGVyZQog
Ci08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgotCiA8
c2NyaXB0PgotCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIHRleHQgbWFya2VyIHN5
c3RlbSB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBlbGVtZW50IHdoZW4gZ2l2ZW4gYSB0ZXh0IG1h
cmtlci4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKKyAg
ICAgICAgbGV0IHRlc3RPdXRwdXQgPSAiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVt
IHdpbGwgcmV0dXJuIHRoZSBjb3JyZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2Vy
LlxuXG4iOwogCi0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRleHQxIikuZm9j
dXMoKTsKLSAgICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3Vz
ZWRFbGVtZW50OworICAgICAgICB2YXIgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDEiKS5jaGlsZEF0SW5kZXgoMCk7CiAKLSAgICAgICAg
ICAvLyBHZXQgdGhlIGFjdHVhbCB0ZXh0IG5vZGUuCi0gICAgICAgICAgdGV4dCA9IHRleHQuY2hp
bGRBdEluZGV4KDApOworICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0
IG1hcmtlciBmb3IgdGhpcyBlbGVtZW50J3MgcmFuZ2UuCisgICAgICAgIHZhciByYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKKyAgICAgICAgdGVzdE91dHB1dCAr
PSBleHBlY3QoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHJhbmdlKSIsICIxMCIpOworICAg
ICAgICB2YXIgc3RhcnQgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShy
YW5nZSk7CiAKLSAgICAgICAgICAvLyBDaGVjayB0aGF0IHdlIGNhbiBnZXQgdGhlIHN0YXJ0IG1h
cmtlciBmb3IgdGhpcyByYW5nZS4KLSAgICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgICBzaG91bGRCZSgi
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMSkiLCAiMTAiKTsKLSAg
ICAgICAgICB2YXIgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UxKTsKKyAgICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgc3Rh
cnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2FtZSBlbGVtZW50IHRoYXQgd2Ugc3RhcnRlZCB3
aXRoLgorICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwogCi0gICAg
ICAgICAgLy8gQ2hlY2sgdGhhdCB0aGUgc3RhcnQgbWFya2VyIHdpbGwgZ2l2ZSB1cyB0aGUgc2Ft
ZSBlbGVtZW50IHRoYXQgd2Ugc3RhcnRlZCB3aXRoLgotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgi
dGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1
YWwodGV4dCkiKTsKKyAgICAgICAgLy8gR2V0IHRoZSBlbmQgbWFya2VyIGFuZCBjaGVjayB0aGF0
IGl0IGdpdmVzIHVzIHRoZSBzYW1lIGVsZW1lbnQuCisgICAgICAgIHZhciBlbmQgPSB0ZXh0LmVu
ZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICB0ZXN0T3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kKS5p
c0VxdWFsKHRleHQpIiwgInRydWUiKTsKIAotICAgICAgICAgIC8vIEdldCB0aGUgZW5kIG1hcmtl
ciBhbmQgY2hlY2sgdGhhdCBpdCBnaXZlcyB1cyB0aGUgc2FtZSBlbGVtZW50LgotICAgICAgICAg
IHZhciBlbmRNYXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dE1hcmtlclJhbmdlMSk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKKyAgICAg
ICAgLy8gTWFrZSBhIG1hcmtlciByYW5nZSBvdXQgb2YgdGhlIHN0YXJ0IGFuZCBlbmQgbWFya2Vy
cyBhbmQgY2hlY2sgdGhlIGxlbmd0aC4KKyAgICAgICAgdmFyIG5ld1JhbmdlID0gdGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0LCBlbmQpOworICAgICAgICB0ZXN0T3V0cHV0ICs9
IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgobmV3UmFuZ2UpIiwgIjEwIik7CiAK
LSAgICAgICAgICAvLyBNYWtlIGEgbWFya2VyIHJhbmdlIG91dCBvZiB0aGUgc3RhcnQgYW5kIGVu
ZCBtYXJrZXJzIGFuZCBjaGVjayB0aGUgbGVuZ3RoCi0gICAgICAgICAgdmFyIG5ld01hcmtlclJh
bmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFya2VyLCBlbmRNYXJr
ZXIpOwotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChuZXdN
YXJrZXJSYW5nZSkiLCAiMTAiKTsKKyAgICAgICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMg
dGhlIHNhbWUgbWFya2VyIHJhbmdlIHdlIHN0YXJ0ZWQgd2l0aAorICAgICAgICB0ZXN0T3V0cHV0
ICs9IGV4cGVjdCgibmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkiLCAidHJ1ZSIpOwogCi0gICAgICAg
ICAgLy8gQW5kIG1ha2Ugc3VyZSBpdCBlcXVhbHMgdGhlIHNhbWUgbWFya2VyIHJhbmdlIHdlIHN0
YXJ0ZWQgd2l0aAotICAgICAgICAgIHNob3VsZEJlVHJ1ZSgibmV3TWFya2VyUmFuZ2UuaXNFcXVh
bCh0ZXh0TWFya2VyUmFuZ2UxKSIpOworICAgICAgICBkZWJ1Zyh0ZXN0T3V0cHV0KTsKICAgICB9
Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVk
aWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IDAyYzU3NjU4YTU2
Zi4uOGZjNWZkNzI0OGIxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21h
Yy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdub3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRlLWZyb20taWdu
b3JlZC1lbGVtZW50LWV4cGVjdGVkLnR4dApAQCAtMSwxNiArMSwxMyBAQAotRmlyc3QgbGluZSBv
ZiB0ZXh0Ci1idXR0b24KLVRoaXJkIGxpbmUgb2YgdGV4dAogVGhpcyB0ZXN0cyB0aGUgYWJpbGl0
eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBpZ25vcmVkIGVsZW1l
bnQuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KK1BBU1M6IGVsZW1lbnQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHJhbmdlKSA9PT0gJ0ZpcnN0IGxpbmUgb2YgdGV4dCcKK1BBU1M6IGVs
ZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSA9PT0gJ2J1dHRvbicKK1BBU1M6
IHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBUaGlyZCBsaW5lIG9mIHRl
eHQnCitQQVNTOiByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlID09PSAnQVhWYWx1ZTogRmlyc3Qg
bGluZSBvZiB0ZXh0JwogCi0KLVBBU1MgZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICdGaXJzdCBsaW5lIG9mIHRleHQnCi1QQVNTIGVsZW1lbnQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSkgaXMgJ2J1dHRvbicKLVBBU1MgcmVzdWx0RWxl
bWVudC5zdHJpbmdWYWx1ZSBpcyAnQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JwotUEFTUyBy
ZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQn
CiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNh
dGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
bWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQuaHRtbAppbmRleCA2ZWE4
MTg3YzAyMjYuLjk1ZDdhNDZjZWNkMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25v
cmVkLWVsZW1lbnQuaHRtbApAQCAtMSw1MCArMSw0NyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElD
ICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIu
Li8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9y
ZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJv
ZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKKzxkaXYgaWQ9ImNvbnRhaW5lciIgcm9sZT0iZ3JvdXAi
PgogPGRpdiBpZD0idGVzdCI+Rmlyc3QgbGluZSBvZiB0ZXh0PGJyPgogPGJ1dHRvbiBpZD0iYnV0
dG9uIiBhcmlhLWhpZGRlbj0idHJ1ZSI+YnV0dG9uPC9idXR0b24+CiA8YnI+VGhpcmQgbGluZSBv
ZiB0ZXh0PC9kaXY+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29s
ZSI+PC9kaXY+Cis8L2Rpdj4KIAogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlvbigiVGhpcyB0ZXN0
cyB0aGUgYWJpbGl0eSB0byBzZWFyY2ggZm9yIGFjY2Vzc2libGUgZWxlbWVudHMgZnJvbSBhbiBp
Z25vcmVkIGVsZW1lbnQuIik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29u
dHJvbGxlcikgewotICAgICAgICAKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImJv
ZHkiKS5mb2N1cygpOwotICAgICAgICB2YXIgY29udGFpbmVyRWxlbWVudCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1
dCA9ICJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJsZSBlbGVt
ZW50cyBmcm9tIGFuIGlnbm9yZWQgZWxlbWVudC5cblxuIjsKKworICAgICAgICB2YXIgY29udGFp
bmVyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250
YWluZXIiKTsKICAgICAgICAgdmFyIGVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5h
Y2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRlc3QiKS5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIHZh
ciBtYXJrZXJSYW5nZSA9IGVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChlbGVtZW50
KTsKLSAgICAgICAgc2hvdWxkQmUoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICInRmlyc3QgbGluZSBvZiB0ZXh0JyIpOwotICAgICAgICAKLSAgICAgICAg
Ly8gVHJ5IHRvIGdldCB0aGUgaWdub3JlZCBlbGVtZW50IHVzaW5nIGxpbmUgdGV4dCBtYXJrZXIg
Y2FsbHMKLSAgICAgICAgdmFyIHRleHRNYXJrZXIgPSBlbGVtZW50LmVuZFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpOwotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVu
dC5uZXh0VGV4dE1hcmtlcih0ZXh0TWFya2VyKTsKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1l
bnQubmV4dFRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHZhciBsaW5lUmFuZ2UgPSBl
bGVtZW50LmxpbmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAg
ICAgICBzaG91bGRCZSgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJhbmdl
KSIsICInYnV0dG9uJyIpOwotICAgICAgICAKLSAgICAgICAgdGV4dE1hcmtlciA9IGVsZW1lbnQu
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGxpbmVSYW5nZSk7Ci0gICAgICAgIHZh
ciBzdGFydEVsZW1lbnQgPSBlbGVtZW50LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtl
cih0ZXh0TWFya2VyKTsKLSAgICAgICAgCisgICAgICAgIHZhciByYW5nZSA9IGVsZW1lbnQudGV4
dE1hcmtlclJhbmdlRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVj
dCgiZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwgIidGaXJzdCBsaW5l
IG9mIHRleHQnIik7CisKKyAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgaWdub3JlZCBlbGVtZW50
IHVzaW5nIGxpbmUgdGV4dCBtYXJrZXIgY2FsbHMuCisgICAgICAgIHZhciBtYXJrZXIgPSBlbGVt
ZW50LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAgICAgICBtYXJr
ZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG1hcmtlciA9IGVs
ZW1lbnQubmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICAgICAgcmFuZ2UgPSBlbGVtZW50Lmxp
bmVUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKG1hcmtlcik7CisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoImVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKSIsICInYnV0
dG9uJyIpOworCisgICAgICAgIG1hcmtlciA9IGVsZW1lbnQuc3RhcnRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKHJhbmdlKTsKKyAgICAgICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKG1hcmtlcik7CisKICAgICAgICAgLy8g
U2VhcmNoIGZvcndhcmQKLSAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXJFbGVt
ZW50LnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0ZShzdGFydEVsZW1lbnQsIHRydWUsICJBWEFu
eVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogVGhpcmQgbGluZSBvZiB0ZXh0JyIpOwotICAg
ICAgICAKKyAgICAgICAgdmFyIHJlc3VsdEVsZW1lbnQgPSBjb250YWluZXIudWlFbGVtZW50Rm9y
U2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIs
ICIiLCBmYWxzZSk7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInJlc3VsdEVsZW1lbnQuc3Ry
aW5nVmFsdWUiLCAiJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCciKTsKKwogICAgICAgICAv
LyBTZWFyY2ggYmFja3dhcmQKLSAgICAgICAgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1l
bnQudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJBWEFu
eVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOwotICAgICAgICBzaG91bGRCZSgicmVzdWx0RWxl
bWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworICAg
ICAgICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyLnVpRWxlbWVudEZvclNlYXJjaFByZWRpY2F0
ZShzdGFydEVsZW1lbnQsIGZhbHNlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsK
KyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICIn
QVhWYWx1ZTogRmlyc3QgbGluZSBvZiB0ZXh0JyIpOworCisgICAgICAgIGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJjb250YWluZXIiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAg
ICAgIGRlYnVnKG91dHB1dCk7CiAgICAgfQotICAgICAgICAKIDwvc2NyaXB0PgotCi08c2NyaXB0
IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+
Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFu
Z2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdGV4dG1hcmtl
ci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CmluZGV4IGNkY2M3N2MzYzg3MS4uNmE3ZDJm
NzhhM2U0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFy
a2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UtZXhwZWN0ZWQudHh0CkBAIC0x
LDI4MSArMSwyMDcgQEAKLVRoaW5rIGRpZmZlcmVudCBBcHBsZQotCi1ib2xkIGl0YWxpYwotdW5k
ZXJsaW5lIGxhc3QhCi0KLUhlbGxvIFdvcmxkIQotVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJh
bmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuCi0KLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBh
IHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4K
LQorVGhpcyB0ZXN0cyB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5
LgogCiBjb250ZW50IGxlbmd0aDogNjUKIEFsbCByYW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2gg
Y2hhcmFjdGVyIGluIHRoZSB0ZXh0OgotMAotJycKLTEKLSdUJwotMgotJ1RoJwotMwotJ1RoaScK
LTQKLSdUaGluJwotNQotJ1RoaW5rJwotNgotJ1RoaW5rICcKLTcKLSdUaGluayBkJwotOAotJ1Ro
aW5rIGRpJwotOQotJ1RoaW5rIGRpZicKLTEwCi0nVGhpbmsgZGlmZicKLTExCi0nVGhpbmsgZGlm
ZmUnCi0xMgotJ1RoaW5rIGRpZmZlcicKLTEzCi0nVGhpbmsgZGlmZmVyZScKLTE0Ci0nVGhpbmsg
ZGlmZmVyZW4nCi0xNQotJ1RoaW5rIGRpZmZlcmVudCcKLTE2Ci0nVGhpbmsgZGlmZmVyZW50ICcK
LTE3Ci0nVGhpbmsgZGlmZmVyZW50IEEnCi0xOAotJ1RoaW5rIGRpZmZlcmVudCBBcCcKLTE5Ci0n
VGhpbmsgZGlmZmVyZW50IEFwcCcKLTIwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGwnCi0yMQotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZScKLTIyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjMKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzAgJycKKzEgJ1QnCisyICdUaCcKKzMgJ1RoaScKKzQgJ1Ro
aW4nCis1ICdUaGluaycKKzYgJ1RoaW5rICcKKzcgJ1RoaW5rIGQnCis4ICdUaGluayBkaScKKzkg
J1RoaW5rIGRpZicKKzEwICdUaGluayBkaWZmJworMTEgJ1RoaW5rIGRpZmZlJworMTIgJ1RoaW5r
IGRpZmZlcicKKzEzICdUaGluayBkaWZmZXJlJworMTQgJ1RoaW5rIGRpZmZlcmVuJworMTUgJ1Ro
aW5rIGRpZmZlcmVudCcKKzE2ICdUaGluayBkaWZmZXJlbnQgJworMTcgJ1RoaW5rIGRpZmZlcmVu
dCBBJworMTggJ1RoaW5rIGRpZmZlcmVudCBBcCcKKzE5ICdUaGluayBkaWZmZXJlbnQgQXBwJwor
MjAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsJworMjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScKKzIy
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUnCisyMyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKICcK
LTI0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAK
IGInCi0yNQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjUgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBibycKLTI2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNiAnVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiAKIGJvbCcKLTI3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyNyAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQnCi0yOAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMjggJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkICcKLTI5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CisyOSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaScKLTMwCi0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiszMCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXQnCi0zMQotJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQorMzEgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0
YScKLTMyCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMiAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbCcKLTMzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMyAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGknCi0zNAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
MzQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYycKLTM1Ci0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiszNSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiAn
Ci0zNgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQog
CiBib2xkIGl0YWxpYwogdScKLTM3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNyAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bicKLTM4Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCiszOCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmQnCi0z
OQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMzkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBi
b2xkIGl0YWxpYwogdW5kZScKLTQwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0MCAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcicKLTQxCi0nVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCis0MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRl
cmwnCi00MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDIgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaScKLTQzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0
MyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbicKLTQ0Ci0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbGljCiB1bmRlcmxpbmUnCi00NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNDUgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lICcKLTQ2Ci0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis0NiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbCcKLTQ3Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NyAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGEnCi00OAotJ1RoaW5rIGRp
ZmZlcmVudCBBcHBsZQorNDggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwog
dW5kZXJsaW5lIGxhcycKLTQ5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0OSAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCcKLTUwCi0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis1MCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbGFzdCEnCi01MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTEgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhJwotNTIKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzUyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7wnCi01MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQorNTMgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxh
c3QhCiAKIO+/vEgnCi01NAotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTQgJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlJwotNTUK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU1ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9s
ZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWwnCi01NgotJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQorNTYgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJs
aW5lIGxhc3QhCiAKIO+/vEhlbGwnCi01NwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTcgJ1Ro
aW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/
vEhlbGxvJwotNTgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzU4ICdUaGluayBkaWZmZXJlbnQg
QXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyAnCi01OQot
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTkgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xk
IGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFcnCi02MAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNjAgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvJwotNjEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUK
KzYxICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0
IQogCiDvv7xIZWxsbyBXb3InCi02MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjIgJ1RoaW5r
IGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhl
bGxvIFdvcmwnCi02MwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjMgJ1RoaW5rIGRpZmZlcmVu
dCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcmxk
JwotNjQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzY0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IQpAQCAtMjkxLDcgKzIxNywxMSBAQCB1bmRl
cmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29ybGQhJwogJycKKwogUEFTUyBzdWNjZXNzZnVsbHlQ
YXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5n
ZS5odG1sCmluZGV4IGNlMWNiZjJlZWZlMy4uYzMwNDk4NjdiMDUwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS5odG1s
CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9y
LXJhbmdlLmh0bWwKQEAgLTEsOSArMSw5IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lF
VEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgor
PGJvZHk+CiAKIDxkaXYgaWQ9ImNvbnRlbnQiIHJvbGU9Imdyb3VwIj4KICAgICA8cD5UaGluayA8
ZW0+ZGlmZmVyZW50PC9lbT4gPGEgaHJlZj0iYXBwbGUuY29tIj5BcHBsZTwvYT48L3A+CkBAIC0x
MSwzNiArMTEsMzQgQEAKICAgICA8YnV0dG9uPkhlbGxvIFdvcmxkITwvYnV0dG9uPgogPC9kaXY+
CiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0K
IDxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdCB0aGF0IHRleHRNYXJrZXJSYW5n
ZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LiIpOwotCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmls
aXR5Q29udHJvbGxlcikgewotICAgICAgICBheEVsZW1lbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRlbnQiKTsKLSAgICAgICAgY29udGVudFRl
eHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGF4RWxl
bWVudCk7Ci0gICAgICAgIHRleHRMZW5ndGggPSBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKGNvbnRlbnRUZXh0TWFya2VyUmFuZ2UpLmxlbmd0aDsKLSAgICAgICAgZGVidWcoImNv
bnRlbnQgbGVuZ3RoOiAiICsgdGV4dExlbmd0aCk7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhp
cyB0ZXN0cyB0aGF0IHRleHRNYXJrZXJSYW5nZUZvclJhbmdlIHdvcmtzIHByb3Blcmx5LlxuXG4i
OwogCi0gICAgICAgIGRlYnVnKCJBbGwgcmFuZ2VzIGZyb20gaW5kZXggMCB0byBlYWNoIGNoYXJh
Y3RlciBpbiB0aGUgdGV4dDoiKTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHRleHRMZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgZGVidWcoaSk7Ci0gICAgICAgICAgICB0ZXh0TWFya2VyUmFu
Z2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgaSk7Ci0gICAgICAgICAg
ICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJr
ZXJSYW5nZSkgKyAiJyIpOworICAgICAgICBsZXQgY29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgiY29udGVudCIpOworICAgICAgICBsZXQgcmFu
Z2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoY29udGVudCk7CisgICAgICAg
IGxldCBjb250ZW50TGVuZ3RoID0gY29udGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFu
Z2UpLmxlbmd0aDsKKyAgICAgICAgb3V0cHV0ICs9IGBjb250ZW50IGxlbmd0aDogJHtjb250ZW50
TGVuZ3RofVxuYDsKKworICAgICAgICBvdXRwdXQgKz0gIkFsbCByYW5nZXMgZnJvbSBpbmRleCAw
IHRvIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB0ZXh0OlxuIjsKKyAgICAgICAgZm9yIChpID0gMDsg
aSA8IGNvbnRlbnRMZW5ndGg7ICsraSkgeworICAgICAgICAgICAgcmFuZ2UgPSBjb250ZW50LnRl
eHRNYXJrZXJSYW5nZUZvclJhbmdlKDAsIGkpOworICAgICAgICAgICAgb3V0cHV0ICs9IGAke2l9
ICcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOwogICAgICAg
ICB9CiAKLSAgICAgICAgZGVidWcoIkdldCB0aGUgcmFuZ2UgZm9yIHRoZSB3b3JkIEFwcGxlOiIp
OwotICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9y
UmFuZ2UoMTYsIDUpOwotICAgICAgICBkZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgKyAiJyIpOworICAgICAgICBvdXRwdXQgKz0g
IkdldCB0aGUgcmFuZ2UgZm9yIHRoZSB3b3JkIEFwcGxlOlxuIjsKKyAgICAgICAgcmFuZ2UgPSBj
b250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDE2LCA1KTsKKyAgICAgICAgb3V0cHV0ICs9
IGAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKworICAg
ICAgICBvdXRwdXQgKz0gIk91dCBvZiByYW5nZSB2YWx1ZXM6XG4iOworICAgICAgICByYW5nZSA9
IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwgMTAwKTsKKyAgICAgICAgb3V0cHV0
ICs9IGAnJHtjb250ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSl9J1xuYDsKKyAg
ICAgICAgcmFuZ2UgPSBjb250ZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOwor
ICAgICAgICBvdXRwdXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHJh
bmdlKX0nXG5gOwogCi0gICAgICAgIGRlYnVnKCJPdXQgb2YgcmFuZ2UgdmFsdWVzOiIpOwotICAg
ICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Uo
MCwgMTAwKTsKLSAgICAgICAgZGVidWcoIiciICsgYXhFbGVtZW50LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpICsgIiciKTsKLSAgICAgICAgdGV4dE1hcmtlclJhbmdl
ID0gYXhFbGVtZW50LnRleHRNYXJrZXJSYW5nZUZvclJhbmdlKDcwLCAxMDApOwotICAgICAgICBk
ZWJ1ZygiJyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSkgKyAiJyIpOworICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIp
LnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAg
ICB9CiA8L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0
aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CmluZGV4IDkxNWQ1NjljMGVkMC4u
ZDg0YjhiMjAxNzQyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92
aXNpYmxlLXBvc2l0aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUtZXhwZWN0ZWQudHh0CisrKyBiL0xh
eW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRl
eHQtbm9kZS1leHBlY3RlZC50eHQKQEAgLTEsMTAgKzEsNyBAQAotVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhp
cyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4KIFRoaXMgcHJvdGVjdHMgYWdhaW5zdCBhIGNyYXNoIGluIGFz
a2luZyBmb3IgdmlzaWJsZSBwb2ludCBmb3IgcG9zaXRpb24gdG8gZW5zdXJlIHRoYXQgaXQgY2Fu
IGhhbmRsZSBhbGwgUmVuZGVyVGV4dCBvYmplY3RzLgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBz
ZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVU
RSIuCitQQVNTOiBjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpID09PSB0
cnVlCiAKLQotUEFTUyBjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKHRleHRFbGVtZW50
KSBpcyB0cnVlCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExF
VEUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9z
aXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKaW5kZXggYzcy
NTdkNTg1ZDFhLi42MmViNGUzNTIyZWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9y
LXRleHQtbm9kZS5odG1sCkBAIC0xLDQwICsxLDMxIEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMg
Ii0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4u
Ly4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jl
c291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9k
eSBpZD0iYm9keSI+Cis8Ym9keT4KIAotPGRpdiBpZD0iY29udGVudCIgdGFiaW5kZXg9IjAiIHN0
eWxlPSJ3aWR0aDoyMDBweDsiPgorPGRpdiBpZD0iY29udGVudCIgc3R5bGU9IndpZHRoOjIwMHB4
OyI+CiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gCiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qg
b2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4g
VGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBs
b3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQu
IFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogPC9kaXY+CiAK
LTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxz
Y3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlvbigiVGhpcyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2gg
aW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBp
dCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVjdHMuIik7Ci0KICAgICBpZiAod2luZG93
LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAgICAgIGxldCBvdXRwdXQgPSAiVGhpcyBw
cm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZvciBw
b3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9iamVj
dHMuXG5cbiI7CiAKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIp
LmZvY3VzKCk7Ci0gICAgICAgICAgdmFyIGNvbnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxl
ci5mb2N1c2VkRWxlbWVudDsKLQotICAgICAgICAgIC8vIEdldCB0aGUgdGV4dCBtYXJrZXIgYXQg
dGhpcyBwb2ludC4gSXQgc2hvdWxkIG5vdCBjcmFzaC4KLSAgICAgICAgICB2YXIgbWFya2VyQXRQ
b2ludCA9IGNvbnRlbnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQud2lk
dGgvMiwgY29udGVudC55ICsgY29udGVudC5oZWlnaHQvMik7Ci0gICAgICAgICAgdmFyIHRleHRF
bGVtZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIobWFya2Vy
QXRQb2ludCk7CisgICAgICAgIHZhciBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIu
YWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJjb250ZW50Iik7CisgICAgICAgIC8vIEdldCB0aGUgdGV4
dCBtYXJrZXIgYXQgdGhpcyBwb2ludC4gSXQgc2hvdWxkIG5vdCBjcmFzaC4KKyAgICAgICAgdmFy
IG1hcmtlciA9IGNvbnRlbnQudGV4dE1hcmtlckZvclBvaW50KGNvbnRlbnQueCArIGNvbnRlbnQu
d2lkdGggLyAyLCBjb250ZW50LnkgKyBjb250ZW50LmhlaWdodCAvIDIpOworICAgICAgICAvLyBW
ZXJpZnkgdGhlIGVsZW1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCisgICAg
ICAgIHZhciBlbGVtZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIobWFya2VyKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiY29udGVudC5jaGlsZEF0SW5k
ZXgoMCkuaXNFcXVhbChlbGVtZW50KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBWZXJpZnkg
dGhlIGVsZW1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSB3ZSB3YW50ZWQuCi0gICAgICAgICAg
dmFyIHRleHRFbGVtZW50ID0gY29udGVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIobWFya2VyQXRQb2ludCk7Ci0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJjb250ZW50LmNoaWxk
QXRJbmRleCgwKS5pc0VxdWFsKHRleHRFbGVtZW50KSIpOworICAgICAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAg
ICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0KIDwvc2NyaXB0PgotCi08c2NyaXB0IHNyYz0iLi4v
Li4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+
Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4
dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0
CmluZGV4IDA0MDQzODQ5ZGUxNi4uZWE0Yjg3N2Q0OTNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4
dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAKLXRl
eHQKLQotdGV4dDEKLWMgIGQKLQotY2FuJ3Qgc2VsZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8KLQot
YSBiCi0KLWF1ZGlvZmlsZQotCiBUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFy
a2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgogCi1PbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCi0KLQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFy
a2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1
ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3
bGluZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J3QnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBu
ZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBp
cyAndCcKLVBBU1MgdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIp
IGlzIDUKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkg
PT09IDQKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0
TWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGlu
ZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn
dCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
bmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
ID09PSAndCcKK1BBU1M6IHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFu
Z2UyKSA9PT0gNQogT2JqZWN0IHN0cmluZyBmb3IgcmFuZ2U6IGMgW0FUVEFDSE1FTlRdIGQKLVBB
U1MgdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZCcKLVBB
U1MgdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnMScKLVBB
U1MgdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZWN0Jwot
UEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdzZWwn
Ci1QQVNTICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSBpcyB0
cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKS5pc0VxdWFsKHRleHQzKSBpcyB0cnVlCi1QQVNTIHRleHQyLmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJ
bmRleCgyKSkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgaXMgJ2YnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtl
clJhbmdlKSBpcyAnYScKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0
TWFya2VyUmFuZ2UpIGlzIDQKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSBpcyAn8J+YjycKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSBpcyAn8J+YgycKLVBBU1MgdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hp
dGVzcGFjZU1hcmtlclJhbmdlKSBpcyAzCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJy
ZW50KSkgaXMgJyAnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkg
aXMgJ2InCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtl
clJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJyAn
Ci1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ2EnCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgaXMgJ2F1ZGlv
77+8ZmlsZScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IGlzICfvv7wnCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSBpcyAn77+8JworUEFTUzogdGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSA9PT0gJ2QnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpID09PSAnMScKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkgPT09ICdlY3QnCitQQVNTOiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpID09PSAnc2VsJworUEFTUzogIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZv
clRleHRNYXJrZXIoc3RhcnQpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxl
bWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykgPT09IHRydWUK
K1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFy
a2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkgPT09IHRydWUKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2YnCitQQVNTOiB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdhJworUEFTUzogdGV4
dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoZW1vamlUZXh0TWFya2VyUmFuZ2UpID09PSA0CitQQVNT
OiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YjycKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iDJworUEFTUzog
dGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtlclJhbmdl
KSA9PT0gMworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0g
J2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdiJworUEFT
UzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JN
YXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkgPT09ICdhdWRpb++/vGZp
bGUnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09
ICfvv7wnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkg
PT09ICfvv7wnCisKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01Q
TEVURQogCisKKworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQt
bWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vz
c2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCmluZGV4
IDVlZDNiZDBkMDZkZS4uMzhmMTNlZDdhM2VjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L3RleHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZp
b3VzLW5leHQuaHRtbApAQCAtMSwxNSArMSwxNyBAQAogPCFET0NUWVBFIEhUTUwgUFVCTElDICIt
Ly9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVhZD4KLTxzY3JpcHQgc3JjPSIuLi8u
Li9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNv
dXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2NyaXB0PgogPG1ldGEgY2hhcnNldD0i
VVRGLTE2Ij4KIDwvaGVhZD4KIDxzdHlsZT4KIC51c2Vyc2VsZWN0IHsgdXNlci1zZWxlY3Q6IG5v
bmU7IC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7IH0KIDwvc3R5bGU+Ci08Ym9keSBpZD0iYm9k
eSI+Cis8Ym9keT4KIAotPGRpdiBpZD0idGV4dCIgdGFiaW5kZXg9IjAiPnRleHQ8L2Rpdj4KKzxk
aXYgaWQ9ImNvbnRlbnQiPgorPGRpdiBpZD0idGV4dCI+dGV4dDwvZGl2PgogPGJyPgogdGV4dDEK
IApAQCAtMzIsMjkgKzM0LDQ1IEBAIGYKIDxwIGlkPSJ0ZXh0NiI+YSAgICAgYjwvcD4KIAogPHAg
aWQ9InRleHQ3Ij5hdWRpbzxhdWRpbyBjb250cm9scz48L2F1ZGlvPmZpbGU8L3A+Ci0KLTxwIGlk
PSJkZXNjcmlwdGlvbiI+PC9wPgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8L2Rpdj4KIAog
PHNjcmlwdD4KKyAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3Vy
cmVudE1hcmtlciwgb2JqKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkr
KykgeworICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2VyOworICAgICAg
ICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsK
KyAgICAgICAgfQorICAgICAgICByZXR1cm4geworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZp
b3VzTWFya2VyLAorICAgICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9
OworICAgIH0KKworICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNNYXJrZXIs
IGN1cnJlbnRNYXJrZXIsIG9iaikgeworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50
OyBpKyspIHsKKyAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1h
cmtlcihwcmV2aW91c01hcmtlcik7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLnBy
ZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1
cm4geworICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAorICAgICAgICAgICAg
Y3VycmVudDogY3VycmVudE1hcmtlcgorICAgICAgICB9OworICAgIH0KIAotICAgIGRlc2NyaXB0
aW9uKCJUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBh
cmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LiIpOwotICAgIAogICAgIGlmICh3aW5kb3cuYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgCi0gICAgICAgIHZhciB0ZXh0ID0gYWNjZXNz
aWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0Iik7Ci0gICAgICAg
IC8vIEdldCB0aGUgYWN0dWFsIHRleHQgbm9kZS4KLSAgICAgICAgdGV4dCA9IHRleHQuY2hpbGRB
dEluZGV4KDApOwotICAgICAgICAKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRo
ZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgY29y
cmVjdGx5LlxuXG4iOworCisgICAgICAgIHZhciB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xs
ZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0IikuY2hpbGRBdEluZGV4KDApOworCiAgICAg
ICAgIC8vIENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQvZW5kIG1hcmtlciBmb3IgdGhp
cyByYW5nZS4KICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOwotICAgICAgICAKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
KSIsICI0Iik7CisKICAgICAgICAgdmFyIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJr
ZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKTsKICAgICAgICAgdmFyIGVuZE1h
cmtlciA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFu
Z2UpOwotICAgICAgICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIik7Ci0gICAgICAgIHNob3VsZEJl
VHJ1ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5p
c0VxdWFsKHRleHQpIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0
ZXh0KSIsICJ0cnVlIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIsICJ0cnVl
Iik7CisKICAgICAgICAgLy8gQ2hlY2sgbmV4dCB0ZXh0IG1hcmtlci4gKEFkdmFuY2UgNSBjaGFy
YWN0ZXJzLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAgICAgICAgIHZhciBjdXJyZW50TWFya2Vy
LCBwcmV2aW91c01hcmtlciwgbWFya2VyUmFuZ2U7OwogICAgICAgICB2YXIgcmVzdWx0ID0gZm9y
d2FyZCg1LCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRleHQpOwpAQCAtNjIsNTggKzgw
LDU3IEBAIGYKICAgICAgICAgY3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAg
ICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01h
cmtlciwgY3VycmVudE1hcmtlcik7CiAgICAgICAgIHZhciBuZXdsaW5lID0gJ1xuJzsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3bGluZSIpOworCiAgICAg
ICAgIC8vIEFkdmFuY2Ugb25lIG1vcmUgY2hhcmFjdGVycywgaXQgd2lsbCBsYW5kZSBhdCAidCIg
aW4gInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwg
Y3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnBy
ZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAg
IG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFy
a2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKLSAgICAgICAgCisgICAgICAgIG91
dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICIndCciKTsKKwogICAgICAgICAvLyBDaGVjayBwcmV2aW91cyB0ZXh0IG1hcmtlci4gKFRy
YXZlcnNlIGJhY2t3YXJkcyBvbmUgY2hhcmFjdGVyLCBpdCB3aWxsIGxhbmQgYXQgPGJyPi4pCiAg
ICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
ciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAg
ICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdl
ID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50
TWFya2VyKTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0g
ZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAibmV3
bGluZSIpOworCiAgICAgICAgIC8vIFRyYXZlcnNlIGJhY2t3YXJkcyBvbmUgbW9yZSBjaGFyYWN0
ZXIsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgInRleHQiLgogICAgICAg
ICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRl
eHQpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRl
eHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtl
cik7CiAgICAgICAgIGlmIChhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5wbGF0Zm9ybU5hbWUgPT0g
Im1hYyIpCi0gICAgICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKKyAgICAgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIn
dCcgKyBuZXdsaW5lIik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnIik7CisgICAgICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJr
ZXJSYW5nZSkiLCAiJ3QnIik7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCByZXBs
YWNlZCBub2RlCiAgICAgICAgIHZhciB0ZXh0MiA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFj
Y2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDIiKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5n
ZTIgPSB0ZXh0Mi50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQyKTsKLSAgICAgICAgc2hv
dWxkQmUoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1
Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0
aCh0ZXh0TWFya2VyUmFuZ2UyKSIsICI1Iik7CiAgICAgICAgIHZhciBzdHIgPSB0ZXh0Mi5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMikucmVwbGFjZShTdHJpbmcuZnJv
bUNoYXJDb2RlKDY1NTMyKSwgIltBVFRBQ0hNRU5UXSIpOwotICAgICAgICBkZWJ1ZygiT2JqZWN0
IHN0cmluZyBmb3IgcmFuZ2U6ICIgKyBzdHIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9
IGBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogJHtzdHJ9XG5gOworCiAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtl
clJhbmdlMik7CiAgICAgICAgIC8vIEFkdmFuY2UgNSBjaGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmQg
YXQgImQiLgogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBjdXJy
ZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFya2VyID0gcmVzdWx0LnByZXZp
b3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1h
cmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtl
ciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0Mi5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSIsICInZCciKTsKKwogICAgICAgICAvLyBUcmF2ZXJzZSBiYWNrd2FyZHMgNiBjaGFyYWN0ZXJz
LCBpdCB3aWxsIGxhbmQgYXQgdGhlIGxhc3QgY2hhcmFjdGVyIG9mICJ0ZXh0MSIuCiAgICAgICAg
IHJlc3VsdCA9IGJhY2t3YXJkcyg2LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4
dDIpOwogICAgICAgICBwcmV2aW91c01hcmtlciA9IHJlc3VsdC5wcmV2aW91czsKICAgICAgICAg
Y3VycmVudE1hcmtlciA9IHJlc3VsdC5jdXJyZW50OwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRl
eHQyLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJr
ZXIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICInMSciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3Qo
InRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJzEnIik7CisK
ICAgICAgICAgLy8gQ2hlY2sgdGhlIGNhc2Ugd2l0aCB1c2VyLXNlbGVjdDpub25lLCBuZXh0VGV4
dE1hcmtlci9wcmV2aW91c1RleHRNYXJrZXIgc2hvdWxkIHN0aWxsIHdvcmsuCi0gICAgICAgIHZh
ciB0ZXh0MyA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgi
dGV4dDMiKTsKLSAgICAgICAgdGV4dDMgPSB0ZXh0My5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAg
IAorICAgICAgICB2YXIgdGV4dDMgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxl
RWxlbWVudEJ5SWQoInRleHQzIikuY2hpbGRBdEluZGV4KDApOworCiAgICAgICAgIC8vIEFkdmFu
Y2UgdG8gbGFuZCBhdCB1c2VyLXNlbGVjdDpub25lIG5vZGUuCiAgICAgICAgIHZhciBtYXJrZXIx
LCBtYXJrZXIyOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDE4OyBpKyspIHsKQEAgLTEy
NSwzNCArMTQyLDMxIEBAIGYKICAgICAgICAgfQogICAgICAgICBtYXJrZXIyID0gY3VycmVudE1h
cmtlcjsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0My50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKG1hcmtlcjEsIG1hcmtlcjIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDMuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZWN0JyIpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwg
IidlY3QnIik7CiAgICAgICAgIC8vIEl0ZXJhdGUgYmFja3dhcmRzIHRoZSBzZWNvbmQgbWFya2Vy
IGZvciA2IGNoYXJhY3RlcnMsIHRoZSByYW5nZSBzaG91bGQgYmUgInNlbCIKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2
OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dDMucHJldmlvdXNUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50
TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidzZWwnIik7CisgICAgICAgIG91dHB1
dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ3NlbCciKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHBhc3N3b3JkIGZp
ZWxkLgogICAgICAgICB2YXIgcHN3ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJs
ZUVsZW1lbnRCeUlkKCJwc3ciKTsKICAgICAgICAgdmFyIHRleHRNYXJrZXJSYW5nZTMgPSBwc3cu
dGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudChwc3cpOwogICAgICAgICB2YXIgc3RhcnQgPSBwc3cu
c3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTMpOwotICAg
ICAgICBzaG91bGRCZVRydWUoIiFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KHN0YXJ0KSIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiIXBzdy5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIiwgInRydWUiKTsKKwogICAgICAg
ICAvLyBDaGVjayBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGNhbGwgd2lsbCBza2lwIHBhc3N3
b3JkIGZpZWxkCiAgICAgICAgIC8vIFdlIHN0YXJ0IGZyb20gdGV4dDIgYW5kIGFkdmFuY2UgNiBj
aGFyYWN0ZXJzLCBpdCBzaG91bGQgc2tpcCB0aGUgcGFzc3dvcmQgZmllbGQgYW5kIGxhbmQgb24g
dGV4dDMuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5zdGFydFRleHRNYXJrZXJGb3JU
ZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgNjsgaSsrKSB7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKQogICAg
ICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJr
ZXIpOwotICAgICAgICB9Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIik7Cisg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4
dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSIsICJ0cnVlIik7CiAgICAgICAg
IC8vIENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLCBpdCBzaG91bGQgbGFuZCBvbiAiIGQiIG5v
ZGUuCiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0Mi5wcmV2aW91c1RleHRN
YXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgidGV4dDIuYWNjZXNz
aWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIu
Y2hpbGRBdEluZGV4KDIpKSIpOwotICAgICAgICAKLSAgICAgICAgCisgICAgICAgIG91dHB1dCAr
PSBleHBlY3QoInRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKS5pc0VxdWFsKHRleHQyLmNoaWxkQXRJbmRleCgyKSkiLCAidHJ1ZSIpOworCiAgICAg
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRleHQgbm9kZSB3aXRoIGxpbmUgYnJlYWtzLCB3ZSBjYW4g
Z28gdGhyb3VnaCBpdCB3aXRoIG5leHQvcHJldmlvdXMgY2FsbC4KICAgICAgICAgdGV4dCA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDQiKTsKICAg
ICAgICAgdGV4dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRl
eHQpOwpAQCAtMTYzLDg3ICsxNzcsNjQgQEAgZgogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9
IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAg
bWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJr
ZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2YnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ2YnIik7CisKICAgICAgICAgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2VyRm9yVGV4
dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBl
bmRNYXJrZXI7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKSB7CisgICAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgNzsgaSsrKQogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9
IHRleHQucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICB9CiAgICAg
ICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHN0YXJ0TWFy
a2VyLCBjdXJyZW50TWFya2VyKQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIGVtb2ppLgogICAgICAgICB0
ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0
NSIpOwogICAgICAgICB2YXIgZW1vamlUZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkiLCAiNCIpOworICAgICAgICBvdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5n
ZSkiLCAiNCIpOwogICAgICAgICAvLyBNYWtlIHN1cmUgbmF2aWdhdGluZyBuZXh0L3ByZXZpb3Vz
IHRleHQgbWFya2VyIGlzIGJ5IGVtb2ppLgogICAgICAgICBzdGFydE1hcmtlciA9IHRleHQuc3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKGVtb2ppVGV4dE1hcmtlclJhbmdlKTsKICAg
ICAgICAgcmVzdWx0ID0gZm9yd2FyZCgyLCBwcmV2aW91c01hcmtlciwgc3RhcnRNYXJrZXIsIHRl
eHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSIsICIn8J+YjyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn8J+YjyciKTsKICAgICAgICAgcmVzdWx0ID0g
YmFja3dhcmRzKDEsIHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICIn
8J+YgyciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQu
cHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ/CfmIMnIik7CisKICAgICAgICAgLy8gVGVz
dCBjYXNlIHdpdGggY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgICAgIHRleHQgPSBhY2Nlc3Np
YmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ2Iik7CiAgICAgICAg
IHZhciBjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5n
ZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgoY29sbGFwc2VkV2hp
dGVzcGFjZU1hcmtlclJhbmdlKSIsICIzIik7CiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5z
dGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UoY29sbGFwc2VkV2hpdGVzcGFjZU1hcmtl
clJhbmdlKTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCBwcmV2aW91c01hcmtlciwgc3Rh
cnRNYXJrZXIsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJz
KHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKICAgICAgICAgcmVz
dWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSki
LCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGZvcndhcmQoMSwg
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJl
KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1h
cmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidiJyIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIidiJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhw
ZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIicgJyIpOwogICAg
ICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVu
dCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCkpIiwgIidhJyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInYSciKTsKKwogICAgICAg
ICAvLyBUZXN0IGNhc2Ugd2l0aCByZXBsYWNlZCBlbGVtZW50cyAoc2hvdWxkIHVzZSBvYmplY3Qg
cmVwbGFjZW1lbnQgY2hhcmFjdGVyKS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250
cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDciKTsKICAgICAgICAgdGV4dE1hcmtl
clJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAgICAgICBz
aG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSIs
ICInYXVkaW9cdUZGRkNmaWxlJyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2Zp
bGUnIik7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IDY7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50TWFya2Vy
OwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQubmV4dFRleHRNYXJrZXIoY3VycmVu
dE1hcmtlcik7CiAgICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJr
ZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAi
J1x1RkZGQyciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidcdUZGRkMnIik7CiAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsKICAgICAgICAgICAg
IHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKICAgICAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSB0ZXh0LnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQog
ICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2
aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBv
dXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSkiLCAiJ1x1RkZGQyciKTsKIAotICAgICAgICBmdW5jdGlvbiBmb3J3YXJkKGNvdW50LCBwcmV2
aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91c01hcmtlciA9
IGN1cnJlbnRNYXJrZXI7Ci0gICAgICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IG9iai5uZXh0
VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6IHByZXZpb3VzTWFya2VyLAotICAgICAg
ICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIKLSAgICAgICAgICAgIH07Ci0gICAgICAg
IH0KLSAgICAgICAgCi0gICAgICAgIGZ1bmN0aW9uIGJhY2t3YXJkcyhjb3VudCwgcHJldmlvdXNN
YXJrZXIsIGN1cnJlbnRNYXJrZXIsIG9iaikgewotICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBvYmou
cHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKLSAgICAgICAgICAgICAgICBjdXJy
ZW50TWFya2VyID0gb2JqLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgcHJldmlvdXM6
IHByZXZpb3VzTWFya2VyLAotICAgICAgICAgICAgICAgIGN1cnJlbnQ6IGN1cnJlbnRNYXJrZXIK
LSAgICAgICAgICAgIH07Ci0gICAgICAgIH0KKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImNvbnRlbnQiKS5zdHlsZS52aXNpYmlsaXR5ID0gImhpZGRlbiI7CisgICAgICAgIGRlYnVn
KG91dHB1dCk7CiAgICAgfQotCiA8L3NjcmlwdD4KLQotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5PgogPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIv
dGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1u
ZXh0LWV4cGVjdGVkLnR4dAppbmRleCAyOTI2NDFhN2UwMzguLjVhMGEzMmMyOGQ3MCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIv
dGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlv
dXMtbmV4dC1leHBlY3RlZC50eHQKQEAgLTEsNTIgKzEsNDAgQEAKLXRleHQKLQotdGV4dDEKLWMg
IGQKLQotY2FuJ3Qgc2VsZWN0Ci1hYmMgZGUgZgot8J+Yg/CfmI8KLQotYSBiCi0KLWF1ZGlvZmls
ZQotCiBUaGlzIHRlc3RzIHRoZSBuZXh0L3ByZXZpb3VzIHRleHQgbWFya2VyIGZ1bmN0aW9ucyBh
cmUgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgogCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBz
ZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0K
LQotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIGlzIDQK
LVBBU1MgdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIp
LmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9y
VGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkgaXMgdHJ1ZQotUEFTUyB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgbmV3bGluZQotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3QnCi1QQVNTIHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcgKyBuZXdsaW5l
Ci1QQVNTIHRleHQyLnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UyKSBpcyA1
CitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpID09PSA0
CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtl
cikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVu
dEZvclRleHRNYXJrZXIoZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVlCitQQVNTOiB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xpbmUKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3QnCitQ
QVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09IG5ld2xp
bmUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0g
J3QnICsgbmV3bGluZQorUEFTUzogdGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJr
ZXJSYW5nZTIpID09PSA1CiBPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogYyBbQVRUQUNITUVOVF0g
ZAotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdk
JwotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICcx
JwotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdl
Y3QnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMg
J3NlbCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQp
IGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hp
bGRBdEluZGV4KDIpKSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAnZicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzICdhJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9q
aVRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCkpIGlzICfwn5iPJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3Vy
cmVudCkpIGlzICfwn5iDJwotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBz
ZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIGlzIDMKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0
LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJl
bnQpKSBpcyAnYicKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBp
cyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScK
LVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSBpcyAn
YXVkaW/vv7xmaWxlJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkgaXMgJ++/vCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIGlzICfvv7wnCitQQVNTOiB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFy
a2VyUmFuZ2UpID09PSAnZCcKK1BBU1M6IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSht
YXJrZXJSYW5nZSkgPT09ICcxJworUEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSA9PT0gJ2VjdCcKK1BBU1M6IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkgPT09ICdzZWwnCitQQVNTOiAhcHN3LmFjY2Vzc2liaWxpdHlFbGVt
ZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgPT09IHRydWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxp
dHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKS5pc0VxdWFsKHRleHQzKSA9PT0g
dHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSA9PT0gdHJ1ZQorUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZicKK1BBU1M6
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2EnCitQQVNT
OiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgPT09IDQK
K1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdl
Rm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICfwn5iPJwor
UEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmIMnCitQ
QVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2Vy
UmFuZ2UpID09PSAzCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
ID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09
ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2In
CitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BB
U1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzog
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSA9PT0gJ2F1ZGlv
77+8ZmlsZScKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdl
KSA9PT0gJ++/vCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJh
bmdlKSA9PT0gJ++/vCcKKwogUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNU
IENPTVBMRVRFCiAKKworCisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>464582</attachid>
            <date>2023-01-20 11:23:40 -0800</date>
            <delta_ts>2023-01-21 07:09:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230558-20230120142339.patch</filename>
            <type>text/plain</type>
            <size>107723</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">RnJvbSA4NTg2MGIwNzA2N2NjZDE1NDNlYjJmOWY1MzRhMGMwNDZiZjRlNjU1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXMgR29uemFsZXogPGFuZHJlc2dfMjJAYXBwbGUuY29t
PgpEYXRlOiBXZWQsIDMwIE5vdiAyMDIyIDA4OjI1OjEyIC0wNTAwClN1YmplY3Q6IFtQQVRDSF0g
QVg6IFJlZmFjdG9yaW5nIG9mIFRleHRNYXJrZXJzIGFuZCBUZXh0TWFya2VyUmFuZ2VzIHN1cHBv
cnQKIG9uIE1hYy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDU1
OCByZGFyOi8vODM2MjU2MjAKClJldmlld2VkIGJ5IENocmlzIEZsZWl6YWNoLgoKVGhpcyBpcyB0
aGUgZmlyc3QgY2hhbmdlIGluIGEgc2VyaWVzIGFpbWVkIGF0IHN1cHBvcnRpbmcgVGV4dE1hcmtl
cnMgb2ZmIG9mIHRoZSBtYWluIHRocmVhZC4KClRoaXMgcGF0Y2ggYWRkcyB0aGUgQVhUZXh0TWFy
a2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZSBjbGFzc2VzIHRvIHByb3ZpZGUgdGhlIGZ1bmN0aW9u
YWxpdHkgdGhhdCBpcyBjdXJyZW50bHkgaW1wbGVtZW50ZWQgdGhyb3VnaCBWaXNpYmxlUG9zaXRp
b25zLCBDaGFyYWN0ZXJPZmZzZXRzIGFuZCBBWFRleHRNYXJrZXJSZWZzLgpBWFRleHRNYXJrZXIg
ZW5jYXBzdWxhdGVzIHRoZSBBWElEcyBvZiB0aGUgYmFja2luZyBBWE9iamVjdENhY2hlIGFuZCBB
WElzb2xhdGVkVHJlZSwgYXMgd2VsbCBhcyB0aGUgQVhJRCBvZiB0aGUgY29ycmVzcG9uZGluZyBB
WENvcmVPYmplY3QuIFRoaXMgYWxsb3dzIGZvciB0aGUgcmV0cmlldmFsIG9mIHRoZSBUZXh0TWFy
a2VyIHByb3BlcnRpZXMgd2l0aG91dCBoYXZpbmcgdG8gcmVzb3VyY2UgdG8gdGhlIHVuZGVybHlp
bmcgRE9NIGFuZCBSZW5kZXJUcmVlIG9iamVjdHMuCgpUaGUgZm9sbG93aW5nIE1hYyBBWCBBUEkg
YXR0cmlidXRlcyBhcmUgbm93IGltcGxlbWVudGVkIHdpdGhvdXQgaGl0dGluZyB0aGUgbWFpbiB0
aHJlYWQgdXNpbmcgQVhUZXh0TWFya2VyIGFuZCBBWFRleHRNYXJrZXJSYW5nZToKQVhVSUVsZW1l
bnRGb3JUZXh0TWFya2VyCkFYVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtlcnMKQVhTdGFydFRl
eHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UKQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJh
bmdlCgpUaGlzIHBhdGNoIGFsc28gaW5jbHVkZXMgYW4gdXBkYXRlIG9mIHNldmVyYWwgbGF5b3V0
IHRlc3RzIHJlbGF0ZWQgdG8gVGV4dE1hcmtlcnMuCi0tLQogU291cmNlL1dlYkNvcmUvU291cmNl
cy50eHQgICAgICAgICAgICAgICAgICAgIHwgICAxICsKIFNvdXJjZS9XZWJDb3JlL1NvdXJjZXND
b2NvYS50eHQgICAgICAgICAgICAgICB8ICAgMSArCiAuLi4vV2ViQ29yZS9XZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2ogfCAgMTYgKysKIC4uLi9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QVhPYmplY3RDYWNoZS5jcHAgICB8IDE4NiArKysrKystLS0tLS0tLS0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaCAgfCAgMzAgKy0tCiBTb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAgfCAxNjUgKysrKysrKysrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmggICB8IDIwMSArKysrKysr
KysrKysrKysrKwogU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRyZWVTdG9yZS5oICAg
IHwgICA3ICstCiAuLi4vYWNjZXNzaWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbSAg
fCAgOTAgKysrKysrKysKIC4uLi9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1Mu
bW0gICB8ICA0MCArKy0tCiAuLi4vYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bSAgICAgfCAgMTIgKy0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0gICB8IDEwMSArKystLS0tLS0KIC4uLi9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXItZXhw
ZWN0ZWQudHh0ICB8ICAxOSArLQogLi4uL21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci5odG1s
ICAgICAgICAgIHwgIDUxICsrLS0tCiAuLi5yZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC1l
eHBlY3RlZC50eHQgfCAgMTUgKy0KIC4uLnNlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVs
ZW1lbnQuaHRtbCB8ICA2MyArKystLS0KIC4uLi90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1l
eHBlY3RlZC50eHQgICB8IDIxMCArKysrKystLS0tLS0tLS0tLS0KIC4uLi9tYWMvdGV4dG1hcmtl
ci1yYW5nZS1mb3ItcmFuZ2UuaHRtbCAgICAgICB8ICA0OCArKy0tCiAuLi4tcG9zaXRpb24tY3Jh
c2gtZm9yLXRleHQtbm9kZS1leHBlY3RlZC50eHQgfCAgIDUgKy0KIC4uLi92aXNpYmxlLXBvc2l0
aW9uLWNyYXNoLWZvci10ZXh0LW5vZGUuaHRtbCB8ICAzNSArKy0KIC4uLi90ZXh0LW1hcmtlci1w
cmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dCAgICB8ICA3OCArKystLS0tCiAuLi4vdGV4dC1tYXJr
ZXItcHJldmlvdXMtbmV4dC5odG1sICAgICAgICAgICAgfCAxNzUgKysrKysrKy0tLS0tLS0tCiAu
Li4vdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQgICAgfCAgNzggKysrLS0t
LQogMjMgZmlsZXMgY2hhbmdlZCwgOTMxIGluc2VydGlvbnMoKyksIDY5NiBkZWxldGlvbnMoLSkK
IGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dE1h
cmtlci5jcHAKIGNyZWF0ZSBtb2RlIDEwMDY0NCBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L0FYVGV4dE1hcmtlci5oCiBjcmVhdGUgbW9kZSAxMDA2NDQgU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQKaW5kZXggZjMz
NzM2Yzg1MjllLi41NTU1M2QwMTI2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC00NTUsNiArNDU1LDcg
QEAgTW9kdWxlcy93ZWJ4ci9YUlNlc3Npb25FdmVudC5jcHAKIGFjY2Vzc2liaWxpdHkvQVhJbWFn
ZS5jcHAKIGFjY2Vzc2liaWxpdHkvQVhMb2dnZXIuY3BwCiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0
Q2FjaGUuY3BwCithY2Nlc3NpYmlsaXR5L0FYVGV4dE1hcmtlci5jcHAKIGFjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eUFSSUFHcmlkLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJ
QUdyaWRDZWxsLmNwcAogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5QVJJQUdyaWRSb3cuY3Bw
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCBiNjM0OTliNTYxMDkuLjIwODFlMGQxODBjYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CkBAIC0xMjYsNiArMTI2LDcgQEAgTW9kdWxlcy9zcGVl
Y2gvY29jb2EvV2ViU3BlZWNoUmVjb2duaXplclRhc2subW0KIE1vZHVsZXMvc3BlZWNoL2NvY29h
L1dlYlNwZWVjaFJlY29nbml6ZXJUYXNrTW9jay5tbQogTW9kdWxlcy9zeXN0ZW0tcHJldmlldy9B
UktpdEJhZGdlU3lzdGVtSW1hZ2UubW0KIE1vZHVsZXMvd2ViZGF0YWJhc2UvY29jb2EvRGF0YWJh
c2VNYW5hZ2VyQ29jb2EubW0KK2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFya2VyQ29jb2Eu
bW0KIGFjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0KIGFjY2Vzc2liaWxpdHkv
aW9zL0FjY2Vzc2liaWxpdHlPYmplY3RJT1MubW0KIGFjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMDY1OWRhMjIxMTE3Li5iMTUwMzhkMjg4
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTQ1NzEsNiArNDU3MSw3IEBACiAJCUMwQzA1NENCMTExOEM4RTQwMENFMjYzNiAv
KiBDb2RlR2VuZXJhdG9yLnBtIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gOTNGOEIzMDUwQTMwMEZFMTAwRjYxQUI4IC8qIENvZGVHZW5lcmF0b3IucG0gKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBDMDU0Q0Mx
MTE4QzhFNDAwQ0UyNjM2IC8qIGdlbmVyYXRlLWJpbmRpbmdzLnBsIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTNGOEIzMDcwQTMwMEZFQTAwRjYxQUI4IC8q
IGdlbmVyYXRlLWJpbmRpbmdzLnBsICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMwQzA1NENEMTExOEM4RTQwMENFMjYzNiAvKiBJRExQYXJzZXIucG0g
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxNDgxM0JGMzA5
RURGODhFMDBGNzU3RTEgLyogSURMUGFyc2VyLnBtICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCUMwRTIwOEEyMjkzNzlDNkYwMEMwRDJEMyAvKiBBWFRl
eHRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEMwRTIwOEEwMjkzNzlDNkUwMEMwRDJEMyAvKiBBWFRleHRNYXJrZXIuaCAqLzsgfTsKIAkJQzBF
MkYzMjcyNDEyQkYyOTAwOUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkIGluIEZyYW1ld29y
a3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBFMkYzMjUyNDEyQkYyOTAw
OUM3M0VDIC8qIGxpYkFjY2Vzc2liaWxpdHkudGJkICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFdlYWssICk7IH07IH07CiAJCUMwRThBREM1Mjk0QjVBNjMwMDc2Q0JEQyAvKiBBWFRyZWVT
dG9yZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzBF
OEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzBGMkE0NDExMzg2OUFBQjAwNjZDNTM0
IC8qIHByZXByb2Nlc3Nvci5wbSBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTE2NTMyLDYg
KzE2NTMzLDkgQEAKIAkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYTG9nZ2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUMwNzgzNzYwMjNERjI1M0UwMEM5QzVDOCAvKiBBWElzb2xhdGVkT2Jq
ZWN0TWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0gQVhJc29sYXRlZE9iamVjdE1hYy5tbTsg
cGF0aCA9IG1hYy9BWElzb2xhdGVkT2JqZWN0TWFjLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlDMDhGMTNBMTI0NDc2NkRDMDBBQjk4OUYgLyogQVhMb2dnZXIuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQVhMb2dnZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MEUyMDhBMDI5Mzc5QzZFMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFYVGV4dE1hcmtlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlDMEUyMDhBMTI5Mzc5QzZGMDBDMEQyRDMgLyogQVhUZXh0TWFya2VyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFYVGV4dE1hcmtlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMwRTIwOEI1MjkzOTNEQ0YwMEMwRDJEMyAvKiBBWFRl
eHRNYXJrZXJDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IEFYVGV4dE1hcmtlckNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMEUy
RjMyNTI0MTJCRjI5MDA5QzczRUMgLyogbGliQWNjZXNzaWJpbGl0eS50YmQgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSAic291cmNlY29kZS50ZXh0LWJh
c2VkLWR5bGliLWRlZmluaXRpb24iOyBuYW1lID0gbGliQWNjZXNzaWJpbGl0eS50YmQ7IHBhdGgg
PSB1c3IvbGliL2xpYkFjY2Vzc2liaWxpdHkudGJkOyBzb3VyY2VUcmVlID0gU0RLUk9PVDsgfTsK
IAkJQzBFOEFEQzQyOTRCNUE2MjAwNzZDQkRDIC8qIEFYVHJlZVN0b3JlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFYVHJlZVN0b3JlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUMwRjJBNDNGMTM4NjlBMjgwMDY2QzUzNCAvKiBwcmVwcm9jZXNzb3IucG0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0LnNjcmlw
dC5wZXJsOyBuYW1lID0gcHJlcHJvY2Vzc29yLnBtOyBwYXRoID0gc2NyaXB0cy9wcmVwcm9jZXNz
b3IucG07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTQ5OCw2ICsyMTUwMiw3IEBA
CiAJCTI5QTgxMjA0MEZCQjlCNDEwMDUxMDI5MyAvKiBhY2Nlc3NpYmlsaXR5ICovID0gewogCQkJ
aXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUyMDhCNzI5MzkzRTFBMDBD
MEQyRDMgLyogY29jb2EgKi8sCiAJCQkJQUFBNzI4RUYxNkQxRDhCQzAwRDNCQkM2IC8qIGlvcyAq
LywKIAkJCQkyOUFFMjEyOTIxQUI5RUNCMDA4NjkyODMgLyogaXNvbGF0ZWR0cmVlICovLAogCQkJ
CTI5QTgxMjA1MEZCQjlCNTIwMDUxMDI5MyAvKiBtYWMgKi8sCkBAIC0yMTU3NCw2ICsyMTU3OSw4
IEBACiAJCQkJQzA0OTNFQjcyNDQ2OTlFNDAwOUFBQzgwIC8qIEFYTG9nZ2VyLmggKi8sCiAJCQkJ
Mjk4MUNBQUYxMzE4MjJFQzAwRDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5
QTgxMjFBMEZCQjlDMUQwMDUxMDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCisJCQkJQzBFMjA4
QTEyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5jcHAgKi8sCisJCQkJQzBFMjA4QTAy
OTM3OUM2RTAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oICovLAogCQkJCTkxQzlGMkY4MUFFM0JF
MjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovLAogCQkJCUMwRThBREM0
Mjk0QjVBNjIwMDc2Q0JEQyAvKiBBWFRyZWVTdG9yZS5oICovLAogCQkJCUJDNEE1MzMwMjU2MDU5
MDMwMDI4QzU5MiAvKiBGb3JjZWRBY2Nlc3NpYmlsaXR5VmFsdWUuaCAqLywKQEAgLTMxNjQyLDYg
KzMxNjQ5LDE0IEBACiAJCQluYW1lID0gbWFjOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsK
IAkJfTsKKwkJQzBFMjA4QjcyOTM5M0UxQTAwQzBEMkQzIC8qIGNvY29hICovID0geworCQkJaXNh
ID0gUEJYR3JvdXA7CisJCQljaGlsZHJlbiA9ICgKKwkJCQlDMEUyMDhCNTI5MzkzRENGMDBDMEQy
RDMgLyogQVhUZXh0TWFya2VyQ29jb2EubW0gKi8sCisJCQkpOworCQkJcGF0aCA9IGNvY29hOwor
CQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKKwkJfTsKIAkJQ0QwREJCM0UxNDIyNzRFNjAwMjgw
MjYzIC8qIGF1ZGlvICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgK
QEAgLTM1MjE3LDYgKzM1MjMyLDcgQEAKIAkJCQkyOUFFMjEzNTIxQUJBNDhBMDA4NjkyODMgLyog
QVhJc29sYXRlZE9iamVjdC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjlBRTIxMkQyMUFCOUVFQjAw
ODY5MjgzIC8qIEFYSXNvbGF0ZWRUcmVlLmggaW4gSGVhZGVycyAqLywKIAkJCQkyOUE4MTIzODBG
QkI5QzFEMDA1MTAyOTMgLyogQVhPYmplY3RDYWNoZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQzBF
MjA4QTIyOTM3OUM2RjAwQzBEMkQzIC8qIEFYVGV4dE1hcmtlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJOTFDOUYyRjkxQUUzQkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlDMEU4QURDNTI5NEI1QTYzMDA3NkNCREMgLyogQVhUcmVlU3Rv
cmUuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0NzdFNzc3MEJGNDEzNEEwMDE1Mjg3MiAvKiBCYWNr
Rm9yd2FyZENhY2hlLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IGVlZDQ4ODFmNWZhMC4uNDBjOTFmMTYzMWM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAK
QEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBWElzb2xhdGVkT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiQVhJc29sYXRlZFRyZWUuaCIKICNpbmNsdWRlICJBWExvZ2dlci5oIgorI2luY2x1ZGUgIkFY
VGV4dE1hcmtlci5oIgogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZC5oIgogI2luY2x1
ZGUgIkFjY2Vzc2liaWxpdHlBUklBR3JpZENlbGwuaCIKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5
QVJJQUdyaWRSb3cuaCIKQEAgLTIyMTMsNyArMjIxNCw3IEBAIHZvaWQgQVhPYmplY3RDYWNoZTo6
c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJpYnV0ZXMoKQogICAgIG1fY29tcHV0ZWRPYmpl
Y3RBdHRyaWJ1dGVDYWNoZSA9IG51bGxwdHI7CiB9CiAKLVZpc2libGVQb3NpdGlvbiBBWE9iamVj
dENhY2hlOjp2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShUZXh0TWFya2VyRGF0YSYg
dGV4dE1hcmtlckRhdGEpCitWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBv
c2l0aW9uRm9yVGV4dE1hcmtlckRhdGEoY29uc3QgVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJE
YXRhKQogewogICAgIGlmICghaXNOb2RlSW5Vc2UodGV4dE1hcmtlckRhdGEubm9kZSkKICAgICAg
ICAgfHwgdGV4dE1hcmtlckRhdGEubm9kZS0+aXNQc2V1ZG9FbGVtZW50KCkpCkBAIC0yMjI5LDcg
KzIyMzAsNyBAQCBWaXNpYmxlUG9zaXRpb24gQVhPYmplY3RDYWNoZTo6dmlzaWJsZVBvc2l0aW9u
Rm9yVGV4dE1hcmtlckRhdGEoVGV4dE1hcmtlckRhdGEmCiAgICAgICAgIHJldHVybiB7IH07CiAK
ICAgICBhdXRvKiBjYWNoZSA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsK
LSAgICBpZiAoY2FjaGUgJiYgIWNhY2hlLT5tX2lkc0luVXNlLmNvbnRhaW5zKHRleHRNYXJrZXJE
YXRhLmF4SUQpKQorICAgIGlmIChjYWNoZSAmJiAhY2FjaGUtPm1faWRzSW5Vc2UuY29udGFpbnMo
dGV4dE1hcmtlckRhdGEuYXhPYmplY3RJRCgpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAg
IHJldHVybiB2aXNpYmxlUG9zaXRpb247CkBAIC0yMjM3LDEzICsyMjM4LDEwIEBAIFZpc2libGVQ
b3NpdGlvbiBBWE9iamVjdENhY2hlOjp2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShU
ZXh0TWFya2VyRGF0YSYKIAogQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rl
ck9mZnNldEZvclRleHRNYXJrZXJEYXRhKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSkK
IHsKLSAgICBpZiAoIWlzTm9kZUluVXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpKQotICAgICAgICBy
ZXR1cm4gQ2hhcmFjdGVyT2Zmc2V0KCk7Ci0gICAgCi0gICAgaWYgKHRleHRNYXJrZXJEYXRhLmln
bm9yZWQpCi0gICAgICAgIHJldHVybiBDaGFyYWN0ZXJPZmZzZXQoKTsKLSAgICAKLSAgICBDaGFy
YWN0ZXJPZmZzZXQgcmVzdWx0ID0gQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLm5vZGUs
IHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXgsIHRleHRNYXJrZXJEYXRhLmNoYXJh
Y3Rlck9mZnNldCk7CisgICAgaWYgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgIWlzTm9kZUlu
VXNlKHRleHRNYXJrZXJEYXRhLm5vZGUpKQorICAgICAgICByZXR1cm4geyB9OworCisgICAgQ2hh
cmFjdGVyT2Zmc2V0IHJlc3VsdCh0ZXh0TWFya2VyRGF0YS5ub2RlLCB0ZXh0TWFya2VyRGF0YS5j
aGFyYWN0ZXJTdGFydCwgdGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyT2Zmc2V0KTsKICAgICAvLyBX
aGVuIHdlIGFyZSBhdCBhIGxpbmUgd3JhcCBhbmQgdGhlIFZpc2libGVQb3NpdGlvbiBpcyB1cHN0
cmVhbSwgaXQgbWVhbnMgdGhlIHRleHQgbWFya2VyIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZp
b3VzIGxpbmUuCiAgICAgLy8gV2UgdXNlIHRoZSBwcmV2aW91cyBDaGFyYWN0ZXJPZmZzZXQgc28g
dGhhdCBpdCB3aWxsIG1hdGNoIHRoZSBSYW5nZS4KICAgICBpZiAodGV4dE1hcmtlckRhdGEuYWZm
aW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKQpAQCAtMjUwNywzNyArMjUwNSwxNyBAQCBzdGQ6
Om9wdGlvbmFsPFNpbXBsZVJhbmdlPiBBWE9iamVjdENhY2hlOjpyYW5nZUZvclVub3JkZXJlZENo
YXJhY3Rlck9mZnNldHMoY29ucwogICAgIHJldHVybiB7IHsgKnN0YXJ0LCAqZW5kIH0gfTsKIH0K
IAotdm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZz
ZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQm
IGNoYXJhY3Rlck9mZnNldCkKK1RleHRNYXJrZXJEYXRhIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJr
ZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVy
T2Zmc2V0KQogewogICAgIGlmIChjaGFyYWN0ZXJPZmZzZXQuaXNOdWxsKCkpCi0gICAgICAgIHJl
dHVybjsKLSAgICAKLSAgICBOb2RlKiBkb21Ob2RlID0gY2hhcmFjdGVyT2Zmc2V0Lm5vZGU7Ci0g
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KCpkb21Ob2RlKSAmJiBkb3duY2FzdDxIVE1MSW5w
dXRFbGVtZW50PigqZG9tTm9kZSkuaXNQYXNzd29yZEZpZWxkKCkpIHsKLSAgICAgICAgdGV4dE1h
cmtlckRhdGEuaWdub3JlZCA9IHRydWU7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgCi0g
ICAgUmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IHRoaXMtPmdldE9yQ3JlYXRlKGRv
bU5vZGUpOwotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8gQ29u
dmVydCB0byB2aXNpYmxlIHBvc2l0aW9uLgotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9z
aXRpb24gPSB2aXNpYmxlUG9zaXRpb25Gcm9tQ2hhcmFjdGVyT2Zmc2V0KGNoYXJhY3Rlck9mZnNl
dCk7Ci0gICAgaW50IHZwT2Zmc2V0ID0gMDsKLSAgICBpZiAoIXZpc2libGVQb3NpdGlvbi5pc051
bGwoKSkgewotICAgICAgICBQb3NpdGlvbiBkZWVwUG9zID0gdmlzaWJsZVBvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCk7Ci0gICAgICAgIHZwT2Zmc2V0ID0gZGVlcFBvcy5kZXByZWNhdGVkRWRpdGlu
Z09mZnNldCgpOwotICAgIH0KLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLT5v
YmplY3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwotICAgIHRleHRN
YXJrZXJEYXRhLmNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNldC5vZmZzZXQ7Ci0gICAg
dGV4dE1hcmtlckRhdGEuY2hhcmFjdGVyU3RhcnRJbmRleCA9IGNoYXJhY3Rlck9mZnNldC5zdGFy
dEluZGV4OwotICAgIHRleHRNYXJrZXJEYXRhLm9mZnNldCA9IHZwT2Zmc2V0OwotICAgIHRleHRN
YXJrZXJEYXRhLmFmZmluaXR5ID0gdmlzaWJsZVBvc2l0aW9uLmFmZmluaXR5KCk7Ci0gICAgCi0g
ICAgdGhpcy0+c2V0Tm9kZUluVXNlKGRvbU5vZGUpOworICAgICAgICByZXR1cm4geyB9OworCisg
ICAgaWYgKGlzPEhUTUxJbnB1dEVsZW1lbnQ+KGNoYXJhY3Rlck9mZnNldC5ub2RlKQorICAgICAg
ICAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50PigqY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpLmlz
UGFzc3dvcmRGaWVsZCgpKQorICAgICAgICByZXR1cm4geyAqdGhpcywgeyB9LCB0cnVlIH07CisK
KyAgICBzZXROb2RlSW5Vc2UoY2hhcmFjdGVyT2Zmc2V0Lm5vZGUpOworICAgIHJldHVybiB7ICp0
aGlzLCBjaGFyYWN0ZXJPZmZzZXQsIGZhbHNlIH07CiB9CiAKIENoYXJhY3Rlck9mZnNldCBBWE9i
amVjdENhY2hlOjpzdGFydE9yRW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMpCkBAIC0y
NTcxLDE3ICsyNTQ5LDEyIEBAIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpzdGFydE9y
RW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoY29uc3QgU2ltcGxlUmFuCiAgICAgcmV0dXJuIHRy
YXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvcHlSYW5nZSwgb2Zmc2V0LCBvcHRpb25zLCBzdGF5V2l0
aGluUmFuZ2UpOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnN0YXJ0T3JFbmRUZXh0TWFya2Vy
RGF0YUZvclJhbmdlKFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgU2ltcGxl
UmFuZ2UmIHJhbmdlLCBib29sIGlzU3RhcnQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVjdENhY2hl
OjpzdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZShjb25zdCBTaW1wbGVSYW5nZSYgcmFu
Z2UsIGJvb2wgaXNTdGFydCkKIHsKLSAgICAvLyBUaGlzIG1lbW9yeSBtdXN0IGJlIHplcm8nZCBz
byBpbnN0YW5jZXMgb2YgVGV4dE1hcmtlckRhdGEgY2FuIGJlIHRlc3RlZCBmb3IgYnl0ZS1lcXVp
dmFsZW5jZS4KLSAgICAvLyBXYXJuaW5nOiBUaGlzIGlzIHJpc2t5IGFuZCBiYWQgYmVjYXVzZSBU
ZXh0TWFya2VyRGF0YSBpcyBhIG5vbnRyaXZpYWwgdHlwZS4KLSAgICBtZW1zZXQoc3RhdGljX2Nh
c3Q8dm9pZCo+KCZ0ZXh0TWFya2VyRGF0YSksIDAsIHNpemVvZihUZXh0TWFya2VyRGF0YSkpOwot
ICAgIAotICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBzdGFydE9yRW5kQ2hh
cmFjdGVyT2Zmc2V0Rm9yUmFuZ2UocmFuZ2UsIGlzU3RhcnQpOworICAgIGF1dG8gY2hhcmFjdGVy
T2Zmc2V0ID0gc3RhcnRPckVuZENoYXJhY3Rlck9mZnNldEZvclJhbmdlKHJhbmdlLCBpc1N0YXJ0
KTsKICAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVsbCgpKQotICAgICAgICByZXR1cm47Ci0g
ICAgCi0gICAgc2V0VGV4dE1hcmtlckRhdGFXaXRoQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJE
YXRhLCBjaGFyYWN0ZXJPZmZzZXQpOworICAgICAgICByZXR1cm4geyB9OworICAgIHJldHVybiB0
ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOwogfQogCiBD
aGFyYWN0ZXJPZmZzZXQgQVhPYmplY3RDYWNoZTo6Y2hhcmFjdGVyT2Zmc2V0Rm9yTm9kZUFuZE9m
ZnNldChOb2RlJiBub2RlLCBpbnQgb2Zmc2V0LCBUcmF2ZXJzZU9wdGlvbiBvcHRpb24pCkBAIC0y
NjMwLDE1ICsyNjAzLDYgQEAgQ2hhcmFjdGVyT2Zmc2V0IEFYT2JqZWN0Q2FjaGU6OmNoYXJhY3Rl
ck9mZnNldEZvck5vZGVBbmRPZmZzZXQoTm9kZSYgbm9kZSwgaW50IG8KICAgICByZXR1cm4gY2hh
cmFjdGVyT2Zmc2V0OwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnRleHRNYXJrZXJEYXRhRm9y
Q2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3QgQ2hh
cmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCi17Ci0gICAgLy8gVGhpcyBtZW1vcnkgbXVz
dCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRNYXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQg
Zm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2FybmluZzogVGhpcyBpcyByaXNreSBhbmQg
YmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBub250cml2aWFsIHR5cGUuCi0gICAgbWVt
c2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4dE1h
cmtlckRhdGEpKTsKLQotICAgIHNldFRleHRNYXJrZXJEYXRhV2l0aENoYXJhY3Rlck9mZnNldCh0
ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLX0KLQogYm9vbCBBWE9iamVjdENhY2hl
OjpzaG91bGRTa2lwQm91bmRhcnkoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0JiBwcmV2aW91cywgY29u
c3QgQ2hhcmFjdGVyT2Zmc2V0JiBuZXh0KQogewogICAgIC8vIE1hdGNoIHRoZSBiZWhhdmlvciBv
ZiBWaXNpYmxlUG9zaXRpb24sIHdlIHNob3VsZCBza2lwIHRoZSBub2RlIGJvdW5kYXJ5IHdoZW4g
dGhlcmUncyBubyB2aXN1YWwgc3BhY2Ugb3IgbmV3IGxpbmUgY2hhcmFjdGVyLgpAQCAtMjY1Nyw0
MSArMjYyMSw1NyBAQCBib29sIEFYT2JqZWN0Q2FjaGU6OnNob3VsZFNraXBCb3VuZGFyeShjb25z
dCBDaGFyYWN0ZXJPZmZzZXQmIHByZXZpb3VzLCBjb25zdCBDaAogICAgIAogICAgIHJldHVybiB0
cnVlOwogfQotICAgIAotdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvck5leHRD
aGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmIHRleHRNYXJrZXJEYXRhLCBjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmIGNoYXJhY3Rlck9mZnNldCkKKworVGV4dE1hcmtlckRhdGEgQVhPYmplY3RD
YWNoZTo6dGV4dE1hcmtlckRhdGFGb3JOZXh0Q2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewotICAgIENoYXJhY3Rlck9mZnNldCBuZXh0ID0g
Y2hhcmFjdGVyT2Zmc2V0OwotICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91cyA9IGNoYXJhY3Rl
ck9mZnNldDsKKyAgICBUZXh0TWFya2VyRGF0YSBkYXRhOworICAgIGF1dG8gbmV4dCA9IGNoYXJh
Y3Rlck9mZnNldDsKKyAgICBhdXRvIHByZXZpb3VzID0gY2hhcmFjdGVyT2Zmc2V0OwogICAgIGJv
b2wgc2hvdWxkQ29udGludWU7CiAgICAgZG8gewogICAgICAgICBzaG91bGRDb250aW51ZSA9IGZh
bHNlOwogICAgICAgICBuZXh0ID0gbmV4dENoYXJhY3Rlck9mZnNldChuZXh0LCBmYWxzZSk7CiAg
ICAgICAgIGlmIChzaG91bGRTa2lwQm91bmRhcnkocHJldmlvdXMsIG5leHQpKQogICAgICAgICAg
ICAgbmV4dCA9IG5leHRDaGFyYWN0ZXJPZmZzZXQobmV4dCwgZmFsc2UpOwotICAgICAgICB0ZXh0
TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldCh0ZXh0TWFya2VyRGF0YSwgbmV4dCk7Ci0gICAg
ICAgIAorICAgICAgICBkYXRhID0gdGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQobmV4
dCk7CisKICAgICAgICAgLy8gV2Ugc2hvdWxkIHNraXAgbmV4dCBDaGFyYWN0ZXJPZmZzZXQgaWYg
aXQncyB2aXN1YWxseSB0aGUgc2FtZS4KICAgICAgICAgaWYgKCFsZW5ndGhGb3JSYW5nZShyYW5n
ZUZvclVub3JkZXJlZENoYXJhY3Rlck9mZnNldHMocHJldmlvdXMsIG5leHQpKSkKICAgICAgICAg
ICAgIHNob3VsZENvbnRpbnVlID0gdHJ1ZTsKICAgICAgICAgcHJldmlvdXMgPSBuZXh0OwotICAg
IH0gd2hpbGUgKHRleHRNYXJrZXJEYXRhLmlnbm9yZWQgfHwgc2hvdWxkQ29udGludWUpOworICAg
IH0gd2hpbGUgKGRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CisgICAgcmV0dXJuIGRh
dGE7Cit9CisKK0FYVGV4dE1hcmtlciBBWE9iamVjdENhY2hlOjpuZXh0VGV4dE1hcmtlcihjb25z
dCBBWFRleHRNYXJrZXImIG1hcmtlcikKK3sKKyAgICBBU1NFUlQobV9pZCA9PSBtYXJrZXIudHJl
ZUlEKCkpOworICAgIHJldHVybiB0ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQo
bWFya2VyKTsKIH0KIAotdm9pZCBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KFRleHRNYXJrZXJEYXRhJiB0ZXh0TWFya2VyRGF0YSwgY29uc3Qg
Q2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitUZXh0TWFya2VyRGF0YSBBWE9iamVj
dENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENo
YXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQogewotICAgIENoYXJhY3Rlck9mZnNldCBw
cmV2aW91cyA9IGNoYXJhY3Rlck9mZnNldDsKLSAgICBDaGFyYWN0ZXJPZmZzZXQgbmV4dCA9IGNo
YXJhY3Rlck9mZnNldDsKKyAgICBUZXh0TWFya2VyRGF0YSBkYXRhOworICAgIGF1dG8gcHJldmlv
dXMgPSBjaGFyYWN0ZXJPZmZzZXQ7CisgICAgYXV0byBuZXh0ID0gY2hhcmFjdGVyT2Zmc2V0Owog
ICAgIGJvb2wgc2hvdWxkQ29udGludWU7CiAgICAgZG8gewogICAgICAgICBzaG91bGRDb250aW51
ZSA9IGZhbHNlOwogICAgICAgICBwcmV2aW91cyA9IHByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KHBy
ZXZpb3VzLCBmYWxzZSk7Ci0gICAgICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0
KHRleHRNYXJrZXJEYXRhLCBwcmV2aW91cyk7Ci0gICAgICAgIAorICAgICAgICBkYXRhID0gdGV4
dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQocHJldmlvdXMpOworCiAgICAgICAgIC8vIFdl
IHNob3VsZCBza2lwIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBpZiBpdCdzIHZpc3VhbGx5IHRo
ZSBzYW1lLgogICAgICAgICBpZiAoIWxlbmd0aEZvclJhbmdlKHJhbmdlRm9yVW5vcmRlcmVkQ2hh
cmFjdGVyT2Zmc2V0cyhwcmV2aW91cywgbmV4dCkpKQogICAgICAgICAgICAgc2hvdWxkQ29udGlu
dWUgPSB0cnVlOwogICAgICAgICBuZXh0ID0gcHJldmlvdXM7Ci0gICAgfSB3aGlsZSAodGV4dE1h
cmtlckRhdGEuaWdub3JlZCB8fCBzaG91bGRDb250aW51ZSk7CisgICAgfSB3aGlsZSAoZGF0YS5p
Z25vcmVkIHx8IHNob3VsZENvbnRpbnVlKTsKKyAgICByZXR1cm4gZGF0YTsKK30KKworQVhUZXh0
TWFya2VyIEFYT2JqZWN0Q2FjaGU6OnByZXZpb3VzVGV4dE1hcmtlcihjb25zdCBBWFRleHRNYXJr
ZXImIG1hcmtlcikKK3sKKyAgICBBU1NFUlQobV9pZCA9PSBtYXJrZXIudHJlZUlEKCkpOworICAg
IHJldHVybiB0ZXh0TWFya2VyRGF0YUZvclByZXZpb3VzQ2hhcmFjdGVyT2Zmc2V0KG1hcmtlcik7
CiB9CiAKIE5vZGUqIEFYT2JqZWN0Q2FjaGU6Om5leHROb2RlKE5vZGUqIG5vZGUpIGNvbnN0CkBA
IC0yNzg5LDc5ICsyNzY5LDQ1IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIEFYT2JqZWN0Q2FjaGU6
OmFjY2Vzc2liaWxpdHlPYmplY3RGb3JUZXh0TWFya2VyRGF0YShUZXh0TWFyCiAgICAgcmV0dXJu
IHRoaXMtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwogfQogCi1zdGQ6Om9wdGlvbmFsPFRleHRNYXJr
ZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3MpCitzdGQ6Om9wdGlvbmFsPFRleHRNYXJr
ZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFya2VyRGF0YUZvclZpc2libGVQb3NpdGlvbihj
b25zdCBWaXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKIHsKLSAgICBpZiAodmlzaWJs
ZVBvcy5pc051bGwoKSkKKyAgICBpZiAodmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpKQogICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgUG9zaXRpb24gZGVlcFBvcyA9IHZpc2libGVQ
b3MuZGVlcEVxdWl2YWxlbnQoKTsKLSAgICBOb2RlKiBkb21Ob2RlID0gZGVlcFBvcy5hbmNob3JO
b2RlKCk7Ci0gICAgQVNTRVJUKGRvbU5vZGUpOwotICAgIGlmICghZG9tTm9kZSkKKyAgICBQb3Np
dGlvbiBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgIE5v
ZGUqIG5vZGUgPSBwb3NpdGlvbi5hbmNob3JOb2RlKCk7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlmIChpczxI
VE1MSW5wdXRFbGVtZW50PigqZG9tTm9kZSkgJiYgZG93bmNhc3Q8SFRNTElucHV0RWxlbWVudD4o
KmRvbU5vZGUpLmlzUGFzc3dvcmRGaWVsZCgpKQorICAgIGlmIChpczxIVE1MSW5wdXRFbGVtZW50
Pihub2RlKSAmJiBkb3duY2FzdDxIVE1MSW5wdXRFbGVtZW50Pigqbm9kZSkuaXNQYXNzd29yZEZp
ZWxkKCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICAvLyBJZiB0aGUgdmlz
aWJsZSBwb3NpdGlvbiBoYXMgYW4gYW5jaG9yIHR5cGUgcmVmZXJyaW5nIHRvIGEgbm9kZSBvdGhl
ciB0aGFuIHRoZSBhbmNob3JlZCBub2RlLCB3ZSBzaG91bGQKICAgICAvLyBzZXQgdGhlIHRleHQg
bWFya2VyIGRhdGEgd2l0aCBDaGFyYWN0ZXJPZmZzZXQgc28gdGhhdCB0aGUgb2Zmc2V0IHdpbGwg
Y29ycmVzcG9uZCB0byB0aGUgbm9kZS4KLSAgICBDaGFyYWN0ZXJPZmZzZXQgY2hhcmFjdGVyT2Zm
c2V0ID0gY2hhcmFjdGVyT2Zmc2V0RnJvbVZpc2libGVQb3NpdGlvbih2aXNpYmxlUG9zKTsKLSAg
ICBpZiAoZGVlcFBvcy5hbmNob3JUeXBlKCkgPT0gUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFu
Y2hvciB8fCBkZWVwUG9zLmFuY2hvclR5cGUoKSA9PSBQb3NpdGlvbjo6UG9zaXRpb25Jc0FmdGVy
Q2hpbGRyZW4pIHsKLSAgICAgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAg
ICAgIHRleHRNYXJrZXJEYXRhRm9yQ2hhcmFjdGVyT2Zmc2V0KHRleHRNYXJrZXJEYXRhLCBjaGFy
YWN0ZXJPZmZzZXQpOwotICAgICAgICByZXR1cm4gdGV4dE1hcmtlckRhdGE7Ci0gICAgfQorICAg
IGF1dG8gY2hhcmFjdGVyT2Zmc2V0ID0gY2hhcmFjdGVyT2Zmc2V0RnJvbVZpc2libGVQb3NpdGlv
bih2aXNpYmxlUG9zaXRpb24pOworICAgIGlmIChwb3NpdGlvbi5hbmNob3JUeXBlKCkgPT0gUG9z
aXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvciB8fCBwb3NpdGlvbi5hbmNob3JUeXBlKCkgPT0g
UG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckNoaWxkcmVuKQorICAgICAgICByZXR1cm4gdGV4dE1h
cmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKIAotICAgIC8vIGZp
bmQgb3IgY3JlYXRlIGFuIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvciB0aGlzIG5vZGUKLSAgICBB
WE9iamVjdENhY2hlKiBjYWNoZSA9IGRvbU5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgp
OworICAgIGF1dG8qIGNhY2hlID0gbm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7CiAg
ICAgaWYgKCFjYWNoZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICBSZWZQdHI8
QWNjZXNzaWJpbGl0eU9iamVjdD4gb2JqID0gY2FjaGUtPmdldE9yQ3JlYXRlKGRvbU5vZGUpOwot
Ci0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRN
YXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2Fy
bmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBu
b250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAg
bWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4
dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLT5vYmpl
Y3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSBkb21Ob2RlOwotICAgIHRleHRNYXJr
ZXJEYXRhLm9mZnNldCA9IGRlZXBQb3MuZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKTsKLSAgICB0
ZXh0TWFya2VyRGF0YS5hbmNob3JUeXBlID0gZGVlcFBvcy5hbmNob3JUeXBlKCk7Ci0gICAgdGV4
dE1hcmtlckRhdGEuYWZmaW5pdHkgPSB2aXNpYmxlUG9zLmFmZmluaXR5KCk7Ci0KLSAgICB0ZXh0
TWFya2VyRGF0YS5jaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXQub2Zmc2V0OwotICAg
IHRleHRNYXJrZXJEYXRhLmNoYXJhY3RlclN0YXJ0SW5kZXggPSBjaGFyYWN0ZXJPZmZzZXQuc3Rh
cnRJbmRleDsKLQotICAgIGNhY2hlLT5zZXROb2RlSW5Vc2UoZG9tTm9kZSk7Ci0KLSAgICByZXR1
cm4gdGV4dE1hcmtlckRhdGE7CisgICAgY2FjaGUtPnNldE5vZGVJblVzZShub2RlKTsKKyAgICBy
ZXR1cm4geyB7ICpjYWNoZSwgbm9kZSwgdmlzaWJsZVBvc2l0aW9uLAorICAgICAgICBjaGFyYWN0
ZXJPZmZzZXQuc3RhcnRJbmRleCwgY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCwgZmFsc2UgfSB9Owog
fQogCi0vLyBUaGlzIGZ1bmN0aW9uIGV4aXRzIGFzIGEgcGVyZm9ybWFuY2Ugb3B0aW1pemF0aW9u
IHRvIGF2b2lkIGEgc3luY2hyb25vdXMgbGF5b3V0LgorLy8gVGhpcyBmdW5jdGlvbiBleGlzdHMg
YXMgYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24gdG8gYXZvaWQgYSBzeW5jaHJvbm91cyBsYXlv
dXQuCiBzdGQ6Om9wdGlvbmFsPFRleHRNYXJrZXJEYXRhPiBBWE9iamVjdENhY2hlOjp0ZXh0TWFy
a2VyRGF0YUZvckZpcnN0UG9zaXRpb25JblRleHRDb250cm9sKEhUTUxUZXh0Rm9ybUNvbnRyb2xF
bGVtZW50JiB0ZXh0Q29udHJvbCkKIHsKICAgICBpZiAoaXM8SFRNTElucHV0RWxlbWVudD4odGV4
dENvbnRyb2wpICYmIGRvd25jYXN0PEhUTUxJbnB1dEVsZW1lbnQ+KHRleHRDb250cm9sKS5pc1Bh
c3N3b3JkRmllbGQoKSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gdGV4dENvbnRyb2wuZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCk7
CisgICAgYXV0byogY2FjaGUgPSB0ZXh0Q29udHJvbC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUo
KTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAg
UmVmUHRyPEFjY2Vzc2liaWxpdHlPYmplY3Q+IG9iaiA9IGNhY2hlLT5nZXRPckNyZWF0ZSgmdGV4
dENvbnRyb2wpOwotICAgIGlmICghb2JqKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owot
Ci0gICAgLy8gVGhpcyBtZW1vcnkgbXVzdCBiZSB6ZXJvJ2Qgc28gaW5zdGFuY2VzIG9mIFRleHRN
YXJrZXJEYXRhIGNhbiBiZSB0ZXN0ZWQgZm9yIGJ5dGUtZXF1aXZhbGVuY2UuCi0gICAgLy8gV2Fy
bmluZzogVGhpcyBpcyByaXNreSBhbmQgYmFkIGJlY2F1c2UgVGV4dE1hcmtlckRhdGEgaXMgYSBu
b250cml2aWFsIHR5cGUuCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGE7Ci0gICAg
bWVtc2V0KHN0YXRpY19jYXN0PHZvaWQqPigmdGV4dE1hcmtlckRhdGEpLCAwLCBzaXplb2YoVGV4
dE1hcmtlckRhdGEpKTsKLSAgICAKLSAgICB0ZXh0TWFya2VyRGF0YS5heElEID0gb2JqLT5vYmpl
Y3RJRCgpOwotICAgIHRleHRNYXJrZXJEYXRhLm5vZGUgPSAmdGV4dENvbnRyb2w7Ci0KICAgICBj
YWNoZS0+c2V0Tm9kZUluVXNlKCZ0ZXh0Q29udHJvbCk7Ci0KLSAgICByZXR1cm4gdGV4dE1hcmtl
ckRhdGE7CisgICAgcmV0dXJuIHsgeyAqY2FjaGUsICZ0ZXh0Q29udHJvbCwgeyB9LCBmYWxzZSB9
IH07CiB9CiAKIENoYXJhY3Rlck9mZnNldCBBWE9iamVjdENhY2hlOjpuZXh0Q2hhcmFjdGVyT2Zm
c2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0LCBib29sIGlnbm9yZU5l
eHROb2RlU3RhcnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FY
T2JqZWN0Q2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNo
ZS5oCmluZGV4IGJjZGYzYmE5ODZiMy4uZWRmZTUwNDMwNTg5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuaApAQCAtNDQsNiArNDQsNyBAQCBjbGFzcyBU
ZXh0U3RyZWFtOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIEFYVGV4dE1hcmtlcjsK
IGNsYXNzIERvY3VtZW50OwogY2xhc3MgSFRNTEFyZWFFbGVtZW50OwogY2xhc3MgSFRNTFRhYmxl
RWxlbWVudDsKQEAgLTU2LDE5ICs1Nyw3IEBAIGNsYXNzIFJlbmRlclRleHQ7CiBjbGFzcyBTY3Jv
bGxWaWV3OwogY2xhc3MgVmlzaWJsZVBvc2l0aW9uOwogY2xhc3MgV2lkZ2V0OwotCi1zdHJ1Y3Qg
VGV4dE1hcmtlckRhdGEgewotICAgIEFYSUQgYXhJRDsKLQotICAgIE5vZGUqIG5vZGUgeyBudWxs
cHRyIH07Ci0gICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OwotICAgIFBvc2l0aW9uOjpBbmNob3JU
eXBlIGFuY2hvclR5cGUgeyBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yIH07Ci0g
ICAgQWZmaW5pdHkgYWZmaW5pdHkgeyBBZmZpbml0eTo6RG93bnN0cmVhbSB9OwotCi0gICAgaW50
IGNoYXJhY3RlclN0YXJ0SW5kZXggeyAwIH07Ci0gICAgaW50IGNoYXJhY3Rlck9mZnNldCB7IDAg
fTsKLSAgICBib29sIGlnbm9yZWQgeyBmYWxzZSB9OwotfTsKK3N0cnVjdCBUZXh0TWFya2VyRGF0
YTsKIAogc3RydWN0IENoYXJhY3Rlck9mZnNldCB7CiAgICAgTm9kZSogbm9kZTsKQEAgLTIzNiwx
NSArMjI1LDE3IEBAIHB1YmxpYzoKICAgICAvLyBUZXh0IG1hcmtlciB1dGlsaXRpZXMuCiAgICAg
c3RkOjpvcHRpb25hbDxUZXh0TWFya2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9z
aXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7CiAgICAgc3RkOjpvcHRpb25hbDxUZXh0TWFy
a2VyRGF0YT4gdGV4dE1hcmtlckRhdGFGb3JGaXJzdFBvc2l0aW9uSW5UZXh0Q29udHJvbChIVE1M
VGV4dEZvcm1Db250cm9sRWxlbWVudCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JDaGFy
YWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKLSAg
ICB2b2lkIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0
YSYsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOwotICAgIHZvaWQgdGV4dE1hcmtlckRhdGFGb3JQ
cmV2aW91c0NoYXJhY3Rlck9mZnNldChUZXh0TWFya2VyRGF0YSYsIGNvbnN0IENoYXJhY3Rlck9m
ZnNldCYpOwotICAgIFZpc2libGVQb3NpdGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2Vy
RGF0YShUZXh0TWFya2VyRGF0YSYpOworICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRh
Rm9yQ2hhcmFjdGVyT2Zmc2V0KGNvbnN0IENoYXJhY3Rlck9mZnNldCYpOworICAgIFRleHRNYXJr
ZXJEYXRhIHRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0
ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIgbmV4dFRleHRNYXJrZXIoY29uc3QgQVhUZXh0
TWFya2VyJik7CisgICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0No
YXJhY3Rlck9mZnNldChjb25zdCBDaGFyYWN0ZXJPZmZzZXQmKTsKKyAgICBBWFRleHRNYXJrZXIg
cHJldmlvdXNUZXh0TWFya2VyKGNvbnN0IEFYVGV4dE1hcmtlciYpOworICAgIFZpc2libGVQb3Np
dGlvbiB2aXNpYmxlUG9zaXRpb25Gb3JUZXh0TWFya2VyRGF0YShjb25zdCBUZXh0TWFya2VyRGF0
YSYpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JUZXh0TWFya2VyRGF0
YShUZXh0TWFya2VyRGF0YSYpOwogICAgIC8vIFVzZSBpZ25vcmVOZXh0Tm9kZVN0YXJ0L2lnbm9y
ZVByZXZpb3VzTm9kZUVuZCB0byBkZXRlcm1pbmUgdGhlIGJlaGF2aW9yIHdoZW4gd2UgYXJlIGF0
IG5vZGUgYm91bmRhcnkuIAogICAgIENoYXJhY3Rlck9mZnNldCBuZXh0Q2hhcmFjdGVyT2Zmc2V0
KGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGJvb2wgaWdub3JlTmV4dE5vZGVTdGFydCA9IHRydWUp
OwogICAgIENoYXJhY3Rlck9mZnNldCBwcmV2aW91c0NoYXJhY3Rlck9mZnNldChjb25zdCBDaGFy
YWN0ZXJPZmZzZXQmLCBib29sIGlnbm9yZVByZXZpb3VzTm9kZUVuZCA9IHRydWUpOwotICAgIHZv
aWQgc3RhcnRPckVuZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoVGV4dE1hcmtlckRhdGEmLCBjb25z
dCBTaW1wbGVSYW5nZSYsIGJvb2wpOworICAgIFRleHRNYXJrZXJEYXRhIHN0YXJ0T3JFbmRUZXh0
TWFya2VyRGF0YUZvclJhbmdlKGNvbnN0IFNpbXBsZVJhbmdlJiwgYm9vbCk7CiAgICAgQ2hhcmFj
dGVyT2Zmc2V0IHN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZShjb25zdCBTaW1wbGVS
YW5nZSYsIGJvb2wsIGJvb2wgZW50ZXJUZXh0Q29udHJvbHMgPSBmYWxzZSk7CiAgICAgQWNjZXNz
aWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdEZvclRleHRNYXJrZXJEYXRhKFRleHRN
YXJrZXJEYXRhJik7CiAgICAgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4gcmFuZ2VGb3JVbm9y
ZGVyZWRDaGFyYWN0ZXJPZmZzZXRzKGNvbnN0IENoYXJhY3Rlck9mZnNldCYsIGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwpAQCAtNDU0LDkgKzQ0NSwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgTm9kZSog
bmV4dE5vZGUoTm9kZSopIGNvbnN0OwogICAgIE5vZGUqIHByZXZpb3VzTm9kZShOb2RlKikgY29u
c3Q7CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IHRyYXZlcnNlVG9PZmZzZXRJblJhbmdlKGNvbnN0IFNp
bXBsZVJhbmdlJiwgaW50LCBUcmF2ZXJzZU9wdGlvbiA9IFRyYXZlcnNlT3B0aW9uRGVmYXVsdCwg
Ym9vbCBzdGF5V2l0aGluUmFuZ2UgPSBmYWxzZSk7CitwdWJsaWM6CiAgICAgVmlzaWJsZVBvc2l0
aW9uIHZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY29uc3QgQ2hhcmFjdGVyT2Zm
c2V0Jik7Citwcm90ZWN0ZWQ6CiAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldEZy
b21WaXNpYmxlUG9zaXRpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJik7Ci0gICAgdm9pZCBzZXRU
ZXh0TWFya2VyRGF0YVdpdGhDaGFyYWN0ZXJPZmZzZXQoVGV4dE1hcmtlckRhdGEmLCBjb25zdCBD
aGFyYWN0ZXJPZmZzZXQmKTsKICAgICBVQ2hhcjMyIGNoYXJhY3RlckFmdGVyKGNvbnN0IENoYXJh
Y3Rlck9mZnNldCYpOwogICAgIFVDaGFyMzIgY2hhcmFjdGVyQmVmb3JlKGNvbnN0IENoYXJhY3Rl
ck9mZnNldCYpOwogICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXRGb3JOb2RlQW5k
T2Zmc2V0KE5vZGUmLCBpbnQsIFRyYXZlcnNlT3B0aW9uID0gVHJhdmVyc2VPcHRpb25EZWZhdWx0
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2Vy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjdmNGY5NWUwNTM2ZQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUZXh0TWFya2VyLmNw
cApAQCAtMCwwICsxLDE2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTCisgKiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiQVhUZXh0TWFya2VyLmgiCisKKyNpbmNsdWRlICJBWFRyZWVTdG9yZS5oIgorI2lu
Y2x1ZGUgIkhUTUxJbnB1dEVsZW1lbnQuaCIKKyNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRNYXJrZXI6OkFYVGV4dE1hcmtlcihjb25zdCBW
aXNpYmxlUG9zaXRpb24mIHZpc2libGVQb3NpdGlvbikKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworCisgICAgaWYgKHZpc2libGVQb3NpdGlvbi5pc051bGwoKSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgYXV0byogbm9kZSA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgp
LmFuY2hvck5vZGUoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNoZSA9IG5vZGUtPmRvY3VtZW50KCkuYXhPYmplY3RD
YWNoZSgpOworICAgIGlmICghY2FjaGUpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
IGRhdGEgPSBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JWaXNpYmxlUG9zaXRpb24odmlzaWJsZVBv
c2l0aW9uKSkKKyAgICAgICAgbV9kYXRhID0gKmRhdGE7Cit9CisKK0FYVGV4dE1hcmtlcjo6QVhU
ZXh0TWFya2VyKGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQoreworICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAoY2hhcmFjdGVyT2Zmc2V0LmlzTnVs
bCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byogY2FjaGUgPSBjaGFyYWN0ZXJP
ZmZzZXQubm9kZS0+ZG9jdW1lbnQoKS5heE9iamVjdENhY2hlKCkpCisgICAgICAgIG1fZGF0YSA9
IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQp
OworfQorCitBWFRleHRNYXJrZXI6Om9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0Cit7
CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKworICAgIGF1dG8qIGNhY2hlID0gQVhUcmVl
U3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVGb3JJRCh0cmVlSUQoKSk7CisgICAgcmV0dXJuIGNh
Y2hlID8gY2FjaGUtPnZpc2libGVQb3NpdGlvbkZvclRleHRNYXJrZXJEYXRhKG1fZGF0YSkgOiBW
aXNpYmxlUG9zaXRpb24oKTsKK30KKworQVhUZXh0TWFya2VyOjpvcGVyYXRvciBDaGFyYWN0ZXJP
ZmZzZXQoKSBjb25zdAoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBpZiAo
aXNJZ25vcmVkKCkgfHwgaXNOdWxsKCkpCisgICAgICAgIHJldHVybiB7IH07CisKKyAgICBDaGFy
YWN0ZXJPZmZzZXQgcmVzdWx0KG1fZGF0YS5ub2RlLCBtX2RhdGEuY2hhcmFjdGVyU3RhcnQsIG1f
ZGF0YS5jaGFyYWN0ZXJPZmZzZXQpOworICAgIC8vIFdoZW4gd2UgYXJlIGF0IGEgbGluZSB3cmFw
IGFuZCB0aGUgVmlzaWJsZVBvc2l0aW9uIGlzIHVwc3RyZWFtLCBpdCBtZWFucyB0aGUgdGV4dCBt
YXJrZXIgaXMgYXQgdGhlIGVuZCBvZiB0aGUgcHJldmlvdXMgbGluZS4KKyAgICAvLyBXZSB1c2Ug
dGhlIHByZXZpb3VzIENoYXJhY3Rlck9mZnNldCBzbyB0aGF0IGl0IHdpbGwgbWF0Y2ggdGhlIFJh
bmdlLgorICAgIGlmIChtX2RhdGEuYWZmaW5pdHkgPT0gQWZmaW5pdHk6OlVwc3RyZWFtKSB7Cisg
ICAgICAgIGlmIChhdXRvIGNhY2hlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVG
b3JJRChtX2RhdGEuYXhUcmVlSUQoKSkpCisgICAgICAgICAgICByZXR1cm4gY2FjaGUtPnByZXZp
b3VzQ2hhcmFjdGVyT2Zmc2V0KHJlc3VsdCwgZmFsc2UpOworICAgIH0KKyAgICByZXR1cm4gcmVz
dWx0OworfQorCitBWENvcmVPYmplY3QqIEFYVGV4dE1hcmtlcjo6b2JqZWN0KCkgY29uc3QKK3sK
KyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgYXV0byB0
cmVlID0gQVhUcmVlU3RvcmU8QVhPYmplY3RDYWNoZT46OnRyZWVGb3JJRCh0cmVlSUQoKSk7Cisg
ICAgcmV0dXJuIHRyZWUgPyB0cmVlLT5vYmplY3RGb3JJRChvYmplY3RJRCgpKSA6IG51bGxwdHI7
Cit9CisKKyNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcpCitTdHJpbmcgQVhUZXh0TWFya2VyOjpk
ZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3QKK3sKKyAgICBpZiAoaXNOdWxsKCkpCisgICAgICAgIHJl
dHVybiAiPG51bGw+Il9zOworCisgICAgYXV0byBzZXBhcmF0b3IgPSAiLCAiOworICAgIHJldHVy
biBtYWtlU3RyaW5nKAorICAgICAgICAidHJlZUlEICIsIHRyZWVJRCgpLmxvZ2dpbmdTdHJpbmco
KQorICAgICAgICAsIHNlcGFyYXRvciwgIm9iamVjdElEICIsIG9iamVjdElEKCkubG9nZ2luZ1N0
cmluZygpCisgICAgICAgICwgc2VwYXJhdG9yLCBub2RlKCktPmRlYnVnRGVzY3JpcHRpb24oKQor
ICAgICAgICAsIHNlcGFyYXRvciwgIm9mZnNldCAiLCBtX2RhdGEub2Zmc2V0CisgICAgICAgICwg
c2VwYXJhdG9yLCAiQW5jaG9yVHlwZSAiLCBtX2RhdGEuYW5jaG9yVHlwZQorICAgICAgICAsIHNl
cGFyYXRvciwgIkFmZmluaXR5ICIsIG1fZGF0YS5hZmZpbml0eQorICAgICAgICAsIHNlcGFyYXRv
ciwgImNoYXJhY3RlclN0YXJ0ICIsIG1fZGF0YS5jaGFyYWN0ZXJTdGFydAorICAgICAgICAsIHNl
cGFyYXRvciwgImNoYXJhY3Rlck9mZnNldCAiLCBtX2RhdGEuY2hhcmFjdGVyT2Zmc2V0CisgICAg
ICAgICwgc2VwYXJhdG9yLCAiaXNJZ25vcmVkICIsIGlzSWdub3JlZCgpCisgICAgKTsKK30KKyNl
bmRpZgorCitBWFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uUmFuZ2UmIHJhbmdlKQorICAgIDogbV9zdGFydChyYW5nZS5zdGFydCkKKyAgICAs
IG1fZW5kKHJhbmdlLmVuZCkKK3sKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworfQorCitB
WFRleHRNYXJrZXJSYW5nZTo6QVhUZXh0TWFya2VyUmFuZ2UoY29uc3Qgc3RkOjpvcHRpb25hbDxT
aW1wbGVSYW5nZT4mIHJhbmdlKQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAg
ICBpZiAoIXJhbmdlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjYWNoZSA9IHJhbmdl
LT5zdGFydC5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBpZiAoIWNhY2hlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBtX3N0YXJ0ID0gQVhUZXh0TWFya2VyKGNhY2hlLT5zdGFydE9y
RW5kQ2hhcmFjdGVyT2Zmc2V0Rm9yUmFuZ2UoKnJhbmdlLCB0cnVlKSk7CisgICAgbV9lbmQgPSBB
WFRleHRNYXJrZXIoY2FjaGUtPnN0YXJ0T3JFbmRDaGFyYWN0ZXJPZmZzZXRGb3JSYW5nZSgqcmFu
Z2UsIGZhbHNlKSk7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShj
b25zdCBBWFRleHRNYXJrZXImIHMsIGNvbnN0IEFYVGV4dE1hcmtlciYgZSkKKyAgICA6IG1fc3Rh
cnQocykKKyAgICAsIG1fZW5kKGUpCit7Cit9CisKK0FYVGV4dE1hcmtlclJhbmdlOjpvcGVyYXRv
ciBWaXNpYmxlUG9zaXRpb25SYW5nZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKGlzTWFpblRocmVh
ZCgpKTsKKyAgICByZXR1cm4geyBtX3N0YXJ0LCBtX2VuZCB9OworfQorCitzdGQ6Om9wdGlvbmFs
PFNpbXBsZVJhbmdlPiBBWFRleHRNYXJrZXJSYW5nZTo6c2ltcGxlUmFuZ2UoKSBjb25zdAorewor
ICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBhdXRvIHN0YXJ0Qm91bmRhcnlQb2lu
dCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fc3RhcnQpOworICAgIGF1dG8gZW5kQm91bmRhcnlQb2lu
dCA9IG1ha2VCb3VuZGFyeVBvaW50KG1fZW5kKTsKKyAgICBpZiAoIXN0YXJ0Qm91bmRhcnlQb2lu
dCB8fCAhZW5kQm91bmRhcnlQb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICByZXR1cm4geyB7ICpzdGFydEJvdW5kYXJ5UG9pbnQsICplbmRCb3VuZGFyeVBvaW50IH0gfTsK
K30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BWFRleHRNYXJrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvQVhUZXh0TWFya2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li4xOTg5MTQ3OWY1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FYVGV4dE1hcmtlci5oCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDIzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OCisgKiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNw
cmFnbWEgb25jZQorCisjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK3N0cnVjdCBUZXh0TWFya2VyRGF0YSB7CisgICAgdW5zaWduZWQgdHJlZUlEOwor
ICAgIHVuc2lnbmVkIG9iamVjdElEOworCisgICAgTm9kZSogbm9kZTsKKyAgICB1bnNpZ25lZCBv
ZmZzZXQ7CisgICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5jaG9yVHlwZTsKKyAgICBBZmZpbml0
eSBhZmZpbml0eTsKKworICAgIHVuc2lnbmVkIGNoYXJhY3RlclN0YXJ0OworICAgIHVuc2lnbmVk
IGNoYXJhY3Rlck9mZnNldDsKKyAgICBib29sIGlnbm9yZWQ7CisKKyAgICAvLyBDb25zdHJ1Y3Rv
cnMgb2YgVGV4dE1hcmtlckRhdGEgbXVzdCB6ZXJvIHRoZSBzdHJ1Y3QncyBibG9jayBvZiBtZW1v
cnkgYmVjYXVzZSBwbGF0Zm9ybSBjbGllbnQgY29kZSBtYXkgcmVseSBvbiBhIGJ5dGUtY29tcGFy
aXNvbiB0byBkZXRlcm1pbmUgaW5zdGFuY2VzIGVxdWFsaXR5LgorICAgIC8vIE1lbWJlcnMgaW5p
dGlhbGl6YXRpb24gYWxvbmUgaXMgbm90IGVub3VnaCB0byBndWFyYW50eSB0aGF0IGFsbCBieXRl
cyBpbiB0aGUgc3RydWN0IG1lbWVvcnkgYXJlIGluaXRpYWxpemVkLCBhbmQgbWF5IGNhdXNlIHJh
bmRvbSBpbmVxdWFsaXRpZXMgd2hlbiBkb2luZyBieXRlLWNvbXBhcmlzb25zLgorICAgIC8vIEZv
ciBhbiBleGFtcGVsIG9mIHN1Y2ggYnl0ZS1jb21wYXJpc29uLCBzZWUgdGhlIFRlc3RSdW5uZXIg
V1RSOjpBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlcjo6aXNFcXVhbC4KKyAgICBUZXh0TWFya2VyRGF0
YSgpCisgICAgeworICAgICAgICBtZW1zZXQoc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBz
aXplb2YoKnRoaXMpKTsKKyAgICB9CisKKyAgICBUZXh0TWFya2VyRGF0YShBWElEIGF4VHJlZUlE
LCBBWElEIGF4T2JqZWN0SUQsCisgICAgICAgIE5vZGUqIG5vZGVQYXJhbSA9IG51bGxwdHIsIHVu
c2lnbmVkIG9mZnNldFBhcmFtID0gMCwKKyAgICAgICAgUG9zaXRpb246OkFuY2hvclR5cGUgYW5j
aG9yVHlwZVBhcmFtID0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciwKKyAgICAg
ICAgQWZmaW5pdHkgYWZmaW5pdHlQYXJhbSA9IEFmZmluaXR5OjpEb3duc3RyZWFtLAorICAgICAg
ICB1bnNpZ25lZCBjaGFyU3RhcnQgPSAwLCB1bnNpZ25lZCBjaGFyT2Zmc2V0ID0gMCwgYm9vbCBp
Z25vcmVkUGFyYW0gPSBmYWxzZSkKKyAgICB7CisgICAgICAgIG1lbXNldChzdGF0aWNfY2FzdDx2
b2lkKj4odGhpcyksIDAsIHNpemVvZigqdGhpcykpOworICAgICAgICB0cmVlSUQgPSBheFRyZWVJ
RC50b1VJbnQ2NCgpOworICAgICAgICBvYmplY3RJRCA9IGF4T2JqZWN0SUQudG9VSW50NjQoKTsK
KyAgICAgICAgbm9kZSA9IG5vZGVQYXJhbTsKKyAgICAgICAgb2Zmc2V0ID0gb2Zmc2V0UGFyYW07
CisgICAgICAgIGFuY2hvclR5cGUgPSBhbmNob3JUeXBlUGFyYW07CisgICAgICAgIGFmZmluaXR5
ID0gYWZmaW5pdHlQYXJhbTsKKyAgICAgICAgY2hhcmFjdGVyU3RhcnQgPSBjaGFyU3RhcnQ7Cisg
ICAgICAgIGNoYXJhY3Rlck9mZnNldCA9IGNoYXJPZmZzZXQ7CisgICAgICAgIGlnbm9yZWQgPSBp
Z25vcmVkUGFyYW07CisgICAgfQorCisgICAgVGV4dE1hcmtlckRhdGEoQVhPYmplY3RDYWNoZSYg
Y2FjaGUsIE5vZGUqIG5vZGVQYXJhbSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiB2aXNpYmxlUG9z
aXRpb24sCisgICAgICAgIGludCBjaGFyU3RhcnQgPSAwLCBpbnQgY2hhck9mZnNldCA9IDAsIGJv
b2wgaWdub3JlZFBhcmFtID0gZmFsc2UpCisgICAgeworICAgICAgICBpbml0aWFsaXplQVhJRHMo
Y2FjaGUsIG5vZGVQYXJhbSk7CisKKyAgICAgICAgbm9kZSA9IG5vZGVQYXJhbTsKKyAgICAgICAg
YXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpOworICAgICAg
ICBvZmZzZXQgPSAhdmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpID8gc3RkOjptYXgocG9zaXRpb24u
ZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMCkgOiAwOworICAgICAgICBhbmNob3JUeXBlID0g
cG9zaXRpb24uYW5jaG9yVHlwZSgpOworICAgICAgICBhZmZpbml0eSA9IHZpc2libGVQb3NpdGlv
bi5hZmZpbml0eSgpOworCisgICAgICAgIGNoYXJhY3RlclN0YXJ0ID0gc3RkOjptYXgoY2hhclN0
YXJ0LCAwKTsKKyAgICAgICAgY2hhcmFjdGVyT2Zmc2V0ID0gc3RkOjptYXgoY2hhck9mZnNldCwg
MCk7CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVkUGFyYW07CisgICAgfQorCisgICAgVGV4dE1h
cmtlckRhdGEoQVhPYmplY3RDYWNoZSYgY2FjaGUsIGNvbnN0IENoYXJhY3Rlck9mZnNldCYgY2hh
cmFjdGVyT2Zmc2V0LCBib29sIGlnbm9yZWRQYXJhbSA9IGZhbHNlKQorICAgIHsKKyAgICAgICAg
aW5pdGlhbGl6ZUFYSURzKGNhY2hlLCBjaGFyYWN0ZXJPZmZzZXQubm9kZSk7CisKKyAgICAgICAg
bm9kZSA9IGNoYXJhY3Rlck9mZnNldC5ub2RlOworICAgICAgICBhdXRvIHZpc2libGVQb3NpdGlv
biA9IGNhY2hlLnZpc2libGVQb3NpdGlvbkZyb21DaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zm
c2V0KTsKKyAgICAgICAgYXV0byBwb3NpdGlvbiA9IHZpc2libGVQb3NpdGlvbi5kZWVwRXF1aXZh
bGVudCgpOworICAgICAgICBvZmZzZXQgPSAhdmlzaWJsZVBvc2l0aW9uLmlzTnVsbCgpID8gc3Rk
OjptYXgocG9zaXRpb24uZGVwcmVjYXRlZEVkaXRpbmdPZmZzZXQoKSwgMCkgOiAwOworICAgICAg
ICAvLyBXaGVuIGNyZWF0aW5nIGZyb20gYSBDaGFyYWN0ZXJPZmZzZXQsIGFsd2F5cyBzZXQgdGhl
IGFuY2hvclR5cGUgdG8gUG9zaXRpb25Jc09mZnNldEluQW5jaG9yLgorICAgICAgICBhbmNob3JU
eXBlID0gUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcjsKKyAgICAgICAgYWZmaW5p
dHkgPSB2aXNpYmxlUG9zaXRpb24uYWZmaW5pdHkoKTsKKworICAgICAgICBjaGFyYWN0ZXJTdGFy
dCA9IHN0ZDo6bWF4KGNoYXJhY3Rlck9mZnNldC5zdGFydEluZGV4LCAwKTsKKyAgICAgICAgdGhp
cy0+Y2hhcmFjdGVyT2Zmc2V0ID0gc3RkOjptYXgoY2hhcmFjdGVyT2Zmc2V0Lm9mZnNldCwgMCk7
CisgICAgICAgIGlnbm9yZWQgPSBpZ25vcmVkUGFyYW07CisgICAgfQorCisgICAgQVhJRCBheFRy
ZWVJRCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbWFrZU9iamVjdElkZW50aWZpZXI8
QVhJRFR5cGU+KHRyZWVJRCk7CisgICAgfQorCisgICAgQVhJRCBheE9iamVjdElEKCkgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtYWtlT2JqZWN0SWRlbnRpZmllcjxBWElEVHlwZT4ob2Jq
ZWN0SUQpOworICAgIH0KK3ByaXZhdGU6CisgICAgdm9pZCBpbml0aWFsaXplQVhJRHMoQVhPYmpl
Y3RDYWNoZSYgY2FjaGUsIE5vZGUqIG5vZGUpCisgICAgeworICAgICAgICBtZW1zZXQoc3RhdGlj
X2Nhc3Q8dm9pZCo+KHRoaXMpLCAwLCBzaXplb2YoKnRoaXMpKTsKKworICAgICAgICB0cmVlSUQg
PSBjYWNoZS50cmVlSUQoKS50b1VJbnQ2NCgpOworICAgICAgICBpZiAoUmVmUHRyIG9iamVjdCA9
IGNhY2hlLmdldE9yQ3JlYXRlKG5vZGUpKQorICAgICAgICAgICAgb2JqZWN0SUQgPSBvYmplY3Qt
Pm9iamVjdElEKCkudG9VSW50NjQoKTsKKyAgICB9Cit9OworCisjaWYgUExBVEZPUk0oTUFDKQor
dXNpbmcgUGxhdGZvcm1UZXh0TWFya2VyRGF0YSA9IEFYVGV4dE1hcmtlclJlZjsKKyNlbGlmIFBM
QVRGT1JNKElPU19GQU1JTFkpCit1c2luZyBQbGF0Zm9ybVRleHRNYXJrZXJEYXRhID0gTlNEYXRh
ICo7OworI2VuZGlmCisKK2NsYXNzIEFYVGV4dE1hcmtlciB7CisgICAgV1RGX01BS0VfRkFTVF9B
TExPQ0FURUQ7CisgICAgZnJpZW5kIGNsYXNzIEFYVGV4dE1hcmtlclJhbmdlOworcHVibGljOgor
ICAgIC8vIENvbnN0cnVjdG9ycworICAgIEFYVGV4dE1hcmtlcihjb25zdCBWaXNpYmxlUG9zaXRp
b24mKTsKKyAgICBBWFRleHRNYXJrZXIoY29uc3QgQ2hhcmFjdGVyT2Zmc2V0Jik7CisgICAgQVhU
ZXh0TWFya2VyKGNvbnN0IFRleHRNYXJrZXJEYXRhJiBkYXRhKQorICAgICAgICA6IG1fZGF0YShk
YXRhKQorICAgIHsgfQorICAgIEFYVGV4dE1hcmtlcihUZXh0TWFya2VyRGF0YSYmIGRhdGEpCisg
ICAgICAgIDogbV9kYXRhKGRhdGEpCisgICAgeyB9CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAg
QVhUZXh0TWFya2VyKFBsYXRmb3JtVGV4dE1hcmtlckRhdGEpOworI2VuZGlmCisgICAgQVhUZXh0
TWFya2VyKCkgPSBkZWZhdWx0OworCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsgcmV0dXJu
ICFpc051bGwoKTsgfQorICAgIG9wZXJhdG9yIFZpc2libGVQb3NpdGlvbigpIGNvbnN0OworICAg
IG9wZXJhdG9yIENoYXJhY3Rlck9mZnNldCgpIGNvbnN0OworCisjaWYgUExBVEZPUk0oQ09DT0Ep
CisgICAgUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlckRhdGE+IHBsYXRmb3JtRGF0YSgpIGNv
bnN0OworICAgIG9wZXJhdG9yIFBsYXRmb3JtVGV4dE1hcmtlckRhdGEoKSBjb25zdCB7IHJldHVy
biBwbGF0Zm9ybURhdGEoKS5hdXRvcmVsZWFzZSgpOyB9CisjZW5kaWYKKworICAgIEFYSUQgdHJl
ZUlEKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmF4VHJlZUlEKCk7IH0KKyAgICBBWElEIG9iamVj
dElEKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmF4T2JqZWN0SUQoKTsgfQorICAgIEFYQ29yZU9i
amVjdCogb2JqZWN0KCkgY29uc3Q7CisKKy8vICAgIFRleHRNYXJrZXJEYXRhIGNvbnN0JiBkYXRh
KCkgY29uc3QgeyByZXR1cm4gbV9kYXRhOyB9CisgICAgTm9kZSogbm9kZSgpIGNvbnN0IHsgcmV0
dXJuIG1fZGF0YS5ub2RlOyB9CisgICAgYm9vbCBpc0lnbm9yZWQoKSBjb25zdCB7IHJldHVybiBt
X2RhdGEuaWdub3JlZDsgfQorCisjaWYgRU5BQkxFKFRSRUVfREVCVUdHSU5HKQorICAgIFN0cmlu
ZyBkZWJ1Z0Rlc2NyaXB0aW9uKCkgY29uc3Q7CisjZW5kaWYKKworcHJpdmF0ZToKKyAgICBib29s
IGlzTnVsbCgpIGNvbnN0IHsgcmV0dXJuICF0cmVlSUQoKS5pc1ZhbGlkKCkgfHwgIW9iamVjdElE
KCkuaXNWYWxpZCgpOyB9CisgICAgVGV4dE1hcmtlckRhdGEgbV9kYXRhOworfTsKKworY2xhc3Mg
QVhUZXh0TWFya2VyUmFuZ2UgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGlj
OgorICAgIC8vIENvbnN0cnVjdG9ycy4KKyAgICBBWFRleHRNYXJrZXJSYW5nZShjb25zdCBWaXNp
YmxlUG9zaXRpb25SYW5nZSYpOworICAgIEFYVGV4dE1hcmtlclJhbmdlKGNvbnN0IHN0ZDo6b3B0
aW9uYWw8U2ltcGxlUmFuZ2U+Jik7CisgICAgQVhUZXh0TWFya2VyUmFuZ2UoY29uc3QgQVhUZXh0
TWFya2VyJiwgY29uc3QgQVhUZXh0TWFya2VyJik7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIEFY
VGV4dE1hcmtlclJhbmdlKEFYVGV4dE1hcmtlclJhbmdlUmVmKTsKKyNlbmRpZgorICAgIEFYVGV4
dE1hcmtlclJhbmdlKCkgPSBkZWZhdWx0OworCisgICAgb3BlcmF0b3IgYm9vbCgpIGNvbnN0IHsg
cmV0dXJuICFtX3N0YXJ0LmlzTnVsbCgpICYmICFtX2VuZC5pc051bGwoKTsgfQorICAgIG9wZXJh
dG9yIFZpc2libGVQb3NpdGlvblJhbmdlKCkgY29uc3Q7CisgICAgc3RkOjpvcHRpb25hbDxTaW1w
bGVSYW5nZT4gc2ltcGxlUmFuZ2UoKSBjb25zdDsKKworI2lmIFBMQVRGT1JNKE1BQykKKyAgICBS
ZXRhaW5QdHI8QVhUZXh0TWFya2VyUmFuZ2VSZWY+IHBsYXRmb3JtRGF0YSgpIGNvbnN0OworICAg
IG9wZXJhdG9yIEFYVGV4dE1hcmtlclJhbmdlUmVmKCkgY29uc3QgeyByZXR1cm4gcGxhdGZvcm1E
YXRhKCkuYXV0b3JlbGVhc2UoKTsgfQorI2VuZGlmCisKKyAgICBBWFRleHRNYXJrZXIgc3RhcnQo
KSBjb25zdCB7IHJldHVybiBtX3N0YXJ0OyB9CisgICAgQVhUZXh0TWFya2VyIGVuZCgpIGNvbnN0
IHsgcmV0dXJuIG1fZW5kOyB9Citwcml2YXRlOgorICAgIEFYVGV4dE1hcmtlciBtX3N0YXJ0Owor
ICAgIEFYVGV4dE1hcmtlciBtX2VuZDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVlU3RvcmUuaAppbmRleCAzMjFkZWVmYjIy
YTkuLjg3NDQ3MzkxODdlYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWFRyZWVTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhUcmVl
U3RvcmUuaApAQCAtMzYsMTUgKzM2LDE2IEBAIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiBjbGFzcyBB
WFRyZWVTdG9yZSB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQVhUcmVlU3RvcmUpOwogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEFYSUQgdHJlZUlEKCkgY29u
c3QgeyByZXR1cm4gbV9pZDsgfQorICAgIHN0YXRpYyBUKiB0cmVlRm9ySUQoQVhJRCk7CiBwcm90
ZWN0ZWQ6CiAgICAgQVhUcmVlU3RvcmUoKSA9IGRlZmF1bHQ7CiAgICAgc3RhdGljIHZvaWQgYWRk
KEFYSUQsIFdlYWtQdHI8VD4pOwogICAgIHN0YXRpYyB2b2lkIHJlbW92ZShBWElEKTsKICAgICBz
dGF0aWMgYm9vbCBjb250YWlucyhBWElEKTsKIAotICAgIHN0YXRpYyBSZWZQdHI8VD4gdHJlZUZv
cklEKEFYSUQpOwogICAgIHN0YXRpYyBBWElEIGdlbmVyYXRlTmV3SUQoKTsKLQogICAgIGNvbnN0
IEFYSUQgbV9pZCB7IGdlbmVyYXRlTmV3SUQoKSB9OwogICAgIHN0YXRpYyBMb2NrIHNfc3RvcmVM
b2NrOwogcHJpdmF0ZToKQEAgLTczLDcgKzc0LDcgQEAgaW5saW5lIGJvb2wgQVhUcmVlU3RvcmU8
VD46OmNvbnRhaW5zKEFYSUQgYXhJRCkKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KLWlubGlu
ZSBSZWZQdHI8VD4gQVhUcmVlU3RvcmU8VD46OnRyZWVGb3JJRChBWElEIGF4SUQpCitpbmxpbmUg
VCogQVhUcmVlU3RvcmU8VD46OnRyZWVGb3JJRChBWElEIGF4SUQpCiB7CiAgICAgTG9ja2VyIGxv
Y2tlciB7IHNfc3RvcmVMb2NrIH07CiAgICAgcmV0dXJuIG1hcCgpLmdldChheElEKS5nZXQoKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvY29jb2EvQVhUZXh0TWFy
a2VyQ29jb2EubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2NvY29hL0FYVGV4dE1h
cmtlckNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uYjRj
ZWJiMWQ0NTU4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9jb2NvYS9BWFRleHRNYXJrZXJDb2NvYS5tbQpAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuICBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAor
ICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
CisgKiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKKyAqIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCisKKyNpZiBQ
TEFURk9STShNQUMpCisjaW1wb3J0ICJXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5o
IgorI2ltcG9ydCA8cGFsL3NwaS9tYWMvSElTZXJ2aWNlc1NQSS5oPgorI2Vsc2UgLy8gUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKKyNpbXBvcnQgIldlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9T
LmgiCisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitBWFRleHRNYXJrZXI6OkFYVGV4
dE1hcmtlcihQbGF0Zm9ybVRleHRNYXJrZXJEYXRhIHBsYXRmb3JtRGF0YSkKK3sKKyAgICBpZiAo
IXBsYXRmb3JtRGF0YSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgUExBVEZPUk0oTUFDKQorICAg
IEFTU0VSVChDRkdldFR5cGVJRChwbGF0Zm9ybURhdGEpID09IEFYVGV4dE1hcmtlckdldFR5cGVJ
RCgpKTsKKyAgICBpZiAoQ0ZHZXRUeXBlSUQocGxhdGZvcm1EYXRhKSAhPSBBWFRleHRNYXJrZXJH
ZXRUeXBlSUQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgQVNTRVJUKEFYVGV4dE1hcmtlckdl
dExlbmd0aChwbGF0Zm9ybURhdGEpID09IHNpemVvZihtX2RhdGEpKTsKKyAgICBpZiAoQVhUZXh0
TWFya2VyR2V0TGVuZ3RoKHBsYXRmb3JtRGF0YSkgIT0gc2l6ZW9mKG1fZGF0YSkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1lbWNweSgmbV9kYXRhLCBBWFRleHRNYXJrZXJHZXRCeXRlUHRyKHBs
YXRmb3JtRGF0YSksIHNpemVvZihtX2RhdGEpKTsKKyNlbHNlIC8vIFBMQVRGT1JNKElPU19GQU1J
TFkpCisgICAgW3BsYXRmb3JtRGF0YSBnZXRCeXRlczombV9kYXRhIGxlbmd0aDpzaXplb2YobV9k
YXRhKV07CisjZW5kaWYKK30KKworUmV0YWluUHRyPFBsYXRmb3JtVGV4dE1hcmtlckRhdGE+IEFY
VGV4dE1hcmtlcjo6cGxhdGZvcm1EYXRhKCkgY29uc3QKK3sKKyNpZiBQTEFURk9STShNQUMpCisg
ICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQs
IChjb25zdCBVSW50OCopJm1fZGF0YSwgc2l6ZW9mKG1fZGF0YSkpKTsKKyNlbHNlIC8vIFBMQVRG
T1JNKElPU19GQU1JTFkpCisgICAgcmV0dXJuIFtOU0RhdGEgZGF0YVdpdGhCeXRlczombV9kYXRh
IGxlbmd0aDpzaXplb2YobV9kYXRhKV07CisjZW5kaWYKK30KKworI2lmIFBMQVRGT1JNKE1BQykK
K0FYVGV4dE1hcmtlclJhbmdlOjpBWFRleHRNYXJrZXJSYW5nZShBWFRleHRNYXJrZXJSYW5nZVJl
ZiB0ZXh0TWFya2VyUmFuZ2VSZWYpCit7CisgICAgQVNTRVJUKENGR2V0VHlwZUlEKHRleHRNYXJr
ZXJSYW5nZVJlZikgPT0gQVhUZXh0TWFya2VyUmFuZ2VHZXRUeXBlSUQoKSk7CisKKyAgICBhdXRv
IHN0YXJ0ID0gQVhUZXh0TWFya2VyUmFuZ2VDb3B5U3RhcnRNYXJrZXIodGV4dE1hcmtlclJhbmdl
UmVmKTsKKyAgICBhdXRvIGVuZCA9IEFYVGV4dE1hcmtlclJhbmdlQ29weUVuZE1hcmtlcih0ZXh0
TWFya2VyUmFuZ2VSZWYpOworCisgICAgbV9zdGFydCA9IHN0YXJ0OworICAgIG1fZW5kID0gZW5k
OworCisgICAgQ0ZSZWxlYXNlKHN0YXJ0KTsKKyAgICBDRlJlbGVhc2UoZW5kKTsKK30KKworUmV0
YWluUHRyPEFYVGV4dE1hcmtlclJhbmdlUmVmPiBBWFRleHRNYXJrZXJSYW5nZTo6cGxhdGZvcm1E
YXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJSYW5nZUNyZWF0
ZShrQ0ZBbGxvY2F0b3JEZWZhdWx0CisgICAgICAgICwgbV9zdGFydC5wbGF0Zm9ybURhdGEoKS5h
dXRvcmVsZWFzZSgpCisgICAgICAgICwgbV9lbmQucGxhdGZvcm1EYXRhKCkuYXV0b3JlbGVhc2Uo
KQorICAgICkpOworfQorI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKKworfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2Vi
QWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbQppbmRleCBlM2Ey
ZTYxYzZlYjguLjAzODM2Y2YyMzY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJJT1MubW0KQEAgLTE4MSwyOCArMTgxLDIyIEBAICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFy
a2VyICopdGV4dE1hcmtlcldpdGhWaXNpYmxlUG9zaXRpb246KFZpc2libGVQb3NpdGlvbiYpCiAK
ICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopdGV4dE1hcmtlcldpdGhDaGFyYWN0ZXJP
ZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVyT2Zmc2V0IGNhY2hlOihBWE9iamVjdENh
Y2hlKiljYWNoZQogewotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAg
Ci0gICAgaWYgKGNoYXJhY3Rlck9mZnNldC5pc051bGwoKSkKKyAgICBpZiAoIWNhY2hlIHx8IGNo
YXJhY3Rlck9mZnNldC5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBU
ZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFG
b3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNoYXJhY3Rlck9mZnNldCk7Ci0gICAg
aWYgKCF0ZXh0TWFya2VyRGF0YS5heElEICYmICF0ZXh0TWFya2VyRGF0YS5pZ25vcmVkKQorCisg
ICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvckNoYXJhY3Rl
ck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0
SUQgJiYgIXRleHRNYXJrZXJEYXRhLmlnbm9yZWQpCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAg
cmV0dXJuIGFkb3B0TlMoW1tXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciBhbGxvY10gaW5pdFdp
dGhUZXh0TWFya2VyOiZ0ZXh0TWFya2VyRGF0YSBjYWNoZTpjYWNoZV0pLmF1dG9yZWxlYXNlKCk7
CiB9CiAKICsgKFdlYkFjY2Vzc2liaWxpdHlUZXh0TWFya2VyICopc3RhcnRPckVuZFRleHRNYXJr
ZXJGb3JSYW5nZTooY29uc3Qgc3RkOjpvcHRpb25hbDxTaW1wbGVSYW5nZT4mKXJhbmdlIGlzU3Rh
cnQ6KEJPT0wpaXNTdGFydCBjYWNoZTooQVhPYmplY3RDYWNoZSopY2FjaGUKIHsKLSAgICBpZiAo
IWNhY2hlKQotICAgICAgICByZXR1cm4gbmlsOwotICAgIGlmICghcmFuZ2UpCisgICAgaWYgKCFj
YWNoZSB8fCAhcmFuZ2UpCiAgICAgICAgIHJldHVybiBuaWw7Ci0gICAgVGV4dE1hcmtlckRhdGEg
dGV4dE1hcmtlckRhdGE7Ci0gICAgY2FjaGUtPnN0YXJ0T3JFbmRUZXh0TWFya2VyRGF0YUZvclJh
bmdlKHRleHRNYXJrZXJEYXRhLCAqcmFuZ2UsIGlzU3RhcnQpOwotICAgIGlmICghdGV4dE1hcmtl
ckRhdGEuYXhJRCkKKworICAgIGF1dG8gdGV4dE1hcmtlckRhdGEgPSBjYWNoZS0+c3RhcnRPckVu
ZFRleHRNYXJrZXJEYXRhRm9yUmFuZ2UoKnJhbmdlLCBpc1N0YXJ0KTsKKyAgICBpZiAoIXRleHRN
YXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtl
cjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQpAQCAtMjY3
MywyNiArMjY2NywyNCBAQCAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciAqKXRleHRNYXJr
ZXJGb3JQb2ludDooQ0dQb2ludClwb2ludAogCiAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4dE1hcmtl
ciAqKW5leHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFj
dGVyT2Zmc2V0CiB7Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBzZWxmLmF4QmFja2luZ09i
amVjdC0+YXhPYmplY3RDYWNoZSgpOworICAgIGF1dG8qIGNhY2hlID0gc2VsZi5heEJhY2tpbmdP
YmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm4g
bmlsOwotICAgIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAgIGNhY2hl
LT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNo
YXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEKQorCisgICAgYXV0
byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFya2VyRGF0YUZvck5leHRDaGFyYWN0ZXJP
ZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXRleHRNYXJrZXJEYXRhLm9iamVjdElE
KQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9wdE5TKFtbV2ViQWNjZXNzaWJp
bGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtlcjomdGV4dE1hcmtlckRhdGEg
Y2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQogCiAtIChXZWJBY2Nlc3NpYmlsaXR5VGV4
dE1hcmtlciAqKXByZXZpb3VzTWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJPZmZz
ZXQmKWNoYXJhY3Rlck9mZnNldAogewotICAgIEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gc2VsZi5h
eEJhY2tpbmdPYmplY3QtPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBhdXRvKiBjYWNoZSA9IHNlbGYu
YXhCYWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCk7CiAgICAgaWYgKCFjYWNoZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsK
LSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQpCisKKyAgICBhdXRvIHRleHRNYXJrZXJEYXRhID0gY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9y
UHJldmlvdXNDaGFyYWN0ZXJPZmZzZXQoY2hhcmFjdGVyT2Zmc2V0KTsKKyAgICBpZiAoIXRleHRN
YXJrZXJEYXRhLm9iamVjdElEKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIHJldHVybiBhZG9w
dE5TKFtbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgYWxsb2NdIGluaXRXaXRoVGV4dE1hcmtl
cjomdGV4dE1hcmtlckRhdGEgY2FjaGU6Y2FjaGVdKS5hdXRvcmVsZWFzZSgpOwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5t
bSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0K
aW5kZXggN2I5MmRiYTNhNGE3Li4xNWViZjM1NDlkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbQpAQCAtODIxLDExICs4
MjEsOSBAQCBBWFRleHRNYXJrZXJSZWYgdGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9i
amVjdENhY2hlKiBjYWNoZSwgY29uc3QgQ2hhcmFjdAogICAgIGlmICghY2FjaGUpCiAgICAgICAg
IHJldHVybiBuaWw7CiAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2VyRGF0YTsKLSAgICBj
YWNoZS0+dGV4dE1hcmtlckRhdGFGb3JDaGFyYWN0ZXJPZmZzZXQodGV4dE1hcmtlckRhdGEsIGNo
YXJhY3Rlck9mZnNldCk7Ci0gICAgaWYgKCF0ZXh0TWFya2VyRGF0YS5heElEIHx8IHRleHRNYXJr
ZXJEYXRhLmlnbm9yZWQpCisgICAgYXV0byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT50ZXh0TWFy
a2VyRGF0YUZvckNoYXJhY3Rlck9mZnNldChjaGFyYWN0ZXJPZmZzZXQpOworICAgIGlmICghdGV4
dE1hcmtlckRhdGEub2JqZWN0SUQgfHwgdGV4dE1hcmtlckRhdGEuaWdub3JlZCkKICAgICAgICAg
cmV0dXJuIG5pbDsKLQogICAgIHJldHVybiBhZG9wdENGKEFYVGV4dE1hcmtlckNyZWF0ZShrQ0ZB
bGxvY2F0b3JEZWZhdWx0LCAoY29uc3QgVUludDgqKSZ0ZXh0TWFya2VyRGF0YSwgc2l6ZW9mKHRl
eHRNYXJrZXJEYXRhKSkpLmF1dG9yZWxlYXNlKCk7CiB9CiAKQEAgLTg0NywxMSArODQ1LDkgQEAg
QVhUZXh0TWFya2VyUmVmIHN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoQVhPYmplY3RDYWNo
ZSogY2FjaGUsIGNvbnN0IHN0ZDo6b3AKICAgICBpZiAoIWNhY2hlIHx8ICFyYW5nZSkKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIFRleHRNYXJrZXJEYXRhIHRleHRNYXJrZXJEYXRhOwotICAg
IGNhY2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5nZSh0ZXh0TWFya2VyRGF0YSwg
KnJhbmdlLCBpc1N0YXJ0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4SUQpCisgICAgYXV0
byB0ZXh0TWFya2VyRGF0YSA9IGNhY2hlLT5zdGFydE9yRW5kVGV4dE1hcmtlckRhdGFGb3JSYW5n
ZSgqcmFuZ2UsIGlzU3RhcnQpOworICAgIGlmICghdGV4dE1hcmtlckRhdGEub2JqZWN0SUQpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0KICAgICByZXR1cm4gYWRvcHRDRihBWFRleHRNYXJrZXJDcmVh
dGUoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKGNvbnN0IFVJbnQ4KikmdGV4dE1hcmtlckRhdGEsIHNp
emVvZih0ZXh0TWFya2VyRGF0YSkpKS5hdXRvcmVsZWFzZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDQyMzRjZDY5ZjkxOS4uMDVjNjU3MTM2ODM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpAQCAtMzMsNiArMzMs
NyBAQAogCiAjaW1wb3J0ICJBWExvZ2dlci5oIgogI2ltcG9ydCAiQVhPYmplY3RDYWNoZS5oIgor
I2ltcG9ydCAiQVhUZXh0TWFya2VyLmgiCiAjaW1wb3J0ICJBY2Nlc3NpYmlsaXR5QVJJQUdyaWRS
b3cuaCIKICNpbXBvcnQgIkFjY2Vzc2liaWxpdHlMYWJlbC5oIgogI2ltcG9ydCAiQWNjZXNzaWJp
bGl0eUxpc3QuaCIKQEAgLTcxNywzOCArNzE4LDIyIEBAIHN0YXRpYyBzdGQ6OnBhaXI8c3RkOjpv
cHRpb25hbDxTaW1wbGVSYW5nZT4sIEFjY2Vzc2liaWxpdHlTZWFyY2hEaXJlY3Rpb24+IGFjY2Vz
CiAKICNwcmFnbWEgbWFyayBUZXh0IE1hcmtlciBoZWxwZXJzCiAKLXN0YXRpYyBSZXRhaW5QdHI8
QVhUZXh0TWFya2VyUmVmPiBuZXh0VGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNldChBWE9iamVj
dENhY2hlKiBjYWNoZSwgQ2hhcmFjdGVyT2Zmc2V0JiBjaGFyYWN0ZXJPZmZzZXQpCitzdGF0aWMg
UmV0YWluUHRyPEFYVGV4dE1hcmtlclJlZj4gbmV4dFRleHRNYXJrZXIoQVhPYmplY3RDYWNoZSog
Y2FjaGUsIGNvbnN0IEFYVGV4dE1hcmtlciYgbWFya2VyKQogewogICAgIGlmICghY2FjaGUpCiAg
ICAgICAgIHJldHVybiBuaWw7Ci0gICAgCi0gICAgVGV4dE1hcmtlckRhdGEgdGV4dE1hcmtlckRh
dGE7Ci0gICAgY2FjaGUtPnRleHRNYXJrZXJEYXRhRm9yTmV4dENoYXJhY3Rlck9mZnNldCh0ZXh0
TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJEYXRhLmF4
SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0TWFya2Vy
Q3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJrZXJEYXRh
LCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7CisKKyAgICBhdXRvIG5leHRNYXJrZXIgPSBjYWNo
ZS0+bmV4dFRleHRNYXJrZXIobWFya2VyKTsKKyAgICByZXR1cm4gbmV4dE1hcmtlciA/IG5leHRN
YXJrZXIucGxhdGZvcm1EYXRhKCkgOiBuaWw7CiB9CiAKLXN0YXRpYyBSZXRhaW5QdHI8QVhUZXh0
TWFya2VyUmVmPiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQoQVhPYmplY3RD
YWNoZSogY2FjaGUsIENoYXJhY3Rlck9mZnNldCYgY2hhcmFjdGVyT2Zmc2V0KQorc3RhdGljIFJl
dGFpblB0cjxBWFRleHRNYXJrZXJSZWY+IHByZXZpb3VzVGV4dE1hcmtlcihBWE9iamVjdENhY2hl
KiBjYWNoZSwgY29uc3QgQVhUZXh0TWFya2VyJiBtYXJrZXIpCiB7CiAgICAgaWYgKCFjYWNoZSkK
ICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAKLSAgICBUZXh0TWFya2VyRGF0YSB0ZXh0TWFya2Vy
RGF0YTsKLSAgICBjYWNoZS0+dGV4dE1hcmtlckRhdGFGb3JQcmV2aW91c0NoYXJhY3Rlck9mZnNl
dCh0ZXh0TWFya2VyRGF0YSwgY2hhcmFjdGVyT2Zmc2V0KTsKLSAgICBpZiAoIXRleHRNYXJrZXJE
YXRhLmF4SUQpCi0gICAgICAgIHJldHVybiBuaWw7Ci0gICAgcmV0dXJuIGFkb3B0Q0YoQVhUZXh0
TWFya2VyQ3JlYXRlKGtDRkFsbG9jYXRvckRlZmF1bHQsIChjb25zdCBVSW50OCopJnRleHRNYXJr
ZXJEYXRhLCBzaXplb2YodGV4dE1hcmtlckRhdGEpKSk7Ci19Ci0KLS0gKFJldGFpblB0cjxBWFRl
eHRNYXJrZXJSZWY+KW5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zmc2V0OihDaGFyYWN0ZXJP
ZmZzZXQmKWNoYXJhY3Rlck9mZnNldAotewotICAgIHJldHVybiBuZXh0VGV4dE1hcmtlckZvckNo
YXJhY3Rlck9mZnNldChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFy
YWN0ZXJPZmZzZXQpOwotfQogCi0tIChSZXRhaW5QdHI8QVhUZXh0TWFya2VyUmVmPilwcmV2aW91
c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJPZmZzZXQ6KENoYXJhY3Rlck9mZnNldCYpY2hhcmFjdGVy
T2Zmc2V0Ci17Ci0gICAgcmV0dXJuIHByZXZpb3VzVGV4dE1hcmtlckZvckNoYXJhY3Rlck9mZnNl
dChzZWxmLmF4QmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCBjaGFyYWN0ZXJPZmZzZXQp
OworICAgIGF1dG8gcHJldmlvdXNNYXJrZXIgPSBjYWNoZS0+cHJldmlvdXNUZXh0TWFya2VyKG1h
cmtlcik7CisgICAgcmV0dXJuIHByZXZpb3VzTWFya2VyID8gcHJldmlvdXNNYXJrZXIucGxhdGZv
cm1EYXRhKCkgOiBuaWw7CiB9CiAKIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBtZXRob2Qgc2luY2Ug
Y2xpZW50cyBzaG91bGQgbm90IG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZCBhbmQgc2hvdWxkIG5v
dCBiZSBleHBvc2VkIGluIHRoZSBwdWJsaWMgaW50ZXJmYWNlLgpAQCAtMzM3NCwyNCArMzM1OSwy
NCBAQCAtIChBWFRleHRNYXJrZXJSYW5nZVJlZilsaW5lVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1h
cmtlcjooQVhUZXh0TWFya2VyUmVmKXRleHRNYQogICAgICAgICBpZiAoIWNhY2hlKQogICAgICAg
ICAgICAgcmV0dXJuIG5pbDsKIAotICAgICAgICBhdXRvIHZpc2libGVQb3NpdGlvbiA9IHZpc2li
bGVQb3NpdGlvbkZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOworICAgICAgICBBWFRl
eHRNYXJrZXIgbWFya2VyKHRleHRNYXJrZXIpOwogICAgICAgICBWaXNpYmxlUG9zaXRpb25SYW5n
ZSB2aXNpYmxlUG9zaXRpb25SYW5nZTsKICAgICAgICAgc3dpdGNoICh0ZXh0VW5pdCkgewogICAg
ICAgICBjYXNlIFRleHRVbml0OjpMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFu
Z2UgPSBiYWNraW5nT2JqZWN0LT5saW5lUmFuZ2VGb3JQb3NpdGlvbih2aXNpYmxlUG9zaXRpb24p
OworICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2UgPSBiYWNraW5nT2JqZWN0LT5saW5l
UmFuZ2VGb3JQb3NpdGlvbihtYXJrZXIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgVGV4dFVuaXQ6OkxlZnRMaW5lOgotICAgICAgICAgICAgdmlzaWJsZVBvc2l0aW9uUmFuZ2Ug
PSBiYWNraW5nT2JqZWN0LT5sZWZ0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKHZpc2libGVQb3Np
dGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3Qt
PmxlZnRMaW5lVmlzaWJsZVBvc2l0aW9uUmFuZ2UobWFya2VyKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIFRleHRVbml0OjpSaWdodExpbmU6Ci0gICAgICAgICAgICB2aXNpYmxl
UG9zaXRpb25SYW5nZSA9IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJh
bmdlKHZpc2libGVQb3NpdGlvbik7CisgICAgICAgICAgICB2aXNpYmxlUG9zaXRpb25SYW5nZSA9
IGJhY2tpbmdPYmplY3QtPnJpZ2h0TGluZVZpc2libGVQb3NpdGlvblJhbmdlKG1hcmtlcik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAotICAgICAgICBy
ZXR1cm4gdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnMoY2FjaGUsIHZpc2libGVQ
b3NpdGlvblJhbmdlLnN0YXJ0LCB2aXNpYmxlUG9zaXRpb25SYW5nZS5lbmQpOworICAgICAgICBy
ZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UodmlzaWJsZVBvc2l0aW9uUmFuZ2UpLnBsYXRmb3JtRGF0
YSgpOwogICAgIH0pOwogfQogCkBAIC0zNjg1LDI1ICszNjcwLDIzIEBAIEFMTE9XX0RFUFJFQ0FU
RURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAgICByZXR1cm4gKGlkKVtzZWxmIF90ZXh0TWFy
a2VyRm9ySW5kZXg6W251bWJlciBpbnRlZ2VyVmFsdWVdXTsKIAogICAgIGlmIChbYXR0cmlidXRl
IGlzRXF1YWxUb1N0cmluZzpAIkFYVUlFbGVtZW50Rm9yVGV4dE1hcmtlciJdKSB7Ci0gICAgICAg
IHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5U
aHJlYWQ8aWQ+KFsmdGV4dE1hcmtlciwgcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihzZWxmKV0g
KCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICBhdXRvKiBiYWNraW5nT2JqZWN0ID0g
cHJvdGVjdGVkU2VsZi5nZXQoKS5heEJhY2tpbmdPYmplY3Q7Ci0gICAgICAgICAgICBpZiAoIWJh
Y2tpbmdPYmplY3QpCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKLQotICAgICAgICAgICAg
YXV0byogYXhPYmplY3QgPSBhY2Nlc3NpYmlsaXR5T2JqZWN0Rm9yVGV4dE1hcmtlcihiYWNraW5n
T2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXIpOwotICAgICAgICAgICAgaWYgKCFh
eE9iamVjdCkKLSAgICAgICAgICAgICAgICByZXR1cm4gbmlsOworICAgICAgICBBWFRleHRNYXJr
ZXIgbWFya2VyKHRleHRNYXJrZXIpOworICAgICAgICBhdXRvKiBvYmplY3QgPSBtYXJrZXIub2Jq
ZWN0KCk7CisgICAgICAgIGlmICghb2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAot
ICAgICAgICAgICAgaWYgKGF4T2JqZWN0LT5pc0F0dGFjaG1lbnQoKSAmJiBbYXhPYmplY3QtPndy
YXBwZXIoKSBhdHRhY2htZW50Vmlld10pCi0gICAgICAgICAgICAgICAgcmV0dXJuIFtheE9iamVj
dC0+d3JhcHBlcigpIGF0dGFjaG1lbnRWaWV3XTsKKyAgICAgICAgYXV0byogd3JhcHBlciA9IG9i
amVjdC0+d3JhcHBlcigpOworICAgICAgICBpZiAoIXdyYXBwZXIpCisgICAgICAgICAgICByZXR1
cm4gbmlsOwogCi0gICAgICAgICAgICByZXR1cm4gYXhPYmplY3QtPndyYXBwZXIoKTsKLSAgICAg
ICAgfSk7CisgICAgICAgIGlmIChpZCBhdHRhY2htZW50VmlldyA9IHdyYXBwZXIuYXR0YWNobWVu
dFZpZXcpCisgICAgICAgICAgICByZXR1cm4gYXR0YWNobWVudFZpZXc7CisgICAgICAgIHJldHVy
biB3cmFwcGVyOwogICAgIH0KIAogICAgIGlmIChbYXR0cmlidXRlIGlzRXF1YWxUb1N0cmluZzpA
IkFYVGV4dE1hcmtlclJhbmdlRm9yVUlFbGVtZW50Il0pIHsKICAgICAgICAgcmV0dXJuIEFjY2Vz
c2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ1
aUVsZW1lbnRdICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAgcmV0dXJuIChpZCl0
ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50LmdldCgpLT5heE9iamVjdENhY2hlKCks
IHVpRWxlbWVudC5nZXQoKS0+ZWxlbWVudFJhbmdlKCkpOworICAgICAgICAgICAgcmV0dXJuIChp
ZCl0ZXh0TWFya2VyUmFuZ2VGcm9tUmFuZ2UodWlFbGVtZW50LT5heE9iamVjdENhY2hlKCksIHVp
RWxlbWVudC0+ZWxlbWVudFJhbmdlKCkpOwogICAgICAgICB9KTsKICAgICB9CiAKQEAgLTM3NTQs
NyArMzczNyw3IEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgICAg
ICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAK
LSAgICAgICAgICAgIHJldHVybiAoaWQpdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihiYWNr
aW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIGJhY2tpbmdPYmplY3QtPnZpc2libGVQb3NpdGlv
bkZvclBvaW50KHdlYkNvcmVQb2ludCkpOworICAgICAgICAgICAgcmV0dXJuIEFYVGV4dE1hcmtl
cihiYWNraW5nT2JqZWN0LT52aXNpYmxlUG9zaXRpb25Gb3JQb2ludCh3ZWJDb3JlUG9pbnQpKS5w
bGF0Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0K
IApAQCAtMzg0Myw5ICszODI2LDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNf
RU5ECiAgICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9iamVjdEF0
SW5kZXg6MF0pCiAgICAgICAgICAgICB8fCAhQVhPYmplY3RJc1RleHRNYXJrZXIoW2FycmF5IG9i
amVjdEF0SW5kZXg6MV0pKQogICAgICAgICAgICAgcmV0dXJuIG5pbDsKLSAgICAgICAgcmV0dXJu
IEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2VkVmFsdWVGcm9tTWFpblRocmVhZDxp
ZD4oWyZhcnJheV0gKCkgLT4gUmV0YWluUHRyPGlkPiB7Ci0gICAgICAgICAgICByZXR1cm4gKGlk
KXRleHRNYXJrZXJSYW5nZUZyb21NYXJrZXJzKChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVj
dEF0SW5kZXg6MF0sIChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MV0pLmdl
dCgpOwotICAgICAgICB9KTsKKworICAgICAgICByZXR1cm4gQVhUZXh0TWFya2VyUmFuZ2UgeyB7
IChBWFRleHRNYXJrZXJSZWYpW2FycmF5IG9iamVjdEF0SW5kZXg6MF0gfSwgeyAoQVhUZXh0TWFy
a2VyUmVmKVthcnJheSBvYmplY3RBdEluZGV4OjFdIH0gfS5wbGF0Zm9ybURhdGEoKS5icmlkZ2lu
Z0F1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRyaWJ1dGUgaXNFcXVhbFRvU3Ry
aW5nOkAiQVhUZXh0TWFya2VyUmFuZ2VGb3JVbm9yZGVyZWRUZXh0TWFya2VycyJdKSB7CkBAIC0z
ODg0LDggKzM4NjYsOCBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19FTkQKICAg
ICAgICAgICAgIGlmICghY2FjaGUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
ICAgICAgICAgQ2hhcmFjdGVyT2Zmc2V0IGNoYXJhY3Rlck9mZnNldCA9IGNoYXJhY3Rlck9mZnNl
dEZvclRleHRNYXJrZXIoY2FjaGUsIHRleHRNYXJrZXIpOwotICAgICAgICAgICAgcmV0dXJuIGJy
aWRnZV9pZF9jYXN0KFtwcm90ZWN0ZWRTZWxmIG5leHRUZXh0TWFya2VyRm9yQ2hhcmFjdGVyT2Zm
c2V0OmNoYXJhY3Rlck9mZnNldF0pOworICAgICAgICAgICAgQVhUZXh0TWFya2VyIG1hcmtlcih0
ZXh0TWFya2VyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXh0VGV4dE1hcmtlcihjYWNoZSwgbWFy
a2VyKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApAQCAtMzg5
OSw4ICszODgxLDggQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElPTlNfRU5ECiAgICAg
ICAgICAgICBpZiAoIWNhY2hlKQogICAgICAgICAgICAgICAgIHJldHVybiBuaWw7CiAKLSAgICAg
ICAgICAgIENoYXJhY3Rlck9mZnNldCBjaGFyYWN0ZXJPZmZzZXQgPSBjaGFyYWN0ZXJPZmZzZXRG
b3JUZXh0TWFya2VyKGNhY2hlLCB0ZXh0TWFya2VyKTsKLSAgICAgICAgICAgIHJldHVybiBicmlk
Z2VfaWRfY2FzdChbcHJvdGVjdGVkU2VsZiBwcmV2aW91c1RleHRNYXJrZXJGb3JDaGFyYWN0ZXJP
ZmZzZXQ6Y2hhcmFjdGVyT2Zmc2V0XSk7CisgICAgICAgICAgICBBWFRleHRNYXJrZXIgbWFya2Vy
KHRleHRNYXJrZXIpOworICAgICAgICAgICAgcmV0dXJuIHByZXZpb3VzVGV4dE1hcmtlcihjYWNo
ZSwgbWFya2VyKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgICAgIH0pOwogICAgIH0KIApA
QCAtMzk4MSwyNiArMzk2MywxMyBAQCBBTExPV19ERVBSRUNBVEVEX0lNUExFTUVOVEFUSU9OU19F
TkQKIAogICAgIC8vIFVzZWQgb25seSBieSBEdW1wUmVuZGVyVHJlZSAoc28gZmFyKS4KICAgICBp
ZiAoW2F0dHJpYnV0ZSBpc0VxdWFsVG9TdHJpbmc6QCJBWFN0YXJ0VGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZSJdKSB7Ci0gICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1
dG9yZWxlYXNlZFZhbHVlRnJvbU1haW5UaHJlYWQ8aWQ+KFsmdGV4dE1hcmtlclJhbmdlLCBwcm90
ZWN0ZWRTZWxmID0gcmV0YWluUHRyKHNlbGYpXSAoKSAtPiBSZXRhaW5QdHI8aWQ+IHsKLSAgICAg
ICAgICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBwcm90ZWN0ZWRTZWxmLmdldCgpLmF4QmFja2lu
Z09iamVjdDsKLSAgICAgICAgICAgIGlmICghYmFja2luZ09iamVjdCkKLSAgICAgICAgICAgICAg
ICByZXR1cm4gbmlsOwotCi0gICAgICAgICAgICBhdXRvIHJhbmdlID0gcmFuZ2VGb3JUZXh0TWFy
a2VyUmFuZ2UoYmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCB0ZXh0TWFya2VyUmFuZ2Up
OwotCi0gICAgICAgICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2Uo
YmFja2luZ09iamVjdC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwgdHJ1ZSk7Ci0gICAgICAgIH0p
OworICAgICAgICBBWFRleHRNYXJrZXJSYW5nZSBheFRleHRNYXJrZXJSYW5nZSB7IHRleHRNYXJr
ZXJSYW5nZSB9OworICAgICAgICByZXR1cm4gYXhUZXh0TWFya2VyUmFuZ2Uuc3RhcnQoKS5wbGF0
Zm9ybURhdGEoKS5icmlkZ2luZ0F1dG9yZWxlYXNlKCk7CiAgICAgfQogCiAgICAgaWYgKFthdHRy
aWJ1dGUgaXNFcXVhbFRvU3RyaW5nOkAiQVhFbmRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdl
Il0pIHsKLSAgICAgICAgcmV0dXJuIEFjY2Vzc2liaWxpdHk6OnJldHJpZXZlQXV0b3JlbGVhc2Vk
VmFsdWVGcm9tTWFpblRocmVhZDxpZD4oWyZ0ZXh0TWFya2VyUmFuZ2UsIHByb3RlY3RlZFNlbGYg
PSByZXRhaW5QdHIoc2VsZildICgpIC0+IFJldGFpblB0cjxpZD4gewotICAgICAgICAgICAgYXV0
byogYmFja2luZ09iamVjdCA9IHByb3RlY3RlZFNlbGYuZ2V0KCkuYXhCYWNraW5nT2JqZWN0Owot
ICAgICAgICAgICAgaWYgKCFiYWNraW5nT2JqZWN0KQotICAgICAgICAgICAgICAgIHJldHVybiBu
aWw7Ci0KLSAgICAgICAgICAgIGF1dG8gcmFuZ2UgPSByYW5nZUZvclRleHRNYXJrZXJSYW5nZShi
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCksIHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAg
ICAgICByZXR1cm4gKGlkKXN0YXJ0T3JFbmRUZXh0TWFya2VyRm9yUmFuZ2UoYmFja2luZ09iamVj
dC0+YXhPYmplY3RDYWNoZSgpLCByYW5nZSwgZmFsc2UpOwotICAgICAgICB9KTsKKyAgICAgICAg
QVhUZXh0TWFya2VyUmFuZ2UgYXhUZXh0TWFya2VyUmFuZ2UgeyB0ZXh0TWFya2VyUmFuZ2UgfTsK
KyAgICAgICAgcmV0dXJuIGF4VGV4dE1hcmtlclJhbmdlLmVuZCgpLnBsYXRmb3JtRGF0YSgpLmJy
aWRnaW5nQXV0b3JlbGVhc2UoKTsKICAgICB9CiAKICNpZiBFTkFCTEUoVFJFRV9ERUJVR0dJTkcp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10
ZXh0LW1hcmtlci1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9l
bGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKaW5kZXggNWQzM2RhY2IyZDNmLi41
MDQ2MDI1OGZjMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Vs
ZW1lbnQtZm9yLXRleHQtbWFya2VyLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L21hYy9lbGVtZW50LWZvci10ZXh0LW1hcmtlci1leHBlY3RlZC50eHQKQEAgLTEs
MTcgKzEsMTQgQEAKLXRleHQgaGVyZQotdGV4dCBibG9jawotdGV4dCBoZXJlCiBUaGlzIHRlc3Rz
IHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3QgZWxlbWVudCB3
aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNl
cmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQor
UEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgocmFuZ2UpID09PSAxMAorUEFTUzogdGV4
dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpLmlzRXF1YWwodGV4dCkg
PT09IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVu
ZCkuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5n
dGgobmV3UmFuZ2UpID09PSAxMAorUEFTUzogbmV3UmFuZ2UuaXNFcXVhbChyYW5nZSkgPT09IHRy
dWUKIAotUEFTUyB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UxKSBp
cyAxMAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1h
cmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1l
bnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld01hcmtlclJhbmdlKSBpcyAxMAotUEFTUyBuZXdN
YXJrZXJSYW5nZS5pc0VxdWFsKHRleHRNYXJrZXJSYW5nZTEpIGlzIHRydWUKIFBBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQotCit0ZXh0IGhlcmUKK3RleHQg
YmxvY2sKK3RleHQgaGVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL2VsZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwKaW5kZXggZDQ5MzZhZDIyZDE4Li4z
NDBhYjFlMTk4MGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL2Vs
ZW1lbnQtZm9yLXRleHQtbWFya2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvZWxlbWVudC1mb3ItdGV4dC1tYXJrZXIuaHRtbApAQCAtMSw1MSArMSw0MiBAQAogPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgogPGh0bWw+CiA8aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvYWNjZXNzaWJpbGl0eS1oZWxwZXIuanMiPjwvc2Ny
aXB0PgogPC9oZWFkPgotPGJvZHkgaWQ9ImJvZHkiPgorPGJvZHk+CiAKIHRleHQgaGVyZQotPGRp
diBpZD0idGV4dDEiIHRhYmluZGV4PSIwIj50ZXh0IGJsb2NrPC9kaXY+Cis8ZGl2IGlkPSJ0ZXh0
MSI+dGV4dCBibG9jazwvZGl2PgogdGV4dCBoZXJlCiAKLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KIDxzY3JpcHQ+Ci0KLSAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0cyB0aGUgdGV4dCBtYXJrZXIgc3lzdGVtIHdpbGwgcmV0dXJuIHRoZSBjb3Jy
ZWN0IGVsZW1lbnQgd2hlbiBnaXZlbiBhIHRleHQgbWFya2VyLiIpOwotCiAgICAgaWYgKHdpbmRv
dy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBsZXQgdGVzdE91dHB1dCA9ICJU
aGlzIHRlc3RzIHRoZSB0ZXh0IG1hcmtlciBzeXN0ZW0gd2lsbCByZXR1cm4gdGhlIGNvcnJlY3Qg
ZWxlbWVudCB3aGVuIGdpdmVuIGEgdGV4dCBtYXJrZXIuXG5cbiI7CiAKLSAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGV4dDEiKS5mb2N1cygpOwotICAgICAgICAgIHZhciB0ZXh0
ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1lbnQ7CisgICAgICAgIHZhciB0
ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0
MSIpLmNoaWxkQXRJbmRleCgwKTsKIAotICAgICAgICAgIC8vIEdldCB0aGUgYWN0dWFsIHRleHQg
bm9kZS4KLSAgICAgICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7CisgICAgICAgIC8v
IENoZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQgbWFya2VyIGZvciB0aGlzIGVsZW1lbnQn
cyByYW5nZS4KKyAgICAgICAgdmFyIHJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KHRleHQpOworICAgICAgICB0ZXN0T3V0cHV0ICs9IGV4cGVjdCgidGV4dC50ZXh0TWFya2Vy
UmFuZ2VMZW5ndGgocmFuZ2UpIiwgIjEwIik7CisgICAgICAgIHZhciBzdGFydCA9IHRleHQuc3Rh
cnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHJhbmdlKTsKIAotICAgICAgICAgIC8vIENo
ZWNrIHRoYXQgd2UgY2FuIGdldCB0aGUgc3RhcnQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgotICAg
ICAgICAgIHZhciB0ZXh0TWFya2VyUmFuZ2UxID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVt
ZW50KHRleHQpOwotICAgICAgICAgIHNob3VsZEJlKCJ0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aCh0ZXh0TWFya2VyUmFuZ2UxKSIsICIxMCIpOwotICAgICAgICAgIHZhciBzdGFydE1hcmtlciA9
IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZTEp
OworICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBzdGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRo
ZSBzYW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFydGVkIHdpdGguCisgICAgICAgIHRlc3RPdXRwdXQg
Kz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCku
aXNFcXVhbCh0ZXh0KSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBDaGVjayB0aGF0IHRoZSBz
dGFydCBtYXJrZXIgd2lsbCBnaXZlIHVzIHRoZSBzYW1lIGVsZW1lbnQgdGhhdCB3ZSBzdGFydGVk
IHdpdGguCi0gICAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50
Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOworICAgICAgICAvLyBH
ZXQgdGhlIGVuZCBtYXJrZXIgYW5kIGNoZWNrIHRoYXQgaXQgZ2l2ZXMgdXMgdGhlIHNhbWUgZWxl
bWVudC4KKyAgICAgICAgdmFyIGVuZCA9IHRleHQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJS
YW5nZShyYW5nZSk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmQpLmlzRXF1YWwodGV4dCkiLCAidHJ1ZSIpOwog
Ci0gICAgICAgICAgLy8gR2V0IHRoZSBlbmQgbWFya2VyIGFuZCBjaGVjayB0aGF0IGl0IGdpdmVz
IHVzIHRoZSBzYW1lIGVsZW1lbnQuCi0gICAgICAgICAgdmFyIGVuZE1hcmtlciA9IHRleHQuZW5k
VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UxKTsKLSAgICAgICAg
ICBzaG91bGRCZVRydWUoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVu
ZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSIpOworICAgICAgICAvLyBNYWtlIGEgbWFya2VyIHJhbmdl
IG91dCBvZiB0aGUgc3RhcnQgYW5kIGVuZCBtYXJrZXJzIGFuZCBjaGVjayB0aGUgbGVuZ3RoLgor
ICAgICAgICB2YXIgbmV3UmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3Rh
cnQsIGVuZCk7CisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRNYXJrZXJS
YW5nZUxlbmd0aChuZXdSYW5nZSkiLCAiMTAiKTsKIAotICAgICAgICAgIC8vIE1ha2UgYSBtYXJr
ZXIgcmFuZ2Ugb3V0IG9mIHRoZSBzdGFydCBhbmQgZW5kIG1hcmtlcnMgYW5kIGNoZWNrIHRoZSBs
ZW5ndGgKLSAgICAgICAgICB2YXIgbmV3TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5n
ZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGVuZE1hcmtlcik7Ci0gICAgICAgICAgc2hvdWxkQmUo
InRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKG5ld01hcmtlclJhbmdlKSIsICIxMCIpOworICAg
ICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVxdWFscyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ugd2Ug
c3RhcnRlZCB3aXRoCisgICAgICAgIHRlc3RPdXRwdXQgKz0gZXhwZWN0KCJuZXdSYW5nZS5pc0Vx
dWFsKHJhbmdlKSIsICJ0cnVlIik7CiAKLSAgICAgICAgICAvLyBBbmQgbWFrZSBzdXJlIGl0IGVx
dWFscyB0aGUgc2FtZSBtYXJrZXIgcmFuZ2Ugd2Ugc3RhcnRlZCB3aXRoCi0gICAgICAgICAgc2hv
dWxkQmVUcnVlKCJuZXdNYXJrZXJSYW5nZS5pc0VxdWFsKHRleHRNYXJrZXJSYW5nZTEpIik7Cisg
ICAgICAgIGRlYnVnKHRlc3RPdXRwdXQpOwogICAgIH0KLQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQg
c3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4K
IDwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJj
aC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVu
dC1leHBlY3RlZC50eHQKaW5kZXggMDJjNTc2NThhNTZmLi44ZmM1ZmQ3MjQ4YjEgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1p
Z25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3NlYXJjaC1wcmVkaWNhdGUtZnJvbS1pZ25vcmVkLWVsZW1lbnQtZXhwZWN0ZWQudHh0
CkBAIC0xLDE2ICsxLDEzIEBACi1GaXJzdCBsaW5lIG9mIHRleHQKLWJ1dHRvbgotVGhpcmQgbGlu
ZSBvZiB0ZXh0CiBUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBmb3IgYWNjZXNzaWJs
ZSBlbGVtZW50cyBmcm9tIGFuIGlnbm9yZWQgZWxlbWVudC4KIAotT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorUEFTUzogZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpID09
PSAnRmlyc3QgbGluZSBvZiB0ZXh0JworUEFTUzogZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UocmFuZ2UpID09PSAnYnV0dG9uJworUEFTUzogcmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1
ZSA9PT0gJ0FYVmFsdWU6IFRoaXJkIGxpbmUgb2YgdGV4dCcKK1BBU1M6IHJlc3VsdEVsZW1lbnQu
c3RyaW5nVmFsdWUgPT09ICdBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnCiAKLQotUEFTUyBl
bGVtZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ0ZpcnN0IGxp
bmUgb2YgdGV4dCcKLVBBU1MgZWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobGluZVJh
bmdlKSBpcyAnYnV0dG9uJwotUEFTUyByZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIGlzICdBWFZh
bHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnCi1QQVNTIHJlc3VsdEVsZW1lbnQuc3RyaW5nVmFsdWUg
aXMgJ0FYVmFsdWU6IEZpcnN0IGxpbmUgb2YgdGV4dCcKIFBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKIAogVEVTVCBDT01QTEVURQogCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5o
dG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9t
LWlnbm9yZWQtZWxlbWVudC5odG1sCmluZGV4IDZlYTgxODdjMDIyNi4uOTVkN2E0NmNlY2QzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy9zZWFyY2gtcHJlZGljYXRl
LWZyb20taWdub3JlZC1lbGVtZW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvc2VhcmNoLXByZWRpY2F0ZS1mcm9tLWlnbm9yZWQtZWxlbWVudC5odG1sCkBAIC0xLDUw
ICsxLDQ3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+
CiA8aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhl
bHBlci5qcyI+PC9zY3JpcHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAor
PGRpdiBpZD0iY29udGFpbmVyIiByb2xlPSJncm91cCI+CiA8ZGl2IGlkPSJ0ZXN0Ij5GaXJzdCBs
aW5lIG9mIHRleHQ8YnI+CiA8YnV0dG9uIGlkPSJidXR0b24iIGFyaWEtaGlkZGVuPSJ0cnVlIj5i
dXR0b248L2J1dHRvbj4KIDxicj5UaGlyZCBsaW5lIG9mIHRleHQ8L2Rpdj4KLQotPHAgaWQ9ImRl
c2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2Ny
aXB0PgotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoZSBhYmlsaXR5IHRvIHNlYXJjaCBm
b3IgYWNjZXNzaWJsZSBlbGVtZW50cyBmcm9tIGFuIGlnbm9yZWQgZWxlbWVudC4iKTsKLSAgICAK
ICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAgIAotICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYm9keSIpLmZvY3VzKCk7Ci0gICAgICAgIHZh
ciBjb250YWluZXJFbGVtZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZm9jdXNlZEVsZW1l
bnQ7Ci0gICAgICAgIAorICAgICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIGFiaWxp
dHkgdG8gc2VhcmNoIGZvciBhY2Nlc3NpYmxlIGVsZW1lbnRzIGZyb20gYW4gaWdub3JlZCBlbGVt
ZW50LlxuXG4iOworCisgICAgICAgIHZhciBjb250YWluZXIgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOwogICAgICAgICB2YXIgZWxl
bWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGVz
dCIpLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgdmFyIG1hcmtlclJhbmdlID0gZWxlbWVudC50
ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVsZW1lbnQpOwotICAgICAgICBzaG91bGRCZSgiZWxl
bWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidGaXJzdCBsaW5l
IG9mIHRleHQnIik7Ci0gICAgICAgIAotICAgICAgICAvLyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVk
IGVsZW1lbnQgdXNpbmcgbGluZSB0ZXh0IG1hcmtlciBjYWxscwotICAgICAgICB2YXIgdGV4dE1h
cmtlciA9IGVsZW1lbnQuZW5kVGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5n
ZSk7Ci0gICAgICAgIHRleHRNYXJrZXIgPSBlbGVtZW50Lm5leHRUZXh0TWFya2VyKHRleHRNYXJr
ZXIpOwotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcih0ZXh0TWFy
a2VyKTsKLSAgICAgICAgdmFyIGxpbmVSYW5nZSA9IGVsZW1lbnQubGluZVRleHRNYXJrZXJSYW5n
ZUZvclRleHRNYXJrZXIodGV4dE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJlbGVtZW50LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZShsaW5lUmFuZ2UpIiwgIididXR0b24nIik7Ci0gICAgICAg
IAotICAgICAgICB0ZXh0TWFya2VyID0gZWxlbWVudC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UobGluZVJhbmdlKTsKLSAgICAgICAgdmFyIHN0YXJ0RWxlbWVudCA9IGVsZW1lbnQu
YWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHRleHRNYXJrZXIpOwotICAgICAgICAK
KyAgICAgICAgdmFyIHJhbmdlID0gZWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KGVs
ZW1lbnQpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJlbGVtZW50LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShyYW5nZSkiLCAiJ0ZpcnN0IGxpbmUgb2YgdGV4dCciKTsKKworICAgICAgICAv
LyBUcnkgdG8gZ2V0IHRoZSBpZ25vcmVkIGVsZW1lbnQgdXNpbmcgbGluZSB0ZXh0IG1hcmtlciBj
YWxscy4KKyAgICAgICAgdmFyIG1hcmtlciA9IGVsZW1lbnQuZW5kVGV4dE1hcmtlckZvclRleHRN
YXJrZXJSYW5nZShyYW5nZSk7CisgICAgICAgIG1hcmtlciA9IGVsZW1lbnQubmV4dFRleHRNYXJr
ZXIobWFya2VyKTsKKyAgICAgICAgbWFya2VyID0gZWxlbWVudC5uZXh0VGV4dE1hcmtlcihtYXJr
ZXIpOworICAgICAgICByYW5nZSA9IGVsZW1lbnQubGluZVRleHRNYXJrZXJSYW5nZUZvclRleHRN
YXJrZXIobWFya2VyKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgiZWxlbWVudC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpIiwgIididXR0b24nIik7CisKKyAgICAgICAgbWFya2Vy
ID0gZWxlbWVudC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpOworICAg
ICAgICB2YXIgc3RhcnRFbGVtZW50ID0gZWxlbWVudC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRl
eHRNYXJrZXIobWFya2VyKTsKKwogICAgICAgICAvLyBTZWFyY2ggZm9yd2FyZAotICAgICAgICB2
YXIgcmVzdWx0RWxlbWVudCA9IGNvbnRhaW5lckVsZW1lbnQudWlFbGVtZW50Rm9yU2VhcmNoUHJl
ZGljYXRlKHN0YXJ0RWxlbWVudCwgdHJ1ZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxz
ZSk7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBUaGlyZCBsaW5lIG9mIHRleHQnIik7Ci0gICAgICAgIAorICAgICAgICB2YXIgcmVzdWx0
RWxlbWVudCA9IGNvbnRhaW5lci51aUVsZW1lbnRGb3JTZWFyY2hQcmVkaWNhdGUoc3RhcnRFbGVt
ZW50LCB0cnVlLCAiQVhBbnlUeXBlU2VhcmNoS2V5IiwgIiIsIGZhbHNlKTsKKyAgICAgICAgb3V0
cHV0ICs9IGV4cGVjdCgicmVzdWx0RWxlbWVudC5zdHJpbmdWYWx1ZSIsICInQVhWYWx1ZTogVGhp
cmQgbGluZSBvZiB0ZXh0JyIpOworCiAgICAgICAgIC8vIFNlYXJjaCBiYWNrd2FyZAotICAgICAg
ICByZXN1bHRFbGVtZW50ID0gY29udGFpbmVyRWxlbWVudC51aUVsZW1lbnRGb3JTZWFyY2hQcmVk
aWNhdGUoc3RhcnRFbGVtZW50LCBmYWxzZSwgIkFYQW55VHlwZVNlYXJjaEtleSIsICIiLCBmYWxz
ZSk7Ci0gICAgICAgIHNob3VsZEJlKCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZh
bHVlOiBGaXJzdCBsaW5lIG9mIHRleHQnIik7CisgICAgICAgIHJlc3VsdEVsZW1lbnQgPSBjb250
YWluZXIudWlFbGVtZW50Rm9yU2VhcmNoUHJlZGljYXRlKHN0YXJ0RWxlbWVudCwgZmFsc2UsICJB
WEFueVR5cGVTZWFyY2hLZXkiLCAiIiwgZmFsc2UpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0
KCJyZXN1bHRFbGVtZW50LnN0cmluZ1ZhbHVlIiwgIidBWFZhbHVlOiBGaXJzdCBsaW5lIG9mIHRl
eHQnIik7CisKKyAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpLnN0
eWxlLnZpc2liaWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9
Ci0gICAgICAgIAogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMt
dGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmls
aXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJhbmdlLWZvci1yYW5nZS1leHBlY3Rl
ZC50eHQKaW5kZXggY2RjYzc3YzNjODcxLi42YTdkMmY3OGEzZTQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLWV4cGVj
dGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy90ZXh0bWFya2VyLXJh
bmdlLWZvci1yYW5nZS1leHBlY3RlZC50eHQKQEAgLTEsMjgxICsxLDIwNyBAQAotVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCi0KLWJvbGQgaXRhbGljCi11bmRlcmxpbmUgbGFzdCEKLQotSGVsbG8gV29y
bGQhCi1UaGlzIHRlc3QgdGhhdCB0ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSB3b3JrcyBwcm9wZXJs
eS4KLQotT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgotCitUaGlzIHRlc3RzIHRoYXQgdGV4dE1h
cmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuCiAKIGNvbnRlbnQgbGVuZ3RoOiA2NQog
QWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhlIHRleHQ6Ci0w
Ci0nJwotMQotJ1QnCi0yCi0nVGgnCi0zCi0nVGhpJwotNAotJ1RoaW4nCi01Ci0nVGhpbmsnCi02
Ci0nVGhpbmsgJwotNwotJ1RoaW5rIGQnCi04Ci0nVGhpbmsgZGknCi05Ci0nVGhpbmsgZGlmJwot
MTAKLSdUaGluayBkaWZmJwotMTEKLSdUaGluayBkaWZmZScKLTEyCi0nVGhpbmsgZGlmZmVyJwot
MTMKLSdUaGluayBkaWZmZXJlJwotMTQKLSdUaGluayBkaWZmZXJlbicKLTE1Ci0nVGhpbmsgZGlm
ZmVyZW50JwotMTYKLSdUaGluayBkaWZmZXJlbnQgJwotMTcKLSdUaGluayBkaWZmZXJlbnQgQScK
LTE4Ci0nVGhpbmsgZGlmZmVyZW50IEFwJwotMTkKLSdUaGluayBkaWZmZXJlbnQgQXBwJwotMjAK
LSdUaGluayBkaWZmZXJlbnQgQXBwbCcKLTIxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlJwotMjIK
LSdUaGluayBkaWZmZXJlbnQgQXBwbGUnCi0yMwotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorMCAn
JworMSAnVCcKKzIgJ1RoJworMyAnVGhpJworNCAnVGhpbicKKzUgJ1RoaW5rJworNiAnVGhpbmsg
JworNyAnVGhpbmsgZCcKKzggJ1RoaW5rIGRpJworOSAnVGhpbmsgZGlmJworMTAgJ1RoaW5rIGRp
ZmYnCisxMSAnVGhpbmsgZGlmZmUnCisxMiAnVGhpbmsgZGlmZmVyJworMTMgJ1RoaW5rIGRpZmZl
cmUnCisxNCAnVGhpbmsgZGlmZmVyZW4nCisxNSAnVGhpbmsgZGlmZmVyZW50JworMTYgJ1RoaW5r
IGRpZmZlcmVudCAnCisxNyAnVGhpbmsgZGlmZmVyZW50IEEnCisxOCAnVGhpbmsgZGlmZmVyZW50
IEFwJworMTkgJ1RoaW5rIGRpZmZlcmVudCBBcHAnCisyMCAnVGhpbmsgZGlmZmVyZW50IEFwcGwn
CisyMSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlJworMjIgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZScK
KzIzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogJwotMjQKLSdUaGluayBkaWZmZXJlbnQgQXBw
bGUKKzI0ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYicKLTI1Ci0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCisyNSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvJwotMjYKLSdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKKzI2ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sJwotMjcKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzI3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCcKLTI4
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCisyOCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgJwotMjkKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzI5ICdUaGluayBkaWZmZXJlbnQgQXBw
bGUKIAogYm9sZCBpJwotMzAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzMwICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdCcKLTMxCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszMSAn
VGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhJwotMzIKLSdUaGluayBkaWZmZXJlbnQg
QXBwbGUKKzMyICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsJwotMzMKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzMzICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aScKLTM0Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCiszNCAnVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiAKIGJvbGQgaXRhbGljJwotMzUKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM1ICdUaGluayBk
aWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKICcKLTM2Ci0nVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiszNiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1JwotMzcKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzM3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuJwotMzgKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzM4ICdUaGluayBkaWZmZXJl
bnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZCcKLTM5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxl
CiszOSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlJwotNDAKLSdU
aGluayBkaWZmZXJlbnQgQXBwbGUKKzQwICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBp
dGFsaWMKIHVuZGVyJwotNDEKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQxICdUaGluayBkaWZm
ZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybCcKLTQyCi0nVGhpbmsgZGlmZmVyZW50
IEFwcGxlCis0MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxp
JwotNDMKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQzICdUaGluayBkaWZmZXJlbnQgQXBwbGUK
IAogYm9sZCBpdGFsaWMKIHVuZGVybGluJwotNDQKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ0
ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZScKLTQ1Ci0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCis0NSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbGljCiB1bmRlcmxpbmUgJwotNDYKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzQ2ICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsJwotNDcKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzQ3ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYScKLTQ4Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis0OCAnVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzJwotNDkKLSdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKKzQ5ICdUaGluayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFs
aWMKIHVuZGVybGluZSBsYXN0JwotNTAKLSdUaGluayBkaWZmZXJlbnQgQXBwbGUKKzUwICdUaGlu
ayBkaWZmZXJlbnQgQXBwbGUKIAogYm9sZCBpdGFsaWMKIHVuZGVybGluZSBsYXN0IScKLTUxCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbGljCiB1bmRlcmxpbmUgbGFzdCEnCi01MgotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNTIg
J1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAK
IO+/vCcKLTUzCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1MyAnVGhpbmsgZGlmZmVyZW50IEFw
cGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SCcKLTU0Ci0nVGhpbmsg
ZGlmZmVyZW50IEFwcGxlCis1NCAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGlj
CiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGUnCi01NQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQor
NTUgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3Qh
CiAKIO+/vEhlbCcKLTU2Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NiAnVGhpbmsgZGlmZmVy
ZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbCcKLTU3
Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1NyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJv
bGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8nCi01OAotJ1RoaW5rIGRpZmZl
cmVudCBBcHBsZQorNTggJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5k
ZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvICcKLTU5Ci0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis1
OSAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEK
IAog77+8SGVsbG8gVycKLTYwCi0nVGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MCAnVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8g
V28nCi02MQotJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQorNjEgJ1RoaW5rIGRpZmZlcmVudCBBcHBs
ZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5lIGxhc3QhCiAKIO+/vEhlbGxvIFdvcicKLTYyCi0n
VGhpbmsgZGlmZmVyZW50IEFwcGxlCis2MiAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQg
aXRhbGljCiB1bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29ybCcKLTYzCi0nVGhpbmsgZGlm
ZmVyZW50IEFwcGxlCis2MyAnVGhpbmsgZGlmZmVyZW50IEFwcGxlCiAKIGJvbGQgaXRhbGljCiB1
bmRlcmxpbmUgbGFzdCEKIAog77+8SGVsbG8gV29ybGQnCi02NAotJ1RoaW5rIGRpZmZlcmVudCBB
cHBsZQorNjQgJ1RoaW5rIGRpZmZlcmVudCBBcHBsZQogCiBib2xkIGl0YWxpYwogdW5kZXJsaW5l
IGxhc3QhCkBAIC0yOTEsNyArMjE3LDExIEBAIHVuZGVybGluZSBsYXN0IQogCiDvv7xIZWxsbyBX
b3JsZCEnCiAnJworCiBQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09N
UExFVEUKIAorCisKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMv
dGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvbWFjL3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKaW5kZXggY2UxY2JmMmVlZmUz
Li5jMzA0OTg2N2IwNTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFj
L3RleHRtYXJrZXItcmFuZ2UtZm9yLXJhbmdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNz
aWJpbGl0eS9tYWMvdGV4dG1hcmtlci1yYW5nZS1mb3ItcmFuZ2UuaHRtbApAQCAtMSw5ICsxLDkg
QEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KIDxodG1s
PgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+PC9zY3Jp
cHQ+CiA8L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Cis8Ym9keT4KIAogPGRpdiBpZD0iY29udGVu
dCIgcm9sZT0iZ3JvdXAiPgogICAgIDxwPlRoaW5rIDxlbT5kaWZmZXJlbnQ8L2VtPiA8YSBocmVm
PSJhcHBsZS5jb20iPkFwcGxlPC9hPjwvcD4KQEAgLTExLDM2ICsxMSwzNCBAQAogICAgIDxidXR0
b24+SGVsbG8gV29ybGQhPC9idXR0b24+CiA8L2Rpdj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48
L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLSAgICBkZXNjcmlwdGlv
bigiVGhpcyB0ZXN0IHRoYXQgdGV4dE1hcmtlclJhbmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHku
Iik7Ci0KICAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7Ci0gICAgICAg
IGF4RWxlbWVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJ
ZCgiY29udGVudCIpOwotICAgICAgICBjb250ZW50VGV4dE1hcmtlclJhbmdlID0gYXhFbGVtZW50
LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQoYXhFbGVtZW50KTsKLSAgICAgICAgdGV4dExlbmd0
aCA9IGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UoY29udGVudFRleHRNYXJrZXJS
YW5nZSkubGVuZ3RoOwotICAgICAgICBkZWJ1ZygiY29udGVudCBsZW5ndGg6ICIgKyB0ZXh0TGVu
Z3RoKTsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHRlc3RzIHRoYXQgdGV4dE1hcmtlclJh
bmdlRm9yUmFuZ2Ugd29ya3MgcHJvcGVybHkuXG5cbiI7CiAKLSAgICAgICAgZGVidWcoIkFsbCBy
YW5nZXMgZnJvbSBpbmRleCAwIHRvIGVhY2ggY2hhcmFjdGVyIGluIHRoZSB0ZXh0OiIpOwotICAg
ICAgICBmb3IgKGkgPSAwOyBpIDwgdGV4dExlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBkZWJ1
ZyhpKTsKLSAgICAgICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4RWxlbWVudC50ZXh0TWFya2Vy
UmFuZ2VGb3JSYW5nZSgwLCBpKTsKLSAgICAgICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAg
IGxldCBjb250ZW50ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJjb250ZW50Iik7CisgICAgICAgIGxldCByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJh
bmdlRm9yRWxlbWVudChjb250ZW50KTsKKyAgICAgICAgbGV0IGNvbnRlbnRMZW5ndGggPSBjb250
ZW50LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShyYW5nZSkubGVuZ3RoOworICAgICAgICBvdXRw
dXQgKz0gYGNvbnRlbnQgbGVuZ3RoOiAke2NvbnRlbnRMZW5ndGh9XG5gOworCisgICAgICAgIG91
dHB1dCArPSAiQWxsIHJhbmdlcyBmcm9tIGluZGV4IDAgdG8gZWFjaCBjaGFyYWN0ZXIgaW4gdGhl
IHRleHQ6XG4iOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgY29udGVudExlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9yUmFuZ2UoMCwg
aSk7CisgICAgICAgICAgICBvdXRwdXQgKz0gYCR7aX0gJyR7Y29udGVudC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CiAgICAgICAgIH0KIAotICAgICAgICBkZWJ1ZygiR2V0
IHRoZSByYW5nZSBmb3IgdGhlIHdvcmQgQXBwbGU6Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5n
ZSA9IGF4RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgxNiwgNSk7Ci0gICAgICAgIGRl
YnVnKCInIiArIGF4RWxlbWVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKSArICInIik7CisgICAgICAgIG91dHB1dCArPSAiR2V0IHRoZSByYW5nZSBmb3IgdGhlIHdv
cmQgQXBwbGU6XG4iOworICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4dE1hcmtlclJhbmdlRm9y
UmFuZ2UoMTYsIDUpOworICAgICAgICBvdXRwdXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOworCisgICAgICAgIG91dHB1dCArPSAiT3V0IG9mIHJh
bmdlIHZhbHVlczpcbiI7CisgICAgICAgIHJhbmdlID0gY29udGVudC50ZXh0TWFya2VyUmFuZ2VG
b3JSYW5nZSgwLCAxMDApOworICAgICAgICBvdXRwdXQgKz0gYCcke2NvbnRlbnQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHJhbmdlKX0nXG5gOworICAgICAgICByYW5nZSA9IGNvbnRlbnQudGV4
dE1hcmtlclJhbmdlRm9yUmFuZ2UoNzAsIDEwMCk7CisgICAgICAgIG91dHB1dCArPSBgJyR7Y29u
dGVudC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UocmFuZ2UpfSdcbmA7CiAKLSAgICAgICAgZGVi
dWcoIk91dCBvZiByYW5nZSB2YWx1ZXM6Iik7Ci0gICAgICAgIHRleHRNYXJrZXJSYW5nZSA9IGF4
RWxlbWVudC50ZXh0TWFya2VyUmFuZ2VGb3JSYW5nZSgwLCAxMDApOwotICAgICAgICBkZWJ1Zygi
JyIgKyBheEVsZW1lbnQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSkg
KyAiJyIpOwotICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSBheEVsZW1lbnQudGV4dE1hcmtlclJh
bmdlRm9yUmFuZ2UoNzAsIDEwMCk7Ci0gICAgICAgIGRlYnVnKCInIiArIGF4RWxlbWVudC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlKSArICInIik7CisgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5bGUudmlzaWJpbGl0eSA9ICJoaWRk
ZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0KIDwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgogPC9ib2R5Pgog
PC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJs
ZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9yLXRleHQtbm9kZS1l
eHBlY3RlZC50eHQKaW5kZXggOTE1ZDU2OWMwZWQwLi5kODRiOGIyMDE3NDIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvbWFjL3Zpc2libGUtcG9zaXRpb24tY3Jhc2gtZm9y
LXRleHQtbm9kZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9t
YWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLWV4cGVjdGVkLnR4dApAQCAt
MSwxMCArMSw3IEBACi1UaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlz
IGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0
ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBp
cyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2Yg
dGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LgogVGhp
cyBwcm90ZWN0cyBhZ2FpbnN0IGEgY3Jhc2ggaW4gYXNraW5nIGZvciB2aXNpYmxlIHBvaW50IGZv
ciBwb3NpdGlvbiB0byBlbnN1cmUgdGhhdCBpdCBjYW4gaGFuZGxlIGFsbCBSZW5kZXJUZXh0IG9i
amVjdHMuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KK1BBU1M6IGNvbnRlbnQuY2hpbGRB
dEluZGV4KDApLmlzRXF1YWwoZWxlbWVudCkgPT09IHRydWUKIAotCi1QQVNTIGNvbnRlbnQuY2hp
bGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVsZW1lbnQpIGlzIHRydWUKIFBBU1Mgc3VjY2Vzc2Z1
bGx5UGFyc2VkIGlzIHRydWUKIAogVEVTVCBDT01QTEVURQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2Rl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L21hYy92aXNpYmxlLXBvc2l0aW9uLWNy
YXNoLWZvci10ZXh0LW5vZGUuaHRtbAppbmRleCBjNzI1N2Q1ODVkMWEuLjYyZWI0ZTM1MjJlYiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9tYWMvdmlzaWJsZS1wb3NpdGlv
bi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0
eS9tYWMvdmlzaWJsZS1wb3NpdGlvbi1jcmFzaC1mb3ItdGV4dC1ub2RlLmh0bWwKQEAgLTEsNDAg
KzEsMzEgQEAKIDwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4K
IDxodG1sPgogPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2FjY2Vzc2liaWxpdHktaGVs
cGVyLmpzIj48L3NjcmlwdD4KIDwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08
ZGl2IGlkPSJjb250ZW50IiB0YWJpbmRleD0iMCIgc3R5bGU9IndpZHRoOjIwMHB4OyI+Cis8ZGl2
IGlkPSJjb250ZW50IiBzdHlsZT0id2lkdGg6MjAwcHg7Ij4KIFRoaXMgaXMgYSBsb3Qgb2YgdGV4
dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMg
YSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRl
eHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiAKIFRoaXMg
aXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9m
IHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlz
IGlzIGEgbG90IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBv
ZiB0ZXh0LgogVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90IG9mIHRleHQuIFRo
aXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBUaGlzIGlzIGEgbG90
IG9mIHRleHQuIFRoaXMgaXMgYSBsb3Qgb2YgdGV4dC4gVGhpcyBpcyBhIGxvdCBvZiB0ZXh0LiBU
aGlzIGlzIGEgbG90IG9mIHRleHQuCiA8L2Rpdj4KIAotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KLQogPHNjcmlwdD4KLQotICAgIGRlc2NyaXB0aW9u
KCJUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBpbiBhc2tpbmcgZm9yIHZpc2libGUgcG9p
bnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRl
eHQgb2JqZWN0cy4iKTsKLQogICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKKyAgICAgICAgbGV0IG91dHB1dCA9ICJUaGlzIHByb3RlY3RzIGFnYWluc3QgYSBjcmFzaCBp
biBhc2tpbmcgZm9yIHZpc2libGUgcG9pbnQgZm9yIHBvc2l0aW9uIHRvIGVuc3VyZSB0aGF0IGl0
IGNhbiBoYW5kbGUgYWxsIFJlbmRlclRleHQgb2JqZWN0cy5cblxuIjsKIAotICAgICAgICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50IikuZm9jdXMoKTsKLSAgICAgICAgICB2YXIg
Y29udGVudCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmZvY3VzZWRFbGVtZW50OwotCi0gICAg
ICAgICAgLy8gR2V0IHRoZSB0ZXh0IG1hcmtlciBhdCB0aGlzIHBvaW50LiBJdCBzaG91bGQgbm90
IGNyYXNoLgotICAgICAgICAgIHZhciBtYXJrZXJBdFBvaW50ID0gY29udGVudC50ZXh0TWFya2Vy
Rm9yUG9pbnQoY29udGVudC54ICsgY29udGVudC53aWR0aC8yLCBjb250ZW50LnkgKyBjb250ZW50
LmhlaWdodC8yKTsKLSAgICAgICAgICB2YXIgdGV4dEVsZW1lbnQgPSBjb250ZW50LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXJBdFBvaW50KTsKKyAgICAgICAgdmFyIGNv
bnRlbnQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoImNv
bnRlbnQiKTsKKyAgICAgICAgLy8gR2V0IHRoZSB0ZXh0IG1hcmtlciBhdCB0aGlzIHBvaW50LiBJ
dCBzaG91bGQgbm90IGNyYXNoLgorICAgICAgICB2YXIgbWFya2VyID0gY29udGVudC50ZXh0TWFy
a2VyRm9yUG9pbnQoY29udGVudC54ICsgY29udGVudC53aWR0aCAvIDIsIGNvbnRlbnQueSArIGNv
bnRlbnQuaGVpZ2h0IC8gMik7CisgICAgICAgIC8vIFZlcmlmeSB0aGUgZWxlbWVudCBpcyB0aGUg
c2FtZSBhcyB0aGUgb25lIHdlIHdhbnRlZC4KKyAgICAgICAgdmFyIGVsZW1lbnQgPSBjb250ZW50
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJjb250ZW50LmNoaWxkQXRJbmRleCgwKS5pc0VxdWFsKGVsZW1lbnQpIiwg
InRydWUiKTsKIAotICAgICAgICAgIC8vIFZlcmlmeSB0aGUgZWxlbWVudCBpcyB0aGUgc2FtZSBh
cyB0aGUgb25lIHdlIHdhbnRlZC4KLSAgICAgICAgICB2YXIgdGV4dEVsZW1lbnQgPSBjb250ZW50
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihtYXJrZXJBdFBvaW50KTsKLSAgICAg
ICAgICBzaG91bGRCZVRydWUoImNvbnRlbnQuY2hpbGRBdEluZGV4KDApLmlzRXF1YWwodGV4dEVs
ZW1lbnQpIik7CisgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJjb250ZW50Iikuc3R5
bGUudmlzaWJpbGl0eSA9ICJoaWRkZW4iOworICAgICAgICBkZWJ1ZyhvdXRwdXQpOwogICAgIH0K
LQogPC9zY3JpcHQ+Ci0KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0
LmpzIj48L3NjcmlwdD4KIDwvYm9keT4KIDwvaHRtbD4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1t
YXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKaW5kZXggMDQwNDM4NDlkZTE2Li5lYTRi
ODc3ZDQ5M2IgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJr
ZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4
cGVjdGVkLnR4dApAQCAtMSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4n
dCBzZWxlY3QKLWFiYyBkZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMg
dGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1l
bnRlZCBjb3JyZWN0bHkuCiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAi
UEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0
LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0
ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2Vy
KGVuZE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICd0JwotUEFTUyB0ZXh0Mi50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgaXMgNQorUEFTUzogdGV4dC50ZXh0TWFy
a2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlzRXF1YWwodGV4dCkgPT09
IHRydWUKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1h
cmtlcikuaXNFcXVhbCh0ZXh0KSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JworUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSBuZXdsaW5lCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICd0JworUEFTUzogdGV4dDIudGV4
dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpID09PSA1CiBPYmplY3Qgc3RyaW5n
IGZvciByYW5nZTogYyBbQVRUQUNITUVOVF0gZAotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdkJwotUEFTUyB0ZXh0Mi5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICcxJwotUEFTUyB0ZXh0My5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdlY3QnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ3NlbCcKLVBBU1MgIXBzdy5hY2Nlc3NpYmlsaXR5
RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIGlzIHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpIGlz
IHRydWUKLVBBU1MgdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJl
bnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRBdEluZGV4KDIpKSBpcyB0cnVlCi1QQVNTIHRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnZicKLVBBU1MgdGV4
dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdhJwotUEFTUyB0ZXh0
LnRleHRNYXJrZXJSYW5nZUxlbmd0aChlbW9qaVRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iPJwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMo
cmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICfwn5iDJwotUEFTUyB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIGlzIDMK
LVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VG
b3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1Mg
dGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYicKLVBBU1MgdGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnICcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSBpcyAnYScKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dE1hcmtlclJhbmdlKSBpcyAnYXVkaW/vv7xmaWxlJwotUEFTUyB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcKLVBBU1MgdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICfvv7wnCitQQVNTOiB0ZXh0Mi5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZCcKK1BBU1M6IHRleHQy
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICcxJworUEFTUzogdGV4
dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ2VjdCcKK1BBU1M6
IHRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdzZWwnCitQ
QVNTOiAhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgPT09IHRy
dWUKK1BBU1M6IHRleHQyLmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihjdXJyZW50
TWFya2VyKS5pc0VxdWFsKHRleHQzKSA9PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hpbGRB
dEluZGV4KDIpKSA9PT0gdHJ1ZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpID09PSAnZicKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0aChl
bW9qaVRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkgPT09ICfwn5iPJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVz
dWx0LmN1cnJlbnQpKSA9PT0gJ/CfmIMnCitQQVNTOiB0ZXh0LnRleHRNYXJrZXJSYW5nZUxlbmd0
aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpID09PSAzCitQQVNTOiB0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYScKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJl
dmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2InCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJr
ZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCBy
ZXN1bHQuY3VycmVudCkpID09PSAnICcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3Vs
dC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
dGV4dE1hcmtlclJhbmdlKSA9PT0gJ2F1ZGlv77+8ZmlsZScKK1BBU1M6IHRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKK1BBU1M6IHRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ++/vCcKKwogUEFTUyBzdWNjZXNz
ZnVsbHlQYXJzZWQgaXMgdHJ1ZQogCiBURVNUIENPTVBMRVRFCiAKKworCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlv
dXMtbmV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0
LW1hcmtlci1wcmV2aW91cy1uZXh0Lmh0bWwKaW5kZXggNWVkM2JkMGQwNmRlLi4zOGYxM2VkN2Ez
ZWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvdGV4dC1tYXJrZXIvdGV4
dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxp
dHkvdGV4dC1tYXJrZXIvdGV4dC1tYXJrZXItcHJldmlvdXMtbmV4dC5odG1sCkBAIC0xLDE1ICsx
LDE3IEBACiA8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+CiA8
aHRtbD4KIDxoZWFkPgotPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9hY2Nlc3NpYmlsaXR5LWhlbHBl
ci5qcyI+PC9zY3JpcHQ+CiA8bWV0YSBjaGFyc2V0PSJVVEYtMTYiPgogPC9oZWFkPgogPHN0eWxl
PgogLnVzZXJzZWxlY3QgeyB1c2VyLXNlbGVjdDogbm9uZTsgLXdlYmtpdC11c2VyLXNlbGVjdDog
bm9uZTsgfQogPC9zdHlsZT4KLTxib2R5IGlkPSJib2R5Ij4KKzxib2R5PgogCi08ZGl2IGlkPSJ0
ZXh0IiB0YWJpbmRleD0iMCI+dGV4dDwvZGl2PgorPGRpdiBpZD0iY29udGVudCI+Cis8ZGl2IGlk
PSJ0ZXh0Ij50ZXh0PC9kaXY+CiA8YnI+CiB0ZXh0MQogCkBAIC0zMiwyOSArMzQsNDUgQEAgZgog
PHAgaWQ9InRleHQ2Ij5hICAgICBiPC9wPgogCiA8cCBpZD0idGV4dDciPmF1ZGlvPGF1ZGlvIGNv
bnRyb2xzPjwvYXVkaW8+ZmlsZTwvcD4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2
IGlkPSJjb25zb2xlIj48L2Rpdj4KKzwvZGl2PgogCiA8c2NyaXB0PgorICAgIGZ1bmN0aW9uIGZv
cndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCBvYmopIHsKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgICAgICBwcmV2aW91
c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CisgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gb2Jq
Lm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB7CisgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBj
dXJyZW50OiBjdXJyZW50TWFya2VyCisgICAgICAgIH07CisgICAgfQorCisgICAgZnVuY3Rpb24g
YmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2JqKSB7Cisg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAgICAgICAgcHJl
dmlvdXNNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKHByZXZpb3VzTWFya2VyKTsKKyAg
ICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNUZXh0TWFya2VyKGN1cnJlbnRN
YXJrZXIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBwcmV2aW91
czogcHJldmlvdXNNYXJrZXIsCisgICAgICAgICAgICBjdXJyZW50OiBjdXJyZW50TWFya2VyCisg
ICAgICAgIH07CisgICAgfQogCi0gICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhlIG5leHQv
cHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHku
Iik7Ci0gICAgCiAgICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICAKLSAgICAgICAgdmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3Np
YmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAgICAgLy8gR2V0IHRoZSBhY3R1YWwgdGV4dCBu
b2RlLgotICAgICAgICB0ZXh0ID0gdGV4dC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIAorICAg
ICAgICBsZXQgb3V0cHV0ID0gIlRoaXMgdGVzdHMgdGhlIG5leHQvcHJldmlvdXMgdGV4dCBtYXJr
ZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHkuXG5cbiI7CisKKyAgICAgICAg
dmFyIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQo
InRleHQiKS5jaGlsZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQ2hlY2sgdGhhdCB3ZSBjYW4g
Z2V0IHRoZSBzdGFydC9lbmQgbWFya2VyIGZvciB0aGlzIHJhbmdlLgogICAgICAgICB2YXIgdGV4
dE1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50KHRleHQpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdl
KSIsICI0Iik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRleHRN
YXJrZXJSYW5nZUxlbmd0aCh0ZXh0TWFya2VyUmFuZ2UpIiwgIjQiKTsKKwogICAgICAgICB2YXIg
c3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UpOwogICAgICAgICB2YXIgZW5kTWFya2VyID0gdGV4dC5lbmRUZXh0TWFya2Vy
Rm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJSYW5nZSk7Ci0gICAgICAgIHNob3VsZEJlVHJ1
ZSgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnRNYXJrZXIpLmlz
RXF1YWwodGV4dCkiKTsKLSAgICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIpLmlzRXF1YWwodGV4dCkiKTsKLSAgICAgICAg
CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JU
ZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKyAgICAgICAg
b3V0cHV0ICs9IGV4cGVjdCgidGV4dC5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
ZW5kTWFya2VyKS5pc0VxdWFsKHRleHQpIiwgInRydWUiKTsKKwogICAgICAgICAvLyBDaGVjayBu
ZXh0IHRleHQgbWFya2VyLiAoQWR2YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCA8
YnI+LikKICAgICAgICAgdmFyIGN1cnJlbnRNYXJrZXIsIHByZXZpb3VzTWFya2VyLCBtYXJrZXJS
YW5nZTs7CiAgICAgICAgIHZhciByZXN1bHQgPSBmb3J3YXJkKDUsIHByZXZpb3VzTWFya2VyLCBz
dGFydE1hcmtlciwgdGV4dCk7CkBAIC02Miw1OCArODAsNTcgQEAgZgogICAgICAgICBjdXJyZW50
TWFya2VyID0gcmVzdWx0LmN1cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0
TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAg
ICAgICAgdmFyIG5ld2xpbmUgPSAnXG4nOwotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdG
b3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUiKTsKLSAgICAgICAgCisg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gQWR2YW5jZSBvbmUgbW9yZSBj
aGFyYWN0ZXJzLCBpdCB3aWxsIGxhbmRlIGF0ICJ0IiBpbiAidGV4dDEiLgogICAgICAgICByZXN1
bHQgPSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAg
ICAgICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRN
YXJrZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRN
YXJrZXJSYW5nZUZvck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAg
ICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2Up
IiwgIid0JyIpOwotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyIpOworCiAgICAgICAgIC8v
IENoZWNrIHByZXZpb3VzIHRleHQgbWFya2VyLiAoVHJhdmVyc2UgYmFja3dhcmRzIG9uZSBjaGFy
YWN0ZXIsIGl0IHdpbGwgbGFuZCBhdCA8YnI+LikKICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRz
KDEsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0KTsKICAgICAgICAgcHJldmlv
dXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSByZXN1
bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIpOwotICAgICAgICBzaG91bGRC
ZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIm5ld2xpbmUi
KTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICJuZXdsaW5lIik7CisKICAgICAgICAgLy8gVHJh
dmVyc2UgYmFja3dhcmRzIG9uZSBtb3JlIGNoYXJhY3RlciwgaXQgd2lsbCBsYW5kIGF0IHRoZSBs
YXN0IGNoYXJhY3RlciBvZiAidGV4dCIuCiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygxLCBw
cmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgdGV4dCk7CiAgICAgICAgIHByZXZpb3VzTWFy
a2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1
cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJr
ZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKICAgICAgICAgaWYgKGFjY2Vzc2li
aWxpdHlDb250cm9sbGVyLnBsYXRmb3JtTmFtZSA9PSAibWFjIikKLSAgICAgICAgICAgIHNob3Vs
ZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ3QnICsg
bmV3bGluZSIpOworICAgICAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIid0JyArIG5ld2xpbmUiKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSIsICIndCciKTsKKyAgICAgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRl
eHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICIndCciKTsKIAogICAg
ICAgICAvLyBDaGVjayB0aGUgY2FzZSB3aXRoIHJlcGxhY2VkIG5vZGUKICAgICAgICAgdmFyIHRl
eHQyID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0
MiIpOwogICAgICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMiA9IHRleHQyLnRleHRNYXJrZXJSYW5n
ZUZvckVsZW1lbnQodGV4dDIpOwotICAgICAgICBzaG91bGRCZSgidGV4dDIudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4
cGVjdCgidGV4dDIudGV4dE1hcmtlclJhbmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIiwgIjUi
KTsKICAgICAgICAgdmFyIHN0ciA9IHRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0
TWFya2VyUmFuZ2UyKS5yZXBsYWNlKFN0cmluZy5mcm9tQ2hhckNvZGUoNjU1MzIpLCAiW0FUVEFD
SE1FTlRdIik7Ci0gICAgICAgIGRlYnVnKCJPYmplY3Qgc3RyaW5nIGZvciByYW5nZTogIiArIHN0
cik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gYE9iamVjdCBzdHJpbmcgZm9yIHJhbmdl
OiAke3N0cn1cbmA7CisKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQyLnN0YXJ0VGV4dE1h
cmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UyKTsKICAgICAgICAgLy8gQWR2
YW5jZSA1IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCAiZCIuCiAgICAgICAgIHJlc3VsdCA9
IGZvcndhcmQoNSwgcHJldmlvdXNNYXJrZXIsIGN1cnJlbnRNYXJrZXIsIHRleHQyKTsKICAgICAg
ICAgcHJldmlvdXNNYXJrZXIgPSByZXN1bHQucHJldmlvdXM7CiAgICAgICAgIGN1cnJlbnRNYXJr
ZXIgPSByZXN1bHQuY3VycmVudDsKICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0Mi50ZXh0TWFy
a2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyKTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ2QnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0Mi5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIidkJyIpOworCiAgICAgICAgIC8v
IFRyYXZlcnNlIGJhY2t3YXJkcyA2IGNoYXJhY3RlcnMsIGl0IHdpbGwgbGFuZCBhdCB0aGUgbGFz
dCBjaGFyYWN0ZXIgb2YgInRleHQxIi4KICAgICAgICAgcmVzdWx0ID0gYmFja3dhcmRzKDYsIHBy
ZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2VyLCB0ZXh0Mik7CiAgICAgICAgIHByZXZpb3VzTWFy
a2VyID0gcmVzdWx0LnByZXZpb3VzOwogICAgICAgICBjdXJyZW50TWFya2VyID0gcmVzdWx0LmN1
cnJlbnQ7CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4dDIudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcik7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0Mi5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIiwgIicxJyIpOwotICAg
ICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKG1hcmtlclJhbmdlKSIsICInMSciKTsKKwogICAgICAgICAvLyBDaGVjayB0aGUgY2Fz
ZSB3aXRoIHVzZXItc2VsZWN0Om5vbmUsIG5leHRUZXh0TWFya2VyL3ByZXZpb3VzVGV4dE1hcmtl
ciBzaG91bGQgc3RpbGwgd29yay4KLSAgICAgICAgdmFyIHRleHQzID0gYWNjZXNzaWJpbGl0eUNv
bnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0MyIpOwotICAgICAgICB0ZXh0MyA9
IHRleHQzLmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgCisgICAgICAgIHZhciB0ZXh0MyA9IGFj
Y2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dDMiKS5jaGls
ZEF0SW5kZXgoMCk7CisKICAgICAgICAgLy8gQWR2YW5jZSB0byBsYW5kIGF0IHVzZXItc2VsZWN0
Om5vbmUgbm9kZS4KICAgICAgICAgdmFyIG1hcmtlcjEsIG1hcmtlcjI7CiAgICAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTg7IGkrKykgewpAQCAtMTI1LDM0ICsxNDIsMzEgQEAgZgogICAgICAg
ICB9CiAgICAgICAgIG1hcmtlcjIgPSBjdXJyZW50TWFya2VyOwogICAgICAgICBtYXJrZXJSYW5n
ZSA9IHRleHQzLnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMobWFya2VyMSwgbWFya2VyMik7Ci0g
ICAgICAgIHNob3VsZEJlKCJ0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFu
Z2UpIiwgIidlY3QnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQzLnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2VjdCciKTsKICAgICAgICAgLy8gSXRl
cmF0ZSBiYWNrd2FyZHMgdGhlIHNlY29uZCBtYXJrZXIgZm9yIDYgY2hhcmFjdGVycywgdGhlIHJh
bmdlIHNob3VsZCBiZSAic2VsIgotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykg
eworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDY7IGkrKykKICAgICAgICAgICAgIGN1cnJl
bnRNYXJrZXIgPSB0ZXh0My5wcmV2aW91c1RleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAg
ICAgIH0KICAgICAgICAgbWFya2VyMiA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgIG1hcmtlclJh
bmdlID0gdGV4dDMudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhtYXJrZXIxLCBtYXJrZXIyKTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQzLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJS
YW5nZSkiLCAiJ3NlbCciKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDMuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInc2VsJyIpOwogCiAgICAgICAgIC8v
IENoZWNrIHRoZSBjYXNlIHdpdGggcGFzc3dvcmQgZmllbGQuCiAgICAgICAgIHZhciBwc3cgPSBh
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInBzdyIpOwogICAg
ICAgICB2YXIgdGV4dE1hcmtlclJhbmdlMyA9IHBzdy50ZXh0TWFya2VyUmFuZ2VGb3JFbGVtZW50
KHBzdyk7CiAgICAgICAgIHZhciBzdGFydCA9IHBzdy5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dE1hcmtlclJhbmdlMyk7Ci0gICAgICAgIHNob3VsZEJlVHJ1ZSgiIXBzdy5h
Y2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoc3RhcnQpIik7Ci0gICAgICAgIAorICAg
ICAgICBvdXRwdXQgKz0gZXhwZWN0KCIhcHN3LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1h
cmtlcihzdGFydCkiLCAidHJ1ZSIpOworCiAgICAgICAgIC8vIENoZWNrIG5leHQvcHJldmlvdXMg
dGV4dCBtYXJrZXIgY2FsbCB3aWxsIHNraXAgcGFzc3dvcmQgZmllbGQKICAgICAgICAgLy8gV2Ug
c3RhcnQgZnJvbSB0ZXh0MiBhbmQgYWR2YW5jZSA2IGNoYXJhY3RlcnMsIGl0IHNob3VsZCBza2lw
IHRoZSBwYXNzd29yZCBmaWVsZCBhbmQgbGFuZCBvbiB0ZXh0My4KICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQyLnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2Vy
UmFuZ2UyKTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspIHsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCA2OyBpKyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0g
dGV4dDIubmV4dFRleHRNYXJrZXIoY3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAg
c2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3Vy
cmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0MykiKTsKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgi
dGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlz
RXF1YWwodGV4dDMpIiwgInRydWUiKTsKICAgICAgICAgLy8gQ2hlY2sgcHJldmlvdXMgdGV4dCBt
YXJrZXIsIGl0IHNob3VsZCBsYW5kIG9uICIgZCIgbm9kZS4KICAgICAgICAgY3VycmVudE1hcmtl
ciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgY3Vy
cmVudE1hcmtlciA9IHRleHQyLnByZXZpb3VzVGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKLSAg
ICAgICAgc2hvdWxkQmVUcnVlKCJ0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJr
ZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIik7Ci0gICAg
ICAgIAotICAgICAgICAKKyAgICAgICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dDIuYWNjZXNzaWJp
bGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDIuY2hp
bGRBdEluZGV4KDIpKSIsICJ0cnVlIik7CisKICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgdGV4
dCBub2RlIHdpdGggbGluZSBicmVha3MsIHdlIGNhbiBnbyB0aHJvdWdoIGl0IHdpdGggbmV4dC9w
cmV2aW91cyBjYWxsLgogICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNj
ZXNzaWJsZUVsZW1lbnRCeUlkKCJ0ZXh0NCIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0
ZXh0LnRleHRNYXJrZXJSYW5nZUZvckVsZW1lbnQodGV4dCk7CkBAIC0xNjMsODcgKzE3Nyw2NCBA
QCBmCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJy
ZW50TWFya2VyKTsKICAgICAgICAgfQogICAgICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1h
cmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIs
ICInZiciKTsKLSAgICAgICAgCisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5n
Rm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInZiciKTsKKwogICAgICAgICBlbmRN
YXJrZXIgPSB0ZXh0LmVuZFRleHRNYXJrZXJGb3JUZXh0TWFya2VyUmFuZ2UodGV4dE1hcmtlclJh
bmdlKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IGVuZE1hcmtlcjsKLSAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCA3OyBpKyspIHsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCA3OyBp
KyspCiAgICAgICAgICAgICBjdXJyZW50TWFya2VyID0gdGV4dC5wcmV2aW91c1RleHRNYXJrZXIo
Y3VycmVudE1hcmtlcik7Ci0gICAgICAgIH0KICAgICAgICAgbWFya2VyUmFuZ2UgPSB0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMoc3RhcnRNYXJrZXIsIGN1cnJlbnRNYXJrZXIpCi0gICAg
ICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ2EnIik7Ci0gICAgICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkiLCAiJ2EnIik7CisKICAgICAgICAgLy8g
VGVzdCBjYXNlIHdpdGggZW1vamkuCiAgICAgICAgIHRleHQgPSBhY2Nlc3NpYmlsaXR5Q29udHJv
bGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQ1Iik7CiAgICAgICAgIHZhciBlbW9qaVRl
eHRNYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAg
ICAgICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtl
clJhbmdlKSIsICI0Iik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQudGV4dE1hcmtl
clJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSIsICI0Iik7CiAgICAgICAgIC8vIE1h
a2Ugc3VyZSBuYXZpZ2F0aW5nIG5leHQvcHJldmlvdXMgdGV4dCBtYXJrZXIgaXMgYnkgZW1vamku
CiAgICAgICAgIHN0YXJ0TWFya2VyID0gdGV4dC5zdGFydFRleHRNYXJrZXJGb3JUZXh0TWFya2Vy
UmFuZ2UoZW1vamlUZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDIs
IHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iPJyIpOworICAgICAg
ICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRl
eHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkp
IiwgIifwn5iPJyIpOwogICAgICAgICByZXN1bHQgPSBiYWNrd2FyZHMoMSwgcmVzdWx0LnByZXZp
b3VzLCByZXN1bHQuY3VycmVudCwgdGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmlu
Z0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0
LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIifwn5iDJyIpOwotICAgICAgICAKKyAgICAg
ICAgb3V0cHV0ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50
ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQp
KSIsICIn8J+YgyciKTsKKwogICAgICAgICAvLyBUZXN0IGNhc2Ugd2l0aCBjb2xsYXBzZWQgd2hp
dGVzcGFjZS4KICAgICAgICAgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2li
bGVFbGVtZW50QnlJZCgidGV4dDYiKTsKICAgICAgICAgdmFyIGNvbGxhcHNlZFdoaXRlc3BhY2VN
YXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yRWxlbWVudCh0ZXh0KTsKLSAgICAg
ICAgc2hvdWxkQmUoInRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3Bh
Y2VNYXJrZXJSYW5nZSkiLCAiMyIpOworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnRl
eHRNYXJrZXJSYW5nZUxlbmd0aChjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpIiwgIjMi
KTsKICAgICAgICAgc3RhcnRNYXJrZXIgPSB0ZXh0LnN0YXJ0VGV4dE1hcmtlckZvclRleHRNYXJr
ZXJSYW5nZShjb2xsYXBzZWRXaGl0ZXNwYWNlTWFya2VyUmFuZ2UpOwogICAgICAgICByZXN1bHQg
PSBmb3J3YXJkKDEsIHByZXZpb3VzTWFya2VyLCBzdGFydE1hcmtlciwgdGV4dCk7Ci0gICAgICAg
IHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIiwgIidhJyIp
OworICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5n
ZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQu
Y3VycmVudCkpIiwgIidhJyIpOwogICAgICAgICByZXN1bHQgPSBmb3J3YXJkKDEsIHJlc3VsdC5w
cmV2aW91cywgcmVzdWx0LmN1cnJlbnQsIHRleHQpOwotICAgICAgICBzaG91bGRCZSgidGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJl
c3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICciKTsKKyAgICAgICAgb3V0cHV0
ICs9IGV4cGVjdCgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2Vy
UmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSIsICInICci
KTsKICAgICAgICAgcmVzdWx0ID0gZm9yd2FyZCgxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5j
dXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtl
clJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJl
c3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2InIik7CiAgICAgICAgIHJlc3Vs
dCA9IGJhY2t3YXJkcygxLCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsK
LSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4
dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSki
LCAiJyAnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlvdXMs
IHJlc3VsdC5jdXJyZW50KSkiLCAiJyAnIik7CiAgICAgICAgIHJlc3VsdCA9IGJhY2t3YXJkcygx
LCByZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50LCB0ZXh0KTsKLSAgICAgICAgc2hvdWxk
QmUoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkiLCAiJ2EnIik7Ci0gICAg
ICAgIAorICAgICAgICBvdXRwdXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1
bHQuY3VycmVudCkpIiwgIidhJyIpOworCiAgICAgICAgIC8vIFRlc3QgY2FzZSB3aXRoIHJlcGxh
Y2VkIGVsZW1lbnRzIChzaG91bGQgdXNlIG9iamVjdCByZXBsYWNlbWVudCBjaGFyYWN0ZXIpLgog
ICAgICAgICB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJ0ZXh0NyIpOwogICAgICAgICB0ZXh0TWFya2VyUmFuZ2UgPSB0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvckVsZW1lbnQodGV4dCk7Ci0gICAgICAgIHNob3VsZEJlKCJ0ZXh0LnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIiwgIidhdWRpb1x1RkZGQ2ZpbGUnIik7Cisg
ICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRl
eHRNYXJrZXJSYW5nZSkiLCAiJ2F1ZGlvXHVGRkZDZmlsZSciKTsKICAgICAgICAgY3VycmVudE1h
cmtlciA9IHRleHQuc3RhcnRUZXh0TWFya2VyRm9yVGV4dE1hcmtlclJhbmdlKHRleHRNYXJrZXJS
YW5nZSk7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgNjsgaSsrKSB7CiAgICAgICAgICAg
ICBwcmV2aW91c01hcmtlciA9IGN1cnJlbnRNYXJrZXI7CiAgICAgICAgICAgICBjdXJyZW50TWFy
a2VyID0gdGV4dC5uZXh0VGV4dE1hcmtlcihjdXJyZW50TWFya2VyKTsKICAgICAgICAgfQogICAg
ICAgICBtYXJrZXJSYW5nZSA9IHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhwcmV2aW91
c01hcmtlciwgY3VycmVudE1hcmtlcikKLSAgICAgICAgc2hvdWxkQmUoInRleHQuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOworICAgICAgICBvdXRw
dXQgKz0gZXhwZWN0KCJ0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSki
LCAiJ1x1RkZGQyciKTsKICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQuZW5kVGV4dE1hcmtl
ckZvclRleHRNYXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpOwogICAgICAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IDU7IGkrKykgewogICAgICAgICAgICAgcHJldmlvdXNNYXJrZXIgPSBjdXJyZW50
TWFya2VyOwogICAgICAgICAgICAgY3VycmVudE1hcmtlciA9IHRleHQucHJldmlvdXNUZXh0TWFy
a2VyKGN1cnJlbnRNYXJrZXIpOwogICAgICAgICB9CiAgICAgICAgIG1hcmtlclJhbmdlID0gdGV4
dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
KQotICAgICAgICBzaG91bGRCZSgidGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2Vy
UmFuZ2UpIiwgIidcdUZGRkMnIik7CisgICAgICAgIG91dHB1dCArPSBleHBlY3QoInRleHQuc3Ry
aW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSIsICInXHVGRkZDJyIpOwogCi0gICAg
ICAgIGZ1bmN0aW9uIGZvcndhcmQoY291bnQsIHByZXZpb3VzTWFya2VyLCBjdXJyZW50TWFya2Vy
LCBvYmopIHsKLSAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewot
ICAgICAgICAgICAgICAgIHByZXZpb3VzTWFya2VyID0gY3VycmVudE1hcmtlcjsKLSAgICAgICAg
ICAgICAgICBjdXJyZW50TWFya2VyID0gb2JqLm5leHRUZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIp
OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICBw
cmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAgICAgICAgICAgY3VycmVudDogY3VycmVu
dE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZnVu
Y3Rpb24gYmFja3dhcmRzKGNvdW50LCBwcmV2aW91c01hcmtlciwgY3VycmVudE1hcmtlciwgb2Jq
KSB7Ci0gICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKLSAgICAg
ICAgICAgICAgICBwcmV2aW91c01hcmtlciA9IG9iai5wcmV2aW91c1RleHRNYXJrZXIocHJldmlv
dXNNYXJrZXIpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNYXJrZXIgPSBvYmoucHJldmlvdXNU
ZXh0TWFya2VyKGN1cnJlbnRNYXJrZXIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICBwcmV2aW91czogcHJldmlvdXNNYXJrZXIsCi0gICAgICAg
ICAgICAgICAgY3VycmVudDogY3VycmVudE1hcmtlcgotICAgICAgICAgICAgfTsKLSAgICAgICAg
fQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudCIpLnN0eWxlLnZpc2li
aWxpdHkgPSAiaGlkZGVuIjsKKyAgICAgICAgZGVidWcob3V0cHV0KTsKICAgICB9Ci0KIDwvc2Ny
aXB0PgotCi08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9z
Y3JpcHQ+CiA8L2JvZHk+CiA8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Rl
eHQtbWFya2VyL3RleHQtbWFya2VyLXByZXZpb3VzLW5leHQtZXhwZWN0ZWQudHh0CmluZGV4IDI5
MjY0MWE3ZTAzOC4uNWEwYTMyYzI4ZDcwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0
eS90ZXh0LW1hcmtlci90ZXh0LW1hcmtlci1wcmV2aW91cy1uZXh0LWV4cGVjdGVkLnR4dApAQCAt
MSw1MiArMSw0MCBAQAotdGV4dAotCi10ZXh0MQotYyAgZAotCi1jYW4ndCBzZWxlY3QKLWFiYyBk
ZSBmCi3wn5iD8J+YjwotCi1hIGIKLQotYXVkaW9maWxlCi0KIFRoaXMgdGVzdHMgdGhlIG5leHQv
cHJldmlvdXMgdGV4dCBtYXJrZXIgZnVuY3Rpb25zIGFyZSBpbXBsZW1lbnRlZCBjb3JyZWN0bHku
CiAKLU9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMs
IGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KLQotCi1QQVNTIHRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgaXMgNAotUEFTUyB0ZXh0LmFjY2Vzc2liaWxpdHlF
bGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydE1hcmtlcikuaXNFcXVhbCh0ZXh0KSBpcyB0cnVlCi1Q
QVNTIHRleHQuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGVuZE1hcmtlcikuaXNF
cXVhbCh0ZXh0KSBpcyB0cnVlCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1h
cmtlclJhbmdlKSBpcyBuZXdsaW5lCi1QQVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdl
KG1hcmtlclJhbmdlKSBpcyAndCcKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2Uo
bWFya2VyUmFuZ2UpIGlzIG5ld2xpbmUKLVBBU1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFu
Z2UobWFya2VyUmFuZ2UpIGlzICd0JyArIG5ld2xpbmUKLVBBU1MgdGV4dDIudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZTIpIGlzIDUKK1BBU1M6IHRleHQudGV4dE1hcmtlclJh
bmdlTGVuZ3RoKHRleHRNYXJrZXJSYW5nZSkgPT09IDQKK1BBU1M6IHRleHQuYWNjZXNzaWJpbGl0
eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0TWFya2VyKS5pc0VxdWFsKHRleHQpID09PSB0cnVl
CitQQVNTOiB0ZXh0LmFjY2Vzc2liaWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihlbmRNYXJrZXIp
LmlzRXF1YWwodGV4dCkgPT09IHRydWUKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJh
bmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4dE1h
cmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gbmV3bGluZQorUEFTUzogdGV4dC5zdHJpbmdGb3JU
ZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAndCcgKyBuZXdsaW5lCitQQVNTOiB0ZXh0
Mi50ZXh0TWFya2VyUmFuZ2VMZW5ndGgodGV4dE1hcmtlclJhbmdlMikgPT09IDUKIE9iamVjdCBz
dHJpbmcgZm9yIHJhbmdlOiBjIFtBVFRBQ0hNRU5UXSBkCi1QQVNTIHRleHQyLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2QnCi1QQVNTIHRleHQyLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJzEnCi1QQVNTIHRleHQzLnN0cmluZ0ZvclRl
eHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2VjdCcKLVBBU1MgdGV4dDMuc3RyaW5nRm9y
VGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAnc2VsJwotUEFTUyAhcHN3LmFjY2Vzc2li
aWxpdHlFbGVtZW50Rm9yVGV4dE1hcmtlcihzdGFydCkgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nl
c3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0
MykgaXMgdHJ1ZQotUEFTUyB0ZXh0Mi5hY2Nlc3NpYmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIo
Y3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5jaGlsZEF0SW5kZXgoMikpIGlzIHRydWUKLVBB
U1MgdGV4dC5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpIGlzICdmJwotUEFT
UyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ2EnCi1QQVNT
IHRleHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSBpcyA0Ci1Q
QVNTIHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9y
TWFya2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmI8nCi1QQVNT
IHRleHQuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFy
a2VycyhyZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgaXMgJ/CfmIMnCi1QQVNTIHRl
eHQudGV4dE1hcmtlclJhbmdlTGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkg
aXMgMwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJS
YW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwot
UEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZv
ck1hcmtlcnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0
ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtl
cnMocmVzdWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdiJwotUEFTUyB0ZXh0LnN0
cmluZ0ZvclRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVz
dWx0LnByZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICcgJwotUEFTUyB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpIGlzICdhJwotUEFTUyB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0TWFya2VyUmFuZ2UpIGlzICdhdWRpb++/vGZpbGUnCi1QQVNTIHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSBpcyAn77+8JwotUEFTUyB0ZXh0
LnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgaXMgJ++/vCcKK1BBU1M6IHRl
eHQyLnN0cmluZ0ZvclRleHRNYXJrZXJSYW5nZShtYXJrZXJSYW5nZSkgPT09ICdkJworUEFTUzog
dGV4dDIuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJzEnCitQQVNT
OiB0ZXh0My5zdHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAnZWN0Jwor
UEFTUzogdGV4dDMuc3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKG1hcmtlclJhbmdlKSA9PT0gJ3Nl
bCcKK1BBU1M6ICFwc3cuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKHN0YXJ0KSA9
PT0gdHJ1ZQorUEFTUzogdGV4dDIuYWNjZXNzaWJpbGl0eUVsZW1lbnRGb3JUZXh0TWFya2VyKGN1
cnJlbnRNYXJrZXIpLmlzRXF1YWwodGV4dDMpID09PSB0cnVlCitQQVNTOiB0ZXh0Mi5hY2Nlc3Np
YmlsaXR5RWxlbWVudEZvclRleHRNYXJrZXIoY3VycmVudE1hcmtlcikuaXNFcXVhbCh0ZXh0Mi5j
aGlsZEF0SW5kZXgoMikpID09PSB0cnVlCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZShtYXJrZXJSYW5nZSkgPT09ICdmJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFya2Vy
UmFuZ2UobWFya2VyUmFuZ2UpID09PSAnYScKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdlTGVu
Z3RoKGVtb2ppVGV4dE1hcmtlclJhbmdlKSA9PT0gNAorUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0
TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91
cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJ/CfmI8nCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRN
YXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnByZXZpb3Vz
LCByZXN1bHQuY3VycmVudCkpID09PSAn8J+YgycKK1BBU1M6IHRleHQudGV4dE1hcmtlclJhbmdl
TGVuZ3RoKGNvbGxhcHNlZFdoaXRlc3BhY2VNYXJrZXJSYW5nZSkgPT09IDMKK1BBU1M6IHRleHQu
c3RyaW5nRm9yVGV4dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2Vycyhy
ZXN1bHQucHJldmlvdXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICdhJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3Vs
dC5wcmV2aW91cywgcmVzdWx0LmN1cnJlbnQpKSA9PT0gJyAnCitQQVNTOiB0ZXh0LnN0cmluZ0Zv
clRleHRNYXJrZXJSYW5nZSh0ZXh0LnRleHRNYXJrZXJSYW5nZUZvck1hcmtlcnMocmVzdWx0LnBy
ZXZpb3VzLCByZXN1bHQuY3VycmVudCkpID09PSAnYicKK1BBU1M6IHRleHQuc3RyaW5nRm9yVGV4
dE1hcmtlclJhbmdlKHRleHQudGV4dE1hcmtlclJhbmdlRm9yTWFya2VycyhyZXN1bHQucHJldmlv
dXMsIHJlc3VsdC5jdXJyZW50KSkgPT09ICcgJworUEFTUzogdGV4dC5zdHJpbmdGb3JUZXh0TWFy
a2VyUmFuZ2UodGV4dC50ZXh0TWFya2VyUmFuZ2VGb3JNYXJrZXJzKHJlc3VsdC5wcmV2aW91cywg
cmVzdWx0LmN1cnJlbnQpKSA9PT0gJ2EnCitQQVNTOiB0ZXh0LnN0cmluZ0ZvclRleHRNYXJrZXJS
YW5nZSh0ZXh0TWFya2VyUmFuZ2UpID09PSAnYXVkaW/vv7xmaWxlJworUEFTUzogdGV4dC5zdHJp
bmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworUEFTUzogdGV4dC5z
dHJpbmdGb3JUZXh0TWFya2VyUmFuZ2UobWFya2VyUmFuZ2UpID09PSAn77+8JworCiBQQVNTIHN1
Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCiAKIFRFU1QgQ09NUExFVEUKIAorCisKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>