<?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>194435</bug_id>
          
          <creation_ts>2019-02-08 05:44:28 -0800</creation_ts>
          <short_desc>[ESNext] Implement private accessors</short_desc>
          <delta_ts>2021-02-15 14:41:14 -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>JavaScriptCore</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>
          <dependson>174212</dependson>
    
    <dependson>194434</dependson>
          <blocked>219181</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Caio Lima">ticaiolima</reporter>
          <assigned_to name="Caio Lima">ticaiolima</assigned_to>
          <cc>chi187</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mike</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1504160</commentid>
    <comment_count>0</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-02-08 05:44:28 -0800</bug_when>
    <thetext>Private accessors are specified on https://tc39.github.io/proposal-private-methods/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1539407</commentid>
    <comment_count>1</comment_count>
      <attachid>370695</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-05-27 10:00:12 -0700</bug_when>
    <thetext>Created attachment 370695
WIP - Patch

This Patch is dependent on https://bugs.webkit.org/show_bug.cgi?id=194434. WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1548860</commentid>
    <comment_count>2</comment_count>
      <attachid>373127</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2019-06-28 10:19:15 -0700</bug_when>
    <thetext>Created attachment 373127
WIP - Patch

This Patch doesn&apos;t apply to trunk, since it is based on top of https://bugs.webkit.org/show_bug.cgi?id=194434</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623458</commentid>
    <comment_count>3</comment_count>
      <attachid>391861</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-27 07:23:31 -0800</bug_when>
    <thetext>Created attachment 391861
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623465</commentid>
    <comment_count>4</comment_count>
      <attachid>391866</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-02-27 07:36:41 -0800</bug_when>
    <thetext>Created attachment 391866
WIP - Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1709429</commentid>
    <comment_count>5</comment_count>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2020-11-20 02:49:13 -0800</bug_when>
    <thetext>*** Bug 219182 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727540</commentid>
    <comment_count>6</comment_count>
      <attachid>419845</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-10 08:03:03 -0800</bug_when>
    <thetext>Created attachment 419845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727635</commentid>
    <comment_count>7</comment_count>
      <attachid>419866</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-10 10:59:29 -0800</bug_when>
    <thetext>Created attachment 419866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727727</commentid>
    <comment_count>8</comment_count>
      <attachid>419866</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-10 13:05:26 -0800</bug_when>
    <thetext>Comment on attachment 419866
Patch

I&apos;ve found a couple of bugs when using private identifiers instead of common identifiers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727837</commentid>
    <comment_count>9</comment_count>
      <attachid>419911</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-10 15:08:21 -0800</bug_when>
    <thetext>Created attachment 419911
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728108</commentid>
    <comment_count>10</comment_count>
      <attachid>419994</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-11 08:47:33 -0800</bug_when>
    <thetext>Created attachment 419994
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728278</commentid>
    <comment_count>11</comment_count>
      <attachid>419994</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-11 13:46:00 -0800</bug_when>
    <thetext>Comment on attachment 419994
Patch

r- because I&apos;ve found another bug on postfix/prefix nodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728324</commentid>
    <comment_count>12</comment_count>
      <attachid>420052</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-11 15:29:05 -0800</bug_when>
    <thetext>Created attachment 420052
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728326</commentid>
    <comment_count>13</comment_count>
      <attachid>420052</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-11 15:30:17 -0800</bug_when>
    <thetext>Comment on attachment 420052
WIP Patch

This is adding initial support for private accessors and postfix/prefix nodes. Tests are still needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728563</commentid>
    <comment_count>14</comment_count>
      <attachid>420127</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-12 08:39:00 -0800</bug_when>
    <thetext>Created attachment 420127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1728984</commentid>
    <comment_count>15</comment_count>
      <attachid>420127</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-02-14 01:45:40 -0800</bug_when>
    <thetext>Comment on attachment 420127
Patch

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

r=me with comments.

&gt; Source/JavaScriptCore/ChangeLog:37
&gt; +        new_object         dst:loc12, inlineCapacity:2 // this is the object to store getter and setter pair

Can we have a FIXME about using GetterSetter instead?

&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3000
&gt; +            if (!excludedNames.contains(entry.key.get())) {
&gt; +                result.add(entry.key, entry.value);
&gt;                  excludedNames.add(entry.key.get());
&gt; +            }

contains &amp; add is duplicate cost. Let&apos;s do,

auto addResult = excludedNames.add(entry.key.get());
if (addResult.isNewEntry)
    result.add(entry.key, entry.value);

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:583
&gt; +    typedef std::pair&lt;PropertyNode*, PropertyNode*&gt; GetterSetterPair;
&gt; +    typedef HashMap&lt;UniquedStringImpl*, GetterSetterPair, IdentifierRepHash&gt; GetterSetterMap;

Use `using` instead for new code.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:588
&gt; +    for (; p; p = p-&gt;m_next) {

Let&apos;s not use p variable here. This is used for the latter iteration. So, let&apos;s move

PropertyListNode* p = this;
RegisterID* dst = nullptr;

just before // Fast case: this loop just handles regular value properties.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:601
&gt; +        if (!(p-&gt;m_node-&gt;type() &amp; (PropertyNode::PrivateGetter | PropertyNode::PrivateSetter)))
&gt; +            continue;
&gt; +
&gt; +        // We group private getters and setters to store them in a object
&gt; +        GetterSetterPair pair(p-&gt;m_node, static_cast&lt;PropertyNode*&gt;(nullptr));
&gt; +        GetterSetterMap::AddResult result = privateAccessorMap.add(p-&gt;m_node-&gt;name()-&gt;impl(), pair);
&gt; +        auto&amp; resultPair = result.iterator-&gt;value;
&gt; +        // If the map already contains an element with node-&gt;name(),
&gt; +        // we need to store this node in the second part.
&gt; +        if (!result.isNewEntry)
&gt; +            resultPair.second = p-&gt;m_node;
&gt; +        continue;
&gt; +    }

Can we collect this information into PropertyListNode when parsing?
private getter / setter is not so frequently seen. We should not iterate every time.
Like,

if (hasPrivateGettersOrSetters()) {
    GetterSetterMap privateAccessorMap;
    for (; p; p = p-&gt;m_next) {
        ...
    }
    ...
    for (auto&amp; it : privateAccessorMap) {
        ...
    }
}

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:603
&gt; +    // Then we declare private accessos

accessos =&gt; accessors.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:609
&gt; +            dst = pair.first-&gt;isInstanceClassProperty() ? prototype : dstOrConstructor;

Let&apos;s use block local variable instead of dst.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:628
&gt; +            generator.emitDirectPutById(getterSetterObj.get(), setterOrGetterIdent, value.get());
&gt; +        }
&gt;  
&gt; +        if (pair.second) {
&gt; +            dst = pair.second-&gt;isInstanceClassProperty() ? prototype : dstOrConstructor;
&gt; +            RefPtr&lt;RegisterID&gt; value = generator.emitNode(pair.second-&gt;m_assign);
&gt; +            if (pair.second-&gt;needsSuperBinding())
&gt; +                emitPutHomeObject(generator, value.get(), dst);
&gt; +            auto setterOrGetterIdent = pair.second-&gt;m_type &amp; PropertyNode::PrivateGetter
&gt; +                ? generator.propertyNames().builtinNames().getPrivateName()
&gt; +                : generator.propertyNames().builtinNames().setPrivateName();
&gt; +            generator.emitDirectPutById(getterSetterObj.get(), setterOrGetterIdent, value.get());
&gt; +        }

They are largely duplicate. Please add lambda to dedupe code.

if (pair.first)
    xxxxx(pair.first);
if (pair.second)
    xxxxx(pair.second);

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:983
&gt;              RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Use RefPtr&lt;RegisterID&gt;.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:993
&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Use `RefPtr&lt;RegisterID&gt; privateBrandSymbol`.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1008
&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1010
&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);

&quot;Trying to access an undefined private getter&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1048
&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1068
&gt;              generator.emitThrowTypeError(&quot;Trying to access a not defined private setter&quot;);

&quot;Trying to access an undefined private setter&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2413
&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Ditto. Please check the same things too.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2424
&gt; +        RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2435
&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);

&quot;Trying to access an undefined private getter&quot;

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2453
&gt; +        generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2702
&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2706
&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private setter&quot;);

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2713
&gt; +        RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2723
&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);

Ditto.

&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2741
&gt; +        generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);

Ditto.

&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:129
&gt; +        if (currentEntry.isSetter() || currentEntry.isMethod() || !currentEntry.isGetter())

Is `currentEntry.isSetter() || currentEntry.isMethod()` necessary?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:173
&gt; +bool VariableEnvironment::declarePrivateGetter(const RefPtr&lt;UniquedStringImpl&gt;&amp; identifier)
&gt; +{
&gt; +    if (!m_rareData)
&gt; +        m_rareData = WTF::makeUnique&lt;VariableEnvironment::RareData&gt;();
&gt; +
&gt; +    auto findResult = m_rareData-&gt;m_privateNames.find(identifier);
&gt; +
&gt; +    if (findResult == m_rareData-&gt;m_privateNames.end()) {
&gt; +        PrivateNameEntry meta(PrivateNameEntry::Traits::IsDeclared | PrivateNameEntry::Traits::IsGetter);
&gt; +
&gt; +        auto entry = VariableEnvironmentEntry();
&gt; +        entry.setIsPrivateGetter();
&gt; +        entry.setIsConst();
&gt; +        entry.setIsCaptured();
&gt; +        m_map.add(identifier, entry);
&gt; +
&gt; +        auto addResult = m_rareData-&gt;m_privateNames.add(identifier, meta);
&gt; +        return addResult.isNewEntry;
&gt; +    }

Looks like declarePrivateGetter is largely duplicate to declarePrivateSetter. Could you dedupe the code?

&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:177
&gt; +        if (currentEntry.isGetter() || currentEntry.isMethod() || !currentEntry.isSetter())

Is `currentEntry.isGetter() || currentEntry.isMethod()` necessary?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729302</commentid>
    <comment_count>16</comment_count>
      <attachid>420127</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-15 12:42:55 -0800</bug_when>
    <thetext>Comment on attachment 420127
Patch

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

Thank you very much for the review!

&gt;&gt; Source/JavaScriptCore/ChangeLog:37
&gt;&gt; +        new_object         dst:loc12, inlineCapacity:2 // this is the object to store getter and setter pair
&gt; 
&gt; Can we have a FIXME about using GetterSetter instead?

Definitely yes.

&gt;&gt; Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3000
&gt;&gt; +            }
&gt; 
&gt; contains &amp; add is duplicate cost. Let&apos;s do,
&gt; 
&gt; auto addResult = excludedNames.add(entry.key.get());
&gt; if (addResult.isNewEntry)
&gt;     result.add(entry.key, entry.value);

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:583
&gt;&gt; +    typedef HashMap&lt;UniquedStringImpl*, GetterSetterPair, IdentifierRepHash&gt; GetterSetterMap;
&gt; 
&gt; Use `using` instead for new code.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:588
&gt;&gt; +    for (; p; p = p-&gt;m_next) {
&gt; 
&gt; Let&apos;s not use p variable here. This is used for the latter iteration. So, let&apos;s move
&gt; 
&gt; PropertyListNode* p = this;
&gt; RegisterID* dst = nullptr;
&gt; 
&gt; just before // Fast case: this loop just handles regular value properties.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:601
&gt;&gt; +    }
&gt; 
&gt; Can we collect this information into PropertyListNode when parsing?
&gt; private getter / setter is not so frequently seen. We should not iterate every time.
&gt; Like,
&gt; 
&gt; if (hasPrivateGettersOrSetters()) {
&gt;     GetterSetterMap privateAccessorMap;
&gt;     for (; p; p = p-&gt;m_next) {
&gt;         ...
&gt;     }
&gt;     ...
&gt;     for (auto&amp; it : privateAccessorMap) {
&gt;         ...
&gt;     }
&gt; }

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:609
&gt;&gt; +            dst = pair.first-&gt;isInstanceClassProperty() ? prototype : dstOrConstructor;
&gt; 
&gt; Let&apos;s use block local variable instead of dst.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:628
&gt;&gt; +        }
&gt; 
&gt; They are largely duplicate. Please add lambda to dedupe code.
&gt; 
&gt; if (pair.first)
&gt;     xxxxx(pair.first);
&gt; if (pair.second)
&gt;     xxxxx(pair.second);

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:983
&gt;&gt;              RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Use RefPtr&lt;RegisterID&gt;.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:993
&gt;&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Use `RefPtr&lt;RegisterID&gt; privateBrandSymbol`.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1010
&gt;&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);
&gt; 
&gt; &quot;Trying to access an undefined private getter&quot;

I changed it, but I&apos;m a bit worried that this can cause some confusion about about JS `undefined` value.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1048
&gt;&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:1068
&gt;&gt;              generator.emitThrowTypeError(&quot;Trying to access a not defined private setter&quot;);
&gt; 
&gt; &quot;Trying to access an undefined private setter&quot;

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2413
&gt;&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Ditto. Please check the same things too.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2424
&gt;&gt; +        RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2435
&gt;&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);
&gt; 
&gt; &quot;Trying to access an undefined private getter&quot;

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2453
&gt;&gt; +        generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2702
&gt;&gt; +            RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2706
&gt;&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private setter&quot;);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2713
&gt;&gt; +        RegisterID* privateBrandSymbol = generator.emitGetPrivateBrand(generator.newTemporary(), scope.get());
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2723
&gt;&gt; +            generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp:2741
&gt;&gt; +        generator.emitThrowTypeError(&quot;Trying to access a not defined private getter&quot;);
&gt; 
&gt; Ditto.

Done.

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:129
&gt;&gt; +        if (currentEntry.isSetter() || currentEntry.isMethod() || !currentEntry.isGetter())
&gt; 
&gt; Is `currentEntry.isSetter() || currentEntry.isMethod()` necessary?

No, removed.

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:173
&gt;&gt; +    }
&gt; 
&gt; Looks like declarePrivateGetter is largely duplicate to declarePrivateSetter. Could you dedupe the code?

Done.

&gt;&gt; Source/JavaScriptCore/parser/VariableEnvironment.cpp:177
&gt;&gt; +        if (currentEntry.isGetter() || currentEntry.isMethod() || !currentEntry.isSetter())
&gt; 
&gt; Is `currentEntry.isGetter() || currentEntry.isMethod()` necessary?

Removed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729303</commentid>
    <comment_count>17</comment_count>
      <attachid>420350</attachid>
    <who name="Caio Lima">ticaiolima</who>
    <bug_when>2021-02-15 12:44:00 -0800</bug_when>
    <thetext>Created attachment 420350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729387</commentid>
    <comment_count>18</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-02-15 14:40:31 -0800</bug_when>
    <thetext>Committed r272883: &lt;https://commits.webkit.org/r272883&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420350.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1729388</commentid>
    <comment_count>19</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-02-15 14:41:14 -0800</bug_when>
    <thetext>&lt;rdar://problem/74366369&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>370695</attachid>
            <date>2019-05-27 10:00:12 -0700</date>
            <delta_ts>2019-06-28 10:19:15 -0700</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private_accessors.diff</filename>
            <type>text/plain</type>
            <size>40412</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFt
ZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGlj
YXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi41NTMyN2UwMmExNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMKQEAgLTAsMCArMSw5
MiBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCBy
aHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKwor
ICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJl
dzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFN5bnRheEVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAg
ICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICAgICAgc2V0ICNtKHUpIHt9
CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBm
dW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICAj
bTsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAg
ICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlz
Ll92ID0gdjsgfQorICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCith
c3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAg
ICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAg
ICAgICAgICAgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93
cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgI20oKSB7fQorICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAg
fQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHt9
CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNz
ZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAg
IGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIHNldCAjbSgp
IHt9CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50
aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFz
cyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgICAgICBzZXQgI20oKSB7fQor
ICAgICAgICAgICAgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNTkxMWZmYTQ1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDkxIEBA
CisvL0AgcnVuKCItLXVzZUNsYXNzRmllbGRzPXRydWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykg
eworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAg
dGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAi
ICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBj
cmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgICAg
ICBhY2Nlc3MobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBDKCk7CisgICAgfQorCisgICAgbGV0
IGMxID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworICAgIGxldCBjMiA9IGNyZWF0ZUFu
ZEluc3RhbnRpYXRlQ2xhc3MoKTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKGMx
KSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMyLmFjY2VzcyhjMiksICd0ZXN0Jyk7
CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMx
LmFjY2VzcyhjMik7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGMyLmFjY2VzcyhjMSk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIFMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnc3Vw
ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgc3VwZXJBY2Nlc3MoKSB7IHJldHVybiB0aGlzLiNtOyB9
CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMgeworICAgICAgICBnZXQgI20oKSB7IHJl
dHVybiAnc3ViY2xhc3MnOyB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0
dXJuIHRoaXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICdzdWJjbGFzcycpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5zdXBlckFjY2VzcygpLCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGxldCBz
ID0gbmV3IFMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHMuc3VwZXJBY2Nlc3MoKSwgJ3N1cGVy
IGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBjLmFjY2Vzcy5jYWxsKHMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAg
ICAgICAgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nl
c3MoYyksICd0ZXN0Jyk7CisKKyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3Mobyk7CisgICAgfSk7Cit9KSgp
OworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFz
cy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iN2JlYWQ1N2U0ZAotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzCkBA
IC0wLDAgKzEsMTMyIEBACisvL0AgcnVuKCItLXVzZUNsYXNzRmllbGRzPXRydWUgLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24g
KCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChjKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRl
ciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAg
ICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtID0gJ3Rlc3Qn
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5l
ckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVy
QiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xh
c3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAg
IGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisK
KyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFz
cyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNt
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5u
ZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5l
ckIpLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNs
YXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBu
ZXZlciBleGVjdXRlJyk7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0
aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9k
KGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhv
ZCgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAg
ICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigp
OworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBp
bm5lckIubWV0aG9kKGlubmVyQik7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
bWV0aG9kKCksICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43ZDk5ZTNlMDIwMwotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qcwpA
QCAtMCwwICsxLDYzIEBACisvL0AgcnVuKCItLXVzZUNsYXNzRmllbGRzPXRydWUgLS11c2VQcml2
YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsK
KyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAg
ICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciAr
ICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24g
KCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQor
ICAgICAgICAKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcigpIHsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGMuYWNj
ZXNzUHJpdmF0ZU1lbWJlcigpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAg
IAorICAgICAgICBhY2Nlc3NQcml2YXRlTWVtYmVyKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI20g
PSB2OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGMuYWNjZXNzUHJpdmF0
ZU1lbWJlcigndGVzdCcpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgCisgICAg
ICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhpcy4jbSA9IHY7Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2YXRlTWVtYmVy
KCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCmluZGV4IGUyNzA3MjEw
ZGFjLi5iMzVmZGNlMzZhZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTIxLDMgKzIxLDM2IEBAIGxl
dCBhc3NlcnQgPSB7CiAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgp
LCAndGVzdCcpOwogfSkoKTsKIAorKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhbGxHZXR0ZXJGcm9tRXZhbCgpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhp
czsKKyAgICAgICAgICAgIHJldHVybiBldmFsKCdzZWxmLiNtJyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxHZXR0
ZXJGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAg
ICAgICB9CisKKyAgICAgICAgY2FsbFNldHRlckZyb21FdmFsKHYpIHsKKyAgICAgICAgICAgIGxl
dCBzZWxmID0gdGhpczsKKyAgICAgICAgICAgIGV2YWwoJ3NlbGYuI20gPSB2Jyk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5jYWxsU2V0dGVyRnJvbUV2
YWwoJ3Rlc3QnKQorICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2
YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQwMGZiZjM4OGJmCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24t
ZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9A
IHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KworICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20oKScpOworICAgIH0KKworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9KSgp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJl
dHVybiAndGVzdCc7IH0KKworICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20nKTsKKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAn
dGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0
ZXItYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1j
aGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYWY0ZDhjZjNk
NGUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFu
ZC1jaGVjay5qcwpAQCAtMCwwICsxLDEwMCBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10
cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2Ft
ZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQor
ICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdv
dDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJy
b3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRj
aChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4
cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcyA9IGZ1
bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0
aGlzLl92ID0gdjsgfQorCisgICAgICAgICAgICBhY2Nlc3MobywgdikgeworICAgICAgICAgICAg
ICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbGV0IGMg
PSBuZXcgQygpOworICAgICAgICByZXR1cm4gYzsKKyAgICB9OworCisgICAgbGV0IGMxID0gY3Jl
YXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworICAgIGxldCBjMiA9IGNyZWF0ZUFuZEluc3RhbnRp
YXRlQ2xhc3MoKTsKKworICAgIGMxLmFjY2VzcyhjMSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMxLl92LCAndGVzdCcpOworICAgIGMyLmFjY2VzcyhjMiwgJ3Rlc3QnKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMyLl92LCAndGVzdCcpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIsICdmb28nKTsKKyAgICB9
KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
YzIuYWNjZXNzKGMxLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIFMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdiB9CisKKyAgICAg
ICAgc3VwZXJBY2Nlc3ModikgeyB0aGlzLiNtID0gdjsgfQorICAgIH0KKworICAgIGNsYXNzIEMg
ZXh0ZW5kcyBTIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdSA9IHY7IH0KKworICAgICAg
ICBhY2Nlc3ModikgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20gPSB2OworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYy5hY2Nlc3MoJ3Rlc3QnKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3UsICd0ZXN0Jyk7CisKKyAgICBjLnN1cGVyQWNjZXNz
KCdzdXBlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3N1cGVyIGNsYXNz
Jyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7CisgICAgcy5zdXBlckFjY2Vzcygnc3VwZXIgY2xh
c3MnKQorICAgIGFzc2VydC5zYW1lVmFsdWUocy5fdiwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzLmNh
bGwocywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBhY2Nl
c3MobywgdikgeworICAgICAgICAgICAgcmV0dXJuIG8uI20gPSB2OworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuYWNjZXNzKGMsICd0ZXN0Jyk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKG8s
ICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0
ZXItaW5uZXItY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAu
LjkwYzU3NWE2OGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1z
ZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxNTUgQEAKKy8vQCBydW4oIi0tdXNlQ2xh
c3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMg
IT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMg
KyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChl
eHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVk
RXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAg
IG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVy
QiA9IG5ldyBjLkIoKTsKKyAgICBpbm5lckIubWV0aG9kKGMsICd0ZXN0Jyk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBt
ZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAg
ICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAg
ICAgfQorCisgICAgICAgICAgICBnZXQgbSgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAg
ICAgICAgI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
bGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlubmVyQi5tZXRob2QoaW5uZXJCLCAndGVz
dCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm0sICd0ZXN0Jyk7CisKKyAgICBjLm1l
dGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdvdXRlciBj
bGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9
CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBCID0gY2xh
c3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0g
djsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3Qn
OyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlu
bmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIpOworICAgIH0pOworCisgICAgYy5t
ZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIg
Y2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAg
ICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBCID0gY2xhc3Mgewor
ICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3
IGMuQigpOworCQorICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIsICdmb28nKTsKKyAgICB9KTsKKworICAgIGMubWV0
aG9kKCdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNs
YXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAg
ICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAg
ICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAg
ICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5l
dyBjLkIoKTsKKworICAgIGlubmVyQi5tZXRob2QoaW5uZXJCLCAndGVzdDI2MicpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoaW5uZXJCLl92LCAndGVzdDI2MicpOworCisgICAgYy5tZXRob2QoJ291
dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsK
KworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5u
ZXJCLm1ldGhvZChjLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmlu
ZGV4IGQ2MmRlNzhlYTAxLi42Y2Q3NjUzM2ZmMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI5NDAs
NiArMjk0MCwzMCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjppc1ByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsg
KSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAg
IGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFw
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc1NldHRlcigpOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2
YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBt
YXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQo
aWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBpdC0+dmFsdWUuaXNHZXR0ZXIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCiB7CiAgICAgIGlmICghZW52aXJv
bm1lbnQucHJpdmF0ZU5hbWVzU2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGZiYTZkMjMyMGQ1Li5j
NGY0OTBkMTI1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTIwNCw2ICsxMjA0LDggQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25zdCBJ
ZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgaXNQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZp
ZXImKTsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYpOwog
CiAgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVudmly
b25tZW50Jik7CiAgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5k
ZXggZTc5ZjM0OGQ2ODEuLjFhMmQ0MWI0OTllIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC03MTMsNiArNzEzLDIwIEBA
IHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIp
IHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgc2V0dGVySWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2VuZXJhdG9yLnZtKCksIG1ha2VTdHJpbmcoU3RyaW5nKG5vZGUubmFtZSgp
LT5pbXBsKCkpLCAiLXNldHRlciIpKTsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShzZXR0ZXJJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0UHV0VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIHZhbHVlLmdldCgp
LCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxp
emF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChu
b2RlLnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcikgeworICAgICAgICAgICAg
SWRlbnRpZmllciBnZXR0ZXJJZGVudGlmaWVyID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnZW5l
cmF0b3Iudm0oKSwgbWFrZVN0cmluZyhTdHJpbmcobm9kZS5uYW1lKCktPmltcGwoKSksICItZ2V0
dGVyIikpOworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGdl
dHRlcklkZW50aWZpZXIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdl
bmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHZhciwgdmFsdWUuZ2V0KCksIERvTm90VGhyb3dJZk5v
dEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBy
b3BlcnR5TmFtZVJlZ2lzdGVyOwogICAgICAgICBpZiAobm9kZS5uYW1lKCkpCiAgICAgICAgICAg
ICBwcm9wZXJ0eU5hbWVSZWdpc3RlciA9IGdlbmVyYXRvci5lbWl0TG9hZChudWxscHRyLCAqbm9k
ZS5uYW1lKCkpOwpAQCAtODE5LDggKzgzMyw5IEBAIFJlZ2lzdGVySUQqIERvdEFjY2Vzc29yTm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVyCiBS
ZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUoQnl0ZWNvZGVHZW5l
cmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklEKiBiYXNlLCBSZWZQ
dHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7
Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsK
LSAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVy
KCkpOworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2
YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKQEAgLTgyOSw2ICs4NDQsMzIgQEAgUmVnaXN0
ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAg
IH0KIAorICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyTmFt
ZSkpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgZ2V0dGVySWRlbnRpZmllciA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZ2VuZXJhdG9yLnZtKCksIG1ha2VTdHJpbmcoU3RyaW5nKGlkZW50aWZp
ZXJOYW1lLmltcGwoKSksICItZ2V0dGVyIikpOworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0g
Z2VuZXJhdG9yLnZhcmlhYmxlKGdldHRlcklkZW50aWZpZXIpOworICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29w
ZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJh
c2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3Bl
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZv
dW5kKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZSk7
CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGRzdCwgZ2V0dGVyRnVuY3Rp
b24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbV9wb3NpdGlvbiwgbV9wb3NpdGlv
biwgbV9wb3NpdGlvbiwgRGVidWdnYWJsZUNhbGw6Olllcyk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZVNldHRlcihpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAg
ICAgICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBicmFuZCBjaGVjayB0byBmb2xsb3cgdGhlIHNw
ZWMKKyAgICAgICAgICAgIElkZW50aWZpZXIgc2V0dGVySWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2VuZXJhdG9yLnZtKCksIG1ha2VTdHJpbmcoU3RyaW5nKGlkZW50aWZpZXJO
YW1lLmltcGwoKSksICItc2V0dGVyIikpOworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKHNldHRlcklkZW50aWZpZXIpOworICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
KTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJh
dG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5n
ZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2Us
IHByaXZhdGVCcmFuZFN5bWJvbCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlw
ZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBnZXR0ZXIiKTsK
KyAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgIH0KKwogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRQcml2YXRlRmllbGRHZXQoZHN0LCBiYXNlLCBpZGVudGlmaWVyKCkpOwogICAg
IH0KIApAQCAtODUxLDggKzg5MiwyOCBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1
dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogewogICAg
IGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlk
ZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRp
Zmllck5hbWUpKSB7Ci0gICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZVNldHRl
cihpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgc2V0dGVySWRlbnRp
ZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2VuZXJhdG9yLnZtKCksIG1ha2VTdHJpbmco
U3RyaW5nKGlkZW50aWZpZXJOYW1lLmltcGwoKSksICItc2V0dGVyIikpOworICAgICAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKHNldHRlcklkZW50aWZpZXIpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisgICAgICAgICAgICAKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5l
bWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZh
ciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5l
cmF0b3IsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlz
UmVnaXN0ZXIoKSwgYmFzZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3Vt
ZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGFyZ3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVn
Z2FibGVDYWxsOjpZZXMpOworCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0K
KworICAgICAgICBib29sIGlzUHJpdmF0ZUdldHRlciA9IGdlbmVyYXRvci5pc1ByaXZhdGVHZXR0
ZXIoaWRlbnRpZmllck5hbWUpOworICAgICAgICBpZiAoaXNQcml2YXRlR2V0dGVyIHx8IGdlbmVy
YXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIG9wZXJhdGlvbklkZW50aWZpZXIgPSBpc1ByaXZhdGVHZXR0ZXIgPyBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGdlbmVyYXRvci52bSgpLCBtYWtlU3RyaW5nKFN0cmluZyhpZGVudGlmaWVy
TmFtZS5pbXBsKCkpLCAiLWdldHRlciIpKSA6IGlkZW50aWZpZXJOYW1lOworCisgICAgICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUob3BlcmF0aW9uSWRlbnRpZmllcik7
CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2
YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9Ob2RlQ29uc3RydWN0b3JzLmgKaW5kZXggZmI1MjI0Zjc3YjguLmU4ODk1YzM4MjUy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3Rv
cnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMu
aApAQCAtMjUzLDcgKzI1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAsIG1fdHlwZSh0
eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09IFN1cGVy
QmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQotICAgICAgICAs
IG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCkpKQor
ICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1l
dGhvZCB8IFByaXZhdGVHZXR0ZXIgfCBQcml2YXRlU2V0dGVyKSkpCiAgICAgICAgICwgbV9jbGFz
c0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9pc092
ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CkBAIC0yNjYsNyArMjY2LDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1
cGVyQmluZGluZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAg
ICwgbV9wdXRUeXBlKHB1dFR5cGUpCi0gICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIChQ
cml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKSkpCisgICAgICAgICwgbV9pc1ByaXZhdGUoISEo
dHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kIHwgUHJpdmF0ZUdldHRlciB8IFBy
aXZhdGVTZXR0ZXIpKSkKICAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1
bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNl
KQogICAgIHsKQEAgLTI3OSw3ICsyNzksNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBt
X3R5cGUodHlwZSkKICAgICAgICAgLCBtX25lZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9
PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKICAgICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAg
ICAgICAgLCBtX2lzUHJpdmF0ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRo
b2QpKSkKKyAgICAgICAgLCBtX2lzUHJpdmF0ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFBy
aXZhdGVNZXRob2QgfCBQcml2YXRlR2V0dGVyIHwgUHJpdmF0ZVNldHRlcikpKQogICAgICAgICAs
IG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19jYXN0PHVuc2lnbmVkPih0YWcpKQogICAgICAgICAs
IG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoZmFsc2UpCiAgICAgewpAQCAtMjkyLDcgKzI5Miw3
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1f
bmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5kaW5nID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQog
ICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBlKQotICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5
cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCkpKQorICAgICAgICAsIG1faXNQcml2
YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCB8IFByaXZhdGVHZXR0
ZXIgfCBQcml2YXRlU2V0dGVyKSkpCiAgICAgICAgICwgbV9jbGFzc0VsZW1lbnRUYWcoc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAgICAgICwgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0
ZShmYWxzZSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNTMx
YjdkZTEyZmYuLmM2MzU0YzViZjExIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CkBAIC03MDYsNyArNzA2LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFz
c0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsK
ICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJs
ZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQg
PSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2
LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsK
KyAgICAgICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIs
IFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQ
cml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRlciA9IDI1
NiwgUHJpdmF0ZUdldHRlciA9IDUxMiB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgOiB1aW50OF90
IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3Qg
SWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5n
LCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM2LDcgKzczNiw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAg
ICAgdW5zaWduZWQgbV90eXBlOworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxMDsKICAgICAg
ICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1f
cHV0VHlwZSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNQcml2YXRlIDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA3MTk0NDM4NWY0Ni4uOGM4OGNjOGNh
ZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI5MTYsNyAr
MjkxNiw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0
YS5pZGVudDsKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7
Ci0gICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9k
ZSAmJiAobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRj
aChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkpIHsKKyAg
ICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYm
IChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1hdGNoKERP
VUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0Y2goT1BFTkJSQUNLRVQpIHx8IChPcHRpb25z
Ojp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkpKSB7CiAgICAgICAg
ICAgICAgICAgaXNHZXR0ZXIgPSAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5nZXQ7CiAgICAgICAg
ICAgICAgICAgaXNTZXR0ZXIgPSAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5zZXQ7CiAgICAgICAg
ICAgICB9CkBAIC0yOTYwLDggKzI5NjAsMTkgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgIFRyZWVQ
cm9wZXJ0eSBwcm9wZXJ0eTsKICAgICAgICAgY29uc3QgYm9vbCBhbHdheXNTdHJpY3RJbnNpZGVD
bGFzcyA9IHRydWU7CiAgICAgICAgIGlmIChpc0dldHRlciB8fCBpc1NldHRlcikgewotICAgICAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCAoaXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6
IFByb3BlcnR5Tm9kZTo6U2V0dGVyKSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJp
dmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICBp
ZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgICAgIGlmIChpc1NldHRl
cikgeworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+
ZGVjbGFyZVByaXZhdGVTZXR0ZXIobV92bSwgKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJ
bnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJEZWNsYXJlZCBwcml2YXRlIHNldHRlciB3aXRo
IGFuIGFscmVhZHkgdXNlZCBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3Rh
dGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRl
U2V0dGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVHZXR0ZXIobV92bSwg
KmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24s
ICJEZWNsYXJlZCBwcml2YXRlIGdldHRlciB3aXRoIGFuIGFscmVhZHkgdXNlZCBuYW1lIik7Cisg
ICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+
KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0
PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAg
ICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBl
IHwgKGlzR2V0dGVyID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRl
cikpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNl
dHRlcihjb250ZXh0LCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywgdHlwZSwgbWV0aG9kU3RhcnQs
IENvbnN0cnVjdG9yS2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHBy
b3BlcnR5LCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAo
T3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0g
Q2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlICYmICFpc0dldHRlciAmJiAhaXNTZXR0ZXIpIHsKQEAgLTQyMTgsMTIgKzQy
MjksMTcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogCi0gICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIo
KSB8fCBtYXRjaChTVFJJTkcpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykg
eworICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCAoT3B0
aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpIHx8IG1fdG9r
ZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykgewogICAgICAgICBzdHJpbmdQcm9wZXJ0eU5h
bWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRh
ZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1f
dm0tPnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFy
ZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsKICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmICpzdHJpbmdQcm9w
ZXJ0eU5hbWUgPT0gbV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAg
ICAiQ2Fubm90IGRlY2xhcmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3Rvcici
KTsKKworICAgICAgICBpZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6Tm8sICJDYW5ub3QgZGVjbGFy
ZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBvdXRzaWRlIGEgY2xhc3MiKTsKKyAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJD
YW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBhcyBzdGF0aWMiKTsKKyAg
ICAgICAgfQogICAgICAgICBuZXh0KCk7CiAgICAgfSBlbHNlIGlmIChtYXRjaChET1VCTEUpIHx8
IG1hdGNoKElOVEVHRVIpKSB7CiAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rva2Vu
Lm1fZGF0YS5kb3VibGVWYWx1ZTsKQEAgLTQyNDAsOSArNDI1NiwxNSBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0
ZXJTZXR0ZXIoVAogICAgIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpHZXR0ZXIpIHsKICAgICAg
ICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxp
c3QgZm9yIGdldHRlciBkZWZpbml0aW9uIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0aW9u
Iik7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlNl
dHRlcil7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBh
IHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRz
OjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3Rv
cktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBp
bmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBzZXR0
ZXIgZGVmaW5pdGlvbiIpOworICAgIH0gZWxzZSBpZiAodHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJp
dmF0ZVNldHRlcil7CisgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBl
Y3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBwcml2YXRlIHNldHRlciBkZWZpbml0aW9uIik7Cisg
ICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5h
bWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSwgZmFs
c2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVy
U3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fu
bm90IHBhcnNlIHNldHRlciBkZWZpbml0aW9uIik7CisgICAgfSBlbHNlIGlmICh0eXBlICYgUHJv
cGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKXsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BF
TlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgZ2V0dGVyIGRl
ZmluaXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpH
ZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwg
Z2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6
TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9CiAKICAg
ICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmgKaW5kZXggMTc2OTJiMzk4ODAuLmE4YTM3YTc0NGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKQEAgLTUxOSw2ICs1MTksNTAgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KIAorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJp
dmF0ZVNldHRlcihWTSogdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAg
ICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0
aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAg
IGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlU2V0dGVy
KGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0
IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAg
ICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgZGVjbGFy
ZSBpdCBzaW5jZSB3ZSBzdG9yZSBwcml2YXRlIHNldHRlcnMgb24gY2xhc3MKKyAgICAgICAgLy8g
c2NvcGUuCisgICAgICAgIElkZW50aWZpZXIgc2V0dGVySWRlbnRpZmllciA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcodm0sIG1ha2VTdHJpbmcoU3RyaW5nKGlkZW50LmltcGwoKSksICItc2V0dGVy
IikpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBk
ZWNsYXJlTGV4aWNhbFZhcmlhYmxlKCZzZXR0ZXJJZGVudGlmaWVyLCBmYWxzZSk7CisgICAgICAg
IEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERl
Y2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CisgICAgICAgIHVzZVZhcmlhYmxlKCZzZXR0ZXJJZGVu
dGlmaWVyLCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25k
aXRpb25hbGx5KHNldHRlcklkZW50aWZpZXIuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUdl
dHRlcihWTSogdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNT
RVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVz
dWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGJvb2wg
YWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50
KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgLy8gV2UgZGVjbGFyZSBpdCBz
aW5jZSB3ZSBzdG9yZSBwcml2YXRlIGdldHRlcnMgb24gY2xhc3MKKyAgICAgICAgLy8gc2NvcGUu
CisgICAgICAgIElkZW50aWZpZXIgZ2V0dGVySWRlbnRpZmllciA9IElkZW50aWZpZXI6OmZyb21T
dHJpbmcodm0sIG1ha2VTdHJpbmcoU3RyaW5nKGlkZW50LmltcGwoKSksICItZ2V0dGVyIikpOwor
ICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyYXRpb25SZXN1bHQgPSBkZWNsYXJl
TGV4aWNhbFZhcmlhYmxlKCZnZXR0ZXJJZGVudGlmaWVyLCBmYWxzZSk7CisgICAgICAgIEFTU0VS
VF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0
aW9uUmVzdWx0OjpWYWxpZCk7CisgICAgICAgIHVzZVZhcmlhYmxlKCZnZXR0ZXJJZGVudGlmaWVy
LCBmYWxzZSk7CisgICAgICAgIGFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRlVW5jb25kaXRpb25h
bGx5KGdldHRlcklkZW50aWZpZXIuaW1wbCgpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKwogICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZU5hbWUoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhp
Y2FsRGVjbGFyYXRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDMwMGNhY2VlYmRmLi4yNDYzZTQzMWM1OCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwCkBAIC0xNDEsNiArMTQxLDY2IEBAIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6
ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYKICAg
ICByZXR1cm4gIWFkZFJlc3VsdC5pc05ld0VudHJ5OwogfQogCitib29sIFZhcmlhYmxlRW52aXJv
bm1lbnQ6OmRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1w
bD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVE
YXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50UmFyZURhdGE+KCk7CisK
KyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlk
ZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBuZXdFbnRyeShQcml2YXRl
TmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzU2V0dGVyKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50
aWZpZXIsIG5ld0VudHJ5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgUHJp
dmF0ZU5hbWVFbnRyeSBjdXJyZW50RW50cnkgPSBmaW5kUmVzdWx0LT52YWx1ZTsKKyAgICBpZiAo
Y3VycmVudEVudHJ5LmlzRGVjbGFyZWQoKSkgeworICAgICAgICBpZiAoY3VycmVudEVudHJ5Lmlz
U2V0dGVyKCkgfHwgY3VycmVudEVudHJ5LmlzTWV0aG9kKCkgfHwgIWN1cnJlbnRFbnRyeS5pc0dl
dHRlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEg
ZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgICAgICBBU1NFUlQoY3VycmVudEVudHJ5Lmlz
R2V0dGVyKCkpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRFbnRy
eS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKKyAgICAgICAg
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNl
ZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1
cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQg
fCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKKyAgICBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3RW50cnkpOworICAgIHJldHVybiB0cnVl
OworfQorCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKGNv
bnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFt
X3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJs
ZUVudmlyb25tZW50UmFyZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1
bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0
ZU5hbWVFbnRyeSBuZXdFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQg
fCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICAgICAgbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBjdXJyZW50RW50cnkgPSBm
aW5kUmVzdWx0LT52YWx1ZTsKKyAgICBpZiAoY3VycmVudEVudHJ5LmlzRGVjbGFyZWQoKSkgewor
ICAgICAgICBpZiAoY3VycmVudEVudHJ5LmlzR2V0dGVyKCkgfHwgY3VycmVudEVudHJ5LmlzTWV0
aG9kKCkgfHwgIWN1cnJlbnRFbnRyeS5pc1NldHRlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAg
ICAgICBBU1NFUlQoY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpOworICAgICAgICBQcml2YXRlTmFt
ZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzR2V0dGVyKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0
KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisg
ICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBQ
cml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFt
ZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6Oklz
R2V0dGVyKTsKKyAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwg
bmV3RW50cnkpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFZhcmlhYmxlRW52aXJvbm1l
bnQ6OmRlY2xhcmVQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBp
ZGVudGlmaWVyKQogewogICAgIGlmICghbV9yYXJlRGF0YSkKQEAgLTI1Miw3ICszMTIsNyBAQCBW
YXJpYWJsZUVudmlyb25tZW50IENvbXBhY3RWYXJpYWJsZUVudmlyb25tZW50Ojp0b1ZhcmlhYmxl
RW52aXJvbm1lbnQoKSBjb25zdAogICAgICAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlID0g
bV92YXJpYWJsZU1ldGFkYXRhW2ldOwogICAgIH0KIAotICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1fcHJpdmF0ZUFjY2Vzc05hbWVzLnNpemUoKTsgaSsrKSB7CisgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBtX3ByaXZhdGVBY2Nlc3NOYW1lcy5zaXplKCk7IGkrKykgewogICAgICAgICBh
dXRvIGFkZFJlc3VsdCA9IHJlc3VsdC5hZGRQcml2YXRlTmFtZShtX3ByaXZhdGVBY2Nlc3NOYW1l
c1tpXSk7CiAgICAgICAgIEFTU0VSVChhZGRSZXN1bHQuaXNOZXdFbnRyeSk7CiAgICAgICAgIGFk
ZFJlc3VsdC5pdGVyYXRvci0+dmFsdWUgPSBtX3ByaXZhdGVOYW1lTWV0YWRhdGFbaV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmlu
ZGV4IDUzODVlZTBhMjU4Li43MmFjODY5ODk0YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTk0LDggKzk0LDEwIEBAIHB1
YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25z
dCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1NldHRl
cjsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzR2V0dGVyOyB9CiAKLSAgICBib29sIGlzUHJpdmF0ZUFjY2VzcygpIGNvbnN0IHsg
cmV0dXJuIGlzTWV0aG9kKCk7IH0KKyAgICBib29sIGlzUHJpdmF0ZUFjY2VzcygpIGNvbnN0IHsg
cmV0dXJuIGlzTWV0aG9kKCkgfHwgaXNTZXR0ZXIoKSB8fCBpc0dldHRlcigpOyB9CiAKICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVk
OyB9CkBAIC0xMTEsNiArMTEzLDggQEAgcHVibGljOgogICAgICAgICBJc1VzZWQgPSAxIDw8IDAs
CiAgICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCiAgICAgICAgIElzTWV0aG9kID0gMSA8PCAy
LAorICAgICAgICBJc0dldHRlciA9IDEgPDwgMywKKyAgICAgICAgSXNTZXR0ZXIgPSAxIDw8IDQs
CiAgICAgfTsKIAogcHJpdmF0ZToKQEAgLTMwNyw3ICszMTEsNiBAQCBwcml2YXRlOgogICAgIFZl
Y3RvcjxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+IG1fdmFyaWFibGVNZXRhZGF0YTsKICAgICBW
ZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gbV9wcml2YXRlQWNjZXNzTmFtZXM7CiAg
ICAgVmVjdG9yPFByaXZhdGVOYW1lRW50cnk+IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YTsKLQogICAg
IHVuc2lnbmVkIG1faGFzaDsKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>373127</attachid>
            <date>2019-06-28 10:19:15 -0700</date>
            <delta_ts>2020-02-27 07:23:31 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-accessors.diff</filename>
            <type>text/plain</type>
            <size>46799</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXgg
MjI4NjNhNi4uM2RjNWY2NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw4MSBAQAorMjAxOS0wNi0yOCAgQ2FpbyBMaW1hICA8
dGljYWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZh
dGUgYWNjZXNzb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTQ0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHN0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3Jz
LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAgKGxl
dC5hc3NlcnQudGhyb3dzKToKKyAgICAgICAgKGV2YWwuQy5wcm90b3R5cGUuc2V0IG0pOgorICAg
ICAgICAoZXZhbC5DKToKKyAgICAgICAgKGV2YWwuQy5wcm90b3R5cGUubSk6CisgICAgICAgIChl
dmFsLkMucHJvdG90eXBlLmdldCBtKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1nZXR0ZXIt
YnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAobGV0LmFzc2VydC5zYW1lVmFsdWUpOgor
ICAgICAgICAobGV0LmFzc2VydC50aHJvd3MpOgorICAgICAgICAocHJvdG90eXBlLmdldCBtKToK
KyAgICAgICAgKHByb3RvdHlwZS5hY2Nlc3MpOgorICAgICAgICAobGV0LmNyZWF0ZUFuZEluc3Rh
bnRpYXRlQ2xhc3MpOgorICAgICAgICAoUy5wcm90b3R5cGUuZ2V0IG0pOgorICAgICAgICAoUy5w
cm90b3R5cGUuc3VwZXJBY2Nlc3MpOgorICAgICAgICAoUyk6CisgICAgICAgIChDLnByb3RvdHlw
ZS5nZXQgbSk6CisgICAgICAgIChDLnByb3RvdHlwZS5hY2Nlc3MpOgorICAgICAgICAoQyk6Cisg
ICAgICAgICogc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzOiBBZGRlZC4KKyAg
ICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAgKGxldC5hc3NlcnQudGhyb3dz
KToKKyAgICAgICAgKEMucHJvdG90eXBlLmdldCBtKToKKyAgICAgICAgKEMuQik6CisgICAgICAg
IChDKToKKyAgICAgICAgKEMucHJvdG90eXBlLm1ldGhvZCk6CisgICAgICAgIChDLkIucHJvdG90
eXBlLmdldCBtKToKKyAgICAgICAgKEMuQi5wcm90b3R5cGUubSk6CisgICAgICAgIChDLkIucHJv
dG90eXBlLnNldCBtKToKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQt
c2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKGxldC5hc3NlcnQuc2FtZVZhbHVlKToKKyAgICAgICAg
KGxldC5hc3NlcnQudGhyb3dzKToKKyAgICAgICAgKEMucHJvdG90eXBlLnNldCBtKToKKyAgICAg
ICAgKEMucHJvdG90eXBlLmFjY2Vzc1ByaXZhdGVNZW1iZXIpOgorICAgICAgICAoQyk6CisgICAg
ICAgIChDLnByb3RvdHlwZS5nZXQgbSk6CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAg
ICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanM6Cisg
ICAgICAgIChDLnByb3RvdHlwZS5nZXQgbSk6CisgICAgICAgIChDLnByb3RvdHlwZS5jYWxsR2V0
dGVyRnJvbUV2YWwpOgorICAgICAgICAoQyk6CisgICAgICAgIChDLnByb3RvdHlwZS5zZXQgbSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5jYWxsU2V0dGVyRnJvbUV2YWwpOgorICAgICAgICAqIHN0
cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFs
aXphdGlvbi5qczogQ29waWVkIGZyb20gSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZGlyZWN0LWV2YWwuanMuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6
CisgICAgICAgIChDLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMpOgorICAgICAgICAoQy5wcm90
b3R5cGUuZ2V0IG0pOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVj
ay5qczogQWRkZWQuCisgICAgICAgIChsZXQuYXNzZXJ0LnNhbWVWYWx1ZSk6CisgICAgICAgIChs
ZXQuYXNzZXJ0LnRocm93cyk6CisgICAgICAgIChwcm90b3R5cGUuc2V0IG0pOgorICAgICAgICAo
cHJvdG90eXBlLmFjY2Vzcyk6CisgICAgICAgIChsZXQuY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFz
cyk6CisgICAgICAgIChTLnByb3RvdHlwZS5zZXQgbSk6CisgICAgICAgIChTLnByb3RvdHlwZS5z
dXBlckFjY2Vzcyk6CisgICAgICAgIChTKToKKyAgICAgICAgKEMucHJvdG90eXBlLnNldCBtKToK
KyAgICAgICAgKEMucHJvdG90eXBlLmFjY2Vzcyk6CisgICAgICAgIChDKToKKyAgICAgICAgKiBz
dHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAobGV0
LmFzc2VydC5zYW1lVmFsdWUpOgorICAgICAgICAobGV0LmFzc2VydC50aHJvd3MpOgorICAgICAg
ICAoQy5wcm90b3R5cGUuc2V0IG0pOgorICAgICAgICAoQy5CKToKKyAgICAgICAgKEMpOgorICAg
ICAgICAoQy5wcm90b3R5cGUubWV0aG9kKToKKyAgICAgICAgKEMuQi5wcm90b3R5cGUuZ2V0IG0p
OgorICAgICAgICAoQy5CLnByb3RvdHlwZS5tKToKKyAgICAgICAgKEMuQi5wcm90b3R5cGUuc2V0
IG0pOgorCiAyMDE5LTA2LTI3ICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KIAog
ICAgICAgICBbRVNOZXh0XSBJbXBsZW1lbnQgcHJpdmF0ZSBtZXRob2RzCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3Jz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0ZS1uYW1lLWVhcmx5
LWVycm9ycy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTMyN2UwCi0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0
ZS1uYW1lLWVhcmx5LWVycm9ycy5qcwpAQCAtMCwwICsxLDkyIEBACisvL0AgcnVuKCItLXVzZUNs
YXNzRmllbGRzPXRydWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9
IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhz
ICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhz
ICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAo
ZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAg
ICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3Rl
ZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRo
cm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0K
KyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
IGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMu
X3YgPSB2OyB9CisgICAgICAgICAgICBzZXQgI20odSkge30KKyAgICAgICAgfQorICAgIGApOwor
fSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwo
YAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNtOworICAgICAgICAgICAgc2V0ICNt
KHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50
aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFz
cyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAg
ICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAg
ICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAgICAjbSgpIHt9CisgICAg
ICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICAjbSgpIHt9
CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNz
ZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAg
IGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIGdldCAjbSgp
IHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAg
ICBnZXQgI20oKSB7fQorICAgICAgICAgICAgc2V0ICNtKCkge30KKyAgICAgICAgICAgICNtOwor
ICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0
ICNtKCkge30KKyAgICAgICAgICAgIHNldCAjbSgpIHt9CisgICAgICAgICAgICAjbSgpIHt9Cisg
ICAgICAgIH0KKyAgICBgKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLWdldHRlci1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVy
LWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5MTFm
ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFu
ZC1jaGVjay5qcwpAQCAtMCwwICsxLDkxIEBACisvL0AgcnVuKCItLXVzZUNsYXNzRmllbGRzPXRy
dWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1l
VmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisg
ICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290
OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJv
ciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNo
KGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAg
ICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhw
ZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9Owor
CisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzID0gZnVu
Y3Rpb24gKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0
dXJuICd0ZXN0JzsgfQorCisgICAgICAgICAgICBhY2Nlc3MobykgeworICAgICAgICAgICAgICAg
IHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJu
IG5ldyBDKCk7CisgICAgfQorCisgICAgbGV0IGMxID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFz
cygpOworICAgIGxldCBjMiA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsKKworICAgIGFz
c2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKGMxKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMyLmFjY2VzcyhjMiksICd0ZXN0Jyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2VzcyhjMik7CisgICAgfSk7CisKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMyLmFjY2Vzcyhj
MSk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIFMgeworICAg
ICAgICBnZXQgI20oKSB7IHJldHVybiAnc3VwZXIgY2xhc3MnOyB9CisKKyAgICAgICAgc3VwZXJB
Y2Nlc3MoKSB7IHJldHVybiB0aGlzLiNtOyB9CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRz
IFMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnc3ViY2xhc3MnOyB9CisKKyAgICAgICAg
YWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNz
KCksICdzdWJjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5zdXBlckFjY2VzcygpLCAn
c3VwZXIgY2xhc3MnKTsKKworICAgIGxldCBzID0gbmV3IFMoKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKHMuc3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcy5jYWxsKHMpOworICAgIH0p
OworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNt
KCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzKG8pIHsKKyAgICAgICAgICAg
IHJldHVybiBvLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoYyksICd0ZXN0Jyk7CisKKyAgICBsZXQgbyA9
IHt9OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
Yy5hY2Nlc3Mobyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
Z2V0dGVyLWlubmVyLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LmI3YmVhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRl
ci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDEzMiBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0Zp
ZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0g
cmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIg
YnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVj
dGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJv
cikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAg
fQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkg
eyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1l
dGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9
IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tZXRob2QoYyksICd0ZXN0
Jyk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQg
I20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1
cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qo
bykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICAjbSA9ICd0ZXN0JzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
aW5uZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5t
ZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4g
J291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMuI207IH0K
KworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0ICNt
KCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGlubmVyQi5tZXRob2QoaW5uZXJCKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
bWV0aG9kKCksICdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgdGhyb3cg
bmV3IEVycm9yKCdTaG91bGQgbmV2ZXIgZXhlY3V0ZScpOyB9CisKKyAgICAgICAgQiA9IGNsYXNz
IHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI20o
KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJC
ID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIp
LCAndGVzdCcpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7
IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgQiA9
IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3Yg
PSB2OyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0
IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIpOworICAgIH0pOworCisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChj
KTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWVtYmVycy1nZXQtYW5kLXNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1n
ZXQtYW5kLXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmNlNjQ3
Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1h
bmQtc2V0LmpzCkBAIC0wLDAgKzEsNjMgQEAKKy8vQCBydW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1
ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6
ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMu
X3YgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcigpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGMu
YWNjZXNzUHJpdmF0ZU1lbWJlcigpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAg
ICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1i
ZXIoJ3Rlc3QnKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzUHJp
dmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoJ3Rlc3QnKTsKKyAg
ICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMt
YXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKaW5kZXggZTI3MDcyMS4uYjM1ZmRjZSAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0
LWV2YWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24t
ZGlyZWN0LWV2YWwuanMKQEAgLTIxLDMgKzIxLDM2IEBAIGxldCBhc3NlcnQgPSB7CiAgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcpOwogfSkoKTsKIAor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeworICAgICAg
ICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxHZXR0ZXJGcm9t
RXZhbCgpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAgICAgICAgIHJldHVy
biBldmFsKCdzZWxmLiNtJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxHZXR0ZXJGcm9tRXZhbCgpLCAndGVzdCcp
OworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNt
KHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAgICAgICB9CisKKyAgICAgICAgY2Fs
bFNldHRlckZyb21FdmFsKHYpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAg
ICAgICAgIGV2YWwoJ3NlbGYuI20gPSB2Jyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgYy5jYWxsU2V0dGVyRnJvbUV2YWwoJ3Rlc3QnKQorICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRp
YWxpemF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24t
ZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uNDAwZmJmMwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0
aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCBydW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSAt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6ICIg
KyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgZmllbGQgPSBldmFsKCd0aGlz
LiNtKCknKTsKKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLmZpZWxkLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgZmll
bGQgPSBldmFsKCd0aGlzLiNtJyk7CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMC4uYWY0ZDhjZgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMTAwIEBACisvL0AgcnVu
KCItLXVzZUNsYXNzRmllbGRzPXRydWUgLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAg
ICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBm
dW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBv
cCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2Vv
ZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJ
bnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAg
ICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgICAgIGFjY2Vzcyhv
LCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIHJldHVybiBjOworICAgIH07
CisKKyAgICBsZXQgYzEgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7CisgICAgbGV0IGMy
ID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworCisgICAgYzEuYWNjZXNzKGMxLCAndGVz
dCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzEuX3YsICd0ZXN0Jyk7CisgICAgYzIuYWNjZXNz
KGMyLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzIuX3YsICd0ZXN0Jyk7CisKKyAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2Vz
cyhjMiwgJ2ZvbycpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBjMi5hY2Nlc3MoYzEsICdmb28nKTsKKyAgICB9KTsKK30pKCk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgUyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRo
aXMuX3YgPSB2IH0KKworICAgICAgICBzdXBlckFjY2Vzcyh2KSB7IHRoaXMuI20gPSB2OyB9Cisg
ICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMgeworICAgICAgICBzZXQgI20odikgeyB0aGlz
Ll91ID0gdjsgfQorCisgICAgICAgIGFjY2Vzcyh2KSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisKKyAg
ICBjLmFjY2VzcygndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdSwgJ3Rlc3QnKTsK
KworICAgIGMuc3VwZXJBY2Nlc3MoJ3N1cGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLl92LCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGxldCBzID0gbmV3IFMoKTsKKyAgICBzLnN1
cGVyQWNjZXNzKCdzdXBlciBjbGFzcycpCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShzLl92LCAnc3Vw
ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYy5hY2Nlc3MuY2FsbChzLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0g
djsgfQorCisgICAgICAgIGFjY2VzcyhvLCB2KSB7CisgICAgICAgICAgICByZXR1cm4gby4jbSA9
IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hY2Nl
c3MoYywgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7CisKKyAg
ICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYy5hY2Nlc3MobywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5iYjRhNTlmCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxNTUgQEAKKy8vQCBy
dW4oIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSAtLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAg
ICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6
IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAg
IG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5j
ZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsK
KyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsK
KyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBpbm5lckIubWV0aG9kKGMsICd0ZXN0Jyk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0K
KworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFz
cyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2
OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgbSgpIHsgcmV0dXJuIHRoaXMuI207
IH0KKworICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlubmVyQi5tZXRob2Qo
aW5uZXJCLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm0sICd0ZXN0Jyk7
CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
X3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsKK30pKCk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRo
aXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAg
ICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAg
ICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0ICNtKCkgeyBy
ZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIpOworICAgIH0p
OworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShj
Ll92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3Yg
PSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBC
ID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBv
LiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7IHJldHVybiAndGVz
dCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQg
aW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ2ZvbycpOworICAgIH0pOwor
CisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92
LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2
OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBCID0g
Y2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNt
ID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9
IHY7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQg
aW5uZXJCID0gbmV3IGMuQigpOworCisgICAgaW5uZXJCLm1ldGhvZChpbm5lckIsICd0ZXN0MjYy
Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIuX3YsICd0ZXN0MjYyJyk7CisKKyAgICBj
Lm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdvdXRl
ciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nCmluZGV4IGUxYzQ0NmQuLmFiYzIwZTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwpAQCAtMSwzICsxLDc3IEBACisyMDE5LTA2LTI4ICBDYWlvIExpbWEgIDx0aWNhaW9s
aW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1lbnQgcHJpdmF0ZSBhY2Nl
c3NvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5
NDQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
aXMgcGF0Y2ggaXMgaW1wbGVtZW50aW5nIHByaXZhdGUgc2V0dGVyIGFuZCBnZXR0ZXIgc3ludGF4
IGFuZAorICAgICAgICBzZW1hbnRpY3MuCisgICAgICAgIFdlIHVzZSB0aGUgc2FtZSBtYWNoaW5l
cnkgb2YgcHJpdmF0ZSBtZXRob2RzLCB3aGljaCBtZWFucworICAgICAgICB3ZSBhcmUgc3Rvcmlu
ZyBzZXR0ZXIgYW5kIGdldHRlciBmdW5jdGlvbnMgb24gY2xhc3MgbGV4aWNhbCBzY29wZSBhbmQK
KyAgICAgICAgdXNpbmcgdGhlIHNhbWUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtLgorICAgICAgICBP
bmUgZGlmZmVyZW5jZSBmcm9tIHByaXZhdGUgbWV0aG9kc2lzIGhvdyB3ZSBhY2Nlc3MgZ2V0dGVy
cyBhbmQgc2V0dGVycworICAgICAgICBmdW5jdGlvbnMsIHNpbmNlIGl0IGlzIG5vdCBwb3NzaWJs
ZSB0byB1c2UgcmF3ICIjYWNjZXNzb3IiIG5hbWUgCisgICAgICAgIGJlY2F1c2Ugd2UgY2FuIGhh
dmUgc2FtZSBuYW1lIGJlaW5nIHVzZWQgYnkgYSBzZXR0ZXIgYW5kIGEgZ2V0dGVyLgorICAgICAg
ICBUbyBzb2x2ZSB0aGlzIGlzc3VlLCB3ZSB0aGVuIHN0b3JlIHRob3NlIGZ1bmN0aW9ucyB1c2lu
ZyBzdWZmaXggIi1nZXR0ZXIiCisgICAgICAgIGZvciBwcml2YXRlIGdldHRlcnMgYW5kICItc2V0
dGVyIiBmb3IgcHJpdmF0ZSBzZXR0ZXIuCisKKyAgICAgICAgVGhlIGZvciB0aGUgZm9sbG93aW5n
IGNvZGU6CisKKyAgICAgICAgYGBgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgc2V0
ICNtKHYpIHsgLi4uIH0KKyAgICAgICAgICAgIGdldCAjbSgpIHsgLi4uIH0KKyAgICAgICAgICAg
IGFjY2VzcygpIHsgdGhpcy4jbSA9IDM7IHJldHVybiB0aGlzLiNtIH0KKyAgICAgICAgfQorICAg
ICAgICBgYGAKKyAgICAgICAgCisgICAgICAgIHdlIGdlbmVyYXRlIHRoZSBieXRlY29kZSBzaW1p
bGFyIHRvOgorCisgICAgICAgIGBgYAorICAgICAgICB7CisgICAgICAgICAgICBjb25zdCBAcHJp
dmF0ZUJyYW5kID0gQGNyZWF0ZVByaXZhdGVTeW1ib2woKTsKKyAgICAgICAgICAgIGNvbnN0ICNt
LXNldHRlciA9IGZ1bmN0aW9uICgpIHsgLi4uIH0KKyAgICAgICAgICAgIGNvbnN0ICNtLWdldHRl
ciA9IGZ1bmN0aW9uICgpIHsgLi4uIH0KKyAgICAgICAgICAgIEMucHJvdG90eXBlLmFjY2VzcyA9
IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBjaGVja1ByaXZhdGVCcmFuZCh0aGlzLCBA
cHJpdmF0ZUJyYW5kKTsKKyAgICAgICAgICAgICAgICAjbS1zZXR0ZXIuY2FsbCh0aGlzLCAzKTsK
KyAgICAgICAgICAgICAgICBAY2hlY2tQcml2YXRlQnJhbmQodGhpcywgQHByaXZhdGVCcmFuZCk7
CisgICAgICAgICAgICAgICAgcmV0dXJuICNtLWdldHRlci5jYWxsKHRoaXMpOworICAgICAgICAg
ICAgfQorICAgICAgICAgICAgQyA9IGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgIEBwdXRE
aXJlY3RCeVZhbCh0aGlzLCBAcHJpdmF0ZUJyYW5kLCBAcHJpdmF0ZUJyYW5kKTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICAqIGJ5dGVjb21waWxlci9C
eXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpp
c1ByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2
YXRlR2V0dGVyKToKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoK
KyAgICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6
UHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlND
OjpCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoSlNDOjpCYXNl
RG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eU5vZGU6OlByb3BlcnR5Tm9kZSk6CisgICAg
ICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAg
ICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKiBwYXJzZXIv
UGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6Cisg
ICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52
aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5oOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1NldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzR2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlQWNjZXNzIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0
ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisKIDIwMTktMDYtMjcgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgog
CiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggYmQ1Nzk4YS4uNDMyNzhlMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTI5NjYsNiAr
Mjk2NiwzMCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29uc3Qg
SWRlbnRpZmllciYgaWRlbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEJ5dGVjb2Rl
R2VuZXJhdG9yOjppc1ByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7Cisg
ICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7
CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1
dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc1NldHRlcigpOworICAgIH0KKwor
ICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRl
R2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9
IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAg
PSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWRl
bnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJl
dHVybiBpdC0+dmFsdWUuaXNHZXR0ZXIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9
CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9ubWVu
dC5wcml2YXRlTmFtZXNTaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggNGZhYmU2My4uN2YxMTBmMiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNv
ZGVHZW5lcmF0b3IuaApAQCAtMTIxNyw2ICsxMjE3LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KIAogICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJik7
CisgICAgICAgIGJvb2wgaXNQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIHZv
aWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50Jik7CiAg
ICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggOTI3YTZjYS4u
ZTExOGMwYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9O
b2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Tm9kZXNDb2RlZ2VuLmNwcApAQCAtNzEzLDYgKzcxMywyMCBAQCB2b2lkIFByb3BlcnR5TGlzdE5v
ZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG5vZGUu
dHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSB7CisgICAgICAgICAgICBJZGVu
dGlmaWVyIHNldHRlcklkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdlbmVyYXRv
ci52bSgpLCBtYWtlU3RyaW5nKFN0cmluZyhub2RlLm5hbWUoKS0+aW1wbCgpKSwgIi1zZXR0ZXIi
KSk7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoc2V0dGVy
SWRlbnRpZmllcik7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJh
dG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCB2YWx1ZS5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0
eU5vZGU6OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAgICAgIElkZW50aWZpZXIgZ2V0dGVySWRl
bnRpZmllciA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2VuZXJhdG9yLnZtKCksIG1ha2VTdHJp
bmcoU3RyaW5nKG5vZGUubmFtZSgpLT5pbXBsKCkpLCAiLWdldHRlciIpKTsKKyAgICAgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShnZXR0ZXJJZGVudGlmaWVyKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3Rl
cigpLCB2YXIsIHZhbHVlLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRp
b25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcm9wZXJ0eU5hbWVSZWdpc3RlcjsK
ICAgICAgICAgaWYgKG5vZGUubmFtZSgpKQogICAgICAgICAgICAgcHJvcGVydHlOYW1lUmVnaXN0
ZXIgPSBnZW5lcmF0b3IuZW1pdExvYWQobnVsbHB0ciwgKm5vZGUubmFtZSgpKTsKQEAgLTgxOSw4
ICs4MzMsOSBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogUmVnaXN0ZXJJRCogQmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0aGlz
VmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgewotICAgICAgICBpZiAoZ2VuZXJh
dG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBp
ZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1By
aXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIg
PSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwg
dmFyKTsKIAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29w
ZS5nZXQoKSk7CkBAIC04MjksNiArODQ0LDMyIEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjpl
bWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAg
ICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5n
ZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGdl
bmVyYXRvci5pc1ByaXZhdGVHZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBJ
ZGVudGlmaWVyIGdldHRlcklkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdlbmVy
YXRvci52bSgpLCBtYWtlU3RyaW5nKFN0cmluZyhpZGVudGlmaWVyTmFtZS5pbXBsKCkpLCAiLWdl
dHRlciIpKTsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShn
ZXR0ZXJJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9
IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAg
IFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0
ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1i
b2wpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyRnVuY3Rpb24gPSBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3Bl
LmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRz
IGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFy
Z3MudGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5l
bWl0Q2FsbChkc3QsIGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFy
Z3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZ
ZXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVTZXR0ZXIo
aWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHBlcmZvcm0gYnJh
bmQgY2hlY2sgdG8gZm9sbG93IHRoZSBzcGVjCisgICAgICAgICAgICBJZGVudGlmaWVyIHNldHRl
cklkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdlbmVyYXRvci52bSgpLCBtYWtl
U3RyaW5nKFN0cmluZyhpZGVudGlmaWVyTmFtZS5pbXBsKCkpLCAiLXNldHRlciIpKTsKKyAgICAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShzZXR0ZXJJZGVudGlmaWVy
KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0
UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHBy
aXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBk
ZWZpbmVkIHByaXZhdGUgZ2V0dGVyIik7CisgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAg
ICB9CisKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkR2V0KGRzdCwg
YmFzZSwgaWRlbnRpZmllcigpKTsKICAgICB9CiAKQEAgLTg1MSw4ICs4OTIsMjggQEAgUmVnaXN0
ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2Vu
ZXJhdG9yLCBSZWdpc3RlckkKIHsKICAgICBpZiAoaXNQcml2YXRlTmFtZSgpKSB7CiAgICAgICAg
IGF1dG8gaWRlbnRpZmllck5hbWUgPSBpZGVudGlmaWVyKCk7Ci0gICAgICAgIGlmIChnZW5lcmF0
b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgewotICAgICAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgaWYg
KGdlbmVyYXRvci5pc1ByaXZhdGVTZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAg
ICBJZGVudGlmaWVyIHNldHRlcklkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdl
bmVyYXRvci52bSgpLCBtYWtlU3RyaW5nKFN0cmluZyhpZGVudGlmaWVyTmFtZS5pbXBsKCkpLCAi
LXNldHRlciIpKTsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShzZXR0ZXJJZGVudGlmaWVyKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29w
ZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAg
ICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJp
dmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRT
eW1ib2wpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBDYWxsQXJndW1l
bnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5t
b3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1v
dmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENhbGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5nZXQo
KSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bv
c2l0aW9uLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKworICAgICAgICAgICAgcmV0dXJuIHZhbHVl
OworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIgPSBnZW5lcmF0b3Iu
aXNQcml2YXRlR2V0dGVyKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgaWYgKGlzUHJpdmF0ZUdl
dHRlciB8fCBnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgeworICAg
ICAgICAgICAgSWRlbnRpZmllciBvcGVyYXRpb25JZGVudGlmaWVyID0gaXNQcml2YXRlR2V0dGVy
ID8gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnZW5lcmF0b3Iudm0oKSwgbWFrZVN0cmluZyhTdHJp
bmcoaWRlbnRpZmllck5hbWUuaW1wbCgpKSwgIi1nZXR0ZXIiKSkgOiBpZGVudGlmaWVyTmFtZTsK
KworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG9wZXJhdGlv
bklkZW50aWZpZXIpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2Vu
ZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKIAogICAgICAgICAgICAgUmVn
aXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJh
bmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVjdG9ycy5oCmluZGV4IGZiNTIyNGYuLmU4
ODk1YzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0
cnVjdG9ycy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZUNvbnN0cnVj
dG9ycy5oCkBAIC0yNTMsNyArMjUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICwgbV90
eXBlKHR5cGUpCiAgICAgICAgICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcgPT0g
U3VwZXJCaW5kaW5nOjpOZWVkZWQpCiAgICAgICAgICwgbV9wdXRUeXBlKHB1dFR5cGUpCi0gICAg
ICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9k
KSkpCisgICAgICAgICwgbV9pc1ByaXZhdGUoISEodHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2
YXRlTWV0aG9kIHwgUHJpdmF0ZUdldHRlciB8IFByaXZhdGVTZXR0ZXIpKSkKICAgICAgICAgLCBt
X2NsYXNzRWxlbWVudFRhZyhzdGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBt
X2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKGZhbHNlKQogICAgIHsKQEAgLTI2Niw3ICsyNjYsNyBA
QCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgLCBtX3R5cGUodHlwZSkKICAgICAgICAgLCBtX25l
ZWRzU3VwZXJCaW5kaW5nKHN1cGVyQmluZGluZyA9PSBTdXBlckJpbmRpbmc6Ok5lZWRlZCkKICAg
ICAgICAgLCBtX3B1dFR5cGUocHV0VHlwZSkKLSAgICAgICAgLCBtX2lzUHJpdmF0ZSghISh0eXBl
ICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QpKSkKKyAgICAgICAgLCBtX2lzUHJpdmF0
ZSghISh0eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QgfCBQcml2YXRlR2V0dGVy
IHwgUHJpdmF0ZVNldHRlcikpKQogICAgICAgICAsIG1fY2xhc3NFbGVtZW50VGFnKHN0YXRpY19j
YXN0PHVuc2lnbmVkPih0YWcpKQogICAgICAgICAsIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGUo
ZmFsc2UpCiAgICAgewpAQCAtMjc5LDcgKzI3OSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgICAgICAsIG1fbmVlZHNTdXBlckJpbmRpbmcoc3VwZXJCaW5k
aW5nID09IFN1cGVyQmluZGluZzo6TmVlZGVkKQogICAgICAgICAsIG1fcHV0VHlwZShwdXRUeXBl
KQotICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0
ZU1ldGhvZCkpKQorICAgICAgICAsIG1faXNQcml2YXRlKCEhKHR5cGUgJiAoUHJpdmF0ZUZpZWxk
IHwgUHJpdmF0ZU1ldGhvZCB8IFByaXZhdGVHZXR0ZXIgfCBQcml2YXRlU2V0dGVyKSkpCiAgICAg
ICAgICwgbV9jbGFzc0VsZW1lbnRUYWcoc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHRhZykpCiAgICAg
ICAgICwgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZShmYWxzZSkKICAgICB7CkBAIC0yOTIsNyAr
MjkyLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICwgbV90eXBlKHR5cGUpCiAgICAgICAg
ICwgbV9uZWVkc1N1cGVyQmluZGluZyhzdXBlckJpbmRpbmcgPT0gU3VwZXJCaW5kaW5nOjpOZWVk
ZWQpCiAgICAgICAgICwgbV9wdXRUeXBlKHB1dFR5cGUpCi0gICAgICAgICwgbV9pc1ByaXZhdGUo
ISEodHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKSkpCisgICAgICAgICwgbV9p
c1ByaXZhdGUoISEodHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kIHwgUHJpdmF0
ZUdldHRlciB8IFByaXZhdGVTZXR0ZXIpKSkKICAgICAgICAgLCBtX2NsYXNzRWxlbWVudFRhZyhz
dGF0aWNfY2FzdDx1bnNpZ25lZD4odGFnKSkKICAgICAgICAgLCBtX2lzT3ZlcnJpZGRlbkJ5RHVw
bGljYXRlKGZhbHNlKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCAwMjEwZmE3Li5hNzkwN2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBA
IC03MDcsNyArNzA3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0Vs
ZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAg
ICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7
CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAx
LCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBT
cHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKKyAg
ICAgICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNl
dHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2
YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRlciA9IDI1Niwg
UHJpdmF0ZUdldHRlciA9IDUxMiB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgOiB1aW50OF90IHsg
VW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRl
bnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5kaW5nLCBD
bGFzc0VsZW1lbnRUYWcpOwpAQCAtNzM3LDcgKzczNyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAg
ICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBt
X2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAg
dW5zaWduZWQgbV90eXBlOworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxMDsKICAgICAgICAg
dW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1fcHV0
VHlwZSA6IDE7CiAgICAgICAgIHVuc2lnbmVkIG1faXNQcml2YXRlIDogMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCBhMjk0N2Y1Li4zZmMxMjg1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yOTMwLDcgKzI5MzAsNyBAQCBw
YXJzZU1ldGhvZDoKICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAg
ICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAg
ICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgKG1hdGNo
SWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykgfHwgbWF0Y2goRE9VQkxFKSB8
fCBtYXRjaChJTlRFR0VSKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkpKSB7CisgICAgICAgICAgICBp
ZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiAobWF0Y2hJZGVu
dGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VCTEUpIHx8IG1h
dGNoKElOVEVHRVIpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSB8fCAoT3B0aW9uczo6dXNlUHJpdmF0
ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpKSkgewogICAgICAgICAgICAgICAgIGlz
R2V0dGVyID0gKmlkZW50ID09IHByb3BlcnR5TmFtZXMuZ2V0OwogICAgICAgICAgICAgICAgIGlz
U2V0dGVyID0gKmlkZW50ID09IHByb3BlcnR5TmFtZXMuc2V0OwogICAgICAgICAgICAgfQpAQCAt
Mjk3NSw4ICsyOTc1LDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICBUcmVlUHJvcGVydHkgcHJv
cGVydHk7CiAgICAgICAgIGNvbnN0IGJvb2wgYWx3YXlzU3RyaWN0SW5zaWRlQ2xhc3MgPSB0cnVl
OwogICAgICAgICBpZiAoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIpIHsKLSAgICAgICAgICAgIHR5cGUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgJiB+UHJvcGVydHlOb2RlOjpD
b25zdGFudCk7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpU
eXBlPih0eXBlIHwgKGlzR2V0dGVyID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5v
ZGU6OlNldHRlcikpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2Rz
KCkgJiYgbWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBpZiAoaXNTZXR0ZXIpIHsKKyAgICAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2
YXRlU2V0dGVyKG1fdm0sICppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxp
Y2F0ZURlY2xhcmF0aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBzZXR0ZXIgd2l0aCBhbiBhbHJlYWR5
IHVzZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJv
cGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKTsKKyAg
ICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVHZXR0ZXIobV92bSwgKmlkZW50KSAmIERl
Y2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJEZWNsYXJlZCBw
cml2YXRlIGdldHRlciB3aXRoIGFuIGFscmVhZHkgdXNlZCBuYW1lIik7CisgICAgICAgICAgICAg
ICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9w
ZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9k
ZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAgICAgICAgICAg
ICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgKGlzR2V0dGVy
ID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlcikpOworICAgICAg
ICAgICAgfQogICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNldHRlcihjb250ZXh0
LCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywgdHlwZSwgbWV0aG9kU3RhcnQsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6dXNl
Q2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xhc3NFbGVtZW50
VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
ICYmICFpc0dldHRlciAmJiAhaXNTZXR0ZXIpIHsKQEAgLTQyNDMsMTIgKzQyNTQsMTcgQEAgdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlR2V0dGVyU2V0dGVyKFQKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tl
bkxvY2F0aW9uKCkpOwogCi0gICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSB8fCBtYXRjaChT
VFJJTkcpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykgeworICAgIGlmICht
YXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCAoT3B0aW9uczo6dXNlUHJp
dmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpIHx8IG1fdG9rZW4ubV90eXBlICYg
S2V5d29yZFRva2VuRmxhZykgewogICAgICAgICBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBtX3Rva2Vu
Lm1fZGF0YS5pZGVudDsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0Vs
ZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0tPnByb3BlcnR5
TmFtZXMtPnByb3RvdHlwZSwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBt
ZXRob2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRh
ZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0g
bV92bS0+cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAgICAiQ2Fubm90IGRl
Y2xhcmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKKworICAgICAg
ICBpZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6Tm8sICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUg
c2V0dGVyIG9yIGdldHRlciBvdXRzaWRlIGEgY2xhc3MiKTsKKyAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJDYW5ub3QgZGVjbGFy
ZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBhcyBzdGF0aWMiKTsKKyAgICAgICAgfQogICAg
ICAgICBuZXh0KCk7CiAgICAgfSBlbHNlIGlmIChtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVH
RVIpKSB7CiAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3Vi
bGVWYWx1ZTsKQEAgLTQyNjUsOSArNDI4MSwxNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAog
ICAgIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpHZXR0ZXIpIHsKICAgICAgICAgZmFpbElmRmFs
c2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIGdldHRl
ciBkZWZpbml0aW9uIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhj
b250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIFNvdXJjZVBhcnNlTW9k
ZTo6R2V0dGVyTW9kZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVk
ZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0aW9uIik7Ci0gICAgfSBl
bHNlIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlNldHRlcikgewogICAg
ICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIg
bGlzdCBmb3Igc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNl
RnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwg
U291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRp
b24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIp
IHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFy
YW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNl
dCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ug
c2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwg
IkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgZ2V0dGVyIGRlZmluaXRpb24i
KTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
LCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JT
ZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSks
ICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9CiAKICAgICBpZiAoc3Ry
aW5nUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXgg
OWQ5Njg5NS4uYmM4Y2FmYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBA
IC01MjYsNiArNTI2LDUwIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9
CiAKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVTZXR0ZXIoVk0qIHZt
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93
c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVz
dWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBib29sIGFkZFJlc3VsdCA9
IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudCk7CisKKyAgICAg
ICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGRlY2xhcmUgaXQgc2luY2Ugd2Ugc3Rv
cmUgcHJpdmF0ZSBzZXR0ZXJzIG9uIGNsYXNzCisgICAgICAgIC8vIHNjb3BlLgorICAgICAgICBJ
ZGVudGlmaWVyIHNldHRlcklkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBt
YWtlU3RyaW5nKFN0cmluZyhpZGVudC5pbXBsKCkpLCAiLXNldHRlciIpKTsKKyAgICAgICAgRGVj
bGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZUxleGljYWxWYXJp
YWJsZSgmc2V0dGVySWRlbnRpZmllciwgZmFsc2UpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRl
Y2xhcmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6
VmFsaWQpOworICAgICAgICB1c2VWYXJpYWJsZSgmc2V0dGVySWRlbnRpZmllciwgZmFsc2UpOwor
ICAgICAgICBhZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29uZGl0aW9uYWxseShzZXR0ZXJJ
ZGVudGlmaWVyLmltcGwoKSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVHZXR0ZXIoVk0qIHZtLCBjb25z
dCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGlj
YWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0g
RGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4
aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudCk7CisKKyAgICAgICAgaWYg
KCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6
SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGRlY2xhcmUgaXQgc2luY2Ugd2Ugc3RvcmUgcHJp
dmF0ZSBnZXR0ZXJzIG9uIGNsYXNzCisgICAgICAgIC8vIHNjb3BlLgorICAgICAgICBJZGVudGlm
aWVyIGdldHRlcklkZW50aWZpZXIgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKHZtLCBtYWtlU3Ry
aW5nKFN0cmluZyhpZGVudC5pbXBsKCkpLCAiLWdldHRlciIpKTsKKyAgICAgICAgRGVjbGFyYXRp
b25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gZGVjbGFyZUxleGljYWxWYXJpYWJsZSgm
Z2V0dGVySWRlbnRpZmllciwgZmFsc2UpOworICAgICAgICBBU1NFUlRfVU5VU0VEKGRlY2xhcmF0
aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQp
OworICAgICAgICB1c2VWYXJpYWJsZSgmZ2V0dGVySWRlbnRpZmllciwgZmFsc2UpOworICAgICAg
ICBhZGRDbG9zZWRWYXJpYWJsZUNhbmRpZGF0ZVVuY29uZGl0aW9uYWxseShnZXR0ZXJJZGVudGlm
aWVyLmltcGwoKSk7CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBEZWNs
YXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25t
ZW50LmNwcAppbmRleCA4Y2E4OTUzLi4zNzQ3NTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTEyMSw2ICsxMjEs
NjYgQEAgYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25z
dCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JgogICAgIHJldHVybiBkZWNsYXJlUHJpdmF0ZU5h
bWUoaWRlbnRpZmllciwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCk7CiB9CiAK
K2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURh
dGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhcmlhYmxlRW52aXJv
bm1lbnRSYXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVu
dHJ5IG5ld0VudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbmV3RW50cnkpOworICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICB9CisKKyAgICBQcml2YXRlTmFtZUVudHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRSZXN1
bHQtPnZhbHVlOworICAgIGlmIChjdXJyZW50RW50cnkuaXNEZWNsYXJlZCgpKSB7CisgICAgICAg
IGlmIChjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSB8fCBjdXJyZW50RW50cnkuaXNNZXRob2QoKSB8
fCAhY3VycmVudEVudHJ5LmlzR2V0dGVyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8v
IEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgICAgIEFT
U0VSVChjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSk7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkg
bmV3RW50cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6
SXNTZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRp
ZmllciwgbmV3RW50cnkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBp
dCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVO
YW1lRW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIp
OworICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBuZXdFbnRy
eSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVj
bGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRp
ZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6
Om1ha2VfdW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnRSYXJlRGF0YT4oKTsKKworICAgIGF1dG8g
ZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7
CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQo
KSkgeworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIp
OworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbmV3
RW50cnkpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBQcml2YXRlTmFtZUVu
dHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRSZXN1bHQtPnZhbHVlOworICAgIGlmIChjdXJyZW50RW50
cnkuaXNEZWNsYXJlZCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSB8
fCBjdXJyZW50RW50cnkuaXNNZXRob2QoKSB8fCAhY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpCisg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUg
cHJpdmF0ZSBuYW1lLgorCisgICAgICAgIEFTU0VSVChjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSk7
CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8
IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRh
LT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3RW50cnkpOworICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0
IGFzIGRlY2xhcmVkLgorICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5
LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVO
YW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOworICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5h
bWVzLnNldChpZGVudGlmaWVyLCBuZXdFbnRyeSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJv
b2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVOYW1lKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cyBh
ZGRpb25hbFRyYWl0cykKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IDkwNmQzMzAu
LmFjZDcxZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaApAQCAtOTQsOCArOTQsMTAgQEAgcHVibGljOgogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzRGVjbGFyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2QoKSBjb25zdCB7
IHJldHVybiBtX2JpdHMgJiBJc01ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2V0dGVyOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNHZXR0ZXI7IH0K
IAotICAgIGJvb2wgaXNQcml2YXRlQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsg
fQorICAgIGJvb2wgaXNQcml2YXRlQWNjZXNzKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKSB8
fCBpc1NldHRlcigpIHx8IGlzR2V0dGVyKCk7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KQEAgLTExMiw2ICsxMTQs
OCBAQCBwdWJsaWM6CiAgICAgICAgIElzVXNlZCA9IDEgPDwgMCwKICAgICAgICAgSXNEZWNsYXJl
ZCA9IDEgPDwgMSwKICAgICAgICAgSXNNZXRob2QgPSAxIDw8IDIsCisgICAgICAgIElzR2V0dGVy
ID0gMSA8PCAzLAorICAgICAgICBJc1NldHRlciA9IDEgPDwgNCwKICAgICB9OwogCiBwcml2YXRl
OgpAQCAtMTg0LDYgKzE4OCwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1l
dGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0
ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KICAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0
aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOwogCisgICAg
Ym9vbCBkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBi
b29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpOworCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBJZGVu
dGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudGlm
aWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCiAgICAgYm9vbCBkZWNsYXJlUHJp
dmF0ZU5hbWUoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVBy
aXZhdGVOYW1lKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAgIGJvb2wgZGVjbGFyZVByaXZhdGVO
YW1lKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIsIFByaXZhdGVO
YW1lRW50cnk6OlRyYWl0cyBhZGRpb25hbFRyYWl0cyA9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6Tm9uZSk7CiAgICAgdm9pZCB1c2VQcml2YXRlTmFtZShjb25zdCBSZWZQdHI8VW5pcXVlZFN0
cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKQEAgLTMwMiw3ICszMTIsNiBAQCBwcml2YXRlOgogICAg
IFZlY3RvcjxWYXJpYWJsZUVudmlyb25tZW50RW50cnk+IG1fdmFyaWFibGVNZXRhZGF0YTsKICAg
ICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPj4gbV9wcml2YXRlQWNjZXNzTmFtZXM7
CiAgICAgVmVjdG9yPFByaXZhdGVOYW1lRW50cnk+IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YTsKLQog
ICAgIHVuc2lnbmVkIG1faGFzaDsKICAgICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiB9
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391861</attachid>
            <date>2020-02-27 07:23:31 -0800</date>
            <delta_ts>2020-02-27 07:36:41 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-accessors.diff</filename>
            <type>text/plain</type>
            <size>45991</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFt
ZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGlj
YXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi41NTMyN2UwMmExNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMKQEAgLTAsMCArMSw5
MiBAQAorLy9AIHJ1bigiLS11c2VDbGFzc0ZpZWxkcz10cnVlIC0tdXNlUHJpdmF0ZU1ldGhvZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCBy
aHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKwor
ICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJl
dzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dzKFN5bnRheEVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAg
ICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICAgICAgc2V0ICNtKHUpIHt9
CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBm
dW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICAj
bTsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAg
ICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlz
Ll92ID0gdjsgfQorICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCith
c3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAg
ICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAg
ICAgICAgICAgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93
cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgI20oKSB7fQorICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAg
fQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHt9
CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNz
ZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAg
IGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIHNldCAjbSgp
IHt9CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50
aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFz
cyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgICAgICBzZXQgI20oKSB7fQor
ICAgICAgICAgICAgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uODJmYTdlN2JjMTAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDkxIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYg
KGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rp
b24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhw
ZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAg
ICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5zdGFu
dGlhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAg
ICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICAgICAgYWNjZXNzKG8pIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBuZXcgQygpOworICAgIH0KKworICAgIGxldCBjMSA9IGNyZWF0ZUFu
ZEluc3RhbnRpYXRlQ2xhc3MoKTsKKyAgICBsZXQgYzIgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNs
YXNzKCk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcyhjMSksICd0ZXN0Jyk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoYzIpLCAndGVzdCcpOworCisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIpOwor
ICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBjMi5hY2Nlc3MoYzEpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1cGVyIGNsYXNzJzsgfQor
CisgICAgICAgIHN1cGVyQWNjZXNzKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorICAgIH0KKworICAg
IGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1YmNsYXNz
JzsgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmFjY2VzcygpLCAnc3ViY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
c3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShzLnN1cGVyQWNjZXNzKCksICdzdXBlciBjbGFzcycpOworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3Mu
Y2FsbChzKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vzcyhv
KSB7CisgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKGMpLCAndGVzdCcp
OworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGMuYWNjZXNzKG8pOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNzNkNDgxNzM1ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDEzMiBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlm
IChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4
cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
dG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
IGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAg
ICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxl
dCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9k
KGMpLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhv
ZCgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAg
ICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgI20gPSAndGVzdCc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGlubmVyQi5tZXRob2QoaW5uZXJCKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgp
IHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0
aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7
Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20o
KSB7IHRocm93IG5ldyBFcnJvcignU2hvdWxkIG5ldmVyIGV4ZWN1dGUnKTsgfQorCisgICAgICAg
IEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJl
dHVybiBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4g
J3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
bGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tZXRo
b2QoaW5uZXJCKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnb3V0
ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisg
ICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAg
ICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXQgI20odikg
eyB0aGlzLl92ID0gdjsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoaW5uZXJCKTsKKyAgICB9
KTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVy
Qi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1lbWJlcnMtZ2V0LWFuZC1zZXQuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1lbWJlcnMtZ2V0LWFuZC1zZXQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLmU5NjYwNTdiNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCkBAIC0wLDAgKzEsNjMgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcg
Z290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRF
cnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0
aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIoKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAg
ICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQor
CisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhpcy4jbSA9
IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2YXRl
TWVtYmVyKCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vz
c1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhpcy4jbSA9IHY7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2YXRlTWVtYmVyKCd0ZXN0Jyk7
CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5h
bWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCmluZGV4IDAxNDAyZDc0YjU3Li5jNjcx
Mjg0MTE0NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFi
bGUtb24tZGlyZWN0LWV2YWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1h
dmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTIxLDMgKzIxLDM2IEBAIGxldCBhc3NlcnQg
PSB7CiAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVzdCcp
OwogfSkoKTsKIAorKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNt
KCkgeworICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisgICAgICAgIGNh
bGxHZXR0ZXJGcm9tRXZhbCgpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAgICAg
ICAgICAgIHJldHVybiBldmFsKCdzZWxmLiNtJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxHZXR0ZXJGcm9tRXZh
bCgpLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAgICAgICB9CisK
KyAgICAgICAgY2FsbFNldHRlckZyb21FdmFsKHYpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0g
dGhpczsKKyAgICAgICAgICAgIGV2YWwoJ3NlbGYuI20gPSB2Jyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5jYWxsU2V0dGVyRnJvbUV2YWwoJ3Rlc3Qn
KQorICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5n
LWZpZWxkLWluaXRpYWxpemF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1h
dmFpbGFibGUtb24tZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjQ1YmE3NzA4ZWQ3Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZXZhbC1kdXJp
bmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBn
b3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgZmllbGQgPSBldmFs
KCd0aGlzLiNtKCknKTsKKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmZpZWxkLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAg
ICAgZmllbGQgPSBldmFsKCd0aGlzLiNtJyk7CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjA0MmVkMzcxMDNkCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSwx
MDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAg
ICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBm
dW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBv
cCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2Vv
ZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJ
bnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAg
ICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgICAgIGFjY2Vzcyhv
LCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIHJldHVybiBjOworICAgIH07
CisKKyAgICBsZXQgYzEgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7CisgICAgbGV0IGMy
ID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworCisgICAgYzEuYWNjZXNzKGMxLCAndGVz
dCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzEuX3YsICd0ZXN0Jyk7CisgICAgYzIuYWNjZXNz
KGMyLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzIuX3YsICd0ZXN0Jyk7CisKKyAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2Vz
cyhjMiwgJ2ZvbycpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBjMi5hY2Nlc3MoYzEsICdmb28nKTsKKyAgICB9KTsKK30pKCk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgUyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRo
aXMuX3YgPSB2IH0KKworICAgICAgICBzdXBlckFjY2Vzcyh2KSB7IHRoaXMuI20gPSB2OyB9Cisg
ICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMgeworICAgICAgICBzZXQgI20odikgeyB0aGlz
Ll91ID0gdjsgfQorCisgICAgICAgIGFjY2Vzcyh2KSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisKKyAg
ICBjLmFjY2VzcygndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdSwgJ3Rlc3QnKTsK
KworICAgIGMuc3VwZXJBY2Nlc3MoJ3N1cGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLl92LCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGxldCBzID0gbmV3IFMoKTsKKyAgICBzLnN1
cGVyQWNjZXNzKCdzdXBlciBjbGFzcycpCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShzLl92LCAnc3Vw
ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYy5hY2Nlc3MuY2FsbChzLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0g
djsgfQorCisgICAgICAgIGFjY2VzcyhvLCB2KSB7CisgICAgICAgICAgICByZXR1cm4gby4jbSA9
IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hY2Nl
c3MoYywgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7CisKKyAg
ICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYy5hY2Nlc3MobywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMC4uNzRlNDBjOTNlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDE1NSBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlm
IChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4
cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
dG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
IHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAg
ICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0
IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBpbm5lckIubWV0aG9kKGMsICd0ZXN0Jyk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAg
ICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7Cisg
ICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgbSgpIHsgcmV0dXJuIHRoaXMuI207IH0KKwor
ICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlubmVyQi5tZXRob2QoaW5uZXJC
LCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm0sICd0ZXN0Jyk7CisKKyAg
ICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdv
dXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3Yg
PSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBC
ID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBv
LiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4g
J3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
bGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIpOworICAgIH0pOworCisg
ICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAn
b3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9
CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBCID0gY2xh
c3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0g
djsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJC
ID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ2ZvbycpOworICAgIH0pOworCisgICAg
Yy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0
ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisK
KyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBCID0gY2xhc3Mg
eworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJC
ID0gbmV3IGMuQigpOworCisgICAgaW5uZXJCLm1ldGhvZChpbm5lckIsICd0ZXN0MjYyJyk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIuX3YsICd0ZXN0MjYyJyk7CisKKyAgICBjLm1ldGhv
ZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdvdXRlciBjbGFz
cycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHAKaW5kZXggY2JlOGFjMmFkMzkuLjA3MDNhYzVmZTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAt
MTg2NSw2ICsxODY1LDE1IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4
aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAgICAgICAgICAgICAg
ICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5h
bWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQpKTsKICAgICAgICAg
ICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQogICAgICAgICAgICAg
ICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVO
YW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkpOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAg
ICAgICAgICAgdWludDE2X3QgdHJhaXRzID0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkOworICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVHZXR0ZXIo
KSkKKyAgICAgICAgICAgICAgICAgICAgdHJhaXRzIHw9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNHZXR0ZXI7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZVNl
dHRlcigpKQorICAgICAgICAgICAgICAgICAgICB0cmFpdHMgfD0gUHJpdmF0ZU5hbWVFbnRyeTo6
VHJhaXRzOjpJc1NldHRlcjsKKworICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2
YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkodHJhaXRzKSk7CisgICAg
ICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFi
bGVzOwpAQCAtMjg2Nyw2ICsyODc2LDMwIEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJp
dmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNr
LnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFj
a1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlkZW50LmltcGwoKSk7CisgICAgICAg
IGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmlzU2V0
dGVyKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjppc1ByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAg
Zm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7Cisg
ICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1dG8g
aXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVuZCgp
KQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc0dldHRlcigpOworICAgIH0KKworICAg
IHJldHVybiBmYWxzZTsKK30KKwogdm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVB
Y2Nlc3NOYW1lcyhjb25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBlbnZpcm9ubWVudCkKIHsKICAg
ICBpZiAoIWVudmlyb25tZW50LnByaXZhdGVOYW1lc1NpemUoKSkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAppbmRleCAz
NTdjMjA2NWM1OS4uNjlhMWUxYWI5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEyMTksNiArMTIxOSw4
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1ByaXZhdGVN
ZXRob2QoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBib29sIGlzUHJpdmF0ZVNldHRlcihj
b25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgaXNQcml2YXRlR2V0dGVyKGNvbnN0IElk
ZW50aWZpZXImKTsKIAogICAgICAgICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3Qg
VmFyaWFibGVFbnZpcm9ubWVudCYpOwogICAgICAgICB2b2lkIHBvcFByaXZhdGVBY2Nlc3NOYW1l
cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rl
c0NvZGVnZW4uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0Nv
ZGVnZW4uY3BwCmluZGV4IDRlZjU4M2I5ZmE4Li5kODY4YzY3YmRjNCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTQ5
LDI2ICs1NDksNzYgQEAgc3RhdGljIGlubGluZSB2b2lkIGVtaXRQdXRIb21lT2JqZWN0KEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGYKIAogUmVnaXN0ZXJJRCogUHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucykKIHsKKyAgICB0eXBl
ZGVmIHN0ZDo6cGFpcjxQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eU5vZGUqPiBHZXR0ZXJTZXR0ZXJQ
YWlyOworICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEdldHRlclNldHRl
clBhaXIsIElkZW50aWZpZXJSZXBIYXNoPiBHZXR0ZXJTZXR0ZXJNYXA7CisgICAgR2V0dGVyU2V0
dGVyTWFwIHByaXZhdGVBY2Nlc3Nvck1hcDsKKwogICAgIC8vIFByaXZhdGVOYW1lcyBhcmUgaG9p
c3RlZCBhbmQgd2UgbmVlZCB0byBkZWNsYXJlIHRoZW0gYmVmb3JlIGNvbXB1dGVkIHByb3BlcnRp
ZXMgYXJlIGhhbmRsZWQuCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAgUmVn
aXN0ZXJJRCogZHN0ID0gbnVsbHB0cjsKICAgICBmb3IgKDsgcDsgcCA9IHAtPm1fbmV4dCkgewot
ICAgICAgICBpZiAoIShwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZp
ZWxkKSkKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT5tX3R5cGUgJiAoUHJvcGVydHlOb2RlOjpQ
cml2YXRlRmllbGQgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QgfCBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVHZXR0ZXIgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKSkKKyAgICAgICAg
ICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChwLT5tX25vZGUtPnR5cGUoKSAmIChQcm9wZXJ0
eU5vZGU6OlByaXZhdGVHZXR0ZXIgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKSB7Cisg
ICAgICAgICAgICAvLyBXZSBncm91cCBwcml2YXRlIGdldHRlcnMgYW5kIHNldHRlcnMgdG8gc3Rv
cmUgdGhlbSBpbiBhIG9iamVjdAorICAgICAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyKHAt
Pm1fbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4obnVsbHB0cikpOworICAgICAgICAg
ICAgR2V0dGVyU2V0dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gcHJpdmF0ZUFjY2Vzc29yTWFw
LmFkZChwLT5tX25vZGUtPm5hbWUoKS0+aW1wbCgpLCBwYWlyKTsKKyAgICAgICAgICAgIGF1dG8m
IHJlc3VsdFBhaXIgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAgICAgLy8gSWYg
dGhlIG1hcCBhbHJlYWR5IGNvbnRhaW5zIGFuIGVsZW1lbnQgd2l0aCBub2RlLT5uYW1lKCksCisg
ICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHN0b3JlIHRoaXMgbm9kZSBpbiB0aGUgc2Vjb25kIHBh
cnQuCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgICAg
IHJlc3VsdFBhaXIuc2Vjb25kID0gcC0+bV9ub2RlOwogICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgIH0KIAogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3Bl
cnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogICAgICAgICBlbWl0UHV0Q29u
c3RhbnRQcm9wZXJ0eShnZW5lcmF0b3IsIGRzdCwgKnAtPm1fbm9kZSk7CiAgICAgfQogCisgICAg
Ly8gVGhlbiB3ZSBkZWNsYXJlIHByaXZhdGUgYWNjZXNzb3MKKyAgICBmb3IgKGF1dG8mIGl0IDog
cHJpdmF0ZUFjY2Vzc29yTWFwKSB7CisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJT
ZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdE5ld09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCkpOworCisgICAgICAgIEdldHRlclNldHRlclBhaXIgcGFpciA9IGl0LnZhbHVlOworICAgICAg
ICBpZiAocGFpci5maXJzdCkgeworICAgICAgICAgICAgZHN0ID0gcGFpci5maXJzdC0+aXNJbnN0
YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUocGFp
ci5maXJzdC0+bV9hc3NpZ24pOworICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QtPm5lZWRzU3Vw
ZXJCaW5kaW5nKCkpCisgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9y
LCB2YWx1ZS5nZXQoKSwgZHN0KTsKKyAgICAgICAgICAgIGF1dG8gc2V0dGVyT3JHZXR0ZXJJZGVu
dCA9IHBhaXIuZmlyc3QtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcgorICAg
ICAgICAgICAgICAgID8gZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5n
ZXRQcml2YXRlTmFtZSgpCisgICAgICAgICAgICAgICAgOiBnZW5lcmF0b3IucHJvcGVydHlOYW1l
cygpLmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdFB1dEJ5SWQoZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBzZXR0ZXJPckdldHRlcklkZW50
LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocGFpci5zZWNvbmQpIHsK
KyAgICAgICAgICAgIGRzdCA9IHBhaXIuc2Vjb25kLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgp
ID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShwYWlyLnNlY29uZC0+bV9hc3NpZ24p
OworICAgICAgICAgICAgaWYgKHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKQorICAg
ICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIGRz
dCk7CisgICAgICAgICAgICBhdXRvIHNldHRlck9yR2V0dGVySWRlbnQgPSBwYWlyLnNlY29uZC0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyCisgICAgICAgICAgICAgICAgPyBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkK
KyAgICAgICAgICAgICAgICA6IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuc2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0QnlJZChn
ZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIHNldHRlck9yR2V0dGVySWRlbnQsIHZhbHVlLmdldCgpKTsK
KyAgICAgICAgfQorCisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgq
cGFpci5maXJzdC0+bmFtZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdl
bmVyYXRvci5zY29wZVJlZ2lzdGVyKCksIHZhciwgZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBEb05v
dFRocm93SWZOb3RGb3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9u
KTsKKyAgICB9CisgICAgCiAgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVz
IHJlZ3VsYXIgdmFsdWUgcHJvcGVydGllcy4KICAgICBwID0gdGhpczsKICAgICBmb3IgKDsgcCAm
JiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1f
bmV4dCkgewogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5
KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCisgICAgICAgIGlmIChwLT5tX25v
ZGUtPnR5cGUoKSAmIChQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QgfCBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVHZXR0ZXIgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKQorICAgICAgICAg
ICAgY29udGludWU7CisKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAg
ICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9k
ZSk7CiAKLSAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkgJiYgIShwLT5tX25v
ZGUtPnR5cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkpIHsKKyAgICAgICAgaWYg
KHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5j
ZUZpZWxkTG9jYXRpb25zKTsKICAgICAgICAgICAgIGluc3RhbmNlRmllbGRMb2NhdGlvbnMtPmFw
cGVuZChwLT5wb3NpdGlvbigpKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtNTgzLDggKzYz
Myw2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIC8vIGEgY29tcHV0ZWQgcHJv
cGVydHkgb3IgYSBzcHJlYWQsIGp1c3QgZW1pdCBldmVyeXRoaW5nIGFzIHRoYXQgbWF5IG92ZXJy
aWRlIHByZXZpb3VzIHZhbHVlcy4KICAgICAgICAgYm9vbCBjYW5PdmVycmlkZVByb3BlcnRpZXMg
PSBmYWxzZTsKIAotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxQcm9wZXJ0eU5vZGUqLCBQcm9w
ZXJ0eU5vZGUqPiBHZXR0ZXJTZXR0ZXJQYWlyOwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8VW5p
cXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlmaWVyUmVwSGFzaD4gR2V0
dGVyU2V0dGVyTWFwOwogICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAgaW5zdGFuY2VNYXA7CiAgICAg
ICAgIEdldHRlclNldHRlck1hcCBzdGF0aWNNYXA7CiAKQEAgLTYyNCw2ICs2NzIsOSBAQCBSZWdp
c3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3Im
IGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0Zp
ZWxkKCkpCiAgICAgICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZShnZW5lcmF0
b3IsICpwLT5tX25vZGUpOwogCisgICAgICAgICAgICBpZiAocC0+bV9ub2RlLT50eXBlKCkgJiAo
UHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVy
IHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKICAgICAg
ICAgICAgICAgICBBU1NFUlQoaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgICAgICAg
ICAgQVNTRVJUKG5vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwpAQCAtNzM4
LDYgKzc4OSw4IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVy
dHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0Ns
YXNzUHJvcGVydHkoKSkgewogICAgICAgICBBU1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygp
KTsKKyAgICAgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVT
ZXR0ZXIpKTsKKyAgICAgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGVHZXR0ZXIpKTsKIAogICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVNZXRob2QpIHsKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZSgqbm9kZS5uYW1lKCkpOwpAQCAtODY2LDggKzkxOSw5IEBAIFJlZ2lzdGVySUQqIERv
dEFjY2Vzc29yTm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVyCiBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0LCBSZWdpc3RlcklE
KiBiYXNlLCBSZWZQdHI8UmVnaXN0ZXJJRD4mIHRoaXNWYWx1ZSkKIHsKICAgICBpZiAoaXNQcml2
YXRlTmFtZSgpKSB7Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50
aWZpZXIoKSkpIHsKLSAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShpZGVudGlmaWVyKCkpOworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmll
cigpOworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFt
ZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVu
dGlmaWVyTmFtZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5l
cmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdp
c3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFu
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKQEAgLTg3Niw2ICs5MzAs
MzEgQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3Vu
ZCk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZUdldHRlcihp
ZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52
YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
c2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAg
ICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdl
dFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJy
YW5kU3ltYm9sKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRl
ck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJ
ZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJh
dG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsKKyAg
ICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAgICAg
ICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZSk7CisgICAgICAg
ICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRDYWxsKGRzdCwgZ2V0dGVyRnVuY3Rpb24uZ2V0KCks
IE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3Np
dGlvbiwgRGVidWdnYWJsZUNhbGw6Olllcyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZ2Vu
ZXJhdG9yLmlzUHJpdmF0ZVNldHRlcihpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIC8v
IFdlIG5lZWQgdG8gcGVyZm9ybSBicmFuZCBjaGVjayB0byBmb2xsb3cgdGhlIHNwZWMKKyAgICAg
ICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7
CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJl
c29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2
YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKyAgICAgICAgICAg
IGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVm
aW5lZCBwcml2YXRlIGdldHRlciIpOworICAgICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAg
fQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsK
ICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxk
IG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC05MDQs
NyArOTgzLDI1IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiB7CiAgICAgaWYgKGlzUHJpdmF0
ZU5hbWUoKSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOwot
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsK
KyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVTZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7
CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmll
ck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9y
LmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJ
RCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAg
ICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3Iu
ZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2
YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0
dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVz
KCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJn
dW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAgICAgICAgICAgZ2VuZXJhdG9y
Lm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5n
ZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBt
X3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKworICAgICAgICAgICAgcmV0dXJuIHZh
bHVlOworICAgICAgICB9CisKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIgPSBnZW5lcmF0
b3IuaXNQcml2YXRlR2V0dGVyKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgaWYgKGlzUHJpdmF0
ZUdldHRlciB8fCBnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgewog
ICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJO
YW1lKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
Tm9kZXMuaAppbmRleCA4Yjk0NmJkYWJjMy4uMThmNDJlNjk4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKQEAgLTcxMyw3ICs3MTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICBlbnVtIGNsYXNzIENsYXNzRWxlbWVudFRhZyA6IHVpbnQ4X3QgeyBObywgSW5zdGFuY2UsIFN0
YXRpYywgTGFzdFRhZyB9OwogICAgIGNsYXNzIFByb3BlcnR5Tm9kZSBmaW5hbCA6IHB1YmxpYyBQ
YXJzZXJBcmVuYUZyZWVhYmxlIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGVudW0gVHlwZSA6IHVp
bnQ4X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0g
OCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0
ZU1ldGhvZCA9IDEyOCB9OworICAgICAgICBlbnVtIFR5cGUgOiB1aW50MTZfdCB7IENvbnN0YW50
ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAx
NiwgU3ByZWFkID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9kID0gMTI4LCBQ
cml2YXRlU2V0dGVyID0gMjU2LCBQcml2YXRlR2V0dGVyID0gNTEyIH07CiAgICAgICAgIGVudW0g
UHV0VHlwZSA6IHVpbnQ4X3QgeyBVbmtub3duLCBLbm93bkRpcmVjdCB9OwogCiAgICAgICAgIFBy
b3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBQdXRU
eXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03MzIsNyArNzMyLDcgQEAg
bmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1
cm4gaXNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAg
Ym9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFz
c1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092
ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBs
aWNhdGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUg
JiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCk7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZh
dGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhv
ZCB8IFByaXZhdGVHZXR0ZXIgfCBQcml2YXRlU2V0dGVyKTsgfQogICAgICAgICBib29sIGhhc0Nv
bXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29s
IGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYg
aGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc0Myw3ICs3
NDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1l
OwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNz
aW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKKyAgICAgICAgdW5z
aWduZWQgbV90eXBlIDogMTA7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcg
OiAxOwogICAgICAgICB1bnNpZ25lZCBtX3B1dFR5cGUgOiAxOwogICAgICAgICBzdGF0aWNfYXNz
ZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RU
YWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5kZXggYTE4MDExZjA1Mjku
LmU3YWM3OTUyNzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yOTE2LDcgKzI5MTYsNyBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAg
ICAgbmV4dCgpOwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6
Ok1ldGhvZE1vZGUgJiYgKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklO
RykgfHwgbWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSB8fCBtYXRjaChPUEVOQlJBQ0tF
VCkpKSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0
aG9kTW9kZSAmJiAobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8
fCBtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSB8
fCAoT3B0aW9uczo6dXNlQ2xhc3NGaWVsZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpKSkgewog
ICAgICAgICAgICAgICAgIGlzR2V0dGVyID0gKmlkZW50ID09IHByb3BlcnR5TmFtZXMuZ2V0Owog
ICAgICAgICAgICAgICAgIGlzU2V0dGVyID0gKmlkZW50ID09IHByb3BlcnR5TmFtZXMuc2V0Owog
ICAgICAgICAgICAgfQpAQCAtMjk2MSw4ICsyOTYxLDE5IEBAIHBhcnNlTWV0aG9kOgogICAgICAg
ICBUcmVlUHJvcGVydHkgcHJvcGVydHk7CiAgICAgICAgIGNvbnN0IGJvb2wgYWx3YXlzU3RyaWN0
SW5zaWRlQ2xhc3MgPSB0cnVlOwogICAgICAgICBpZiAoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIpIHsK
LSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUg
JiB+UHJvcGVydHlOb2RlOjpDb25zdGFudCk7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgKGlzR2V0dGVyID8gUHJvcGVydHlOb2RlOjpH
ZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlcikpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6
OnVzZUNsYXNzRmllbGRzKCkgJiYgbWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICAg
ICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBpZiAoaXNT
ZXR0ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2Nv
cGUtPmRlY2xhcmVQcml2YXRlU2V0dGVyKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52
YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBzZXR0ZXIgd2l0aCBh
biBhbHJlYWR5IHVzZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGlj
X2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0
dGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVHZXR0ZXIoKmlkZW50KSAm
IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJEZWNsYXJl
ZCBwcml2YXRlIGdldHRlciB3aXRoIGFuIGFscmVhZHkgdXNlZCBuYW1lIik7CisgICAgICAgICAg
ICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAgICAgICAg
ICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgKGlzR2V0
dGVyID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlcikpOworICAg
ICAgICAgICAgfQogICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNldHRlcihjb250
ZXh0LCBhbHdheXNTdHJpY3RJbnNpZGVDbGFzcywgdHlwZSwgbWV0aG9kU3RhcnQsIENvbnN0cnVj
dG9yS2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAi
Q2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoT3B0aW9uczo6
dXNlQ2xhc3NGaWVsZHMoKSAmJiAhbWF0Y2goT1BFTlBBUkVOKSAmJiB0YWcgPT0gQ2xhc3NFbGVt
ZW50VGFnOjpJbnN0YW5jZSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RN
b2RlKSB7CkBAIC00MjM4LDEyICs0MjQ5LDE3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAK
ICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKIAotICAgIGlm
IChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtX3Rva2VuLm1fdHlw
ZSAmIEtleXdvcmRUb2tlbkZsYWcpIHsKKyAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpIHx8
IG1hdGNoKFNUUklORykgfHwgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRzKCkgJiYgbWF0Y2goUFJJ
VkFURU5BTUUpKSB8fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpIHsKICAgICAg
ICAgc3RyaW5nUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMgJiYgKnN0cmlu
Z1Byb3BlcnR5TmFtZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwKICAgICAgICAg
ICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQgJ3Byb3RvdHlwZSciKTsK
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3Rh
bmNlICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIGdldHRlciBvciBzZXR0ZXIgbmFt
ZWQgJ2NvbnN0cnVjdG9yJyIpOworCisgICAgICAgIGlmIChtYXRjaChQUklWQVRFTkFNRSkpIHsK
KyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpO
bywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBzZXR0ZXIgb3IgZ2V0dGVyIG91dHNpZGUgYSBj
bGFzcyIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1l
bnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBzZXR0ZXIgb3IgZ2V0dGVy
IGFzIHN0YXRpYyIpOworICAgICAgICB9CiAgICAgICAgIG5leHQoKTsKICAgICB9IGVsc2UgaWYg
KG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikpIHsKICAgICAgICAgbnVtZXJpY1Byb3Bl
cnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtNDI2MCw5ICs0Mjc2LDE1
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6
OkdldHRlcikgewogICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0
ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3IgZ2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNl
dCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ug
Z2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZSBpZiAodHlwZSAm
IFByb3BlcnR5Tm9kZTo6U2V0dGVyKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5Q
QVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIp
OwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rp
b25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUs
IGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNl
dHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwg
IkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgIH0gZWxzZSBpZiAodHlwZSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikgeworICAgICAgICBmYWlsSWZGYWxzZShtYXRj
aChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3IgcHJpdmF0ZSBzZXR0
ZXIgZGVmaW5pdGlvbiIpOworICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8o
Y29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBTb3VyY2VQYXJzZU1v
ZGU6OlNldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVl
ZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25U
eXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgIH0g
ZWxzZSBpZiAodHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcikgeworICAgICAgICBm
YWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgbGlzdCBm
b3IgcHJpdmF0ZSBnZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgICAgICBmYWlsSWZGYWxzZSgocGFy
c2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVk
LCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1
cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5j
dGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5p
dGlvbiIpOwogICAgIH0KIAogICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaAppbmRleCA1OGY3MmY2ZGM2Ni4uODZiZjU1YzkyNTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTI0LDYgKzUyNCwzNCBAQCBw
dWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgRGVjbGFyYXRpb25S
ZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQor
ICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAg
ICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFs
aWQ7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQ
cml2YXRlU2V0dGVyKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAg
ICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFy
YXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFy
ZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBB
U1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25S
ZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYm9v
bCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRl
bnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1bHQgfD0g
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAg
ICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKwogICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNv
bnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4
aWNhbERlY2xhcmF0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCA0Y2I5MGM3MWJlOS4uZjE3MThkNmQ1ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmly
b25tZW50LmNwcApAQCAtMTA3LDYgKzEwNywxMDIgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50
OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4K
ICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFi
bGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAg
IG1fcmFyZURhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVE
YXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQ
cml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzU2V0dGVyKTsKKworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9u
bWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOworICAgICAg
ICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAg
ICAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFkZFJl
c3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsK
KyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5OworICAgIH0KKworICAgIFByaXZh
dGVOYW1lRW50cnkgY3VycmVudEVudHJ5ID0gZmluZFJlc3VsdC0+dmFsdWU7CisgICAgaWYgKGN1
cnJlbnRFbnRyeS5pc0RlY2xhcmVkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeS5pc1Nl
dHRlcigpIHx8IGN1cnJlbnRFbnRyeS5pc01ldGhvZCgpIHx8ICFjdXJyZW50RW50cnkuaXNHZXR0
ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1
cGxpY2F0ZSBwcml2YXRlIG5hbWUuCisKKyAgICAgICAgQVNTRVJUKGN1cnJlbnRFbnRyeS5pc0dl
dHRlcigpKTsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKGN1cnJlbnRFbnRyeS5iaXRz
KCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKKyAgICAgICAgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEpOworCisgICAgICAgIGF1
dG8gZW50cnlJdGVyYXRvciA9IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIEFTU0VS
VChlbnRyeUl0ZXJhdG9yICE9IG1fbWFwLmVuZCgpKTsKKyAgICAgICAgZW50cnlJdGVyYXRvci0+
dmFsdWUuc2V0SXNQcml2YXRlU2V0dGVyKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
fQorCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4K
KyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50cnku
c2V0SXNQcml2YXRlU2V0dGVyKCk7CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVudHJ5
LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisg
ICAgUHJpdmF0ZU5hbWVFbnRyeSBuZXdFbnRyeShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0
ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRz
OjpJc1NldHRlcik7CisgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZp
ZXIsIG5ld0VudHJ5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJl
RGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7
CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5k
KGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2
YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVO
YW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6
SXNHZXR0ZXIpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50
cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CisgICAgICAgIGVudHJ5
LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBt
X21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0g
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAg
ICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgUHJpdmF0ZU5hbWVF
bnRyeSBjdXJyZW50RW50cnkgPSBmaW5kUmVzdWx0LT52YWx1ZTsKKyAgICBpZiAoY3VycmVudEVu
dHJ5LmlzRGVjbGFyZWQoKSkgeworICAgICAgICBpZiAoY3VycmVudEVudHJ5LmlzR2V0dGVyKCkg
fHwgY3VycmVudEVudHJ5LmlzTWV0aG9kKCkgfHwgIWN1cnJlbnRFbnRyeS5pc1NldHRlcigpKQor
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRl
IHByaXZhdGUgbmFtZS4KKworICAgICAgICBBU1NFUlQoY3VycmVudEVudHJ5LmlzU2V0dGVyKCkp
OworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoY3VycmVudEVudHJ5LmJpdHMoKSB8IFBy
aXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRhLT5t
X3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbWV0YSk7CisKKyAgICAgICAgYXV0byBlbnRy
eUl0ZXJhdG9yID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5
SXRlcmF0b3IgIT0gbV9tYXAuZW5kKCkpOworICAgICAgICBlbnRyeUl0ZXJhdG9yLT52YWx1ZS5z
ZXRJc1ByaXZhdGVHZXR0ZXIoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAg
ICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIGF1
dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1By
aXZhdGVHZXR0ZXIoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXND
YXB0dXJlZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICBQcml2
YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0
dGVyKTsKKyAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3
RW50cnkpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCBlYTY4MDg2NDUzNS4u
ODBhM2E3Yzc1NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5oCkBAIC00Niw2ICs0Niw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ByaXZhdGVGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJp
dmF0ZUZpZWxkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU1ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU1ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc1ByaXZhdGVTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZh
dGVTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlR2V0dGVyKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlR2V0dGVyOyB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBB
TFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAg
LTU5LDYgKzYxLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Nsb3Bw
eU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0aW5n
Q2FuZGlkYXRlOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZUZpZWxkKCkg
eyBtX2JpdHMgfD0gSXNQcml2YXRlRmllbGQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0
SXNQcml2YXRlTWV0aG9kKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTWV0aG9kOyB9CisgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZVNldHRlcigpIHsgbV9iaXRzIHw9IElzUHJpdmF0
ZVNldHRlcjsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVHZXR0ZXIoKSB7
IG1fYml0cyB8PSBJc1ByaXZhdGVHZXR0ZXI7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBj
bGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTgzLDYgKzg3LDggQEAgcHJp
dmF0ZToKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCiAg
ICAgICAgIElzUHJpdmF0ZUZpZWxkID0gMSA8PCAxMCwKICAgICAgICAgSXNQcml2YXRlTWV0aG9k
ID0gMSA8PCAxMSwKKyAgICAgICAgSXNQcml2YXRlR2V0dGVyID0gMSA8PCAxMiwKKyAgICAgICAg
SXNQcml2YXRlU2V0dGVyID0gMSA8PCAxMywKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7
IDAgfTsKIH07CkBAIC0xMDAsOCArMTA2LDEwIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0Rl
Y2xhcmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXR0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1NldHRlcjsgfQorICAgIEFMV0FZU19JTkxJTkUg
Ym9vbCBpc0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzR2V0dGVyOyB9CiAKLSAg
ICBib29sIGlzUHJpdmF0ZUFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCk7IH0KKyAg
ICBib29sIGlzUHJpdmF0ZUFjY2VzcygpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCkgfHwgaXNT
ZXR0ZXIoKSB8fCBpc0dldHRlcigpOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNV
c2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
RGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CkBAIC0xMTgsNiArMTI2LDggQEAg
cHVibGljOgogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAgIElzRGVjbGFyZWQgPSAx
IDw8IDEsCiAgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAorICAgICAgICBJc0dldHRlciA9IDEg
PDwgMywKKyAgICAgICAgSXNTZXR0ZXIgPSAxIDw8IDQsCiAgICAgfTsKIAogcHJpdmF0ZToKQEAg
LTE5Miw2ICsyMDIsMTIgQEAgcHVibGljOgogICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2Qo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVNZXRo
b2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKIAorICAgIGJvb2wg
ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1
cm4gZGVjbGFyZVByaXZhdGVTZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBk
ZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKTsKKworICAgIGJvb2wgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnRpZmllci5p
bXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKwogICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xh
cmVQcml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cikKICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50
aWZpZXIuZ2V0KCkpOwpAQCAtMzIwLDcgKzMzNiw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFZh
cmlhYmxlRW52aXJvbm1lbnRFbnRyeT4gbV92YXJpYWJsZU1ldGFkYXRhOwogICAgIFZlY3RvcjxS
ZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+PiBtX3ByaXZhdGVBY2Nlc3NOYW1lczsKICAgICBWZWN0
b3I8UHJpdmF0ZU5hbWVFbnRyeT4gbV9wcml2YXRlTmFtZU1ldGFkYXRhOwotCiAgICAgdW5zaWdu
ZWQgbV9oYXNoOwogICAgIGJvb2wgbV9pc0V2ZXJ5dGhpbmdDYXB0dXJlZDsKIH07Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391866</attachid>
            <date>2020-02-27 07:36:41 -0800</date>
            <delta_ts>2021-02-10 08:02:57 -0800</delta_ts>
            <desc>WIP - Patch</desc>
            <filename>private-accessors.diff</filename>
            <type>text/plain</type>
            <size>45977</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFt
ZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGlj
YXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwLi5lMzc0NTE4OWZhZQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMKQEAgLTAsMCArMSw5
MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAg
IGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9w
KCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9m
IGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgc2V0ICNtKHYp
IHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgICAgIHNldCAjbSh1KSB7fQorICAgICAgICB9Cisg
ICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgI207CisgICAgICAgICAg
ICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKwor
YXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAg
ICAgIGNsYXNzIEMgeworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAg
ICAgICAgICAgICNtOworICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhT
eW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgewor
ICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgICAgICNtKCkg
e30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAg
ICNtKCkge30KKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30p
OworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAK
KyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAg
Z2V0ICNtKCkge30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3lu
dGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAg
ICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgICAgICBzZXQgI20oKSB7fQorICAgICAgICAg
ICAgI207CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAg
ICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAgc2V0ICNtKCkge30KKyAgICAgICAgICAgICNt
KCkge30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjgyZmE3ZTdiYzEwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSw5MSBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZUNsYXNzRmllbGRzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBn
b3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVy
cm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0
Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQor
ICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBl
eHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MgPSBm
dW5jdGlvbiAoKSB7CisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkgeyBy
ZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgICAgIGFjY2VzcyhvKSB7CisgICAgICAgICAgICAg
ICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1
cm4gbmV3IEMoKTsKKyAgICB9CisKKyAgICBsZXQgYzEgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNs
YXNzKCk7CisgICAgbGV0IGMyID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworCisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoYzEpLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYzIuYWNjZXNzKGMyKSwgJ3Rlc3QnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYzEuYWNjZXNzKGMyKTsKKyAgICB9KTsKKworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYzIuYWNjZXNz
KGMxKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgUyB7Cisg
ICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdzdXBlciBjbGFzcyc7IH0KKworICAgICAgICBzdXBl
ckFjY2VzcygpIHsgcmV0dXJuIHRoaXMuI207IH0KKyAgICB9CisKKyAgICBjbGFzcyBDIGV4dGVu
ZHMgUyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdzdWJjbGFzcyc7IH0KKworICAgICAg
ICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nl
c3MoKSwgJ3N1YmNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLnN1cGVyQWNjZXNzKCks
ICdzdXBlciBjbGFzcycpOworCisgICAgbGV0IHMgPSBuZXcgUygpOworICAgIGFzc2VydC5zYW1l
VmFsdWUocy5zdXBlckFjY2VzcygpLCAnc3VwZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwocyk7CisgICAg
fSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQg
I20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBhY2Nlc3MobykgeworICAgICAgICAg
ICAgcmV0dXJuIG8uI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmFjY2VzcyhjKSwgJ3Rlc3QnKTsKKworICAgIGxldCBv
ID0ge307CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBjLmFjY2VzcyhvKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjczZDQ4MTczNWRkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxMzIgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcg
Z290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRF
cnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJl
dHVybiAndGVzdCc7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9k
KG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3
IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChjKSwgJ3Rlc3QnKTsK
K30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgp
IHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0
aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7
CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgICNtID0gJ3Rlc3QnOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5l
ckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhv
ZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnb3V0
ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisg
ICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAg
ICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgI20oKSB7
IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5u
ZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRo
b2QoKSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyB0aHJvdyBuZXcg
RXJyb3IoJ1Nob3VsZCBuZXZlciBleGVjdXRlJyk7IH0KKworICAgICAgICBCID0gY2xhc3Mgewor
ICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBu
ZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0
ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVyIGNsYXNzJzsgfQor
CisgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICBCID0gY2xh
c3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4j
bTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7
IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5u
ZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9u
KCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQik7CisgICAgfSk7CisKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOwor
ICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1i
ZXJzLWdldC1hbmQtc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1h
bmQtc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lOTY2MDU3
YjQ2NwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1n
ZXQtYW5kLXNldC5qcwpAQCAtMCwwICsxLDYzIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNl
Q2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7
CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3Ig
KyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0K
KworICAgICAgICBhY2Nlc3NQcml2YXRlTWVtYmVyKCkgeworICAgICAgICAgICAgcmV0dXJuIHRo
aXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2
YXRlTWVtYmVyKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBhY2Nl
c3NQcml2YXRlTWVtYmVyKHYpIHsKKyAgICAgICAgICAgIHRoaXMuI20gPSB2OworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGMuYWNjZXNzUHJpdmF0ZU1lbWJlcigndGVzdCcp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBhY2Nlc3NQcml2YXRlTWVtYmVy
KHYpIHsKKyAgICAgICAgICAgIHRoaXMuI20gPSB2OworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAo
KSB7CisgICAgICAgIGMuYWNjZXNzUHJpdmF0ZU1lbWJlcigndGVzdCcpOworICAgIH0pOworfSko
KTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUt
b24tZGlyZWN0LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJs
ZS1vbi1kaXJlY3QtZXZhbC5qcwppbmRleCAwMTQwMmQ3NGI1Ny4uYzY3MTI4NDExNDYgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRp
cmVjdC1ldmFsLmpzCkBAIC0yMSwzICsyMSwzNiBAQCBsZXQgYXNzZXJ0ID0gewogICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5jYWxsTWV0aG9kRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKIH0pKCk7CiAKKyhm
dW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsKKyAgICAgICAg
ICAgIHJldHVybiAndGVzdCc7CisgICAgICAgIH0KKworICAgICAgICBjYWxsR2V0dGVyRnJvbUV2
YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4g
ZXZhbCgnc2VsZi4jbScpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsR2V0dGVyRnJvbUV2YWwoKSwgJ3Rlc3QnKTsK
K30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2
KSB7CisgICAgICAgICAgICB0aGlzLl92ID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxT
ZXR0ZXJGcm9tRXZhbCh2KSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAg
ICAgICBldmFsKCdzZWxmLiNtID0gdicpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMg
PSBuZXcgQygpOworICAgIGMuY2FsbFNldHRlckZyb21FdmFsKCd0ZXN0JykKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFs
aXphdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2
YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwLi40NWJhNzcwOGVkNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRp
YWxpemF0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VD
bGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0
aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgcmhzICsgIiBidWcgZ290OiAiICsgbGhzKTsK
KyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgp
IHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGZpZWxkID0gZXZhbCgndGhpcy4jbSgpJyk7
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5m
aWVsZCwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGZpZWxkID0gZXZh
bCgndGhpcy4jbScpOworICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwLi4wNDJlZDM3MTAzZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsMTAwIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlQ2xhc3NGaWVsZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0g
cmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIg
YnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVj
dGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAg
fSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJv
cikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzog
IiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAg
fQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFz
cyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20o
dikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgICAgICBhY2Nlc3MobywgdikgeworICAgICAg
ICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAg
bGV0IGMgPSBuZXcgQygpOworICAgICAgICByZXR1cm4gYzsKKyAgICB9OworCisgICAgbGV0IGMx
ID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworICAgIGxldCBjMiA9IGNyZWF0ZUFuZElu
c3RhbnRpYXRlQ2xhc3MoKTsKKworICAgIGMxLmFjY2VzcyhjMSwgJ3Rlc3QnKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMxLl92LCAndGVzdCcpOworICAgIGMyLmFjY2VzcyhjMiwgJ3Rlc3QnKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMyLl92LCAndGVzdCcpOworCisgICAgYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIsICdmb28nKTsK
KyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgYzIuYWNjZXNzKGMxLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24g
KCkgeworICAgIGNsYXNzIFMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdiB9CisK
KyAgICAgICAgc3VwZXJBY2Nlc3ModikgeyB0aGlzLiNtID0gdjsgfQorICAgIH0KKworICAgIGNs
YXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdSA9IHY7IH0KKwor
ICAgICAgICBhY2Nlc3ModikgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20gPSB2OworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYy5hY2Nlc3MoJ3Rl
c3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3UsICd0ZXN0Jyk7CisKKyAgICBjLnN1cGVy
QWNjZXNzKCdzdXBlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3N1cGVy
IGNsYXNzJyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7CisgICAgcy5zdXBlckFjY2Vzcygnc3Vw
ZXIgY2xhc3MnKQorICAgIGFzc2VydC5zYW1lVmFsdWUocy5fdiwgJ3N1cGVyIGNsYXNzJyk7CisK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNj
ZXNzLmNhbGwocywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAg
ICBhY2Nlc3MobywgdikgeworICAgICAgICAgICAgcmV0dXJuIG8uI20gPSB2OworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuYWNjZXNzKGMsICd0ZXN0Jyk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworCisgICAgbGV0IG8gPSB7fTsK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNj
ZXNzKG8sICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAuLjc0ZTQwYzkzZWE0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxNTUgQEAKKy8vQCByZXF1aXJl
T3B0aW9ucygiLS11c2VDbGFzc0ZpZWxkcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcg
Z290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRF
cnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0
aGlzLl92ID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qo
bywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcg
Yy5CKCk7CisgICAgaW5uZXJCLm1ldGhvZChjLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYp
IHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0
aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgZ2V0IG0oKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgICAgICNt
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5l
ckIgPSBuZXcgYy5CKCk7CisKKyAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ3Rlc3QnKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tLCAndGVzdCcpOworCisgICAgYy5tZXRob2QoJ291
dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsK
KworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5u
ZXJCLm1ldGhvZChjLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAg
ICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAg
ICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBu
ZXcgYy5CKCk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlubmVyQi5tZXRob2QoaW5uZXJCKTsKKyAgICB9KTsKKworICAgIGMubWV0aG9kKCdv
dXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7
CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlu
bmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1l
dGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAg
ICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsK
KworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5u
ZXJCLm1ldGhvZChpbm5lckIsICdmb28nKTsKKyAgICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRl
ciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVy
Qi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhv
ZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAg
IG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsK
KworICAgIGlubmVyQi5tZXRob2QoaW5uZXJCLCAndGVzdDI2MicpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoaW5uZXJCLl92LCAndGVzdDI2MicpOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNz
Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhv
ZChjLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwCmluZGV4IGNiZThh
YzJhZDM5Li4wNzAzYWM1ZmU1MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAKQEAgLTE4NjUsNiArMTg2NSwx
NSBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMo
Y29uc3QgVmFyaWFibGVFbnZpcm9ubWVudCYgbAogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0
ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChl
bnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2QoKSkKICAgICAgICAgICAgICAgICBzeW1ib2xUYWJs
ZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNNZXRob2QpKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHVpbnQx
Nl90IHRyYWl0cyA9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZDsKKyAgICAg
ICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlR2V0dGVyKCkpCisgICAgICAgICAg
ICAgICAgICAgIHRyYWl0cyB8PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyOwor
ICAgICAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVTZXR0ZXIoKSkKKyAgICAg
ICAgICAgICAgICAgICAgdHJhaXRzIHw9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0
ZXI7CisKKyAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50cnku
a2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KHRyYWl0cykpOworICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfQogICAgIHJldHVybiBoYXNDYXB0dXJlZFZhcmlhYmxlczsKQEAgLTI4Njcs
NiArMjg3NiwzMCBAQCBib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVNZXRob2QoY29u
c3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjppc1ByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsg
KSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAg
IGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOworICAgICAgICBpZiAoaXQgIT0gbWFw
LmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc1NldHRlcigpOworICAgIH0K
KworICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2
YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQg
aSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBt
YXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQo
aWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBpdC0+dmFsdWUuaXNHZXR0ZXIoKTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7
Cit9CisKIHZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OnB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29u
c3QgVmFyaWFibGVFbnZpcm9ubWVudCYgZW52aXJvbm1lbnQpCiB7CiAgICAgaWYgKCFlbnZpcm9u
bWVudC5wcml2YXRlTmFtZXNTaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggMzU3YzIwNjVjNTkuLjY5
YTFlMWFiOWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9CeXRlY29kZUdlbmVyYXRvci5oCkBAIC0xMjE5LDYgKzEyMTksOCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgfQogCiAgICAgICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kKGNvbnN0IElk
ZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmll
ciYpOworICAgICAgICBib29sIGlzUHJpdmF0ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJik7CiAK
ICAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFZhcmlhYmxlRW52aXJv
bm1lbnQmKTsKICAgICAgICAgdm9pZCBwb3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRl
eCA0ZWY1ODNiOWZhOC4uZDg2OGM2N2JkYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU0OSwyNiArNTQ5LDc2IEBA
IHN0YXRpYyBpbmxpbmUgdm9pZCBlbWl0UHV0SG9tZU9iamVjdChCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpc3RlcklEKiBmCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBk
c3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1RleHRQb3Np
dGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMpCiB7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlm
aWVyUmVwSGFzaD4gR2V0dGVyU2V0dGVyTWFwOworICAgIEdldHRlclNldHRlck1hcCBwcml2YXRl
QWNjZXNzb3JNYXA7CisKICAgICAvLyBQcml2YXRlTmFtZXMgYXJlIGhvaXN0ZWQgYW5kIHdlIG5l
ZWQgdG8gZGVjbGFyZSB0aGVtIGJlZm9yZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGFyZSBoYW5kbGVk
LgogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9
IG51bGxwdHI7CiAgICAgZm9yICg7IHA7IHAgPSBwLT5tX25leHQpIHsKLSAgICAgICAgaWYgKCEo
cC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVGaWVsZCkpCisgICAgICAg
IGlmICghKHAtPm1fbm9kZS0+bV90eXBlICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUZpZWxkIHwg
UHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVy
IHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KworICAgICAgICBpZiAocC0+bV9ub2RlLT50eXBlKCkgJiAoUHJvcGVydHlOb2RlOjpQcml2YXRl
R2V0dGVyIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSkgeworICAgICAgICAgICAgLy8g
V2UgZ3JvdXAgcHJpdmF0ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIHRvIHN0b3JlIHRoZW0gaW4gYSBv
YmplY3QKKyAgICAgICAgICAgIEdldHRlclNldHRlclBhaXIgcGFpcihwLT5tX25vZGUsIHN0YXRp
Y19jYXN0PFByb3BlcnR5Tm9kZSo+KG51bGxwdHIpKTsKKyAgICAgICAgICAgIEdldHRlclNldHRl
ck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHByaXZhdGVBY2Nlc3Nvck1hcC5hZGQocC0+bV9ub2Rl
LT5uYW1lKCktPmltcGwoKSwgcGFpcik7CisgICAgICAgICAgICBhdXRvJiByZXN1bHRQYWlyID0g
cmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgICAgIC8vIElmIHRoZSBtYXAgYWxyZWFk
eSBjb250YWlucyBhbiBlbGVtZW50IHdpdGggbm9kZS0+bmFtZSgpLAorICAgICAgICAgICAgLy8g
d2UgbmVlZCB0byBzdG9yZSB0aGlzIG5vZGUgaW4gdGhlIHNlY29uZCBwYXJ0LgorICAgICAgICAg
ICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAgICByZXN1bHRQYWlyLnNl
Y29uZCA9IHAtPm1fbm9kZTsKICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKICAg
ICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90
eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKICAgICAgICAgZW1pdFB1dENvbnN0YW50UHJvcGVydHko
Z2VuZXJhdG9yLCBkc3QsICpwLT5tX25vZGUpOwogICAgIH0KIAorICAgIC8vIFRoZW4gd2UgZGVj
bGFyZSBwcml2YXRlIGFjY2Vzc29zCisgICAgZm9yIChhdXRvJiBpdCA6IHByaXZhdGVBY2Nlc3Nv
ck1hcCkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2JqID0gZ2Vu
ZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpKTsKKworICAgICAg
ICBHZXR0ZXJTZXR0ZXJQYWlyIHBhaXIgPSBpdC52YWx1ZTsKKyAgICAgICAgaWYgKHBhaXIuZmly
c3QpIHsKKyAgICAgICAgICAgIGRzdCA9IHBhaXIuZmlyc3QtPmlzSW5zdGFuY2VDbGFzc1Byb3Bl
cnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOworICAgICAgICAgICAgUmVmUHRy
PFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKHBhaXIuZmlyc3QtPm1fYXNz
aWduKTsKKyAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0LT5uZWVkc1N1cGVyQmluZGluZygpKQor
ICAgICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRvciwgdmFsdWUuZ2V0KCks
IGRzdCk7CisgICAgICAgICAgICBhdXRvIHNldHRlck9yR2V0dGVySWRlbnQgPSBwYWlyLmZpcnN0
LT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIKKyAgICAgICAgICAgICAgICA/
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUo
KQorICAgICAgICAgICAgICAgIDogZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5zZXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRCeUlk
KGdldHRlclNldHRlck9iai5nZXQoKSwgc2V0dGVyT3JHZXR0ZXJJZGVudCwgdmFsdWUuZ2V0KCkp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBhaXIuc2Vjb25kKSB7CisgICAgICAgICAgICBk
c3QgPSBwYWlyLnNlY29uZC0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6
IGRzdE9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gdmFsdWUg
PSBnZW5lcmF0b3IuZW1pdE5vZGUocGFpci5zZWNvbmQtPm1fYXNzaWduKTsKKyAgICAgICAgICAg
IGlmIChwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgICAgICBl
bWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBkc3QpOworICAgICAgICAg
ICAgYXV0byBzZXR0ZXJPckdldHRlcklkZW50ID0gcGFpci5zZWNvbmQtPm1fdHlwZSAmIFByb3Bl
cnR5Tm9kZTo6UHJpdmF0ZUdldHRlcgorICAgICAgICAgICAgICAgID8gZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpCisgICAgICAgICAgICAg
ICAgOiBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVO
YW1lKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dEJ5SWQoZ2V0dGVyU2V0dGVyT2Jq
LmdldCgpLCBzZXR0ZXJPckdldHRlcklkZW50LCB2YWx1ZS5nZXQoKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKnBhaXIuZmlyc3QtPm5h
bWUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0UHV0VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVS
ZWdpc3RlcigpLCB2YXIsIGdldHRlclNldHRlck9iai5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91
bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJbml0aWFsaXphdGlvbik7CisgICAgfQorICAg
IAogICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29wIGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVl
IHByb3BlcnRpZXMuCiAgICAgcCA9IHRoaXM7CiAgICAgZm9yICg7IHAgJiYgKHAtPm1fbm9kZS0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5tX25leHQpIHsKICAgICAg
ICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBl
IDogZHN0T3JDb25zdHJ1Y3RvcjsKIAorICAgICAgICBpZiAocC0+bV9ub2RlLT50eXBlKCkgJiAo
UHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVy
IHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQogICAgICAgICAgICAgZW1p
dFNhdmVDb21wdXRlZEZpZWxkTmFtZShnZW5lcmF0b3IsICpwLT5tX25vZGUpOwogCi0gICAgICAg
IGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpICYmICEocC0+bV9ub2RlLT50eXBlKCkgJiBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpKSB7CisgICAgICAgIGlmIChwLT5pc0luc3RhbmNl
Q2xhc3NGaWVsZCgpKSB7CiAgICAgICAgICAgICBBU1NFUlQoaW5zdGFuY2VGaWVsZExvY2F0aW9u
cyk7CiAgICAgICAgICAgICBpbnN0YW5jZUZpZWxkTG9jYXRpb25zLT5hcHBlbmQocC0+cG9zaXRp
b24oKSk7CiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTU4Myw4ICs2MzMsNiBAQCBSZWdpc3Rl
cklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdl
bmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAvLyBhIGNvbXB1dGVkIHByb3BlcnR5IG9yIGEgc3By
ZWFkLCBqdXN0IGVtaXQgZXZlcnl0aGluZyBhcyB0aGF0IG1heSBvdmVycmlkZSBwcmV2aW91cyB2
YWx1ZXMuCiAgICAgICAgIGJvb2wgY2FuT3ZlcnJpZGVQcm9wZXJ0aWVzID0gZmFsc2U7CiAKLSAg
ICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0
dGVyU2V0dGVyUGFpcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBs
KiwgR2V0dGVyU2V0dGVyUGFpciwgSWRlbnRpZmllclJlcEhhc2g+IEdldHRlclNldHRlck1hcDsK
ICAgICAgICAgR2V0dGVyU2V0dGVyTWFwIGluc3RhbmNlTWFwOwogICAgICAgICBHZXR0ZXJTZXR0
ZXJNYXAgc3RhdGljTWFwOwogCkBAIC02MjQsNiArNjcyLDkgQEAgUmVnaXN0ZXJJRCogUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGUKICAgICAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQogICAgICAg
ICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2Rl
KTsKIAorICAgICAgICAgICAgaWYgKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZU1ldGhvZCB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZVNldHRlcikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAg
ICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpKSB7CiAgICAgICAgICAgICAgICAgQVNT
RVJUKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAgICAgICAgIEFTU0VSVChub2Rl
LT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKQEAgLTczOCw2ICs3ODksOCBAQCB2
b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkp
IHsKICAgICAgICAgQVNTRVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisgICAgICAgIEFT
U0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSk7CisgICAg
ICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKSk7
CiAKICAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9k
KSB7CiAgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUu
bmFtZSgpKTsKQEAgLTg2Niw4ICs5MTksOSBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6
OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRy
PFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU5hbWUoKSkgewot
ICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7Ci0g
ICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigp
KTsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAg
aWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwog
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKIAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CkBAIC04NzYsNiArOTMwLDMxIEBAIFJlZ2lzdGVy
SUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYg
Z2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9t
U2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAgICB9
CiAKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVHZXR0ZXIoaWRlbnRpZmllck5hbWUp
KSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRp
Zmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0
ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQo
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisK
KyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0
b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
LCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
Z2V0dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5h
bWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxs
QXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5lbWl0Q2FsbChkc3QsIGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVu
Y3Rpb24sIGFyZ3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2Fi
bGVDYWxsOjpZZXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZh
dGVTZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHBl
cmZvcm0gYnJhbmQgY2hlY2sgdG8gZm9sbG93IHRoZSBzcGVjCisgICAgICAgICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9s
ID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJy
YW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1p
dFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBn
ZXR0ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBkc3Q7CisgICAgICAgIH0KKwogICAgICAgICBW
YXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VS
VF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJl
IHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAtOTA0LDcgKzk4MywyNSBAQCBS
ZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogewogICAgIGlmIChpc1ByaXZhdGVOYW1lKCkpIHsKICAg
ICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKGdl
bmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgIGlmIChn
ZW5lcmF0b3IuaXNQcml2YXRlU2V0dGVyKGlkZW50aWZpZXJOYW1lKSkgeworICAgICAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFu
ZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1By
aXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2Nv
cGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90
Rm91bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldHRlckZ1bmN0aW9uID0g
Z2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2V0
dGVyU2V0dGVyT2JqLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1l
cygpLnNldFByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdl
bmVyYXRvciwgbnVsbHB0ciwgMSk7CisgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLnRo
aXNSZWdpc3RlcigpLCBiYXNlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJn
dW1lbnRSZWdpc3RlcigwKSwgdmFsdWUpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxs
KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0
ZWRGdW5jdGlvbiwgYXJncywgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVi
dWdnYWJsZUNhbGw6Olllcyk7CisKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAg
fQorCisgICAgICAgIGJvb2wgaXNQcml2YXRlR2V0dGVyID0gZ2VuZXJhdG9yLmlzUHJpdmF0ZUdl
dHRlcihpZGVudGlmaWVyTmFtZSk7CisgICAgICAgIGlmIChpc1ByaXZhdGVHZXR0ZXIgfHwgZ2Vu
ZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKICAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAg
ICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29w
ZShudWxscHRyLCB2YXIpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXgg
OGI5NDZiZGFiYzMuLjE4ZjQyZTY5ODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rl
cy5oCkBAIC03MTMsNyArNzEzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBD
bGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcg
fTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVl
YWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3Rh
bnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9
IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjgg
fTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9
IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMy
LCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRlciA9
IDI1NiwgUHJpdmF0ZUdldHRlciA9IDUxMiB9OwogICAgICAgICBlbnVtIFB1dFR5cGUgOiB1aW50
OF90IHsgVW5rbm93biwgS25vd25EaXJlY3QgfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29u
c3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgUHV0VHlwZSwgU3VwZXJCaW5k
aW5nLCBDbGFzc0VsZW1lbnRUYWcpOwpAQCAtNzMyLDcgKzczMiw3IEBAIG5hbWVzcGFjZSBKU0Mg
ewogICAgICAgICBib29sIGlzQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NQcm9w
ZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNJbnN0YW5j
ZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYm
ICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNPdmVycmlkZGVuQnlEdXBs
aWNhdGUoKSBjb25zdCB7IHJldHVybiBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlOyB9Ci0gICAg
ICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlICYgKFByaXZhdGVGaWVs
ZCB8IFByaXZhdGVNZXRob2QpOyB9CisgICAgICAgIGJvb2wgaXNQcml2YXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV90eXBlICYgKFByaXZhdGVGaWVsZCB8IFByaXZhdGVNZXRob2QgfCBQcml2YXRlR2V0
dGVyIHwgUHJpdmF0ZVNldHRlcik7IH0KICAgICAgICAgYm9vbCBoYXNDb21wdXRlZE5hbWUoKSBj
b25zdCB7IHJldHVybiBtX2V4cHJlc3Npb247IH0KICAgICAgICAgYm9vbCBpc0NvbXB1dGVkQ2xh
c3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzQ2xhc3NGaWVsZCgpICYmIGhhc0NvbXB1dGVkTmFt
ZSgpOyB9CiAgICAgICAgIHZvaWQgc2V0SXNPdmVycmlkZGVuQnlEdXBsaWNhdGUoKSB7IG1faXNP
dmVycmlkZGVuQnlEdXBsaWNhdGUgPSB0cnVlOyB9CkBAIC03NDMsNyArNzQzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIG1fbmFtZTsKICAgICAgICAgRXhw
cmVzc2lvbk5vZGUqIG1fZXhwcmVzc2lvbjsKICAgICAgICAgRXhwcmVzc2lvbk5vZGUqIG1fYXNz
aWduOwotICAgICAgICB1bnNpZ25lZCBtX3R5cGU7CisgICAgICAgIHVuc2lnbmVkIG1fdHlwZSA6
IDEwOwogICAgICAgICB1bnNpZ25lZCBtX25lZWRzU3VwZXJCaW5kaW5nIDogMTsKICAgICAgICAg
dW5zaWduZWQgbV9wdXRUeXBlIDogMTsKICAgICAgICAgc3RhdGljX2Fzc2VydCgxIDw8IDIgPiBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oQ2xhc3NFbGVtZW50VGFnOjpMYXN0VGFnKSwgIkNsYXNzRWxl
bWVudFRhZyBzaG91bGRuJ3QgdXNlIG1vcmUgdGhhbiB0d28gYml0cyIpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGExODAxMWYwNTI5Li5lN2FjNzk1Mjc0MiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcApAQCAtMjkxNiw3ICsyOTE2
LDcgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OwogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKLSAg
ICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYm
IChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1hdGNoKERP
VUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSkgeworICAgICAg
ICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgKG1h
dGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykgfHwgbWF0Y2goRE9VQkxF
KSB8fCBtYXRjaChJTlRFR0VSKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkgfHwgKE9wdGlvbnM6OnVz
ZUNsYXNzRmllbGRzKCkgJiYgbWF0Y2goUFJJVkFURU5BTUUpKSkpIHsKICAgICAgICAgICAgICAg
ICBpc0dldHRlciA9ICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLmdldDsKICAgICAgICAgICAgICAg
ICBpc1NldHRlciA9ICppZGVudCA9PSBwcm9wZXJ0eU5hbWVzLnNldDsKICAgICAgICAgICAgIH0K
QEAgLTI5NjEsOCArMjk2MSwxOSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgVHJlZVByb3BlcnR5
IHByb3BlcnR5OwogICAgICAgICBjb25zdCBib29sIGFsd2F5c1N0cmljdEluc2lkZUNsYXNzID0g
dHJ1ZTsKICAgICAgICAgaWYgKGlzR2V0dGVyIHx8IGlzU2V0dGVyKSB7Ci0gICAgICAgICAgICB0
eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlICYgflByb3BlcnR5Tm9k
ZTo6Q29uc3RhbnQpOwotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9k
ZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFByb3BlcnR5Tm9kZTo6R2V0dGVyIDogUHJvcGVy
dHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VDbGFzc0ZpZWxk
cygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgIGlkZW50ID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICAgICAgaWYgKGlzU2V0dGVyKSB7CisgICAg
ICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJp
dmF0ZVNldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVE
ZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgc2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2Vk
IG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5
Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcik7CisgICAgICAg
ICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVl
KGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlR2V0dGVyKCppZGVudCkgJiBEZWNsYXJhdGlvblJl
c3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBnZXR0
ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICB0eXBl
ID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQ
cml2YXRlR2V0dGVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5
cGUgJiB+UHJvcGVydHlOb2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0
YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFByb3BlcnR5
Tm9kZTo6R2V0dGVyIDogUHJvcGVydHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgYWx3YXlzU3Ry
aWN0SW5zaWRlQ2xhc3MsIHR5cGUsIG1ldGhvZFN0YXJ0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUs
IHRhZyk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0
aGlzIG1ldGhvZCIpOwogICAgICAgICB9IGVsc2UgaWYgKE9wdGlvbnM6OnVzZUNsYXNzRmllbGRz
KCkgJiYgIW1hdGNoKE9QRU5QQVJFTikgJiYgdGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFu
Y2UgJiYgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewpAQCAtNDIz
OCwxMiArNDI0OSwxNyBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0
eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogCiAgICAgSlNUb2tlbkxv
Y2F0aW9uIGxvY2F0aW9uKHRva2VuTG9jYXRpb24oKSk7CiAKLSAgICBpZiAobWF0Y2hTcGVjSWRl
bnRpZmllcigpIHx8IG1hdGNoKFNUUklORykgfHwgbV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9r
ZW5GbGFnKSB7CisgICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSB8fCBtYXRjaChTVFJJTkcp
IHx8IChPcHRpb25zOjp1c2VDbGFzc0ZpZWxkcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkgfHwg
bV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSB7CiAgICAgICAgIHN0cmluZ1Byb3Bl
cnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUg
PT0gbV92bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsCiAgICAgICAgICAgICAiQ2Fubm90IGRl
Y2xhcmUgYSBzdGF0aWMgbWV0aG9kIG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqc3RyaW5n
UHJvcGVydHlOYW1lID09IG1fdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAg
ICAgICAiQ2Fubm90IGRlY2xhcmUgYSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3Rv
ciciKTsKKworICAgICAgICBpZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICBz
ZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6Tm8sICJDYW5ub3QgZGVj
bGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBvdXRzaWRlIGEgY2xhc3MiKTsKKyAgICAg
ICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMs
ICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVyIG9yIGdldHRlciBhcyBzdGF0aWMiKTsK
KyAgICAgICAgfQogICAgICAgICBuZXh0KCk7CiAgICAgfSBlbHNlIGlmIChtYXRjaChET1VCTEUp
IHx8IG1hdGNoKElOVEVHRVIpKSB7CiAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rv
a2VuLm1fZGF0YS5kb3VibGVWYWx1ZTsKQEAgLTQyNjAsOSArNDI3NiwxNSBAQCB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VH
ZXR0ZXJTZXR0ZXIoVAogICAgIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpHZXR0ZXIpIHsKICAg
ICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVy
IGxpc3QgZm9yIGdldHRlciBkZWZpbml0aW9uIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJz
ZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQs
IFNvdXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0
aW9uIik7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6
OlNldHRlcikgewogICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0
ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3Igc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3Ry
dWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNl
dCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ug
c2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6
OlByaXZhdGVTZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwg
IkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24i
KTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2Rl
LCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JT
ZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSks
ICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUg
JiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0
Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgZ2V0
dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZv
KGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgU291cmNlUGFyc2VN
b2RlOjpHZXR0ZXJNb2RlLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9
CiAKICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggNThmNzJmNmRjNjYuLjg2YmY1NWM5MjUxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUyNCw2ICs1MjQsMzQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJlUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBi
b29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZVNldHRlcihp
ZGVudCk7CisKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8
PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlR2V0dGVy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dz
TGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1
bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0g
bV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50KTsKKworICAgICAg
ICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVz
dWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBE
ZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlv
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZp
cm9ubWVudC5jcHAKaW5kZXggNGNiOTBjNzFiZTkuLmYxNzE4ZDZkNWVjIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAg
LTEwNyw2ICsxMDcsMTAyIEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxl
QXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgZmluZFJlc3Vs
dC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwogfQogCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6
OmRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlk
ZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0g
c3RkOjptYWtlX3VuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAg
IGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRp
Zmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRy
eTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRl
cik7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOwor
ICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVTZXR0ZXIoKTsKKyAgICAgICAgZW50cnkuc2V0SXND
b25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIG1fbWFwLmFk
ZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVE
YXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgICAgIHJldHVy
biBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBQcml2YXRlTmFtZUVudHJ5IGN1
cnJlbnRFbnRyeSA9IGZpbmRSZXN1bHQtPnZhbHVlOworICAgIGlmIChjdXJyZW50RW50cnkuaXNE
ZWNsYXJlZCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSB8fCBjdXJy
ZW50RW50cnkuaXNNZXRob2QoKSB8fCAhY3VycmVudEVudHJ5LmlzR2V0dGVyKCkpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0
ZSBuYW1lLgorCisgICAgICAgIEFTU0VSVChjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSk7CisgICAg
ICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcik7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0
ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKworICAgICAgICBhdXRvIGVudHJ5SXRlcmF0
b3IgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoZW50cnlJdGVyYXRv
ciAhPSBtX21hcC5lbmQoKSk7CisgICAgICAgIGVudHJ5SXRlcmF0b3ItPnZhbHVlLnNldElzUHJp
dmF0ZVNldHRlcigpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIGl0
IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgYXV0byBlbnRy
eSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElzUHJpdmF0ZVNl
dHRlcigpOworICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVk
KCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIFByaXZhdGVOYW1l
RW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRy
YWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOwor
ICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBuZXdFbnRyeSk7
CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFy
ZVByaXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBzdGQ6Om1h
a2VfdW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0byBm
aW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsK
KworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgp
KSB7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKwor
ICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAg
IGVudHJ5LnNldElzUHJpdmF0ZUdldHRlcigpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7
CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlkZW50
aWZpZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFkZFJl
c3VsdC5pc05ld0VudHJ5OworICAgIH0KKworICAgIFByaXZhdGVOYW1lRW50cnkgY3VycmVudEVu
dHJ5ID0gZmluZFJlc3VsdC0+dmFsdWU7CisgICAgaWYgKGN1cnJlbnRFbnRyeS5pc0RlY2xhcmVk
KCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeS5pc0dldHRlcigpIHx8IGN1cnJlbnRFbnRy
eS5pc01ldGhvZCgpIHx8ICFjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUu
CisKKyAgICAgICAgQVNTRVJUKGN1cnJlbnRFbnRyeS5pc1NldHRlcigpKTsKKyAgICAgICAgUHJp
dmF0ZU5hbWVFbnRyeSBtZXRhKGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
c2V0KGlkZW50aWZpZXIsIG1ldGEpOworCisgICAgICAgIGF1dG8gZW50cnlJdGVyYXRvciA9IG1f
bWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChlbnRyeUl0ZXJhdG9yICE9IG1f
bWFwLmVuZCgpKTsKKyAgICAgICAgZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRlR2V0
dGVyKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gaXQgd2FzIHBy
ZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBhdXRvIGVudHJ5ID0gVmFy
aWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7
CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAg
ICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBu
ZXdFbnRyeShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcik7CisgICAgbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAgICBy
ZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0
ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogewog
ICAgIGlmICghbV9yYXJlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggZWE2ODA4NjQ1MzUuLjgwYTNhN2M3NTY3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1l
bnQuaApAQCAtNDYsNiArNDYsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlz
U2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNT
bG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQ
cml2YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBt
X2JpdHMgJiBJc1ByaXZhdGVNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2
YXRlU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlU2V0dGVyOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1f
Yml0cyAmIElzUHJpdmF0ZUdldHRlcjsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElz
Q2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2
b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC01OSw2ICs2MSw4IEBA
IHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdD
YW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElz
UHJpdmF0ZUZpZWxkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhv
ZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBzZXRJc1ByaXZhdGVTZXR0ZXIoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVTZXR0ZXI7IH0KKyAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlR2V0dGVyKCkgeyBtX2JpdHMgfD0gSXNQ
cml2YXRlR2V0dGVyOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsg
bV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC04Myw2ICs4Nyw4IEBAIHByaXZhdGU6CiAgICAgICAg
IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAogICAgICAgICBJc1ByaXZh
dGVGaWVsZCA9IDEgPDwgMTAsCiAgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCisg
ICAgICAgIElzUHJpdmF0ZUdldHRlciA9IDEgPDwgMTIsCisgICAgICAgIElzUHJpdmF0ZVNldHRl
ciA9IDEgPDwgMTMsCiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAt
MTAwLDggKzEwNiwxMCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQogICAg
IEFMV0FZU19JTkxJTkUgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
TWV0aG9kOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0dGVyKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZXR0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0dldHRlcjsgfQogCi0gICAgYm9vbCBpc1ByaXZh
dGVBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpOyB9CisgICAgYm9vbCBpc1ByaXZh
dGVBY2Nlc3MoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpIHx8IGlzU2V0dGVyKCkgfHwgaXNH
ZXR0ZXIoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRz
IHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBt
X2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTE4LDYgKzEyNiw4IEBAIHB1YmxpYzoKICAgICAg
ICAgSXNVc2VkID0gMSA8PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAogICAgICAg
ICBJc01ldGhvZCA9IDEgPDwgMiwKKyAgICAgICAgSXNHZXR0ZXIgPSAxIDw8IDMsCisgICAgICAg
IElzU2V0dGVyID0gMSA8PCA0LAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xOTIsNiArMjAyLDEy
IEBAIHB1YmxpYzoKICAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZp
ZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIu
aW1wbCgpKTsgfQogICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVu
aXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CiAKKyAgICBib29sIGRlY2xhcmVQcml2YXRl
U2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2
YXRlU2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVT
ZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisKKyAg
ICBib29sIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
IHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAg
IGJvb2wgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcik7CisKICAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZUZpZWxk
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiAgICAgewogICAg
ICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsK
QEAgLTMyMCw3ICszMzYsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxWYXJpYWJsZUVudmlyb25t
ZW50RW50cnk+IG1fdmFyaWFibGVNZXRhZGF0YTsKICAgICBWZWN0b3I8UmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPj4gbV9wcml2YXRlQWNjZXNzTmFtZXM7CiAgICAgVmVjdG9yPFByaXZhdGVOYW1l
RW50cnk+IG1fcHJpdmF0ZU5hbWVNZXRhZGF0YTsKLQogICAgIHVuc2lnbmVkIG1faGFzaDsKICAg
ICBib29sIG1faXNFdmVyeXRoaW5nQ2FwdHVyZWQ7CiB9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419845</attachid>
            <date>2021-02-10 08:03:03 -0800</date>
            <delta_ts>2021-02-10 10:59:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194435-20210210130300.patch</filename>
            <type>text/plain</type>
            <size>56547</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA0
MWY4ZDEzNWM1OGJlNGU2MTEwMTUxYTJhNjEyNDMxOTFjMmNmOTg3Li5hY2JmZTIyNTYyZTQ2OTc1
OWVhNzEyN2E5N2JkYTlmODZjNzRmNGUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDIgQEAKKzIwMjEtMDItMTAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgaW5zdGFuY2UgcHJpdmF0ZSBnZXR0ZXJzIGFuZAorICAg
ICAgICBzZXR0ZXJzIGZvbGxvd2luZyB0aGUgcHJvcG9zYWwgb24gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy4KKyAgICAgICAgUHJpdmF0ZSBhY2Nlc3NvcnMgYWxzbyB1
c2UgdGhlIHByaXZhdGUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtIG9mCisgICAgICAgIHByaXZhdGUg
bWV0aG9kcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBhcmUgdXNpbmcgYm90aAorICAgICAgICBgb3Bf
c2V0X3ByaXZhdGVfYnJhbmRgIGFuZCBgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gcGVyZm9y
bSBicmFuZAorICAgICAgICBjaGVja3MuIEFjY2Vzc29ycyBhcmUgYWxzbyBzdG9yZWQgb24gY2xh
c3MgbGV4aWNhbCBzY29wZSBhcyBhIHBhaXIgb2YKKyAgICAgICAgYGdldHRlcmAgYW5kIGBzZXR0
ZXJgLiBUaGlzIGlzIGRvbmUgY3JlYXRpbmcgYSBuZXcgYEpTT2JqZWN0YCBhbmQKKyAgICAgICAg
c3RvcmluZyB0aGUgYGdldHRlcmAgb24gYGdldGAgcHJvcGVydHksIGFuZCBgc2V0dGVyYCBvbiBg
c2V0YAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBkZXNpZ25lZCBpbiBzdWNoIHdheSB0aGF0
IHdlIGNhbiBhbHdheXMgaGl0IElDIGZhc3QKKyAgICAgICAgcGF0aCBvbiBgZ2V0X2J5X2lkX2Rp
cmVjdGAgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSwgYW5kIGFsc28gdG8gYWxsb3cKKyAgICAgICAg
Y29uc3RhbnQgZm9sZGluZyBvZiBhY2Nlc3NvcnMgb24gREZHL0ZUTCwgc2luY2UgYWNlc3NvcnMg
b2JqZWN0cyBhcmUKKyAgICAgICAgZ29pbmcgdG8gYmUgY29uc3RhbnQgb25jZSBjcmVhdGVkLgor
ICAgICAgICBJbiBhZGRpdGlvbiB0byBwcml2YXRlIGFjY2Vzc29ycywgd2UgYXJlIGFsc28gbW92
aW5nIHByaXZhdGUgZmllbGRzCisgICAgICAgIGFuZCBwcml2YXRlIG1ldGhvZHMgdG8gdXNlIHBy
aXZhdGUgaWRlbnRpZmllciBhcyB0aGVpciBuYW1lLCBhdm9pZGluZworICAgICAgICBmdXR1cmUg
aXNzdWVzIGlmIHdlIGV2ZXIgYWxsb3cgaWRlbnRpZmllcnMgdG8gc3RhcnQgd2l0aCBgI2AuCisK
KyAgICAgICAgRm9yIHJlZmVyZW5jZSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGJ5dGVjb2RlIGZv
ciBhIHByaXZhdGUgZ2V0dGVyCisgICAgICAgIGFjY2VzczoKKworICAgICAgICBgYGAKKyAgICAg
ICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7Li4ufQorICAgICAgICAgICAgYWNj
ZXNzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBjbGFzcyBkZWNs
YXJhdGlvbjoKKworICAgICAgICBgYGAKKyAgICAgICAgLi4uCisgICAgICAgIG5ld19vYmplY3Qg
ICAgICAgICBkc3Q6bG9jMTIsIGlubGluZUNhcGFjaXR5OjIgLy8gdGhpcyBpcyB0aGUgb2JqZWN0
IHRvIHN0b3JlIGdldHRlciBhbmQgc2V0dGVyIHBhaXIKKyAgICAgICAgbmV3X2Z1bmNfZXhwICAg
ICAgIGRzdDpsb2MxMywgc2NvcGU6bG9jNCwgZnVuY3Rpb25EZWNsOiJnZXQgI20oKSB7Li4ufSIK
KyAgICAgICAgcHV0X2J5X2lkICAgICAgICAgIGJhc2U6bG9jMTMsIHByb3BlcnR5OkBob21lT2Jq
ZWN0LCB2YWx1ZTpsb2MxMSwgZmxhZ3M6U3RyaWN0CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAg
ICBiYXNlOmxvYzEyLCBwcm9wZXJ0eTpAZ2V0LCB2YWx1ZTpsb2MxMywgZmxhZ3M6SXNEaXJlY3R8
U3RyaWN0CisgICAgICAgIHB1dF90b19zY29wZSAgICAgICBzY29wZTpsb2M0LCB2YXI6UHJpdmF0
ZU5hbWUuI20sIHZhbHVlOmxvYzEyIC8vIGxvYzQgaXMgdGhlIGNsYXNzIGxleGljYWwgc2NvcGUK
KyAgICAgICAgLi4uCisKKyAgICAgICAgYGBgCisKKyAgICAgICAgQnl0ZWNvZGUgZm9yIGBhY2Nl
c3MoKWA6CisKKyAgICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICByZXNvbHZlX3Njb3Bl
ICAgICAgZHN0OmxvYzcsIHNjb3BlOmxvYzQsIHZhcjoiI20iLCByZXNvbHZlVHlwZTpHbG9iYWxQ
cm9wZXJ0eSwgbG9jYWxTY29wZURlcHRoOjAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRz
dDpsb2M4LCBzY29wZTpsb2M3LCB2YXI6QHByaXZhdGVCcmFuZAorICAgICAgICBjaGVja19wcml2
YXRlX2JyYW5kIGJhc2U6dGhpcywgYnJhbmQ6bG9jOAorICAgICAgICBnZXRfZnJvbV9zY29wZSAg
ICAgZHN0OmxvYzgsIHNjb3BlOmxvYzcsIHZhcjoiI20iCisgICAgICAgIGdldF9ieV9pZF9kaXJl
Y3QgICBkc3Q6bG9jOSwgYmFzZTpsb2M4LCBwcm9wZXJ0eTpAZ2V0CisgICAgICAgIG1vdiAgICAg
ICAgICAgICAgICBkc3Q6bG9jMTAsIHNyYzp0aGlzCisgICAgICAgIGNhbGwgICAgICAgICAgICAg
ICBkc3Q6bG9jNiwgY2FsbGVlOmxvYzksIGFyZ2M6MSwgYXJndjoxNgorICAgICAgICAuLi4KKwor
ICAgICAgICBgYGAKKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxW
YXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlU2V0
dGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZUdldHRlcik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVt
aXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVy
U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VH
ZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1i
ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFy
ZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVTZXR0
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJp
dmF0ZUdldHRlciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eTo6c2V0SXNQcml2YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5OjpzZXRJc1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVu
dHJ5Ojppc1NldHRlciBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6Omlz
R2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRl
TWV0aG9kT3JBY2Vzc29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisKIDIwMjEtMDItMDkgIENhaW8gTGltYSAgPHRp
Y2Fpb2xpbWFAZ21haWwuY29tPgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRl
IG1ldGhvZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxl
ci9CeXRlY29kZUdlbmVyYXRvci5jcHAKaW5kZXggNGU1NzE5ZWY4MjU4ZjNiMjlmZTYwZDc2ZGIy
MDJkMmY5YjI4YTU3ZS4uYmUyMWU5Yjg3YjhjYWQyMWQxMDEzMDFiMzgxODliMjVjYzdlOWE5YiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdl
bmVyYXRvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRl
Y29kZUdlbmVyYXRvci5jcHAKQEAgLTE5MDQsNiArMTkwNCwxNSBAQCBib29sIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVFbnZpcm9u
bWVudCYgbAogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRy
eS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0RlY2xhcmVkKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVN
ZXRob2QoKSkKICAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50
cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6
SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNNZXRob2QpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUdldHRlcigpIHx8IGVudHJ5LnZh
bHVlLmlzUHJpdmF0ZVNldHRlcigpKSB7CisgICAgICAgICAgICAgICAgdWludDE2X3QgdHJhaXRz
ID0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkOworICAgICAgICAgICAgICAg
IGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVHZXR0ZXIoKSkKKyAgICAgICAgICAgICAgICAgICAg
dHJhaXRzIHw9IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXI7CisgICAgICAgICAg
ICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZVNldHRlcigpKQorICAgICAgICAgICAgICAg
ICAgICB0cmFpdHMgfD0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcjsKKworICAg
ICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCks
IFByaXZhdGVOYW1lRW50cnkodHJhaXRzKSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAg
ICB9CiAgICAgcmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjk0Myw2ICsyOTUyLDMw
IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlm
aWVyJiBpZGVudCkKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmlzUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAg
ICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9
IG1hcC5maW5kKGlkZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmlzU2V0dGVyKCk7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCitib29sIEJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVHZXR0ZXIo
Y29uc3QgSWRlbnRpZmllciYgaWRlbnQpCit7CisgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2
YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsgKSB7CisgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJp
dmF0ZU5hbWVzU3RhY2tbaV07CisgICAgICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBs
KCkpOworICAgICAgICBpZiAoaXQgIT0gbWFwLmVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIGl0
LT52YWx1ZS5pc0dldHRlcigpOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6cHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50KiBlbnZpcm9ubWVudCkKIHsKICAgICBpZiAoIWVudmlyb25tZW50IHx8
ICFlbnZpcm9ubWVudC0+c2l6ZSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCmluZGV4IGJiZmI1NjgxOThmNDQ0NTU3
ZGEzMTMzYzI5NjYzY2Q0MjAxZTdiZTUuLjhiMTNlYzgwNmRlYzQ5NTYwOWY0Yzg3MDZiODcwOTNl
ZjY0ZmY1NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIv
Qnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEyNjQsNiArMTI2NCw4IEBAIG5hbWVzcGFjZSBK
U0MgewogICAgICAgICB9CiAKICAgICAgICAgYm9vbCBpc1ByaXZhdGVNZXRob2QoY29uc3QgSWRl
bnRpZmllciYpOworICAgICAgICBib29sIGlzUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVy
Jik7CisgICAgICAgIGJvb2wgaXNQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImKTsKIAog
ICAgICAgICB2b2lkIHB1c2hQcml2YXRlQWNjZXNzTmFtZXMoY29uc3QgUHJpdmF0ZU5hbWVFbnZp
cm9ubWVudCopOwogICAgICAgICB2b2lkIHBvcFByaXZhdGVBY2Nlc3NOYW1lcygpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCmlu
ZGV4IDRjMDhhMzNkM2Y4N2JiNDJiZTNmOGY2Y2RiYTVmYTAzNzAwNzhlNWYuLmU0MTE3OWZiYjRh
M2VlMDIwYjFlOTBmNWY1NzY2OGU5NjlkYzEyMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKQEAgLTU3OSwxMyArNTc5LDY1
IEBAIHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklE
KiBkc3RPckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1RleHRQ
b3NpdGlvbj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4q
IHN0YXRpY0ZpZWxkTG9jYXRpb25zKQogeworICAgIHR5cGVkZWYgc3RkOjpwYWlyPFByb3BlcnR5
Tm9kZSosIFByb3BlcnR5Tm9kZSo+IEdldHRlclNldHRlclBhaXI7CisgICAgdHlwZWRlZiBIYXNo
TWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgR2V0dGVyU2V0dGVyUGFpciwgSWRlbnRpZmllclJlcEhh
c2g+IEdldHRlclNldHRlck1hcDsKKyAgICBHZXR0ZXJTZXR0ZXJNYXAgcHJpdmF0ZUFjY2Vzc29y
TWFwOworCiAgICAgUHJvcGVydHlMaXN0Tm9kZSogcCA9IHRoaXM7CiAgICAgUmVnaXN0ZXJJRCog
ZHN0ID0gbnVsbHB0cjsKKyAgICBmb3IgKDsgcDsgcCA9IHAtPm1fbmV4dCkgeworICAgICAgICBp
ZiAoIShwLT5tX25vZGUtPnR5cGUoKSAmIChQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIgfCBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIC8vIFdlIGdyb3VwIHByaXZhdGUgZ2V0dGVycyBhbmQgc2V0dGVycyB0byBzdG9yZSB0
aGVtIGluIGEgb2JqZWN0CisgICAgICAgIEdldHRlclNldHRlclBhaXIgcGFpcihwLT5tX25vZGUs
IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZSo+KG51bGxwdHIpKTsKKyAgICAgICAgR2V0dGVyU2V0
dGVyTWFwOjpBZGRSZXN1bHQgcmVzdWx0ID0gcHJpdmF0ZUFjY2Vzc29yTWFwLmFkZChwLT5tX25v
ZGUtPm5hbWUoKS0+aW1wbCgpLCBwYWlyKTsKKyAgICAgICAgYXV0byYgcmVzdWx0UGFpciA9IHJl
c3VsdC5pdGVyYXRvci0+dmFsdWU7CisgICAgICAgIC8vIElmIHRoZSBtYXAgYWxyZWFkeSBjb250
YWlucyBhbiBlbGVtZW50IHdpdGggbm9kZS0+bmFtZSgpLAorICAgICAgICAvLyB3ZSBuZWVkIHRv
IHN0b3JlIHRoaXMgbm9kZSBpbiB0aGUgc2Vjb25kIHBhcnQuCisgICAgICAgIGlmICghcmVzdWx0
LmlzTmV3RW50cnkpCisgICAgICAgICAgICByZXN1bHRQYWlyLnNlY29uZCA9IHAtPm1fbm9kZTsK
KyAgICAgICAgY29udGludWU7CisgICAgfQorCisgICAgLy8gVGhlbiB3ZSBkZWNsYXJlIHByaXZh
dGUgYWNjZXNzb3MKKyAgICBmb3IgKGF1dG8mIGl0IDogcHJpdmF0ZUFjY2Vzc29yTWFwKSB7Cisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1p
dE5ld09iamVjdChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCkpOworCisgICAgICAgIEdldHRlclNl
dHRlclBhaXIgcGFpciA9IGl0LnZhbHVlOworICAgICAgICBpZiAocGFpci5maXJzdCkgeworICAg
ICAgICAgICAgZHN0ID0gcGFpci5maXJzdC0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHBy
b3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJ
RD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUocGFpci5maXJzdC0+bV9hc3NpZ24pOworICAg
ICAgICAgICAgaWYgKHBhaXIuZmlyc3QtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAg
ICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgZHN0KTsKKyAg
ICAgICAgICAgIGF1dG8gc2V0dGVyT3JHZXR0ZXJJZGVudCA9IHBhaXIuZmlyc3QtPm1fdHlwZSAm
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcgorICAgICAgICAgICAgICAgID8gZ2VuZXJhdG9y
LnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpCisgICAgICAg
ICAgICAgICAgOiBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnNldFBy
aXZhdGVOYW1lKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERpcmVjdFB1dEJ5SWQoZ2V0
dGVyU2V0dGVyT2JqLmdldCgpLCBzZXR0ZXJPckdldHRlcklkZW50LCB2YWx1ZS5nZXQoKSk7Cisg
ICAgICAgIH0KIAorICAgICAgICBpZiAocGFpci5zZWNvbmQpIHsKKyAgICAgICAgICAgIGRzdCA9
IHBhaXIuc2Vjb25kLT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0
T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdl
bmVyYXRvci5lbWl0Tm9kZShwYWlyLnNlY29uZC0+bV9hc3NpZ24pOworICAgICAgICAgICAgaWYg
KHBhaXIuc2Vjb25kLT5uZWVkc1N1cGVyQmluZGluZygpKQorICAgICAgICAgICAgICAgIGVtaXRQ
dXRIb21lT2JqZWN0KGdlbmVyYXRvciwgdmFsdWUuZ2V0KCksIGRzdCk7CisgICAgICAgICAgICBh
dXRvIHNldHRlck9yR2V0dGVySWRlbnQgPSBwYWlyLnNlY29uZC0+bV90eXBlICYgUHJvcGVydHlO
b2RlOjpQcml2YXRlR2V0dGVyCisgICAgICAgICAgICAgICAgPyBnZW5lcmF0b3IucHJvcGVydHlO
YW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkKKyAgICAgICAgICAgICAgICA6
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUo
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZXR0ZXJTZXR0ZXJP
YmouZ2V0KCksIHNldHRlck9yR2V0dGVySWRlbnQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqcGFpci5maXJzdC0+
bmFtZSgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29w
ZVJlZ2lzdGVyKCksIHZhciwgZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBEb05vdFRocm93SWZOb3RG
b3VuZCwgSW5pdGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICB9Cisg
ICAgCiAgICAgLy8gRmFzdCBjYXNlOiB0aGlzIGxvb3AganVzdCBoYW5kbGVzIHJlZ3VsYXIgdmFs
dWUgcHJvcGVydGllcy4KLSAgICBmb3IgKDsgcCAmJiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkgeworICAgIGZvciAocCA9IHRoaXM7
IHAgJiYgKHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBw
LT5tX25leHQpIHsKICAgICAgICAgZHN0ID0gcC0+bV9ub2RlLT5pc0luc3RhbmNlQ2xhc3NQcm9w
ZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKIAorICAgICAgICBpZiAocC0+
bV9ub2RlLT50eXBlKCkgJiAoUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyIHwgUHJvcGVydHlO
b2RlOjpQcml2YXRlU2V0dGVyKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgIGlm
IChwLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQogICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRl
ZEZpZWxkTmFtZShnZW5lcmF0b3IsICpwLT5tX25vZGUpOwogCkBAIC02MTAsOCArNjYyLDYgQEAg
UmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgLy8gYSBjb21wdXRlZCBwcm9wZXJ0eSBv
ciBhIHNwcmVhZCwganVzdCBlbWl0IGV2ZXJ5dGhpbmcgYXMgdGhhdCBtYXkgb3ZlcnJpZGUgcHJl
dmlvdXMgdmFsdWVzLgogICAgICAgICBib29sIGNhbk92ZXJyaWRlUHJvcGVydGllcyA9IGZhbHNl
OwogCi0gICAgICAgIHR5cGVkZWYgc3RkOjpwYWlyPFByb3BlcnR5Tm9kZSosIFByb3BlcnR5Tm9k
ZSo+IEdldHRlclNldHRlclBhaXI7Ci0gICAgICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3Ry
aW5nSW1wbCosIEdldHRlclNldHRlclBhaXIsIElkZW50aWZpZXJSZXBIYXNoPiBHZXR0ZXJTZXR0
ZXJNYXA7CiAgICAgICAgIEdldHRlclNldHRlck1hcCBpbnN0YW5jZU1hcDsKICAgICAgICAgR2V0
dGVyU2V0dGVyTWFwIHN0YXRpY01hcDsKIApAQCAtNjUxLDYgKzcwMSw5IEBAIFJlZ2lzdGVySUQq
IFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlCiAgICAgICAgICAgICBpZiAocC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkK
ICAgICAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAt
Pm1fbm9kZSk7CiAKKyAgICAgICAgICAgIGlmIChwLT5tX25vZGUtPnR5cGUoKSAmIChQcm9wZXJ0
eU5vZGU6OlByaXZhdGVHZXR0ZXIgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICBpZiAocC0+aXNJbnN0YW5jZUNs
YXNzRmllbGQoKSkgewogICAgICAgICAgICAgICAgIEFTU0VSVChpbnN0YW5jZUZpZWxkTG9jYXRp
b25zKTsKICAgICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2Rl
OjpDb25zdGFudCk7CkBAIC03ODIsNiArODM1LDggQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjpl
bWl0UHV0Q29uc3RhbnRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWcK
IAogICAgIGlmIChub2RlLmlzQ2xhc3NQcm9wZXJ0eSgpKSB7CiAgICAgICAgIEFTU0VSVChub2Rl
Lm5lZWRzU3VwZXJCaW5kaW5nKCkpOworICAgICAgICBBU1NFUlQoIShub2RlLnR5cGUoKSAmIFBy
b3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpOworICAgICAgICBBU1NFUlQoIShub2RlLnR5cGUo
KSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcikpOwogCiAgICAgICAgIGlmIChub2RlLnR5
cGUoKSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCkgewogICAgICAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpub2RlLm5hbWUoKSk7CkBAIC05MTksOCArOTc0
LDkgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjpl
bWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
cklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVl
KQogewogICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewotICAgICAgICBpZiAoZ2VuZXJhdG9y
LmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBpZGVu
dGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZh
dGVNZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBn
ZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFy
KTsKIAogICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJh
dG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5n
ZXQoKSk7CkBAIC05MjksNiArOTg1LDMxIEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0
R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAg
ICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQo
KSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKGdlbmVy
YXRvci5pc1ByaXZhdGVHZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0
ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyRnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJT
ZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJh
dG9yLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0Q2FsbChkc3Qs
IGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIG1fcG9zaXRp
b24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZZXMpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVTZXR0ZXIoaWRlbnRpZmllck5h
bWUpKSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHBlcmZvcm0gYnJhbmQgY2hlY2sgdG8g
Zm9sbG93IHRoZSBzcGVjCisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFy
aWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNj
b3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAg
ICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQ
cml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFu
ZFN5bWJvbCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlp
bmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBnZXR0ZXIiKTsKKyAgICAgICAgICAg
IHJldHVybiBkc3Q7CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUobV9pZGVudCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5s
b2NhbCgpLCAiUHJpdmF0ZSBGaWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2
YXJpYWJsZXMiKTsKIApAQCAtOTU3LDcgKzEwMzgsMjUgQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5v
ZGU6OmVtaXRQdXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rl
ckkKIHsKICAgICBpZiAoaXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgYXV0byBpZGVudGlm
aWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVN
ZXRob2QoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRl
U2V0dGVyKGlkZW50aWZpZXJOYW1lKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2Vu
ZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7
CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRv
ci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBw
cml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldHRlckZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXREaXJl
Y3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2V0dGVyU2V0dGVyT2JqLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1l
KCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwg
MSk7CisgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBiYXNl
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3RlcigwKSwg
dmFsdWUpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywg
bV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVidWdnYWJsZUNhbGw6Olllcyk7
CisKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
aXNQcml2YXRlR2V0dGVyID0gZ2VuZXJhdG9yLmlzUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyTmFt
ZSk7CisgICAgICAgIGlmIChpc1ByaXZhdGVHZXR0ZXIgfHwgZ2VuZXJhdG9yLmlzUHJpdmF0ZU1l
dGhvZChpZGVudGlmaWVyTmFtZSkpIHsKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKaW5kZXggNGJmOTM4NmYyNmYwMjk4M2I3
ODg2OWU0YTI1MDI1ZjYwZWM4YWIzNS4uMTQzMGU4ZDQ0NWQ1YWZlOTY0ZDFjNTE3M2FkYTM5OWRi
ZDBlY2ZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaApAQCAtNzIxLDcgKzcy
MSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0gY2xhc3MgQ2xhc3NFbGVtZW50VGFnIDog
dWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBMYXN0VGFnIH07CiAgICAgY2xhc3MgUHJv
cGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFyZW5hRnJlZWFibGUgewogICAgIHB1Ymxp
YzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7IENvbnN0YW50ID0gMSwgR2V0dGVyID0g
MiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9ydGhhbmQgPSAxNiwgU3ByZWFkID0gMzIs
IFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9kID0gMTI4IH07CisgICAgICAgIGVudW0g
VHlwZSA6IHVpbnQxNl90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBD
b21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0g
NjQsIFByaXZhdGVNZXRob2QgPSAxMjgsIFByaXZhdGVTZXR0ZXIgPSAyNTYsIFByaXZhdGVHZXR0
ZXIgPSA1MTIgfTsKIAogICAgICAgICBQcm9wZXJ0eU5vZGUoY29uc3QgSWRlbnRpZmllciYsIEV4
cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5nLCBDbGFzc0VsZW1lbnRUYWcpOwogICAg
ICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENs
YXNzRWxlbWVudFRhZyk7CkBAIC03NDAsNyArNzQwLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0luc3RhbmNl
Q2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmluZGluZygpOyB9CiAgICAgICAgIGJvb2wg
aXNTdGF0aWNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNTdGF0aWNDbGFzc1Byb3BlcnR5
KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc092ZXJyaWRkZW5C
eUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNPdmVycmlkZGVuQnlEdXBsaWNhdGU7IH0K
LSAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0
ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCk7IH0KKyAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCB8IFByaXZh
dGVHZXR0ZXIgfCBQcml2YXRlU2V0dGVyKTsgfQogICAgICAgICBib29sIGhhc0NvbXB1dGVkTmFt
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsgfQogICAgICAgICBib29sIGlzQ29tcHV0
ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXNDbGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0
ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsg
bV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7IH0KQEAgLTc2MCw3ICs3NjAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciogbV9uYW1lOwogICAgICAg
ICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwogICAgICAgICBFeHByZXNzaW9uTm9kZSog
bV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlwZTsKKyAgICAgICAgdW5zaWduZWQgbV90
eXBlIDogMTA7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVlZHNTdXBlckJpbmRpbmcgOiAxOwogICAg
ICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRpY19jYXN0PHVuc2lnbmVkPihDbGFzc0Vs
ZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0
aGFuIHR3byBiaXRzIik7CiAgICAgICAgIHVuc2lnbmVkIG1fY2xhc3NFbGVtZW50VGFnIDogMjsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAppbmRleCA0YzM3OWIzMDliOTNk
ZDUyYjZiZDYzMWZkODVhMmY4OGNmYTVjODU3Li43NjAxOWU0NzljN2YyNTI3ZDFjMDg0ZWYwZGUy
NDFhMTQ1OTVlOWRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Bh
cnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBA
IC0yOTY5LDcgKzI5NjksNyBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIGJvb2wgZXNjYXBl
ZCA9IG1fdG9rZW4ubV9kYXRhLmVzY2FwZWQ7CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwog
ICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgIWVzY2FwZWQgJiYgKG1hdGNoSWRlbnRpZmllck9yS2V5
d29yZCgpIHx8IG1hdGNoKFNUUklORykgfHwgbWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VS
KSB8fCBtYXRjaChCSUdJTlQpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkpIHsKKyAgICAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmICFlc2NhcGVk
ICYmIChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1hdGNo
KERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0Y2goQklHSU5UKSB8fCBtYXRjaChPUEVO
QlJBQ0tFVCkgfHwgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0Y2goUFJJVkFU
RU5BTUUpKSkpIHsKICAgICAgICAgICAgICAgICBpc0dldHRlciA9ICppZGVudCA9PSBwcm9wZXJ0
eU5hbWVzLmdldDsKICAgICAgICAgICAgICAgICBpc1NldHRlciA9ICppZGVudCA9PSBwcm9wZXJ0
eU5hbWVzLnNldDsKICAgICAgICAgICAgIH0KQEAgLTI5OTAsNyArMjk5MCw3IEBAIHBhcnNlTWV0
aG9kOgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6IHsKICAg
ICAgICAgICAgIEFTU0VSVChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSk7Ci0gICAg
ICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAgICAgaWRlbnQg
PSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlUHJpdmF0ZUlkZW50aWZpZXIo
bV92bSwgKm1fdG9rZW4ubV9kYXRhLmlkZW50KTsKICAgICAgICAgICAgIGlmICghT3B0aW9uczo6
dXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzKCkpCiAgICAgICAgICAgICAgICAgZmFpbElmVHJ1
ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJTdGF0aWMgY2xhc3MgZWxlbWVudCBj
YW5ub3QgYmUgcHJpdmF0ZSIpOwogICAgICAgICAgICAgZmFpbElmVHJ1ZShpc0dldHRlciB8fCBp
c1NldHRlciwgIkNhbm5vdCBwYXJzZSBjbGFzcyBtZXRob2Qgd2l0aCBwcml2YXRlIG5hbWUiKTsK
QEAgLTMwMTYsOCArMzAxNiwxOSBAQCBwYXJzZU1ldGhvZDoKIAogICAgICAgICBUcmVlUHJvcGVy
dHkgcHJvcGVydHk7CiAgICAgICAgIGlmIChpc0dldHRlciB8fCBpc1NldHRlcikgewotICAgICAg
ICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KTsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCAoaXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6
IFByb3BlcnR5Tm9kZTo6U2V0dGVyKSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJp
dmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICBp
ZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRp
ZmllcihtX3ZtLCAqbV90b2tlbi5tX2RhdGEuaWRlbnQpOworICAgICAgICAgICAgICAgIGlmIChp
c1NldHRlcikgeworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NT
Y29wZS0+ZGVjbGFyZVByaXZhdGVTZXR0ZXIoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJ
bnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJEZWNsYXJlZCBwcml2YXRlIHNldHRlciB3aXRo
IGFuIGFscmVhZHkgdXNlZCBuYW1lIik7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0
aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVT
ZXR0ZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQp
ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xh
cmVkIHByaXZhdGUgZ2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVy
dHlOb2RlOjpUeXBlPih0eXBlICYgflByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOworICAgICAgICAg
ICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCAoaXNH
ZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6IFByb3BlcnR5Tm9kZTo6U2V0dGVyKSk7Cisg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlR2V0dGVyU2V0dGVyKGNv
bnRleHQsIHR5cGUsIG1ldGhvZFN0YXJ0LCBDb25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRhZyk7CiAg
ICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9wZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhv
ZCIpOwogICAgICAgICB9IGVsc2UgaWYgKCFtYXRjaChPUEVOUEFSRU4pICYmICh0YWcgPT0gQ2xh
c3NFbGVtZW50VGFnOjpJbnN0YW5jZSB8fCBPcHRpb25zOjp1c2VQdWJsaWNTdGF0aWNDbGFzc0Zp
ZWxkcygpKSAmJiBwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7CkBA
IC0zMTQ2LDcgKzMxNTcsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291
cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWUKICAgICAgICAgICAg
IHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6
CiAgICAgICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5h
bWU7Ci0gICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICAgICAgaWRlbnQg
PSAmbV9wYXJzZXJBcmVuYS5pZGVudGlmaWVyQXJlbmEoKS5tYWtlUHJpdmF0ZUlkZW50aWZpZXIo
bV92bSwgKm1fdG9rZW4ubV9kYXRhLmlkZW50KTsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaWRl
bnQpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIGNhc2UgU1RSSU5HOgogICAgICAgICAgICAgY2FzZSBJREVOVDoKICAgICAgICAg
ICAgIG5hbWVkS2V5d29yZDoKQEAgLTQ0MTksMTIgKzQ0MzMsMjEgQEAgdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVy
U2V0dGVyKFQKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkp
OwogCi0gICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1f
dG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykgewotICAgICAgICBzdHJpbmdQcm9wZXJ0
eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICBib29sIG1hdGNoZXNQcml2YXRlTmFt
ZSA9IG1hdGNoKFBSSVZBVEVOQU1FKTsKKyAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpIHx8
IG1hdGNoKFNUUklORykgfHwgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0Y2hl
c1ByaXZhdGVOYW1lKSB8fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpIHsKKyAg
ICAgICAgaWYgKG1hdGNoZXNQcml2YXRlTmFtZSkKKyAgICAgICAgICAgIHN0cmluZ1Byb3BlcnR5
TmFtZSA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRp
ZmllcihtX3ZtLCAqbV90b2tlbi5tX2RhdGEuaWRlbnQpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAg
c2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3Ry
aW5nUHJvcGVydHlOYW1lID09IG1fdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLAogICAgICAg
ICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCBuYW1lZCAncHJvdG90eXBlJyIp
OwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5z
dGFuY2UgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmNvbnN0
cnVjdG9yLAogICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgZ2V0dGVyIG9yIHNldHRlciBu
YW1lZCAnY29uc3RydWN0b3InIik7CisKKyAgICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkg
eworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6
Ok5vLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0ZXIgb3V0c2lkZSBh
IGNsYXNzIik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxl
bWVudFRhZzo6U3RhdGljLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0
ZXIgYXMgc3RhdGljIik7CisgICAgICAgIH0KICAgICAgICAgbmV4dCgpOwogICAgIH0gZWxzZSBp
ZiAobWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSkgewogICAgICAgICBudW1lcmljUHJv
cGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CkBAIC00NDQ1LDEwICs0NDY4
LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNo
KE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVmaW5p
dGlvbiIpOwogICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VN
b2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUpOwogICAgICAgICBm
YWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWly
ZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5l
ZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9u
VHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICB9
IGVsc2UgeworICAgIH0gZWxzZSBpZiAodHlwZSAmIFByb3BlcnR5Tm9kZTo6U2V0dGVyKSB7CiAg
ICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRl
ciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgICAgICBTZXRGb3JTY29wZTxTb3Vy
Y2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6
OlNldHRlck1vZGUpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29u
dGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0
b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwg
aW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0
dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlBy
aXZhdGVTZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4
cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsK
KyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3Bh
cnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFpbElmRmFs
c2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6
VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdl
dHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1l
dGhvZCkpLCAiQ2Fubm90IHBhcnNlIHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9
IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAg
ZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3Qg
Zm9yIHByaXZhdGUgZ2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291
cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2Rl
OjpHZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNv
bnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVj
dG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQs
IGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHBy
aXZhdGUgZ2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9CiAKICAgICBpZiAoc3RyaW5nUHJvcGVy
dHlOYW1lKQpAQCAtNTE3NCw2ICs1MjA1LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1iZXJFeHByZXMKICAg
ICAgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OwogICAgICAgICAgICAgICAgIGF1dG8gdHlwZSA9IERvdFR5cGU6Ok5hbWU7CiAgICAgICAg
ICAgICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgICAgICBp
ZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1ha2VQcml2YXRlSWRlbnRp
ZmllcihtX3ZtLCAqaWRlbnQpOwogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwog
ICAgICAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGJhc2VJc1N1cGVyLCAiQ2Fubm90IGFjY2Vz
cyBwcml2YXRlIG5hbWVzIGZyb20gc3VwZXIiKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKFVO
TElLRUxZKGN1cnJlbnRTY29wZSgpLT5ldmFsQ29udGV4dFR5cGUoKSA9PSBFdmFsQ29udGV4dFR5
cGU6Okluc3RhbmNlRmllbGRFdmFsQ29udGV4dCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaAppbmRleCA2OGVmY2FkZWFhM2Y2MDk1M2ZlOTZjZDJlYmZkMGQ3YmE4NTQ0OTU1Li40
ZTk2NjRmZWNmYjY5MzMwNTU4ZTdhODY3NDZhMmQyYjY2ZDljNTQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTUxNyw2ICs1MTcsMzQgQEAgcHVibGljOgogICAgICAg
ICByZXR1cm4gcmVzdWx0OwogICAgIH0KIAorICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNs
YXJlUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAg
IEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlv
blJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBi
b29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZVNldHRlcihp
ZGVudCk7CisKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8
PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfQorCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlR2V0dGVy
KGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dz
TGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1
bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0g
bV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50KTsKKworICAgICAg
ICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVz
dWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKICAgICBE
ZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudCkKICAgICB7CiAgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlv
bnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAppbmRl
eCBjNTllMDY4YWY0ODMzZDBkMzU5MzVjMTk2ZDkyZDY1ZmY5ZjgwZGJhLi5lNTgxYWZhZmZiZmE4
YjdiYjk0Zjk0ZDU4N2RhZDkzYzFjMGViZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlckFyZW5hLmNwcApAQCAtMTE1LDQgKzExNSwxMSBAQCBjb25zdCBJZGVudGlm
aWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIEFTQ0lJ
TGl0ZXJhbCBwcgogICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKIH0KIAorY29uc3Qg
SWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mIHZt
LCBjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKQoreworICAgIGF1dG8gc3ltYm9sID0gdm0u
cHJpdmF0ZVN5bWJvbFJlZ2lzdHJ5KCkuc3ltYm9sRm9yS2V5KGlkZW50aWZpZXIuc3RyaW5nKCkp
OworICAgIG1faWRlbnRpZmllcnMuYXBwZW5kKElkZW50aWZpZXI6OmZyb21VaWQoc3ltYm9sKSk7
CisgICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOworfQorCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKaW5kZXggYmUyN2YzNGIxYzg5NzczOThlMWY0
MzMxZmI5MzFhM2VlY2NmNzA5ZS4uOTZhMzliOTBjMDEwOTdlZGE1Y2Q1NmE0ZDEyMjFmZDBiZmI5
N2I4YiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVu
YS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaApAQCAt
NTMsNiArNTMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYg
bWFrZUJpZ0ludERlY2ltYWxJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciYsIHVpbnQ4
X3QgcmFkaXgpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlTnVtZXJpY0lkZW50aWZp
ZXIoVk0mLCBkb3VibGUgbnVtYmVyKTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbWFrZVBy
aXZhdGVJZGVudGlmaWVyKFZNJiwgQVNDSUlMaXRlcmFsLCB1bnNpZ25lZCk7CisgICAgICAgIGNv
bnN0IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZp
ZXImKTsKIAogICAgIHB1YmxpYzoKICAgICAgICAgc3RhdGljIGNvbnN0IGludCBNYXhpbXVtQ2Fj
aGFibGVDaGFyYWN0ZXIgPSAxMjg7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAppbmRleCAzZWM1N2MzZTJhYmE1ZGIzN2I3ZmI2
MmUzYzlmMGExNjNmYjVkZTY3Li5hODFiY2RjMDY5YTY4OThkZjA4ZDU1M2E1NTk1N2I3ZjY2OGMz
M2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5jcHAKQEAgLTEwNCw2ICsxMDQsMTAyIEBAIHZvaWQgVmFyaWFibGVFbnZpcm9u
bWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRlZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0lt
cGw+CiAgICAgZmluZFJlc3VsdC0+dmFsdWUuc2V0SXNFeHBvcnRlZCgpOwogfQogCitib29sIFZh
cmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAg
ICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJh
cmVEYXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0
YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzU2V0dGVyKTsKKworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZp
cm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOworICAg
ICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsK
KyAgICAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFk
ZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRh
KTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5OworICAgIH0KKworICAgIFBy
aXZhdGVOYW1lRW50cnkgY3VycmVudEVudHJ5ID0gZmluZFJlc3VsdC0+dmFsdWU7CisgICAgaWYg
KGN1cnJlbnRFbnRyeS5pc0RlY2xhcmVkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeS5p
c1NldHRlcigpIHx8IGN1cnJlbnRFbnRyeS5pc01ldGhvZCgpIHx8ICFjdXJyZW50RW50cnkuaXNH
ZXR0ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBh
IGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUuCisKKyAgICAgICAgQVNTRVJUKGN1cnJlbnRFbnRyeS5p
c0dldHRlcigpKTsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKGN1cnJlbnRFbnRyeS5i
aXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKKyAgICAgICAgbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEpOworCisgICAgICAg
IGF1dG8gZW50cnlJdGVyYXRvciA9IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIEFT
U0VSVChlbnRyeUl0ZXJhdG9yICE9IG1fbWFwLmVuZCgpKTsKKyAgICAgICAgZW50cnlJdGVyYXRv
ci0+dmFsdWUuc2V0SXNQcml2YXRlU2V0dGVyKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJl
ZC4KKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50
cnkuc2V0SXNQcml2YXRlU2V0dGVyKCk7CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVu
dHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOwor
CisgICAgUHJpdmF0ZU5hbWVFbnRyeSBuZXdFbnRyeShjdXJyZW50RW50cnkuYml0cygpIHwgUHJp
dmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc1NldHRlcik7CisgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50
aWZpZXIsIG5ld0VudHJ5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBWYXJpYWJsZUVu
dmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9y
YXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4o
KTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZp
bmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0
ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRz
OjpJc0dldHRlcik7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRF
bnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVHZXR0ZXIoKTsKKyAgICAgICAgZW50
cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAg
IG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQg
PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7CisgICAg
ICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBQcml2YXRlTmFt
ZUVudHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRSZXN1bHQtPnZhbHVlOworICAgIGlmIChjdXJyZW50
RW50cnkuaXNEZWNsYXJlZCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50RW50cnkuaXNHZXR0ZXIo
KSB8fCBjdXJyZW50RW50cnkuaXNNZXRob2QoKSB8fCAhY3VycmVudEVudHJ5LmlzU2V0dGVyKCkp
CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNh
dGUgcHJpdmF0ZSBuYW1lLgorCisgICAgICAgIEFTU0VSVChjdXJyZW50RW50cnkuaXNTZXR0ZXIo
KSk7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShjdXJyZW50RW50cnkuYml0cygpIHwg
UHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcik7CisgICAgICAgIG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKworICAgICAgICBhdXRvIGVu
dHJ5SXRlcmF0b3IgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoZW50
cnlJdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7CisgICAgICAgIGVudHJ5SXRlcmF0b3ItPnZhbHVl
LnNldElzUHJpdmF0ZUdldHRlcigpOworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAg
YXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElz
UHJpdmF0ZUdldHRlcigpOworICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJ
c0NhcHR1cmVkKCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIFBy
aXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1l
RW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNH
ZXR0ZXIpOworICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBu
ZXdFbnRyeSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVu
dDo6ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1fcmFyZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCmluZGV4IGY2ZDM1OGIxOTcw
MDJkMjBkZTk3ZjQwNjkzYzMzZjY5ZDU1NzM4MmIuLmEzNWQyZjU1YjY3ZjgxYTg0NTYxZjljYWNi
MGFlNGNmZDM2NjRjNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
VmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQogICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1ByaXZhdGVGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
UHJpdmF0ZUZpZWxkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZU1ldGhvZCgp
IGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZU1ldGhvZDsgfQorICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ByaXZhdGVTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlR2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlR2V0dGVyOyB9CiAKICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgpIHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDb25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0K
QEAgLTYwLDYgKzYyLDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Ns
b3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZUZpZWxk
KCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlRmllbGQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNQcml2YXRlTWV0aG9kKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlTWV0aG9kOyB9CisgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZVNldHRlcigpIHsgbV9iaXRzIHw9IElzUHJp
dmF0ZVNldHRlcjsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVHZXR0ZXIo
KSB7IG1fYml0cyB8PSBJc1ByaXZhdGVHZXR0ZXI7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9p
ZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0gfklzVmFyOyB9CiAKQEAgLTg0LDYgKzg4LDggQEAg
cHJpdmF0ZToKICAgICAgICAgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDks
CiAgICAgICAgIElzUHJpdmF0ZUZpZWxkID0gMSA8PCAxMCwKICAgICAgICAgSXNQcml2YXRlTWV0
aG9kID0gMSA8PCAxMSwKKyAgICAgICAgSXNQcml2YXRlR2V0dGVyID0gMSA8PCAxMiwKKyAgICAg
ICAgSXNQcml2YXRlU2V0dGVyID0gMSA8PCAxMywKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0
cyB7IDAgfTsKIH07CkBAIC0xMDEsOCArMTA3LDEwIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAg
QUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFyZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJ
c0RlY2xhcmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXR0
ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1NldHRlcjsgfQorICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc0dldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzR2V0dGVyOyB9CiAK
LSAgICBib29sIGlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpIGNvbnN0IHsgcmV0dXJuIGlzTWV0
aG9kKCk7IH0KKyAgICBib29sIGlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpIGNvbnN0IHsgcmV0
dXJuIGlzTWV0aG9kKCkgfHwgaXNTZXR0ZXIoKSB8fCBpc0dldHRlcigpOyB9CiAKICAgICBBTFdB
WVNfSU5MSU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CiAgICAgQUxX
QVlTX0lOTElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9
CkBAIC0xMTksNiArMTI3LDggQEAgcHVibGljOgogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAg
ICAgICAgIElzRGVjbGFyZWQgPSAxIDw8IDEsCiAgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAor
ICAgICAgICBJc0dldHRlciA9IDEgPDwgMywKKyAgICAgICAgSXNTZXR0ZXIgPSAxIDw8IDQsCiAg
ICAgfTsKIAogcHJpdmF0ZToKQEAgLTE5NSw2ICsyMDUsMTIgQEAgcHVibGljOgogICAgIGJvb2wg
ZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1
cm4gZGVjbGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAgICAgYm9vbCBk
ZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVu
dGlmaWVyKTsKIAorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmll
ciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVTZXR0ZXIoaWRlbnRpZmllci5p
bXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBSZWZQdHI8VW5p
cXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKworICAgIGJvb2wgZGVjbGFyZVByaXZhdGVH
ZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZh
dGVHZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZUdl
dHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKwogICAg
IE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPiYgaWRlbnRpZmllcikKICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRP
ckFkZFByaXZhdGVOYW1lKGlkZW50aWZpZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAppbmRleCBkODc0NDc5NGJiYjFh
ZDMwMzFmYjQ4YWJjNjRlZTU1MDMzYzZiYWI1Li4yZGVmZWEzN2IzNmYxZGQzNTAxZTE4Y2MwZmUy
MjliM2E0ZTc2MDcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9F
eGNlcHRpb25IZWxwZXJzLmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIEpTT2JqZWN0KiBjcmVhdGVS
ZWRlZmluZWRQcml2YXRlTmFtZUVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAK
IEpTT2JqZWN0KiBjcmVhdGVQcml2YXRlTWV0aG9kQWNjZXNzRXJyb3IoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKLSAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBwcml2YXRlIG1ldGhvZCJfcyksIGRlZmF1bHRT
b3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIG9y
IGFjZXNzb3IiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKIH0KIAog
SlNPYmplY3QqIGNyZWF0ZVJlaW5zdGFsbFByaXZhdGVNZXRob2RFcnJvcihKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwppbmRleCAzOGNhYzkyMGNiMzU1ZjhlODc0NzJmZTY3MGFkNzczMDRkYzgxOGVl
Li45MDI0MTQ3ZDkwMjE0ZDY2YWY5MjAzOTUwZmYzMzJiZTkxZmViYmRkIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBA
CisyMDIxLTAyLTEwICBDYWlvIExpbWEgIDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAg
ICBbRVNOZXh0XSBJbXBsZW1lbnQgcHJpdmF0ZSBhY2Nlc3NvcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5NDQzNQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1k
dXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9w
cml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3By
aXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJp
dmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanM6CisgICAgICAgICogc3RyZXNz
L3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0
aW9uLmpzOiBDb3BpZWQgZnJvbSBKU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJs
ZS1vbi1kaXJlY3QtZXZhbC5qcy4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJh
bmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLXNldHRlci1pbm5l
ci1jbGFzcy5qczogQWRkZWQuCisKIDIwMjEtMDItMDkgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFA
Z21haWwuY29tPgogCiAgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIG1ldGhvZHMK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFt
ZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGlj
YXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTNiZmI2NGYyYzNjNjJjOGFh
MTEwNDBiMGMwOTBiMGY5YWY5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9w
cml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCkBAIC0wLDAgKzEs
OTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAg
ICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dz
OiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFu
Y2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7
CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAgICBzZXQgI20odSkge30KKyAgICAgICAg
fQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNtOworICAgICAg
ICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIGApOworfSk7
CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAor
ICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9
CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJv
d3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAgICAj
bSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAg
ICAgICAjbSgpIHt9CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7
Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZh
bChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAg
ICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dz
KFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAgc2V0ICNtKCkge30KKyAgICAg
ICAgICAgICNtOworICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50
YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAg
ICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIHNldCAjbSgpIHt9CisgICAgICAgICAg
ICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNDE1ZGI4YWU2YmVkMDQ5
MDA1YjczOTVlZmJhZTg1NTAxOTIxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDkxIEBACisvL0AgcmVx
dWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7
CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAh
PT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyAr
ICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4
cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAg
ICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRF
cnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJv
dzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9Cisg
ICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5zdGFudGlhdGVD
bGFzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQg
I20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICAgICAgYWNjZXNzKG8pIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAg
ICAgIHJldHVybiBuZXcgQygpOworICAgIH0KKworICAgIGxldCBjMSA9IGNyZWF0ZUFuZEluc3Rh
bnRpYXRlQ2xhc3MoKTsKKyAgICBsZXQgYzIgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7
CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcyhjMSksICd0ZXN0Jyk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoYzIpLCAndGVzdCcpOworCisgICAgYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIpOworICAgIH0p
OworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBj
Mi5hY2Nlc3MoYzEpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1cGVyIGNsYXNzJzsgfQorCisgICAg
ICAgIHN1cGVyQWNjZXNzKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorICAgIH0KKworICAgIGNsYXNz
IEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1YmNsYXNzJzsgfQor
CisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLmFjY2VzcygpLCAnc3ViY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuc3VwZXJB
Y2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShzLnN1cGVyQWNjZXNzKCksICdzdXBlciBjbGFzcycpOworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbChz
KTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2VzcyhvKSB7Cisg
ICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKGMpLCAndGVzdCcpOworCisg
ICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGMuYWNjZXNzKG8pOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmE5OGI5NGFjMmQ4
OWE3ZDQ5YThjOWEyYTI4MzVjZDI1ZmU2Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxMzIgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAo
bGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
bGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlv
biAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBl
Y3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAg
IH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBn
ZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAg
ICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQg
aW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChj
KSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2Qo
KSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAg
IG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICNtID0gJ3Rlc3QnOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9
KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7
IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhp
cy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qobykgewor
ICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOwor
fSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkg
eyB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZlciBleGVjdXRlJyk7IH0KKworICAgICAgICBC
ID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1
cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuICd0
ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxl
dCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9k
KGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9u
KCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVy
IGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAg
ICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNtKHYpIHsg
dGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQik7CisgICAgfSk7
CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycpOworCisg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIu
bWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZW1iZXJzLWdldC1hbmQtc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMWY2NTk4MThlZWZiYzhiYTMyNjli
MzhlNzRhOTY0MGE1NWRiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW1lbWJlcnMtZ2V0LWFuZC1zZXQuanMKQEAgLTAsMCArMSw2MyBAQAorLy9AIHJlcXVpcmVP
cHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAg
IHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJo
cykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1
ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3Rl
ZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0g
Y2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3Ip
KQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIg
KyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0K
K307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7
IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcigpIHsKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAg
ICAgIGMuYWNjZXNzUHJpdmF0ZU1lbWJlcigpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9
CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNt
ID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZh
dGVNZW1iZXIoJ3Rlc3QnKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNj
ZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVF
cnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoJ3Rlc3Qn
KTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKaW5kZXggNjRjZTBlMGFmODA1Nzhl
ODk3MTZhMTY3MmVkYzE3NzMwNWIwNjRmMy4uM2VhOWM3ZDQzYzNkYWMxNWUwZjhkMDkzM2E5MjVm
ZTgxNjVkMDdkYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZGlyZWN0LWV2YWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTIxLDMgKzIxLDM2IEBAIGxldCBhc3Nl
cnQgPSB7CiAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgpLCAndGVz
dCcpOwogfSkoKTsKIAorKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0
ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisgICAgICAg
IGNhbGxHZXR0ZXJGcm9tRXZhbCgpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhpczsKKyAg
ICAgICAgICAgIHJldHVybiBldmFsKCdzZWxmLiNtJyk7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxHZXR0ZXJGcm9t
RXZhbCgpLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAgICAgICB9
CisKKyAgICAgICAgY2FsbFNldHRlckZyb21FdmFsKHYpIHsKKyAgICAgICAgICAgIGxldCBzZWxm
ID0gdGhpczsKKyAgICAgICAgICAgIGV2YWwoJ3NlbGYuI20gPSB2Jyk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5jYWxsU2V0dGVyRnJvbUV2YWwoJ3Rl
c3QnKQorICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVy
aW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMTc3ZjBkZGRiMTlmY2E4ZmMyZTI2YzRlYThjYWQ0YmM3ODRlMzQ5MgotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwt
ZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsK
KyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9
PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgcmhzICsg
IiBidWcgZ290OiAiICsgbGhzKTsKKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGZpZWxk
ID0gZXZhbCgndGhpcy4jbSgpJyk7CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQor
CisgICAgICAgIGZpZWxkID0gZXZhbCgndGhpcy4jbScpOworICAgIH0KKworICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9KSgpOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVjay5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjZmMjNmNmJmOGU0MjFlYzExMzAzOTE4NjM1OThhNGI0NDdiNTk4YzQKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVjay5qcwpAQCAt
MCwwICsxLDEwMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhz
KSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgewor
ICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEo
ZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6
ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0
IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICAg
ICAgYWNjZXNzKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAgcmV0dXJu
IGM7CisgICAgfTsKKworICAgIGxldCBjMSA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsK
KyAgICBsZXQgYzIgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7CisKKyAgICBjMS5hY2Nl
c3MoYzEsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMS5fdiwgJ3Rlc3QnKTsKKyAg
ICBjMi5hY2Nlc3MoYzIsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMi5fdiwgJ3Rl
c3QnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgYzEuYWNjZXNzKGMyLCAnZm9vJyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMyLmFjY2VzcyhjMSwgJ2ZvbycpOworICAg
IH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBTIHsKKyAgICAgICAgc2V0
ICNtKHYpIHsgdGhpcy5fdiA9IHYgfQorCisgICAgICAgIHN1cGVyQWNjZXNzKHYpIHsgdGhpcy4j
bSA9IHY7IH0KKyAgICB9CisKKyAgICBjbGFzcyBDIGV4dGVuZHMgUyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3UgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzKHYpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKworICAgIGMuYWNjZXNzKCd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl91
LCAndGVzdCcpOworCisgICAgYy5zdXBlckFjY2Vzcygnc3VwZXIgY2xhc3MnKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMuX3YsICdzdXBlciBjbGFzcycpOworCisgICAgbGV0IHMgPSBuZXcgUygp
OworICAgIHMuc3VwZXJBY2Nlc3MoJ3N1cGVyIGNsYXNzJykKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KHMuX3YsICdzdXBlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcy5jYWxsKHMsICdmb28nKTsKKyAgICB9KTsKK30p
KCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7
IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzKG8sIHYpIHsKKyAgICAgICAgICAgIHJl
dHVybiBvLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBjLmFjY2VzcyhjLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rl
c3QnKTsKKworICAgIGxldCBvID0ge307CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcyhvLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjI2ZGI4OWQ3M2Y4MTdlYmFiYTViMWEwMjQyMTdjZTI5NWU3OTdhM2MKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5qcwpAQCAt
MCwwICsxLDE1NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRy
dWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhz
KSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAg
ICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgewor
ICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEo
ZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6
ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xh
c3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgQiA9
IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4j
bSA9IHY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBpbm5lckIubWV0aG9kKGMs
ICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworfSkoKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5f
diA9IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisgICAgICAg
IEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAg
IG8uI20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgbSgpIHsgcmV0dXJu
IHRoaXMuI207IH0KKworICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlubmVy
Qi5tZXRob2QoaW5uZXJCLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm0s
ICd0ZXN0Jyk7CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7
IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAg
ICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0
ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIp
OworICAgIH0pOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30p
KCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7
IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKwor
ICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAg
ICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20oKSB7IHJl
dHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ2ZvbycpOwor
ICAgIH0pOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7
CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRo
aXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAg
ICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAg
ICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNtKHYpIHsg
dGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgaW5uZXJCLm1ldGhvZChpbm5lckIs
ICd0ZXN0MjYyJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIuX3YsICd0ZXN0MjYyJyk7
CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
X3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsKK30pKCk7
CisK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419866</attachid>
            <date>2021-02-10 10:59:29 -0800</date>
            <delta_ts>2021-02-10 15:08:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194435-20210210155927.patch</filename>
            <type>text/plain</type>
            <size>57510</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWIwMmZhMTIzZDg5YjM2OTdlZDZhNWE1YmI0N2ExOWY2YzNkNzI1Li5lN2U1MDU3NDcxZmU2NmIw
MjViYjU1M2FmODRmNzg3MGJiYzJlZTk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDQgQEAKKzIwMjEtMDItMTAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgaW5zdGFuY2UgcHJpdmF0ZSBnZXR0ZXJzIGFuZAorICAg
ICAgICBzZXR0ZXJzIGZvbGxvd2luZyB0aGUgcHJvcG9zYWwgb24gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy4KKyAgICAgICAgUHJpdmF0ZSBhY2Nlc3NvcnMgYWxzbyB1
c2UgdGhlIHByaXZhdGUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtIG9mCisgICAgICAgIHByaXZhdGUg
bWV0aG9kcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBhcmUgdXNpbmcgYm90aAorICAgICAgICBgb3Bf
c2V0X3ByaXZhdGVfYnJhbmRgIGFuZCBgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gcGVyZm9y
bSBicmFuZAorICAgICAgICBjaGVja3MuIEFjY2Vzc29ycyBhcmUgYWxzbyBzdG9yZWQgb24gY2xh
c3MgbGV4aWNhbCBzY29wZSBhcyBhIHBhaXIgb2YKKyAgICAgICAgYGdldHRlcmAgYW5kIGBzZXR0
ZXJgLiBUaGlzIGlzIGRvbmUgY3JlYXRpbmcgYSBuZXcgYEpTT2JqZWN0YCBhbmQKKyAgICAgICAg
c3RvcmluZyB0aGUgYGdldHRlcmAgb24gYGdldGAgcHJvcGVydHksIGFuZCBgc2V0dGVyYCBvbiBg
c2V0YAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBkZXNpZ25lZCBpbiBzdWNoIHdheSB0aGF0
IHdlIGNhbiBhbHdheXMgaGl0IElDIGZhc3QKKyAgICAgICAgcGF0aCBvbiBgZ2V0X2J5X2lkX2Rp
cmVjdGAgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSwgYW5kIGFsc28gdG8gYWxsb3cKKyAgICAgICAg
Y29uc3RhbnQgZm9sZGluZyBvZiBhY2Nlc3NvcnMgb24gREZHL0ZUTCwgc2luY2UgYWNlc3NvcnMg
b2JqZWN0cyBhcmUKKyAgICAgICAgZ29pbmcgdG8gYmUgY29uc3RhbnQgb25jZSBjcmVhdGVkLgor
ICAgICAgICBJbiBhZGRpdGlvbiB0byBwcml2YXRlIGFjY2Vzc29ycywgd2UgYXJlIGFsc28gbW92
aW5nIHByaXZhdGUgZmllbGRzCisgICAgICAgIGFuZCBwcml2YXRlIG1ldGhvZHMgdG8gdXNlIHBy
aXZhdGUgaWRlbnRpZmllciBhcyB0aGVpciBuYW1lLCBhdm9pZGluZworICAgICAgICBmdXR1cmUg
aXNzdWVzIGlmIHdlIGV2ZXIgYWxsb3cgaWRlbnRpZmllcnMgdG8gc3RhcnQgd2l0aCBgI2AuCisK
KyAgICAgICAgRm9yIHJlZmVyZW5jZSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGJ5dGVjb2RlIGZv
ciBhIHByaXZhdGUgZ2V0dGVyCisgICAgICAgIGFjY2VzczoKKworICAgICAgICBgYGAKKyAgICAg
ICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7Li4ufQorICAgICAgICAgICAgYWNj
ZXNzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBjbGFzcyBkZWNs
YXJhdGlvbjoKKworICAgICAgICBgYGAKKyAgICAgICAgLi4uCisgICAgICAgIG5ld19vYmplY3Qg
ICAgICAgICBkc3Q6bG9jMTIsIGlubGluZUNhcGFjaXR5OjIgLy8gdGhpcyBpcyB0aGUgb2JqZWN0
IHRvIHN0b3JlIGdldHRlciBhbmQgc2V0dGVyIHBhaXIKKyAgICAgICAgbmV3X2Z1bmNfZXhwICAg
ICAgIGRzdDpsb2MxMywgc2NvcGU6bG9jNCwgZnVuY3Rpb25EZWNsOiJnZXQgI20oKSB7Li4ufSIK
KyAgICAgICAgcHV0X2J5X2lkICAgICAgICAgIGJhc2U6bG9jMTMsIHByb3BlcnR5OkBob21lT2Jq
ZWN0LCB2YWx1ZTpsb2MxMSwgZmxhZ3M6U3RyaWN0CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAg
ICBiYXNlOmxvYzEyLCBwcm9wZXJ0eTpAZ2V0LCB2YWx1ZTpsb2MxMywgZmxhZ3M6SXNEaXJlY3R8
U3RyaWN0CisgICAgICAgIHB1dF90b19zY29wZSAgICAgICBzY29wZTpsb2M0LCB2YXI6UHJpdmF0
ZU5hbWUuI20sIHZhbHVlOmxvYzEyIC8vIGxvYzQgaXMgdGhlIGNsYXNzIGxleGljYWwgc2NvcGUK
KyAgICAgICAgLi4uCisKKyAgICAgICAgYGBgCisKKyAgICAgICAgQnl0ZWNvZGUgZm9yIGBhY2Nl
c3MoKWA6CisKKyAgICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICByZXNvbHZlX3Njb3Bl
ICAgICAgZHN0OmxvYzcsIHNjb3BlOmxvYzQsIHZhcjoiI20iLCByZXNvbHZlVHlwZTpHbG9iYWxQ
cm9wZXJ0eSwgbG9jYWxTY29wZURlcHRoOjAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRz
dDpsb2M4LCBzY29wZTpsb2M3LCB2YXI6QHByaXZhdGVCcmFuZAorICAgICAgICBjaGVja19wcml2
YXRlX2JyYW5kIGJhc2U6dGhpcywgYnJhbmQ6bG9jOAorICAgICAgICBnZXRfZnJvbV9zY29wZSAg
ICAgZHN0OmxvYzgsIHNjb3BlOmxvYzcsIHZhcjoiI20iCisgICAgICAgIGdldF9ieV9pZF9kaXJl
Y3QgICBkc3Q6bG9jOSwgYmFzZTpsb2M4LCBwcm9wZXJ0eTpAZ2V0CisgICAgICAgIG1vdiAgICAg
ICAgICAgICAgICBkc3Q6bG9jMTAsIHNyYzp0aGlzCisgICAgICAgIGNhbGwgICAgICAgICAgICAg
ICBkc3Q6bG9jNiwgY2FsbGVlOmxvYzksIGFyZ2M6MSwgYXJndjoxNgorICAgICAgICAuLi4KKwor
ICAgICAgICBgYGAKKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5j
cHA6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxW
YXJpYWJsZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlU2V0
dGVyKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZUdldHRlcik6
CisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgICog
Ynl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlz
dE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlzdE5vZGU6OmVt
aXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRH
ZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVtaXRQdXRQcm9w
ZXJ0eSk6CisgICAgICAgICogcGFyc2VyL05vZGVzLmg6CisgICAgICAgICogcGFyc2VyL1BhcnNl
ci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAg
ICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWVsZEluaXRpYWxpemVy
U291cmNlRWxlbWVudHMpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VH
ZXR0ZXJTZXR0ZXIpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VNZW1i
ZXJFeHByZXNzaW9uKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6
OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAg
ICAgICAgKEpTQzo6SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOgorICAg
ICAgICAqIHBhcnNlci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVu
dmlyb25tZW50LmNwcDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFy
ZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
aDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVTZXR0
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJp
dmF0ZUdldHRlciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRy
eTo6c2V0SXNQcml2YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dEVudHJ5OjpzZXRJc1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVu
dHJ5Ojppc1NldHRlciBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6Omlz
R2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRl
TWV0aG9kT3JBY2Vzc29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVu
dDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25t
ZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25I
ZWxwZXJzLmNwcDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9y
KToKKwogMjAyMS0wMi0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEb24ndCBjcmFzaCB3aGVuIHJlcGFyc2luZyBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgdGhl
IHBhcnNpbmcgaW52YXJpYW50IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZTU3MTll
ZjgyNThmM2IyOWZlNjBkNzZkYjIwMmQyZjliMjhhNTdlLi5iZTIxZTliODdiOGNhZDIxZDEwMTMw
MWIzODE4OWIyNWNjN2U5YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTkwNCw2ICsxOTA0LDE1
IEBAIGJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhj
b25zdCBWYXJpYWJsZUVudmlyb25tZW50JiBsCiAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUt
PmFkZFByaXZhdGVOYW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRl
TmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGVu
dHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZCgpKQogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxl
LT5hZGRQcml2YXRlTmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0
ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRz
OjpJc01ldGhvZCkpOworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRl
R2V0dGVyKCkgfHwgZW50cnkudmFsdWUuaXNQcml2YXRlU2V0dGVyKCkpIHsKKyAgICAgICAgICAg
ICAgICB1aW50MTZfdCB0cmFpdHMgPSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFy
ZWQ7CisgICAgICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUdldHRlcigpKQor
ICAgICAgICAgICAgICAgICAgICB0cmFpdHMgfD0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0dldHRlcjsKKyAgICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlU2V0dGVy
KCkpCisgICAgICAgICAgICAgICAgICAgIHRyYWl0cyB8PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzU2V0dGVyOworCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVO
YW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeSh0cmFpdHMpKTsKKyAgICAgICAg
ICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7
CkBAIC0yOTQzLDYgKzI5NTIsMzAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRl
TWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAor
Ym9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXIm
IGlkZW50KQoreworICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6
ZSgpOyBpLS07ICkgeworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ld
OworICAgICAgICBhdXRvIGl0ID0gbWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYg
KGl0ICE9IG1hcC5lbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuaXNTZXR0ZXIo
KTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0
b3I6OmlzUHJpdmF0ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAg
ICAgYXV0byYgbWFwID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9
IG1hcC5maW5kKGlkZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisg
ICAgICAgICAgICByZXR1cm4gaXQtPnZhbHVlLmlzR2V0dGVyKCk7CisgICAgfQorCisgICAgcmV0
dXJuIGZhbHNlOworfQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vz
c05hbWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQogewogICAg
IGlmICghZW52aXJvbm1lbnQgfHwgIWVudmlyb25tZW50LT5zaXplKCkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5k
ZXggYmJmYjU2ODE5OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNS4uOGIxM2VjODA2ZGVj
NDk1NjA5ZjRjODcwNmI4NzA5M2VmNjRmZjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTI2NCw2ICsx
MjY0LDggQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzUHJp
dmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgaXNQcml2YXRlU2V0
dGVyKGNvbnN0IElkZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIoY29u
c3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhj
b25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CiAgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFj
Y2Vzc05hbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNGMwOGEzM2QzZjg3YmI0MmJlM2Y4ZjZjZGJhNWZhMDM3
MDA3OGU1Zi4uZTQxMTc5ZmJiNGEzZWUwMjBiMWU5MGY1ZjU3NjY4ZTk2OWRjMTIxOSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNw
cApAQCAtNTc5LDEzICs1NzksNjUgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFy
ZVByaXZhdGVGaWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKIAogUmVnaXN0
ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIHByb3Rv
dHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgVmVj
dG9yPEpTVGV4dFBvc2l0aW9uPiogc3RhdGljRmllbGRMb2NhdGlvbnMpCiB7CisgICAgdHlwZWRl
ZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFp
cjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQ
YWlyLCBJZGVudGlmaWVyUmVwSGFzaD4gR2V0dGVyU2V0dGVyTWFwOworICAgIEdldHRlclNldHRl
ck1hcCBwcml2YXRlQWNjZXNzb3JNYXA7CisKICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhp
czsKICAgICBSZWdpc3RlcklEKiBkc3QgPSBudWxscHRyOworICAgIGZvciAoOyBwOyBwID0gcC0+
bV9uZXh0KSB7CisgICAgICAgIGlmICghKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9k
ZTo6UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpKQorICAgICAg
ICAgICAgY29udGludWU7CisKKyAgICAgICAgLy8gV2UgZ3JvdXAgcHJpdmF0ZSBnZXR0ZXJzIGFu
ZCBzZXR0ZXJzIHRvIHN0b3JlIHRoZW0gaW4gYSBvYmplY3QKKyAgICAgICAgR2V0dGVyU2V0dGVy
UGFpciBwYWlyKHAtPm1fbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4obnVsbHB0cikp
OworICAgICAgICBHZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBwcml2YXRlQWNj
ZXNzb3JNYXAuYWRkKHAtPm1fbm9kZS0+bmFtZSgpLT5pbXBsKCksIHBhaXIpOworICAgICAgICBh
dXRvJiByZXN1bHRQYWlyID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgLy8gSWYg
dGhlIG1hcCBhbHJlYWR5IGNvbnRhaW5zIGFuIGVsZW1lbnQgd2l0aCBub2RlLT5uYW1lKCksCisg
ICAgICAgIC8vIHdlIG5lZWQgdG8gc3RvcmUgdGhpcyBub2RlIGluIHRoZSBzZWNvbmQgcGFydC4K
KyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdFBhaXIu
c2Vjb25kID0gcC0+bV9ub2RlOworICAgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvLyBU
aGVuIHdlIGRlY2xhcmUgcHJpdmF0ZSBhY2Nlc3NvcworICAgIGZvciAoYXV0byYgaXQgOiBwcml2
YXRlQWNjZXNzb3JNYXApIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRl
ck9iaiA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7
CisKKyAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyID0gaXQudmFsdWU7CisgICAgICAgIGlm
IChwYWlyLmZpcnN0KSB7CisgICAgICAgICAgICBkc3QgPSBwYWlyLmZpcnN0LT5pc0luc3RhbmNl
Q2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAg
ICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShwYWlyLmZp
cnN0LT5tX2Fzc2lnbik7CisgICAgICAgICAgICBpZiAocGFpci5maXJzdC0+bmVlZHNTdXBlckJp
bmRpbmcoKSkKKyAgICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZh
bHVlLmdldCgpLCBkc3QpOworICAgICAgICAgICAgYXV0byBzZXR0ZXJPckdldHRlcklkZW50ID0g
cGFpci5maXJzdC0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyCisgICAgICAg
ICAgICAgICAgPyBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFBy
aXZhdGVOYW1lKCkKKyAgICAgICAgICAgICAgICA6IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCku
YnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RGlyZWN0UHV0QnlJZChnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIHNldHRlck9yR2V0dGVySWRl
bnQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQogCisgICAgICAgIGlmIChwYWlyLnNlY29uZCkg
eworICAgICAgICAgICAgZHN0ID0gcGFpci5zZWNvbmQtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5
KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOworICAgICAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKHBhaXIuc2Vjb25kLT5tX2Fzc2ln
bik7CisgICAgICAgICAgICBpZiAocGFpci5zZWNvbmQtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisg
ICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwg
ZHN0KTsKKyAgICAgICAgICAgIGF1dG8gc2V0dGVyT3JHZXR0ZXJJZGVudCA9IHBhaXIuc2Vjb25k
LT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIKKyAgICAgICAgICAgICAgICA/
IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUo
KQorICAgICAgICAgICAgICAgIDogZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFt
ZXMoKS5zZXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQ
dXRCeUlkKGdldHRlclNldHRlck9iai5nZXQoKSwgc2V0dGVyT3JHZXR0ZXJJZGVudCwgdmFsdWUu
Z2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKCpwYWlyLmZpcnN0LT5uYW1lKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRv
U2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCBnZXR0ZXJTZXR0ZXJPYmouZ2V0
KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlh
bGl6YXRpb24pOworICAgIH0KKyAgICAKICAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0
IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgIGZvciAoOyBwICYmIChwLT5t
X25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7
CisgICAgZm9yIChwID0gdGhpczsgcCAmJiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5v
ZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBkc3QgPSBwLT5tX25vZGUt
PmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9y
OwogCisgICAgICAgIGlmIChwLT5tX25vZGUtPnR5cGUoKSAmIChQcm9wZXJ0eU5vZGU6OlByaXZh
dGVHZXR0ZXIgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKQorICAgICAgICAgICAgY29u
dGludWU7CisKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAg
ICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAK
QEAgLTYxMCw4ICs2NjIsNiBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0
ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAvLyBh
IGNvbXB1dGVkIHByb3BlcnR5IG9yIGEgc3ByZWFkLCBqdXN0IGVtaXQgZXZlcnl0aGluZyBhcyB0
aGF0IG1heSBvdmVycmlkZSBwcmV2aW91cyB2YWx1ZXMuCiAgICAgICAgIGJvb2wgY2FuT3ZlcnJp
ZGVQcm9wZXJ0aWVzID0gZmFsc2U7CiAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UHJvcGVy
dHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKLSAgICAgICAgdHlwZWRl
ZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgR2V0dGVyU2V0dGVyUGFpciwgSWRlbnRpZmll
clJlcEhhc2g+IEdldHRlclNldHRlck1hcDsKICAgICAgICAgR2V0dGVyU2V0dGVyTWFwIGluc3Rh
bmNlTWFwOwogICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAgc3RhdGljTWFwOwogCkBAIC02NTEsNiAr
NzAxLDkgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVj
b2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgICAgIGlmIChwLT5pc0Nv
bXB1dGVkQ2xhc3NGaWVsZCgpKQogICAgICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVs
ZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIAorICAgICAgICAgICAgaWYgKHAtPm1fbm9k
ZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZVNldHRlcikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAg
IGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJU
KGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5t
X3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKQEAgLTc4Miw2ICs4MzUsOCBAQCB2b2lk
IFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkpIHsK
ICAgICAgICAgQVNTRVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisgICAgICAgIEFTU0VS
VCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSk7CisgICAgICAg
IEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKSk7CiAK
ICAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSB7
CiAgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFt
ZSgpKTsKQEAgLTkxOSw4ICs5NzQsOSBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogUmVnaXN0
ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJl
Z2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigpKSB7Ci0g
ICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKLSAg
ICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkp
OworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRl
QnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKQEAgLTkyOSw2ICs5ODUsMzEgQEAgUmVnaXN0ZXJJ
RCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBn
ZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIH0K
IAorICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyTmFtZSkp
IHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlm
aWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3Rl
cklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCks
IHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBn
ZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9y
Lm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZSk7CisgICAgICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLmVtaXRDYWxsKGRzdCwgZ2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgYXJncywgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVidWdnYWJs
ZUNhbGw6Olllcyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0
ZVNldHRlcihpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGVy
Zm9ybSBicmFuZCBjaGVjayB0byBmb2xsb3cgdGhlIHNwZWMKKyAgICAgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wg
PSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJh
bmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIGdl
dHRlciIpOworICAgICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCiAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUg
c3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC05NTcsNyArMTAzOCwyNSBAQCBS
ZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogewogICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewog
ICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOwotICAgICAgICBpZiAo
Z2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgaWYg
KGdlbmVyYXRvci5pc1ByaXZhdGVTZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJy
YW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNr
UHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZO
b3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24g
PSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBn
ZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3Mo
Z2VuZXJhdG9yLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3Mu
dGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5h
cmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENh
bGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBE
ZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAg
ICB9CisKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIgPSBnZW5lcmF0b3IuaXNQcml2YXRl
R2V0dGVyKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgaWYgKGlzUHJpdmF0ZUdldHRlciB8fCBn
ZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgewogICAgICAgICAgICAg
VmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKICAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNj
b3BlKG51bGxwdHIsIHZhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCA0YmY5Mzg2ZjI2ZjAyOTgzYjc4ODY5ZTRhMjUwMjVmNjBlYzhhYjM1Li4xNDMwZThkNDQ1ZDVh
ZmU5NjRkMWM1MTczYWRhMzk5ZGJkMGVjZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFz
cyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RU
YWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFG
cmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29u
c3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFu
ZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAx
MjggfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRl
ciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9
IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRl
ciA9IDI1NiwgUHJpdmF0ZUdldHRlciA9IDUxMiB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShj
b25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENs
YXNzRWxlbWVudFRhZyk7CiAgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5
cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTc0MCw3ICs3NDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5n
KCk7IH0KICAgICAgICAgYm9vbCBpc1N0YXRpY0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBp
c1N0YXRpY0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAg
ICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJy
aWRkZW5CeUR1cGxpY2F0ZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQorICAgICAgICBi
b29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQ
cml2YXRlTWV0aG9kIHwgUHJpdmF0ZUdldHRlciB8IFByaXZhdGVTZXR0ZXIpOyB9CiAgICAgICAg
IGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAg
ICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNz
RmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJp
ZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpA
QCAtNzYwLDcgKzc2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlOwor
ICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxMDsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1
cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcg
c2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9j
bGFzc0VsZW1lbnRUYWcgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3Bw
CmluZGV4IGVjYTViYjMwNTk1OTZhODQ2NTI2ZGZjNzU3MTExZGE2ZjU0NjMzNzguLjE2ZDcxNjky
MjNhNzM1MjZjOGU3YTE5M2E1ZjA4OGFlODZiYmQ5MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1BhcnNlci5jcHAKQEAgLTI5NzgsNyArMjk3OCw3IEBAIHBhcnNlTWV0aG9kOgogICAg
ICAgICAgICAgYm9vbCBlc2NhcGVkID0gbV90b2tlbi5tX2RhdGEuZXNjYXBlZDsKICAgICAgICAg
ICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBpZiAo
cGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiAhZXNjYXBlZCAmJiAo
bWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VC
TEUpIHx8IG1hdGNoKElOVEVHRVIpIHx8IG1hdGNoKEJJR0lOVCkgfHwgbWF0Y2goT1BFTkJSQUNL
RVQpKSkgeworICAgICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1l
dGhvZE1vZGUgJiYgIWVzY2FwZWQgJiYgKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1h
dGNoKFNUUklORykgfHwgbWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSB8fCBtYXRjaChC
SUdJTlQpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSB8fCAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhv
ZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpKSkgewogICAgICAgICAgICAgICAgIGlzR2V0dGVy
ID0gKmlkZW50ID09IHByb3BlcnR5TmFtZXMuZ2V0OwogICAgICAgICAgICAgICAgIGlzU2V0dGVy
ID0gKmlkZW50ID09IHByb3BlcnR5TmFtZXMuc2V0OwogICAgICAgICAgICAgfQpAQCAtMjk5OSw3
ICsyOTk5LDcgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2Fz
ZSBQUklWQVRFTkFNRTogewogICAgICAgICAgICAgQVNTRVJUKE9wdGlvbnM6OnVzZVByaXZhdGVD
bGFzc0ZpZWxkcygpKTsKLSAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7
CisgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCAqbV90b2tlbi5tX2RhdGEuaWRlbnQpOwogICAgICAg
ICAgICAgaWYgKCFPcHRpb25zOjp1c2VQcml2YXRlU3RhdGljQ2xhc3NGaWVsZHMoKSkKICAgICAg
ICAgICAgICAgICBmYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIlN0
YXRpYyBjbGFzcyBlbGVtZW50IGNhbm5vdCBiZSBwcml2YXRlIik7CiAgICAgICAgICAgICBmYWls
SWZUcnVlKGlzR2V0dGVyIHx8IGlzU2V0dGVyLCAiQ2Fubm90IHBhcnNlIGNsYXNzIG1ldGhvZCB3
aXRoIHByaXZhdGUgbmFtZSIpOwpAQCAtMzAyNSw4ICszMDI1LDE5IEBAIHBhcnNlTWV0aG9kOgog
CiAgICAgICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICAgICAgaWYgKGlzR2V0dGVyIHx8
IGlzU2V0dGVyKSB7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2Rl
OjpUeXBlPih0eXBlICYgflByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwotICAgICAgICAgICAgdHlw
ZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFBy
b3BlcnR5Tm9kZTo6R2V0dGVyIDogUHJvcGVydHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAg
IGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkg
eworICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5h
KCkubWFrZVByaXZhdGVJZGVudGlmaWVyKG1fdm0sICptX3Rva2VuLm1fZGF0YS5pZGVudCk7Cisg
ICAgICAgICAgICAgICAgaWYgKGlzU2V0dGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbWFu
dGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZVNldHRlcigqaWRlbnQpICYg
RGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVk
IHByaXZhdGUgc2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFBy
b3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQ
cml2YXRlR2V0dGVyKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0
ZURlY2xhcmF0aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBnZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVz
ZWQgbmFtZSIpOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVy
dHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHR5cGUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgJiB+UHJvcGVydHlOb2RlOjpD
b25zdGFudCk7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9k
ZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFByb3BlcnR5Tm9kZTo6R2V0dGVyIDogUHJvcGVy
dHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb3BlcnR5ID0g
cGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgdHlwZSwgbWV0aG9kU3RhcnQsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoIW1hdGNoKE9QRU5Q
QVJFTikgJiYgKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlIHx8IE9wdGlvbnM6OnVz
ZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzKCkpICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6Ok1ldGhvZE1vZGUpIHsKQEAgLTMxNTUsNyArMzE2NiwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3Mg
VHJlZUJ1aWxkZXI+IFRyZWVTb3VyY2VFbGVtZW50cyBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VD
bGFzc0ZpZQogICAgICAgICAgICAgc3dpdGNoIChtX3Rva2VuLm1fdHlwZSkgewogICAgICAgICAg
ICAgY2FzZSBQUklWQVRFTkFNRToKICAgICAgICAgICAgICAgICB0eXBlID0gRGVmaW5lRmllbGRO
b2RlOjpUeXBlOjpQcml2YXRlTmFtZTsKLSAgICAgICAgICAgICAgICBGQUxMVEhST1VHSDsKKyAg
ICAgICAgICAgICAgICBpZGVudCA9ICZtX3BhcnNlckFyZW5hLmlkZW50aWZpZXJBcmVuYSgpLm1h
a2VQcml2YXRlSWRlbnRpZmllcihtX3ZtLCAqbV90b2tlbi5tX2RhdGEuaWRlbnQpOworICAgICAg
ICAgICAgICAgIEFTU0VSVChpZGVudCk7CisgICAgICAgICAgICAgICAgbmV4dCgpOworICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTVFJJTkc6CiAgICAgICAgICAgICBj
YXNlIElERU5UOgogICAgICAgICAgICAgbmFtZWRLZXl3b3JkOgpAQCAtNDQyOCwxMiArNDQ0Miwy
MSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0eSBQYXJzZXI8TGV4
ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogCiAgICAgSlNUb2tlbkxvY2F0aW9uIGxvY2F0
aW9uKHRva2VuTG9jYXRpb24oKSk7CiAKLSAgICBpZiAobWF0Y2hTcGVjSWRlbnRpZmllcigpIHx8
IG1hdGNoKFNUUklORykgfHwgbV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKSB7Ci0g
ICAgICAgIHN0cmluZ1Byb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgIGJv
b2wgbWF0Y2hlc1ByaXZhdGVOYW1lID0gbWF0Y2goUFJJVkFURU5BTUUpOworICAgIGlmIChtYXRj
aFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCAoT3B0aW9uczo6dXNlUHJpdmF0
ZU1ldGhvZHMoKSAmJiBtYXRjaGVzUHJpdmF0ZU5hbWUpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5
d29yZFRva2VuRmxhZykgeworICAgICAgICBpZiAobWF0Y2hlc1ByaXZhdGVOYW1lKQorICAgICAg
ICAgICAgc3RyaW5nUHJvcGVydHlOYW1lID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5h
KCkubWFrZVByaXZhdGVJZGVudGlmaWVyKG1fdm0sICptX3Rva2VuLm1fZGF0YS5pZGVudCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHN0cmluZ1Byb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9k
YXRhLmlkZW50OwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVu
dFRhZzo6U3RhdGljICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0gbV92bS5wcm9wZXJ0eU5hbWVz
LT5wcm90b3R5cGUsCiAgICAgICAgICAgICAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMgbWV0aG9k
IG5hbWVkICdwcm90b3R5cGUnIik7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0g
Q2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsCiAgICAgICAgICAgICAiQ2Fubm90IGRlY2xhcmUg
YSBnZXR0ZXIgb3Igc2V0dGVyIG5hbWVkICdjb25zdHJ1Y3RvciciKTsKKworICAgICAgICBpZiAo
bWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFn
ID09IENsYXNzRWxlbWVudFRhZzo6Tm8sICJDYW5ub3QgZGVjbGFyZSBhIHByaXZhdGUgc2V0dGVy
IG9yIGdldHRlciBvdXRzaWRlIGEgY2xhc3MiKTsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElm
VHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHBy
aXZhdGUgc2V0dGVyIG9yIGdldHRlciBhcyBzdGF0aWMiKTsKKyAgICAgICAgfQogICAgICAgICBu
ZXh0KCk7CiAgICAgfSBlbHNlIGlmIChtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpKSB7
CiAgICAgICAgIG51bWVyaWNQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5kb3VibGVWYWx1
ZTsKQEAgLTQ0NTQsMTAgKzQ0NzcsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBU
cmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKICAgICAg
ICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxp
c3QgZm9yIGdldHRlciBkZWZpbml0aW9uIik7CiAgICAgICAgIFNldEZvclNjb3BlPFNvdXJjZVBh
cnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6R2V0
dGVyTW9kZSk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0
LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBjb25zdHJ1Y3Rvcktp
bmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZv
LCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBnZXR0ZXIg
ZGVmaW5pdGlvbiIpOwotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlIGlmICh0eXBlICYgUHJvcGVy
dHlOb2RlOjpTZXR0ZXIpIHsKICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwg
IkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHNldHRlciBkZWZpbml0aW9uIik7CiAgICAg
ICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1v
ZGUsIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSk7CiAgICAgICAgIGZhaWxJZkZhbHNlKChw
YXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFt
ZWQsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJP
clNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2Qp
KSwgIkNhbm5vdCBwYXJzZSBzZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgIH0gZWxzZSBpZiAodHlw
ZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikgeworICAgICAgICBmYWlsSWZGYWxzZSht
YXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3IgcHJpdmF0ZSBz
ZXR0ZXIgZGVmaW5pdGlvbiIpOworICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+
IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUp
OworICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rp
b25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBl
ckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rp
b25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgcHJpdmF0ZSBzZXR0ZXIg
ZGVmaW5pdGlvbiIpOworICAgIH0gZWxzZSBpZiAodHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0
ZUdldHRlcikgeworICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0
ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3IgcHJpdmF0ZSBnZXR0ZXIgZGVmaW5pdGlvbiIpOworICAg
ICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VN
b2RlLCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUpOworICAgICAgICBmYWlsSWZGYWxzZSgo
cGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5h
bWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVy
T3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9k
KSksICJDYW5ub3QgcGFyc2UgcHJpdmF0ZSBnZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgIH0KIAog
ICAgIGlmIChzdHJpbmdQcm9wZXJ0eU5hbWUpCkBAIC01MTgzLDYgKzUyMTQsNyBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVFeHByZXNzaW9uIFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZU1lbWJlckV4cHJlcwogICAgICAgICAgICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGlkZW50
ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgICAgICAgICAgYXV0byB0eXBlID0gRG90
VHlwZTo6TmFtZTsKICAgICAgICAgICAgICAgICBpZiAobWF0Y2goUFJJVkFURU5BTUUpKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGlkZW50ID0gJm1fcGFyc2VyQXJlbmEuaWRlbnRpZmllckFyZW5h
KCkubWFrZVByaXZhdGVJZGVudGlmaWVyKG1fdm0sICppZGVudCk7CiAgICAgICAgICAgICAgICAg
ICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICAgICAgICAgIGZhaWxJZlRydWUoYmFzZUlz
U3VwZXIsICJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbmFtZXMgZnJvbSBzdXBlciIpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAoVU5MSUtFTFkoY3VycmVudFNjb3BlKCktPmV2YWxDb250ZXh0VHlw
ZSgpID09IEV2YWxDb250ZXh0VHlwZTo6SW5zdGFuY2VGaWVsZEV2YWxDb250ZXh0KSkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDY4ZWZjYWRlYWEzZjYwOTUzZmU5NmNk
MmViZmQwZDdiYTg1NDQ5NTUuLjRlOTY2NGZlY2ZiNjkzMzA1NThlN2E4Njc0NmEyZDJiNjZkOWM1
NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaApAQCAtNTE3LDYgKzUxNywz
NCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQogCisgICAgRGVjbGFy
YXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlk
ZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7
CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3Vs
dDo6VmFsaWQ7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRl
Y2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKKworICAgICAgICBpZiAoIWFkZFJlc3VsdCkgewor
ICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRl
RGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sg
ZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgeworICAg
ICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFy
YXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAg
ICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVHZXR0
ZXIoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICByZXN1
bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmVz
dWx0OworICAgIH0KKwogICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZp
ZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxs
b3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCmluZGV4IGM1OWUwNjhhZjQ4MzNkMGQzNTkzNWMxOTZkOTJkNjVmZjlm
ODBkYmEuLmU1ODFhZmFmZmJmYThiN2JiOTRmOTRkNTg3ZGFkOTNjMWMwZWJlN2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCkBAIC0xMTUsNCArMTE1
LDExIEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVu
dGlmaWVyKFZNJiB2bSwgQVNDSUlMaXRlcmFsIHByCiAgICAgcmV0dXJuIG1faWRlbnRpZmllcnMu
bGFzdCgpOwogfQogCitjb25zdCBJZGVudGlmaWVyJiBJZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2
YXRlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpCit7Cisg
ICAgYXV0byBzeW1ib2wgPSB2bS5wcml2YXRlU3ltYm9sUmVnaXN0cnkoKS5zeW1ib2xGb3JLZXko
aWRlbnRpZmllci5zdHJpbmcoKSk7CisgICAgbV9pZGVudGlmaWVycy5hcHBlbmQoSWRlbnRpZmll
cjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7Cit9
CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJl
bmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAppbmRleCBi
ZTI3ZjM0YjFjODk3NzM5OGUxZjQzMzFmYjkzMWEzZWVjY2Y3MDllLi45NmEzOWI5MGMwMTA5N2Vk
YTVjZDU2YTRkMTIyMWZkMGJmYjk3YjhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXJBcmVuYS5oCkBAIC01Myw2ICs1Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAg
ICBjb25zdCBJZGVudGlmaWVyJiBtYWtlQmlnSW50RGVjaW1hbElkZW50aWZpZXIoVk0mLCBjb25z
dCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1ha2VOdW1lcmljSWRlbnRpZmllcihWTSYsIGRvdWJsZSBudW1iZXIpOwogICAgICAgICBjb25z
dCBJZGVudGlmaWVyJiBtYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mLCBBU0NJSUxpdGVyYWwsIHVu
c2lnbmVkKTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbWFrZVByaXZhdGVJZGVudGlmaWVy
KFZNJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgcHVibGljOgogICAgICAgICBzdGF0aWMg
Y29uc3QgaW50IE1heGltdW1DYWNoYWJsZUNoYXJhY3RlciA9IDEyODsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDNl
YzU3YzNlMmFiYTVkYjM3YjdmYjYyZTNjOWYwYTE2M2ZiNWRlNjcuLmE4MWJjZGMwNjlhNjg5OGRm
MDhkNTUzYTU1OTU3YjdmNjY4YzMzZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcApAQCAtMTA0LDYgKzEwNCwxMDIgQEAg
dm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFyaWFibGVBc0V4cG9ydGVkKGNvbnN0IFJl
ZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAgICBmaW5kUmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9y
dGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0
ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFy
aWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZp
bmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAg
UHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJl
ZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOworCisgICAgICAgIGF1dG8g
ZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQ
cml2YXRlU2V0dGVyKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkp
OworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
YWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50
cnk7CisgICAgfQorCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBjdXJyZW50RW50cnkgPSBmaW5kUmVz
dWx0LT52YWx1ZTsKKyAgICBpZiAoY3VycmVudEVudHJ5LmlzRGVjbGFyZWQoKSkgeworICAgICAg
ICBpZiAoY3VycmVudEVudHJ5LmlzU2V0dGVyKCkgfHwgY3VycmVudEVudHJ5LmlzTWV0aG9kKCkg
fHwgIWN1cnJlbnRFbnRyeS5pc0dldHRlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgICAgICBB
U1NFUlQoY3VycmVudEVudHJ5LmlzR2V0dGVyKCkpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5
IG1ldGEoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNT
ZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmll
ciwgbWV0YSk7CisKKyAgICAgICAgYXV0byBlbnRyeUl0ZXJhdG9yID0gbV9tYXAuZmluZChpZGVu
dGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5SXRlcmF0b3IgIT0gbV9tYXAuZW5kKCkpOwor
ICAgICAgICBlbnRyeUl0ZXJhdG9yLT52YWx1ZS5zZXRJc1ByaXZhdGVTZXR0ZXIoKTsKKworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2Vk
LCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZhdGVTZXR0ZXIoKTsKKyAgICBlbnRyeS5z
ZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1fbWFwLmFkZChp
ZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJl
bnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQ
cml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKKyAgICBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3RW50cnkpOworICAgIHJldHVybiB0cnVlOwor
fQorCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCit7CisgICAgaWYgKCFtX3Jh
cmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtlVW5pcXVlPFZhcmlhYmxlRW52
aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsKKworICAgIGlmIChmaW5kUmVzdWx0
ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7CisgICAgICAgIFByaXZhdGVO
YW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKworICAgICAgICBhdXRvIGVudHJ5ID0g
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVudHJ5LnNldElzUHJpdmF0ZUdl
dHRlcigpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgICAgIGVudHJ5LnNldElz
Q2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAg
ICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVu
dGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3VsdC5pc05ld0VudHJ5OworICAg
IH0KKworICAgIFByaXZhdGVOYW1lRW50cnkgY3VycmVudEVudHJ5ID0gZmluZFJlc3VsdC0+dmFs
dWU7CisgICAgaWYgKGN1cnJlbnRFbnRyeS5pc0RlY2xhcmVkKCkpIHsKKyAgICAgICAgaWYgKGN1
cnJlbnRFbnRyeS5pc0dldHRlcigpIHx8IGN1cnJlbnRFbnRyeS5pc01ldGhvZCgpIHx8ICFjdXJy
ZW50RW50cnkuaXNTZXR0ZXIoKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gRXJyb3I6
IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUuCisKKyAgICAgICAgQVNTRVJUKGN1
cnJlbnRFbnRyeS5pc1NldHRlcigpKTsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKGN1
cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsK
KyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEp
OworCisgICAgICAgIGF1dG8gZW50cnlJdGVyYXRvciA9IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7
CisgICAgICAgIEFTU0VSVChlbnRyeUl0ZXJhdG9yICE9IG1fbWFwLmVuZCgpKTsKKyAgICAgICAg
ZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRlR2V0dGVyKCk7CisKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gaXQgd2FzIHByZXZpb3VzbHkgdXNlZCwgbWFyayBp
dCBhcyBkZWNsYXJlZC4KKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
KCk7CisgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CisgICAgZW50cnkuc2V0SXNDb25z
dCgpOworICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBtX21hcC5hZGQoaWRlbnRpZmll
ciwgZW50cnkpOworCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBuZXdFbnRyeShjdXJyZW50RW50cnku
Yml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcik7CisgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuc2V0KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9v
bCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8
VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogewogICAgIGlmICghbV9yYXJlRGF0YSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmgKaW5kZXggZjZkMzU4YjE5NzAwMmQyMGRlOTdmNDA2OTNjMzNmNjlkNTU3MzgyYi4uYTM1ZDJm
NTViNjdmODFhODQ1NjFmOWNhY2IwYWU0Y2ZkMzY2NGM3MCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKQEAgLTQ3LDYgKzQ3LDgg
QEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Nsb3BweU1vZGVIb2lzdGluZ0Nh
bmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2Fu
ZGlkYXRlOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZUZpZWxkKCkgY29uc3Qg
eyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlRmllbGQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJv
b2wgaXNQcml2YXRlTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlTWV0
aG9kOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZVNldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZVNldHRlcjsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc1ByaXZhdGVHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVHZXR0
ZXI7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMg
fD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBt
X2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNjAsNiArNjIsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMg
fD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZv
aWQgc2V0SXNQcml2YXRlRmllbGQoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVGaWVsZDsgfQogICAg
IEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVNZXRob2QoKSB7IG1fYml0cyB8PSBJc1By
aXZhdGVNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlU2V0dGVy
KCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlU2V0dGVyOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lk
IHNldElzUHJpdmF0ZUdldHRlcigpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUdldHRlcjsgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIoKSB7IG1fYml0cyAmPSB+SXNWYXI7IH0K
IApAQCAtODQsNiArODgsOCBAQCBwcml2YXRlOgogICAgICAgICBJc1Nsb3BweU1vZGVIb2lzdGlu
Z0NhbmRpZGF0ZSA9IDEgPDwgOSwKICAgICAgICAgSXNQcml2YXRlRmllbGQgPSAxIDw8IDEwLAog
ICAgICAgICBJc1ByaXZhdGVNZXRob2QgPSAxIDw8IDExLAorICAgICAgICBJc1ByaXZhdGVHZXR0
ZXIgPSAxIDw8IDEyLAorICAgICAgICBJc1ByaXZhdGVTZXR0ZXIgPSAxIDw8IDEzLAogICAgIH07
CiAgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsKQEAgLTEwMSw4ICsxMDcsMTAgQEAgcHVi
bGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1VzZWQoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0
IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wg
aXNNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc01ldGhvZDsgfQorICAgIEFMV0FZ
U19JTkxJTkUgYm9vbCBpc1NldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzU2V0dGVy
OyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNHZXR0ZXI7IH0KIAotICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkg
Y29uc3QgeyByZXR1cm4gaXNNZXRob2QoKTsgfQorICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JB
Y2Vzc29yKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2QoKSB8fCBpc1NldHRlcigpIHx8IGlzR2V0
dGVyKCk7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8
PSBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9i
aXRzIHw9IElzRGVjbGFyZWQ7IH0KQEAgLTExOSw2ICsxMjcsOCBAQCBwdWJsaWM6CiAgICAgICAg
IElzVXNlZCA9IDEgPDwgMCwKICAgICAgICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKICAgICAgICAg
SXNNZXRob2QgPSAxIDw8IDIsCisgICAgICAgIElzR2V0dGVyID0gMSA8PCAzLAorICAgICAgICBJ
c1NldHRlciA9IDEgPDwgNCwKICAgICB9OwogCiBwcml2YXRlOgpAQCAtMTk1LDYgKzIwNSwxMiBA
QCBwdWJsaWM6CiAgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVy
JiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyLmlt
cGwoKSk7IH0KICAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlx
dWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOwogCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZVNl
dHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0
ZVNldHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0
dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAg
Ym9vbCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7
IHJldHVybiBkZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBi
b29sIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4m
IGlkZW50aWZpZXIpOworCiAgICAgTWFwOjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChj
b25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAg
ICAgYXV0byYgbWV0YSA9IGdldE9yQWRkUHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJz
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3Bw
CmluZGV4IGQ4NzQ0Nzk0YmJiMWFkMzAzMWZiNDhhYmM2NGVlNTUwMzNjNmJhYjUuLjJkZWZlYTM3
YjM2ZjFkZDM1MDFlMThjYzBmZTIyOWIzYTRlNzYwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCkBAIC0zMzYsNyArMzM2LDcg
QEAgSlNPYmplY3QqIGNyZWF0ZVJlZGVmaW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCkKIAogSlNPYmplY3QqIGNyZWF0ZVByaXZhdGVNZXRob2RBY2Nlc3NF
cnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIHByaXZhdGUg
bWV0aG9kIl9zKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0
dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nl
c3MgcHJpdmF0ZSBtZXRob2Qgb3IgYWNlc3NvciJfcyksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwg
VHlwZU5vdGhpbmcpOwogfQogCiBKU09iamVjdCogY3JlYXRlUmVpbnN0YWxsUHJpdmF0ZU1ldGhv
ZEVycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDQ0MWZmMTQyNzUzMzk1ODdkMTQw
MWYyMTg5MDQzZjdmM2EzYTliZjcuLjE1N2E0NDkwNDRmODc2YzBjOTc5MWMzY2RlZDZiZWU1YTky
MjM2NTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDItMTAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFA
Z21haWwuY29tPgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29y
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJl
c3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0ZS1uYW1lLWVhcmx5LWVycm9ycy5qczogQWRkZWQu
CisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4K
KyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1lbWJlcnMtZ2V0LWFuZC1zZXQuanM6IEFkZGVkLgor
ICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5q
czoKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZXZhbC1kdXJp
bmctZmllbGQtaW5pdGlhbGl6YXRpb24uanM6IENvcGllZCBmcm9tIEpTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzLgorICAgICAgICAqIHN0cmVz
cy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVjay5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3ByaXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0MjYy
L2NvbmZpZy55YW1sOgorCiAyMDIxLTAyLTA5ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBs
ZS5jb20+CiAKICAgICAgICAgW0pTQ10gQysrIGl0ZXJhdGlvbiBzaG91bGQgc3VwcG9ydCBmYXN0
IGl0ZXJhdG9yIHByb3RvY29sCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFj
Y2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1hY2Nlc29yLWR1cGxpY2F0ZS1uYW1lLWVhcmx5LWVycm9ycy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4z
Y2EzYmZiNjRmMmMzYzYyYzhhYTExMDQwYjBjMDkwYjBmOWFmOWI3Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0ZS1uYW1lLWVhcmx5LWVy
cm9ycy5qcwpAQCAtMCwwICsxLDkyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0
ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlv
biAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7Cisg
ICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAg
ICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAi
IGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfQorCithc3NlcnQudGhyb3dz
KFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICAgICAgc2V0
ICNtKHUpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRh
eEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAg
ICAgICAgICAjbTsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAg
ICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20o
dikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICBgKTsK
K30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFs
KGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0g
djsgfQorICAgICAgICAgICAgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNz
ZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAg
IGNsYXNzIEMgeworICAgICAgICAgICAgI20oKSB7fQorICAgICAgICAgICAgZ2V0ICNtKCkge30K
KyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdl
dCAjbSgpIHt9CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9
KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChg
CisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAg
IHNldCAjbSgpIHt9CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisK
K2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAg
ICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgICAgICBzZXQg
I20oKSB7fQorICAgICAgICAgICAgI20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5jZDQxNWRiOGFlNmJlZDA0OTAwNWI3Mzk1ZWZiYWU4NTUwMTkyMWZiCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMKQEAgLTAs
MCArMSw5MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7
CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0
aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAg
ICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIg
KyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgbGV0IGNy
ZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgICAg
IGFjY2VzcyhvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbmV3IEMoKTsKKyAgICB9CisKKyAgICBsZXQg
YzEgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7CisgICAgbGV0IGMyID0gY3JlYXRlQW5k
SW5zdGFudGlhdGVDbGFzcygpOworCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMS5hY2Nlc3MoYzEp
LCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzIuYWNjZXNzKGMyKSwgJ3Rlc3QnKTsK
KworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYzEu
YWNjZXNzKGMyKTsKKyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgYzIuYWNjZXNzKGMxKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgY2xhc3MgUyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdzdXBl
ciBjbGFzcyc7IH0KKworICAgICAgICBzdXBlckFjY2VzcygpIHsgcmV0dXJuIHRoaXMuI207IH0K
KyAgICB9CisKKyAgICBjbGFzcyBDIGV4dGVuZHMgUyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0
dXJuICdzdWJjbGFzcyc7IH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1
cm4gdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoKSwgJ3N1YmNsYXNzJyk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLnN1cGVyQWNjZXNzKCksICdzdXBlciBjbGFzcycpOworCisgICAgbGV0IHMg
PSBuZXcgUygpOworICAgIGFzc2VydC5zYW1lVmFsdWUocy5zdXBlckFjY2VzcygpLCAnc3VwZXIg
Y2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGMuYWNjZXNzLmNhbGwocyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAg
ICAgICBhY2Nlc3MobykgeworICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmFjY2Vz
cyhjKSwgJ3Rlc3QnKTsKKworICAgIGxldCBvID0ge307CisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcyhvKTsKKyAgICB9KTsKK30pKCk7
CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNz
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYjZhOThiOTRhYzJkODlhN2Q0OWE4YzlhMmEyODM1Y2QyNWZlNmI4NQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzCkBA
IC0wLDAgKzEsMTMyIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9
dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCBy
aHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKwor
ICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7
CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAo
IShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJl
dzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAg
QiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0
dXJuIG8uI207CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGlubmVyQi5tZXRob2QoYyksICd0ZXN0Jyk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9
CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBj
bGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBv
LiNtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSA9ICd0ZXN0JzsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMu
QigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0
aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1l
dGhvZCgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAg
ICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBj
LkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tZXRob2QoaW5uZXJCKSwgJ3Rlc3Qn
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycpOworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1l
dGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgIGdldCAjbSgpIHsgdGhyb3cgbmV3IEVycm9yKCdTaG91bGQgbmV2ZXIgZXhlY3V0
ZScpOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7Cisg
ICAgICAgICAgICAgICAgcmV0dXJuIG8uI20oKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcpOworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAj
bSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVy
biB0aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChv
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhv
ZChpbm5lckIpOworICAgIH0pOworCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAn
b3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDFm
NjU5ODE4ZWVmYmM4YmEzMjY5YjM4ZTc0YTk2NDBhNTVkYjAwCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCkBAIC0wLDAgKzEs
NjMgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAg
ICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dz
OiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFu
Y2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7
CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZh
dGVNZW1iZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgp
IHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgewor
ICAgICAgICAgICAgdGhpcy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAg
ICAgICAgYy5hY2Nlc3NQcml2YXRlTWVtYmVyKCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0
JzsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhp
cy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQ
cml2YXRlTWVtYmVyKCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCmlu
ZGV4IDY0Y2UwZTBhZjgwNTc4ZTg5NzE2YTE2NzJlZGMxNzczMDViMDY0ZjMuLjNlYTljN2Q0M2Mz
ZGFjMTVlMGY4ZDA5MzNhOTI1ZmU4MTY1ZDA3ZGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCkBAIC0yMSwz
ICsyMSwzNiBAQCBsZXQgYXNzZXJ0ID0gewogICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0
aG9kRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKIH0pKCk7CiAKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xh
c3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7Cisg
ICAgICAgIH0KKworICAgICAgICBjYWxsR2V0dGVyRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBs
ZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbScpOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5jYWxsR2V0dGVyRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aGlz
Ll92ID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxTZXR0ZXJGcm9tRXZhbCh2KSB7Cisg
ICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICBldmFsKCdzZWxmLiNtID0g
dicpOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuY2Fs
bFNldHRlckZyb21FdmFsKCd0ZXN0JykKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0
Jyk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2
YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRp
YWxpemF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2YwZGRkYjE5ZmNhOGZjMmUyNmM0ZWE4Y2FkNGJj
Nzg0ZTM0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVz
LWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qcwpAQCAtMCww
ICsxLDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIp
CisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsK
KyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7
IH0KKworICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20oKScpOworICAgIH0KKworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9
KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7
IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20nKTsKKyAg
ICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxk
LCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1z
ZXR0ZXItYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFu
ZC1jaGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjIzZjZiZjhlNDIxZWMxMTMwMzkxODYzNTk4YTRiNDQ3
YjU5OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXIt
YnJhbmQtY2hlY2suanMKQEAgLTAsMCArMSwxMDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsg
cmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3Ap
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRF
cnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVu
Y3Rpb24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24g
KCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3Yg
PSB2OyB9CisKKyAgICAgICAgICAgIGFjY2VzcyhvLCB2KSB7CisgICAgICAgICAgICAgICAgby4j
bSA9IHY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBD
KCk7CisgICAgICAgIHJldHVybiBjOworICAgIH07CisKKyAgICBsZXQgYzEgPSBjcmVhdGVBbmRJ
bnN0YW50aWF0ZUNsYXNzKCk7CisgICAgbGV0IGMyID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFz
cygpOworCisgICAgYzEuYWNjZXNzKGMxLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
YzEuX3YsICd0ZXN0Jyk7CisgICAgYzIuYWNjZXNzKGMyLCAndGVzdCcpOworICAgIGFzc2VydC5z
YW1lVmFsdWUoYzIuX3YsICd0ZXN0Jyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2VzcyhjMiwgJ2ZvbycpOworICAgIH0pOworCisg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMi5hY2Nl
c3MoYzEsICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xh
c3MgUyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2IH0KKworICAgICAgICBzdXBl
ckFjY2Vzcyh2KSB7IHRoaXMuI20gPSB2OyB9CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRz
IFMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl91ID0gdjsgfQorCisgICAgICAgIGFjY2Vz
cyh2KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisKKyAgICBjLmFjY2VzcygndGVzdCcpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5fdSwgJ3Rlc3QnKTsKKworICAgIGMuc3VwZXJBY2Nlc3MoJ3N1cGVy
IGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnc3VwZXIgY2xhc3MnKTsKKwor
ICAgIGxldCBzID0gbmV3IFMoKTsKKyAgICBzLnN1cGVyQWNjZXNzKCdzdXBlciBjbGFzcycpCisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShzLl92LCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbChzLCAn
Zm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2VzcyhvLCB2
KSB7CisgICAgICAgICAgICByZXR1cm4gby4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hY2Nlc3MoYywgJ3Rlc3QnKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7CisKKyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MobywgJ2Zvbycp
OworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1z
ZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5l
ci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNmRiODlkNzNmODE3ZWJhYmE1YjFhMDI0MjE3Y2UyOTVl
Nzk3YTNjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXIt
aW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxNTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsg
cmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3Ap
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRF
cnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0g
djsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qobywgdikgewor
ICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7Cisg
ICAgaW5uZXJCLm1ldGhvZChjLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwg
J3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
IHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4j
bSA9IHY7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYp
IHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZ2V0IG0oKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgICAgICNtOworICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcg
Yy5CKCk7CisKKyAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGlubmVyQi5tLCAndGVzdCcpOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNz
Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhv
ZChjLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhv
ZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAg
IG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7
CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlu
bmVyQi5tZXRob2QoaW5uZXJCKTsKKyAgICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFz
cycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRo
b2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7
IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhv
ZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhv
ZChpbm5lckIsICdmb28nKTsKKyAgICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2Qo
Yyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRo
aXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChv
LCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlu
bmVyQi5tZXRob2QoaW5uZXJCLCAndGVzdDI2MicpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5u
ZXJCLl92LCAndGVzdDI2MicpOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjLCAnZm9v
Jyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggNTE1ZGEzY2RiNzkwZWE3
ZDczNmY4NmFjNzNmMzE4NjdkYmI5ZWUxNy4uNDExNjY3NmRkMWVhODY0MzE1ODY0MDk1ZTU0NjFk
MTkwZDZlNWJhMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBi
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtNCw2ICs0LDcgQEAgZmxhZ3M6CiAgIFdl
YWtSZWY6IHVzZVdlYWtSZWZzCiAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5OiB1c2VXZWFrUmVmcwog
ICBjbGFzcy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCisgIGNsYXNzLW1l
dGhvZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZU1ldGhvZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1w
dWJsaWM6IHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMt
cHJpdmF0ZTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzCiAgIEludGwuRGF0ZVRpbWVGb3Jt
YXQtZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QKQEAgLTE5LDcgKzIw
LDYgQEAgc2tpcDoKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAgICAgLSBsZWdhY3ktcmVnZXhw
CiAKLSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhv
ZHMtcHJpdmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419911</attachid>
            <date>2021-02-10 15:08:21 -0800</date>
            <delta_ts>2021-02-11 08:47:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194435-20210210200819.patch</filename>
            <type>text/plain</type>
            <size>56300</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWIwMmZhMTIzZDg5YjM2OTdlZDZhNWE1YmI0N2ExOWY2YzNkNzI1Li41MzQ5MjZmNmMzMDM4NDMx
ODVhYWYzNjFiZmNiYTEwZmQ2M2UyOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDItMTAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgaW5zdGFuY2UgcHJpdmF0ZSBnZXR0ZXJzIGFuZAorICAg
ICAgICBzZXR0ZXJzIGZvbGxvd2luZyB0aGUgcHJvcG9zYWwgb24gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy4KKyAgICAgICAgUHJpdmF0ZSBhY2Nlc3NvcnMgYWxzbyB1
c2UgdGhlIHByaXZhdGUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtIG9mCisgICAgICAgIHByaXZhdGUg
bWV0aG9kcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBhcmUgdXNpbmcgYm90aAorICAgICAgICBgb3Bf
c2V0X3ByaXZhdGVfYnJhbmRgIGFuZCBgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gcGVyZm9y
bSBicmFuZAorICAgICAgICBjaGVja3MuIEFjY2Vzc29ycyBhcmUgYWxzbyBzdG9yZWQgb24gY2xh
c3MgbGV4aWNhbCBzY29wZSBhcyBhIHBhaXIgb2YKKyAgICAgICAgYGdldHRlcmAgYW5kIGBzZXR0
ZXJgLiBUaGlzIGlzIGRvbmUgY3JlYXRpbmcgYSBuZXcgYEpTT2JqZWN0YCBhbmQKKyAgICAgICAg
c3RvcmluZyB0aGUgYGdldHRlcmAgb24gYGdldGAgcHJvcGVydHksIGFuZCBgc2V0dGVyYCBvbiBg
c2V0YAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBkZXNpZ25lZCBpbiBzdWNoIHdheSB0aGF0
IHdlIGNhbiBhbHdheXMgaGl0IElDIGZhc3QKKyAgICAgICAgcGF0aCBvbiBgZ2V0X2J5X2lkX2Rp
cmVjdGAgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSwgYW5kIGFsc28gdG8gYWxsb3cKKyAgICAgICAg
Y29uc3RhbnQgZm9sZGluZyBvZiBhY2Nlc3NvcnMgb24gREZHL0ZUTCwgc2luY2UgYWNlc3NvcnMg
b2JqZWN0cyBhcmUKKyAgICAgICAgZ29pbmcgdG8gYmUgY29uc3RhbnQgb25jZSBjcmVhdGVkLgor
CisgICAgICAgIEZvciByZWZlcmVuY2UsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBieXRlY29kZSBm
b3IgYSBwcml2YXRlIGdldHRlcgorICAgICAgICBhY2Nlc3M6CisKKyAgICAgICAgYGBgCisgICAg
ICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkgey4uLn0KKyAgICAgICAgICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBCeXRlY29kZSBmb3IgY2xhc3MgZGVj
bGFyYXRpb246CisKKyAgICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICBuZXdfb2JqZWN0
ICAgICAgICAgZHN0OmxvYzEyLCBpbmxpbmVDYXBhY2l0eToyIC8vIHRoaXMgaXMgdGhlIG9iamVj
dCB0byBzdG9yZSBnZXR0ZXIgYW5kIHNldHRlciBwYWlyCisgICAgICAgIG5ld19mdW5jX2V4cCAg
ICAgICBkc3Q6bG9jMTMsIHNjb3BlOmxvYzQsIGZ1bmN0aW9uRGVjbDoiZ2V0ICNtKCkgey4uLn0i
CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAgICBiYXNlOmxvYzEzLCBwcm9wZXJ0eTpAaG9tZU9i
amVjdCwgdmFsdWU6bG9jMTEsIGZsYWdzOlN0cmljdAorICAgICAgICBwdXRfYnlfaWQgICAgICAg
ICAgYmFzZTpsb2MxMiwgcHJvcGVydHk6QGdldCwgdmFsdWU6bG9jMTMsIGZsYWdzOklzRGlyZWN0
fFN0cmljdAorICAgICAgICBwdXRfdG9fc2NvcGUgICAgICAgc2NvcGU6bG9jNCwgdmFyOiNtLCB2
YWx1ZTpsb2MxMiAvLyBsb2M0IGlzIHRoZSBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgICAgIC4u
LgorCisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBgYWNjZXNzKClgOgorCisg
ICAgICAgIGBgYAorICAgICAgICAuLi4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIGRzdDps
b2M3LCBzY29wZTpsb2M0LCB2YXI6IiNtIiwgcmVzb2x2ZVR5cGU6R2xvYmFsUHJvcGVydHksIGxv
Y2FsU2NvcGVEZXB0aDowCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICBkc3Q6bG9jOCwgc2Nv
cGU6bG9jNywgdmFyOkBwcml2YXRlQnJhbmQKKyAgICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCBi
YXNlOnRoaXMsIGJyYW5kOmxvYzgKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRzdDpsb2M4
LCBzY29wZTpsb2M3LCB2YXI6IiNtIgorICAgICAgICBnZXRfYnlfaWRfZGlyZWN0ICAgZHN0Omxv
YzksIGJhc2U6bG9jOCwgcHJvcGVydHk6QGdldAorICAgICAgICBtb3YgICAgICAgICAgICAgICAg
ZHN0OmxvYzEwLCBzcmM6dGhpcworICAgICAgICBjYWxsICAgICAgICAgICAgICAgZHN0OmxvYzYs
IGNhbGxlZTpsb2M5LCBhcmdjOjEsIGFyZ3Y6MTYKKyAgICAgICAgLi4uCisKKyAgICAgICAgYGBg
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZVNldHRlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3Rh
bnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlW
YWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0
ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVTZXR0ZXIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZUdldHRlciBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2
YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJ
c1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1NldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzR2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlTWV0aG9kT3JBY2Vz
c29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKToKKwogMjAyMS0w
Mi0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBj
cmFzaCB3aGVuIHJlcGFyc2luZyBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgdGhlIHBhcnNpbmcgaW52
YXJpYW50IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZTU3MTllZjgyNThmM2IyOWZl
NjBkNzZkYjIwMmQyZjliMjhhNTdlLi5iZTIxZTliODdiOGNhZDIxZDEwMTMwMWIzODE4OWIyNWNj
N2U5YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTkwNCw2ICsxOTA0LDE1IEBAIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsCiAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVO
YW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzRGVjbGFyZWQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlz
UHJpdmF0ZU1ldGhvZCgpKQogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRl
TmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6
VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkp
OworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlR2V0dGVyKCkgfHwg
ZW50cnkudmFsdWUuaXNQcml2YXRlU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MTZf
dCB0cmFpdHMgPSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQ7CisgICAgICAg
ICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUdldHRlcigpKQorICAgICAgICAgICAg
ICAgICAgICB0cmFpdHMgfD0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcjsKKyAg
ICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlU2V0dGVyKCkpCisgICAgICAg
ICAgICAgICAgICAgIHRyYWl0cyB8PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVy
OworCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5Lmtl
eS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeSh0cmFpdHMpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0yOTQzLDYg
KzI5NTIsMzAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9kKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6aXNQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkg
eworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBh
dXRvIGl0ID0gbWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuaXNTZXR0ZXIoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFw
ID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlk
ZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gaXQtPnZhbHVlLmlzR2V0dGVyKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQogewogICAgIGlmICghZW52aXJv
bm1lbnQgfHwgIWVudmlyb25tZW50LT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYmJmYjU2ODE5
OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNS4uOGIxM2VjODA2ZGVjNDk1NjA5ZjRjODcw
NmI4NzA5M2VmNjRmZjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTI2NCw2ICsxMjY0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChj
b25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgaXNQcml2YXRlU2V0dGVyKGNvbnN0IElk
ZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmll
ciYpOwogCiAgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50Kik7CiAgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKaW5kZXggNGMwOGEzM2QzZjg3YmI0MmJlM2Y4ZjZjZGJhNWZhMDM3MDA3OGU1Zi4uZTQx
MTc5ZmJiNGEzZWUwMjBiMWU5MGY1ZjU3NjY4ZTk2OWRjMTIxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTc5LDEz
ICs1NzksNjUgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVs
ZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKIAogUmVnaXN0ZXJJRCogUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogc3RhdGljRmllbGRMb2NhdGlvbnMpCiB7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlm
aWVyUmVwSGFzaD4gR2V0dGVyU2V0dGVyTWFwOworICAgIEdldHRlclNldHRlck1hcCBwcml2YXRl
QWNjZXNzb3JNYXA7CisKICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAgICBSZWdp
c3RlcklEKiBkc3QgPSBudWxscHRyOworICAgIGZvciAoOyBwOyBwID0gcC0+bV9uZXh0KSB7Cisg
ICAgICAgIGlmICghKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdl
dHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgLy8gV2UgZ3JvdXAgcHJpdmF0ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIHRv
IHN0b3JlIHRoZW0gaW4gYSBvYmplY3QKKyAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyKHAt
Pm1fbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4obnVsbHB0cikpOworICAgICAgICBH
ZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBwcml2YXRlQWNjZXNzb3JNYXAuYWRk
KHAtPm1fbm9kZS0+bmFtZSgpLT5pbXBsKCksIHBhaXIpOworICAgICAgICBhdXRvJiByZXN1bHRQ
YWlyID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgLy8gSWYgdGhlIG1hcCBhbHJl
YWR5IGNvbnRhaW5zIGFuIGVsZW1lbnQgd2l0aCBub2RlLT5uYW1lKCksCisgICAgICAgIC8vIHdl
IG5lZWQgdG8gc3RvcmUgdGhpcyBub2RlIGluIHRoZSBzZWNvbmQgcGFydC4KKyAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdFBhaXIuc2Vjb25kID0gcC0+
bV9ub2RlOworICAgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvLyBUaGVuIHdlIGRlY2xh
cmUgcHJpdmF0ZSBhY2Nlc3NvcworICAgIGZvciAoYXV0byYgaXQgOiBwcml2YXRlQWNjZXNzb3JN
YXApIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVy
YXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CisKKyAgICAgICAg
R2V0dGVyU2V0dGVyUGFpciBwYWlyID0gaXQudmFsdWU7CisgICAgICAgIGlmIChwYWlyLmZpcnN0
KSB7CisgICAgICAgICAgICBkc3QgPSBwYWlyLmZpcnN0LT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0
eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShwYWlyLmZpcnN0LT5tX2Fzc2ln
bik7CisgICAgICAgICAgICBpZiAocGFpci5maXJzdC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAg
ICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBk
c3QpOworICAgICAgICAgICAgYXV0byBzZXR0ZXJPckdldHRlcklkZW50ID0gcGFpci5maXJzdC0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyCisgICAgICAgICAgICAgICAgPyBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkK
KyAgICAgICAgICAgICAgICA6IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuc2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIHNldHRlck9yR2V0dGVySWRlbnQsIHZhbHVlLmdl
dCgpKTsKKyAgICAgICAgfQogCisgICAgICAgIGlmIChwYWlyLnNlY29uZCkgeworICAgICAgICAg
ICAgZHN0ID0gcGFpci5zZWNvbmQtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5
cGUgOiBkc3RPckNvbnN0cnVjdG9yOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKHBhaXIuc2Vjb25kLT5tX2Fzc2lnbik7CisgICAgICAg
ICAgICBpZiAocGFpci5zZWNvbmQtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICAg
ICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgZHN0KTsKKyAgICAg
ICAgICAgIGF1dG8gc2V0dGVyT3JHZXR0ZXJJZGVudCA9IHBhaXIuc2Vjb25kLT5tX3R5cGUgJiBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIKKyAgICAgICAgICAgICAgICA/IGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKQorICAgICAgICAg
ICAgICAgIDogZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2
YXRlTmFtZSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdldHRl
clNldHRlck9iai5nZXQoKSwgc2V0dGVyT3JHZXR0ZXJJZGVudCwgdmFsdWUuZ2V0KCkpOworICAg
ICAgICB9CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpwYWly
LmZpcnN0LT5uYW1lKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJh
dG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIERvTm90VGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOwor
ICAgIH0KKyAgICAKICAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVn
dWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlw
ZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7CisgICAgZm9yIChw
ID0gdGhpczsgcCAmJiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
KTsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VD
bGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCisgICAgICAg
IGlmIChwLT5tX25vZGUtPnR5cGUoKSAmIChQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIgfCBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKICAg
ICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2
ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKQEAgLTYxMCw4ICs2
NjIsNiBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAvLyBhIGNvbXB1dGVkIHBy
b3BlcnR5IG9yIGEgc3ByZWFkLCBqdXN0IGVtaXQgZXZlcnl0aGluZyBhcyB0aGF0IG1heSBvdmVy
cmlkZSBwcmV2aW91cyB2YWx1ZXMuCiAgICAgICAgIGJvb2wgY2FuT3ZlcnJpZGVQcm9wZXJ0aWVz
ID0gZmFsc2U7CiAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJv
cGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVu
aXF1ZWRTdHJpbmdJbXBsKiwgR2V0dGVyU2V0dGVyUGFpciwgSWRlbnRpZmllclJlcEhhc2g+IEdl
dHRlclNldHRlck1hcDsKICAgICAgICAgR2V0dGVyU2V0dGVyTWFwIGluc3RhbmNlTWFwOwogICAg
ICAgICBHZXR0ZXJTZXR0ZXJNYXAgc3RhdGljTWFwOwogCkBAIC02NTEsNiArNzAxLDkgQEAgUmVn
aXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xhc3NG
aWVsZCgpKQogICAgICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJh
dG9yLCAqcC0+bV9ub2RlKTsKIAorICAgICAgICAgICAgaWYgKHAtPm1fbm9kZS0+dHlwZSgpICYg
KFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRl
cikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIGlmIChwLT5pc0lu
c3RhbmNlQ2xhc3NGaWVsZCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmll
bGRMb2NhdGlvbnMpOwogICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5tX3R5cGUgJiBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KTsKQEAgLTc4Miw2ICs4MzUsOCBAQCB2b2lkIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkpIHsKICAgICAgICAgQVNT
RVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisgICAgICAgIEFTU0VSVCghKG5vZGUudHlw
ZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSk7CisgICAgICAgIEFTU0VSVCghKG5v
ZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKSk7CiAKICAgICAgICAgaWYg
KG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSB7CiAgICAgICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKQEAgLTkx
OSw4ICs5NzQsOSBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogUmVnaXN0ZXJJRCogQmFzZURv
dE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0
aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigpKSB7Ci0gICAgICAgIGlmIChn
ZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKLSAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAgICAgICBh
dXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9y
LmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wg
PSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpKTsKQEAgLTkyOSw2ICs5ODUsMzEgQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2kKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNj
b3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRl
QnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hl
Y2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJv
bVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJ
Zk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJn
cyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50
aGlzUmVnaXN0ZXIoKSwgYmFzZSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRD
YWxsKGRzdCwgZ2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywg
bV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVidWdnYWJsZUNhbGw6Olllcyk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZVNldHRlcihpZGVu
dGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBicmFuZCBj
aGVjayB0byBmb2xsb3cgdGhlIHNwZWMKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwor
CisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3Iu
ZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJp
dmF0ZUJyYW5kU3ltYm9sKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJy
b3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIGdldHRlciIpOworICAg
ICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9
IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNh
cHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC05NTcsNyArMTAzOCwyNSBAQCBSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySQogewogICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBhdXRv
IGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOwotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
UHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5p
c1ByaXZhdGVTZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0g
Z2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5k
KGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJP
YmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJp
dmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBu
dWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVy
KCksIGJhc2UpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lz
dGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2Fs
bDo6WWVzKTsKKworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIgPSBnZW5lcmF0b3IuaXNQcml2YXRlR2V0dGVyKGlkZW50
aWZpZXJOYW1lKTsKKyAgICAgICAgaWYgKGlzUHJpdmF0ZUdldHRlciB8fCBnZW5lcmF0b3IuaXNQ
cml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgewogICAgICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA0YmY5Mzg2ZjI2
ZjAyOTgzYjc4ODY5ZTRhMjUwMjVmNjBlYzhhYjM1Li4xNDMwZThkNDQ1ZDVhZmU5NjRkMWM1MTcz
YWRhMzk5ZGJkMGVjZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03
MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1l
bnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBj
bGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBH
ZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJl
YWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKKyAgICAg
ICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRl
ciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRl
RmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRlciA9IDI1NiwgUHJp
dmF0ZUdldHRlciA9IDUxMiB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlm
aWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRh
Zyk7CiAgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTc0MCw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlz
SW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAg
ICAgYm9vbCBpc1N0YXRpY0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc1N0YXRpY0NsYXNz
UHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAm
IChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQorICAgICAgICBib29sIGlzUHJpdmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9k
IHwgUHJpdmF0ZUdldHRlciB8IFByaXZhdGVTZXR0ZXIpOyB9CiAgICAgICAgIGJvb2wgaGFzQ29t
cHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wg
aXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBo
YXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGlj
YXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzYwLDcgKzc2
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlOworICAgICAgICB1bnNp
Z25lZCBtX3R5cGUgOiAxMDsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6
IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVz
ZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRU
YWcgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGVjYTVi
YjMwNTk1OTZhODQ2NTI2ZGZjNzU3MTExZGE2ZjU0NjMzNzguLjlkZTQxNmNmNmE3YWE3MjgyYWY2
ZTg1M2MzYjNhNGQ4Mzk4N2NlOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTI5NzgsNyArMjk3OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgYm9v
bCBlc2NhcGVkID0gbV90b2tlbi5tX2RhdGEuZXNjYXBlZDsKICAgICAgICAgICAgIEFTU0VSVChp
ZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiAhZXNjYXBlZCAmJiAobWF0Y2hJZGVudGlm
aWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VCTEUpIHx8IG1hdGNo
KElOVEVHRVIpIHx8IG1hdGNoKEJJR0lOVCkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSkgeworICAg
ICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYg
IWVzY2FwZWQgJiYgKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykg
fHwgbWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSB8fCBtYXRjaChCSUdJTlQpIHx8IG1h
dGNoKE9QRU5CUkFDS0VUKSB8fCAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRj
aChQUklWQVRFTkFNRSkpKSkgewogICAgICAgICAgICAgICAgIGlzR2V0dGVyID0gKmlkZW50ID09
IHByb3BlcnR5TmFtZXMuZ2V0OwogICAgICAgICAgICAgICAgIGlzU2V0dGVyID0gKmlkZW50ID09
IHByb3BlcnR5TmFtZXMuc2V0OwogICAgICAgICAgICAgfQpAQCAtMzAwNiw2ICszMDA2LDcgQEAg
cGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4
dCgpOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0
Y2goT1BFTlBBUkVOKSkgeworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBwcml2
YXRlIG1ldGhvZCIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Nj
b3BlLT5kZWNsYXJlUHJpdmF0ZU1ldGhvZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9k
IHR3aWNlIik7CiAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0
eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKTsKQEAgLTMwMjUsOCArMzAyNiwxOSBA
QCBwYXJzZU1ldGhvZDoKIAogICAgICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHk7CiAgICAgICAg
IGlmIChpc0dldHRlciB8fCBpc1NldHRlcikgewotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19j
YXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsK
LSAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUg
fCAoaXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRlciA6IFByb3BlcnR5Tm9kZTo6U2V0dGVy
KSk7CisgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRj
aChQUklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRh
LmlkZW50OworICAgICAgICAgICAgICAgIGlmIChpc1NldHRlcikgeworICAgICAgICAgICAgICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVTZXR0ZXIo
KmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24s
ICJEZWNsYXJlZCBwcml2YXRlIHNldHRlciB3aXRoIGFuIGFscmVhZHkgdXNlZCBuYW1lIik7Cisg
ICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+
KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgZ2V0dGVyIHdpdGggYW4g
YWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19j
YXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRl
cik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlICYgflByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQpOworICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQ
cm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCAoaXNHZXR0ZXIgPyBQcm9wZXJ0eU5vZGU6OkdldHRl
ciA6IFByb3BlcnR5Tm9kZTo6U2V0dGVyKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBw
cm9wZXJ0eSA9IHBhcnNlR2V0dGVyU2V0dGVyKGNvbnRleHQsIHR5cGUsIG1ldGhvZFN0YXJ0LCBD
b25zdHJ1Y3RvcktpbmQ6Ok5vbmUsIHRhZyk7CiAgICAgICAgICAgICBmYWlsSWZGYWxzZShwcm9w
ZXJ0eSwgIkNhbm5vdCBwYXJzZSB0aGlzIG1ldGhvZCIpOwogICAgICAgICB9IGVsc2UgaWYgKCFt
YXRjaChPUEVOUEFSRU4pICYmICh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpJbnN0YW5jZSB8fCBP
cHRpb25zOjp1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcygpKSAmJiBwYXJzZU1vZGUgPT0gU291
cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlKSB7CkBAIC0zMTU1LDcgKzMxNjcsMTAgQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxlbWVudHMgUGFyc2VyPExleGVyVHlw
ZT46OnBhcnNlQ2xhc3NGaWUKICAgICAgICAgICAgIHN3aXRjaCAobV90b2tlbi5tX3R5cGUpIHsK
ICAgICAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CiAgICAgICAgICAgICAgICAgdHlwZSA9IERl
ZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7Ci0gICAgICAgICAgICAgICAgRkFMTFRI
Uk9VR0g7CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAg
ICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNhc2UgU1RSSU5HOgogICAgICAgICAg
ICAgY2FzZSBJREVOVDoKICAgICAgICAgICAgIG5hbWVkS2V5d29yZDoKQEAgLTQ0MjgsMTIgKzQ0
NDMsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogCi0gICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIo
KSB8fCBtYXRjaChTVFJJTkcpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykg
eworICAgIGJvb2wgbWF0Y2hlc1ByaXZhdGVOYW1lID0gbWF0Y2goUFJJVkFURU5BTUUpOworICAg
IGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCAoT3B0aW9uczo6
dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaGVzUHJpdmF0ZU5hbWUpIHx8IG1fdG9rZW4ubV90
eXBlICYgS2V5d29yZFRva2VuRmxhZykgewogICAgICAgICBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLAogICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgc3Rh
dGljIG1ldGhvZCBuYW1lZCAncHJvdG90eXBlJyIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgKnN0cmluZ1Byb3BlcnR5TmFt
ZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLAogICAgICAgICAgICAgIkNhbm5v
dCBkZWNsYXJlIGEgZ2V0dGVyIG9yIHNldHRlciBuYW1lZCAnY29uc3RydWN0b3InIik7CisKKyAg
ICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Ok5vLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2
YXRlIHNldHRlciBvciBnZXR0ZXIgb3V0c2lkZSBhIGNsYXNzIik7CisgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiQ2Fubm90IGRl
Y2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0ZXIgYXMgc3RhdGljIik7CisgICAgICAgIH0K
ICAgICAgICAgbmV4dCgpOwogICAgIH0gZWxzZSBpZiAobWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJ
TlRFR0VSKSkgewogICAgICAgICBudW1lcmljUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEu
ZG91YmxlVmFsdWU7CkBAIC00NDU0LDEwICs0NDc1LDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRl
cihUCiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBh
cmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgICAgICBTZXRGb3JTY29w
ZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJz
ZU1vZGU6OkdldHRlck1vZGUpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9m
ZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFy
c2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZSBpZiAodHlw
ZSAmIFByb3BlcnR5Tm9kZTo6U2V0dGVyKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9Q
RU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlv
biIpOwogICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2Rl
KG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUpOwogICAgICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1l
bnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVs
c2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpIHsKKyAgICAgICAgZmFp
bElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9y
IHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNl
UGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpT
ZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGlu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHByaXZh
dGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5v
ZGU6OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVO
KSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgZ2V0dGVyIGRlZmluaXRp
b24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9k
ZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVk
ZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHByaXZhdGUgZ2V0dGVyIGRlZmluaXRpb24iKTsK
ICAgICB9CiAKICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggNjhlZmNhZGVhYTNmNjA5NTNmZTk2Y2QyZWJmZDBkN2JhODU0
NDk1NS4uNGU5NjY0ZmVjZmI2OTMzMDU1OGU3YTg2NzQ2YTJkMmI2NmQ5YzU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MTcsNiArNTE3LDM0IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVj
bGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAg
ICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVT
ZXR0ZXIoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICBy
ZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0
ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBib29sIGFkZFJl
c3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudCk7CisK
KyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJh
dGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVj
bGFyYXRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5j
cHAKaW5kZXggYzU5ZTA2OGFmNDgzM2QwZDM1OTM1YzE5NmQ5MmQ2NWZmOWY4MGRiYS4uZTU4MWFm
YWZmYmZhOGI3YmI5NGY5NGQ1ODdkYWQ5M2MxYzBlYmU3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKQEAgLTExNSw0ICsxMTUsMTEgQEAgY29uc3Qg
SWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mIHZt
LCBBU0NJSUxpdGVyYWwgcHIKICAgICByZXR1cm4gbV9pZGVudGlmaWVycy5sYXN0KCk7CiB9CiAK
K2NvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVudGlmaWVy
KFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikKK3sKKyAgICBhdXRvIHN5bWJv
bCA9IHZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJvbEZvcktleShpZGVudGlmaWVyLnN0
cmluZygpKTsKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJZGVudGlmaWVyOjpmcm9tVWlkKHN5
bWJvbCkpOworICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxhc3QoKTsKK30KKwogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCmluZGV4IGJlMjdmMzRiMWM4OTc3
Mzk4ZTFmNDMzMWZiOTMxYTNlZWNjZjcwOWUuLjk2YTM5YjkwYzAxMDk3ZWRhNWNkNTZhNGQxMjIx
ZmQwYmZiOTdiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5h
LmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGNvbnN0IElkZW50
aWZpZXImIG1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihWTSYsIGNvbnN0IElkZW50aWZpZXIm
LCB1aW50OF90IHJhZGl4KTsKICAgICAgICAgY29uc3QgSWRlbnRpZmllciYgbWFrZU51bWVyaWNJ
ZGVudGlmaWVyKFZNJiwgZG91YmxlIG51bWJlcik7CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXIm
IG1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYsIEFTQ0lJTGl0ZXJhbCwgdW5zaWduZWQpOworICAg
ICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJpdmF0ZUlkZW50aWZpZXIoVk0mLCBjb25zdCBJ
ZGVudGlmaWVyJik7CiAKICAgICBwdWJsaWM6CiAgICAgICAgIHN0YXRpYyBjb25zdCBpbnQgTWF4
aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKaW5kZXggM2VjNTdjM2UyYWJhNWRi
MzdiN2ZiNjJlM2M5ZjBhMTYzZmI1ZGU2Ny4uYTgxYmNkYzA2OWE2ODk4ZGYwOGQ1NTNhNTU5NTdi
N2Y2NjhjMzNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJp
YWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zh
cmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDQsNiArMTA0LDEwMiBAQCB2b2lkIFZhcmlhYmxl
RW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRT
dHJpbmdJbXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAor
Ym9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBSZWZQ
dHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIGlmICghbV9yYXJlRGF0
YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxWYXJpYWJsZUVudmlyb25t
ZW50OjpSYXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAoZmluZFJlc3VsdCA9PSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAgICBQcml2YXRlTmFtZUVu
dHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5h
bWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcik7CisKKyAgICAgICAgYXV0byBlbnRyeSA9IFZhcmlh
YmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJc1ByaXZhdGVTZXR0ZXIo
KTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1
cmVkKCk7CisgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAg
YXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmll
ciwgbWV0YSk7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisK
KyAgICBQcml2YXRlTmFtZUVudHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRSZXN1bHQtPnZhbHVlOwor
ICAgIGlmIChjdXJyZW50RW50cnkuaXNEZWNsYXJlZCgpKSB7CisgICAgICAgIGlmIChjdXJyZW50
RW50cnkuaXNTZXR0ZXIoKSB8fCBjdXJyZW50RW50cnkuaXNNZXRob2QoKSB8fCAhY3VycmVudEVu
dHJ5LmlzR2V0dGVyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIEVycm9yOiBkZWNs
YXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgICAgIEFTU0VSVChjdXJyZW50
RW50cnkuaXNHZXR0ZXIoKSk7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShjdXJyZW50
RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcik7CisgICAg
ICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKwor
ICAgICAgICBhdXRvIGVudHJ5SXRlcmF0b3IgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOworICAg
ICAgICBBU1NFUlQoZW50cnlJdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7CisgICAgICAgIGVudHJ5
SXRlcmF0b3ItPnZhbHVlLnNldElzUHJpdmF0ZVNldHRlcigpOworCisgICAgICAgIHJldHVybiB0
cnVlOworICAgIH0KKworICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVzZWQsIG1hcmsgaXQgYXMg
ZGVjbGFyZWQuCisgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOwor
ICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOworICAgIGVudHJ5LnNldElzQ29uc3QoKTsK
KyAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIsIGVu
dHJ5KTsKKworICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5LmJpdHMo
KSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50
cnk6OlRyYWl0czo6SXNTZXR0ZXIpOworICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNl
dChpZGVudGlmaWVyLCBuZXdFbnRyeSk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgVmFy
aWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1
ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAg
ICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFy
ZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVO
YW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0
YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRh
KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6
OlRyYWl0czo6SXNHZXR0ZXIpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmly
b25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CisgICAg
ICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOwor
ICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRk
UmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEp
OworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgUHJp
dmF0ZU5hbWVFbnRyeSBjdXJyZW50RW50cnkgPSBmaW5kUmVzdWx0LT52YWx1ZTsKKyAgICBpZiAo
Y3VycmVudEVudHJ5LmlzRGVjbGFyZWQoKSkgeworICAgICAgICBpZiAoY3VycmVudEVudHJ5Lmlz
R2V0dGVyKCkgfHwgY3VycmVudEVudHJ5LmlzTWV0aG9kKCkgfHwgIWN1cnJlbnRFbnRyeS5pc1Nl
dHRlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEg
ZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgICAgICBBU1NFUlQoY3VycmVudEVudHJ5Lmlz
U2V0dGVyKCkpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoY3VycmVudEVudHJ5LmJp
dHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOworICAgICAgICBtX3Jh
cmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbWV0YSk7CisKKyAgICAgICAg
YXV0byBlbnRyeUl0ZXJhdG9yID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICAgICAgQVNT
RVJUKGVudHJ5SXRlcmF0b3IgIT0gbV9tYXAuZW5kKCkpOworICAgICAgICBlbnRyeUl0ZXJhdG9y
LT52YWx1ZS5zZXRJc1ByaXZhdGVHZXR0ZXIoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVk
LgorICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRy
eS5zZXRJc1ByaXZhdGVHZXR0ZXIoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisK
KyAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzR2V0dGVyKTsKKyAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRp
ZmllciwgbmV3RW50cnkpOworICAgIHJldHVybiB0cnVlOworfQorCiBib29sIFZhcmlhYmxlRW52
aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX3JhcmVEYXRhKQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAppbmRleCBmNmQz
NThiMTk3MDAyZDIwZGU5N2Y0MDY5M2MzM2Y2OWQ1NTczODJiLi5hMzVkMmY1NWI2N2Y4MWE4NDU2
MWY5Y2FjYjBhZTRjZmQzNjY0YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDcsNiArNDcsOCBAQCBwdWJsaWM6CiAg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7IH0KICAg
ICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQoKSBjb25zdCB7IHJldHVybiBtX2Jp
dHMgJiBJc1ByaXZhdGVGaWVsZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVN
ZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVNZXRob2Q7IH0KKyAgICBB
TFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRz
ICYgSXNQcml2YXRlU2V0dGVyOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzUHJpdmF0ZUdl
dHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZUdldHRlcjsgfQogCiAgICAg
QUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7IG1fYml0cyB8PSBJc0NhcHR1cmVk
OyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29uc3QoKSB7IG1fYml0cyB8PSBJc0Nv
bnN0OyB9CkBAIC02MCw2ICs2Miw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQg
c2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7IG1fYml0cyB8PSBJc1Nsb3BweU1v
ZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZh
dGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxkOyB9CiAgICAgQUxXQVlTX0lOTElO
RSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZU1ldGhvZDsg
fQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVTZXR0ZXIoKSB7IG1fYml0cyB8
PSBJc1ByaXZhdGVTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRl
R2V0dGVyKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlR2V0dGVyOyB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5Jc1ZhcjsgfQogCkBAIC04NCw2ICs4
OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlID0g
MSA8PCA5LAogICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEgPDwgMTAsCiAgICAgICAgIElzUHJp
dmF0ZU1ldGhvZCA9IDEgPDwgMTEsCisgICAgICAgIElzUHJpdmF0ZUdldHRlciA9IDEgPDwgMTIs
CisgICAgICAgIElzUHJpdmF0ZVNldHRlciA9IDEgPDwgMTMsCiAgICAgfTsKICAgICB1aW50MTZf
dCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtMTAxLDggKzEwNywxMCBAQCBwdWJsaWM6CiAgICAgQUxX
QVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzVXNlZDsg
fQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVkKCkgY29uc3QgeyByZXR1cm4gbV9i
aXRzICYgSXNEZWNsYXJlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc01ldGhvZCgpIGNv
bnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTWV0aG9kOyB9CisgICAgQUxXQVlTX0lOTElORSBib29s
IGlzU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTZXR0ZXI7IH0KKyAgICBBTFdB
WVNfSU5MSU5FIGJvb2wgaXNHZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0dldHRl
cjsgfQogCi0gICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSBjb25zdCB7IHJldHVy
biBpc01ldGhvZCgpOyB9CisgICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSBjb25z
dCB7IHJldHVybiBpc01ldGhvZCgpIHx8IGlzU2V0dGVyKCkgfHwgaXNHZXR0ZXIoKTsgfQogCiAg
ICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsgfQog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNEZWNs
YXJlZDsgfQpAQCAtMTE5LDYgKzEyNyw4IEBAIHB1YmxpYzoKICAgICAgICAgSXNVc2VkID0gMSA8
PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAogICAgICAgICBJc01ldGhvZCA9IDEg
PDwgMiwKKyAgICAgICAgSXNHZXR0ZXIgPSAxIDw8IDMsCisgICAgICAgIElzU2V0dGVyID0gMSA8
PCA0LAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xOTUsNiArMjA1LDEyIEBAIHB1YmxpYzoKICAg
ICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIp
IHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIuaW1wbCgpKTsgfQogICAg
IGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcik7CiAKKyAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50
aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisKKyAgICBib29sIGRlY2xhcmVQ
cml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xh
cmVQcml2YXRlR2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVBy
aXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7
CisKICAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IFJlZlB0cjxV
bmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBhdXRvJiBtZXRh
ID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDg3NDQ3
OTRiYmIxYWQzMDMxZmI0OGFiYzY0ZWU1NTAzM2M2YmFiNS4uMmRlZmVhMzdiMzZmMWRkMzUwMWUx
OGNjMGZlMjI5YjNhNGU3NjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBKU09iamVjdCog
Y3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0KQogCiBKU09iamVjdCogY3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QiX3MpLCBk
ZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKKyAgICByZXR1cm4gY3JlYXRlVHlw
ZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBwcml2YXRlIG1l
dGhvZCBvciBhY2Vzc29yIl9zKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7
CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIv
SlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDQxZmYxNDI3NTMzOTU4N2QxNDAxZjIxODkwNDNmN2Yz
YTNhOWJmNy4uMTU3YTQ0OTA0NGY4NzZjMGM5NzkxYzNjZGVkNmJlZTVhOTIyMzY1NCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMCBAQAorMjAyMS0wMi0xMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CisK
KyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgYWNjZXNzb3JzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWFj
Y2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qczogQWRkZWQuCisgICAgICAgICogc3Ry
ZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0
aWFsaXphdGlvbi5qczogQ29waWVkIGZyb20gSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1h
dmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtc2V0
dGVyLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1zZXR0
ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6
CisKIDIwMjEtMDItMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbSlNDXSBDKysgaXRlcmF0aW9uIHNob3VsZCBzdXBwb3J0IGZhc3QgaXRlcmF0b3IgcHJv
dG9jb2wKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNh
dGUtbmFtZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3It
ZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTNiZmI2NGYyYzNj
NjJjOGFhMTEwNDBiMGMwOTBiMGY5YWY5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCkBAIC0w
LDAgKzEsOTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykg
eworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAg
dGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAi
ICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAg
IHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAgICBzZXQgI20odSkge30KKyAg
ICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNtOwor
ICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIGAp
OworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2
YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3Yg
PSB2OyB9CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2Vy
dC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBj
bGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAg
ICAgICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5
bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7Cisg
ICAgICAgICAgICAjbSgpIHt9CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9Cisg
ICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAg
ICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQu
dGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xh
c3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAgc2V0ICNtKCkge30K
KyAgICAgICAgICAgICNtOworICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93
cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIHNldCAjbSgpIHt9CisgICAg
ICAgICAgICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNDE1ZGI4YWU2
YmVkMDQ5MDA1YjczOTVlZmJhZTg1NTAxOTIxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDkxIEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYg
KGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rp
b24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhw
ZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAg
ICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5zdGFu
dGlhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAg
ICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICAgICAgYWNjZXNzKG8pIHsK
KyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBuZXcgQygpOworICAgIH0KKworICAgIGxldCBjMSA9IGNyZWF0ZUFu
ZEluc3RhbnRpYXRlQ2xhc3MoKTsKKyAgICBsZXQgYzIgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNs
YXNzKCk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcyhjMSksICd0ZXN0Jyk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoYzIpLCAndGVzdCcpOworCisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIpOwor
ICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBjMi5hY2Nlc3MoYzEpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1cGVyIGNsYXNzJzsgfQor
CisgICAgICAgIHN1cGVyQWNjZXNzKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorICAgIH0KKworICAg
IGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1YmNsYXNz
JzsgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYXNzZXJ0LnNh
bWVWYWx1ZShjLmFjY2VzcygpLCAnc3ViY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
c3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7Cisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShzLnN1cGVyQWNjZXNzKCksICdzdXBlciBjbGFzcycpOworICAg
IGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3Mu
Y2FsbChzKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vzcyhv
KSB7CisgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKGMpLCAndGVzdCcp
OworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgICAgIGMuYWNjZXNzKG8pOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNmE5OGI5
NGFjMmQ4OWE3ZDQ5YThjOWEyYTI4MzVjZDI1ZmU2Yjg1Ci0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwxMzIg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAg
ICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBm
dW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBv
cCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2Vv
ZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBCID0gY2xhc3Mgewor
ICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1l
dGhvZChjKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBt
ZXRob2QoKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAg
ICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgICNtID0gJ3Rlc3QnOworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAg
fSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQg
I20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1
cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qo
bykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAg
IH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0
ICNtKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZlciBleGVjdXRlJyk7IH0KKworICAg
ICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAg
ICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsgcmV0
dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIu
bWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4g
J291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMuI207IH0K
KworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAg
ICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNt
KHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQik7Cisg
ICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycp
OworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBp
bm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJp
dmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMWY2NTk4MThlZWZiYzhi
YTMyNjliMzhlNzRhOTY0MGE1NWRiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW1lbWJlcnMtZ2V0LWFuZC1zZXQuanMKQEAgLTAsMCArMSw2MyBAQAorLy9AIHJl
cXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0g
eworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMg
IT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMg
KyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChl
eHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAg
ICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVk
RXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhy
b3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQor
ICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcigpIHsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7
CisgICAgICAgIGMuYWNjZXNzUHJpdmF0ZU1lbWJlcigpOworICAgIH0pOworfSkoKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rl
c3QnOyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0
aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAg
ICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vz
c1ByaXZhdGVNZW1iZXIoJ3Rlc3QnKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAg
ICAgYWNjZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsKKyAg
ICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIo
J3Rlc3QnKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzIGIvSlNUZXN0cy9zdHJlc3Mv
cHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKaW5kZXggNjRjZTBlMGFm
ODA1NzhlODk3MTZhMTY3MmVkYzE3NzMwNWIwNjRmMy4uM2VhOWM3ZDQzYzNkYWMxNWUwZjhkMDkz
M2E5MjVmZTgxNjVkMDdkYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMKQEAgLTIxLDMgKzIxLDM2IEBAIGxl
dCBhc3NlcnQgPSB7CiAgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxNZXRob2RGcm9tRXZhbCgp
LCAndGVzdCcpOwogfSkoKTsKIAorKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgZ2V0ICNtKCkgeworICAgICAgICAgICAgcmV0dXJuICd0ZXN0JzsKKyAgICAgICAgfQorCisg
ICAgICAgIGNhbGxHZXR0ZXJGcm9tRXZhbCgpIHsKKyAgICAgICAgICAgIGxldCBzZWxmID0gdGhp
czsKKyAgICAgICAgICAgIHJldHVybiBldmFsKCdzZWxmLiNtJyk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmNhbGxHZXR0
ZXJGcm9tRXZhbCgpLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRoaXMuX3YgPSB2OworICAg
ICAgICB9CisKKyAgICAgICAgY2FsbFNldHRlckZyb21FdmFsKHYpIHsKKyAgICAgICAgICAgIGxl
dCBzZWxmID0gdGhpczsKKyAgICAgICAgICAgIGV2YWwoJ3NlbGYuI20gPSB2Jyk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYy5jYWxsU2V0dGVyRnJvbUV2
YWwoJ3Rlc3QnKQorICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2
YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1uYW1lcy1hdmFpbGFibGUtb24tZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMTc3ZjBkZGRiMTlmY2E4ZmMyZTI2YzRlYThjYWQ0YmM3ODRlMzQ5MgotLS0g
L2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9u
LWV2YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzCkBAIC0wLDAgKzEsMzEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAo
bGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
cmhzICsgIiBidWcgZ290OiAiICsgbGhzKTsKKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAg
IGZpZWxkID0gZXZhbCgndGhpcy4jbSgpJyk7CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5j
dGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0
JzsgfQorCisgICAgICAgIGZpZWxkID0gZXZhbCgndGhpcy4jbScpOworICAgIH0KKworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9
KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1j
aGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjZmMjNmNmJmOGU0MjFlYzExMzAzOTE4NjM1OThhNGI0NDdiNTk4YzQKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVjay5q
cwpAQCAtMCwwICsxLDEwMCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRo
b2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxo
cywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0s
CisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQg
dGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgbGV0IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7CisgICAgICAg
IGNsYXNzIEMgeworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAg
ICAgICAgICAgYWNjZXNzKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICAgICAg
cmV0dXJuIGM7CisgICAgfTsKKworICAgIGxldCBjMSA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xh
c3MoKTsKKyAgICBsZXQgYzIgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7CisKKyAgICBj
MS5hY2Nlc3MoYzEsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMS5fdiwgJ3Rlc3Qn
KTsKKyAgICBjMi5hY2Nlc3MoYzIsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMi5f
diwgJ3Rlc3QnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsK
KyAgICAgICAgYzEuYWNjZXNzKGMyLCAnZm9vJyk7CisgICAgfSk7CisKKyAgICBhc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMyLmFjY2VzcyhjMSwgJ2Zvbycp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBTIHsKKyAgICAg
ICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHYgfQorCisgICAgICAgIHN1cGVyQWNjZXNzKHYpIHsg
dGhpcy4jbSA9IHY7IH0KKyAgICB9CisKKyAgICBjbGFzcyBDIGV4dGVuZHMgUyB7CisgICAgICAg
IHNldCAjbSh2KSB7IHRoaXMuX3UgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzKHYpIHsKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBj
ID0gbmV3IEMoKTsKKworICAgIGMuYWNjZXNzKCd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLl91LCAndGVzdCcpOworCisgICAgYy5zdXBlckFjY2Vzcygnc3VwZXIgY2xhc3MnKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdzdXBlciBjbGFzcycpOworCisgICAgbGV0IHMgPSBu
ZXcgUygpOworICAgIHMuc3VwZXJBY2Nlc3MoJ3N1cGVyIGNsYXNzJykKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKHMuX3YsICdzdXBlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcy5jYWxsKHMsICdmb28nKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzKG8sIHYpIHsKKyAgICAgICAg
ICAgIHJldHVybiBvLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBjLmFjY2VzcyhjLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5f
diwgJ3Rlc3QnKTsKKworICAgIGxldCBvID0ge307CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcyhvLCAnZm9vJyk7CisgICAgfSk7Cit9
KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1j
bGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI2ZGI4OWQ3M2Y4MTdlYmFiYTViMWEwMjQyMTdjZTI5NWU3OTdhM2MKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5q
cwpAQCAtMCwwICsxLDE1NSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRo
b2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxo
cywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0s
CisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0
cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAg
aWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQg
dGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7Cisg
ICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAg
ICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAg
ICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQg
YyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBpbm5lckIubWV0
aG9kKGMsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworfSko
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsg
dGhpcy5fdiA9IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisg
ICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAg
ICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgbSgpIHsg
cmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAg
IGlubmVyQi5tZXRob2QoaW5uZXJCLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5u
ZXJCLm0sICd0ZXN0Jyk7CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsK
KyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAg
IHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4j
bSA9IHY7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYp
IHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChp
bm5lckIpOworICAgIH0pOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7
IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAg
ICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgI20o
KSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ2Zv
bycpOworICAgIH0pOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlw
ZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2
KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0K
KworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAg
ICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0ICNt
KHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgaW5uZXJCLm1ldGhvZChp
bm5lckIsICd0ZXN0MjYyJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIuX3YsICd0ZXN0
MjYyJyk7CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMsICdmb28nKTsKKyAgICB9KTsK
K30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVz
dHMvdGVzdDI2Mi9jb25maWcueWFtbAppbmRleCA1MTVkYTNjZGI3OTBlYTdkNzM2Zjg2YWM3M2Yz
MTg2N2RiYjllZTE3Li40MTE2Njc2ZGQxZWE4NjQzMTU4NjQwOTVlNTQ2MWQxOTBkNmU1YmExIDEw
MDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCkBAIC00LDYgKzQsNyBAQCBmbGFnczoKICAgV2Vha1JlZjogdXNlV2Vh
a1JlZnMKICAgRmluYWxpemF0aW9uUmVnaXN0cnk6IHVzZVdlYWtSZWZzCiAgIGNsYXNzLWZpZWxk
cy1wcml2YXRlOiB1c2VQcml2YXRlQ2xhc3NGaWVsZHMKKyAgY2xhc3MtbWV0aG9kcy1wcml2YXRl
OiB1c2VQcml2YXRlTWV0aG9kcwogICBjbGFzcy1zdGF0aWMtZmllbGRzLXB1YmxpYzogdXNlUHVi
bGljU3RhdGljQ2xhc3NGaWVsZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wcml2YXRlOiB1c2VQ
cml2YXRlU3RhdGljQ2xhc3NGaWVsZHMKICAgSW50bC5EYXRlVGltZUZvcm1hdC1kYXlQZXJpb2Q6
IHVzZUludGxEYXRlVGltZUZvcm1hdERheVBlcmlvZApAQCAtMTksNyArMjAsNiBAQCBza2lwOgog
ICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKICAgICAtIGxlZ2FjeS1yZWdleHAKIAotICAgIC0gY2xh
c3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtbWV0aG9kcy1wcml2YXRlCiAg
ICAgLSBjbGVhbnVwU29tZQogICAgIC0gaG9zdC1nYy1yZXF1aXJlZAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419994</attachid>
            <date>2021-02-11 08:47:33 -0800</date>
            <delta_ts>2021-02-11 15:29:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194435-20210211134731.patch</filename>
            <type>text/plain</type>
            <size>58248</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWIwMmZhMTIzZDg5YjM2OTdlZDZhNWE1YmI0N2ExOWY2YzNkNzI1Li41MzQ5MjZmNmMzMDM4NDMx
ODVhYWYzNjFiZmNiYTEwZmQ2M2UyOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDItMTAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgaW5zdGFuY2UgcHJpdmF0ZSBnZXR0ZXJzIGFuZAorICAg
ICAgICBzZXR0ZXJzIGZvbGxvd2luZyB0aGUgcHJvcG9zYWwgb24gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy4KKyAgICAgICAgUHJpdmF0ZSBhY2Nlc3NvcnMgYWxzbyB1
c2UgdGhlIHByaXZhdGUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtIG9mCisgICAgICAgIHByaXZhdGUg
bWV0aG9kcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBhcmUgdXNpbmcgYm90aAorICAgICAgICBgb3Bf
c2V0X3ByaXZhdGVfYnJhbmRgIGFuZCBgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gcGVyZm9y
bSBicmFuZAorICAgICAgICBjaGVja3MuIEFjY2Vzc29ycyBhcmUgYWxzbyBzdG9yZWQgb24gY2xh
c3MgbGV4aWNhbCBzY29wZSBhcyBhIHBhaXIgb2YKKyAgICAgICAgYGdldHRlcmAgYW5kIGBzZXR0
ZXJgLiBUaGlzIGlzIGRvbmUgY3JlYXRpbmcgYSBuZXcgYEpTT2JqZWN0YCBhbmQKKyAgICAgICAg
c3RvcmluZyB0aGUgYGdldHRlcmAgb24gYGdldGAgcHJvcGVydHksIGFuZCBgc2V0dGVyYCBvbiBg
c2V0YAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBkZXNpZ25lZCBpbiBzdWNoIHdheSB0aGF0
IHdlIGNhbiBhbHdheXMgaGl0IElDIGZhc3QKKyAgICAgICAgcGF0aCBvbiBgZ2V0X2J5X2lkX2Rp
cmVjdGAgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSwgYW5kIGFsc28gdG8gYWxsb3cKKyAgICAgICAg
Y29uc3RhbnQgZm9sZGluZyBvZiBhY2Nlc3NvcnMgb24gREZHL0ZUTCwgc2luY2UgYWNlc3NvcnMg
b2JqZWN0cyBhcmUKKyAgICAgICAgZ29pbmcgdG8gYmUgY29uc3RhbnQgb25jZSBjcmVhdGVkLgor
CisgICAgICAgIEZvciByZWZlcmVuY2UsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBieXRlY29kZSBm
b3IgYSBwcml2YXRlIGdldHRlcgorICAgICAgICBhY2Nlc3M6CisKKyAgICAgICAgYGBgCisgICAg
ICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkgey4uLn0KKyAgICAgICAgICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBCeXRlY29kZSBmb3IgY2xhc3MgZGVj
bGFyYXRpb246CisKKyAgICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICBuZXdfb2JqZWN0
ICAgICAgICAgZHN0OmxvYzEyLCBpbmxpbmVDYXBhY2l0eToyIC8vIHRoaXMgaXMgdGhlIG9iamVj
dCB0byBzdG9yZSBnZXR0ZXIgYW5kIHNldHRlciBwYWlyCisgICAgICAgIG5ld19mdW5jX2V4cCAg
ICAgICBkc3Q6bG9jMTMsIHNjb3BlOmxvYzQsIGZ1bmN0aW9uRGVjbDoiZ2V0ICNtKCkgey4uLn0i
CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAgICBiYXNlOmxvYzEzLCBwcm9wZXJ0eTpAaG9tZU9i
amVjdCwgdmFsdWU6bG9jMTEsIGZsYWdzOlN0cmljdAorICAgICAgICBwdXRfYnlfaWQgICAgICAg
ICAgYmFzZTpsb2MxMiwgcHJvcGVydHk6QGdldCwgdmFsdWU6bG9jMTMsIGZsYWdzOklzRGlyZWN0
fFN0cmljdAorICAgICAgICBwdXRfdG9fc2NvcGUgICAgICAgc2NvcGU6bG9jNCwgdmFyOiNtLCB2
YWx1ZTpsb2MxMiAvLyBsb2M0IGlzIHRoZSBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgICAgIC4u
LgorCisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBgYWNjZXNzKClgOgorCisg
ICAgICAgIGBgYAorICAgICAgICAuLi4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIGRzdDps
b2M3LCBzY29wZTpsb2M0LCB2YXI6IiNtIiwgcmVzb2x2ZVR5cGU6R2xvYmFsUHJvcGVydHksIGxv
Y2FsU2NvcGVEZXB0aDowCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICBkc3Q6bG9jOCwgc2Nv
cGU6bG9jNywgdmFyOkBwcml2YXRlQnJhbmQKKyAgICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCBi
YXNlOnRoaXMsIGJyYW5kOmxvYzgKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRzdDpsb2M4
LCBzY29wZTpsb2M3LCB2YXI6IiNtIgorICAgICAgICBnZXRfYnlfaWRfZGlyZWN0ICAgZHN0Omxv
YzksIGJhc2U6bG9jOCwgcHJvcGVydHk6QGdldAorICAgICAgICBtb3YgICAgICAgICAgICAgICAg
ZHN0OmxvYzEwLCBzcmM6dGhpcworICAgICAgICBjYWxsICAgICAgICAgICAgICAgZHN0OmxvYzYs
IGNhbGxlZTpsb2M5LCBhcmdjOjEsIGFyZ3Y6MTYKKyAgICAgICAgLi4uCisKKyAgICAgICAgYGBg
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZVNldHRlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3Rh
bnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlW
YWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0
ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVTZXR0ZXIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZUdldHRlciBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2
YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJ
c1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1NldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzR2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlTWV0aG9kT3JBY2Vz
c29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKToKKwogMjAyMS0w
Mi0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBj
cmFzaCB3aGVuIHJlcGFyc2luZyBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgdGhlIHBhcnNpbmcgaW52
YXJpYW50IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZTU3MTllZjgyNThmM2IyOWZl
NjBkNzZkYjIwMmQyZjliMjhhNTdlLi5iZTIxZTliODdiOGNhZDIxZDEwMTMwMWIzODE4OWIyNWNj
N2U5YTliIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTkwNCw2ICsxOTA0LDE1IEBAIGJvb2wgQnl0
ZWNvZGVHZW5lcmF0b3I6Omluc3RhbnRpYXRlTGV4aWNhbFZhcmlhYmxlcyhjb25zdCBWYXJpYWJs
ZUVudmlyb25tZW50JiBsCiAgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVO
YW1lKGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzRGVjbGFyZWQpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKGVudHJ5LnZhbHVlLmlz
UHJpdmF0ZU1ldGhvZCgpKQogICAgICAgICAgICAgICAgIHN5bWJvbFRhYmxlLT5hZGRQcml2YXRl
TmFtZShlbnRyeS5rZXkuZ2V0KCksIFByaXZhdGVOYW1lRW50cnkoUHJpdmF0ZU5hbWVFbnRyeTo6
VHJhaXRzOjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc01ldGhvZCkp
OworICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlR2V0dGVyKCkgfHwg
ZW50cnkudmFsdWUuaXNQcml2YXRlU2V0dGVyKCkpIHsKKyAgICAgICAgICAgICAgICB1aW50MTZf
dCB0cmFpdHMgPSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQ7CisgICAgICAg
ICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZUdldHRlcigpKQorICAgICAgICAgICAg
ICAgICAgICB0cmFpdHMgfD0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcjsKKyAg
ICAgICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRlU2V0dGVyKCkpCisgICAgICAg
ICAgICAgICAgICAgIHRyYWl0cyB8PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVy
OworCisgICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVudHJ5Lmtl
eS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeSh0cmFpdHMpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgfQogICAgIH0KICAgICByZXR1cm4gaGFzQ2FwdHVyZWRWYXJpYWJsZXM7CkBAIC0yOTQzLDYg
KzI5NTIsMzAgQEAgYm9vbCBCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9kKGNvbnN0
IElkZW50aWZpZXImIGlkZW50KQogICAgIHJldHVybiBmYWxzZTsKIH0KIAorYm9vbCBCeXRlY29k
ZUdlbmVyYXRvcjo6aXNQcml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorewor
ICAgIGZvciAodW5zaWduZWQgaSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkg
eworICAgICAgICBhdXRvJiBtYXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOworICAgICAgICBh
dXRvIGl0ID0gbWFwLmZpbmQoaWRlbnQuaW1wbCgpKTsKKyAgICAgICAgaWYgKGl0ICE9IG1hcC5l
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBpdC0+dmFsdWUuaXNTZXR0ZXIoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gZmFsc2U7Cit9CisKK2Jvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKK3sKKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKKyAgICAgICAgYXV0byYgbWFw
ID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKKyAgICAgICAgYXV0byBpdCA9IG1hcC5maW5kKGlk
ZW50LmltcGwoKSk7CisgICAgICAgIGlmIChpdCAhPSBtYXAuZW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gaXQtPnZhbHVlLmlzR2V0dGVyKCk7CisgICAgfQorCisgICAgcmV0dXJuIGZhbHNlOwor
fQorCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0
IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQogewogICAgIGlmICghZW52aXJv
bm1lbnQgfHwgIWVudmlyb25tZW50LT5zaXplKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYmJmYjU2ODE5
OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNS4uOGIxM2VjODA2ZGVjNDk1NjA5ZjRjODcw
NmI4NzA5M2VmNjRmZjU1OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTI2NCw2ICsxMjY0LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KIAogICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChj
b25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIGJvb2wgaXNQcml2YXRlU2V0dGVyKGNvbnN0IElk
ZW50aWZpZXImKTsKKyAgICAgICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmll
ciYpOwogCiAgICAgICAgIHZvaWQgcHVzaFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRl
TmFtZUVudmlyb25tZW50Kik7CiAgICAgICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29k
ZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKaW5kZXggNGMwOGEzM2QzZjg3YmI0MmJlM2Y4ZjZjZGJhNWZhMDM3MDA3OGU1Zi4uZTQx
MTc5ZmJiNGEzZWUwMjBiMWU5MGY1ZjU3NjY4ZTk2OWRjMTIxOSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTc5LDEz
ICs1NzksNjUgQEAgdm9pZCBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVs
ZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IKIAogUmVnaXN0ZXJJRCogUHJvcGVy
dHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2lzdGVySUQqIGRzdE9yQ29uc3RydWN0b3IsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgVmVjdG9y
PEpTVGV4dFBvc2l0aW9uPiogaW5zdGFuY2VGaWVsZExvY2F0aW9ucywgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiogc3RhdGljRmllbGRMb2NhdGlvbnMpCiB7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8
UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKKyAgICB0eXBl
ZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlm
aWVyUmVwSGFzaD4gR2V0dGVyU2V0dGVyTWFwOworICAgIEdldHRlclNldHRlck1hcCBwcml2YXRl
QWNjZXNzb3JNYXA7CisKICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAgICBSZWdp
c3RlcklEKiBkc3QgPSBudWxscHRyOworICAgIGZvciAoOyBwOyBwID0gcC0+bV9uZXh0KSB7Cisg
ICAgICAgIGlmICghKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdl
dHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpKQorICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgLy8gV2UgZ3JvdXAgcHJpdmF0ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIHRv
IHN0b3JlIHRoZW0gaW4gYSBvYmplY3QKKyAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyKHAt
Pm1fbm9kZSwgc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlKj4obnVsbHB0cikpOworICAgICAgICBH
ZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3VsdCByZXN1bHQgPSBwcml2YXRlQWNjZXNzb3JNYXAuYWRk
KHAtPm1fbm9kZS0+bmFtZSgpLT5pbXBsKCksIHBhaXIpOworICAgICAgICBhdXRvJiByZXN1bHRQ
YWlyID0gcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZTsKKyAgICAgICAgLy8gSWYgdGhlIG1hcCBhbHJl
YWR5IGNvbnRhaW5zIGFuIGVsZW1lbnQgd2l0aCBub2RlLT5uYW1lKCksCisgICAgICAgIC8vIHdl
IG5lZWQgdG8gc3RvcmUgdGhpcyBub2RlIGluIHRoZSBzZWNvbmQgcGFydC4KKyAgICAgICAgaWYg
KCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgIHJlc3VsdFBhaXIuc2Vjb25kID0gcC0+
bV9ub2RlOworICAgICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICAvLyBUaGVuIHdlIGRlY2xh
cmUgcHJpdmF0ZSBhY2Nlc3NvcworICAgIGZvciAoYXV0byYgaXQgOiBwcml2YXRlQWNjZXNzb3JN
YXApIHsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVy
YXRvci5lbWl0TmV3T2JqZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CisKKyAgICAgICAg
R2V0dGVyU2V0dGVyUGFpciBwYWlyID0gaXQudmFsdWU7CisgICAgICAgIGlmIChwYWlyLmZpcnN0
KSB7CisgICAgICAgICAgICBkc3QgPSBwYWlyLmZpcnN0LT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0
eSgpID8gcHJvdG90eXBlIDogZHN0T3JDb25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Tm9kZShwYWlyLmZpcnN0LT5tX2Fzc2ln
bik7CisgICAgICAgICAgICBpZiAocGFpci5maXJzdC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAg
ICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBk
c3QpOworICAgICAgICAgICAgYXV0byBzZXR0ZXJPckdldHRlcklkZW50ID0gcGFpci5maXJzdC0+
bV90eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyCisgICAgICAgICAgICAgICAgPyBn
ZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkK
KyAgICAgICAgICAgICAgICA6IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVz
KCkuc2V0UHJpdmF0ZU5hbWUoKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0
QnlJZChnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIHNldHRlck9yR2V0dGVySWRlbnQsIHZhbHVlLmdl
dCgpKTsKKyAgICAgICAgfQogCisgICAgICAgIGlmIChwYWlyLnNlY29uZCkgeworICAgICAgICAg
ICAgZHN0ID0gcGFpci5zZWNvbmQtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5
cGUgOiBkc3RPckNvbnN0cnVjdG9yOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZh
bHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKHBhaXIuc2Vjb25kLT5tX2Fzc2lnbik7CisgICAgICAg
ICAgICBpZiAocGFpci5zZWNvbmQtPm5lZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICAg
ICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2YWx1ZS5nZXQoKSwgZHN0KTsKKyAgICAg
ICAgICAgIGF1dG8gc2V0dGVyT3JHZXR0ZXJJZGVudCA9IHBhaXIuc2Vjb25kLT5tX3R5cGUgJiBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIKKyAgICAgICAgICAgICAgICA/IGdlbmVyYXRvci5w
cm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKQorICAgICAgICAg
ICAgICAgIDogZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2
YXRlTmFtZSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdldHRl
clNldHRlck9iai5nZXQoKSwgc2V0dGVyT3JHZXR0ZXJJZGVudCwgdmFsdWUuZ2V0KCkpOworICAg
ICAgICB9CisKKyAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpwYWly
LmZpcnN0LT5uYW1lKCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJh
dG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFyLCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIERvTm90VGhy
b3dJZk5vdEZvdW5kLCBJbml0aWFsaXphdGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOwor
ICAgIH0KKyAgICAKICAgICAvLyBGYXN0IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVn
dWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgotICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlw
ZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7CisgICAgZm9yIChw
ID0gdGhpczsgcCAmJiAocC0+bV9ub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50
KTsgcCA9IHAtPm1fbmV4dCkgewogICAgICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VD
bGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCisgICAgICAg
IGlmIChwLT5tX25vZGUtPnR5cGUoKSAmIChQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIgfCBQ
cm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKICAg
ICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2
ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVyYXRvciwgKnAtPm1fbm9kZSk7CiAKQEAgLTYxMCw4ICs2
NjIsNiBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNv
ZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAvLyBhIGNvbXB1dGVkIHBy
b3BlcnR5IG9yIGEgc3ByZWFkLCBqdXN0IGVtaXQgZXZlcnl0aGluZyBhcyB0aGF0IG1heSBvdmVy
cmlkZSBwcmV2aW91cyB2YWx1ZXMuCiAgICAgICAgIGJvb2wgY2FuT3ZlcnJpZGVQcm9wZXJ0aWVz
ID0gZmFsc2U7CiAKLSAgICAgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJv
cGVydHlOb2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVu
aXF1ZWRTdHJpbmdJbXBsKiwgR2V0dGVyU2V0dGVyUGFpciwgSWRlbnRpZmllclJlcEhhc2g+IEdl
dHRlclNldHRlck1hcDsKICAgICAgICAgR2V0dGVyU2V0dGVyTWFwIGluc3RhbmNlTWFwOwogICAg
ICAgICBHZXR0ZXJTZXR0ZXJNYXAgc3RhdGljTWFwOwogCkBAIC02NTEsNiArNzAxLDkgQEAgUmVn
aXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAgICAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xhc3NG
aWVsZCgpKQogICAgICAgICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJh
dG9yLCAqcC0+bV9ub2RlKTsKIAorICAgICAgICAgICAgaWYgKHAtPm1fbm9kZS0+dHlwZSgpICYg
KFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRl
cikpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgIGlmIChwLT5pc0lu
c3RhbmNlQ2xhc3NGaWVsZCgpKSB7CiAgICAgICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmll
bGRMb2NhdGlvbnMpOwogICAgICAgICAgICAgICAgIEFTU0VSVChub2RlLT5tX3R5cGUgJiBQcm9w
ZXJ0eU5vZGU6OkNvbnN0YW50KTsKQEAgLTc4Miw2ICs4MzUsOCBAQCB2b2lkIFByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0
b3IsIFJlZwogCiAgICAgaWYgKG5vZGUuaXNDbGFzc1Byb3BlcnR5KCkpIHsKICAgICAgICAgQVNT
RVJUKG5vZGUubmVlZHNTdXBlckJpbmRpbmcoKSk7CisgICAgICAgIEFTU0VSVCghKG5vZGUudHlw
ZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSk7CisgICAgICAgIEFTU0VSVCghKG5v
ZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKSk7CiAKICAgICAgICAgaWYg
KG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKSB7CiAgICAgICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKQEAgLTkx
OSw4ICs5NzQsOSBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5vZGU6OmVtaXRCeXRlY29kZShC
eXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcgogUmVnaXN0ZXJJRCogQmFzZURv
dE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVmUHRyPFJlZ2lzdGVySUQ+JiB0
aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigpKSB7Ci0gICAgICAgIGlmIChn
ZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkpIHsKLSAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyKCkpOworICAgICAgICBh
dXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAgICAgICBpZiAoZ2VuZXJhdG9y
LmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wg
PSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IHNjb3BlLmdldCgpKTsKQEAgLTkyOSw2ICs5ODUsMzEgQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJl
Z2kKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShkc3QsIHNj
b3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIH0KIAorICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZUdldHRlcihpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRl
QnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hl
Y2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJv
bVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJ
Zk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlv
biA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCks
IGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGlu
TmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJn
cyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50
aGlzUmVnaXN0ZXIoKSwgYmFzZSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLmVtaXRD
YWxsKGRzdCwgZ2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlvbiwgYXJncywg
bV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVidWdnYWJsZUNhbGw6Olllcyk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZVNldHRlcihpZGVu
dGlmaWVyTmFtZSkpIHsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBicmFuZCBj
aGVjayB0byBmb2xsb3cgdGhlIHNwZWMKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwor
CisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3Iu
ZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJp
dmF0ZUJyYW5kU3ltYm9sKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJy
b3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIGdldHRlciIpOworICAg
ICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9
IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FH
RSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNh
cHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC05NTcsNyArMTAzOCwyNSBAQCBSZWdpc3RlcklEKiBC
YXNlRG90Tm9kZTo6ZW1pdFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3Is
IFJlZ2lzdGVySQogewogICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBhdXRv
IGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOwotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlz
UHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgaWYgKGdlbmVyYXRvci5p
c1ByaXZhdGVTZXR0ZXIoaWRlbnRpZmllck5hbWUpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0
ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0g
Z2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBz
Y29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5k
KGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJP
YmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJp
dmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBu
dWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVy
KCksIGJhc2UpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lz
dGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9u
LCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2Fs
bDo6WWVzKTsKKworICAgICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGVHZXR0ZXIgPSBnZW5lcmF0b3IuaXNQcml2YXRlR2V0dGVyKGlkZW50
aWZpZXJOYW1lKTsKKyAgICAgICAgaWYgKGlzUHJpdmF0ZUdldHRlciB8fCBnZW5lcmF0b3IuaXNQ
cml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkgewogICAgICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRleCA0YmY5Mzg2ZjI2
ZjAyOTgzYjc4ODY5ZTRhMjUwMjVmNjBlYzhhYjM1Li4xNDMwZThkNDQ1ZDVhZmU5NjRkMWM1MTcz
YWRhMzk5ZGJkMGVjZmNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03
MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1l
bnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBj
bGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAg
ICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBH
ZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJl
YWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKKyAgICAg
ICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRl
ciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRl
RmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRlciA9IDI1NiwgUHJp
dmF0ZUdldHRlciA9IDUxMiB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlm
aWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRh
Zyk7CiAgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmlu
ZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTc0MCw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlz
SW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAg
ICAgYm9vbCBpc1N0YXRpY0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc1N0YXRpY0NsYXNz
UHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3Zl
cnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxp
Y2F0ZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAm
IChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQorICAgICAgICBib29sIGlzUHJpdmF0
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9k
IHwgUHJpdmF0ZUdldHRlciB8IFByaXZhdGVTZXR0ZXIpOyB9CiAgICAgICAgIGJvb2wgaGFzQ29t
cHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wg
aXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBo
YXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGlj
YXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzYwLDcgKzc2
MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7
CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Np
b25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlOworICAgICAgICB1bnNp
Z25lZCBtX3R5cGUgOiAxMDsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6
IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVz
ZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRU
YWcgOiAyOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGVjYTVi
YjMwNTk1OTZhODQ2NTI2ZGZjNzU3MTExZGE2ZjU0NjMzNzguLjJhMDE2MGQ4MGJlYWI2ZWQ5YmFm
ODkwMWU3ODg5MjY0NGVhZDE3ZTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNl
ci5jcHAKQEAgLTI4NzksNyArMjg3OSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4g
VHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAg
Y2xhc3NTY29wZS0+c2V0SXNMZXhpY2FsU2NvcGUoKTsKICAgICBjbGFzc1Njb3BlLT5wcmV2ZW50
VmFyRGVjbGFyYXRpb25zKCk7CiAgICAgY2xhc3NTY29wZS0+c2V0U3RyaWN0TW9kZSgpOwotICAg
IGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gZmFsc2U7CisgICAgYm9vbCBkZWNsYXJlc1By
aXZhdGVNZXRob2RPckFjY2Vzc29yID0gZmFsc2U7CiAgICAgbmV4dCgpOwogCiAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRShyZXF1aXJlbWVudHMgIT0gRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpV
bm5hbWVkLCAiQ3VycmVudGx5LCB0aGVyZSBpcyBubyBjYWxsZXIgdGhhdCB1c2VzIEZ1bmN0aW9u
TmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCBmb3IgY2xhc3Mgc3ludGF4LiIpOwpAQCAtMjk3OCw3
ICsyOTc4LDcgQEAgcGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBib29sIGVzY2FwZWQgPSBtX3Rv
a2VuLm1fZGF0YS5lc2NhcGVkOwogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAg
ICAgIG5leHQoKTsKLSAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2Rl
OjpNZXRob2RNb2RlICYmICFlc2NhcGVkICYmIChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8
fCBtYXRjaChTVFJJTkcpIHx8IG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0
Y2goQklHSU5UKSB8fCBtYXRjaChPUEVOQlJBQ0tFVCkpKSB7CisgICAgICAgICAgICBpZiAocGFy
c2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiAhZXNjYXBlZCAmJiAobWF0
Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VCTEUp
IHx8IG1hdGNoKElOVEVHRVIpIHx8IG1hdGNoKEJJR0lOVCkgfHwgbWF0Y2goT1BFTkJSQUNLRVQp
IHx8IChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkp
KSB7CiAgICAgICAgICAgICAgICAgaXNHZXR0ZXIgPSAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5n
ZXQ7CiAgICAgICAgICAgICAgICAgaXNTZXR0ZXIgPSAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5z
ZXQ7CiAgICAgICAgICAgICB9CkBAIC0zMDA2LDggKzMwMDYsOSBAQCBwYXJzZU1ldGhvZDoKICAg
ICAgICAgICAgIEFTU0VSVChpZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAg
ICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7
CisgICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRU
YWc6OlN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIHByaXZhdGUgbWV0aG9kIik7CiAg
ICAgICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2
YXRlTWV0aG9kKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURl
Y2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xhcmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKLSAgICAg
ICAgICAgICAgICBkZWNsYXJlc1ByaXZhdGVNZXRob2QgPSB0cnVlOworICAgICAgICAgICAgICAg
IGRlY2xhcmVzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IgPSB0cnVlOwogICAgICAgICAgICAgICAg
IHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5v
ZGU6OlByaXZhdGVNZXRob2QpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQpAQCAtMzAyNSw4ICszMDI2LDIxIEBAIHBhcnNlTWV0aG9kOgogCiAgICAgICAgIFRyZWVQcm9w
ZXJ0eSBwcm9wZXJ0eTsKICAgICAgICAgaWYgKGlzR2V0dGVyIHx8IGlzU2V0dGVyKSB7Ci0gICAg
ICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlICYgflBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFByb3BlcnR5Tm9kZTo6R2V0dGVy
IDogUHJvcGVydHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQ
cml2YXRlTWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAg
IGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICAgICAgaWYgKGlzU2V0
dGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZVNldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgc2V0dGVyIHdpdGggYW4g
YWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRl
TWV0aG9kT3JBY2Nlc3NvciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0
aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVT
ZXR0ZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNl
bWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQp
ICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xh
cmVkIHByaXZhdGUgZ2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAg
ICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvciA9IHRydWU7CisgICAg
ICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5
cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFBy
b3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAg
ICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwg
KGlzR2V0dGVyID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlcikp
OworICAgICAgICAgICAgfQogICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNldHRl
cihjb250ZXh0LCB0eXBlLCBtZXRob2RTdGFydCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0YWcp
OwogICAgICAgICAgICAgZmFpbElmRmFsc2UocHJvcGVydHksICJDYW5ub3QgcGFyc2UgdGhpcyBt
ZXRob2QiKTsKICAgICAgICAgfSBlbHNlIGlmICghbWF0Y2goT1BFTlBBUkVOKSAmJiAodGFnID09
IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgfHwgT3B0aW9uczo6dXNlUHVibGljU3RhdGljQ2xh
c3NGaWVsZHMoKSkgJiYgcGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkg
ewpAQCAtMzEwMCw3ICszMTE0LDcgQEAgcGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQg
PSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zmc2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NF
QlJBQ0UsICJFeHBlY3RlZCBhIGNsb3NpbmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCi0g
ICAgaWYgKGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCkgeworICAgIGlmIChkZWNsYXJlc1ByaXZhdGVN
ZXRob2RPckFjY2Vzc29yKSB7CiAgICAgICAgIElkZW50aWZpZXIgcHJpdmF0ZUJyYW5kSWRlbnRp
ZmllciA9IG1fdm0ucHJvcGVydHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJp
dmF0ZU5hbWUoKTsKICAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVz
dWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRl
bnRpZmllciwgdHJ1ZSk7CiAgICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQs
IGRlY2xhcmF0aW9uUmVzdWx0ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CkBAIC0zMTU1
LDcgKzMxNjksMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU291cmNlRWxl
bWVudHMgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlQ2xhc3NGaWUKICAgICAgICAgICAgIHN3aXRj
aCAobV90b2tlbi5tX3R5cGUpIHsKICAgICAgICAgICAgIGNhc2UgUFJJVkFURU5BTUU6CiAgICAg
ICAgICAgICAgICAgdHlwZSA9IERlZmluZUZpZWxkTm9kZTo6VHlwZTo6UHJpdmF0ZU5hbWU7Ci0g
ICAgICAgICAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3Rv
a2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOworICAgICAg
ICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGNh
c2UgU1RSSU5HOgogICAgICAgICAgICAgY2FzZSBJREVOVDoKICAgICAgICAgICAgIG5hbWVkS2V5
d29yZDoKQEAgLTQ0MjgsMTIgKzQ0NDUsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVy
PiBUcmVlUHJvcGVydHkgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKIAog
ICAgIEpTVG9rZW5Mb2NhdGlvbiBsb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogCi0gICAgaWYg
KG1hdGNoU3BlY0lkZW50aWZpZXIoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1fdG9rZW4ubV90eXBl
ICYgS2V5d29yZFRva2VuRmxhZykgeworICAgIGJvb2wgbWF0Y2hlc1ByaXZhdGVOYW1lID0gbWF0
Y2goUFJJVkFURU5BTUUpOworICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2go
U1RSSU5HKSB8fCAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaGVzUHJpdmF0
ZU5hbWUpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykgewogICAgICAgICBz
dHJpbmdQcm9wZXJ0eU5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3RyaW5nUHJv
cGVydHlOYW1lID09IG1fdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLAogICAgICAgICAgICAg
IkNhbm5vdCBkZWNsYXJlIGEgc3RhdGljIG1ldGhvZCBuYW1lZCAncHJvdG90eXBlJyIpOwogICAg
ICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2Ug
JiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9y
LAogICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgZ2V0dGVyIG9yIHNldHRlciBuYW1lZCAn
Y29uc3RydWN0b3InIik7CisKKyAgICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAg
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Ok5vLCAi
Q2Fubm90IGRlY2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0ZXIgb3V0c2lkZSBhIGNsYXNz
Iik7CisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRh
Zzo6U3RhdGljLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0ZXIgYXMg
c3RhdGljIik7CisgICAgICAgIH0KICAgICAgICAgbmV4dCgpOwogICAgIH0gZWxzZSBpZiAobWF0
Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSkgewogICAgICAgICBudW1lcmljUHJvcGVydHlO
YW1lID0gbV90b2tlbi5tX2RhdGEuZG91YmxlVmFsdWU7CkBAIC00NDU0LDEwICs0NDc3LDE4IEBA
IHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUdldHRlclNldHRlcihUCiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5Q
QVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVmaW5pdGlvbiIp
OwogICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1f
cGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OkdldHRlck1vZGUpOwogICAgICAgICBmYWlsSWZG
YWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRz
OjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwg
Z2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6
TWV0aG9kKSksICJDYW5ub3QgcGFyc2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICB9IGVsc2Ug
eworICAgIH0gZWxzZSBpZiAodHlwZSAmIFByb3BlcnR5Tm9kZTo6U2V0dGVyKSB7CiAgICAgICAg
IGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0
IGZvciBzZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJz
ZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRl
ck1vZGUpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwg
RnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5k
LCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywg
RnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRl
ZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVT
ZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVk
IGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAg
ICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9k
ZSwgU291cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBh
cnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1l
ZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9y
U2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkp
LCAiQ2Fubm90IHBhcnNlIHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2Ug
aWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAgZmFpbElm
RmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHBy
aXZhdGUgZ2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFy
c2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpHZXR0
ZXJNb2RlKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQs
IEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2lu
ZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8s
IEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHByaXZhdGUg
Z2V0dGVyIGRlZmluaXRpb24iKTsKICAgICB9CiAKICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1l
KQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKaW5kZXggNjhlZmNhZGVhYTNmNjA5
NTNmZTk2Y2QyZWJmZDBkN2JhODU0NDk1NS4uNGU5NjY0ZmVjZmI2OTMzMDU1OGU3YTg2NzQ2YTJk
MmI2NmQ5YzU0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MTcs
NiArNTE3LDM0IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFy
YXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0
aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJp
YWJsZXMuZGVjbGFyZVByaXZhdGVTZXR0ZXIoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVz
dWx0KSB7CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRE
dXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVz
dWx0TWFzayBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAg
ICB7CisgICAgICAgIEFTU0VSVChtX2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlk
OworICAgICAgICBib29sIGFkZFJlc3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJp
dmF0ZUdldHRlcihpZGVudCk7CisKKyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAg
ICAgIHJlc3VsdCB8PSBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfQorCiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQ
cml2YXRlRmllbGQoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NF
UlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKaW5kZXggYzU5ZTA2OGFmNDgzM2QwZDM1OTM1YzE5NmQ5
MmQ2NWZmOWY4MGRiYS4uZTU4MWFmYWZmYmZhOGI3YmI5NGY5NGQ1ODdkYWQ5M2MxYzBlYmU3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5jcHAKQEAgLTEx
NSw0ICsxMTUsMTEgQEAgY29uc3QgSWRlbnRpZmllciYgSWRlbnRpZmllckFyZW5hOjptYWtlUHJp
dmF0ZUlkZW50aWZpZXIoVk0mIHZtLCBBU0NJSUxpdGVyYWwgcHIKICAgICByZXR1cm4gbV9pZGVu
dGlmaWVycy5sYXN0KCk7CiB9CiAKK2NvbnN0IElkZW50aWZpZXImIElkZW50aWZpZXJBcmVuYTo6
bWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiB2bSwgY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmll
cikKK3sKKyAgICBhdXRvIHN5bWJvbCA9IHZtLnByaXZhdGVTeW1ib2xSZWdpc3RyeSgpLnN5bWJv
bEZvcktleShpZGVudGlmaWVyLnN0cmluZygpKTsKKyAgICBtX2lkZW50aWZpZXJzLmFwcGVuZChJ
ZGVudGlmaWVyOjpmcm9tVWlkKHN5bWJvbCkpOworICAgIHJldHVybiBtX2lkZW50aWZpZXJzLmxh
c3QoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXJBcmVuYS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5o
CmluZGV4IGJlMjdmMzRiMWM4OTc3Mzk4ZTFmNDMzMWZiOTMxYTNlZWNjZjcwOWUuLjk2YTM5Yjkw
YzAxMDk3ZWRhNWNkNTZhNGQxMjIxZmQwYmZiOTdiOGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKQEAgLTUzLDYgKzUzLDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAgICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VCaWdJbnREZWNpbWFsSWRlbnRpZmllcihW
TSYsIGNvbnN0IElkZW50aWZpZXImLCB1aW50OF90IHJhZGl4KTsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciYgbWFrZU51bWVyaWNJZGVudGlmaWVyKFZNJiwgZG91YmxlIG51bWJlcik7CiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYsIEFTQ0lJTGl0
ZXJhbCwgdW5zaWduZWQpOworICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJpdmF0ZUlk
ZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICBwdWJsaWM6CiAgICAgICAg
IHN0YXRpYyBjb25zdCBpbnQgTWF4aW11bUNhY2hhYmxlQ2hhcmFjdGVyID0gMTI4OwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAK
aW5kZXggM2VjNTdjM2UyYWJhNWRiMzdiN2ZiNjJlM2M5ZjBhMTYzZmI1ZGU2Ny4uYTgxYmNkYzA2
OWE2ODk4ZGYwOGQ1NTNhNTU5NTdiN2Y2NjhjMzNmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCkBAIC0xMDQsNiArMTA0
LDEwMiBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtWYXJpYWJsZUFzRXhwb3J0ZWQo
Y29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZpbmRSZXN1bHQtPnZhbHVlLnNl
dElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJp
dmF0ZVNldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQor
eworICAgIGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVu
aXF1ZTxWYXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJl
c3VsdCA9IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAg
ICBpZiAoZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgewor
ICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcik7CisKKyAgICAg
ICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRy
eS5zZXRJc1ByaXZhdGVTZXR0ZXIoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAg
ICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVy
LCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZh
dGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQu
aXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBQcml2YXRlTmFtZUVudHJ5IGN1cnJlbnRFbnRyeSA9
IGZpbmRSZXN1bHQtPnZhbHVlOworICAgIGlmIChjdXJyZW50RW50cnkuaXNEZWNsYXJlZCgpKSB7
CisgICAgICAgIGlmIChjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSB8fCBjdXJyZW50RW50cnkuaXNN
ZXRob2QoKSB8fCAhY3VycmVudEVudHJ5LmlzR2V0dGVyKCkpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisg
ICAgICAgIEFTU0VSVChjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSk7CisgICAgICAgIFByaXZhdGVO
YW1lRW50cnkgbWV0YShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJh
aXRzOjpJc1NldHRlcik7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChp
ZGVudGlmaWVyLCBtZXRhKTsKKworICAgICAgICBhdXRvIGVudHJ5SXRlcmF0b3IgPSBtX21hcC5m
aW5kKGlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoZW50cnlJdGVyYXRvciAhPSBtX21hcC5l
bmQoKSk7CisgICAgICAgIGVudHJ5SXRlcmF0b3ItPnZhbHVlLnNldElzUHJpdmF0ZVNldHRlcigp
OworCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIGl0IHdhcyBwcmV2aW91
c2x5IHVzZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxl
RW52aXJvbm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOworICAg
IGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgbV9t
YXAuYWRkKGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50
cnkoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNs
YXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOworICAgIG1fcmFyZURh
dGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBuZXdFbnRyeSk7CisgICAgcmV0dXJu
IHRydWU7Cit9CisKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVHZXR0
ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKK3sKKyAgICBp
ZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFy
aWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICBhdXRvIGZpbmRSZXN1bHQgPSBt
X3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOworCisgICAgaWYgKGZp
bmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkpIHsKKyAgICAgICAg
UHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJl
ZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOworCisgICAgICAgIGF1dG8g
ZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICAgICAgZW50cnkuc2V0SXNQ
cml2YXRlR2V0dGVyKCk7CisgICAgICAgIGVudHJ5LnNldElzQ29uc3QoKTsKKyAgICAgICAgZW50
cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkp
OworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMu
YWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAgICByZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50
cnk7CisgICAgfQorCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBjdXJyZW50RW50cnkgPSBmaW5kUmVz
dWx0LT52YWx1ZTsKKyAgICBpZiAoY3VycmVudEVudHJ5LmlzRGVjbGFyZWQoKSkgeworICAgICAg
ICBpZiAoY3VycmVudEVudHJ5LmlzR2V0dGVyKCkgfHwgY3VycmVudEVudHJ5LmlzTWV0aG9kKCkg
fHwgIWN1cnJlbnRFbnRyeS5pc1NldHRlcigpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAv
LyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHByaXZhdGUgbmFtZS4KKworICAgICAgICBB
U1NFUlQoY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5
IG1ldGEoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNH
ZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmll
ciwgbWV0YSk7CisKKyAgICAgICAgYXV0byBlbnRyeUl0ZXJhdG9yID0gbV9tYXAuZmluZChpZGVu
dGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5SXRlcmF0b3IgIT0gbV9tYXAuZW5kKCkpOwor
ICAgICAgICBlbnRyeUl0ZXJhdG9yLT52YWx1ZS5zZXRJc1ByaXZhdGVHZXR0ZXIoKTsKKworICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvLyBpdCB3YXMgcHJldmlvdXNseSB1c2Vk
LCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25t
ZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZhdGVHZXR0ZXIoKTsKKyAgICBlbnRyeS5z
ZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgIG1fbWFwLmFkZChp
ZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICBQcml2YXRlTmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJl
bnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQ
cml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3RW50cnkpOworICAgIHJldHVybiB0cnVlOwor
fQorCiBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX3Jh
cmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaAppbmRleCBmNmQzNThiMTk3MDAyZDIwZGU5N2Y0MDY5M2MzM2Y2OWQ1NTczODJi
Li5hMzVkMmY1NWI2N2Y4MWE4NDU2MWY5Y2FjYjBhZTRjZmQzNjY0YzcwIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDcs
NiArNDcsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlU2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlU2V0dGVyOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzUHJpdmF0ZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJp
dmF0ZUdldHRlcjsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7
IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29u
c3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC02MCw2ICs2Miw4IEBAIHB1YmxpYzoKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7
IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxk
OyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRz
IHw9IElzUHJpdmF0ZU1ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZh
dGVTZXR0ZXIoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNQcml2YXRlR2V0dGVyKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlR2V0dGVy
OyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5J
c1ZhcjsgfQogCkBAIC04NCw2ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzU2xvcHB5TW9k
ZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAogICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEg
PDwgMTAsCiAgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCisgICAgICAgIElzUHJp
dmF0ZUdldHRlciA9IDEgPDwgMTIsCisgICAgICAgIElzUHJpdmF0ZVNldHRlciA9IDEgPDwgMTMs
CiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtMTAxLDggKzEwNywx
MCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTWV0aG9kOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc0dldHRlcjsgfQogCi0gICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFj
ZXNzb3IoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpOyB9CisgICAgYm9vbCBpc1ByaXZhdGVN
ZXRob2RPckFjZXNzb3IoKSBjb25zdCB7IHJldHVybiBpc01ldGhvZCgpIHx8IGlzU2V0dGVyKCkg
fHwgaXNHZXR0ZXIoKTsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsg
bV9iaXRzIHw9IElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVk
KCkgeyBtX2JpdHMgfD0gSXNEZWNsYXJlZDsgfQpAQCAtMTE5LDYgKzEyNyw4IEBAIHB1YmxpYzoK
ICAgICAgICAgSXNVc2VkID0gMSA8PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAog
ICAgICAgICBJc01ldGhvZCA9IDEgPDwgMiwKKyAgICAgICAgSXNHZXR0ZXIgPSAxIDw8IDMsCisg
ICAgICAgIElzU2V0dGVyID0gMSA8PCA0LAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xOTUsNiAr
MjA1LDEyIEBAIHB1YmxpYzoKICAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElk
ZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50
aWZpZXIuaW1wbCgpKTsgfQogICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVm
UHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CiAKKyAgICBib29sIGRlY2xhcmVQ
cml2YXRlU2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xh
cmVQcml2YXRlU2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVBy
aXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7
CisKKyAgICBib29sIGRlY2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50
aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlR2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsg
fQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJp
bmdJbXBsPiYgaWRlbnRpZmllcik7CisKICAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0
ZUZpZWxkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiAgICAg
ewogICAgICAgICBhdXRvJiBtZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdl
dCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlv
bkhlbHBlcnMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVs
cGVycy5jcHAKaW5kZXggZDg3NDQ3OTRiYmIxYWQzMDMxZmI0OGFiYzY0ZWU1NTAzM2M2YmFiNS4u
MmRlZmVhMzdiMzZmMWRkMzUwMWUxOGNjMGZlMjI5YjNhNGU3NjA3MCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMzNiw3
ICszMzYsNyBAQCBKU09iamVjdCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlUHJpdmF0ZU1ldGhv
ZEFjY2Vzc0Vycm9yKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJu
IGNyZWF0ZVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3Mg
cHJpdmF0ZSBtZXRob2QiX3MpLCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsK
KyAgICByZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fu
bm90IGFjY2VzcyBwcml2YXRlIG1ldGhvZCBvciBhY2Vzc29yIl9zKSwgZGVmYXVsdFNvdXJjZUFw
cGVuZGVyLCBUeXBlTm90aGluZyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWluc3RhbGxQcml2
YXRlTWV0aG9kRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDQxZmYxNDI3NTMz
OTU4N2QxNDAxZjIxODkwNDNmN2YzYTNhOWJmNy4uMTU3YTQ0OTA0NGY4NzZjMGM5NzkxYzNjZGVk
NmJlZTVhOTIyMzY1NCAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMCBAQAorMjAyMS0wMi0xMCAgQ2FpbyBMaW1hICA8dGlj
YWlvbGltYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUg
YWNjZXNzb3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTQ0MzUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHN0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpz
OiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanM6
IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qczog
QWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVj
dC1ldmFsLmpzOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1l
dmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qczogQ29waWVkIGZyb20gSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMuCisgICAgICAg
ICogc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAq
IHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDItMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBDKysgaXRlcmF0aW9uIHNob3VsZCBzdXBw
b3J0IGZhc3QgaXRlcmF0b3IgcHJvdG9jb2wKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjNjYTNiZmI2NGYyYzNjNjJjOGFhMTEwNDBiMGMwOTBiMGY5YWY5YjcKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUt
ZWFybHktZXJyb3JzLmpzCkBAIC0wLDAgKzEsOTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsg
cmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3Ap
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRF
cnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2Vy
dC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBj
bGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAg
ICAgICBzZXQgI20odSkge30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJv
d3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgICNtOworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7
IH0KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAg
IHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQor
ICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRo
aXMuX3YgPSB2OyB9CisgICAgICAgICAgICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30p
OworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAK
KyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICAjbSgpIHt9CisgICAgICAgICAgICBnZXQg
I20oKSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhF
cnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAg
ICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAg
ICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAg
ICAgICAgICAgc2V0ICNtKCkge30KKyAgICAgICAgICAgICNtOworICAgICAgICB9CisgICAgYCk7
Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZh
bChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAg
ICAgIHNldCAjbSgpIHt9CisgICAgICAgICAgICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsK
K30pOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1j
aGVjay5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmNkNDE1ZGI4YWU2YmVkMDQ5MDA1YjczOTVlZmJhZTg1NTAxOTIxZmIKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5q
cwpAQCAtMCwwICsxLDkxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhv
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhz
LCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwK
KworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBp
ZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0
aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBsZXQgY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
Y2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAg
ICAgICAgICAgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBuZXcgQygpOworICAgIH0KKwor
ICAgIGxldCBjMSA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsKKyAgICBsZXQgYzIgPSBj
cmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLmFj
Y2VzcyhjMSksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoYzIpLCAn
dGVzdCcpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBjMS5hY2Nlc3MoYzIpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMi5hY2Nlc3MoYzEpOworICAgIH0pOworfSkoKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1
cm4gJ3N1cGVyIGNsYXNzJzsgfQorCisgICAgICAgIHN1cGVyQWNjZXNzKCkgeyByZXR1cm4gdGhp
cy4jbTsgfQorICAgIH0KKworICAgIGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgZ2V0ICNt
KCkgeyByZXR1cm4gJ3N1YmNsYXNzJzsgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcg
QygpOworCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmFjY2VzcygpLCAnc3ViY2xhc3MnKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKGMuc3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisKKyAg
ICBsZXQgcyA9IG5ldyBTKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShzLnN1cGVyQWNjZXNzKCks
ICdzdXBlciBjbGFzcycpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbChzKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0Jzsg
fQorCisgICAgICAgIGFjY2VzcyhvKSB7CisgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGMuYWNjZXNzKGMpLCAndGVzdCcpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKG8pOworICAgIH0p
OworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5u
ZXItY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4wNjBjZWRmZTI1NDZjYTUxMTg4NmExMGM2MmMyNWM0YTAwZDU1OGM1Ci0t
LSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xh
c3MuanMKQEAgLTAsMCArMSwxNTkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRl
TWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9u
IChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAg
ICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAg
ICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIg
YnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkg
eworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKwor
ICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChjKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRlciBj
bGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAg
ICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtID0gJ3Rlc3QnOwor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIg
PSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiks
ICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3Mn
KTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlu
bmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAg
ICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7
CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJC
ID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIp
LCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNz
Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBp
bm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZl
ciBleGVjdXRlJyk7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9k
KG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhvZCgp
IHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAg
bWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOwor
CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5l
ckIubWV0aG9kKGlubmVyQik7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0
aG9kKCksICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAnb3V0
ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbSgpOyB9CisK
KyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCAjbSgp
IHsgcmV0dXJuICd0ZXN0MjYyJzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0MjYyJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1
ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSwgJ2FjY2Vz
c2VkIGlubmVyIGNsYXNzIGdldHRlciBmcm9tIGFuIG9iamVjdCBvZiBvdXRlciBjbGFzcycpOwor
ICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5wcm90
b3R5cGUubWV0aG9kLmNhbGwoaW5uZXJCKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDFmNjU5
ODE4ZWVmYmM4YmEzMjY5YjM4ZTc0YTk2NDBhNTVkYjAwCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCkBAIC0wLDAgKzEsNjMg
QEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0
IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAg
ICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVk
OiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBm
dW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBv
cCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2Vv
ZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7Cisg
ICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVN
ZW1iZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoKTsKKyAgICB9KTsKK30p
KCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsg
cmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgeworICAg
ICAgICAgICAgdGhpcy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAg
ICAgYy5hY2Nlc3NQcml2YXRlTWVtYmVyKCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCisoZnVu
Y3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0Jzsg
fQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhpcy4j
bSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2
YXRlTWVtYmVyKCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCmluZGV4
IDY0Y2UwZTBhZjgwNTc4ZTg5NzE2YTE2NzJlZGMxNzczMDViMDY0ZjMuLjNlYTljN2Q0M2MzZGFj
MTVlMGY4ZDA5MzNhOTI1ZmU4MTY1ZDA3ZGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCkBAIC0yMSwzICsy
MSwzNiBAQCBsZXQgYXNzZXJ0ID0gewogICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0aG9k
RnJvbUV2YWwoKSwgJ3Rlc3QnKTsKIH0pKCk7CiAKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7CisgICAg
ICAgIH0KKworICAgICAgICBjYWxsR2V0dGVyRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQg
c2VsZiA9IHRoaXM7CisgICAgICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbScpOworICAgICAg
ICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5jYWxsR2V0dGVyRnJvbUV2YWwoKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7
CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aGlzLl92
ID0gdjsKKyAgICAgICAgfQorCisgICAgICAgIGNhbGxTZXR0ZXJGcm9tRXZhbCh2KSB7CisgICAg
ICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAgICAgICAgICBldmFsKCdzZWxmLiNtID0gdicp
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuY2FsbFNl
dHRlckZyb21FdmFsKCd0ZXN0JykKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7
Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWls
YWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxp
emF0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3N2YwZGRkYjE5ZmNhOGZjMmUyNmM0ZWE4Y2FkNGJjNzg0
ZTM0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2
YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qcwpAQCAtMCwwICsx
LDMxIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIHJocyArICIgYnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0
aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0K
KworICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20oKScpOworICAgIH0KKworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9KSgp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJl
dHVybiAndGVzdCc7IH0KKworICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20nKTsKKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAn
dGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0
ZXItYnJhbmQtY2hlY2suanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1j
aGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi42ZjIzZjZiZjhlNDIxZWMxMTMwMzkxODYzNTk4YTRiNDQ3YjU5
OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJh
bmQtY2hlY2suanMKQEAgLTAsMCArMSwxMDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhz
KTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJv
ciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rp
b24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkg
eworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2
OyB9CisKKyAgICAgICAgICAgIGFjY2VzcyhvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9
IHY7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgICAgIHJldHVybiBjOworICAgIH07CisKKyAgICBsZXQgYzEgPSBjcmVhdGVBbmRJbnN0
YW50aWF0ZUNsYXNzKCk7CisgICAgbGV0IGMyID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygp
OworCisgICAgYzEuYWNjZXNzKGMxLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzEu
X3YsICd0ZXN0Jyk7CisgICAgYzIuYWNjZXNzKGMyLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYzIuX3YsICd0ZXN0Jyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2VzcyhjMiwgJ2ZvbycpOworICAgIH0pOworCisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMi5hY2Nlc3Mo
YzEsICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
UyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2IH0KKworICAgICAgICBzdXBlckFj
Y2Vzcyh2KSB7IHRoaXMuI20gPSB2OyB9CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMg
eworICAgICAgICBzZXQgI20odikgeyB0aGlzLl91ID0gdjsgfQorCisgICAgICAgIGFjY2Vzcyh2
KSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisKKyAgICBjLmFjY2VzcygndGVzdCcpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5fdSwgJ3Rlc3QnKTsKKworICAgIGMuc3VwZXJBY2Nlc3MoJ3N1cGVyIGNs
YXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnc3VwZXIgY2xhc3MnKTsKKworICAg
IGxldCBzID0gbmV3IFMoKTsKKyAgICBzLnN1cGVyQWNjZXNzKCdzdXBlciBjbGFzcycpCisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShzLl92LCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbChzLCAnZm9v
Jyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2VzcyhvLCB2KSB7
CisgICAgICAgICAgICByZXR1cm4gby4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgYy5hY2Nlc3MoYywgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMuX3YsICd0ZXN0Jyk7CisKKyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50aHJv
d3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MobywgJ2ZvbycpOwor
ICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0
ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1j
bGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4yNmRiODlkNzNmODE3ZWJhYmE1YjFhMDI0MjE3Y2UyOTVlNzk3
YTNjCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5u
ZXItY2xhc3MuanMKQEAgLTAsMCArMSwxNTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQ
cml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1
bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhz
KTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsK
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAg
ICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJv
ciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsg
fQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAg
ICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAg
aW5uZXJCLm1ldGhvZChjLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rl
c3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNl
dCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9
IHY7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsK
KyAgICAgICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
Z2V0IG0oKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgICAgICNtOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5C
KCk7CisKKyAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGlubmVyQi5tLCAndGVzdCcpOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChj
LCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMg
eworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2
KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1l
dGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisK
KyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVy
Qi5tZXRob2QoaW5uZXJCKTsKKyAgICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3Nl
cnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2Qo
Yyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAg
ICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRo
aXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChv
LCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2Vy
dC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChp
bm5lckIsICdmb28nKTsKKyAgICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7
CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRoaXMu
I20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2
KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAg
ICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlubmVy
Qi5tZXRob2QoaW5uZXJCLCAndGVzdDI2MicpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJC
Ll92LCAndGVzdDI2MicpOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjLCAnZm9vJyk7
CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggNTE1ZGEzY2RiNzkwZWE3ZDcz
NmY4NmFjNzNmMzE4NjdkYmI5ZWUxNy4uNDExNjY3NmRkMWVhODY0MzE1ODY0MDk1ZTU0NjFkMTkw
ZDZlNWJhMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtNCw2ICs0LDcgQEAgZmxhZ3M6CiAgIFdlYWtS
ZWY6IHVzZVdlYWtSZWZzCiAgIEZpbmFsaXphdGlvblJlZ2lzdHJ5OiB1c2VXZWFrUmVmcwogICBj
bGFzcy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCisgIGNsYXNzLW1ldGhv
ZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZU1ldGhvZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJs
aWM6IHVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJp
dmF0ZTogdXNlUHJpdmF0ZVN0YXRpY0NsYXNzRmllbGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQt
ZGF5UGVyaW9kOiB1c2VJbnRsRGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QKQEAgLTE5LDcgKzIwLDYg
QEAgc2tpcDoKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAgICAgLSBsZWdhY3ktcmVnZXhwCiAK
LSAgICAtIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMt
cHJpdmF0ZQogICAgIC0gY2xlYW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420052</attachid>
            <date>2021-02-11 15:29:05 -0800</date>
            <delta_ts>2021-02-12 08:38:56 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>bug-194435-20210211202903.patch</filename>
            <type>text/plain</type>
            <size>69345</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWIwMmZhMTIzZDg5YjM2OTdlZDZhNWE1YmI0N2ExOWY2YzNkNzI1Li41MzQ5MjZmNmMzMDM4NDMx
ODVhYWYzNjFiZmNiYTEwZmQ2M2UyOGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDItMTAgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgaW5zdGFuY2UgcHJpdmF0ZSBnZXR0ZXJzIGFuZAorICAg
ICAgICBzZXR0ZXJzIGZvbGxvd2luZyB0aGUgcHJvcG9zYWwgb24gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy4KKyAgICAgICAgUHJpdmF0ZSBhY2Nlc3NvcnMgYWxzbyB1
c2UgdGhlIHByaXZhdGUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtIG9mCisgICAgICAgIHByaXZhdGUg
bWV0aG9kcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBhcmUgdXNpbmcgYm90aAorICAgICAgICBgb3Bf
c2V0X3ByaXZhdGVfYnJhbmRgIGFuZCBgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gcGVyZm9y
bSBicmFuZAorICAgICAgICBjaGVja3MuIEFjY2Vzc29ycyBhcmUgYWxzbyBzdG9yZWQgb24gY2xh
c3MgbGV4aWNhbCBzY29wZSBhcyBhIHBhaXIgb2YKKyAgICAgICAgYGdldHRlcmAgYW5kIGBzZXR0
ZXJgLiBUaGlzIGlzIGRvbmUgY3JlYXRpbmcgYSBuZXcgYEpTT2JqZWN0YCBhbmQKKyAgICAgICAg
c3RvcmluZyB0aGUgYGdldHRlcmAgb24gYGdldGAgcHJvcGVydHksIGFuZCBgc2V0dGVyYCBvbiBg
c2V0YAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBkZXNpZ25lZCBpbiBzdWNoIHdheSB0aGF0
IHdlIGNhbiBhbHdheXMgaGl0IElDIGZhc3QKKyAgICAgICAgcGF0aCBvbiBgZ2V0X2J5X2lkX2Rp
cmVjdGAgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSwgYW5kIGFsc28gdG8gYWxsb3cKKyAgICAgICAg
Y29uc3RhbnQgZm9sZGluZyBvZiBhY2Nlc3NvcnMgb24gREZHL0ZUTCwgc2luY2UgYWNlc3NvcnMg
b2JqZWN0cyBhcmUKKyAgICAgICAgZ29pbmcgdG8gYmUgY29uc3RhbnQgb25jZSBjcmVhdGVkLgor
CisgICAgICAgIEZvciByZWZlcmVuY2UsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBieXRlY29kZSBm
b3IgYSBwcml2YXRlIGdldHRlcgorICAgICAgICBhY2Nlc3M6CisKKyAgICAgICAgYGBgCisgICAg
ICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkgey4uLn0KKyAgICAgICAgICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBCeXRlY29kZSBmb3IgY2xhc3MgZGVj
bGFyYXRpb246CisKKyAgICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICBuZXdfb2JqZWN0
ICAgICAgICAgZHN0OmxvYzEyLCBpbmxpbmVDYXBhY2l0eToyIC8vIHRoaXMgaXMgdGhlIG9iamVj
dCB0byBzdG9yZSBnZXR0ZXIgYW5kIHNldHRlciBwYWlyCisgICAgICAgIG5ld19mdW5jX2V4cCAg
ICAgICBkc3Q6bG9jMTMsIHNjb3BlOmxvYzQsIGZ1bmN0aW9uRGVjbDoiZ2V0ICNtKCkgey4uLn0i
CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAgICBiYXNlOmxvYzEzLCBwcm9wZXJ0eTpAaG9tZU9i
amVjdCwgdmFsdWU6bG9jMTEsIGZsYWdzOlN0cmljdAorICAgICAgICBwdXRfYnlfaWQgICAgICAg
ICAgYmFzZTpsb2MxMiwgcHJvcGVydHk6QGdldCwgdmFsdWU6bG9jMTMsIGZsYWdzOklzRGlyZWN0
fFN0cmljdAorICAgICAgICBwdXRfdG9fc2NvcGUgICAgICAgc2NvcGU6bG9jNCwgdmFyOiNtLCB2
YWx1ZTpsb2MxMiAvLyBsb2M0IGlzIHRoZSBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgICAgIC4u
LgorCisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBgYWNjZXNzKClgOgorCisg
ICAgICAgIGBgYAorICAgICAgICAuLi4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIGRzdDps
b2M3LCBzY29wZTpsb2M0LCB2YXI6IiNtIiwgcmVzb2x2ZVR5cGU6R2xvYmFsUHJvcGVydHksIGxv
Y2FsU2NvcGVEZXB0aDowCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICBkc3Q6bG9jOCwgc2Nv
cGU6bG9jNywgdmFyOkBwcml2YXRlQnJhbmQKKyAgICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCBi
YXNlOnRoaXMsIGJyYW5kOmxvYzgKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRzdDpsb2M4
LCBzY29wZTpsb2M3LCB2YXI6IiNtIgorICAgICAgICBnZXRfYnlfaWRfZGlyZWN0ICAgZHN0Omxv
YzksIGJhc2U6bG9jOCwgcHJvcGVydHk6QGdldAorICAgICAgICBtb3YgICAgICAgICAgICAgICAg
ZHN0OmxvYzEwLCBzcmM6dGhpcworICAgICAgICBjYWxsICAgICAgICAgICAgICAgZHN0OmxvYzYs
IGNhbGxlZTpsb2M5LCBhcmdjOjEsIGFyZ3Y6MTYKKyAgICAgICAgLi4uCisKKyAgICAgICAgYGBg
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZVNldHRlcik6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppc1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAq
IGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oOgorICAgICAgICAqIGJ5dGVjb21waWxl
ci9Ob2Rlc0NvZGVnZW4uY3BwOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0
Qnl0ZWNvZGUpOgorICAgICAgICAoSlNDOjpQcm9wZXJ0eUxpc3ROb2RlOjplbWl0UHV0Q29uc3Rh
bnRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlW
YWx1ZSk6CisgICAgICAgIChKU0M6OkJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkpOgorICAg
ICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgorICAg
ICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllbGRJbml0aWFsaXplclNvdXJjZUVsZW1l
bnRzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVy
KToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNs
YXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisgICAgICAgICogcGFyc2VyL1BhcnNlckFyZW5hLmNwcDoKKyAgICAgICAgKEpTQzo6
SWRlbnRpZmllckFyZW5hOjptYWtlUHJpdmF0ZUlkZW50aWZpZXIpOgorICAgICAgICAqIHBhcnNl
ci9QYXJzZXJBcmVuYS5oOgorICAgICAgICAqIHBhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cDoKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0
ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaDoKKyAgICAgICAg
KEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojppc1ByaXZhdGVTZXR0ZXIgY29uc3QpOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZUdldHRlciBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6c2V0SXNQcml2
YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5OjpzZXRJ
c1ByaXZhdGVHZXR0ZXIpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc1NldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6OmlzR2V0dGVyIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlTWV0aG9kT3JBY2Vz
c29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKToKKwogMjAyMS0w
Mi0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBj
cmFzaCB3aGVuIHJlcGFyc2luZyBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgdGhlIHBhcnNpbmcgaW52
YXJpYW50IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZTU3MTllZjgyNThmM2IyOWZl
NjBkNzZkYjIwMmQyZjliMjhhNTdlLi5iZmI2ODAxNTI0ZTFhNzNkZWI3NGRhNjc3ZjFlMmQzZDBh
NDE5MTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTkwMCwxMCArMTkwMCwxNyBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlm
IHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBp
dCBpc24ndCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2
YXRlRmllbGQoKSkKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUo
ZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNEZWNsYXJlZCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2
YXRlTWV0aG9kKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1l
KGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBy
aXZhdGVFbnZpcm9ubWVudCA9IGxleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCgpOworICAgICAgICAgICAgaWYgKCFwcml2YXRlRW52aXJvbm1lbnQpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gZmluZFJlc3VsdCA9IHByaXZhdGVFbnZp
cm9ubWVudC0+ZmluZChlbnRyeS5rZXkuZ2V0KCkpOworCisgICAgICAgICAgICBpZiAoZmluZFJl
c3VsdCA9PSBwcml2YXRlRW52aXJvbm1lbnQtPmVuZCgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZmluZFJlc3Vs
dC0+a2V5LmdldCgpLCBmaW5kUmVzdWx0LT52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjkzMSwxNiArMjkzOCwxOCBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSkKICAgICB9CiB9CiAKLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKy8vIFRoaXMgc2hvdWxkIGJlIGNhbGxl
ZCBvbmx5IHdpdGggUHJpdmF0ZU5hbWVzIGF2YWlsYWJsZS4KK1ByaXZhdGVOYW1lRW50cnkgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdldFByaXZhdGVUcmFpdHMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGkt
LTsgKSB7CiAgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CiAgICAg
ICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgICAgICBpZiAoaXQgIT0g
bWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAg
ICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUHJpdmF0ZU5hbWVF
bnRyeSgpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05h
bWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5o
CmluZGV4IGJiZmI1NjgxOThmNDQ0NTU3ZGEzMTMzYzI5NjYzY2Q0MjAxZTdiZTUuLmE1Y2JkMzY5
OWE0NzNjYmRjMDg3ZmJlNmZhMWIwY2ZkYjA0ZDU2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKQEAgLTEyNjMs
NyArMTI2Myw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAgICAgbV9sYXN0SW5zdHJ1Y3Rp
b24gPSBwcmV2TGFzdEluc3RydWN0aW9uOwogICAgICAgICB9CiAKLSAgICAgICAgYm9vbCBpc1By
aXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYpOworICAgICAgICBQcml2YXRlTmFtZUVudHJ5
IGdldFByaXZhdGVUcmFpdHMoY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAgICAgIHZvaWQgcHVz
aFByaXZhdGVBY2Nlc3NOYW1lcyhjb25zdCBQcml2YXRlTmFtZUVudmlyb25tZW50Kik7CiAgICAg
ICAgIHZvaWQgcG9wUHJpdmF0ZUFjY2Vzc05hbWVzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKaW5kZXggNGMwOGEzM2QzZjg3
YmI0MmJlM2Y4ZjZjZGJhNWZhMDM3MDA3OGU1Zi4uMTI2NDJmNzM2Njk2Y2Y1NGRiZDc0N2YxMWQ5
ZjA5MDA4NDAxZDVlZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21w
aWxlci9Ob2Rlc0NvZGVnZW4uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcApAQCAtNTc5LDEzICs1NzksNjUgQEAgdm9pZCBQcm9wZXJ0
eUxpc3ROb2RlOjplbWl0RGVjbGFyZVByaXZhdGVGaWVsZE5hbWVzKEJ5dGVjb2RlR2VuZXJhdG9y
JiBnZW5lcmF0b3IKIAogUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2Rl
KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdE9yQ29uc3RydWN0
b3IsIFJlZ2lzdGVySUQqIHByb3RvdHlwZSwgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogaW5zdGFu
Y2VGaWVsZExvY2F0aW9ucywgVmVjdG9yPEpTVGV4dFBvc2l0aW9uPiogc3RhdGljRmllbGRMb2Nh
dGlvbnMpCiB7CisgICAgdHlwZWRlZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJvcGVydHlO
b2RlKj4gR2V0dGVyU2V0dGVyUGFpcjsKKyAgICB0eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmlu
Z0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlmaWVyUmVwSGFzaD4gR2V0dGVyU2V0dGVy
TWFwOworICAgIEdldHRlclNldHRlck1hcCBwcml2YXRlQWNjZXNzb3JNYXA7CisKICAgICBQcm9w
ZXJ0eUxpc3ROb2RlKiBwID0gdGhpczsKICAgICBSZWdpc3RlcklEKiBkc3QgPSBudWxscHRyOwor
ICAgIGZvciAoOyBwOyBwID0gcC0+bV9uZXh0KSB7CisgICAgICAgIGlmICghKHAtPm1fbm9kZS0+
dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9kZTo6UHJp
dmF0ZVNldHRlcikpKQorICAgICAgICAgICAgY29udGludWU7CiAKKyAgICAgICAgLy8gV2UgZ3Jv
dXAgcHJpdmF0ZSBnZXR0ZXJzIGFuZCBzZXR0ZXJzIHRvIHN0b3JlIHRoZW0gaW4gYSBvYmplY3QK
KyAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyKHAtPm1fbm9kZSwgc3RhdGljX2Nhc3Q8UHJv
cGVydHlOb2RlKj4obnVsbHB0cikpOworICAgICAgICBHZXR0ZXJTZXR0ZXJNYXA6OkFkZFJlc3Vs
dCByZXN1bHQgPSBwcml2YXRlQWNjZXNzb3JNYXAuYWRkKHAtPm1fbm9kZS0+bmFtZSgpLT5pbXBs
KCksIHBhaXIpOworICAgICAgICBhdXRvJiByZXN1bHRQYWlyID0gcmVzdWx0Lml0ZXJhdG9yLT52
YWx1ZTsKKyAgICAgICAgLy8gSWYgdGhlIG1hcCBhbHJlYWR5IGNvbnRhaW5zIGFuIGVsZW1lbnQg
d2l0aCBub2RlLT5uYW1lKCksCisgICAgICAgIC8vIHdlIG5lZWQgdG8gc3RvcmUgdGhpcyBub2Rl
IGluIHRoZSBzZWNvbmQgcGFydC4KKyAgICAgICAgaWYgKCFyZXN1bHQuaXNOZXdFbnRyeSkKKyAg
ICAgICAgICAgIHJlc3VsdFBhaXIuc2Vjb25kID0gcC0+bV9ub2RlOworICAgICAgICBjb250aW51
ZTsKKyAgICB9CisKKyAgICAvLyBUaGVuIHdlIGRlY2xhcmUgcHJpdmF0ZSBhY2Nlc3NvcworICAg
IGZvciAoYXV0byYgaXQgOiBwcml2YXRlQWNjZXNzb3JNYXApIHsKKyAgICAgICAgUmVmUHRyPFJl
Z2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0TmV3T2JqZWN0KGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSk7CisKKyAgICAgICAgR2V0dGVyU2V0dGVyUGFpciBwYWlyID0g
aXQudmFsdWU7CisgICAgICAgIGlmIChwYWlyLmZpcnN0KSB7CisgICAgICAgICAgICBkc3QgPSBw
YWlyLmZpcnN0LT5pc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpID8gcHJvdG90eXBlIDogZHN0T3JD
b25zdHJ1Y3RvcjsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0Tm9kZShwYWlyLmZpcnN0LT5tX2Fzc2lnbik7CisgICAgICAgICAgICBpZiAocGFp
ci5maXJzdC0+bmVlZHNTdXBlckJpbmRpbmcoKSkKKyAgICAgICAgICAgICAgICBlbWl0UHV0SG9t
ZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdldCgpLCBkc3QpOworICAgICAgICAgICAgYXV0byBz
ZXR0ZXJPckdldHRlcklkZW50ID0gcGFpci5maXJzdC0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpQ
cml2YXRlR2V0dGVyCisgICAgICAgICAgICAgICAgPyBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygp
LmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkKKyAgICAgICAgICAgICAgICA6IGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RGlyZWN0UHV0QnlJZChnZXR0ZXJTZXR0ZXJPYmouZ2V0
KCksIHNldHRlck9yR2V0dGVySWRlbnQsIHZhbHVlLmdldCgpKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGlmIChwYWlyLnNlY29uZCkgeworICAgICAgICAgICAgZHN0ID0gcGFpci5zZWNvbmQtPmlz
SW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2Rl
KHBhaXIuc2Vjb25kLT5tX2Fzc2lnbik7CisgICAgICAgICAgICBpZiAocGFpci5zZWNvbmQtPm5l
ZWRzU3VwZXJCaW5kaW5nKCkpCisgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2Vu
ZXJhdG9yLCB2YWx1ZS5nZXQoKSwgZHN0KTsKKyAgICAgICAgICAgIGF1dG8gc2V0dGVyT3JHZXR0
ZXJJZGVudCA9IHBhaXIuc2Vjb25kLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0
ZXIKKyAgICAgICAgICAgICAgICA/IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5h
bWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKQorICAgICAgICAgICAgICAgIDogZ2VuZXJhdG9yLnByb3Bl
cnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdldHRlclNldHRlck9iai5nZXQoKSwgc2V0dGVy
T3JHZXR0ZXJJZGVudCwgdmFsdWUuZ2V0KCkpOworICAgICAgICB9CisKKyAgICAgICAgVmFyaWFi
bGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpwYWlyLmZpcnN0LT5uYW1lKCkpOworICAgICAg
ICBnZW5lcmF0b3IuZW1pdFB1dFRvU2NvcGUoZ2VuZXJhdG9yLnNjb3BlUmVnaXN0ZXIoKSwgdmFy
LCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIERvTm90VGhyb3dJZk5vdEZvdW5kLCBJbml0aWFsaXph
dGlvbk1vZGU6OkNvbnN0SW5pdGlhbGl6YXRpb24pOworICAgIH0KKyAgICAKICAgICAvLyBGYXN0
IGNhc2U6IHRoaXMgbG9vcCBqdXN0IGhhbmRsZXMgcmVndWxhciB2YWx1ZSBwcm9wZXJ0aWVzLgot
ICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQpOyBwID0gcC0+bV9uZXh0KSB7CisgICAgZm9yIChwID0gdGhpczsgcCAmJiAocC0+bV9ub2Rl
LT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsgcCA9IHAtPm1fbmV4dCkgewogICAg
ICAgICBkc3QgPSBwLT5tX25vZGUtPmlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5
cGUgOiBkc3RPckNvbnN0cnVjdG9yOwogCisgICAgICAgIGlmIChwLT5tX25vZGUtPnR5cGUoKSAm
IChQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0
ZXIpKQorICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRD
bGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICBlbWl0U2F2ZUNvbXB1dGVkRmllbGROYW1lKGdlbmVy
YXRvciwgKnAtPm1fbm9kZSk7CiAKQEAgLTYxMCw4ICs2NjIsNiBAQCBSZWdpc3RlcklEKiBQcm9w
ZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwg
UmVnaXN0ZQogICAgICAgICAvLyBhIGNvbXB1dGVkIHByb3BlcnR5IG9yIGEgc3ByZWFkLCBqdXN0
IGVtaXQgZXZlcnl0aGluZyBhcyB0aGF0IG1heSBvdmVycmlkZSBwcmV2aW91cyB2YWx1ZXMuCiAg
ICAgICAgIGJvb2wgY2FuT3ZlcnJpZGVQcm9wZXJ0aWVzID0gZmFsc2U7CiAKLSAgICAgICAgdHlw
ZWRlZiBzdGQ6OnBhaXI8UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj4gR2V0dGVyU2V0dGVy
UGFpcjsKLSAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFVuaXF1ZWRTdHJpbmdJbXBsKiwgR2V0dGVy
U2V0dGVyUGFpciwgSWRlbnRpZmllclJlcEhhc2g+IEdldHRlclNldHRlck1hcDsKICAgICAgICAg
R2V0dGVyU2V0dGVyTWFwIGluc3RhbmNlTWFwOwogICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAgc3Rh
dGljTWFwOwogCkBAIC02NTEsNiArNzAxLDkgQEAgUmVnaXN0ZXJJRCogUHJvcGVydHlMaXN0Tm9k
ZTo6ZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGUKICAg
ICAgICAgICAgIGlmIChwLT5pc0NvbXB1dGVkQ2xhc3NGaWVsZCgpKQogICAgICAgICAgICAgICAg
IGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIAorICAg
ICAgICAgICAgaWYgKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdl
dHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpCisgICAgICAgICAgICAgICAgY29u
dGludWU7CisKICAgICAgICAgICAgIGlmIChwLT5pc0luc3RhbmNlQ2xhc3NGaWVsZCgpKSB7CiAg
ICAgICAgICAgICAgICAgQVNTRVJUKGluc3RhbmNlRmllbGRMb2NhdGlvbnMpOwogICAgICAgICAg
ICAgICAgIEFTU0VSVChub2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKQEAg
LTc4Miw2ICs4MzUsOCBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRQdXRDb25zdGFudFBy
b3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZwogCiAgICAgaWYgKG5vZGUu
aXNDbGFzc1Byb3BlcnR5KCkpIHsKICAgICAgICAgQVNTRVJUKG5vZGUubmVlZHNTdXBlckJpbmRp
bmcoKSk7CisgICAgICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2RlOjpQcml2
YXRlU2V0dGVyKSk7CisgICAgICAgIEFTU0VSVCghKG5vZGUudHlwZSgpICYgUHJvcGVydHlOb2Rl
OjpQcml2YXRlR2V0dGVyKSk7CiAKICAgICAgICAgaWYgKG5vZGUudHlwZSgpICYgUHJvcGVydHlO
b2RlOjpQcml2YXRlTWV0aG9kKSB7CiAgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoKm5vZGUubmFtZSgpKTsKQEAgLTkxOSw4ICs5NzQsMTAgQEAgUmVnaXN0ZXJJ
RCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnaXN0ZXIKIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlW
YWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lz
dGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklEPiYgdGhpc1ZhbHVlKQogewogICAgIGlmIChp
c1ByaXZhdGVNZW1iZXIoKSkgewotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhv
ZChpZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlk
ZW50aWZpZXIoKTsKKyAgICAgICAgYXV0byBwcml2YXRlVHJhaXRzID0gZ2VuZXJhdG9yLmdldFBy
aXZhdGVUcmFpdHMoaWRlbnRpZmllck5hbWUpOworICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5p
c01ldGhvZCgpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFi
bGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3Bl
ID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKIAogICAgICAgICAg
ICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2
YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CkBAIC05Mjks
NiArOTg2LDMyIEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1
ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpCiAgICAgICAgICAgICByZXR1cm4g
Z2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZHN0LCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lm
Tm90Rm91bmQpOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNHZXR0
ZXIoKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlk
ZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJy
YW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wp
OworCisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2JqID0gZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5n
ZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVy
SUQ+IGdldHRlckZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeUlkKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBnZW5lcmF0b3IucHJvcGVy
dHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAg
Q2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0cik7CisgICAgICAgICAgICBnZW5l
cmF0b3IubW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBiYXNlKTsKKyAgICAgICAgICAgIHJldHVy
biBnZW5lcmF0b3IuZW1pdENhbGwoZHN0LCBnZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3Rl
ZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1
Z2dhYmxlQ2FsbDo6WWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcml2YXRlVHJhaXRz
LmlzU2V0dGVyKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBicmFuZCBj
aGVjayB0byBmb2xsb3cgdGhlIHNwZWMKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwor
CisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3Iu
ZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJp
dmF0ZUJyYW5kU3ltYm9sKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJy
b3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIGdldHRlciIpOworICAg
ICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChwcml2YXRl
VHJhaXRzLmlzRmllbGQoKSk7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCks
ICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxl
cyIpOwogCkBAIC05NTcsNyArMTA0MCwyNSBAQCBSZWdpc3RlcklEKiBCYXNlRG90Tm9kZTo6ZW1p
dFB1dFByb3BlcnR5KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySQogewog
ICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1l
ID0gaWRlbnRpZmllcigpOwotICAgICAgICBpZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChp
ZGVudGlmaWVyTmFtZSkpIHsKKyAgICAgICAgYXV0byBwcml2YXRlVHJhaXRzID0gZ2VuZXJhdG9y
LmdldFByaXZhdGVUcmFpdHMoaWRlbnRpZmllck5hbWUpOworICAgICAgICBpZiAocHJpdmF0ZVRy
YWl0cy5pc1NldHRlcigpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAg
ICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRH
ZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7Cisg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVC
cmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0
ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5
SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIGdlbmVy
YXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSk7Cisg
ICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxscHRyLCAxKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZSk7
CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBzZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0
aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKworICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByaXZhdGVU
cmFpdHMuaXNHZXR0ZXIoKSB8fCBwcml2YXRlVHJhaXRzLmlzTWV0aG9kKCkpIHsKICAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFtZSk7CiAg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29s
dmVTY29wZShudWxscHRyLCB2YXIpOwogCkBAIC05NjcsNiArMTA2OCw3IEBAIFJlZ2lzdGVySUQq
IEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRv
ciwgUmVnaXN0ZXJJCiAgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJU
cnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBzZXR0ZXIiKTsKICAgICAgICAg
fQogCisgICAgICAgIEFTU0VSVChwcml2YXRlVHJhaXRzLmlzRmllbGQoKSk7CiAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJU
X1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQcml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUg
c3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIpOwogCkBAIC0yMjg3LDE3ICsyMzg5LDc4IEBA
IFJlZ2lzdGVySUQqIFBvc3RmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5l
cmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKIAogICAgIGlmIChkb3RBY2Nlc3Nvci0+aXNQcml2YXRl
TWVtYmVyKCkpIHsKICAgICAgICAgQVNTRVJUKCFiYXNlSXNTdXBlcik7CisgICAgICAgIGF1dG8g
cHJpdmF0ZVRyYWl0cyA9IGdlbmVyYXRvci5nZXRQcml2YXRlVHJhaXRzKGlkZW50KTsKKworICAg
ICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0ZpZWxkKCkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxl
IHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIp
OworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9y
Lm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUo
cHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5k
KTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVt
aXRHZXRQcml2YXRlTmFtZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGJhc2UuZ2V0KCksIHBy
aXZhdGVOYW1lLmdldCgpKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBvbGRWYWx1
ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZh
dGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAg
ICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgb2xkVmFsdWUuZ2V0KCkpOworICAgICAg
ICB9CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNNZXRob2QoKSkgeworICAgICAgICAg
ICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51
bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJlZ2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJv
bCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVC
cmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAgICAgICAgICAvLyBE
byB3ZSByZWFsbHkgbmVlZCB0aGlzPyBJIHRoaW5rIHRoZSByZXN1bHQgaXMgYWx3YXlzIE5hTiBh
bmQgbm90IG9ic2VydmFibGUKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2Nv
cGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBvbGRWYWx1ZSA9IGVtaXRQb3N0SW5jT3JEZWMoZ2VuZXJhdG9yLCBnZW5lcmF0b3Iu
dGVtcERlc3RpbmF0aW9uKGRzdCksIHZhbHVlLmdldCgpLCBtX29wZXJhdG9yKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRy
eWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOworICAgICAgICAg
ICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVy
YXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9
IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Ci0gICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAg
ICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3Bl
LmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBS
ZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVC
cmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRTeW1i
b2wpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICAgICAgaWYgKHBy
aXZhdGVUcmFpdHMuaXNHZXR0ZXIoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRl
TmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxw
dHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFz
ZS5nZXQoKSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rp
b24sIGFyZ3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVD
YWxsOjpZZXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRU
aHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgZ2V0
dGVyIik7CisgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAgICB9CisKICAgICAgICAgUmVm
UHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0b3IsIGdl
bmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0b3IpOwog
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxkUHV0KGJh
c2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQoKSk7Ci0gICAgICAgIGdlbmVy
YXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQo
KSk7Ci0gICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZhbHVlLmdldCgpKTsK
KworICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc1NldHRlcigpKSB7CisgICAgICAgICAgICAv
LyBXZSBuZWVkIHRvIHBlcmZvcm0gYnJhbmQgY2hlY2sgdG8gZm9sbG93IHRoZSBzcGVjCisgICAg
ICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2Nv
cGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5k
U3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJp
dmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93
SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuc2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFy
Z3MoZ2VuZXJhdG9yLCBudWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFy
Z3MudGhpc1JlZ2lzdGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1v
dmUoYXJncy5hcmd1bWVudFJlZ2lzdGVyKDApLCB2YWx1ZS5nZXQoKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlv
bi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9u
LCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7
CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBvbGRWYWx1ZS5nZXQoKSk7
CisgICAgICAgIH0gCisKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5
aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgZ2V0dGVyIik7CisgICAgICAgIHJl
dHVybiBkc3Q7CiAgICAgfQogCiAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlOwpAQCAtMjUy
NSwxOCArMjY4OCw3OCBAQCBSZWdpc3RlcklEKiBQcmVmaXhOb2RlOjplbWl0RG90KEJ5dGVjb2Rl
R2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCkKICAgICBnZW5lcmF0b3IuZW1p
dEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RT
dGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAgICAgUmVnaXN0ZXJJRCogdmFsdWU7
CiAgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewotICAgICAgICBBU1NF
UlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgYXV0byBwcml2YXRlVHJhaXRz
ID0gZ2VuZXJhdG9yLmdldFByaXZhdGVUcmFpdHMoaWRlbnQpOworICAgICAgICBpZiAocHJpdmF0
ZVRyYWl0cy5pc0ZpZWxkKCkpIHsKKyAgICAgICAgICAgIEFTU0VSVCghYmFzZU5vZGUtPmlzU3Vw
ZXJOb2RlKCkpOworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxl
KGlkZW50KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAg
ICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUu
Z2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgICAgICB2YWx1ZSA9
IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERzdC5nZXQoKSwgYmFzZS5nZXQoKSwg
cHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwg
dmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCks
IHZhbHVlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1v
dmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcml2YXRl
VHJhaXRzLmlzTWV0aG9kKCkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRv
ci52YXJpYWJsZShpZGVudCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUg
PSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAg
ICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZh
dGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAg
ICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZS5nZXQoKSwgcHJpdmF0ZUJy
YW5kU3ltYm9sKTsKKworICAgICAgICAgICAgLy8gT09QUzogRG8gd2UgbmVlZCB0byBlbWl0IGdl
dF9mcm9tX3Njb3BlIGFuZCBpbmM/IFByb2JhYmx5IG5vdAorICAgICAgICAgICAgdmFsdWUgPSBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcm9wRHN0LmdldCgpLCBzY29wZS5nZXQoKSwgdmFy
LCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwg
dmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9u
SW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVk
IHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgICAgICByZXR1cm4gZHN0OworICAgICAgICB9CisK
ICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgdmFyKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21T
Y29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90
Rm91bmQpOwogCi0gICAgICAgIHZhbHVlID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlTmFtZShw
cm9wRHN0LmdldCgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJl
Z2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJy
YW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICBnZW5l
cmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5bWJv
bCk7CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNHZXR0ZXIoKSkgeworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0
RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhy
b3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5j
dGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5
KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWls
dGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMg
YXJncyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJn
cy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVy
YXRvci5lbWl0Q2FsbChwcm9wRHN0LmdldCgpLCBnZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBl
Y3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBE
ZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBw
cml2YXRlIGdldHRlciIpOworICAgICAgICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCiAg
ICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdl
dCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwotICAgICAgICByZXR1
cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKworICAgICAgICBpZiAocHJp
dmF0ZVRyYWl0cy5pc1NldHRlcigpKSB7CisgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIHBlcmZv
cm0gYnJhbmQgY2hlY2sgdG8gZm9sbG93IHRoZSBzcGVjCisgICAgICAgICAgICBWYXJpYWJsZSB2
YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsK
KworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9y
LmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQo
KSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0
KCksIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0b3Iu
bmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CisgICAg
ICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3IuZW1p
dERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJPYmou
Z2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJpdmF0
ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBudWxs
cHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVyKCks
IGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVudFJl
Z2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZ2VuZXJh
dG9yLm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0
aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxl
Q2FsbDo6WWVzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUs
IGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9y
Lm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgfSAKKworICAgICAgICBnZW5lcmF0
b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJp
dmF0ZSBnZXR0ZXIiKTsKKyAgICAgICAgcmV0dXJuIGRzdDsKKwogICAgIH0KIAogICAgIFJlZlB0
cjxSZWdpc3RlcklEPiB0aGlzVmFsdWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL05vZGVzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgK
aW5kZXggNGJmOTM4NmYyNmYwMjk4M2I3ODg2OWU0YTI1MDI1ZjYwZWM4YWIzNS4uMTQzMGU4ZDQ0
NWQ1YWZlOTY0ZDFjNTE3M2FkYTM5OWRiZDBlY2ZjZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTm9kZXMuaApAQCAtNzIxLDcgKzcyMSw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIGVudW0g
Y2xhc3MgQ2xhc3NFbGVtZW50VGFnIDogdWludDhfdCB7IE5vLCBJbnN0YW5jZSwgU3RhdGljLCBM
YXN0VGFnIH07CiAgICAgY2xhc3MgUHJvcGVydHlOb2RlIGZpbmFsIDogcHVibGljIFBhcnNlckFy
ZW5hRnJlZWFibGUgewogICAgIHB1YmxpYzoKLSAgICAgICAgZW51bSBUeXBlIDogdWludDhfdCB7
IENvbnN0YW50ID0gMSwgR2V0dGVyID0gMiwgU2V0dGVyID0gNCwgQ29tcHV0ZWQgPSA4LCBTaG9y
dGhhbmQgPSAxNiwgU3ByZWFkID0gMzIsIFByaXZhdGVGaWVsZCA9IDY0LCBQcml2YXRlTWV0aG9k
ID0gMTI4IH07CisgICAgICAgIGVudW0gVHlwZSA6IHVpbnQxNl90IHsgQ29uc3RhbnQgPSAxLCBH
ZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJl
YWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAxMjgsIFByaXZhdGVT
ZXR0ZXIgPSAyNTYsIFByaXZhdGVHZXR0ZXIgPSA1MTIgfTsKIAogICAgICAgICBQcm9wZXJ0eU5v
ZGUoY29uc3QgSWRlbnRpZmllciYsIEV4cHJlc3Npb25Ob2RlKiwgVHlwZSwgU3VwZXJCaW5kaW5n
LCBDbGFzc0VsZW1lbnRUYWcpOwogICAgICAgICBQcm9wZXJ0eU5vZGUoRXhwcmVzc2lvbk5vZGUq
LCBUeXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CkBAIC03NDAsNyArNzQwLDcg
QEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNJbnN0YW5jZUNsYXNzRmllbGQoKSBj
b25zdCB7IHJldHVybiBpc0luc3RhbmNlQ2xhc3NQcm9wZXJ0eSgpICYmICFuZWVkc1N1cGVyQmlu
ZGluZygpOyB9CiAgICAgICAgIGJvb2wgaXNTdGF0aWNDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1
cm4gaXNTdGF0aWNDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAg
ICAgICAgYm9vbCBpc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIGNvbnN0IHsgcmV0dXJuIG1faXNP
dmVycmlkZGVuQnlEdXBsaWNhdGU7IH0KLSAgICAgICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0ZUZpZWxkIHwgUHJpdmF0ZU1ldGhvZCk7IH0KKyAgICAg
ICAgYm9vbCBpc1ByaXZhdGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGUgJiAoUHJpdmF0ZUZpZWxk
IHwgUHJpdmF0ZU1ldGhvZCB8IFByaXZhdGVHZXR0ZXIgfCBQcml2YXRlU2V0dGVyKTsgfQogICAg
ICAgICBib29sIGhhc0NvbXB1dGVkTmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZXhwcmVzc2lvbjsg
fQogICAgICAgICBib29sIGlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkgY29uc3QgeyByZXR1cm4gaXND
bGFzc0ZpZWxkKCkgJiYgaGFzQ29tcHV0ZWROYW1lKCk7IH0KICAgICAgICAgdm9pZCBzZXRJc092
ZXJyaWRkZW5CeUR1cGxpY2F0ZSgpIHsgbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZSA9IHRydWU7
IH0KQEAgLTc2MCw3ICs3NjAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgY29uc3QgSWRl
bnRpZmllciogbV9uYW1lOwogICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9leHByZXNzaW9uOwog
ICAgICAgICBFeHByZXNzaW9uTm9kZSogbV9hc3NpZ247Ci0gICAgICAgIHVuc2lnbmVkIG1fdHlw
ZTsKKyAgICAgICAgdW5zaWduZWQgbV90eXBlIDogMTA7CiAgICAgICAgIHVuc2lnbmVkIG1fbmVl
ZHNTdXBlckJpbmRpbmcgOiAxOwogICAgICAgICBzdGF0aWNfYXNzZXJ0KDEgPDwgMiA+IHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihDbGFzc0VsZW1lbnRUYWc6Okxhc3RUYWcpLCAiQ2xhc3NFbGVtZW50
VGFnIHNob3VsZG4ndCB1c2UgbW9yZSB0aGFuIHR3byBiaXRzIik7CiAgICAgICAgIHVuc2lnbmVk
IG1fY2xhc3NFbGVtZW50VGFnIDogMjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
LmNwcAppbmRleCBlY2E1YmIzMDU5NTk2YTg0NjUyNmRmYzc1NzExMWRhNmY1NDYzMzc4Li4yYTAx
NjBkODBiZWFiNmVkOWJhZjg5MDFlNzg4OTI2NDRlYWQxN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0yODc5LDcgKzI4NzksNyBAQCB0ZW1wbGF0ZSA8Y2xh
c3MgVHJlZUJ1aWxkZXI+IFRyZWVDbGFzc0V4cHJlc3Npb24gUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlQ2xhc3MoVAogICAgIGNsYXNzU2NvcGUtPnNldElzTGV4aWNhbFNjb3BlKCk7CiAgICAgY2xh
c3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNsYXNzU2NvcGUtPnNldFN0
cmljdE1vZGUoKTsKLSAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IGZhbHNlOworICAg
IGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvciA9IGZhbHNlOwogICAgIG5leHQo
KTsKIAogICAgIEFTU0VSVF9XSVRIX01FU1NBR0UocmVxdWlyZW1lbnRzICE9IEZ1bmN0aW9uTmFt
ZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgIkN1cnJlbnRseSwgdGhlcmUgaXMgbm8gY2FsbGVyIHRo
YXQgdXNlcyBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQgZm9yIGNsYXNzIHN5bnRh
eC4iKTsKQEAgLTI5NzgsNyArMjk3OCw3IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgYm9v
bCBlc2NhcGVkID0gbV90b2tlbi5tX2RhdGEuZXNjYXBlZDsKICAgICAgICAgICAgIEFTU0VSVChp
ZGVudCk7CiAgICAgICAgICAgICBuZXh0KCk7Ci0gICAgICAgICAgICBpZiAocGFyc2VNb2RlID09
IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSAmJiAhZXNjYXBlZCAmJiAobWF0Y2hJZGVudGlm
aWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VCTEUpIHx8IG1hdGNo
KElOVEVHRVIpIHx8IG1hdGNoKEJJR0lOVCkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpKSkgeworICAg
ICAgICAgICAgaWYgKHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYg
IWVzY2FwZWQgJiYgKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykg
fHwgbWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJTlRFR0VSKSB8fCBtYXRjaChCSUdJTlQpIHx8IG1h
dGNoKE9QRU5CUkFDS0VUKSB8fCAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRj
aChQUklWQVRFTkFNRSkpKSkgewogICAgICAgICAgICAgICAgIGlzR2V0dGVyID0gKmlkZW50ID09
IHByb3BlcnR5TmFtZXMuZ2V0OwogICAgICAgICAgICAgICAgIGlzU2V0dGVyID0gKmlkZW50ID09
IHByb3BlcnR5TmFtZXMuc2V0OwogICAgICAgICAgICAgfQpAQCAtMzAwNiw4ICszMDA2LDkgQEAg
cGFyc2VNZXRob2Q6CiAgICAgICAgICAgICBBU1NFUlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4
dCgpOwogICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYgbWF0
Y2goT1BFTlBBUkVOKSkgeworICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcg
PT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0aWMsICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBwcml2
YXRlIG1ldGhvZCIpOwogICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Nj
b3BlLT5kZWNsYXJlUHJpdmF0ZU1ldGhvZCgqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkNhbm5vdCBkZWNsYXJlIHByaXZhdGUgbWV0aG9k
IHR3aWNlIik7Ci0gICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yID0gdHJ1ZTsK
ICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0
eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlTWV0aG9kKTsKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgICAgIH0KQEAgLTMwMjUsOCArMzAyNiwyMSBAQCBwYXJzZU1ldGhvZDoKIAog
ICAgICAgICBUcmVlUHJvcGVydHkgcHJvcGVydHk7CiAgICAgICAgIGlmIChpc0dldHRlciB8fCBp
c1NldHRlcikgewotICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6
VHlwZT4odHlwZSAmIH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKLSAgICAgICAgICAgIHR5cGUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCAoaXNHZXR0ZXIgPyBQcm9w
ZXJ0eU5vZGU6OkdldHRlciA6IFByb3BlcnR5Tm9kZTo6U2V0dGVyKSk7CisgICAgICAgICAgICBp
ZiAoT3B0aW9uczo6dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaChQUklWQVRFTkFNRSkpIHsK
KyAgICAgICAgICAgICAgICBpZGVudCA9IG1fdG9rZW4ubV9kYXRhLmlkZW50OworICAgICAgICAg
ICAgICAgIGlmIChpc1NldHRlcikgeworICAgICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJ
ZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZhdGVTZXR0ZXIoKmlkZW50KSAmIERlY2xhcmF0
aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJEZWNsYXJlZCBwcml2YXRl
IHNldHRlciB3aXRoIGFuIGFscmVhZHkgdXNlZCBuYW1lIik7CisgICAgICAgICAgICAgICAgICAg
IGRlY2xhcmVzUHJpdmF0ZU1ldGhvZE9yQWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAg
ICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVy
dHlOb2RlOjpQcml2YXRlU2V0dGVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xhc3NTY29wZS0+ZGVjbGFyZVByaXZh
dGVHZXR0ZXIoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVj
bGFyYXRpb24sICJEZWNsYXJlZCBwcml2YXRlIGdldHRlciB3aXRoIGFuIGFscmVhZHkgdXNlZCBu
YW1lIik7CisgICAgICAgICAgICAgICAgICAgIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZE9yQWNjZXNz
b3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVy
dHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHR5cGUg
PSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgJiB+UHJvcGVydHlOb2RlOjpD
b25zdGFudCk7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9k
ZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFByb3BlcnR5Tm9kZTo6R2V0dGVyIDogUHJvcGVy
dHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb3BlcnR5ID0g
cGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgdHlwZSwgbWV0aG9kU3RhcnQsIENvbnN0cnVjdG9y
S2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5LCAiQ2Fu
bm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoIW1hdGNoKE9QRU5Q
QVJFTikgJiYgKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlIHx8IE9wdGlvbnM6OnVz
ZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzKCkpICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQYXJzZU1v
ZGU6Ok1ldGhvZE1vZGUpIHsKQEAgLTMxMDAsNyArMzExNCw3IEBAIHBhcnNlTWV0aG9kOgogICAg
IGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAgICAgY29u
c3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRlciBhIGNs
YXNzIGJvZHkiKTsKIAotICAgIGlmIChkZWNsYXJlc1ByaXZhdGVNZXRob2QpIHsKKyAgICBpZiAo
ZGVjbGFyZXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvcikgewogICAgICAgICBJZGVudGlmaWVyIHBy
aXZhdGVCcmFuZElkZW50aWZpZXIgPSBtX3ZtLnByb3BlcnR5TmFtZXMtPmJ1aWx0aW5OYW1lcygp
LnByaXZhdGVCcmFuZFByaXZhdGVOYW1lKCk7CiAgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFz
ayBkZWNsYXJhdGlvblJlc3VsdCA9IGNsYXNzU2NvcGUtPmRlY2xhcmVMZXhpY2FsVmFyaWFibGUo
JnByaXZhdGVCcmFuZElkZW50aWZpZXIsIHRydWUpOwogICAgICAgICBBU1NFUlRfVU5VU0VEKGRl
Y2xhcmF0aW9uUmVzdWx0LCBkZWNsYXJhdGlvblJlc3VsdCA9PSBEZWNsYXJhdGlvblJlc3VsdDo6
VmFsaWQpOwpAQCAtMzE1NSw3ICszMTY5LDEwIEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRl
cj4gVHJlZVNvdXJjZUVsZW1lbnRzIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUNsYXNzRmllCiAg
ICAgICAgICAgICBzd2l0Y2ggKG1fdG9rZW4ubV90eXBlKSB7CiAgICAgICAgICAgICBjYXNlIFBS
SVZBVEVOQU1FOgogICAgICAgICAgICAgICAgIHR5cGUgPSBEZWZpbmVGaWVsZE5vZGU6OlR5cGU6
OlByaXZhdGVOYW1lOwotICAgICAgICAgICAgICAgIEZBTExUSFJPVUdIOworICAgICAgICAgICAg
ICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICAgICAgQVNTRVJU
KGlkZW50KTsKKyAgICAgICAgICAgICAgICBuZXh0KCk7CisgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICBjYXNlIFNUUklORzoKICAgICAgICAgICAgIGNhc2UgSURFTlQ6CiAgICAg
ICAgICAgICBuYW1lZEtleXdvcmQ6CkBAIC00NDI4LDEyICs0NDQ1LDE4IEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdl
dHRlclNldHRlcihUCiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2NhdGlv
bigpKTsKIAotICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8
fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpIHsKKyAgICBib29sIG1hdGNoZXNQ
cml2YXRlTmFtZSA9IG1hdGNoKFBSSVZBVEVOQU1FKTsKKyAgICBpZiAobWF0Y2hTcGVjSWRlbnRp
ZmllcigpIHx8IG1hdGNoKFNUUklORykgfHwgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkg
JiYgbWF0Y2hlc1ByaXZhdGVOYW1lKSB8fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZs
YWcpIHsKICAgICAgICAgc3RyaW5nUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7
CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpTdGF0
aWMgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlw
ZSwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQgJ3By
b3RvdHlwZSciKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1l
bnRUYWc6Okluc3RhbmNlICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0gbV92bS5wcm9wZXJ0eU5h
bWVzLT5jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIGdldHRlciBv
ciBzZXR0ZXIgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOworCisgICAgICAgIGlmIChtYXRjaChQUklW
QVRFTkFNRSkpIHsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NF
bGVtZW50VGFnOjpObywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBzZXR0ZXIgb3IgZ2V0dGVy
IG91dHNpZGUgYSBjbGFzcyIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9
PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBzZXR0
ZXIgb3IgZ2V0dGVyIGFzIHN0YXRpYyIpOworICAgICAgICB9CiAgICAgICAgIG5leHQoKTsKICAg
ICB9IGVsc2UgaWYgKG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikpIHsKICAgICAgICAg
bnVtZXJpY1Byb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAtNDQ1
NCwxMCArNDQ3NywxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9wZXJ0
eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogICAgICAgICBmYWlsSWZG
YWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3IgZ2V0
dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBp
bm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlKTsK
ICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9u
TmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJC
aW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9u
RGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0aW9u
Iik7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlNl
dHRlcikgewogICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQg
YSBwYXJhbWV0ZXIgbGlzdCBmb3Igc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgU2V0Rm9y
U2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNl
UGFyc2VNb2RlOjpTZXR0ZXJNb2RlKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rp
b25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2Us
IGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3Rh
cnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90
IHBhcnNlIHNldHRlciBkZWZpbml0aW9uIik7CisgICAgfSBlbHNlIGlmICh0eXBlICYgUHJvcGVy
dHlOb2RlOjpQcml2YXRlU2V0dGVyKSB7CisgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5Q
QVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBwcml2YXRlIHNldHRlciBkZWZp
bml0aW9uIik7CisgICAgICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJz
ZU1vZGUobV9wYXJzZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSk7CisgICAgICAg
IGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1
aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6
TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRp
b25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBwcml2YXRlIHNldHRlciBkZWZpbml0aW9u
Iik7CisgICAgfSBlbHNlIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKSB7
CisgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFt
ZXRlciBsaXN0IGZvciBwcml2YXRlIGdldHRlciBkZWZpbml0aW9uIik7CisgICAgICAgIFNldEZv
clNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIFNvdXJj
ZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0
aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZhbHNl
LCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0
YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5v
dCBwYXJzZSBwcml2YXRlIGdldHRlciBkZWZpbml0aW9uIik7CiAgICAgfQogCiAgICAgaWYgKHN0
cmluZ1Byb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4
IDY4ZWZjYWRlYWEzZjYwOTUzZmU5NmNkMmViZmQwZDdiYTg1NDQ5NTUuLjRlOTY2NGZlY2ZiNjkz
MzA1NThlN2E4Njc0NmEyZDJiNjZkOWM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Q
YXJzZXIuaApAQCAtNTE3LDYgKzUxNywzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiByZXN1
bHQ7CiAgICAgfQogCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlU2V0
dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fYWxs
b3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBy
ZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGJvb2wgYWRkUmVzdWx0
ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKKworICAg
ICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0aW9u
UmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAg
ICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRp
ZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFy
YXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0
aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJp
YWJsZXMuZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVz
dWx0KSB7CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWRE
dXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAg
IH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIERlY2xhcmF0aW9uUmVz
dWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQogICAg
IHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuY3BwCmluZGV4IGM1OWUwNjhhZjQ4
MzNkMGQzNTkzNWMxOTZkOTJkNjVmZjlmODBkYmEuLmU1ODFhZmFmZmJmYThiN2JiOTRmOTRkNTg3
ZGFkOTNjMWMwZWJlN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyQXJlbmEuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2Vy
QXJlbmEuY3BwCkBAIC0xMTUsNCArMTE1LDExIEBAIGNvbnN0IElkZW50aWZpZXImIElkZW50aWZp
ZXJBcmVuYTo6bWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiB2bSwgQVNDSUlMaXRlcmFsIHByCiAg
ICAgcmV0dXJuIG1faWRlbnRpZmllcnMubGFzdCgpOwogfQogCitjb25zdCBJZGVudGlmaWVyJiBJ
ZGVudGlmaWVyQXJlbmE6Om1ha2VQcml2YXRlSWRlbnRpZmllcihWTSYgdm0sIGNvbnN0IElkZW50
aWZpZXImIGlkZW50aWZpZXIpCit7CisgICAgYXV0byBzeW1ib2wgPSB2bS5wcml2YXRlU3ltYm9s
UmVnaXN0cnkoKS5zeW1ib2xGb3JLZXkoaWRlbnRpZmllci5zdHJpbmcoKSk7CisgICAgbV9pZGVu
dGlmaWVycy5hcHBlbmQoSWRlbnRpZmllcjo6ZnJvbVVpZChzeW1ib2wpKTsKKyAgICByZXR1cm4g
bV9pZGVudGlmaWVycy5sYXN0KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyQXJlbmEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyQXJlbmEuaAppbmRleCBiZTI3ZjM0YjFjODk3NzM5OGUxZjQzMzFmYjkzMWEzZWVj
Y2Y3MDllLi45NmEzOWI5MGMwMTA5N2VkYTVjZDU2YTRkMTIyMWZkMGJmYjk3YjhiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlckFyZW5hLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXJBcmVuYS5oCkBAIC01Myw2ICs1Myw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlQmlnSW50RGVj
aW1hbElkZW50aWZpZXIoVk0mLCBjb25zdCBJZGVudGlmaWVyJiwgdWludDhfdCByYWRpeCk7CiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXImIG1ha2VOdW1lcmljSWRlbnRpZmllcihWTSYsIGRvdWJs
ZSBudW1iZXIpOwogICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBtYWtlUHJpdmF0ZUlkZW50aWZp
ZXIoVk0mLCBBU0NJSUxpdGVyYWwsIHVuc2lnbmVkKTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmll
ciYgbWFrZVByaXZhdGVJZGVudGlmaWVyKFZNJiwgY29uc3QgSWRlbnRpZmllciYpOwogCiAgICAg
cHVibGljOgogICAgICAgICBzdGF0aWMgY29uc3QgaW50IE1heGltdW1DYWNoYWJsZUNoYXJhY3Rl
ciA9IDEyODsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFi
bGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxl
RW52aXJvbm1lbnQuY3BwCmluZGV4IDNlYzU3YzNlMmFiYTVkYjM3YjdmYjYyZTNjOWYwYTE2M2Zi
NWRlNjcuLmE4MWJjZGMwNjlhNjg5OGRmMDhkNTUzYTU1OTU3YjdmNjY4YzMzZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cApAQCAtMTA0LDYgKzEwNCwxMDIgQEAgdm9pZCBWYXJpYWJsZUVudmlyb25tZW50OjptYXJrVmFy
aWFibGVBc0V4cG9ydGVkKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4KICAgICBmaW5k
UmVzdWx0LT52YWx1ZS5zZXRJc0V4cG9ydGVkKCk7CiB9CiAKK2Jvb2wgVmFyaWFibGVFbnZpcm9u
bWVudDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBs
PiYgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURh
dGEgPSBXVEY6Om1ha2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisK
KyAgICBhdXRvIGZpbmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlk
ZW50aWZpZXIpOworCisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRl
TmFtZXMuZW5kKCkpIHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1l
RW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNT
ZXR0ZXIpOworCisgICAgICAgIGF1dG8gZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnko
KTsKKyAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlU2V0dGVyKCk7CisgICAgICAgIGVudHJ5LnNl
dElzQ29uc3QoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDYXB0dXJlZCgpOworICAgICAgICBtX21h
cC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gbV9y
YXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuYWRkKGlkZW50aWZpZXIsIG1ldGEpOworICAgICAgICBy
ZXR1cm4gYWRkUmVzdWx0LmlzTmV3RW50cnk7CisgICAgfQorCisgICAgUHJpdmF0ZU5hbWVFbnRy
eSBjdXJyZW50RW50cnkgPSBmaW5kUmVzdWx0LT52YWx1ZTsKKyAgICBpZiAoY3VycmVudEVudHJ5
LmlzRGVjbGFyZWQoKSkgeworICAgICAgICBpZiAoY3VycmVudEVudHJ5LmlzU2V0dGVyKCkgfHwg
Y3VycmVudEVudHJ5LmlzTWV0aG9kKCkgfHwgIWN1cnJlbnRFbnRyeS5pc0dldHRlcigpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHBy
aXZhdGUgbmFtZS4KKworICAgICAgICBBU1NFUlQoY3VycmVudEVudHJ5LmlzR2V0dGVyKCkpOwor
ICAgICAgICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoY3VycmVudEVudHJ5LmJpdHMoKSB8IFByaXZh
dGVOYW1lRW50cnk6OlRyYWl0czo6SXNTZXR0ZXIpOworICAgICAgICBtX3JhcmVEYXRhLT5tX3By
aXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbWV0YSk7CisKKyAgICAgICAgYXV0byBlbnRyeUl0
ZXJhdG9yID0gbV9tYXAuZmluZChpZGVudGlmaWVyKTsKKyAgICAgICAgQVNTRVJUKGVudHJ5SXRl
cmF0b3IgIT0gbV9tYXAuZW5kKCkpOworICAgICAgICBlbnRyeUl0ZXJhdG9yLT52YWx1ZS5zZXRJ
c1ByaXZhdGVTZXR0ZXIoKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIGF1dG8g
ZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBlbnRyeS5zZXRJc1ByaXZh
dGVTZXR0ZXIoKTsKKyAgICBlbnRyeS5zZXRJc0NvbnN0KCk7CisgICAgZW50cnkuc2V0SXNDYXB0
dXJlZCgpOworICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICBQcml2YXRl
TmFtZUVudHJ5IG5ld0VudHJ5KGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5
OjpUcmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVy
KTsKKyAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3RW50
cnkpOworICAgIHJldHVybiB0cnVlOworfQorCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRl
Y2xhcmVQcml2YXRlR2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50
aWZpZXIpCit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gV1RG
OjptYWtlVW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0
byBmaW5kUmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVy
KTsKKworICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVu
ZCgpKSB7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsK
KworICAgICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAg
ICAgIGVudHJ5LnNldElzUHJpdmF0ZUdldHRlcigpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0
KCk7CisgICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlk
ZW50aWZpZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEt
Pm1fcHJpdmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFk
ZFJlc3VsdC5pc05ld0VudHJ5OworICAgIH0KKworICAgIFByaXZhdGVOYW1lRW50cnkgY3VycmVu
dEVudHJ5ID0gZmluZFJlc3VsdC0+dmFsdWU7CisgICAgaWYgKGN1cnJlbnRFbnRyeS5pc0RlY2xh
cmVkKCkpIHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeS5pc0dldHRlcigpIHx8IGN1cnJlbnRF
bnRyeS5pc01ldGhvZCgpIHx8ICFjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSkKKyAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5h
bWUuCisKKyAgICAgICAgQVNTRVJUKGN1cnJlbnRFbnRyeS5pc1NldHRlcigpKTsKKyAgICAgICAg
UHJpdmF0ZU5hbWVFbnRyeSBtZXRhKGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVu
dHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFt
ZXMuc2V0KGlkZW50aWZpZXIsIG1ldGEpOworCisgICAgICAgIGF1dG8gZW50cnlJdGVyYXRvciA9
IG1fbWFwLmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChlbnRyeUl0ZXJhdG9yICE9
IG1fbWFwLmVuZCgpKTsKKyAgICAgICAgZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRl
R2V0dGVyKCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gaXQgd2Fz
IHByZXZpb3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBhdXRvIGVudHJ5ID0g
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVy
KCk7CisgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsK
KyAgICBtX21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgUHJpdmF0ZU5hbWVFbnRy
eSBuZXdFbnRyeShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRz
OjpJc0RlY2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcik7CisgICAg
bV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAg
ICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJp
dmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQog
ewogICAgIGlmICghbV9yYXJlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Bh
cnNlci9WYXJpYWJsZUVudmlyb25tZW50LmgKaW5kZXggZjZkMzU4YjE5NzAwMmQyMGRlOTdmNDA2
OTNjMzNmNjlkNTU3MzgyYi4uMDI1MTY5YmUyYWJmZWVkNTY2NWRhZDc5YTYyNTgzODRhMWM5Y2Iz
MSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmly
b25tZW50LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmly
b25tZW50LmgKQEAgLTQ3LDYgKzQ3LDggQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9v
bCBpc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAm
IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29s
IGlzUHJpdmF0ZUZpZWxkKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlRmllbGQ7
IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlTWV0aG9kKCkgY29uc3QgeyByZXR1
cm4gbV9iaXRzICYgSXNQcml2YXRlTWV0aG9kOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlz
UHJpdmF0ZVNldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZVNldHRlcjsg
fQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVHZXR0ZXIoKSBjb25zdCB7IHJldHVy
biBtX2JpdHMgJiBJc1ByaXZhdGVHZXR0ZXI7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBz
ZXRJc0NhcHR1cmVkKCkgeyBtX2JpdHMgfD0gSXNDYXB0dXJlZDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgdm9pZCBzZXRJc0NvbnN0KCkgeyBtX2JpdHMgfD0gSXNDb25zdDsgfQpAQCAtNjAsNiArNjIs
OCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzU2xvcHB5TW9kZUhvaXN0
aW5nQ2FuZGlkYXRlKCkgeyBtX2JpdHMgfD0gSXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGU7
IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlRmllbGQoKSB7IG1fYml0cyB8
PSBJc1ByaXZhdGVGaWVsZDsgfQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVN
ZXRob2QoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5F
IHZvaWQgc2V0SXNQcml2YXRlU2V0dGVyKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlU2V0dGVyOyB9
CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZUdldHRlcigpIHsgbV9iaXRzIHw9
IElzUHJpdmF0ZUdldHRlcjsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIGNsZWFySXNWYXIo
KSB7IG1fYml0cyAmPSB+SXNWYXI7IH0KIApAQCAtODQsNiArODgsOCBAQCBwcml2YXRlOgogICAg
ICAgICBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSA9IDEgPDwgOSwKICAgICAgICAgSXNQ
cml2YXRlRmllbGQgPSAxIDw8IDEwLAogICAgICAgICBJc1ByaXZhdGVNZXRob2QgPSAxIDw8IDEx
LAorICAgICAgICBJc1ByaXZhdGVHZXR0ZXIgPSAxIDw8IDEyLAorICAgICAgICBJc1ByaXZhdGVT
ZXR0ZXIgPSAxIDw8IDEzLAogICAgIH07CiAgICAgdWludDE2X3QgbV9iaXRzIHsgMCB9OwogfTsK
QEAgLTEwMSw4ICsxMDcsMTEgQEAgcHVibGljOgogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1Vz
ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1VzZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5F
IGJvb2wgaXNEZWNsYXJlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzRGVjbGFyZWQ7IH0K
ICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc01ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1NldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzU2V0dGVyOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzR2V0
dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNHZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIGJvb2wgaXNGaWVsZCgpIGNvbnN0IHsgcmV0dXJuICFpc1ByaXZhdGVNZXRob2RPckFjZXNz
b3IoKTsgfQogCi0gICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSBjb25zdCB7IHJl
dHVybiBpc01ldGhvZCgpOyB9CisgICAgYm9vbCBpc1ByaXZhdGVNZXRob2RPckFjZXNzb3IoKSBj
b25zdCB7IHJldHVybiBpc01ldGhvZCgpIHx8IGlzU2V0dGVyKCkgfHwgaXNHZXR0ZXIoKTsgfQog
CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzVXNlZCgpIHsgbV9iaXRzIHw9IElzVXNlZDsg
fQogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc0RlY2xhcmVkKCkgeyBtX2JpdHMgfD0gSXNE
ZWNsYXJlZDsgfQpAQCAtMTE5LDYgKzEyOCw4IEBAIHB1YmxpYzoKICAgICAgICAgSXNVc2VkID0g
MSA8PCAwLAogICAgICAgICBJc0RlY2xhcmVkID0gMSA8PCAxLAogICAgICAgICBJc01ldGhvZCA9
IDEgPDwgMiwKKyAgICAgICAgSXNHZXR0ZXIgPSAxIDw8IDMsCisgICAgICAgIElzU2V0dGVyID0g
MSA8PCA0LAogICAgIH07CiAKIHByaXZhdGU6CkBAIC0xOTUsNiArMjA2LDEyIEBAIHB1YmxpYzoK
ICAgICBib29sIGRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZp
ZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIuaW1wbCgpKTsgfQog
ICAgIGJvb2wgZGVjbGFyZVByaXZhdGVNZXRob2QoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJ
bXBsPiYgaWRlbnRpZmllcik7CiAKKyAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0
IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRlY2xhcmVQcml2YXRlU2V0dGVyKGlk
ZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3Qg
UmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcik7CisKKyAgICBib29sIGRlY2xh
cmVQcml2YXRlR2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50aWZpZXIpIHsgcmV0dXJuIGRl
Y2xhcmVQcml2YXRlR2V0dGVyKGlkZW50aWZpZXIuaW1wbCgpKTsgfQorICAgIGJvb2wgZGVjbGFy
ZVByaXZhdGVHZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmll
cik7CisKICAgICBNYXA6OkFkZFJlc3VsdCBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IFJlZlB0
cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiAgICAgewogICAgICAgICBhdXRvJiBt
ZXRhID0gZ2V0T3JBZGRQcml2YXRlTmFtZShpZGVudGlmaWVyLmdldCgpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKaW5kZXggZDg3
NDQ3OTRiYmIxYWQzMDMxZmI0OGFiYzY0ZWU1NTAzM2M2YmFiNS4uMmRlZmVhMzdiMzZmMWRkMzUw
MWUxOGNjMGZlMjI5YjNhNGU3NjA3MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvRXhjZXB0aW9uSGVscGVycy5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCBKU09iamVj
dCogY3JlYXRlUmVkZWZpbmVkUHJpdmF0ZU5hbWVFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0KQogCiBKU09iamVjdCogY3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7Ci0gICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBtZXRob2QiX3Mp
LCBkZWZhdWx0U291cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKKyAgICByZXR1cm4gY3JlYXRl
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFjY2VzcyBwcml2YXRl
IG1ldGhvZCBvciBhY2Vzc29yIl9zKSwgZGVmYXVsdFNvdXJjZUFwcGVuZGVyLCBUeXBlTm90aGlu
Zyk7CiB9CiAKIEpTT2JqZWN0KiBjcmVhdGVSZWluc3RhbGxQcml2YXRlTWV0aG9kRXJyb3IoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNDQxZmYxNDI3NTMzOTU4N2QxNDAxZjIxODkwNDNm
N2YzYTNhOWJmNy4uMTU3YTQ0OTA0NGY4NzZjMGM5NzkxYzNjZGVkNmJlZTVhOTIyMzY1NCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMCBAQAorMjAyMS0wMi0xMCAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+
CisKKyAgICAgICAgW0VTTmV4dF0gSW1wbGVtZW50IHByaXZhdGUgYWNjZXNzb3JzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTQ0MzUKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9wcml2YXRl
LWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3ByaXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qczogQWRkZWQuCisgICAgICAgICog
c3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOgorICAgICAg
ICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1p
bml0aWFsaXphdGlvbi5qczogQ29waWVkIGZyb20gSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1l
cy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUt
c2V0dGVyLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1z
ZXR0ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlh
bWw6CisKIDIwMjEtMDItMDkgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbSlNDXSBDKysgaXRlcmF0aW9uIHNob3VsZCBzdXBwb3J0IGZhc3QgaXRlcmF0b3Ig
cHJvdG9jb2wKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBs
aWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWFjY2Vz
b3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNjYTNiZmI2NGYy
YzNjNjJjOGFhMTEwNDBiMGMwOTBiMGY5YWY5YjcKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLWFjY2Vzb3ItZHVwbGljYXRlLW5hbWUtZWFybHktZXJyb3JzLmpzCkBA
IC0wLDAgKzEsOTIgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10
cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJo
cykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisg
ICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsK
KyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICgh
KGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
RXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3
OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAg
ICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAgICAgICAgICBzZXQgI20odSkge30K
KyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNt
OworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAg
IGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
IGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMu
X3YgPSB2OyB9CisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fz
c2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAg
ICBjbGFzcyBDIHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisgICAg
ICAgICAgICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dz
KFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICAjbSgpIHt9CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICB9
CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30K
KyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3Nl
cnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAg
Y2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAgc2V0ICNtKCkg
e30KKyAgICAgICAgICAgICNtOworICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRo
cm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNz
IEMgeworICAgICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgICAgIHNldCAjbSgpIHt9Cisg
ICAgICAgICAgICAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkNDE1ZGI4
YWU2YmVkMDQ5MDA1YjczOTVlZmJhZTg1NTAxOTIxZmIKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1icmFuZC1jaGVjay5qcwpAQCAtMCwwICsxLDkxIEBA
CisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBh
c3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAg
aWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDog
IiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVu
Y3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3Ao
KTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2Yg
ZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3Rl
ZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAg
ICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5z
dGFudGlhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAg
ICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICAgICAgYWNjZXNzKG8p
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJldHVybiBuZXcgQygpOworICAgIH0KKworICAgIGxldCBjMSA9IGNyZWF0
ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsKKyAgICBsZXQgYzIgPSBjcmVhdGVBbmRJbnN0YW50aWF0
ZUNsYXNzKCk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLmFjY2VzcyhjMSksICd0ZXN0Jyk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjMi5hY2Nlc3MoYzIpLCAndGVzdCcpOworCisgICAgYXNz
ZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIp
OworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBjMi5hY2Nlc3MoYzEpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1cGVyIGNsYXNzJzsg
fQorCisgICAgICAgIHN1cGVyQWNjZXNzKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorICAgIH0KKwor
ICAgIGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3N1YmNs
YXNzJzsgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNt
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmFjY2VzcygpLCAnc3ViY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGMuc3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShzLnN1cGVyQWNjZXNzKCksICdzdXBlciBjbGFzcycpOwor
ICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nl
c3MuY2FsbChzKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vz
cyhvKSB7CisgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAg
IGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKGMpLCAndGVz
dCcpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKG8pOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjBj
ZWRmZTI1NDZjYTUxMTg4NmExMGM2MmMyNWM0YTAwZDU1OGM1Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAsMCArMSwx
NTkgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKwor
bGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAg
ICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVj
dGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dz
OiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAg
ICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFu
Y2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7
CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgewor
ICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBCID0gY2xhc3Mg
eworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJC
Lm1ldGhvZChjKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAg
ICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAg
ICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICNtID0gJ3Rlc3QnOworICAgICAgICB9CisgICAgfQor
CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAg
YXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7Cisg
ICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBn
ZXQgI20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyBy
ZXR1cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRo
b2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAg
IGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLm1ldGhvZChpbm5lckIpLCAndGVzdCcpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOwor
ICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
Z2V0ICNtKCkgeyB0aHJvdyBuZXcgRXJyb3IoJ1Nob3VsZCBuZXZlciBleGVjdXRlJyk7IH0KKwor
ICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gby4jbSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsg
cmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5l
ckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1
cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMuI207
IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAg
ICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc2V0
ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93
cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQik7
CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFz
cycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAg
ICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbSgpOyB9CisKKyAgICAgICAgQiA9IGNsYXNz
IHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207
CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0MjYy
JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBp
bm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlu
bmVyQiksICd0ZXN0MjYyJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0
ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7Cisg
ICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSwgJ2FjY2Vzc2VkIGlubmVyIGNsYXNzIGdl
dHRlciBmcm9tIGFuIG9iamVjdCBvZiBvdXRlciBjbGFzcycpOworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgQy5wcm90b3R5cGUubWV0aG9kLmNhbGwo
aW5uZXJCKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3By
aXZhdGUtbWVtYmVycy1nZXQtYW5kLXNldC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWVt
YmVycy1nZXQtYW5kLXNldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xMDFmNjU5ODE4ZWVmYmM4YmEzMjY5YjM4
ZTc0YTk2NDBhNTVkYjAwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCkBAIC0wLDAgKzEsNjMgQEAKKy8vQCByZXF1aXJlT3B0
aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBz
YW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMp
CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcg
Z290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRF
cnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNh
dGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkK
KyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsg
ZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0
aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIoKSB7CisgICAgICAg
ICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAg
ICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAo
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQor
CisgICAgICAgIGFjY2Vzc1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhpcy4jbSA9
IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2YXRl
TWVtYmVyKCd0ZXN0Jyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIGFjY2Vz
c1ByaXZhdGVNZW1iZXIodikgeworICAgICAgICAgICAgdGhpcy4jbSA9IHY7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgYy5hY2Nlc3NQcml2YXRlTWVtYmVyKCd0ZXN0Jyk7
CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5h
bWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCmluZGV4IDY0Y2UwZTBhZjgwNTc4ZTg5
NzE2YTE2NzJlZGMxNzczMDViMDY0ZjMuLjNlYTljN2Q0M2MzZGFjMTVlMGY4ZDA5MzNhOTI1ZmU4
MTY1ZDA3ZGMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxh
YmxlLW9uLWRpcmVjdC1ldmFsLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMt
YXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzCkBAIC0yMSwzICsyMSwzNiBAQCBsZXQgYXNzZXJ0
ID0gewogICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsTWV0aG9kRnJvbUV2YWwoKSwgJ3Rlc3Qn
KTsKIH0pKCk7CiAKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAj
bSgpIHsKKyAgICAgICAgICAgIHJldHVybiAndGVzdCc7CisgICAgICAgIH0KKworICAgICAgICBj
YWxsR2V0dGVyRnJvbUV2YWwoKSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9IHRoaXM7CisgICAg
ICAgICAgICByZXR1cm4gZXZhbCgnc2VsZi4jbScpOworICAgICAgICB9CisgICAgfQorCisgICAg
bGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5jYWxsR2V0dGVyRnJvbUV2
YWwoKSwgJ3Rlc3QnKTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aGlzLl92ID0gdjsKKyAgICAgICAgfQor
CisgICAgICAgIGNhbGxTZXR0ZXJGcm9tRXZhbCh2KSB7CisgICAgICAgICAgICBsZXQgc2VsZiA9
IHRoaXM7CisgICAgICAgICAgICBldmFsKCdzZWxmLiNtID0gdicpOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuY2FsbFNldHRlckZyb21FdmFsKCd0ZXN0
JykKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7Cit9KSgpOworCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmlu
Zy1maWVsZC1pbml0aWFsaXphdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbmFtZXMt
YXZhaWxhYmxlLW9uLWV2YWwtZHVyaW5nLWZpZWxkLWluaXRpYWxpemF0aW9uLmpzCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjE3N2YwZGRkYjE5ZmNhOGZjMmUyNmM0ZWE4Y2FkNGJjNzg0ZTM0OTIKLS0tIC9kZXYvbnVs
bAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1
cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qcwpAQCAtMCwwICsxLDMxIEBACisvL0AgcmVxdWly
ZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7Cisg
ICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0g
cmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIHJocyArICIg
YnVnIGdvdDogIiArIGxocyk7CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKworICAgICAgICBmaWVsZCA9
IGV2YWwoJ3RoaXMuI20oKScpOworICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMuZmllbGQsICd0ZXN0Jyk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkg
eworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKwor
ICAgICAgICBmaWVsZCA9IGV2YWwoJ3RoaXMuI20nKTsKKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAndGVzdCcpOworfSkoKTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hlY2suanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1icmFuZC1jaGVjay5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li42ZjIzZjZiZjhlNDIxZWMxMTMwMzkxODYzNTk4YTRiNDQ3YjU5OGM0Ci0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hlY2suanMKQEAgLTAs
MCArMSwxMDAgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykg
eworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAg
dGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAi
ICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBj
cmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjbGFzcyBD
IHsKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAgICAg
IGFjY2VzcyhvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKworICAgICAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgICAgIHJldHVybiBj
OworICAgIH07CisKKyAgICBsZXQgYzEgPSBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzKCk7Cisg
ICAgbGV0IGMyID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworCisgICAgYzEuYWNjZXNz
KGMxLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzEuX3YsICd0ZXN0Jyk7CisgICAg
YzIuYWNjZXNzKGMyLCAndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYzIuX3YsICd0ZXN0
Jyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAg
IGMxLmFjY2VzcyhjMiwgJ2ZvbycpOworICAgIH0pOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMi5hY2Nlc3MoYzEsICdmb28nKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgUyB7CisgICAgICAgIHNldCAj
bSh2KSB7IHRoaXMuX3YgPSB2IH0KKworICAgICAgICBzdXBlckFjY2Vzcyh2KSB7IHRoaXMuI20g
PSB2OyB9CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMgeworICAgICAgICBzZXQgI20o
dikgeyB0aGlzLl91ID0gdjsgfQorCisgICAgICAgIGFjY2Vzcyh2KSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBD
KCk7CisKKyAgICBjLmFjY2VzcygndGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdSwg
J3Rlc3QnKTsKKworICAgIGMuc3VwZXJBY2Nlc3MoJ3N1cGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLl92LCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGxldCBzID0gbmV3IFMoKTsK
KyAgICBzLnN1cGVyQWNjZXNzKCdzdXBlciBjbGFzcycpCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShz
Ll92LCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MuY2FsbChzLCAnZm9vJyk7CisgICAgfSk7Cit9KSgp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0
aGlzLl92ID0gdjsgfQorCisgICAgICAgIGFjY2VzcyhvLCB2KSB7CisgICAgICAgICAgICByZXR1
cm4gby4jbSA9IHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgYy5hY2Nlc3MoYywgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0
Jyk7CisKKyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5j
dGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MobywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMg
Yi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLXNldHRlci1pbm5lci1jbGFzcy5qcwpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yNmRiODlkNzNmODE3ZWJhYmE1YjFhMDI0MjE3Y2UyOTVlNzk3YTNjCi0tLSAvZGV2L251bGwK
KysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMKQEAgLTAs
MCArMSwxNTUgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVl
IikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykg
eworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAg
dGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAg
ICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUg
aW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAi
ICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIEIgPSBj
bGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAgIG8uI20g
PSB2OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgaW5uZXJCLm1ldGhvZChjLCAn
dGVzdCcpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3Rlc3QnKTsKK30pKCk7CisKKyhm
dW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3Yg
PSB2OyB9CisKKyAgICAgICAgbWV0aG9kKHYpIHsgdGhpcy4jbSA9IHY7IH0KKworICAgICAgICBC
ID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBv
LiNtID0gdjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0IG0oKSB7IHJldHVybiB0
aGlzLiNtOyB9CisKKyAgICAgICAgICAgICNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBpbm5lckIu
bWV0aG9kKGlubmVyQiwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tLCAn
dGVzdCcpOworCisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLl92LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjLCAnZm9vJyk7CisgICAgfSk7
Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20o
dikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9
CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAg
ICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCAj
bSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoaW5uZXJCKTsK
KyAgICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgp
OworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0
aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAg
ICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAg
ICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeyByZXR1
cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChpbm5lckIsICdmb28nKTsKKyAg
ICB9KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFs
dWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOwor
CisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlz
Ll92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAg
ICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAg
ICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldCAjbSh2KSB7IHRo
aXMuX3YgPSB2OyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKworICAgIGlubmVyQi5tZXRob2QoaW5uZXJCLCAn
dGVzdDI2MicpOworICAgIGFzc2VydC5zYW1lVmFsdWUoaW5uZXJCLl92LCAndGVzdDI2MicpOwor
CisgICAgYy5tZXRob2QoJ291dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92
LCAnb3V0ZXIgY2xhc3MnKTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjLCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOwor
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKaW5kZXggNTE1ZGEzY2RiNzkwZWE3ZDczNmY4NmFjNzNmMzE4NjdkYmI5
ZWUxNy4uNDExNjY3NmRkMWVhODY0MzE1ODY0MDk1ZTU0NjFkMTkwZDZlNWJhMSAxMDA2NDQKLS0t
IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25m
aWcueWFtbApAQCAtNCw2ICs0LDcgQEAgZmxhZ3M6CiAgIFdlYWtSZWY6IHVzZVdlYWtSZWZzCiAg
IEZpbmFsaXphdGlvblJlZ2lzdHJ5OiB1c2VXZWFrUmVmcwogICBjbGFzcy1maWVsZHMtcHJpdmF0
ZTogdXNlUHJpdmF0ZUNsYXNzRmllbGRzCisgIGNsYXNzLW1ldGhvZHMtcHJpdmF0ZTogdXNlUHJp
dmF0ZU1ldGhvZHMKICAgY2xhc3Mtc3RhdGljLWZpZWxkcy1wdWJsaWM6IHVzZVB1YmxpY1N0YXRp
Y0NsYXNzRmllbGRzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHJpdmF0ZTogdXNlUHJpdmF0ZVN0
YXRpY0NsYXNzRmllbGRzCiAgIEludGwuRGF0ZVRpbWVGb3JtYXQtZGF5UGVyaW9kOiB1c2VJbnRs
RGF0ZVRpbWVGb3JtYXREYXlQZXJpb2QKQEAgLTE5LDcgKzIwLDYgQEAgc2tpcDoKICAgICAtIHJl
Z2V4cC1sb29rYmVoaW5kCiAgICAgLSBsZWdhY3ktcmVnZXhwCiAKLSAgICAtIGNsYXNzLW1ldGhv
ZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xl
YW51cFNvbWUKICAgICAtIGhvc3QtZ2MtcmVxdWlyZWQK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420127</attachid>
            <date>2021-02-12 08:39:00 -0800</date>
            <delta_ts>2021-02-15 12:43:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194435-20210212133858.patch</filename>
            <type>text/plain</type>
            <size>75587</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWIwMmZhMTIzZDg5YjM2OTdlZDZhNWE1YmI0N2ExOWY2YzNkNzI1Li5hMjViZGQzZDYwMTExNjQy
NDQ3NWQ4NDUwMDg1N2I5YjExZDg1OTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDItMTIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpcyBp
bXBsZW1lbnRpbmcgc3VwcG9ydCBmb3IgaW5zdGFuY2UgcHJpdmF0ZSBnZXR0ZXJzIGFuZAorICAg
ICAgICBzZXR0ZXJzIGZvbGxvd2luZyB0aGUgcHJvcG9zYWwgb24gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXByaXZhdGUtbWV0aG9kcy4KKyAgICAgICAgUHJpdmF0ZSBhY2Nlc3NvcnMgYWxzbyB1
c2UgdGhlIHByaXZhdGUgYnJhbmQgY2hlY2sgbWVjaGFuaXNtIG9mCisgICAgICAgIHByaXZhdGUg
bWV0aG9kcywgd2hpY2ggbWVhbnMgdGhhdCB3ZSBhcmUgdXNpbmcgYm90aAorICAgICAgICBgb3Bf
c2V0X3ByaXZhdGVfYnJhbmRgIGFuZCBgb3BfY2hlY2tfcHJpdmF0ZV9icmFuZGAgdG8gcGVyZm9y
bSBicmFuZAorICAgICAgICBjaGVja3MuIEFjY2Vzc29ycyBhcmUgYWxzbyBzdG9yZWQgb24gY2xh
c3MgbGV4aWNhbCBzY29wZSBhcyBhIHBhaXIgb2YKKyAgICAgICAgYGdldHRlcmAgYW5kIGBzZXR0
ZXJgLiBUaGlzIGlzIGRvbmUgY3JlYXRpbmcgYSBuZXcgYEpTT2JqZWN0YCBhbmQKKyAgICAgICAg
c3RvcmluZyB0aGUgYGdldHRlcmAgb24gYGdldGAgcHJvcGVydHksIGFuZCBgc2V0dGVyYCBvbiBg
c2V0YAorICAgICAgICBwcm9wZXJ0eS4gVGhpcyBpcyBkZXNpZ25lZCBpbiBzdWNoIHdheSB0aGF0
IHdlIGNhbiBhbHdheXMgaGl0IElDIGZhc3QKKyAgICAgICAgcGF0aCBvbiBgZ2V0X2J5X2lkX2Rp
cmVjdGAgdG8gYWNjZXNzIHRoZSBwcm9wZXJ0eSwgYW5kIGFsc28gdG8gYWxsb3cKKyAgICAgICAg
Y29uc3RhbnQgZm9sZGluZyBvZiBhY2Nlc3NvcnMgb24gREZHL0ZUTCwgc2luY2UgYWNlc3NvcnMg
b2JqZWN0cyBhcmUKKyAgICAgICAgZ29pbmcgdG8gYmUgY29uc3RhbnQgb25jZSBjcmVhdGVkLgor
CisgICAgICAgIEZvciByZWZlcmVuY2UsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBieXRlY29kZSBm
b3IgYSBwcml2YXRlIGdldHRlcgorICAgICAgICBhY2Nlc3M6CisKKyAgICAgICAgYGBgCisgICAg
ICAgIGNsYXNzIEMgeworICAgICAgICAgICAgZ2V0ICNtKCkgey4uLn0KKyAgICAgICAgICAgIGFj
Y2VzcygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy4jbTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgICAgICBgYGAKKworICAgICAgICBCeXRlY29kZSBmb3IgY2xhc3MgZGVj
bGFyYXRpb246CisKKyAgICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICBuZXdfb2JqZWN0
ICAgICAgICAgZHN0OmxvYzEyLCBpbmxpbmVDYXBhY2l0eToyIC8vIHRoaXMgaXMgdGhlIG9iamVj
dCB0byBzdG9yZSBnZXR0ZXIgYW5kIHNldHRlciBwYWlyCisgICAgICAgIG5ld19mdW5jX2V4cCAg
ICAgICBkc3Q6bG9jMTMsIHNjb3BlOmxvYzQsIGZ1bmN0aW9uRGVjbDoiZ2V0ICNtKCkgey4uLn0i
CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAgICBiYXNlOmxvYzEzLCBwcm9wZXJ0eTpAaG9tZU9i
amVjdCwgdmFsdWU6bG9jMTEsIGZsYWdzOlN0cmljdAorICAgICAgICBwdXRfYnlfaWQgICAgICAg
ICAgYmFzZTpsb2MxMiwgcHJvcGVydHk6QGdldCwgdmFsdWU6bG9jMTMsIGZsYWdzOklzRGlyZWN0
fFN0cmljdAorICAgICAgICBwdXRfdG9fc2NvcGUgICAgICAgc2NvcGU6bG9jNCwgdmFyOiNtLCB2
YWx1ZTpsb2MxMiAvLyBsb2M0IGlzIHRoZSBjbGFzcyBsZXhpY2FsIHNjb3BlCisgICAgICAgIC4u
LgorCisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBgYWNjZXNzKClgOgorCisg
ICAgICAgIGBgYAorICAgICAgICAuLi4KKyAgICAgICAgcmVzb2x2ZV9zY29wZSAgICAgIGRzdDps
b2M3LCBzY29wZTpsb2M0LCB2YXI6IiNtIiwgcmVzb2x2ZVR5cGU6R2xvYmFsUHJvcGVydHksIGxv
Y2FsU2NvcGVEZXB0aDowCisgICAgICAgIGdldF9mcm9tX3Njb3BlICAgICBkc3Q6bG9jOCwgc2Nv
cGU6bG9jNywgdmFyOkBwcml2YXRlQnJhbmQKKyAgICAgICAgY2hlY2tfcHJpdmF0ZV9icmFuZCBi
YXNlOnRoaXMsIGJyYW5kOmxvYzgKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRzdDpsb2M4
LCBzY29wZTpsb2M3LCB2YXI6IiNtIgorICAgICAgICBnZXRfYnlfaWRfZGlyZWN0ICAgZHN0Omxv
YzksIGJhc2U6bG9jOCwgcHJvcGVydHk6QGdldAorICAgICAgICBtb3YgICAgICAgICAgICAgICAg
ZHN0OmxvYzEwLCBzcmM6dGhpcworICAgICAgICBjYWxsICAgICAgICAgICAgICAgZHN0OmxvYzYs
IGNhbGxlZTpsb2M5LCBhcmdjOjEsIGFyZ3Y6MTYKKyAgICAgICAgLi4uCisKKyAgICAgICAgYGBg
CisKKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuY3BwOgorICAgICAg
ICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aW5zdGFudGlhdGVMZXhpY2FsVmFyaWFibGVzKToK
KyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmdldFByaXZhdGVUcmFpdHMpOgorICAg
ICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05h
bWVzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1ldGhvZCk6
IERlbGV0ZWQuCisgICAgICAgICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6Cisg
ICAgICAgICogYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHA6CisgICAgICAgIChKU0M6OlBy
b3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZSk6CisgICAgICAgIChKU0M6OlByb3BlcnR5TGlz
dE5vZGU6OmVtaXRQdXRDb25zdGFudFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5v
ZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKToKKyAgICAgICAgKEpTQzo6QmFzZURvdE5vZGU6OmVt
aXRQdXRQcm9wZXJ0eSk6CisgICAgICAgIChKU0M6OlBvc3RmaXhOb2RlOjplbWl0RG90KToKKyAg
ICAgICAgKEpTQzo6UHJlZml4Tm9kZTo6ZW1pdERvdCk6CisgICAgICAgICogcGFyc2VyL05vZGVz
Lmg6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5jcHA6CisgICAgICAgIChKU0M6OlBhcnNlcjxM
ZXhlclR5cGU+OjpwYXJzZUNsYXNzKToKKyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46
OnBhcnNlR2V0dGVyU2V0dGVyKToKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmg6CisgICAgICAg
IChKU0M6OlNjb3BlOjpkZWNsYXJlUHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlNjb3Bl
OjpkZWNsYXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcGFyc2VyL1ZhcmlhYmxlRW52aXJv
bm1lbnQuY3BwOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJp
dmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQ
cml2YXRlR2V0dGVyKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oOgor
ICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZVNldHRlciBj
b25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2YXRl
R2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5Ojpz
ZXRJc1ByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50
cnk6OnNldElzUHJpdmF0ZUdldHRlcik6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50cnk6
OmlzU2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNHZXR0
ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0ZpZWxkIGNvbnN0
KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlTWV0aG9kT3JBY2Vz
c29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVBy
aXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKToKKwogMjAyMS0w
Mi0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24ndCBj
cmFzaCB3aGVuIHJlcGFyc2luZyBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgdGhlIHBhcnNpbmcgaW52
YXJpYW50IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0
ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZTU3MTllZjgyNThmM2IyOWZl
NjBkNzZkYjIwMmQyZjliMjhhNTdlLi4yY2QxMDU4MWE3NjJlMjA5MzAwMDFkYzMzNmM1NzE4ZTdi
NzBlNDk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5
dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtMTkwMCwxMCArMTkwMCwxNyBAQCBib29sIEJ5
dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFi
bGVFbnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlm
IHRoZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBp
dCBpc24ndCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2
YXRlRmllbGQoKSkKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUo
ZW50cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNEZWNsYXJlZCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2
YXRlTWV0aG9kKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1l
KGVudHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFp
dHM6OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKSk7Cisg
ICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHBy
aXZhdGVFbnZpcm9ubWVudCA9IGxleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVu
dCgpOworICAgICAgICAgICAgaWYgKCFwcml2YXRlRW52aXJvbm1lbnQpCisgICAgICAgICAgICAg
ICAgY29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gZmluZFJlc3VsdCA9IHByaXZhdGVFbnZp
cm9ubWVudC0+ZmluZChlbnRyeS5rZXkuZ2V0KCkpOworCisgICAgICAgICAgICBpZiAoZmluZFJl
c3VsdCA9PSBwcml2YXRlRW52aXJvbm1lbnQtPmVuZCgpKQorICAgICAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZmluZFJlc3Vs
dC0+a2V5LmdldCgpLCBmaW5kUmVzdWx0LT52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAg
cmV0dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjkzMSwxNiArMjkzOCwxOCBAQCB2b2lk
IEJ5dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxl
JiB2YXJpYWJsZSkKICAgICB9CiB9CiAKLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0
ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKy8vIFRoaXMgc2hvdWxkIGJlIGNhbGxl
ZCBvbmx5IHdpdGggUHJpdmF0ZU5hbWVzIGF2YWlsYWJsZS4KK1ByaXZhdGVOYW1lRW50cnkgQnl0
ZWNvZGVHZW5lcmF0b3I6OmdldFByaXZhdGVUcmFpdHMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQp
CiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGkt
LTsgKSB7CiAgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CiAgICAg
ICAgIGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgICAgICBpZiAoaXQgIT0g
bWFwLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAg
ICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7Cisg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUHJpdmF0ZU5hbWVF
bnRyeSgpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05h
bWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQpAQCAtMjk4NSwx
MyArMjk5NCwxMCBAQCBPcHRpb25hbDxQcml2YXRlTmFtZUVudmlyb25tZW50PiBCeXRlY29kZUdl
bmVyYXRvcjo6Z2V0QXZhaWxhYmxlUHJpdmF0ZUFjY2Vzc05hbQogICAgIGZvciAodW5zaWduZWQg
aSA9IG1fcHJpdmF0ZU5hbWVzU3RhY2suc2l6ZSgpOyBpLS07ICkgewogICAgICAgICBhdXRvJiBt
YXAgPSBtX3ByaXZhdGVOYW1lc1N0YWNrW2ldOwogICAgICAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bWFwKSAgewotICAgICAgICAgICAgaWYgKGVudHJ5LnZhbHVlLmlzUHJpdmF0ZU1ldGhvZE9yQWNl
c3NvcigpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFleGNsdWRlZE5hbWVzLmNvbnRhaW5zKGVu
dHJ5LmtleS5nZXQoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChlbnRyeS5r
ZXksIGVudHJ5LnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQo
ZW50cnkua2V5LmdldCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UK
KyAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhlbnRyeS5rZXkuZ2V0KCkp
KSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFkZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsK
ICAgICAgICAgICAgICAgICBleGNsdWRlZE5hbWVzLmFkZChlbnRyeS5rZXkuZ2V0KCkpOworICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKaW5kZXggYmJmYjU2ODE5
OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2JlNS4uYTVjYmQzNjk5YTQ3M2NiZGMwODdmYmU2
ZmExYjBjZmRiMDRkNTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9i
eXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaApAQCAtMTI2Myw3ICsxMjYzLDcgQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2xhc3RJbnN0cnVjdGlvbiA9IHByZXZMYXN0SW5z
dHJ1Y3Rpb247CiAgICAgICAgIH0KIAotICAgICAgICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25z
dCBJZGVudGlmaWVyJik7CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgZ2V0UHJpdmF0ZVRyYWl0
cyhjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAgICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vzc05h
bWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqKTsKICAgICAgICAgdm9pZCBwb3BQcml2
YXRlQWNjZXNzTmFtZXMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRl
Y29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29t
cGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0YzA4YTMzZDNmODdiYjQyYmUzZjhmNmNkYmE1
ZmEwMzcwMDc4ZTVmLi5hZWRjOWNmOTllMmM5MjU2NGUxY2VlMTFiMDI3MzU2MDIzNWZhNzhlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdl
bi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVn
ZW4uY3BwCkBAIC01NzksMTMgKzU3OSw2NSBAQCB2b2lkIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRE
ZWNsYXJlUHJpdmF0ZUZpZWxkTmFtZXMoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvcgogCiBS
ZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0T3JDb25zdHJ1Y3RvciwgUmVnaXN0ZXJJRCog
cHJvdG90eXBlLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBpbnN0YW5jZUZpZWxkTG9jYXRpb25z
LCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiBzdGF0aWNGaWVsZExvY2F0aW9ucykKIHsKKyAgICB0
eXBlZGVmIHN0ZDo6cGFpcjxQcm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eU5vZGUqPiBHZXR0ZXJTZXR0
ZXJQYWlyOworICAgIHR5cGVkZWYgSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEdldHRlclNl
dHRlclBhaXIsIElkZW50aWZpZXJSZXBIYXNoPiBHZXR0ZXJTZXR0ZXJNYXA7CisgICAgR2V0dGVy
U2V0dGVyTWFwIHByaXZhdGVBY2Nlc3Nvck1hcDsKKwogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAg
PSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9IG51bGxwdHI7CisgICAgZm9yICg7IHA7IHAg
PSBwLT5tX25leHQpIHsKKyAgICAgICAgaWYgKCEocC0+bV9ub2RlLT50eXBlKCkgJiAoUHJvcGVy
dHlOb2RlOjpQcml2YXRlR2V0dGVyIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSkpCisg
ICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvLyBXZSBncm91cCBwcml2YXRlIGdldHRl
cnMgYW5kIHNldHRlcnMgdG8gc3RvcmUgdGhlbSBpbiBhIG9iamVjdAorICAgICAgICBHZXR0ZXJT
ZXR0ZXJQYWlyIHBhaXIocC0+bV9ub2RlLCBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGUqPihudWxs
cHRyKSk7CisgICAgICAgIEdldHRlclNldHRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHByaXZh
dGVBY2Nlc3Nvck1hcC5hZGQocC0+bV9ub2RlLT5uYW1lKCktPmltcGwoKSwgcGFpcik7CisgICAg
ICAgIGF1dG8mIHJlc3VsdFBhaXIgPSByZXN1bHQuaXRlcmF0b3ItPnZhbHVlOworICAgICAgICAv
LyBJZiB0aGUgbWFwIGFscmVhZHkgY29udGFpbnMgYW4gZWxlbWVudCB3aXRoIG5vZGUtPm5hbWUo
KSwKKyAgICAgICAgLy8gd2UgbmVlZCB0byBzdG9yZSB0aGlzIG5vZGUgaW4gdGhlIHNlY29uZCBw
YXJ0LgorICAgICAgICBpZiAoIXJlc3VsdC5pc05ld0VudHJ5KQorICAgICAgICAgICAgcmVzdWx0
UGFpci5zZWNvbmQgPSBwLT5tX25vZGU7CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAg
IC8vIFRoZW4gd2UgZGVjbGFyZSBwcml2YXRlIGFjY2Vzc29zCisgICAgZm9yIChhdXRvJiBpdCA6
IHByaXZhdGVBY2Nlc3Nvck1hcCkgeworICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVy
U2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXROZXdPYmplY3QoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpKTsKKworICAgICAgICBHZXR0ZXJTZXR0ZXJQYWlyIHBhaXIgPSBpdC52YWx1ZTsKKyAgICAg
ICAgaWYgKHBhaXIuZmlyc3QpIHsKKyAgICAgICAgICAgIGRzdCA9IHBhaXIuZmlyc3QtPmlzSW5z
dGFuY2VDbGFzc1Byb3BlcnR5KCkgPyBwcm90b3R5cGUgOiBkc3RPckNvbnN0cnVjdG9yOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHZhbHVlID0gZ2VuZXJhdG9yLmVtaXROb2RlKHBh
aXIuZmlyc3QtPm1fYXNzaWduKTsKKyAgICAgICAgICAgIGlmIChwYWlyLmZpcnN0LT5uZWVkc1N1
cGVyQmluZGluZygpKQorICAgICAgICAgICAgICAgIGVtaXRQdXRIb21lT2JqZWN0KGdlbmVyYXRv
ciwgdmFsdWUuZ2V0KCksIGRzdCk7CisgICAgICAgICAgICBhdXRvIHNldHRlck9yR2V0dGVySWRl
bnQgPSBwYWlyLmZpcnN0LT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIKKyAg
ICAgICAgICAgICAgICA/IGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2V0UHJpdmF0ZU5hbWUoKQorICAgICAgICAgICAgICAgIDogZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXREaXJlY3RQdXRCeUlkKGdldHRlclNldHRlck9iai5nZXQoKSwgc2V0dGVyT3JHZXR0
ZXJJZGVudCwgdmFsdWUuZ2V0KCkpOworICAgICAgICB9CiAKKyAgICAgICAgaWYgKHBhaXIuc2Vj
b25kKSB7CisgICAgICAgICAgICBkc3QgPSBwYWlyLnNlY29uZC0+aXNJbnN0YW5jZUNsYXNzUHJv
cGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUocGFpci5zZWNvbmQtPm1f
YXNzaWduKTsKKyAgICAgICAgICAgIGlmIChwYWlyLnNlY29uZC0+bmVlZHNTdXBlckJpbmRpbmco
KSkKKyAgICAgICAgICAgICAgICBlbWl0UHV0SG9tZU9iamVjdChnZW5lcmF0b3IsIHZhbHVlLmdl
dCgpLCBkc3QpOworICAgICAgICAgICAgYXV0byBzZXR0ZXJPckdldHRlcklkZW50ID0gcGFpci5z
ZWNvbmQtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlcgorICAgICAgICAgICAg
ICAgID8gZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRl
TmFtZSgpCisgICAgICAgICAgICAgICAgOiBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLnNldFByaXZhdGVOYW1lKCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdERp
cmVjdFB1dEJ5SWQoZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBzZXR0ZXJPckdldHRlcklkZW50LCB2
YWx1ZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0
b3IudmFyaWFibGUoKnBhaXIuZmlyc3QtPm5hbWUoKSk7CisgICAgICAgIGdlbmVyYXRvci5lbWl0
UHV0VG9TY29wZShnZW5lcmF0b3Iuc2NvcGVSZWdpc3RlcigpLCB2YXIsIGdldHRlclNldHRlck9i
ai5nZXQoKSwgRG9Ob3RUaHJvd0lmTm90Rm91bmQsIEluaXRpYWxpemF0aW9uTW9kZTo6Q29uc3RJ
bml0aWFsaXphdGlvbik7CisgICAgfQorICAgIAogICAgIC8vIEZhc3QgY2FzZTogdGhpcyBsb29w
IGp1c3QgaGFuZGxlcyByZWd1bGFyIHZhbHVlIHByb3BlcnRpZXMuCi0gICAgZm9yICg7IHAgJiYg
KHAtPm1fbm9kZS0+bV90eXBlICYgUHJvcGVydHlOb2RlOjpDb25zdGFudCk7IHAgPSBwLT5tX25l
eHQpIHsKKyAgICBmb3IgKHAgPSB0aGlzOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3Bl
cnR5Tm9kZTo6Q29uc3RhbnQpOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGRzdCA9IHAtPm1f
bm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3Ry
dWN0b3I7CiAKKyAgICAgICAgaWYgKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6
UHJpdmF0ZUdldHRlciB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpCisgICAgICAgICAg
ICBjb250aW51ZTsKKwogICAgICAgICBpZiAocC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAg
ICAgICAgICAgIGVtaXRTYXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2Rl
KTsKIApAQCAtNjEwLDggKzY2Miw2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAg
IC8vIGEgY29tcHV0ZWQgcHJvcGVydHkgb3IgYSBzcHJlYWQsIGp1c3QgZW1pdCBldmVyeXRoaW5n
IGFzIHRoYXQgbWF5IG92ZXJyaWRlIHByZXZpb3VzIHZhbHVlcy4KICAgICAgICAgYm9vbCBjYW5P
dmVycmlkZVByb3BlcnRpZXMgPSBmYWxzZTsKIAotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxQ
cm9wZXJ0eU5vZGUqLCBQcm9wZXJ0eU5vZGUqPiBHZXR0ZXJTZXR0ZXJQYWlyOwotICAgICAgICB0
eXBlZGVmIEhhc2hNYXA8VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVu
dGlmaWVyUmVwSGFzaD4gR2V0dGVyU2V0dGVyTWFwOwogICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAg
aW5zdGFuY2VNYXA7CiAgICAgICAgIEdldHRlclNldHRlck1hcCBzdGF0aWNNYXA7CiAKQEAgLTY1
MSw2ICs3MDEsOSBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUo
Qnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgaWYgKHAt
PmlzQ29tcHV0ZWRDbGFzc0ZpZWxkKCkpCiAgICAgICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRl
ZEZpZWxkTmFtZShnZW5lcmF0b3IsICpwLT5tX25vZGUpOwogCisgICAgICAgICAgICBpZiAocC0+
bV9ub2RlLT50eXBlKCkgJiAoUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyIHwgUHJvcGVydHlO
b2RlOjpQcml2YXRlU2V0dGVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAg
ICAgICAgaWYgKHAtPmlzSW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKICAgICAgICAgICAgICAgICBB
U1NFUlQoaW5zdGFuY2VGaWVsZExvY2F0aW9ucyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG5v
ZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwpAQCAtNzgyLDYgKzgzNSw4IEBA
IHZvaWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVH
ZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0NsYXNzUHJvcGVydHko
KSkgewogICAgICAgICBBU1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKTsKKyAgICAgICAg
QVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKTsKKyAg
ICAgICAgQVNTRVJUKCEobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIp
KTsKIAogICAgICAgICBpZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRo
b2QpIHsKICAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9k
ZS5uYW1lKCkpOwpAQCAtOTE5LDggKzk3NCwxMCBAQCBSZWdpc3RlcklEKiBEb3RBY2Nlc3Nvck5v
ZGU6OmVtaXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3Rlcgog
UmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2Vu
ZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRzdCwgUmVnaXN0ZXJJRCogYmFzZSwgUmVm
UHRyPFJlZ2lzdGVySUQ+JiB0aGlzVmFsdWUpCiB7CiAgICAgaWYgKGlzUHJpdmF0ZU1lbWJlcigp
KSB7Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXIoKSkp
IHsKLSAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlm
aWVyKCkpOworICAgICAgICBhdXRvIGlkZW50aWZpZXJOYW1lID0gaWRlbnRpZmllcigpOworICAg
ICAgICBhdXRvIHByaXZhdGVUcmFpdHMgPSBnZW5lcmF0b3IuZ2V0UHJpdmF0ZVRyYWl0cyhpZGVu
dGlmaWVyTmFtZSk7CisgICAgICAgIGlmIChwcml2YXRlVHJhaXRzLmlzTWV0aG9kKCkpIHsKKyAg
ICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlmaWVyTmFt
ZSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwogCiAgICAgICAgICAgICBSZWdpc3RlcklEKiBw
cml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKQEAgLTkyOSw2ICs5ODYsMzIgQEAgUmVn
aXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRHZXRQcm9wZXJ0eVZhbHVlKEJ5dGVjb2RlR2VuZXJh
dG9yJiBnZW5lcmF0b3IsIFJlZ2kKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdl
dEZyb21TY29wZShkc3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAg
ICAgIH0KIAorICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dldHRlcigpKSB7CisgICAgICAg
ICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNv
bHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0
ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5l
d1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENo
ZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisKKyAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZy
b21TY29wZShnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93
SWZOb3RGb3VuZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyRnVuY3Rp
b24gPSBnZW5lcmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgp
LCBnZXR0ZXJTZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRp
bk5hbWVzKCkuZ2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFy
Z3MoZ2VuZXJhdG9yLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3Mu
dGhpc1JlZ2lzdGVyKCksIGJhc2UpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5lbWl0
Q2FsbChkc3QsIGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3Ms
IG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZZXMp
OworICAgICAgICB9CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNTZXR0ZXIoKSkgewor
ICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBwZXJmb3JtIGJyYW5kIGNoZWNrIHRvIGZvbGxvdyB0
aGUgc3BlYworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlk
ZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdl
bmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJy
YW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAg
Z2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wp
OworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFj
Y2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgZ2V0dGVyIik7CisgICAgICAgICAgICByZXR1cm4g
ZHN0OworICAgICAgICB9CisKKyAgICAgICAgQVNTRVJUKHByaXZhdGVUcmFpdHMuaXNGaWVsZCgp
KTsKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKG1faWRlbnQpOwog
ICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwgIlByaXZhdGUgRmllbGQg
bmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVzIik7CiAKQEAgLTk1Nyw3
ICsxMDQwLDI1IEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjplbWl0UHV0UHJvcGVydHkoQnl0
ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiB7CiAgICAgaWYgKGlzUHJpdmF0
ZU1lbWJlcigpKSB7CiAgICAgICAgIGF1dG8gaWRlbnRpZmllck5hbWUgPSBpZGVudGlmaWVyKCk7
Ci0gICAgICAgIGlmIChnZW5lcmF0b3IuaXNQcml2YXRlTWV0aG9kKGlkZW50aWZpZXJOYW1lKSkg
eworICAgICAgICBhdXRvIHByaXZhdGVUcmFpdHMgPSBnZW5lcmF0b3IuZ2V0UHJpdmF0ZVRyYWl0
cyhpZGVudGlmaWVyTmFtZSk7CisgICAgICAgIGlmIChwcml2YXRlVHJhaXRzLmlzU2V0dGVyKCkp
IHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudGlm
aWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0
b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3Rl
cklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVy
YXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKwor
ICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCks
IHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
ZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFt
ZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxB
cmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgZ2VuZXJh
dG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNldHRlckZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24s
IG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZZXMpOworCisgICAgICAgICAgICByZXR1cm4g
dmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dldHRlcigp
IHx8IHByaXZhdGVUcmFpdHMuaXNNZXRob2QoKSkgewogICAgICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKICAgICAgICAgICAgIFJlZlB0
cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIs
IHZhcik7CiAKQEAgLTk2NSw4ICsxMDY2LDEwIEBAIFJlZ2lzdGVySUQqIEJhc2VEb3ROb2RlOjpl
bWl0UHV0UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJCiAg
ICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVC
cmFuZFN5bWJvbCk7CiAKICAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3Io
IlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIHNldHRlciIpOworICAgICAg
ICAgICAgcmV0dXJuIHZhbHVlOwogICAgICAgICB9CiAKKyAgICAgICAgQVNTRVJUKHByaXZhdGVU
cmFpdHMuaXNGaWVsZCgpKTsKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlh
YmxlKG1faWRlbnQpOwogICAgICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKCF2YXIubG9jYWwoKSwg
IlByaXZhdGUgRmllbGQgbmFtZXMgbXVzdCBiZSBzdG9yZWQgaW4gY2FwdHVyZWQgdmFyaWFibGVz
Iik7CiAKQEAgLTIyODcsMTYgKzIzOTAsNjcgQEAgUmVnaXN0ZXJJRCogUG9zdGZpeE5vZGU6OmVt
aXREb3QoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXJJRCogZHN0KQogCiAg
ICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVNZW1iZXIoKSkgewogICAgICAgICBBU1NFUlQo
IWJhc2VJc1N1cGVyKTsKKyAgICAgICAgYXV0byBwcml2YXRlVHJhaXRzID0gZ2VuZXJhdG9yLmdl
dFByaXZhdGVUcmFpdHMoaWRlbnQpOworCisgICAgICAgIGlmIChwcml2YXRlVHJhaXRzLmlzRmll
bGQoKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlk
ZW50KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5l
bWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0
ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0
KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOworCisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNPckRlYyhnZW5lcmF0
b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0KCksIG1fb3BlcmF0
b3IpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBk
aXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2
YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlLmdldCgpKTsK
KyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUo
ZHN0LCBvbGRWYWx1ZS5nZXQoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJpdmF0ZVRy
YWl0cy5pc01ldGhvZCgpKSB7CisgICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3Iu
dmFyaWFibGUoaWRlbnQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0g
Z2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAg
UmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRl
QnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAg
ICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFu
ZFN5bWJvbCk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2
b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5l
bWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRl
IHNldHRlciIpOworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24o
ZHN0KTsKKyAgICAgICAgfQorCiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJp
YWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2
YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
dmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVOYW1lKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWdpc3RlcklE
KiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICAgICAgaWYgKHByaXZhdGVUcmFp
dHMuaXNHZXR0ZXIoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNl
dHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0
QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsK
KyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7
CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IubmV3VGVt
cG9yYXJ5KCksIGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3Ms
IG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZZXMp
OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVF
cnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgZ2V0dGVyIik7Cisg
ICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpOworICAgICAg
ICB9CisKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IG9sZFZhbHVlID0gZW1pdFBvc3RJbmNP
ckRlYyhnZW5lcmF0b3IsIGdlbmVyYXRvci50ZW1wRGVzdGluYXRpb24oZHN0KSwgdmFsdWUuZ2V0
KCksIG1fb3BlcmF0b3IpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRp
dm90KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0
UHJpdmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZS5nZXQo
KSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUuZ2V0KCksIGRpdm90
U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNTZXR0
ZXIoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9
IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2Nv
cGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdp
c3RlcklEPiBzZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5l
cmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnBy
b3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAg
ICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDEpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlLmdl
dCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIHNldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIG1f
cG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZZXMpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RT
dGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShk
c3QsIG9sZFZhbHVlLmdldCgpKTsKKyAgICAgICAgfSAKKworICAgICAgICBnZW5lcmF0b3IuZW1p
dFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBn
ZXR0ZXIiKTsKICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgb2xkVmFsdWUuZ2V0
KCkpOwogICAgIH0KIApAQCAtMjUyNSwxNyArMjY3OSw2NiBAQCBSZWdpc3RlcklEKiBQcmVmaXhO
b2RlOjplbWl0RG90KEJ5dGVjb2RlR2VuZXJhdG9yJiBnZW5lcmF0b3IsIFJlZ2lzdGVySUQqIGRz
dCkKICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRvdEFjY2Vzc29yLT5kaXZvdCgp
LCBkb3RBY2Nlc3Nvci0+ZGl2b3RTdGFydCgpLCBkb3RBY2Nlc3Nvci0+ZGl2b3RFbmQoKSk7CiAg
ICAgUmVnaXN0ZXJJRCogdmFsdWU7CiAgICAgaWYgKGRvdEFjY2Vzc29yLT5pc1ByaXZhdGVNZW1i
ZXIoKSkgewotICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAg
ICAgYXV0byBwcml2YXRlVHJhaXRzID0gZ2VuZXJhdG9yLmdldFByaXZhdGVUcmFpdHMoaWRlbnQp
OworICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0ZpZWxkKCkpIHsKKyAgICAgICAgICAgIEFT
U0VSVCghYmFzZU5vZGUtPmlzU3VwZXJOb2RlKCkpOworICAgICAgICAgICAgVmFyaWFibGUgdmFy
ID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50KTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2
YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCksIHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwor
CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERz
dC5nZXQoKSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICAgICAgZW1p
dEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUsIG1fb3BlcmF0b3IpOworICAgICAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5k
KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQo
KSwgcHJpdmF0ZU5hbWUuZ2V0KCksIHZhbHVlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0
UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAg
ICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmIChwcml2YXRlVHJhaXRzLmlzTWV0aG9kKCkpIHsKKyAgICAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgICAgICBSZWZQ
dHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRy
LCB2YXIpOworCisgICAgICAgICAgICBSZWdpc3RlcklEKiBwcml2YXRlQnJhbmRTeW1ib2wgPSBn
ZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNj
b3BlLmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQo
YmFzZS5nZXQoKSwgcHJpdmF0ZUJyYW5kU3ltYm9sKTsKKworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOwor
ICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2Vz
cyBhIG5vdCBkZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgfQorCiAgICAgICAgIFZh
cmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CiAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZh
cik7Ci0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlTmFtZSA9IGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUocHJpdmF0
ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJZk5vdEZvdW5kKTsKIAot
ICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUocHJvcERzdC5nZXQo
KSwgYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0KCkpOworICAgICAgICBSZWdpc3RlcklEKiBw
cml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgZ2VuZXJhdG9yLmVtaXRD
aGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRTeW1ib2wpOworCisgICAg
ICAgIGlmIChwcml2YXRlVHJhaXRzLmlzR2V0dGVyKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3Vu
ZCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyRnVuY3Rpb24gPSBnZW5l
cmF0b3IuZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJT
ZXR0ZXJPYmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCku
Z2V0UHJpdmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJh
dG9yLCBudWxscHRyKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lz
dGVyKCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdENh
bGwocHJvcERzdC5nZXQoKSwgZ2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5jdGlv
biwgYXJncywgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVidWdnYWJsZUNh
bGw6Olllcyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRo
cm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBnZXR0
ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIHByb3BEc3QuZ2V0
KCkpOworICAgICAgICB9CisKICAgICAgICAgZW1pdEluY09yRGVjKGdlbmVyYXRvciwgdmFsdWUs
IG1fb3BlcmF0b3IpOwogICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90
KCksIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7Ci0gICAgICAgIGdlbmVyYXRvci5lbWl0UHJp
dmF0ZUZpZWxkUHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7Ci0gICAg
ICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFsdWUsIGRpdm90U3RhcnQoKSwgZGl2b3RF
bmQoKSk7CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNTZXR0ZXIoKSkgeworICAgICAg
ICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0
R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwg
VGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0ZXJG
dW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9y
YXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5i
dWlsdGluTmFtZXMoKS5zZXRQcml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVu
dHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIsIDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1v
dmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0
b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIoMCksIHZhbHVlKTsKKyAgICAgICAgICAgIGdl
bmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNldHRlckZ1bmN0aW9u
LmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFyZ3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24s
IG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZZXMpOworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRQcm9maWxlVHlwZSh2YWx1ZSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAg
ICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIHByb3BEc3QuZ2V0KCkpOworICAgICAg
ICB9IAorCisgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBh
Y2Nlc3MgYSBub3QgZGVmaW5lZCBwcml2YXRlIGdldHRlciIpOwogICAgICAgICByZXR1cm4gZ2Vu
ZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvTm9kZXMuaAppbmRleCA0YmY5Mzg2ZjI2ZjAyOTgzYjc4ODY5ZTRhMjUwMjVmNjBl
YzhhYjM1Li4xNDMwZThkNDQ1ZDVhZmU5NjRkMWM1MTczYWRhMzk5ZGJkMGVjZmNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgZW51bSBjbGFzcyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIElu
c3RhbmNlLCBTdGF0aWMsIExhc3RUYWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwg
OiBwdWJsaWMgUGFyc2VyQXJlbmFGcmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVt
IFR5cGUgOiB1aW50OF90IHsgQ29uc3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBD
b21wdXRlZCA9IDgsIFNob3J0aGFuZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0g
NjQsIFByaXZhdGVNZXRob2QgPSAxMjggfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDE2X3Qg
eyBDb25zdGFudCA9IDEsIEdldHRlciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hv
cnRoYW5kID0gMTYsIFNwcmVhZCA9IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhv
ZCA9IDEyOCwgUHJpdmF0ZVNldHRlciA9IDI1NiwgUHJpdmF0ZUdldHRlciA9IDUxMiB9OwogCiAg
ICAgICAgIFByb3BlcnR5Tm9kZShjb25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBU
eXBlLCBTdXBlckJpbmRpbmcsIENsYXNzRWxlbWVudFRhZyk7CiAgICAgICAgIFByb3BlcnR5Tm9k
ZShFeHByZXNzaW9uTm9kZSosIFR5cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsK
QEAgLTc0MCw3ICs3NDAsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0luc3Rh
bmNlQ2xhc3NGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkg
JiYgIW5lZWRzU3VwZXJCaW5kaW5nKCk7IH0KICAgICAgICAgYm9vbCBpc1N0YXRpY0NsYXNzRmll
bGQoKSBjb25zdCB7IHJldHVybiBpc1N0YXRpY0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBl
ckJpbmRpbmcoKTsgfQogICAgICAgICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29u
c3QgeyByZXR1cm4gbV9pc092ZXJyaWRkZW5CeUR1cGxpY2F0ZTsgfQotICAgICAgICBib29sIGlz
UHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRl
TWV0aG9kKTsgfQorICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kIHwgUHJpdmF0ZUdldHRlciB8IFByaXZh
dGVTZXR0ZXIpOyB9CiAgICAgICAgIGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1
cm4gbV9leHByZXNzaW9uOyB9CiAgICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBj
b25zdCB7IHJldHVybiBpc0NsYXNzRmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAg
ICAgICB2b2lkIHNldElzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5
RHVwbGljYXRlID0gdHJ1ZTsgfQpAQCAtNzYwLDcgKzc2MCw3IEBAIG5hbWVzcGFjZSBKU0Mgewog
ICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2Rl
KiBtX2V4cHJlc3Npb247CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAg
ICAgdW5zaWduZWQgbV90eXBlOworICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxMDsKICAgICAg
ICAgdW5zaWduZWQgbV9uZWVkc1N1cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRpY19hc3Nl
cnQoMSA8PCAyID4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRh
ZyksICJDbGFzc0VsZW1lbnRUYWcgc2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsK
ICAgICAgICAgdW5zaWduZWQgbV9jbGFzc0VsZW1lbnRUYWcgOiAyOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3BhcnNlci9QYXJzZXIuY3BwCmluZGV4IGVjYTViYjMwNTk1OTZhODQ2NTI2ZGZjNzU3MTEx
ZGE2ZjU0NjMzNzguLjc2YzkzOTE3N2Q5MDFmMTRlMWU0NDFiZmQ2NGRiMjNhMmJjMWQ0NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKQEAgLTI4NzksNyArMjg3OSw3
IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJz
ZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFzcyhUCiAgICAgY2xhc3NTY29wZS0+c2V0SXNMZXhpY2Fs
U2NvcGUoKTsKICAgICBjbGFzc1Njb3BlLT5wcmV2ZW50VmFyRGVjbGFyYXRpb25zKCk7CiAgICAg
Y2xhc3NTY29wZS0+c2V0U3RyaWN0TW9kZSgpOwotICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlTWV0
aG9kID0gZmFsc2U7CisgICAgYm9vbCBkZWNsYXJlc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yID0g
ZmFsc2U7CiAgICAgbmV4dCgpOwogCiAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRShyZXF1aXJlbWVu
dHMgIT0gRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCAiQ3VycmVudGx5LCB0aGVy
ZSBpcyBubyBjYWxsZXIgdGhhdCB1c2VzIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1l
ZCBmb3IgY2xhc3Mgc3ludGF4LiIpOwpAQCAtMjk3OCw3ICsyOTc4LDcgQEAgcGFyc2VNZXRob2Q6
CiAgICAgICAgICAgICBib29sIGVzY2FwZWQgPSBtX3Rva2VuLm1fZGF0YS5lc2NhcGVkOwogICAg
ICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAgIG5leHQoKTsKLSAgICAgICAgICAg
IGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2RlICYmICFlc2NhcGVk
ICYmIChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpIHx8IG1hdGNo
KERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0Y2goQklHSU5UKSB8fCBtYXRjaChPUEVO
QlJBQ0tFVCkpKSB7CisgICAgICAgICAgICBpZiAocGFyc2VNb2RlID09IFNvdXJjZVBhcnNlTW9k
ZTo6TWV0aG9kTW9kZSAmJiAhZXNjYXBlZCAmJiAobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkg
fHwgbWF0Y2goU1RSSU5HKSB8fCBtYXRjaChET1VCTEUpIHx8IG1hdGNoKElOVEVHRVIpIHx8IG1h
dGNoKEJJR0lOVCkgfHwgbWF0Y2goT1BFTkJSQUNLRVQpIHx8IChPcHRpb25zOjp1c2VQcml2YXRl
TWV0aG9kcygpICYmIG1hdGNoKFBSSVZBVEVOQU1FKSkpKSB7CiAgICAgICAgICAgICAgICAgaXNH
ZXR0ZXIgPSAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5nZXQ7CiAgICAgICAgICAgICAgICAgaXNT
ZXR0ZXIgPSAqaWRlbnQgPT0gcHJvcGVydHlOYW1lcy5zZXQ7CiAgICAgICAgICAgICB9CkBAIC0z
MDA2LDggKzMwMDYsOSBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAgIEFTU0VSVChpZGVudCk7
CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBpZiAoT3B0aW9uczo6dXNlUHJpdmF0
ZU1ldGhvZHMoKSAmJiBtYXRjaChPUEVOUEFSRU4pKSB7CisgICAgICAgICAgICAgICAgc2VtYW50
aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNs
YXJlIGEgc3RhdGljIHByaXZhdGUgbWV0aG9kIik7CiAgICAgICAgICAgICAgICAgc2VtYW50aWNG
YWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlTWV0aG9kKCppZGVudCkgJiBEZWNs
YXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uLCAiQ2Fubm90IGRlY2xh
cmUgcHJpdmF0ZSBtZXRob2QgdHdpY2UiKTsKLSAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZh
dGVNZXRob2QgPSB0cnVlOworICAgICAgICAgICAgICAgIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZE9y
QWNjZXNzb3IgPSB0cnVlOwogICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9w
ZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpOwogICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMzAyNSw4ICszMDI2LDIxIEBA
IHBhcnNlTWV0aG9kOgogCiAgICAgICAgIFRyZWVQcm9wZXJ0eSBwcm9wZXJ0eTsKICAgICAgICAg
aWYgKGlzR2V0dGVyIHx8IGlzU2V0dGVyKSB7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nh
c3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlICYgflByb3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwot
ICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSB8
IChpc0dldHRlciA/IFByb3BlcnR5Tm9kZTo6R2V0dGVyIDogUHJvcGVydHlOb2RlOjpTZXR0ZXIp
KTsKKyAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYmIG1hdGNo
KFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgICAgIGlkZW50ID0gbV90b2tlbi5tX2RhdGEu
aWRlbnQ7CisgICAgICAgICAgICAgICAgaWYgKGlzU2V0dGVyKSB7CisgICAgICAgICAgICAgICAg
ICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3BlLT5kZWNsYXJlUHJpdmF0ZVNldHRlcigq
aWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwg
IkRlY2xhcmVkIHByaXZhdGUgc2V0dGVyIHdpdGggYW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAg
ICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRlTWV0aG9kT3JBY2Nlc3NvciA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5
cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpOworICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Nj
b3BlLT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6Oklu
dmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgZ2V0dGVyIHdpdGgg
YW4gYWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2
YXRlTWV0aG9kT3JBY2Nlc3NvciA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBz
dGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZh
dGVHZXR0ZXIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlwZT4odHlwZSAm
IH5Qcm9wZXJ0eU5vZGU6OkNvbnN0YW50KTsKKyAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGlj
X2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgKGlzR2V0dGVyID8gUHJvcGVydHlOb2Rl
OjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNldHRlcikpOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcHJvcGVydHkgPSBwYXJzZUdldHRlclNldHRlcihjb250ZXh0LCB0eXBlLCBtZXRob2RT
dGFydCwgQ29uc3RydWN0b3JLaW5kOjpOb25lLCB0YWcpOwogICAgICAgICAgICAgZmFpbElmRmFs
c2UocHJvcGVydHksICJDYW5ub3QgcGFyc2UgdGhpcyBtZXRob2QiKTsKICAgICAgICAgfSBlbHNl
IGlmICghbWF0Y2goT1BFTlBBUkVOKSAmJiAodGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFu
Y2UgfHwgT3B0aW9uczo6dXNlUHVibGljU3RhdGljQ2xhc3NGaWVsZHMoKSkgJiYgcGFyc2VNb2Rl
ID09IFNvdXJjZVBhcnNlTW9kZTo6TWV0aG9kTW9kZSkgewpAQCAtMzEwMCw3ICszMTE0LDcgQEAg
cGFyc2VNZXRob2Q6CiAgICAgaW5mby5lbmRPZmZzZXQgPSB0b2tlbkxvY2F0aW9uKCkuZW5kT2Zm
c2V0IC0gMTsKICAgICBjb25zdW1lT3JGYWlsKENMT1NFQlJBQ0UsICJFeHBlY3RlZCBhIGNsb3Np
bmcgJ30nIGFmdGVyIGEgY2xhc3MgYm9keSIpOwogCi0gICAgaWYgKGRlY2xhcmVzUHJpdmF0ZU1l
dGhvZCkgeworICAgIGlmIChkZWNsYXJlc1ByaXZhdGVNZXRob2RPckFjY2Vzc29yKSB7CiAgICAg
ICAgIElkZW50aWZpZXIgcHJpdmF0ZUJyYW5kSWRlbnRpZmllciA9IG1fdm0ucHJvcGVydHlOYW1l
cy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKTsKICAgICAgICAgRGVj
bGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+ZGVjbGFy
ZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmllciwgdHJ1ZSk7CiAgICAgICAg
IEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0ID09IERl
Y2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CkBAIC00NDI4LDEyICs0NDQyLDE4IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJz
ZUdldHRlclNldHRlcihUCiAKICAgICBKU1Rva2VuTG9jYXRpb24gbG9jYXRpb24odG9rZW5Mb2Nh
dGlvbigpKTsKIAotICAgIGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5H
KSB8fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpIHsKKyAgICBib29sIG1hdGNo
ZXNQcml2YXRlTmFtZSA9IG1hdGNoKFBSSVZBVEVOQU1FKTsKKyAgICBpZiAobWF0Y2hTcGVjSWRl
bnRpZmllcigpIHx8IG1hdGNoKFNUUklORykgfHwgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2Rz
KCkgJiYgbWF0Y2hlc1ByaXZhdGVOYW1lKSB8fCBtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tl
bkZsYWcpIHsKICAgICAgICAgc3RyaW5nUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRl
bnQ7CiAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xhc3NFbGVtZW50VGFnOjpT
dGF0aWMgJiYgKnN0cmluZ1Byb3BlcnR5TmFtZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPnByb3Rv
dHlwZSwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIHN0YXRpYyBtZXRob2QgbmFtZWQg
J3Byb3RvdHlwZSciKTsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBDbGFzc0Vs
ZW1lbnRUYWc6Okluc3RhbmNlICYmICpzdHJpbmdQcm9wZXJ0eU5hbWUgPT0gbV92bS5wcm9wZXJ0
eU5hbWVzLT5jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICJDYW5ub3QgZGVjbGFyZSBhIGdldHRl
ciBvciBzZXR0ZXIgbmFtZWQgJ2NvbnN0cnVjdG9yJyIpOworCisgICAgICAgIGlmIChtYXRjaChQ
UklWQVRFTkFNRSkpIHsKKyAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZSh0YWcgPT0gQ2xh
c3NFbGVtZW50VGFnOjpObywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBzZXR0ZXIgb3IgZ2V0
dGVyIG91dHNpZGUgYSBjbGFzcyIpOworICAgICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRh
ZyA9PSBDbGFzc0VsZW1lbnRUYWc6OlN0YXRpYywgIkNhbm5vdCBkZWNsYXJlIGEgcHJpdmF0ZSBz
ZXR0ZXIgb3IgZ2V0dGVyIGFzIHN0YXRpYyIpOworICAgICAgICB9CiAgICAgICAgIG5leHQoKTsK
ICAgICB9IGVsc2UgaWYgKG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikpIHsKICAgICAg
ICAgbnVtZXJpY1Byb3BlcnR5TmFtZSA9IG1fdG9rZW4ubV9kYXRhLmRvdWJsZVZhbHVlOwpAQCAt
NDQ1NCwxMCArNDQ3NCwxOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVQcm9w
ZXJ0eSBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VHZXR0ZXJTZXR0ZXIoVAogICAgICAgICBmYWls
SWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3Ig
Z2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2Rl
PiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2Rl
KTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0
aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3Vw
ZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0
aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIGdldHRlciBkZWZpbml0
aW9uIik7Ci0gICAgfSBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6
OlNldHRlcikgewogICAgICAgICBmYWlsSWZGYWxzZShtYXRjaChPUEVOUEFSRU4pLCAiRXhwZWN0
ZWQgYSBwYXJhbWV0ZXIgbGlzdCBmb3Igc2V0dGVyIGRlZmluaXRpb24iKTsKICAgICAgICAgU2V0
Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291
cmNlUGFyc2VNb2RlOjpTZXR0ZXJNb2RlKTsKICAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVu
Y3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFs
c2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVy
U3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fu
bm90IHBhcnNlIHNldHRlciBkZWZpbml0aW9uIik7CisgICAgfSBlbHNlIGlmICh0eXBlICYgUHJv
cGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSB7CisgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9Q
RU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBwcml2YXRlIHNldHRlciBk
ZWZpbml0aW9uIik7CisgICAgICAgIFNldEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQ
YXJzZU1vZGUobV9wYXJzZU1vZGUsIFNvdXJjZVBhcnNlTW9kZTo6U2V0dGVyTW9kZSk7CisgICAg
ICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVS
ZXF1aXJlbWVudHM6OlVubmFtZWQsIGZhbHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGlu
Zzo6TmVlZGVkLCBnZXR0ZXJPclNldHRlclN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmlu
aXRpb25UeXBlOjpNZXRob2QpKSwgIkNhbm5vdCBwYXJzZSBwcml2YXRlIHNldHRlciBkZWZpbml0
aW9uIik7CisgICAgfSBlbHNlIGlmICh0eXBlICYgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVy
KSB7CisgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBh
cmFtZXRlciBsaXN0IGZvciBwcml2YXRlIGdldHRlciBkZWZpbml0aW9uIik7CisgICAgICAgIFNl
dEZvclNjb3BlPFNvdXJjZVBhcnNlTW9kZT4gaW5uZXJQYXJzZU1vZGUobV9wYXJzZU1vZGUsIFNv
dXJjZVBhcnNlTW9kZTo6R2V0dGVyTW9kZSk7CisgICAgICAgIGZhaWxJZkZhbHNlKChwYXJzZUZ1
bmN0aW9uSW5mbyhjb250ZXh0LCBGdW5jdGlvbk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsIGZh
bHNlLCBjb25zdHJ1Y3RvcktpbmQsIFN1cGVyQmluZGluZzo6TmVlZGVkLCBnZXR0ZXJPclNldHRl
clN0YXJ0T2Zmc2V0LCBpbmZvLCBGdW5jdGlvbkRlZmluaXRpb25UeXBlOjpNZXRob2QpKSwgIkNh
bm5vdCBwYXJzZSBwcml2YXRlIGdldHRlciBkZWZpbml0aW9uIik7CiAgICAgfQogCiAgICAgaWYg
KHN0cmluZ1Byb3BlcnR5TmFtZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmlu
ZGV4IDY4ZWZjYWRlYWEzZjYwOTUzZmU5NmNkMmViZmQwZDdiYTg1NDQ5NTUuLjRlOTY2NGZlY2Zi
NjkzMzA1NThlN2E4Njc0NmEyZDJiNjZkOWM1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuaApAQCAtNTE3LDYgKzUxNywzNCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBy
ZXN1bHQ7CiAgICAgfQogCisgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRl
U2V0dGVyKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1f
YWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CisgICAgICAgIERlY2xhcmF0aW9uUmVzdWx0TWFz
ayByZXN1bHQgPSBEZWNsYXJhdGlvblJlc3VsdDo6VmFsaWQ7CisgICAgICAgIGJvb2wgYWRkUmVz
dWx0ID0gbV9sZXhpY2FsVmFyaWFibGVzLmRlY2xhcmVQcml2YXRlU2V0dGVyKGlkZW50KTsKKwor
ICAgICAgICBpZiAoIWFkZFJlc3VsdCkgeworICAgICAgICAgICAgcmVzdWx0IHw9IERlY2xhcmF0
aW9uUmVzdWx0OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb247CisgICAgICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
KyAgICBEZWNsYXJhdGlvblJlc3VsdE1hc2sgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCisgICAgeworICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVj
bGFyYXRpb25zKTsKKyAgICAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xh
cmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAgICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxW
YXJpYWJsZXMuZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnQpOworCisgICAgICAgIGlmICghYWRk
UmVzdWx0KSB7CisgICAgICAgICAgICByZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbjsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
ICAgIH0KKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKwogICAgIERlY2xhcmF0aW9u
UmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0ZUZpZWxkKGNvbnN0IElkZW50aWZpZXImIGlkZW50KQog
ICAgIHsKICAgICAgICAgQVNTRVJUKG1fYWxsb3dzTGV4aWNhbERlY2xhcmF0aW9ucyk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50LmNw
cAppbmRleCAzZWM1N2MzZTJhYmE1ZGIzN2I3ZmI2MmUzYzlmMGExNjNmYjVkZTY3Li5hODFiY2Rj
MDY5YTY4OThkZjA4ZDU1M2E1NTk1N2I3ZjY2OGMzM2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5jcHAKQEAgLTEwNCw2ICsx
MDQsMTAyIEBAIHZvaWQgVmFyaWFibGVFbnZpcm9ubWVudDo6bWFya1ZhcmlhYmxlQXNFeHBvcnRl
ZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+CiAgICAgZmluZFJlc3VsdC0+dmFsdWUu
c2V0SXNFeHBvcnRlZCgpOwogfQogCitib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQ
cml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIp
Cit7CisgICAgaWYgKCFtX3JhcmVEYXRhKQorICAgICAgICBtX3JhcmVEYXRhID0gV1RGOjptYWtl
VW5pcXVlPFZhcmlhYmxlRW52aXJvbm1lbnQ6OlJhcmVEYXRhPigpOworCisgICAgYXV0byBmaW5k
UmVzdWx0ID0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZmluZChpZGVudGlmaWVyKTsKKwor
ICAgIGlmIChmaW5kUmVzdWx0ID09IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmVuZCgpKSB7
CisgICAgICAgIFByaXZhdGVOYW1lRW50cnkgbWV0YShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKKworICAg
ICAgICBhdXRvIGVudHJ5ID0gVmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGVu
dHJ5LnNldElzUHJpdmF0ZVNldHRlcigpOworICAgICAgICBlbnRyeS5zZXRJc0NvbnN0KCk7Cisg
ICAgICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICAgICAgbV9tYXAuYWRkKGlkZW50aWZp
ZXIsIGVudHJ5KTsKKworICAgICAgICBhdXRvIGFkZFJlc3VsdCA9IG1fcmFyZURhdGEtPm1fcHJp
dmF0ZU5hbWVzLmFkZChpZGVudGlmaWVyLCBtZXRhKTsKKyAgICAgICAgcmV0dXJuIGFkZFJlc3Vs
dC5pc05ld0VudHJ5OworICAgIH0KKworICAgIFByaXZhdGVOYW1lRW50cnkgY3VycmVudEVudHJ5
ID0gZmluZFJlc3VsdC0+dmFsdWU7CisgICAgaWYgKGN1cnJlbnRFbnRyeS5pc0RlY2xhcmVkKCkp
IHsKKyAgICAgICAgaWYgKGN1cnJlbnRFbnRyeS5pc1NldHRlcigpIHx8IGN1cnJlbnRFbnRyeS5p
c01ldGhvZCgpIHx8ICFjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsgLy8gRXJyb3I6IGRlY2xhcmluZyBhIGR1cGxpY2F0ZSBwcml2YXRlIG5hbWUuCisK
KyAgICAgICAgQVNTRVJUKGN1cnJlbnRFbnRyeS5pc0dldHRlcigpKTsKKyAgICAgICAgUHJpdmF0
ZU5hbWVFbnRyeSBtZXRhKGN1cnJlbnRFbnRyeS5iaXRzKCkgfCBQcml2YXRlTmFtZUVudHJ5OjpU
cmFpdHM6OklzU2V0dGVyKTsKKyAgICAgICAgbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0
KGlkZW50aWZpZXIsIG1ldGEpOworCisgICAgICAgIGF1dG8gZW50cnlJdGVyYXRvciA9IG1fbWFw
LmZpbmQoaWRlbnRpZmllcik7CisgICAgICAgIEFTU0VSVChlbnRyeUl0ZXJhdG9yICE9IG1fbWFw
LmVuZCgpKTsKKyAgICAgICAgZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRlU2V0dGVy
KCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gaXQgd2FzIHByZXZp
b3VzbHkgdXNlZCwgbWFyayBpdCBhcyBkZWNsYXJlZC4KKyAgICBhdXRvIGVudHJ5ID0gVmFyaWFi
bGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgZW50cnkuc2V0SXNQcml2YXRlU2V0dGVyKCk7Cisg
ICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgIGVudHJ5LnNldElzQ2FwdHVyZWQoKTsKKyAgICBt
X21hcC5hZGQoaWRlbnRpZmllciwgZW50cnkpOworCisgICAgUHJpdmF0ZU5hbWVFbnRyeSBuZXdF
bnRyeShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0Rl
Y2xhcmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcik7CisgICAgbV9yYXJl
RGF0YS0+bV9wcml2YXRlTmFtZXMuc2V0KGlkZW50aWZpZXIsIG5ld0VudHJ5KTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworYm9vbCBWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdl
dHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAg
IGlmICghbV9yYXJlRGF0YSkKKyAgICAgICAgbV9yYXJlRGF0YSA9IFdURjo6bWFrZVVuaXF1ZTxW
YXJpYWJsZUVudmlyb25tZW50OjpSYXJlRGF0YT4oKTsKKworICAgIGF1dG8gZmluZFJlc3VsdCA9
IG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLmZpbmQoaWRlbnRpZmllcik7CisKKyAgICBpZiAo
ZmluZFJlc3VsdCA9PSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5lbmQoKSkgeworICAgICAg
ICBQcml2YXRlTmFtZUVudHJ5IG1ldGEoUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0RlY2xh
cmVkIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc0dldHRlcik7CisKKyAgICAgICAgYXV0
byBlbnRyeSA9IFZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeSgpOworICAgICAgICBlbnRyeS5zZXRJ
c1ByaXZhdGVHZXR0ZXIoKTsKKyAgICAgICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBl
bnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRy
eSk7CisKKyAgICAgICAgYXV0byBhZGRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1l
cy5hZGQoaWRlbnRpZmllciwgbWV0YSk7CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdF
bnRyeTsKKyAgICB9CisKKyAgICBQcml2YXRlTmFtZUVudHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRS
ZXN1bHQtPnZhbHVlOworICAgIGlmIChjdXJyZW50RW50cnkuaXNEZWNsYXJlZCgpKSB7CisgICAg
ICAgIGlmIChjdXJyZW50RW50cnkuaXNHZXR0ZXIoKSB8fCBjdXJyZW50RW50cnkuaXNNZXRob2Qo
KSB8fCAhY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
IC8vIEVycm9yOiBkZWNsYXJpbmcgYSBkdXBsaWNhdGUgcHJpdmF0ZSBuYW1lLgorCisgICAgICAg
IEFTU0VSVChjdXJyZW50RW50cnkuaXNTZXR0ZXIoKSk7CisgICAgICAgIFByaXZhdGVOYW1lRW50
cnkgbWV0YShjdXJyZW50RW50cnkuYml0cygpIHwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJ
c0dldHRlcik7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJpdmF0ZU5hbWVzLnNldChpZGVudGlm
aWVyLCBtZXRhKTsKKworICAgICAgICBhdXRvIGVudHJ5SXRlcmF0b3IgPSBtX21hcC5maW5kKGlk
ZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoZW50cnlJdGVyYXRvciAhPSBtX21hcC5lbmQoKSk7
CisgICAgICAgIGVudHJ5SXRlcmF0b3ItPnZhbHVlLnNldElzUHJpdmF0ZUdldHRlcigpOworCisg
ICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIGl0IHdhcyBwcmV2aW91c2x5IHVz
ZWQsIG1hcmsgaXQgYXMgZGVjbGFyZWQuCisgICAgYXV0byBlbnRyeSA9IFZhcmlhYmxlRW52aXJv
bm1lbnRFbnRyeSgpOworICAgIGVudHJ5LnNldElzUHJpdmF0ZUdldHRlcigpOworICAgIGVudHJ5
LnNldElzQ29uc3QoKTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgbV9tYXAuYWRk
KGlkZW50aWZpZXIsIGVudHJ5KTsKKworICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3Vy
cmVudEVudHJ5LmJpdHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8
IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOworICAgIG1fcmFyZURhdGEtPm1f
cHJpdmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBuZXdFbnRyeSk7CisgICAgcmV0dXJuIHRydWU7
Cit9CisKIGJvb2wgVmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFyZVByaXZhdGVNZXRob2QoY29u
c3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikKIHsKICAgICBpZiAoIW1f
cmFyZURhdGEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVF
bnZpcm9ubWVudC5oCmluZGV4IGY2ZDM1OGIxOTcwMDJkMjBkZTk3ZjQwNjkzYzMzZjY5ZDU1NzM4
MmIuLjAyNTE2OWJlMmFiZmVlZDU2NjVkYWQ3OWE2MjU4Mzg0YTFjOWNiMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5oCkBAIC00
Nyw2ICs0Nyw4IEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTbG9wcHlNb2Rl
SG9pc3RpbmdDYW5kaWRhdGUoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1Nsb3BweU1vZGVI
b2lzdGluZ0NhbmRpZGF0ZTsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVGaWVs
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJpdmF0ZUZpZWxkOyB9CiAgICAgQUxXQVlT
X0lOTElORSBib29sIGlzUHJpdmF0ZU1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElz
UHJpdmF0ZU1ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc1ByaXZhdGVTZXR0ZXIo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVTZXR0ZXI7IH0KKyAgICBBTFdBWVNf
SU5MSU5FIGJvb2wgaXNQcml2YXRlR2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQ
cml2YXRlR2V0dGVyOyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNDYXB0dXJlZCgp
IHsgbV9iaXRzIHw9IElzQ2FwdHVyZWQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXND
b25zdCgpIHsgbV9iaXRzIHw9IElzQ29uc3Q7IH0KQEAgLTYwLDYgKzYyLDggQEAgcHVibGljOgog
ICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZSgp
IHsgbV9iaXRzIHw9IElzU2xvcHB5TW9kZUhvaXN0aW5nQ2FuZGlkYXRlOyB9CiAgICAgQUxXQVlT
X0lOTElORSB2b2lkIHNldElzUHJpdmF0ZUZpZWxkKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlRmll
bGQ7IH0KICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNQcml2YXRlTWV0aG9kKCkgeyBtX2Jp
dHMgfD0gSXNQcml2YXRlTWV0aG9kOyB9CisgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJp
dmF0ZVNldHRlcigpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZVNldHRlcjsgfQorICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVHZXR0ZXIoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVHZXR0
ZXI7IH0KIAogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBjbGVhcklzVmFyKCkgeyBtX2JpdHMgJj0g
fklzVmFyOyB9CiAKQEAgLTg0LDYgKzg4LDggQEAgcHJpdmF0ZToKICAgICAgICAgSXNTbG9wcHlN
b2RlSG9pc3RpbmdDYW5kaWRhdGUgPSAxIDw8IDksCiAgICAgICAgIElzUHJpdmF0ZUZpZWxkID0g
MSA8PCAxMCwKICAgICAgICAgSXNQcml2YXRlTWV0aG9kID0gMSA8PCAxMSwKKyAgICAgICAgSXNQ
cml2YXRlR2V0dGVyID0gMSA8PCAxMiwKKyAgICAgICAgSXNQcml2YXRlU2V0dGVyID0gMSA8PCAx
MywKICAgICB9OwogICAgIHVpbnQxNl90IG1fYml0cyB7IDAgfTsKIH07CkBAIC0xMDEsOCArMTA3
LDExIEBAIHB1YmxpYzoKICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNVc2VkKCkgY29uc3QgeyBy
ZXR1cm4gbV9iaXRzICYgSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzRGVjbGFy
ZWQoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc0RlY2xhcmVkOyB9CiAgICAgQUxXQVlTX0lO
TElORSBib29sIGlzTWV0aG9kKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNNZXRob2Q7IH0K
KyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNTZXR0ZXIoKSBjb25zdCB7IHJldHVybiBtX2JpdHMg
JiBJc1NldHRlcjsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0dldHRlcigpIGNvbnN0IHsg
cmV0dXJuIG1fYml0cyAmIElzR2V0dGVyOyB9CisgICAgQUxXQVlTX0lOTElORSBib29sIGlzRmll
bGQoKSBjb25zdCB7IHJldHVybiAhaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCk7IH0KIAotICAg
IGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29uc3QgeyByZXR1cm4gaXNNZXRob2Qo
KTsgfQorICAgIGJvb2wgaXNQcml2YXRlTWV0aG9kT3JBY2Vzc29yKCkgY29uc3QgeyByZXR1cm4g
aXNNZXRob2QoKSB8fCBpc1NldHRlcigpIHx8IGlzR2V0dGVyKCk7IH0KIAogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1VzZWQoKSB7IG1fYml0cyB8PSBJc1VzZWQ7IH0KICAgICBBTFdBWVNf
SU5MSU5FIHZvaWQgc2V0SXNEZWNsYXJlZCgpIHsgbV9iaXRzIHw9IElzRGVjbGFyZWQ7IH0KQEAg
LTExOSw2ICsxMjgsOCBAQCBwdWJsaWM6CiAgICAgICAgIElzVXNlZCA9IDEgPDwgMCwKICAgICAg
ICAgSXNEZWNsYXJlZCA9IDEgPDwgMSwKICAgICAgICAgSXNNZXRob2QgPSAxIDw8IDIsCisgICAg
ICAgIElzR2V0dGVyID0gMSA8PCAzLAorICAgICAgICBJc1NldHRlciA9IDEgPDwgNCwKICAgICB9
OwogCiBwcml2YXRlOgpAQCAtMTk1LDYgKzIwNiwxMiBAQCBwdWJsaWM6CiAgICAgYm9vbCBkZWNs
YXJlUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBk
ZWNsYXJlUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyLmltcGwoKSk7IH0KICAgICBib29sIGRlY2xh
cmVQcml2YXRlTWV0aG9kKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZp
ZXIpOwogCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZVNldHRlcihjb25zdCBJZGVudGlmaWVyJiBp
ZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZVNldHRlcihpZGVudGlmaWVyLmltcGwo
KSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlU2V0dGVyKGNvbnN0IFJlZlB0cjxVbmlxdWVk
U3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZUdldHRl
cihjb25zdCBJZGVudGlmaWVyJiBpZGVudGlmaWVyKSB7IHJldHVybiBkZWNsYXJlUHJpdmF0ZUdl
dHRlcihpZGVudGlmaWVyLmltcGwoKSk7IH0KKyAgICBib29sIGRlY2xhcmVQcml2YXRlR2V0dGVy
KGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpOworCiAgICAgTWFw
OjpBZGRSZXN1bHQgZGVjbGFyZVByaXZhdGVGaWVsZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmlu
Z0ltcGw+JiBpZGVudGlmaWVyKQogICAgIHsKICAgICAgICAgYXV0byYgbWV0YSA9IGdldE9yQWRk
UHJpdmF0ZU5hbWUoaWRlbnRpZmllci5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0V4Y2VwdGlvbkhlbHBlcnMuY3BwCmluZGV4IGQ4NzQ0Nzk0YmJiMWFkMzAz
MWZiNDhhYmM2NGVlNTUwMzNjNmJhYjUuLjJkZWZlYTM3YjM2ZjFkZDM1MDFlMThjYzBmZTIyOWIz
YTRlNzYwNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0V4Y2Vw
dGlvbkhlbHBlcnMuY3BwCkBAIC0zMzYsNyArMzM2LDcgQEAgSlNPYmplY3QqIGNyZWF0ZVJlZGVm
aW5lZFByaXZhdGVOYW1lRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIAogSlNP
YmplY3QqIGNyZWF0ZVByaXZhdGVNZXRob2RBY2Nlc3NFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0KQogewotICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBt
YWtlU3RyaW5nKCJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIl9zKSwgZGVmYXVsdFNvdXJj
ZUFwcGVuZGVyLCBUeXBlTm90aGluZyk7CisgICAgcmV0dXJuIGNyZWF0ZVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIG1ha2VTdHJpbmcoIkNhbm5vdCBhY2Nlc3MgcHJpdmF0ZSBtZXRob2Qgb3IgYWNl
c3NvciJfcyksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhpbmcpOwogfQogCiBKU09i
amVjdCogY3JlYXRlUmVpbnN0YWxsUHJpdmF0ZU1ldGhvZEVycm9yKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QpCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDQ0MWZmMTQyNzUzMzk1ODdkMTQwMWYyMTg5MDQzZjdmM2EzYTliZjcuLjM4
YWVlNDU1NTQ1NjBhY2FmODhjMjkzOTk4ZmYzYzgzNTI0ZjkzMjMgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIw
MjEtMDItMTIgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29tPgorCisgICAgICAgIFtF
U05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxp
Y2F0ZS1uYW1lLWVhcmx5LWVycm9ycy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZh
dGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0
ZS1nZXR0ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRl
LW1lbWJlcnMtZ2V0LWFuZC1zZXQuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRl
LW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wb3N0Zml4LW5vZGUuanM6IEFkZGVkLgorICAgICAgICAq
IHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qczogQWRk
ZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1l
dmFsLmpzOgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFs
LWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qczogQ29waWVkIGZyb20gSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMuCisgICAgICAgICog
c3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBz
dHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHRl
c3QyNjIvY29uZmlnLnlhbWw6CisgICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoK
KwogMjAyMS0wMi0wOSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIEMrKyBpdGVyYXRpb24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVyYXRvciBwcm90
b2NvbApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0
ZS1uYW1lLWVhcmx5LWVycm9ycy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1k
dXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NhM2JmYjY0ZjJjM2M2
MmM4YWExMTA0MGIwYzA5MGIwZjlhZjliNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3Ry
ZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMKQEAgLTAs
MCArMSw5MiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUi
KQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7
CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
RXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0
aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAg
ICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBp
bnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJv
cigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIg
KyBlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwg
ZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAg
c2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgICAgIHNldCAjbSh1KSB7fQorICAg
ICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rp
b24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgI207Cisg
ICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICB9CisgICAgYCk7
Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZh
bChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9
IHY7IH0KKyAgICAgICAgICAgICNtOworICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0
LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNs
YXNzIEMgeworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAg
ICAgICNtKCkge30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3lu
dGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAg
ICAgICAgICAgICNtKCkge30KKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAg
ICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAg
ICAgICAgICAgZ2V0ICNtKCkge30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50
aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFz
cyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgICAgICBzZXQgI20oKSB7fQor
ICAgICAgICAgICAgI207CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dz
KFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7
CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAgc2V0ICNtKCkge30KKyAgICAg
ICAgICAgICNtKCkge30KKyAgICAgICAgfQorICAgIGApOworfSk7CisKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJl
c3MvcHJpdmF0ZS1nZXR0ZXItYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0MTVkYjhhZTZi
ZWQwNDkwMDViNzM5NWVmYmFlODU1MDE5MjFmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsOTEgQEAKKy8v
QCByZXF1aXJlT3B0aW9ucygiLS11c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2Vy
dCA9IHsKKyAgICBzYW1lVmFsdWU6IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAo
bGhzICE9PSByaHMpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsg
bGhzICsgIiBidWcgZ290OiAiICsgcmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlv
biAoZXhwZWN0ZWRFcnJvciwgb3ApIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOwor
ICAgICAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBl
Y3RlZEVycm9yKSkKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRv
IHRocm93OiAiICsgZXhwZWN0ZWRFcnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAg
IH0KKyAgICB9Cit9OworCisoZnVuY3Rpb24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJbnN0YW50
aWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAg
IGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgICAgICBhY2Nlc3Mobykgewor
ICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgcmV0dXJuIG5ldyBDKCk7CisgICAgfQorCisgICAgbGV0IGMxID0gY3JlYXRlQW5k
SW5zdGFudGlhdGVDbGFzcygpOworICAgIGxldCBjMiA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xh
c3MoKTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUoYzEuYWNjZXNzKGMxKSwgJ3Rlc3QnKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKGMyLmFjY2VzcyhjMiksICd0ZXN0Jyk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2VzcyhjMik7Cisg
ICAgfSk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGMyLmFjY2VzcyhjMSk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAg
IGNsYXNzIFMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnc3VwZXIgY2xhc3MnOyB9CisK
KyAgICAgICAgc3VwZXJBY2Nlc3MoKSB7IHJldHVybiB0aGlzLiNtOyB9CisgICAgfQorCisgICAg
Y2xhc3MgQyBleHRlbmRzIFMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnc3ViY2xhc3Mn
OyB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI207Cisg
ICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKGMuYWNjZXNzKCksICdzdWJjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5z
dXBlckFjY2VzcygpLCAnc3VwZXIgY2xhc3MnKTsKKworICAgIGxldCBzID0gbmV3IFMoKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKHMuc3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcy5j
YWxsKHMpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzKG8p
IHsKKyAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoYyksICd0ZXN0Jyk7
CisKKyAgICBsZXQgbyA9IHt9OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICAgICAgYy5hY2Nlc3Mobyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcyBiL0pTVGVzdHMv
c3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWlubmVyLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MGNlZGZl
MjU0NmNhNTExODg2YTEwYzYyYzI1YzRhMDBkNTU4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL3N0cmVzcy9wcml2YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDE1OSBA
QAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQg
YXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAg
IGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6
ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1
bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9w
KCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9m
IGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAg
ICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAg
ICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7Cisg
ICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAg
IGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0
aG9kKGMpLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1l
dGhvZCgpIHsgcmV0dXJuIHRoaXMuI207IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAg
ICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAg
ICAgIH0KKworICAgICAgICAgICAgI20gPSAndGVzdCc7CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKGlubmVyQi5tZXRob2QoaW5uZXJCKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAj
bSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVy
biB0aGlzLiNtOyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChv
KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLm1ldGhvZCgpLCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAg
fSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQg
I20oKSB7IHRocm93IG5ldyBFcnJvcignU2hvdWxkIG5ldmVyIGV4ZWN1dGUnKTsgfQorCisgICAg
ICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAg
IHJldHVybiBvLiNtKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeyByZXR1
cm4gJ3Rlc3QnOyB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5t
ZXRob2QoaW5uZXJCKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCiso
ZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAn
b3V0ZXIgY2xhc3MnOyB9CisKKyAgICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQor
CisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAg
ICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXQgI20o
dikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoaW5uZXJCKTsKKyAg
ICB9KTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7
CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlu
bmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICAjbSgpIHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAg
ICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtKCk7IH0KKworICAgICAgICBCID0gY2xhc3Mgewor
ICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QyNjInOyB9
CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVy
QiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tZXRob2QoaW5uZXJC
KSwgJ3Rlc3QyNjInKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBj
bGFzcycpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9LCAnYWNjZXNzZWQgaW5uZXIgY2xhc3MgZ2V0dGVy
IGZyb20gYW4gb2JqZWN0IG9mIG91dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QuY2FsbChpbm5l
ckIpOworICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0
ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJz
LWdldC1hbmQtc2V0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwMWY2NTk4MThlZWZiYzhiYTMyNjliMzhlNzRh
OTY0MGE1NWRiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1l
bWJlcnMtZ2V0LWFuZC1zZXQuanMKQEAgLTAsMCArMSw2MyBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6
ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMu
X3YgPSB2OyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcigpIHsKKyAgICAgICAgICAg
IHJldHVybiB0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGMu
YWNjZXNzUHJpdmF0ZU1lbWJlcigpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsK
KyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAg
ICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhy
b3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1i
ZXIoJ3Rlc3QnKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3Mg
QyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzUHJp
dmF0ZU1lbWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAg
IH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwg
ZnVuY3Rpb24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoJ3Rlc3QnKTsKKyAg
ICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9k
cy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
bWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3RmaXgtbm9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjllMjRl
M2YyMTM5NGJhMGIyN2NkNjQ4NmVhMGY2OWM1NDQ0N2JkCi0tLSAvZGV2L251bGwKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZXRob2RzLWFuZC1hY2Nlc3NvcnMtcG9zdGZpeC1ub2RlLmpz
CkBAIC0wLDAgKzEsMTY2IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhv
ZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhz
LCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwK
KworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRy
eSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBp
ZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0
aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uKCkgeworICAg
IGNsYXNzIEMgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBhY2Nl
c3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbWV0aG9kKys7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3Is
IGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1
bmN0aW9uKCkgeworICAgIGxldCBleGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNzIEMg
eworICAgICAgICBnZXQgI20oKSB7CisgICAgICAgICAgICBleGVjdXRlZEdldHRlciA9IHRydWU7
CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhp
cy4jbSsrOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MoKTsK
KyAgICB9KTsKKworICAgIGFzc2VydC5zYW1lVmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIpOwor
fSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikg
eworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQi
KTsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0
aGlzLiNtKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcygp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICBzZXQgI20odikgeworICAgICAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZSg1LCB2KTsKKyAgICAg
ICAgfQorCisgICAgICAgIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAg
ICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20rKzsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2Ft
ZVZhbHVlKDQsIGMuYWNjZXNzKCkpOworfSkoKTsKKworLy8gSWdub3JlZCByZXN1bHQKKworKGZ1
bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAgIH0K
KworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNtZXRob2QtLTsKKyAgICAg
ICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgp
OworCisoZnVuY3Rpb24oKSB7CisgICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsKKyAgICAgICAgICAgIGV4ZWN1dGVkR2V0dGVy
ID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRo
aXMuI20tLTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBh
c3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKCk7
CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHRydWUsIGV4ZWN1dGVkR2V0dGVyKTsK
K30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYp
IHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVk
Iik7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNt
LS07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcygpOworICAg
IH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQg
I20odikgeworICAgICAgICAgICAgYXNzZXJ0LnNhbWVWYWx1ZSgzLCB2KTsKKyAgICAgICAgfQor
CisgICAgICAgIGdldCAjbSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisK
KyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgdGhpcy4jbS0tOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMuYWNjZXNzKCk7Cit9KSgpOworCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1w
cmVmaXgtbm9kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNz
b3JzLXByZWZpeC1ub2RlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU2YTBjZWU3OWQwZDg2MmZmM2FiNjk2N2Ex
ZWIzOTEwMTNjYjQxNTkKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRl
LW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qcwpAQCAtMCwwICsxLDE2NiBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNz
ZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlm
IChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIg
KyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0
aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7
CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4
cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQg
dG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAg
ICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
I21ldGhvZCgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJl
IGNhbGxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAg
cmV0dXJuICsrdGhpcy4jbWV0aG9kOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgYy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBsZXQg
ZXhlY3V0ZWRHZXR0ZXIgPSBmYWxzZTsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkg
eworICAgICAgICAgICAgZXhlY3V0ZWRHZXR0ZXIgPSB0cnVlOworICAgICAgICB9CisKKyAgICAg
ICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuICsrdGhpcy4jbTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKCk7CisgICAgfSk7CisKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKHRydWUsIGV4ZWN1dGVkR2V0dGVyKTsKK30pKCk7CisKKyhmdW5jdGlvbigp
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkIik7CisgICAgICAgIH0KKworICAg
ICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gKyt0aGlzLiNtOworICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVy
cm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisK
KyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAg
ICAgICAgIGFzc2VydC5zYW1lVmFsdWUoNSwgdik7CisgICAgICAgIH0KKworICAgICAgICBnZXQg
I20oKSB7CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2Vz
cygpIHsKKyAgICAgICAgICAgIHJldHVybiArK3RoaXMuI207CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZSg1LCBjLmFjY2Vzcygp
KTsKK30pKCk7CisKKy8vIElnbm9yZWQgcmVzdWx0CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFz
cyBDIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigi
U2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkg
eworICAgICAgICAgICAgLS10aGlzLiNtZXRob2Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBs
ZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgICAgICBjLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgewor
ICAgIGxldCBleGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNzIEMgeworICAgICAgICBn
ZXQgI20oKSB7CisgICAgICAgICAgICBleGVjdXRlZEdldHRlciA9IHRydWU7CisgICAgICAgIH0K
KworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICAtLXRoaXMuI207CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcygpOworICAgIH0pOworCisgICAgYXNz
ZXJ0LnNhbWVWYWx1ZSh0cnVlLCBleGVjdXRlZEdldHRlcik7Cit9KSgpOworCisoZnVuY3Rpb24o
KSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoIlNob3VsZCBuZXZlciBiZSBleGVjdXRlZCIpOworICAgICAgICB9CisKKyAg
ICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlzLiNtOworICAgICAgICB9CisgICAg
fQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBm
dW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5j
dGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAg
IGFzc2VydC5zYW1lVmFsdWUoMywgdik7CisgICAgICAgIH0KKworICAgICAgICBnZXQgI20oKSB7
CisgICAgICAgICAgICByZXR1cm4gNDsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsK
KyAgICAgICAgICAgIC0tdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICBjLmFjY2VzcygpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9z
dHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMgYi9KU1Rlc3Rz
L3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwppbmRleCA2
NGNlMGUwYWY4MDU3OGU4OTcxNmExNjcyZWRjMTc3MzA1YjA2NGYzLi4zZWE5YzdkNDNjM2RhYzE1
ZTBmOGQwOTMzYTkyNWZlODE2NWQwN2RjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcworKysgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMjEsMyArMjEs
MzYgQEAgbGV0IGFzc2VydCA9IHsKICAgICBhc3NlcnQuc2FtZVZhbHVlKGMuY2FsbE1ldGhvZEZy
b21FdmFsKCksICd0ZXN0Jyk7CiB9KSgpOwogCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMg
eworICAgICAgICBnZXQgI20oKSB7CisgICAgICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgICAg
ICB9CisKKyAgICAgICAgY2FsbEdldHRlckZyb21FdmFsKCkgeworICAgICAgICAgICAgbGV0IHNl
bGYgPSB0aGlzOworICAgICAgICAgICAgcmV0dXJuIGV2YWwoJ3NlbGYuI20nKTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
Y2FsbEdldHRlckZyb21FdmFsKCksICd0ZXN0Jyk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgewor
ICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeworICAgICAgICAgICAgdGhpcy5fdiA9
IHY7CisgICAgICAgIH0KKworICAgICAgICBjYWxsU2V0dGVyRnJvbUV2YWwodikgeworICAgICAg
ICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICAgICAgZXZhbCgnc2VsZi4jbSA9IHYnKTsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLmNhbGxTZXR0
ZXJGcm9tRXZhbCgndGVzdCcpCisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOwor
fSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFi
bGUtb24tZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXph
dGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi4xNzdmMGRkZGIxOWZjYThmYzJlMjZjNGVhOGNhZDRiYzc4NGUz
NDkyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZXZhbC1kdXJpbmctZmllbGQtaW5pdGlhbGl6YXRpb24uanMKQEAgLTAsMCArMSwz
MSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCits
ZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAg
ICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0
ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBnb3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisK
KyAgICAgICAgZmllbGQgPSBldmFsKCd0aGlzLiNtKCknKTsKKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLmZpZWxkLCAndGVzdCcpOworfSkoKTsK
KworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1
cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgZmllbGQgPSBldmFsKCd0aGlzLiNtJyk7CisgICAgfQor
CisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ3Rl
c3QnKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVy
LWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hl
Y2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmYyM2Y2YmY4ZTQyMWVjMTEzMDM5MTg2MzU5OGE0YjQ0N2I1OThj
NAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5k
LWNoZWNrLmpzCkBAIC0wLDAgKzEsMTAwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7
CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3Ig
KyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBsZXQgY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsg
fQorCisgICAgICAgICAgICBhY2Nlc3MobywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2
OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgICAgICByZXR1cm4gYzsKKyAgICB9OworCisgICAgbGV0IGMxID0gY3JlYXRlQW5kSW5zdGFu
dGlhdGVDbGFzcygpOworICAgIGxldCBjMiA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsK
KworICAgIGMxLmFjY2VzcyhjMSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLl92
LCAndGVzdCcpOworICAgIGMyLmFjY2VzcyhjMiwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZh
bHVlKGMyLl92LCAndGVzdCcpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBjMS5hY2Nlc3MoYzIsICdmb28nKTsKKyAgICB9KTsKKworICAgIGFz
c2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYzIuYWNjZXNzKGMx
LCAnZm9vJyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIFMg
eworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdiB9CisKKyAgICAgICAgc3VwZXJBY2Nl
c3ModikgeyB0aGlzLiNtID0gdjsgfQorICAgIH0KKworICAgIGNsYXNzIEMgZXh0ZW5kcyBTIHsK
KyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdSA9IHY7IH0KKworICAgICAgICBhY2Nlc3Modikg
eworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20gPSB2OworICAgICAgICB9CisgICAgfQorCisg
ICAgbGV0IGMgPSBuZXcgQygpOworCisgICAgYy5hY2Nlc3MoJ3Rlc3QnKTsKKyAgICBhc3NlcnQu
c2FtZVZhbHVlKGMuX3UsICd0ZXN0Jyk7CisKKyAgICBjLnN1cGVyQWNjZXNzKCdzdXBlciBjbGFz
cycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBs
ZXQgcyA9IG5ldyBTKCk7CisgICAgcy5zdXBlckFjY2Vzcygnc3VwZXIgY2xhc3MnKQorICAgIGFz
c2VydC5zYW1lVmFsdWUocy5fdiwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwocywgJ2Zvbycp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBhY2Nlc3Mobywgdikgewor
ICAgICAgICAgICAgcmV0dXJuIG8uI20gPSB2OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGMuYWNjZXNzKGMsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShjLl92LCAndGVzdCcpOworCisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKG8sICdmb28nKTsKKyAg
ICB9KTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVy
LWlubmVyLWNsYXNzLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xh
c3MuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjZkYjg5ZDczZjgxN2ViYWJhNWIxYTAyNDIxN2NlMjk1ZTc5N2Ez
YwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWlubmVy
LWNsYXNzLmpzCkBAIC0wLDAgKzEsMTU1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJp
dmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5j
dGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7
CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7Cisg
ICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAg
ICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3Ig
KyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9u
ICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0K
KworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAg
ICAgICAgICAgICBvLiNtID0gdjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGlu
bmVyQi5tZXRob2QoYywgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0
Jyk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQg
I20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2
OyB9CisKKyAgICAgICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7Cisg
ICAgICAgICAgICAgICAgby4jbSA9IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdl
dCBtKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigp
OworCisgICAgaW5uZXJCLm1ldGhvZChpbm5lckIsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVW
YWx1ZShpbm5lckIubSwgJ3Rlc3QnKTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycpOwor
ICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYywg
J2ZvbycpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBtZXRob2Qodikg
eyB0aGlzLiNtID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRo
b2QobywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICBnZXQgI20oKSB7IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0K
KworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisg
ICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIu
bWV0aG9kKGlubmVyQik7CisgICAgfSk7CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsK
KyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0
LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlz
LiNtID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qobywg
dikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICAjbSgpIHsgcmV0dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoaW5u
ZXJCLCAnZm9vJyk7CisgICAgfSk7CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAg
ICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRo
cm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOwor
ICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAg
c2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNt
ID0gdjsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qobywgdikg
eworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0
IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBpbm5lckIu
bWV0aG9kKGlubmVyQiwgJ3Rlc3QyNjInKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5f
diwgJ3Rlc3QyNjInKTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycpOworICAgIGFzc2Vy
dC5zYW1lVmFsdWUoYy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYywgJ2ZvbycpOwor
ICAgIH0pOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDUxNWRhM2NkYjc5MGVhN2Q3MzZm
ODZhYzczZjMxODY3ZGJiOWVlMTcuLjQxMTY2NzZkZDFlYTg2NDMxNTg2NDA5NWU1NDYxZDE5MGQ2
ZTViYTEgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTQsNiArNCw3IEBAIGZsYWdzOgogICBXZWFrUmVm
OiB1c2VXZWFrUmVmcwogICBGaW5hbGl6YXRpb25SZWdpc3RyeTogdXNlV2Vha1JlZnMKICAgY2xh
c3MtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVDbGFzc0ZpZWxkcworICBjbGFzcy1tZXRob2Rz
LXByaXZhdGU6IHVzZVByaXZhdGVNZXRob2RzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVibGlj
OiB1c2VQdWJsaWNTdGF0aWNDbGFzc0ZpZWxkcwogICBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZh
dGU6IHVzZVByaXZhdGVTdGF0aWNDbGFzc0ZpZWxkcwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRh
eVBlcmlvZDogdXNlSW50bERhdGVUaW1lRm9ybWF0RGF5UGVyaW9kCkBAIC0xOSw3ICsyMCw2IEBA
IHNraXA6CiAgICAgLSByZWdleHAtbG9va2JlaGluZAogICAgIC0gbGVnYWN5LXJlZ2V4cAogCi0g
ICAgLSBjbGFzcy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1tZXRob2RzLXBy
aXZhdGUKICAgICAtIGNsZWFudXBTb21lCiAgICAgLSBob3N0LWdjLXJlcXVpcmVkCmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIv
ZXhwZWN0YXRpb25zLnlhbWwKaW5kZXggMGZhZjNiNWM5Nzc1NzE1ZjI4NGM2YWFjNDBhNWYwODBk
YmY0OTM2Ny4uNjUxMjk4YzM3OTdkNDc0OGM1OTcyYTRjNDIwOTEwOWM3MTk3NmFhNiAxMDA2NDQK
LS0tIGEvSlNUZXN0cy90ZXN0MjYyL2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVz
dDI2Mi9leHBlY3RhdGlvbnMueWFtbApAQCAtNzQxLDYgKzc0MSwxMiBAQCB0ZXN0L2J1aWx0LWlu
cy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvbWV0aG9kLWNvbXB1dGVkLXByb3BlcnR5LW5h
bWUuanM6CiB0ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvbWV0aG9k
LW9iamVjdC5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogQ29uZm9ybXMgdG8gTmF0aXZl
RnVuY3Rpb24gU3ludGF4OiAiZnVuY3Rpb24gZiggLyogYiAqLyApIC8qIGMgKi8geyAvKiBkICov
IH0iIChmIC8qIGEgKi8gKCAvKiBiICovICkgLyogYyAqLyB7IC8qIGQgKi8gfSknCiAgIHN0cmlj
dCBtb2RlOiAnVGVzdDI2MkVycm9yOiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBTeW50YXg6
ICJmdW5jdGlvbiBmKCAvKiBiICovICkgLyogYyAqLyB7IC8qIGQgKi8gfSIgKGYgLyogYSAqLyAo
IC8qIGIgKi8gKSAvKiBjICovIHsgLyogZCAqLyB9KScKK3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9u
L3Byb3RvdHlwZS90b1N0cmluZy9wcml2YXRlLW1ldGhvZC1jbGFzcy1leHByZXNzaW9uLmpzOgor
ICBkZWZhdWx0OiAnVGVzdDI2MkVycm9yOiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBTeW50
YXg6ICJmdW5jdGlvbiAjZiggLyogYiAqLyApIC8qIGMgKi8geyAvKiBkICovIH0iICgjZiAvKiBh
ICovICggLyogYiAqLyApIC8qIGMgKi8geyAvKiBkICovIH0pJworICBzdHJpY3QgbW9kZTogJ1Rl
c3QyNjJFcnJvcjogQ29uZm9ybXMgdG8gTmF0aXZlRnVuY3Rpb24gU3ludGF4OiAiZnVuY3Rpb24g
I2YoIC8qIGIgKi8gKSAvKiBjICovIHsgLyogZCAqLyB9IiAoI2YgLyogYSAqLyAoIC8qIGIgKi8g
KSAvKiBjICovIHsgLyogZCAqLyB9KScKK3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlw
ZS90b1N0cmluZy9wcml2YXRlLW1ldGhvZC1jbGFzcy1zdGF0ZW1lbnQuanM6CisgIGRlZmF1bHQ6
ICdUZXN0MjYyRXJyb3I6IENvbmZvcm1zIHRvIE5hdGl2ZUZ1bmN0aW9uIFN5bnRheDogImZ1bmN0
aW9uICNmKCAvKiBiICovICkgLyogYyAqLyB7IC8qIGQgKi8gfSIgKCNmIC8qIGEgKi8gKCAvKiBi
ICovICkgLyogYyAqLyB7IC8qIGQgKi8gfSknCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBTeW50YXg6ICJmdW5jdGlvbiAjZiggLyogYiAq
LyApIC8qIGMgKi8geyAvKiBkICovIH0iICgjZiAvKiBhICovICggLyogYiAqLyApIC8qIGMgKi8g
eyAvKiBkICovIH0pJwogdGVzdC9idWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5n
L3NldHRlci1jbGFzcy1leHByZXNzaW9uLXN0YXRpYy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJF
cnJvcjogQ29uZm9ybXMgdG8gTmF0aXZlRnVuY3Rpb24gU3ludGF4OiAiZnVuY3Rpb24gKCAvKiBj
ICovIGEgLyogZCAqLyApIC8qIGUgKi8geyAvKiBmICovIH0iIChzZXQgLyogYSAqLyBmIC8qIGIg
Ki8gKCAvKiBjICovIGEgLyogZCAqLyApIC8qIGUgKi8geyAvKiBmICovIH0pJwogICBzdHJpY3Qg
bW9kZTogJ1Rlc3QyNjJFcnJvcjogQ29uZm9ybXMgdG8gTmF0aXZlRnVuY3Rpb24gU3ludGF4OiAi
ZnVuY3Rpb24gKCAvKiBjICovIGEgLyogZCAqLyApIC8qIGUgKi8geyAvKiBmICovIH0iIChzZXQg
LyogYSAqLyBmIC8qIGIgKi8gKCAvKiBjICovIGEgLyogZCAqLyApIC8qIGUgKi8geyAvKiBmICov
IH0pJwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>420350</attachid>
            <date>2021-02-15 12:44:00 -0800</date>
            <delta_ts>2021-02-15 14:40:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-194435-20210215174358.patch</filename>
            <type>text/plain</type>
            <size>77219</size>
            <attacher name="Caio Lima">ticaiolima</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNjYzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA1
MWIwMmZhMTIzZDg5YjM2OTdlZDZhNWE1YmI0N2ExOWY2YzNkNzI1Li5jMzJjZTJhMDdkODBlOTkw
YTZhZDk2YWNhZTEzNjJkNDAyZDg5ZTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDEgQEAKKzIwMjEtMDItMTUgIENhaW8gTGltYSAgPHRpY2Fpb2xpbWFAZ21haWwuY29t
PgorCisgICAgICAgIFtFU05leHRdIEltcGxlbWVudCBwcml2YXRlIGFjY2Vzc29ycworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NDM1CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgWXVzdWtlIFN1enVraS4KKworICAgICAgICBUaGlzIHBhdGNoIGlzIGlt
cGxlbWVudGluZyBzdXBwb3J0IGZvciBpbnN0YW5jZSBwcml2YXRlIGdldHRlcnMgYW5kCisgICAg
ICAgIHNldHRlcnMgZm9sbG93aW5nIHRoZSBwcm9wb3NhbCBvbiBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtcHJpdmF0ZS1tZXRob2RzLgorICAgICAgICBQcml2YXRlIGFjY2Vzc29ycyBhbHNvIHVz
ZSB0aGUgcHJpdmF0ZSBicmFuZCBjaGVjayBtZWNoYW5pc20gb2YKKyAgICAgICAgcHJpdmF0ZSBt
ZXRob2RzLCB3aGljaCBtZWFucyB0aGF0IHdlIGFyZSB1c2luZyBib3RoCisgICAgICAgIGBvcF9z
ZXRfcHJpdmF0ZV9icmFuZGAgYW5kIGBvcF9jaGVja19wcml2YXRlX2JyYW5kYCB0byBwZXJmb3Jt
IGJyYW5kCisgICAgICAgIGNoZWNrcy4gQWNjZXNzb3JzIGFyZSBhbHNvIHN0b3JlZCBvbiBjbGFz
cyBsZXhpY2FsIHNjb3BlIGFzIGEgcGFpciBvZgorICAgICAgICBgZ2V0dGVyYCBhbmQgYHNldHRl
cmAuIFRoaXMgaXMgZG9uZSBjcmVhdGluZyBhIG5ldyBgSlNPYmplY3RgIGFuZAorICAgICAgICBz
dG9yaW5nIHRoZSBgZ2V0dGVyYCBvbiBgZ2V0YCBwcm9wZXJ0eSwgYW5kIGBzZXR0ZXJgIG9uIGBz
ZXRgCisgICAgICAgIHByb3BlcnR5LiBUaGlzIGlzIGRlc2lnbmVkIGluIHN1Y2ggd2F5IHRoYXQg
d2UgY2FuIGFsd2F5cyBoaXQgSUMgZmFzdAorICAgICAgICBwYXRoIG9uIGBnZXRfYnlfaWRfZGly
ZWN0YCB0byBhY2Nlc3MgdGhlIHByb3BlcnR5LCBhbmQgYWxzbyB0byBhbGxvdworICAgICAgICBj
b25zdGFudCBmb2xkaW5nIG9mIGFjY2Vzc29ycyBvbiBERkcvRlRMLCBzaW5jZSBhY2Vzc29ycyBv
YmplY3RzIGFyZQorICAgICAgICBnb2luZyB0byBiZSBjb25zdGFudCBvbmNlIGNyZWF0ZWQuCisK
KyAgICAgICAgRm9yIHJlZmVyZW5jZSwgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGJ5dGVjb2RlIGZv
ciBhIHByaXZhdGUgZ2V0dGVyCisgICAgICAgIGFjY2VzczoKKworICAgICAgICBgYGAKKyAgICAg
ICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7Li4ufQorICAgICAgICAgICAgYWNj
ZXNzKCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIGBgYAorCisgICAgICAgIEJ5dGVjb2RlIGZvciBjbGFzcyBkZWNs
YXJhdGlvbjoKKworICAgICAgICBgYGAKKyAgICAgICAgLi4uCisgICAgICAgIG5ld19vYmplY3Qg
ICAgICAgICBkc3Q6bG9jMTIsIGlubGluZUNhcGFjaXR5OjIgLy8gdGhpcyBpcyB0aGUgb2JqZWN0
IHRvIHN0b3JlIGdldHRlciBhbmQgc2V0dGVyIHBhaXIKKyAgICAgICAgbmV3X2Z1bmNfZXhwICAg
ICAgIGRzdDpsb2MxMywgc2NvcGU6bG9jNCwgZnVuY3Rpb25EZWNsOiJnZXQgI20oKSB7Li4ufSIK
KyAgICAgICAgcHV0X2J5X2lkICAgICAgICAgIGJhc2U6bG9jMTMsIHByb3BlcnR5OkBob21lT2Jq
ZWN0LCB2YWx1ZTpsb2MxMSwgZmxhZ3M6U3RyaWN0CisgICAgICAgIHB1dF9ieV9pZCAgICAgICAg
ICBiYXNlOmxvYzEyLCBwcm9wZXJ0eTpAZ2V0LCB2YWx1ZTpsb2MxMywgZmxhZ3M6SXNEaXJlY3R8
U3RyaWN0CisgICAgICAgIHB1dF90b19zY29wZSAgICAgICBzY29wZTpsb2M0LCB2YXI6I20sIHZh
bHVlOmxvYzEyIC8vIGxvYzQgaXMgdGhlIGNsYXNzIGxleGljYWwgc2NvcGUKKyAgICAgICAgLi4u
CisKKyAgICAgICAgYGBgCisKKyAgICAgICAgQnl0ZWNvZGUgZm9yIGBhY2Nlc3MoKWA6CisKKyAg
ICAgICAgYGBgCisgICAgICAgIC4uLgorICAgICAgICByZXNvbHZlX3Njb3BlICAgICAgZHN0Omxv
YzcsIHNjb3BlOmxvYzQsIHZhcjoiI20iLCByZXNvbHZlVHlwZTpHbG9iYWxQcm9wZXJ0eSwgbG9j
YWxTY29wZURlcHRoOjAKKyAgICAgICAgZ2V0X2Zyb21fc2NvcGUgICAgIGRzdDpsb2M4LCBzY29w
ZTpsb2M3LCB2YXI6QHByaXZhdGVCcmFuZAorICAgICAgICBjaGVja19wcml2YXRlX2JyYW5kIGJh
c2U6dGhpcywgYnJhbmQ6bG9jOAorICAgICAgICBnZXRfZnJvbV9zY29wZSAgICAgZHN0OmxvYzgs
IHNjb3BlOmxvYzcsIHZhcjoiI20iCisgICAgICAgIGdldF9ieV9pZF9kaXJlY3QgICBkc3Q6bG9j
OSwgYmFzZTpsb2M4LCBwcm9wZXJ0eTpAZ2V0CisgICAgICAgIG1vdiAgICAgICAgICAgICAgICBk
c3Q6bG9jMTAsIHNyYzp0aGlzCisgICAgICAgIGNhbGwgICAgICAgICAgICAgICBkc3Q6bG9jNiwg
Y2FsbGVlOmxvYzksIGFyZ2M6MSwgYXJndjoxNgorICAgICAgICAuLi4KKworICAgICAgICBgYGAK
KworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6CisgICAgICAg
IChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMpOgor
ICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6Z2V0UHJpdmF0ZVRyYWl0cyk6CisgICAg
ICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpnZXRBdmFpbGFibGVQcml2YXRlQWNjZXNzTmFt
ZXMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6aXNQcml2YXRlTWV0aG9kKTog
RGVsZXRlZC4KKyAgICAgICAgKiBieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3IuaDoKKyAg
ICAgICAgKiBieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcDoKKyAgICAgICAgKEpTQzo6UHJv
cGVydHlMaXN0Tm9kZTo6ZW1pdEJ5dGVjb2RlKToKKyAgICAgICAgKEpTQzo6UHJvcGVydHlMaXN0
Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9k
ZTo6ZW1pdEdldFByb3BlcnR5VmFsdWUpOgorICAgICAgICAoSlNDOjpCYXNlRG90Tm9kZTo6ZW1p
dFB1dFByb3BlcnR5KToKKyAgICAgICAgKEpTQzo6UG9zdGZpeE5vZGU6OmVtaXREb3QpOgorICAg
ICAgICAoSlNDOjpQcmVmaXhOb2RlOjplbWl0RG90KToKKyAgICAgICAgKiBwYXJzZXIvTm9kZXMu
aDoKKyAgICAgICAgKiBwYXJzZXIvUGFyc2VyLmNwcDoKKyAgICAgICAgKEpTQzo6UGFyc2VyPExl
eGVyVHlwZT46OnBhcnNlQ2xhc3MpOgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VHZXR0ZXJTZXR0ZXIpOgorICAgICAgICAqIHBhcnNlci9QYXJzZXIuaDoKKyAgICAgICAg
KEpTQzo6U2NvcGU6OmRlY2xhcmVQcml2YXRlU2V0dGVyKToKKyAgICAgICAgKEpTQzo6U2NvcGU6
OmRlY2xhcmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9u
bWVudC5jcHA6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2
YXRlQWNjZXNzb3IpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNsYXJl
UHJpdmF0ZVNldHRlcik6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xh
cmVQcml2YXRlR2V0dGVyKToKKyAgICAgICAgKiBwYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5o
OgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50RW50cnk6OmlzUHJpdmF0ZVNldHRl
ciBjb25zdCk6CisgICAgICAgIChKU0M6OlZhcmlhYmxlRW52aXJvbm1lbnRFbnRyeTo6aXNQcml2
YXRlR2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5
OjpzZXRJc1ByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50
RW50cnk6OnNldElzUHJpdmF0ZUdldHRlcik6CisgICAgICAgIChKU0M6OlByaXZhdGVOYW1lRW50
cnk6OmlzU2V0dGVyIGNvbnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNH
ZXR0ZXIgY29uc3QpOgorICAgICAgICAoSlNDOjpQcml2YXRlTmFtZUVudHJ5Ojppc0ZpZWxkIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6UHJpdmF0ZU5hbWVFbnRyeTo6aXNQcml2YXRlTWV0aG9kT3JB
Y2Vzc29yIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VmFyaWFibGVFbnZpcm9ubWVudDo6ZGVjbGFy
ZVByaXZhdGVTZXR0ZXIpOgorICAgICAgICAoSlNDOjpWYXJpYWJsZUVudmlyb25tZW50OjpkZWNs
YXJlUHJpdmF0ZUdldHRlcik6CisgICAgICAgICogcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNw
cDoKKyAgICAgICAgKEpTQzo6Y3JlYXRlUHJpdmF0ZU1ldGhvZEFjY2Vzc0Vycm9yKToKKwogMjAy
MS0wMi0xMCAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4KIAogICAgICAgICBEb24n
dCBjcmFzaCB3aGVuIHJlcGFyc2luZyBhbiBhcnJvdyBmdW5jdGlvbiBhbmQgdGhlIHBhcnNpbmcg
aW52YXJpYW50IGlzIGJyb2tlbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
Ynl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAppbmRleCA0ZTU3MTllZjgyNThmM2Iy
OWZlNjBkNzZkYjIwMmQyZjliMjhhNTdlLi5kYzljMmQ5NjFiN2U5MmQ5NTg0MDg4OGJkMmRjM2Zk
NzQ4YzdiMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVy
L0J5dGVjb2RlR2VuZXJhdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNv
bXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcApAQCAtNTYsOCArNTYsOCBAQAogI2luY2x1ZGUg
IlVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgIlVubGlua2VkUHJv
Z3JhbUNvZGVCbG9jay5oIgogI2luY2x1ZGUgPHd0Zi9CaXRWZWN0b3IuaD4KKyNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgotI2luY2x1ZGUgPHd0Zi9T
bWFsbFB0clNldC5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtMTkwMCwxMCArMTkwMCwxNyBAQCBib29sIEJ5dGVj
b2RlR2VuZXJhdG9yOjppbnN0YW50aWF0ZUxleGljYWxWYXJpYWJsZXMoY29uc3QgVmFyaWFibGVF
bnZpcm9ubWVudCYgbAogCiAgICAgICAgICAgICAvLyBGSVhNRTogb25seSBkbyB0aGlzIGlmIHRo
ZXJlIGlzIGFuIGV2YWwoKSB3aXRoaW4gYSBuZXN0ZWQgc2NvcGUgLS0tIG90aGVyd2lzZSBpdCBp
c24ndCBuZWVkZWQuCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjA2NjYzCi0gICAgICAgICAgICBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRl
RmllbGQoKSkKLSAgICAgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZW50
cnkua2V5LmdldCgpLCBQcml2YXRlTmFtZUVudHJ5KFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6
SXNEZWNsYXJlZCkpOwotICAgICAgICAgICAgZWxzZSBpZiAoZW50cnkudmFsdWUuaXNQcml2YXRl
TWV0aG9kKCkpCi0gICAgICAgICAgICAgICAgc3ltYm9sVGFibGUtPmFkZFByaXZhdGVOYW1lKGVu
dHJ5LmtleS5nZXQoKSwgUHJpdmF0ZU5hbWVFbnRyeShQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6
OklzRGVjbGFyZWQgfCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzTWV0aG9kKSk7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIHByaXZh
dGVFbnZpcm9ubWVudCA9IGxleGljYWxWYXJpYWJsZXMucHJpdmF0ZU5hbWVFbnZpcm9ubWVudCgp
OworICAgICAgICAgICAgaWYgKCFwcml2YXRlRW52aXJvbm1lbnQpCisgICAgICAgICAgICAgICAg
Y29udGludWU7CisKKyAgICAgICAgICAgIGF1dG8gZmluZFJlc3VsdCA9IHByaXZhdGVFbnZpcm9u
bWVudC0+ZmluZChlbnRyeS5rZXkuZ2V0KCkpOworCisgICAgICAgICAgICBpZiAoZmluZFJlc3Vs
dCA9PSBwcml2YXRlRW52aXJvbm1lbnQtPmVuZCgpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICBzeW1ib2xUYWJsZS0+YWRkUHJpdmF0ZU5hbWUoZmluZFJlc3VsdC0+
a2V5LmdldCgpLCBmaW5kUmVzdWx0LT52YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0
dXJuIGhhc0NhcHR1cmVkVmFyaWFibGVzOwpAQCAtMjkzMSwxNiArMjkzOCwxOCBAQCB2b2lkIEJ5
dGVjb2RlR2VuZXJhdG9yOjpsaWZ0VERaQ2hlY2tJZlBvc3NpYmxlKGNvbnN0IFZhcmlhYmxlJiB2
YXJpYWJsZSkKICAgICB9CiB9CiAKLWJvb2wgQnl0ZWNvZGVHZW5lcmF0b3I6OmlzUHJpdmF0ZU1l
dGhvZChjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKy8vIFRoaXMgc2hvdWxkIGJlIGNhbGxlZCBv
bmx5IHdpdGggUHJpdmF0ZU5hbWVzIGF2YWlsYWJsZS4KK1ByaXZhdGVOYW1lRW50cnkgQnl0ZWNv
ZGVHZW5lcmF0b3I6OmdldFByaXZhdGVUcmFpdHMoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCiB7
CiAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9wcml2YXRlTmFtZXNTdGFjay5zaXplKCk7IGktLTsg
KSB7CiAgICAgICAgIGF1dG8mIG1hcCA9IG1fcHJpdmF0ZU5hbWVzU3RhY2tbaV07CiAgICAgICAg
IGF1dG8gaXQgPSBtYXAuZmluZChpZGVudC5pbXBsKCkpOwogICAgICAgICBpZiAoaXQgIT0gbWFw
LmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuIGl0LT52YWx1ZS5pc01ldGhvZCgpOworICAgICAg
ICAgICAgcmV0dXJuIGl0LT52YWx1ZTsKICAgICB9CiAKLSAgICByZXR1cm4gZmFsc2U7CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gUHJpdmF0ZU5hbWVFbnRy
eSgpOwogfQogCiB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoUHJpdmF0ZUFjY2Vzc05hbWVz
KGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1lbnQqIGVudmlyb25tZW50KQpAQCAtMjk4MSwxNyAr
Mjk5MCwxMyBAQCB2b2lkIEJ5dGVjb2RlR2VuZXJhdG9yOjpwdXNoVERaVmFyaWFibGVzKGNvbnN0
IFZhcmlhYmxlRW52aXJvbm1lbnQmIGVudmlyb25tZW50LAogT3B0aW9uYWw8UHJpdmF0ZU5hbWVF
bnZpcm9ubWVudD4gQnl0ZWNvZGVHZW5lcmF0b3I6OmdldEF2YWlsYWJsZVByaXZhdGVBY2Nlc3NO
YW1lcygpCiB7CiAgICAgUHJpdmF0ZU5hbWVFbnZpcm9ubWVudCByZXN1bHQ7Ci0gICAgU21hbGxQ
dHJTZXQ8VW5pcXVlZFN0cmluZ0ltcGwqLCAxNj4gZXhjbHVkZWROYW1lczsKKyAgICBIYXNoU2V0
PFVuaXF1ZWRTdHJpbmdJbXBsKj4gZXhjbHVkZWROYW1lczsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSBtX3ByaXZhdGVOYW1lc1N0YWNrLnNpemUoKTsgaS0tOyApIHsKICAgICAgICAgYXV0byYgbWFw
ID0gbV9wcml2YXRlTmFtZXNTdGFja1tpXTsKICAgICAgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1h
cCkgIHsKLSAgICAgICAgICAgIGlmIChlbnRyeS52YWx1ZS5pc1ByaXZhdGVNZXRob2RPckFjZXNz
b3IoKSkgewotICAgICAgICAgICAgICAgIGlmICghZXhjbHVkZWROYW1lcy5jb250YWlucyhlbnRy
eS5rZXkuZ2V0KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hZGQoZW50cnkua2V5
LCBlbnRyeS52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGV4Y2x1ZGVkTmFtZXMuYWRkKGVu
dHJ5LmtleS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICAgICAgZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgpKTsKKyAgICAg
ICAgICAgIGF1dG8gYWRkUmVzdWx0ID0gZXhjbHVkZWROYW1lcy5hZGQoZW50cnkua2V5LmdldCgp
KTsKKyAgICAgICAgICAgIGlmIChhZGRSZXN1bHQuaXNOZXdFbnRyeSkKKyAgICAgICAgICAgICAg
ICByZXN1bHQuYWRkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwogICAgICAgICB9CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2Rl
R2VuZXJhdG9yLmgKaW5kZXggYmJmYjU2ODE5OGY0NDQ1NTdkYTMxMzNjMjk2NjNjZDQyMDFlN2Jl
NS4uYTVjYmQzNjk5YTQ3M2NiZGMwODdmYmU2ZmExYjBjZmRiMDRkNTY3ZSAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
aApAQCAtMTI2Myw3ICsxMjYzLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgICAgICBtX2xh
c3RJbnN0cnVjdGlvbiA9IHByZXZMYXN0SW5zdHJ1Y3Rpb247CiAgICAgICAgIH0KIAotICAgICAg
ICBib29sIGlzUHJpdmF0ZU1ldGhvZChjb25zdCBJZGVudGlmaWVyJik7CisgICAgICAgIFByaXZh
dGVOYW1lRW50cnkgZ2V0UHJpdmF0ZVRyYWl0cyhjb25zdCBJZGVudGlmaWVyJik7CiAKICAgICAg
ICAgdm9pZCBwdXNoUHJpdmF0ZUFjY2Vzc05hbWVzKGNvbnN0IFByaXZhdGVOYW1lRW52aXJvbm1l
bnQqKTsKICAgICAgICAgdm9pZCBwb3BQcml2YXRlQWNjZXNzTmFtZXMoKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvTm9kZXNDb2RlZ2VuLmNwcAppbmRleCA0
YzA4YTMzZDNmODdiYjQyYmUzZjhmNmNkYmE1ZmEwMzcwMDc4ZTVmLi5lNWY4MWE1NmUzYjc5MGMw
ZmU1ZWExNzhkNDIwNDk2OWFmY2MyYTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvYnl0ZWNvbXBpbGVyL05vZGVzQ29kZWdlbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2J5dGVjb21waWxlci9Ob2Rlc0NvZGVnZW4uY3BwCkBAIC01NzksNiArNTc5LDU3IEBAIHZv
aWQgUHJvcGVydHlMaXN0Tm9kZTo6ZW1pdERlY2xhcmVQcml2YXRlRmllbGROYW1lcyhCeXRlY29k
ZUdlbmVyYXRvciYgZ2VuZXJhdG9yCiAKIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVt
aXRCeXRlY29kZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3RP
ckNvbnN0cnVjdG9yLCBSZWdpc3RlcklEKiBwcm90b3R5cGUsIFZlY3RvcjxKU1RleHRQb3NpdGlv
bj4qIGluc3RhbmNlRmllbGRMb2NhdGlvbnMsIFZlY3RvcjxKU1RleHRQb3NpdGlvbj4qIHN0YXRp
Y0ZpZWxkTG9jYXRpb25zKQogeworICAgIHVzaW5nIEdldHRlclNldHRlclBhaXIgPSBzdGQ6OnBh
aXI8UHJvcGVydHlOb2RlKiwgUHJvcGVydHlOb2RlKj47CisgICAgdXNpbmcgR2V0dGVyU2V0dGVy
TWFwID0gSGFzaE1hcDxVbmlxdWVkU3RyaW5nSW1wbCosIEdldHRlclNldHRlclBhaXIsIElkZW50
aWZpZXJSZXBIYXNoPjsKKworICAgIGlmIChoYXNQcml2YXRlQWNjZXNzb3JzKCkpIHsKKyAgICAg
ICAgR2V0dGVyU2V0dGVyTWFwIHByaXZhdGVBY2Nlc3Nvck1hcDsKKworICAgICAgICBmb3IgKFBy
b3BlcnR5TGlzdE5vZGUqIHByb3BlcnR5TGlzdCA9IHRoaXM7IHByb3BlcnR5TGlzdDsgcHJvcGVy
dHlMaXN0ID0gcHJvcGVydHlMaXN0LT5tX25leHQpIHsKKyAgICAgICAgICAgIGlmICghKHByb3Bl
cnR5TGlzdC0+bV9ub2RlLT50eXBlKCkgJiAoUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyIHwg
UHJvcGVydHlOb2RlOjpQcml2YXRlU2V0dGVyKSkpCisgICAgICAgICAgICAgICAgY29udGludWU7
CisKKyAgICAgICAgICAgIC8vIFdlIGdyb3VwIHByaXZhdGUgZ2V0dGVycyBhbmQgc2V0dGVycyB0
byBzdG9yZSB0aGVtIGluIGEgb2JqZWN0CisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJQYWlyIHBh
aXIocHJvcGVydHlMaXN0LT5tX25vZGUsIHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZSo+KG51bGxw
dHIpKTsKKyAgICAgICAgICAgIEdldHRlclNldHRlck1hcDo6QWRkUmVzdWx0IHJlc3VsdCA9IHBy
aXZhdGVBY2Nlc3Nvck1hcC5hZGQocHJvcGVydHlMaXN0LT5tX25vZGUtPm5hbWUoKS0+aW1wbCgp
LCBwYWlyKTsKKyAgICAgICAgICAgIGF1dG8mIHJlc3VsdFBhaXIgPSByZXN1bHQuaXRlcmF0b3It
PnZhbHVlOworICAgICAgICAgICAgLy8gSWYgdGhlIG1hcCBhbHJlYWR5IGNvbnRhaW5zIGFuIGVs
ZW1lbnQgd2l0aCBub2RlLT5uYW1lKCksCisgICAgICAgICAgICAvLyB3ZSBuZWVkIHRvIHN0b3Jl
IHRoaXMgbm9kZSBpbiB0aGUgc2Vjb25kIHBhcnQuCisgICAgICAgICAgICBpZiAoIXJlc3VsdC5p
c05ld0VudHJ5KQorICAgICAgICAgICAgICAgIHJlc3VsdFBhaXIuc2Vjb25kID0gcHJvcGVydHlM
aXN0LT5tX25vZGU7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAg
IC8vIFRoZW4gd2UgZGVjbGFyZSBwcml2YXRlIGFjY2Vzc29ycworICAgICAgICBmb3IgKGF1dG8m
IGl0IDogcHJpdmF0ZUFjY2Vzc29yTWFwKSB7CisgICAgICAgICAgICAvLyBGSVhNRTogVXNlIEdl
dHRlclNldHRlciB0byBzdG9yZSBwcml2YXRlIGFjY2Vzc29ycworICAgICAgICAgICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTkxNQorICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0TmV3T2Jq
ZWN0KGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSk7CisgICAgICAgICAgICBHZXR0ZXJTZXR0ZXJQ
YWlyIHBhaXIgPSBpdC52YWx1ZTsKKworICAgICAgICAgICAgYXV0byBlbWl0UHV0QWNjZXNzb3Ig
PSBbJl0gKFByb3BlcnR5Tm9kZSogcHJvcGVydHlOb2RlKSB7CisgICAgICAgICAgICAgICAgUmVn
aXN0ZXJJRCogYmFzZSA9IHByb3BlcnR5Tm9kZS0+aXNJbnN0YW5jZUNsYXNzUHJvcGVydHkoKSA/
IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CisKKyAgICAgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gdmFsdWUgPSBnZW5lcmF0b3IuZW1pdE5vZGUocHJvcGVydHlOb2RlLT5tX2Fz
c2lnbik7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnR5Tm9kZS0+bmVlZHNTdXBlckJpbmRp
bmcoKSkKKyAgICAgICAgICAgICAgICAgICAgZW1pdFB1dEhvbWVPYmplY3QoZ2VuZXJhdG9yLCB2
YWx1ZS5nZXQoKSwgYmFzZSk7CisgICAgICAgICAgICAgICAgYXV0byBzZXR0ZXJPckdldHRlcklk
ZW50ID0gcHJvcGVydHlOb2RlLT5tX3R5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIK
KyAgICAgICAgICAgICAgICAgICAgPyBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5O
YW1lcygpLmdldFByaXZhdGVOYW1lKCkKKyAgICAgICAgICAgICAgICAgICAgOiBnZW5lcmF0b3Iu
cHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1lKCk7CisgICAgICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXREaXJlY3RQdXRCeUlkKGdldHRlclNldHRlck9iai5nZXQo
KSwgc2V0dGVyT3JHZXR0ZXJJZGVudCwgdmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgfTsKKwor
ICAgICAgICAgICAgaWYgKHBhaXIuZmlyc3QpCisgICAgICAgICAgICAgICAgZW1pdFB1dEFjY2Vz
c29yKHBhaXIuZmlyc3QpOworCisgICAgICAgICAgICBpZiAocGFpci5zZWNvbmQpCisgICAgICAg
ICAgICAgICAgZW1pdFB1dEFjY2Vzc29yKHBhaXIuc2Vjb25kKTsKKworICAgICAgICAgICAgVmFy
aWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKCpwYWlyLmZpcnN0LT5uYW1lKCkpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLmVtaXRQdXRUb1Njb3BlKGdlbmVyYXRvci5zY29wZVJlZ2lzdGVy
KCksIHZhciwgZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBEb05vdFRocm93SWZOb3RGb3VuZCwgSW5p
dGlhbGl6YXRpb25Nb2RlOjpDb25zdEluaXRpYWxpemF0aW9uKTsKKyAgICAgICAgfQorICAgIH0K
KwogICAgIFByb3BlcnR5TGlzdE5vZGUqIHAgPSB0aGlzOwogICAgIFJlZ2lzdGVySUQqIGRzdCA9
IG51bGxwdHI7CiAKQEAgLTU4Niw2ICs2MzcsOSBAQCBSZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3RO
b2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQog
ICAgIGZvciAoOyBwICYmIChwLT5tX25vZGUtPm1fdHlwZSAmIFByb3BlcnR5Tm9kZTo6Q29uc3Rh
bnQpOyBwID0gcC0+bV9uZXh0KSB7CiAgICAgICAgIGRzdCA9IHAtPm1fbm9kZS0+aXNJbnN0YW5j
ZUNsYXNzUHJvcGVydHkoKSA/IHByb3RvdHlwZSA6IGRzdE9yQ29uc3RydWN0b3I7CiAKKyAgICAg
ICAgaWYgKHAtPm1fbm9kZS0+dHlwZSgpICYgKFByb3BlcnR5Tm9kZTo6UHJpdmF0ZUdldHRlciB8
IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZVNldHRlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKwog
ICAgICAgICBpZiAocC0+aXNDb21wdXRlZENsYXNzRmllbGQoKSkKICAgICAgICAgICAgIGVtaXRT
YXZlQ29tcHV0ZWRGaWVsZE5hbWUoZ2VuZXJhdG9yLCAqcC0+bV9ub2RlKTsKIApAQCAtNjEwLDgg
KzY2NCw2IEBAIFJlZ2lzdGVySUQqIFByb3BlcnR5TGlzdE5vZGU6OmVtaXRCeXRlY29kZShCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlCiAgICAgICAgIC8vIGEgY29tcHV0ZWQg
cHJvcGVydHkgb3IgYSBzcHJlYWQsIGp1c3QgZW1pdCBldmVyeXRoaW5nIGFzIHRoYXQgbWF5IG92
ZXJyaWRlIHByZXZpb3VzIHZhbHVlcy4KICAgICAgICAgYm9vbCBjYW5PdmVycmlkZVByb3BlcnRp
ZXMgPSBmYWxzZTsKIAotICAgICAgICB0eXBlZGVmIHN0ZDo6cGFpcjxQcm9wZXJ0eU5vZGUqLCBQ
cm9wZXJ0eU5vZGUqPiBHZXR0ZXJTZXR0ZXJQYWlyOwotICAgICAgICB0eXBlZGVmIEhhc2hNYXA8
VW5pcXVlZFN0cmluZ0ltcGwqLCBHZXR0ZXJTZXR0ZXJQYWlyLCBJZGVudGlmaWVyUmVwSGFzaD4g
R2V0dGVyU2V0dGVyTWFwOwogICAgICAgICBHZXR0ZXJTZXR0ZXJNYXAgaW5zdGFuY2VNYXA7CiAg
ICAgICAgIEdldHRlclNldHRlck1hcCBzdGF0aWNNYXA7CiAKQEAgLTY1MSw2ICs3MDMsOSBAQCBS
ZWdpc3RlcklEKiBQcm9wZXJ0eUxpc3ROb2RlOjplbWl0Qnl0ZWNvZGUoQnl0ZWNvZGVHZW5lcmF0
b3ImIGdlbmVyYXRvciwgUmVnaXN0ZQogICAgICAgICAgICAgaWYgKHAtPmlzQ29tcHV0ZWRDbGFz
c0ZpZWxkKCkpCiAgICAgICAgICAgICAgICAgZW1pdFNhdmVDb21wdXRlZEZpZWxkTmFtZShnZW5l
cmF0b3IsICpwLT5tX25vZGUpOwogCisgICAgICAgICAgICBpZiAocC0+bV9ub2RlLT50eXBlKCkg
JiAoUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlU2V0
dGVyKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgaWYgKHAtPmlz
SW5zdGFuY2VDbGFzc0ZpZWxkKCkpIHsKICAgICAgICAgICAgICAgICBBU1NFUlQoaW5zdGFuY2VG
aWVsZExvY2F0aW9ucyk7CiAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPm1fdHlwZSAmIFBy
b3BlcnR5Tm9kZTo6Q29uc3RhbnQpOwpAQCAtNzgyLDYgKzgzNyw4IEBAIHZvaWQgUHJvcGVydHlM
aXN0Tm9kZTo6ZW1pdFB1dENvbnN0YW50UHJvcGVydHkoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVy
YXRvciwgUmVnCiAKICAgICBpZiAobm9kZS5pc0NsYXNzUHJvcGVydHkoKSkgewogICAgICAgICBB
U1NFUlQobm9kZS5uZWVkc1N1cGVyQmluZGluZygpKTsKKyAgICAgICAgQVNTRVJUKCEobm9kZS50
eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpKTsKKyAgICAgICAgQVNTRVJUKCEo
bm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVHZXR0ZXIpKTsKIAogICAgICAgICBp
ZiAobm9kZS50eXBlKCkgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVNZXRob2QpIHsKICAgICAgICAg
ICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZSgqbm9kZS5uYW1lKCkpOwpAQCAt
OTE5LDE2ICs5NzYsNDQgQEAgUmVnaXN0ZXJJRCogRG90QWNjZXNzb3JOb2RlOjplbWl0Qnl0ZWNv
ZGUoQnl0ZWNvZGVHZW5lcmF0b3ImIGdlbmVyYXRvciwgUmVnaXN0ZXIKIFJlZ2lzdGVySUQqIEJh
c2VEb3ROb2RlOjplbWl0R2V0UHJvcGVydHlWYWx1ZShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJh
dG9yLCBSZWdpc3RlcklEKiBkc3QsIFJlZ2lzdGVySUQqIGJhc2UsIFJlZlB0cjxSZWdpc3RlcklE
PiYgdGhpc1ZhbHVlKQogewogICAgIGlmIChpc1ByaXZhdGVNZW1iZXIoKSkgewotICAgICAgICBp
ZiAoZ2VuZXJhdG9yLmlzUHJpdmF0ZU1ldGhvZChpZGVudGlmaWVyKCkpKSB7Ci0gICAgICAgICAg
ICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllcigpKTsKKyAgICAg
ICAgYXV0byBpZGVudGlmaWVyTmFtZSA9IGlkZW50aWZpZXIoKTsKKyAgICAgICAgYXV0byBwcml2
YXRlVHJhaXRzID0gZ2VuZXJhdG9yLmdldFByaXZhdGVUcmFpdHMoaWRlbnRpZmllck5hbWUpOwor
ICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc01ldGhvZCgpKSB7CisgICAgICAgICAgICBWYXJp
YWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOwogICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUo
bnVsbHB0ciwgdmFyKTsKIAotICAgICAgICAgICAgUmVnaXN0ZXJJRCogcHJpdmF0ZUJyYW5kU3lt
Ym9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBzY29wZS5nZXQoKSk7Ci0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0
ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbCk7CisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJh
bmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFuZFN5bWJvbC5n
ZXQoKSk7CiAKICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShk
c3QsIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7CiAgICAgICAgIH0KIAorICAg
ICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc0dldHRlcigpKSB7CisgICAgICAgICAgICBWYXJpYWJs
ZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnRpZmllck5hbWUpOworICAgICAgICAgICAg
UmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZlU2NvcGUobnVs
bHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFu
ZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1w
b3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1By
aXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOworCisgICAgICAgICAg
ICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJv
d0lmTm90Rm91bmQpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlckZ1bmN0
aW9uID0gZ2VuZXJhdG9yLmVtaXREaXJlY3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3Jhcnko
KSwgZ2V0dGVyU2V0dGVyT2JqLmdldCgpLCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0
aW5OYW1lcygpLmdldFByaXZhdGVOYW1lKCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBh
cmdzKGdlbmVyYXRvciwgbnVsbHB0cik7CisgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdz
LnRoaXNSZWdpc3RlcigpLCBiYXNlKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IuZW1p
dENhbGwoZHN0LCBnZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdz
LCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVz
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcml2YXRlVHJhaXRzLmlzU2V0dGVyKCkpIHsK
KyAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGVyZm9ybSBicmFuZCBjaGVjayB0byBmb2xsb3cg
dGhlIHNwZWMKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudGlmaWVyTmFtZSk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBn
ZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQ
cml2YXRlQnJhbmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UsIHByaXZhdGVCcmFu
ZFN5bWJvbC5nZXQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93VHlwZUVycm9y
KCJUcnlpbmcgdG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBwcml2YXRlIGdldHRlciIpOworICAgICAg
ICAgICAgcmV0dXJuIGRzdDsKKyAgICAgICAgfQorCisgICAgICAgIEFTU0VSVChwcml2YXRlVHJh
aXRzLmlzRmllbGQoKSk7CiAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJs
ZShtX2lkZW50KTsKICAgICAgICAgQVNTRVJUX1dJVEhfTUVTU0FHRSghdmFyLmxvY2FsKCksICJQ
cml2YXRlIEZpZWxkIG5hbWVzIG11c3QgYmUgc3RvcmVkIGluIGNhcHR1cmVkIHZhcmlhYmxlcyIp
OwogCkBAIC05NTcsMTYgKzEwNDIsMzYgQEAgUmVnaXN0ZXJJRCogQmFzZURvdE5vZGU6OmVtaXRQ
dXRQcm9wZXJ0eShCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlckkKIHsKICAg
ICBpZiAoaXNQcml2YXRlTWVtYmVyKCkpIHsKICAgICAgICAgYXV0byBpZGVudGlmaWVyTmFtZSA9
IGlkZW50aWZpZXIoKTsKLSAgICAgICAgaWYgKGdlbmVyYXRvci5pc1ByaXZhdGVNZXRob2QoaWRl
bnRpZmllck5hbWUpKSB7CisgICAgICAgIGF1dG8gcHJpdmF0ZVRyYWl0cyA9IGdlbmVyYXRvci5n
ZXRQcml2YXRlVHJhaXRzKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgaWYgKHByaXZhdGVUcmFp
dHMuaXNTZXR0ZXIoKSkgeworICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKGlkZW50aWZpZXJOYW1lKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBz
Y29wZSA9IGdlbmVyYXRvci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CisKKyAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3Iu
ZW1pdEdldFByaXZhdGVCcmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgp
KTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2hlY2tQcml2YXRlQnJhbmQoYmFzZSwgcHJp
dmF0ZUJyYW5kU3ltYm9sLmdldCgpKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+
IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5u
ZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAg
ICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0
RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5n
ZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5zZXRQcml2YXRl
TmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxw
dHIsIDEpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwg
YmFzZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLmFyZ3VtZW50UmVnaXN0ZXIo
MCksIHZhbHVlKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0Q2FsbChnZW5lcmF0b3IubmV3
VGVtcG9yYXJ5KCksIHNldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVkRnVuY3Rpb24sIGFy
Z3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVnZ2FibGVDYWxsOjpZ
ZXMpOworCisgICAgICAgICAgICByZXR1cm4gdmFsdWU7CisgICAgICAgIH0KKworICAgICAgICBp
ZiAocHJpdmF0ZVRyYWl0cy5pc0dldHRlcigpIHx8IHByaXZhdGVUcmFpdHMuaXNNZXRob2QoKSkg
ewogICAgICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZhcmlhYmxlKGlkZW50aWZp
ZXJOYW1lKTsKICAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBzY29wZSA9IGdlbmVyYXRv
ci5lbWl0UmVzb2x2ZVNjb3BlKG51bGxwdHIsIHZhcik7CiAKLSAgICAgICAgICAgIFJlZ2lzdGVy
SUQqIHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdl
bmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOwotICAgICAgICAgICAgZ2VuZXJh
dG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBwcml2YXRlQnJhbmRTeW1ib2wpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRv
ci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0
KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLCBw
cml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkpOwogCi0gICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRo
cm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGEgbm90IGRlZmluZWQgcHJpdmF0ZSBzZXR0
ZXIiKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0
byBhY2Nlc3MgYW4gdW5kZWZpbmVkIHByaXZhdGUgc2V0dGVyIik7CisgICAgICAgICAgICByZXR1
cm4gdmFsdWU7CiAgICAgICAgIH0KIAorICAgICAgICBBU1NFUlQocHJpdmF0ZVRyYWl0cy5pc0Zp
ZWxkKCkpOwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUobV9pZGVu
dCk7CiAgICAgICAgIEFTU0VSVF9XSVRIX01FU1NBR0UoIXZhci5sb2NhbCgpLCAiUHJpdmF0ZSBG
aWVsZCBuYW1lcyBtdXN0IGJlIHN0b3JlZCBpbiBjYXB0dXJlZCB2YXJpYWJsZXMiKTsKIApAQCAt
MjI4NywxNiArMjM5Miw2NyBAQCBSZWdpc3RlcklEKiBQb3N0Zml4Tm9kZTo6ZW1pdERvdChCeXRl
Y29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBSZWdpc3RlcklEKiBkc3QpCiAKICAgICBpZiAoZG90
QWNjZXNzb3ItPmlzUHJpdmF0ZU1lbWJlcigpKSB7CiAgICAgICAgIEFTU0VSVCghYmFzZUlzU3Vw
ZXIpOworICAgICAgICBhdXRvIHByaXZhdGVUcmFpdHMgPSBnZW5lcmF0b3IuZ2V0UHJpdmF0ZVRy
YWl0cyhpZGVudCk7CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNGaWVsZCgpKSB7Cisg
ICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBwcml2
YXRlTmFtZSA9IGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBE
b05vdFRocm93SWZOb3RGb3VuZCk7CisKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2
YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZ2VuZXJhdG9yLm5ld1RlbXBvcmFy
eSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgICAgICBSZWZQdHI8
UmVnaXN0ZXJJRD4gb2xkVmFsdWUgPSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJh
dG9yLnRlbXBEZXN0aW5hdGlvbihkc3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CisgICAg
ICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRpdm90U3RhcnQo
KSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1
dChiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBk
aXZvdEVuZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3QsIG9sZFZh
bHVlLmdldCgpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcml2YXRlVHJhaXRzLmlzTWV0
aG9kKCkpIHsKKyAgICAgICAgICAgIFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShp
ZGVudCk7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3Iu
ZW1pdFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOworCisgICAgICAgICAgICBSZWZQdHI8UmVn
aXN0ZXJJRD4gcHJpdmF0ZUJyYW5kU3ltYm9sID0gZ2VuZXJhdG9yLmVtaXRHZXRQcml2YXRlQnJh
bmQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzY29wZS5nZXQoKSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0KCksIHByaXZhdGVCcmFuZFN5
bWJvbC5nZXQoKSk7CisKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8o
ZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRv
ci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYW4gdW5kZWZpbmVkIHByaXZh
dGUgc2V0dGVyIik7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlv
bihkc3QpOworICAgICAgICB9CisKICAgICAgICAgVmFyaWFibGUgdmFyID0gZ2VuZXJhdG9yLnZh
cmlhYmxlKGlkZW50KTsKICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJh
dG9yLmVtaXRSZXNvbHZlU2NvcGUobnVsbHB0ciwgdmFyKTsKLSAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IHByaXZhdGVOYW1lID0gZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOwotICAgICAgICBn
ZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShwcml2YXRlTmFtZS5nZXQoKSwgc2NvcGUuZ2V0KCks
IHZhciwgRG9Ob3RUaHJvd0lmTm90Rm91bmQpOwogCi0gICAgICAgIFJlZlB0cjxSZWdpc3RlcklE
PiB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZU5hbWUoZ2VuZXJhdG9yLm5ld1RlbXBv
cmFyeSgpLCBiYXNlLmdldCgpLCBwcml2YXRlTmFtZS5nZXQoKSk7CisgICAgICAgIFJlZlB0cjxS
ZWdpc3RlcklEPiBwcml2YXRlQnJhbmRTeW1ib2wgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZhdGVC
cmFuZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpKTsKKyAgICAgICAgZ2Vu
ZXJhdG9yLmVtaXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRTeW1i
b2wuZ2V0KCkpOworCisgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiB2YWx1ZTsKKyAgICAgICAg
aWYgKHByaXZhdGVUcmFpdHMuaXNHZXR0ZXIoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lz
dGVySUQ+IGdldHRlclNldHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsK
KyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRv
ci5lbWl0RGlyZWN0R2V0QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRl
ck9iai5nZXQoKSwgZ2VuZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQ
cml2YXRlTmFtZSgpKTsKKyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3Is
IG51bGxwdHIpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIo
KSwgYmFzZS5nZXQoKSk7CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Q2FsbChn
ZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlckZ1bmN0aW9uLmdldCgpLCBOb0V4cGVjdGVk
RnVuY3Rpb24sIGFyZ3MsIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIG1fcG9zaXRpb24sIERlYnVn
Z2FibGVDYWxsOjpZZXMpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ2VuZXJhdG9y
LmVtaXRUaHJvd1R5cGVFcnJvcigiVHJ5aW5nIHRvIGFjY2VzcyBhbiB1bmRlZmluZWQgcHJpdmF0
ZSBnZXR0ZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3IudGVtcERlc3RpbmF0aW9u
KGRzdCk7CisgICAgICAgIH0KKwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gb2xkVmFsdWUg
PSBlbWl0UG9zdEluY09yRGVjKGdlbmVyYXRvciwgZ2VuZXJhdG9yLnRlbXBEZXN0aW5hdGlvbihk
c3QpLCB2YWx1ZS5nZXQoKSwgbV9vcGVyYXRvcik7CiAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhw
cmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKLSAgICAgICAg
Z2VuZXJhdG9yLmVtaXRQcml2YXRlRmllbGRQdXQoYmFzZS5nZXQoKSwgcHJpdmF0ZU5hbWUuZ2V0
KCksIHZhbHVlLmdldCgpKTsKLSAgICAgICAgZ2VuZXJhdG9yLmVtaXRQcm9maWxlVHlwZSh2YWx1
ZS5nZXQoKSwgZGl2b3RTdGFydCgpLCBkaXZvdEVuZCgpKTsKKworICAgICAgICBpZiAocHJpdmF0
ZVRyYWl0cy5pc1NldHRlcigpKSB7CisgICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gZ2V0
dGVyU2V0dGVyT2JqID0gZ2VuZXJhdG9yLmVtaXRHZXRGcm9tU2NvcGUoZ2VuZXJhdG9yLm5ld1Rl
bXBvcmFyeSgpLCBzY29wZS5nZXQoKSwgdmFyLCBUaHJvd0lmTm90Rm91bmQpOworICAgICAgICAg
ICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNldHRlckZ1bmN0aW9uID0gZ2VuZXJhdG9yLmVtaXREaXJl
Y3RHZXRCeUlkKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgZ2V0dGVyU2V0dGVyT2JqLmdldCgp
LCBnZW5lcmF0b3IucHJvcGVydHlOYW1lcygpLmJ1aWx0aW5OYW1lcygpLnNldFByaXZhdGVOYW1l
KCkpOworICAgICAgICAgICAgQ2FsbEFyZ3VtZW50cyBhcmdzKGdlbmVyYXRvciwgbnVsbHB0ciwg
MSk7CisgICAgICAgICAgICBnZW5lcmF0b3IubW92ZShhcmdzLnRoaXNSZWdpc3RlcigpLCBiYXNl
LmdldCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MuYXJndW1lbnRSZWdpc3Rl
cigwKSwgdmFsdWUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRDYWxsKGdlbmVy
YXRvci5uZXdUZW1wb3JhcnkoKSwgc2V0dGVyRnVuY3Rpb24uZ2V0KCksIE5vRXhwZWN0ZWRGdW5j
dGlvbiwgYXJncywgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgbV9wb3NpdGlvbiwgRGVidWdnYWJs
ZUNhbGw6Olllcyk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVl
LmdldCgpLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworICAgICAgICAgICAgcmV0dXJuIGdl
bmVyYXRvci5tb3ZlKGRzdCwgb2xkVmFsdWUuZ2V0KCkpOworICAgICAgICB9IAorCisgICAgICAg
IGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWluZyB0byBhY2Nlc3MgYW4gdW5kZWZp
bmVkIHByaXZhdGUgZ2V0dGVyIik7CiAgICAgICAgIHJldHVybiBnZW5lcmF0b3IubW92ZShkc3Qs
IG9sZFZhbHVlLmdldCgpKTsKICAgICB9CiAKQEAgLTI1MjUsMTcgKzI2ODEsNjYgQEAgUmVnaXN0
ZXJJRCogUHJlZml4Tm9kZTo6ZW1pdERvdChCeXRlY29kZUdlbmVyYXRvciYgZ2VuZXJhdG9yLCBS
ZWdpc3RlcklEKiBkc3QpCiAgICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkb3RBY2Nl
c3Nvci0+ZGl2b3QoKSwgZG90QWNjZXNzb3ItPmRpdm90U3RhcnQoKSwgZG90QWNjZXNzb3ItPmRp
dm90RW5kKCkpOwogICAgIFJlZ2lzdGVySUQqIHZhbHVlOwogICAgIGlmIChkb3RBY2Nlc3Nvci0+
aXNQcml2YXRlTWVtYmVyKCkpIHsKLSAgICAgICAgQVNTRVJUKCFiYXNlTm9kZS0+aXNTdXBlck5v
ZGUoKSk7CisgICAgICAgIGF1dG8gcHJpdmF0ZVRyYWl0cyA9IGdlbmVyYXRvci5nZXRQcml2YXRl
VHJhaXRzKGlkZW50KTsKKyAgICAgICAgaWYgKHByaXZhdGVUcmFpdHMuaXNGaWVsZCgpKSB7Cisg
ICAgICAgICAgICBBU1NFUlQoIWJhc2VOb2RlLT5pc1N1cGVyTm9kZSgpKTsKKyAgICAgICAgICAg
IFZhcmlhYmxlIHZhciA9IGdlbmVyYXRvci52YXJpYWJsZShpZGVudCk7CisgICAgICAgICAgICBS
ZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1pdFJlc29sdmVTY29wZShudWxs
cHRyLCB2YXIpOworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVOYW1lID0g
Z2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVtaXRHZXRG
cm9tU2NvcGUocHJpdmF0ZU5hbWUuZ2V0KCksIHNjb3BlLmdldCgpLCB2YXIsIERvTm90VGhyb3dJ
Zk5vdEZvdW5kKTsKKworICAgICAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdldFByaXZh
dGVOYW1lKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpKTsKKyAg
ICAgICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKKyAg
ICAgICAgICAgIGdlbmVyYXRvci5lbWl0RXhwcmVzc2lvbkluZm8oZGl2b3QoKSwgZGl2b3RTdGFy
dCgpLCBkaXZvdEVuZCgpKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJpdmF0ZUZpZWxk
UHV0KGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgpLCB2YWx1ZSk7CisgICAgICAgICAgICBn
ZW5lcmF0b3IuZW1pdFByb2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkp
OworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgcHJvcERzdC5nZXQoKSk7
CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJpdmF0ZVRyYWl0cy5pc01ldGhvZCgpKSB7Cisg
ICAgICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUoaWRlbnQpOworICAg
ICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHNjb3BlID0gZ2VuZXJhdG9yLmVtaXRSZXNvbHZl
U2NvcGUobnVsbHB0ciwgdmFyKTsKKworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHBy
aXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVyYXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRv
ci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLmVt
aXRDaGVja1ByaXZhdGVCcmFuZChiYXNlLmdldCgpLCBwcml2YXRlQnJhbmRTeW1ib2wuZ2V0KCkp
OworCisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdEV4cHJlc3Npb25JbmZvKGRpdm90KCksIGRp
dm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdFRocm93
VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBwcml2YXRlIHNldHRlciIp
OworICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRvci5tb3ZlKGRzdCwgcHJvcERzdC5nZXQoKSk7
CisgICAgICAgIH0KKwogICAgICAgICBWYXJpYWJsZSB2YXIgPSBnZW5lcmF0b3IudmFyaWFibGUo
aWRlbnQpOwogICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2NvcGUgPSBnZW5lcmF0b3IuZW1p
dFJlc29sdmVTY29wZShudWxscHRyLCB2YXIpOwotICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4g
cHJpdmF0ZU5hbWUgPSBnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCk7Ci0gICAgICAgIGdlbmVyYXRv
ci5lbWl0R2V0RnJvbVNjb3BlKHByaXZhdGVOYW1lLmdldCgpLCBzY29wZS5nZXQoKSwgdmFyLCBE
b05vdFRocm93SWZOb3RGb3VuZCk7CiAKLSAgICAgICAgdmFsdWUgPSBnZW5lcmF0b3IuZW1pdEdl
dFByaXZhdGVOYW1lKHByb3BEc3QuZ2V0KCksIGJhc2UuZ2V0KCksIHByaXZhdGVOYW1lLmdldCgp
KTsKKyAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IHByaXZhdGVCcmFuZFN5bWJvbCA9IGdlbmVy
YXRvci5lbWl0R2V0UHJpdmF0ZUJyYW5kKGdlbmVyYXRvci5uZXdUZW1wb3JhcnkoKSwgc2NvcGUu
Z2V0KCkpOworICAgICAgICBnZW5lcmF0b3IuZW1pdENoZWNrUHJpdmF0ZUJyYW5kKGJhc2UuZ2V0
KCksIHByaXZhdGVCcmFuZFN5bWJvbC5nZXQoKSk7CisKKyAgICAgICAgaWYgKHByaXZhdGVUcmFp
dHMuaXNHZXR0ZXIoKSkgeworICAgICAgICAgICAgUmVmUHRyPFJlZ2lzdGVySUQ+IGdldHRlclNl
dHRlck9iaiA9IGdlbmVyYXRvci5lbWl0R2V0RnJvbVNjb3BlKGdlbmVyYXRvci5uZXdUZW1wb3Jh
cnkoKSwgc2NvcGUuZ2V0KCksIHZhciwgVGhyb3dJZk5vdEZvdW5kKTsKKyAgICAgICAgICAgIFJl
ZlB0cjxSZWdpc3RlcklEPiBnZXR0ZXJGdW5jdGlvbiA9IGdlbmVyYXRvci5lbWl0RGlyZWN0R2V0
QnlJZChnZW5lcmF0b3IubmV3VGVtcG9yYXJ5KCksIGdldHRlclNldHRlck9iai5nZXQoKSwgZ2Vu
ZXJhdG9yLnByb3BlcnR5TmFtZXMoKS5idWlsdGluTmFtZXMoKS5nZXRQcml2YXRlTmFtZSgpKTsK
KyAgICAgICAgICAgIENhbGxBcmd1bWVudHMgYXJncyhnZW5lcmF0b3IsIG51bGxwdHIpOworICAg
ICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy50aGlzUmVnaXN0ZXIoKSwgYmFzZS5nZXQoKSk7
CisgICAgICAgICAgICB2YWx1ZSA9IGdlbmVyYXRvci5lbWl0Q2FsbChwcm9wRHN0LmdldCgpLCBn
ZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9u
LCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dhYmxlQ2FsbDo6WWVzKTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0VGhyb3dUeXBlRXJyb3IoIlRyeWlu
ZyB0byBhY2Nlc3MgYW4gdW5kZWZpbmVkIHByaXZhdGUgZ2V0dGVyIik7CisgICAgICAgICAgICBy
ZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgfQorCiAg
ICAgICAgIGVtaXRJbmNPckRlYyhnZW5lcmF0b3IsIHZhbHVlLCBtX29wZXJhdG9yKTsKICAgICAg
ICAgZ2VuZXJhdG9yLmVtaXRFeHByZXNzaW9uSW5mbyhkaXZvdCgpLCBkaXZvdFN0YXJ0KCksIGRp
dm90RW5kKCkpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFByaXZhdGVGaWVsZFB1dChiYXNlLmdl
dCgpLCBwcml2YXRlTmFtZS5nZXQoKSwgdmFsdWUpOwotICAgICAgICBnZW5lcmF0b3IuZW1pdFBy
b2ZpbGVUeXBlKHZhbHVlLCBkaXZvdFN0YXJ0KCksIGRpdm90RW5kKCkpOworCisgICAgICAgIGlm
IChwcml2YXRlVHJhaXRzLmlzU2V0dGVyKCkpIHsKKyAgICAgICAgICAgIFJlZlB0cjxSZWdpc3Rl
cklEPiBnZXR0ZXJTZXR0ZXJPYmogPSBnZW5lcmF0b3IuZW1pdEdldEZyb21TY29wZShnZW5lcmF0
b3IubmV3VGVtcG9yYXJ5KCksIHNjb3BlLmdldCgpLCB2YXIsIFRocm93SWZOb3RGb3VuZCk7Cisg
ICAgICAgICAgICBSZWZQdHI8UmVnaXN0ZXJJRD4gc2V0dGVyRnVuY3Rpb24gPSBnZW5lcmF0b3Iu
ZW1pdERpcmVjdEdldEJ5SWQoZ2VuZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBnZXR0ZXJTZXR0ZXJP
YmouZ2V0KCksIGdlbmVyYXRvci5wcm9wZXJ0eU5hbWVzKCkuYnVpbHRpbk5hbWVzKCkuc2V0UHJp
dmF0ZU5hbWUoKSk7CisgICAgICAgICAgICBDYWxsQXJndW1lbnRzIGFyZ3MoZ2VuZXJhdG9yLCBu
dWxscHRyLCAxKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5tb3ZlKGFyZ3MudGhpc1JlZ2lzdGVy
KCksIGJhc2UuZ2V0KCkpOworICAgICAgICAgICAgZ2VuZXJhdG9yLm1vdmUoYXJncy5hcmd1bWVu
dFJlZ2lzdGVyKDApLCB2YWx1ZSk7CisgICAgICAgICAgICBnZW5lcmF0b3IuZW1pdENhbGwoZ2Vu
ZXJhdG9yLm5ld1RlbXBvcmFyeSgpLCBzZXR0ZXJGdW5jdGlvbi5nZXQoKSwgTm9FeHBlY3RlZEZ1
bmN0aW9uLCBhcmdzLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBtX3Bvc2l0aW9uLCBEZWJ1Z2dh
YmxlQ2FsbDo6WWVzKTsKKyAgICAgICAgICAgIGdlbmVyYXRvci5lbWl0UHJvZmlsZVR5cGUodmFs
dWUsIGRpdm90U3RhcnQoKSwgZGl2b3RFbmQoKSk7CisgICAgICAgICAgICByZXR1cm4gZ2VuZXJh
dG9yLm1vdmUoZHN0LCBwcm9wRHN0LmdldCgpKTsKKyAgICAgICAgfSAKKworICAgICAgICBnZW5l
cmF0b3IuZW1pdFRocm93VHlwZUVycm9yKCJUcnlpbmcgdG8gYWNjZXNzIGFuIHVuZGVmaW5lZCBw
cml2YXRlIGdldHRlciIpOwogICAgICAgICByZXR1cm4gZ2VuZXJhdG9yLm1vdmUoZHN0LCBwcm9w
RHN0LmdldCgpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTm9kZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAppbmRl
eCA0YmY5Mzg2ZjI2ZjAyOTgzYjc4ODY5ZTRhMjUwMjVmNjBlYzhhYjM1Li4wNWMxOGVhZGYyNDkw
MDU2MDU5YTRiY2NjZTE1YWJlNWFmZDQ5MTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL05vZGVzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9O
b2Rlcy5oCkBAIC03MjEsNyArNzIxLDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgZW51bSBjbGFz
cyBDbGFzc0VsZW1lbnRUYWcgOiB1aW50OF90IHsgTm8sIEluc3RhbmNlLCBTdGF0aWMsIExhc3RU
YWcgfTsKICAgICBjbGFzcyBQcm9wZXJ0eU5vZGUgZmluYWwgOiBwdWJsaWMgUGFyc2VyQXJlbmFG
cmVlYWJsZSB7CiAgICAgcHVibGljOgotICAgICAgICBlbnVtIFR5cGUgOiB1aW50OF90IHsgQ29u
c3RhbnQgPSAxLCBHZXR0ZXIgPSAyLCBTZXR0ZXIgPSA0LCBDb21wdXRlZCA9IDgsIFNob3J0aGFu
ZCA9IDE2LCBTcHJlYWQgPSAzMiwgUHJpdmF0ZUZpZWxkID0gNjQsIFByaXZhdGVNZXRob2QgPSAx
MjggfTsKKyAgICAgICAgZW51bSBUeXBlIDogdWludDE2X3QgeyBDb25zdGFudCA9IDEsIEdldHRl
ciA9IDIsIFNldHRlciA9IDQsIENvbXB1dGVkID0gOCwgU2hvcnRoYW5kID0gMTYsIFNwcmVhZCA9
IDMyLCBQcml2YXRlRmllbGQgPSA2NCwgUHJpdmF0ZU1ldGhvZCA9IDEyOCwgUHJpdmF0ZVNldHRl
ciA9IDI1NiwgUHJpdmF0ZUdldHRlciA9IDUxMiB9OwogCiAgICAgICAgIFByb3BlcnR5Tm9kZShj
b25zdCBJZGVudGlmaWVyJiwgRXhwcmVzc2lvbk5vZGUqLCBUeXBlLCBTdXBlckJpbmRpbmcsIENs
YXNzRWxlbWVudFRhZyk7CiAgICAgICAgIFByb3BlcnR5Tm9kZShFeHByZXNzaW9uTm9kZSosIFR5
cGUsIFN1cGVyQmluZGluZywgQ2xhc3NFbGVtZW50VGFnKTsKQEAgLTc0MCw3ICs3NDAsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0luc3RhbmNlQ2xhc3NGaWVsZCgpIGNvbnN0
IHsgcmV0dXJuIGlzSW5zdGFuY2VDbGFzc1Byb3BlcnR5KCkgJiYgIW5lZWRzU3VwZXJCaW5kaW5n
KCk7IH0KICAgICAgICAgYm9vbCBpc1N0YXRpY0NsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBp
c1N0YXRpY0NsYXNzUHJvcGVydHkoKSAmJiAhbmVlZHNTdXBlckJpbmRpbmcoKTsgfQogICAgICAg
ICBib29sIGlzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlKCkgY29uc3QgeyByZXR1cm4gbV9pc092ZXJy
aWRkZW5CeUR1cGxpY2F0ZTsgfQotICAgICAgICBib29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0
dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQcml2YXRlTWV0aG9kKTsgfQorICAgICAgICBi
b29sIGlzUHJpdmF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZSAmIChQcml2YXRlRmllbGQgfCBQ
cml2YXRlTWV0aG9kIHwgUHJpdmF0ZUdldHRlciB8IFByaXZhdGVTZXR0ZXIpOyB9CiAgICAgICAg
IGJvb2wgaGFzQ29tcHV0ZWROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9leHByZXNzaW9uOyB9CiAg
ICAgICAgIGJvb2wgaXNDb21wdXRlZENsYXNzRmllbGQoKSBjb25zdCB7IHJldHVybiBpc0NsYXNz
RmllbGQoKSAmJiBoYXNDb21wdXRlZE5hbWUoKTsgfQogICAgICAgICB2b2lkIHNldElzT3ZlcnJp
ZGRlbkJ5RHVwbGljYXRlKCkgeyBtX2lzT3ZlcnJpZGRlbkJ5RHVwbGljYXRlID0gdHJ1ZTsgfQpA
QCAtNzYwLDcgKzc2MCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBjb25zdCBJZGVudGlm
aWVyKiBtX25hbWU7CiAgICAgICAgIEV4cHJlc3Npb25Ob2RlKiBtX2V4cHJlc3Npb247CiAgICAg
ICAgIEV4cHJlc3Npb25Ob2RlKiBtX2Fzc2lnbjsKLSAgICAgICAgdW5zaWduZWQgbV90eXBlOwor
ICAgICAgICB1bnNpZ25lZCBtX3R5cGUgOiAxMDsKICAgICAgICAgdW5zaWduZWQgbV9uZWVkc1N1
cGVyQmluZGluZyA6IDE7CiAgICAgICAgIHN0YXRpY19hc3NlcnQoMSA8PCAyID4gc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KENsYXNzRWxlbWVudFRhZzo6TGFzdFRhZyksICJDbGFzc0VsZW1lbnRUYWcg
c2hvdWxkbid0IHVzZSBtb3JlIHRoYW4gdHdvIGJpdHMiKTsKICAgICAgICAgdW5zaWduZWQgbV9j
bGFzc0VsZW1lbnRUYWcgOiAyOwpAQCAtNzg4LDYgKzc4OCwxNiBAQCBuYW1lc3BhY2UgSlNDIHsK
ICAgICAgICAgICAgIHJldHVybiBtX25vZGUtPmlzU3RhdGljQ2xhc3NGaWVsZCgpOwogICAgICAg
ICB9CiAKKyAgICAgICAgdm9pZCBzZXRIYXNQcml2YXRlQWNjZXNzb3JzKGJvb2wgaGFzUHJpdmF0
ZUFjY2Vzc29ycykKKyAgICAgICAgeworICAgICAgICAgICAgbV9oYXNQcml2YXRlQWNjZXNzb3Jz
ID0gaGFzUHJpdmF0ZUFjY2Vzc29yczsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wgaGFzUHJp
dmF0ZUFjY2Vzc29ycygpIGNvbnN0CisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBtX2hh
c1ByaXZhdGVBY2Nlc3NvcnM7CisgICAgICAgIH0KKwogICAgICAgICBzdGF0aWMgYm9vbCBzaG91
bGRDcmVhdGVMZXhpY2FsU2NvcGVGb3JDbGFzcyhQcm9wZXJ0eUxpc3ROb2RlKik7CiAKICAgICAg
ICAgUmVnaXN0ZXJJRCogZW1pdEJ5dGVjb2RlKEJ5dGVjb2RlR2VuZXJhdG9yJiwgUmVnaXN0ZXJJ
RCosIFJlZ2lzdGVySUQqLCBWZWN0b3I8SlNUZXh0UG9zaXRpb24+KiwgVmVjdG9yPEpTVGV4dFBv
c2l0aW9uPiopOwpAQCAtODA0LDYgKzgxNCw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAg
IFByb3BlcnR5Tm9kZSogbV9ub2RlOwogICAgICAgICBQcm9wZXJ0eUxpc3ROb2RlKiBtX25leHQg
eyBudWxscHRyIH07CisgICAgICAgIGJvb2wgbV9oYXNQcml2YXRlQWNjZXNzb3JzIHsgZmFsc2Ug
fTsKICAgICB9OwogCiAgICAgY2xhc3MgT2JqZWN0TGl0ZXJhbE5vZGUgZmluYWwgOiBwdWJsaWMg
RXhwcmVzc2lvbk5vZGUgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9QYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCmlu
ZGV4IGVjYTViYjMwNTk1OTZhODQ2NTI2ZGZjNzU3MTExZGE2ZjU0NjMzNzguLjNiMWFmMGFkNjky
YmViZDU1OTZjMjhmMjc4ZDllMzM5YjczNzA1YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9wYXJzZXIvUGFyc2VyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFy
c2VyL1BhcnNlci5jcHAKQEAgLTI4ODAsNiArMjg4MCw3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZUNsYXNzRXhwcmVzc2lvbiBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VDbGFz
cyhUCiAgICAgY2xhc3NTY29wZS0+cHJldmVudFZhckRlY2xhcmF0aW9ucygpOwogICAgIGNsYXNz
U2NvcGUtPnNldFN0cmljdE1vZGUoKTsKICAgICBib29sIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9
IGZhbHNlOworICAgIGJvb2wgZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IgPSBmYWxzZTsKICAgICBu
ZXh0KCk7CiAKICAgICBBU1NFUlRfV0lUSF9NRVNTQUdFKHJlcXVpcmVtZW50cyAhPSBGdW5jdGlv
bk5hbWVSZXF1aXJlbWVudHM6OlVubmFtZWQsICJDdXJyZW50bHksIHRoZXJlIGlzIG5vIGNhbGxl
ciB0aGF0IHVzZXMgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkIGZvciBjbGFzcyBz
eW50YXguIik7CkBAIC0yOTc4LDcgKzI5NzksNyBAQCBwYXJzZU1ldGhvZDoKICAgICAgICAgICAg
IGJvb2wgZXNjYXBlZCA9IG1fdG9rZW4ubV9kYXRhLmVzY2FwZWQ7CiAgICAgICAgICAgICBBU1NF
UlQoaWRlbnQpOwogICAgICAgICAgICAgbmV4dCgpOwotICAgICAgICAgICAgaWYgKHBhcnNlTW9k
ZSA9PSBTb3VyY2VQYXJzZU1vZGU6Ok1ldGhvZE1vZGUgJiYgIWVzY2FwZWQgJiYgKG1hdGNoSWRl
bnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykgfHwgbWF0Y2goRE9VQkxFKSB8fCBt
YXRjaChJTlRFR0VSKSB8fCBtYXRjaChCSUdJTlQpIHx8IG1hdGNoKE9QRU5CUkFDS0VUKSkpIHsK
KyAgICAgICAgICAgIGlmIChwYXJzZU1vZGUgPT0gU291cmNlUGFyc2VNb2RlOjpNZXRob2RNb2Rl
ICYmICFlc2NhcGVkICYmIChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJ
TkcpIHx8IG1hdGNoKERPVUJMRSkgfHwgbWF0Y2goSU5URUdFUikgfHwgbWF0Y2goQklHSU5UKSB8
fCBtYXRjaChPUEVOQlJBQ0tFVCkgfHwgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYg
bWF0Y2goUFJJVkFURU5BTUUpKSkpIHsKICAgICAgICAgICAgICAgICBpc0dldHRlciA9ICppZGVu
dCA9PSBwcm9wZXJ0eU5hbWVzLmdldDsKICAgICAgICAgICAgICAgICBpc1NldHRlciA9ICppZGVu
dCA9PSBwcm9wZXJ0eU5hbWVzLnNldDsKICAgICAgICAgICAgIH0KQEAgLTMwMDYsNiArMzAwNyw3
IEBAIHBhcnNlTWV0aG9kOgogICAgICAgICAgICAgQVNTRVJUKGlkZW50KTsKICAgICAgICAgICAg
IG5leHQoKTsKICAgICAgICAgICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlTWV0aG9kcygpICYm
IG1hdGNoKE9QRU5QQVJFTikpIHsKKyAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUo
dGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiQ2Fubm90IGRlY2xhcmUgYSBzdGF0aWMg
cHJpdmF0ZSBtZXRob2QiKTsKICAgICAgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoY2xh
c3NTY29wZS0+ZGVjbGFyZVByaXZhdGVNZXRob2QoKmlkZW50KSAmIERlY2xhcmF0aW9uUmVzdWx0
OjpJbnZhbGlkRHVwbGljYXRlRGVjbGFyYXRpb24sICJDYW5ub3QgZGVjbGFyZSBwcml2YXRlIG1l
dGhvZCB0d2ljZSIpOwogICAgICAgICAgICAgICAgIGRlY2xhcmVzUHJpdmF0ZU1ldGhvZCA9IHRy
dWU7CiAgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3BlcnR5Tm9kZTo6VHlw
ZT4odHlwZSB8IFByb3BlcnR5Tm9kZTo6UHJpdmF0ZU1ldGhvZCk7CkBAIC0zMDI1LDggKzMwMjcs
MjEgQEAgcGFyc2VNZXRob2Q6CiAKICAgICAgICAgVHJlZVByb3BlcnR5IHByb3BlcnR5OwogICAg
ICAgICBpZiAoaXNHZXR0ZXIgfHwgaXNTZXR0ZXIpIHsKLSAgICAgICAgICAgIHR5cGUgPSBzdGF0
aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgJiB+UHJvcGVydHlOb2RlOjpDb25zdGFu
dCk7Ci0gICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8UHJvcGVydHlOb2RlOjpUeXBlPih0
eXBlIHwgKGlzR2V0dGVyID8gUHJvcGVydHlOb2RlOjpHZXR0ZXIgOiBQcm9wZXJ0eU5vZGU6OlNl
dHRlcikpOworICAgICAgICAgICAgaWYgKE9wdGlvbnM6OnVzZVByaXZhdGVNZXRob2RzKCkgJiYg
bWF0Y2goUFJJVkFURU5BTUUpKSB7CisgICAgICAgICAgICAgICAgaWRlbnQgPSBtX3Rva2VuLm1f
ZGF0YS5pZGVudDsKKyAgICAgICAgICAgICAgICBpZiAoaXNTZXR0ZXIpIHsKKyAgICAgICAgICAg
ICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKGNsYXNzU2NvcGUtPmRlY2xhcmVQcml2YXRlU2V0
dGVyKCppZGVudCkgJiBEZWNsYXJhdGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0
aW9uLCAiRGVjbGFyZWQgcHJpdmF0ZSBzZXR0ZXIgd2l0aCBhbiBhbHJlYWR5IHVzZWQgbmFtZSIp
OworICAgICAgICAgICAgICAgICAgICBkZWNsYXJlc1ByaXZhdGVBY2Nlc3NvciA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgICAgIHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+
KHR5cGUgfCBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpOworICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNlbWFudGljRmFpbElmVHJ1ZShjbGFzc1Njb3Bl
LT5kZWNsYXJlUHJpdmF0ZUdldHRlcigqaWRlbnQpICYgRGVjbGFyYXRpb25SZXN1bHQ6OkludmFs
aWREdXBsaWNhdGVEZWNsYXJhdGlvbiwgIkRlY2xhcmVkIHByaXZhdGUgZ2V0dGVyIHdpdGggYW4g
YWxyZWFkeSB1c2VkIG5hbWUiKTsKKyAgICAgICAgICAgICAgICAgICAgZGVjbGFyZXNQcml2YXRl
QWNjZXNzb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB0eXBlID0gc3RhdGljX2Nhc3Q8
UHJvcGVydHlOb2RlOjpUeXBlPih0eXBlIHwgUHJvcGVydHlOb2RlOjpQcml2YXRlR2V0dGVyKTsK
KyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAg
IHR5cGUgPSBzdGF0aWNfY2FzdDxQcm9wZXJ0eU5vZGU6OlR5cGU+KHR5cGUgJiB+UHJvcGVydHlO
b2RlOjpDb25zdGFudCk7CisgICAgICAgICAgICAgICAgdHlwZSA9IHN0YXRpY19jYXN0PFByb3Bl
cnR5Tm9kZTo6VHlwZT4odHlwZSB8IChpc0dldHRlciA/IFByb3BlcnR5Tm9kZTo6R2V0dGVyIDog
UHJvcGVydHlOb2RlOjpTZXR0ZXIpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHByb3Bl
cnR5ID0gcGFyc2VHZXR0ZXJTZXR0ZXIoY29udGV4dCwgdHlwZSwgbWV0aG9kU3RhcnQsIENvbnN0
cnVjdG9yS2luZDo6Tm9uZSwgdGFnKTsKICAgICAgICAgICAgIGZhaWxJZkZhbHNlKHByb3BlcnR5
LCAiQ2Fubm90IHBhcnNlIHRoaXMgbWV0aG9kIik7CiAgICAgICAgIH0gZWxzZSBpZiAoIW1hdGNo
KE9QRU5QQVJFTikgJiYgKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Okluc3RhbmNlIHx8IE9wdGlv
bnM6OnVzZVB1YmxpY1N0YXRpY0NsYXNzRmllbGRzKCkpICYmIHBhcnNlTW9kZSA9PSBTb3VyY2VQ
YXJzZU1vZGU6Ok1ldGhvZE1vZGUpIHsKQEAgLTMxMDAsNyArMzExNSw3IEBAIHBhcnNlTWV0aG9k
OgogICAgIGluZm8uZW5kT2Zmc2V0ID0gdG9rZW5Mb2NhdGlvbigpLmVuZE9mZnNldCAtIDE7CiAg
ICAgY29uc3VtZU9yRmFpbChDTE9TRUJSQUNFLCAiRXhwZWN0ZWQgYSBjbG9zaW5nICd9JyBhZnRl
ciBhIGNsYXNzIGJvZHkiKTsKIAotICAgIGlmIChkZWNsYXJlc1ByaXZhdGVNZXRob2QpIHsKKyAg
ICBpZiAoZGVjbGFyZXNQcml2YXRlTWV0aG9kIHx8IGRlY2xhcmVzUHJpdmF0ZUFjY2Vzc29yKSB7
CiAgICAgICAgIElkZW50aWZpZXIgcHJpdmF0ZUJyYW5kSWRlbnRpZmllciA9IG1fdm0ucHJvcGVy
dHlOYW1lcy0+YnVpbHRpbk5hbWVzKCkucHJpdmF0ZUJyYW5kUHJpdmF0ZU5hbWUoKTsKICAgICAg
ICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmF0aW9uUmVzdWx0ID0gY2xhc3NTY29wZS0+
ZGVjbGFyZUxleGljYWxWYXJpYWJsZSgmcHJpdmF0ZUJyYW5kSWRlbnRpZmllciwgdHJ1ZSk7CiAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoZGVjbGFyYXRpb25SZXN1bHQsIGRlY2xhcmF0aW9uUmVzdWx0
ID09IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZCk7CkBAIC0zMTA4LDYgKzMxMjMsMTEgQEAgcGFy
c2VNZXRob2Q6CiAgICAgICAgIGNsYXNzU2NvcGUtPmFkZENsb3NlZFZhcmlhYmxlQ2FuZGlkYXRl
VW5jb25kaXRpb25hbGx5KHByaXZhdGVCcmFuZElkZW50aWZpZXIuaW1wbCgpKTsKICAgICB9CiAK
KyAgICBpZiBjb25zdGV4cHIgKHN0ZDo6aXNfc2FtZV92PFRyZWVCdWlsZGVyLCBBU1RCdWlsZGVy
PikgeworICAgICAgICBpZiAoY2xhc3NFbGVtZW50cykKKyAgICAgICAgICAgIGNsYXNzRWxlbWVu
dHMtPnNldEhhc1ByaXZhdGVBY2Nlc3NvcnMoZGVjbGFyZXNQcml2YXRlQWNjZXNzb3IpOworICAg
IH0KKwogICAgIGlmIChPcHRpb25zOjp1c2VQcml2YXRlQ2xhc3NGaWVsZHMoKSkgewogICAgICAg
ICAvLyBGYWlsIGlmIHRoZXJlIGFyZSBubyBwYXJlbnQgcHJpdmF0ZSBuYW1lIHNjb3BlcyBhbmQg
YW55IHVzZWQtYnV0LXVuZGVjbGFyZWQgcHJpdmF0ZSBuYW1lcy4KICAgICAgICAgc2VtYW50aWNG
YWlsSWZGYWxzZShjb3B5VW5kZWNsYXJlZFByaXZhdGVOYW1lc1RvT3V0ZXJTY29wZSgpLCAiQ2Fu
bm90IHJlZmVyZW5jZSB1bmRlY2xhcmVkIHByaXZhdGUgbmFtZXMiKTsKQEAgLTQ0MjgsMTIgKzQ0
NDgsMTggQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlUHJvcGVydHkgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlR2V0dGVyU2V0dGVyKFQKIAogICAgIEpTVG9rZW5Mb2NhdGlvbiBs
b2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwogCi0gICAgaWYgKG1hdGNoU3BlY0lkZW50aWZpZXIo
KSB8fCBtYXRjaChTVFJJTkcpIHx8IG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRva2VuRmxhZykg
eworICAgIGJvb2wgbWF0Y2hlc1ByaXZhdGVOYW1lID0gbWF0Y2goUFJJVkFURU5BTUUpOworICAg
IGlmIChtYXRjaFNwZWNJZGVudGlmaWVyKCkgfHwgbWF0Y2goU1RSSU5HKSB8fCAoT3B0aW9uczo6
dXNlUHJpdmF0ZU1ldGhvZHMoKSAmJiBtYXRjaGVzUHJpdmF0ZU5hbWUpIHx8IG1fdG9rZW4ubV90
eXBlICYgS2V5d29yZFRva2VuRmxhZykgewogICAgICAgICBzdHJpbmdQcm9wZXJ0eU5hbWUgPSBt
X3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICAgICAgc2VtYW50aWNGYWlsSWZUcnVlKHRhZyA9PSBD
bGFzc0VsZW1lbnRUYWc6OlN0YXRpYyAmJiAqc3RyaW5nUHJvcGVydHlOYW1lID09IG1fdm0ucHJv
cGVydHlOYW1lcy0+cHJvdG90eXBlLAogICAgICAgICAgICAgIkNhbm5vdCBkZWNsYXJlIGEgc3Rh
dGljIG1ldGhvZCBuYW1lZCAncHJvdG90eXBlJyIpOwogICAgICAgICBzZW1hbnRpY0ZhaWxJZlRy
dWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6SW5zdGFuY2UgJiYgKnN0cmluZ1Byb3BlcnR5TmFt
ZSA9PSBtX3ZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLAogICAgICAgICAgICAgIkNhbm5v
dCBkZWNsYXJlIGEgZ2V0dGVyIG9yIHNldHRlciBuYW1lZCAnY29uc3RydWN0b3InIik7CisKKyAg
ICAgICAgaWYgKG1hdGNoKFBSSVZBVEVOQU1FKSkgeworICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKHRhZyA9PSBDbGFzc0VsZW1lbnRUYWc6Ok5vLCAiQ2Fubm90IGRlY2xhcmUgYSBwcml2
YXRlIHNldHRlciBvciBnZXR0ZXIgb3V0c2lkZSBhIGNsYXNzIik7CisgICAgICAgICAgICBzZW1h
bnRpY0ZhaWxJZlRydWUodGFnID09IENsYXNzRWxlbWVudFRhZzo6U3RhdGljLCAiQ2Fubm90IGRl
Y2xhcmUgYSBwcml2YXRlIHNldHRlciBvciBnZXR0ZXIgYXMgc3RhdGljIik7CisgICAgICAgIH0K
ICAgICAgICAgbmV4dCgpOwogICAgIH0gZWxzZSBpZiAobWF0Y2goRE9VQkxFKSB8fCBtYXRjaChJ
TlRFR0VSKSkgewogICAgICAgICBudW1lcmljUHJvcGVydHlOYW1lID0gbV90b2tlbi5tX2RhdGEu
ZG91YmxlVmFsdWU7CkBAIC00NDU0LDEwICs0NDgwLDE4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gVHJlZVByb3BlcnR5IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUdldHRlclNldHRl
cihUCiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9QRU5QQVJFTiksICJFeHBlY3RlZCBhIHBh
cmFtZXRlciBsaXN0IGZvciBnZXR0ZXIgZGVmaW5pdGlvbiIpOwogICAgICAgICBTZXRGb3JTY29w
ZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2RlKG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJz
ZU1vZGU6OkdldHRlck1vZGUpOwogICAgICAgICBmYWlsSWZGYWxzZSgocGFyc2VGdW5jdGlvbklu
Zm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1lbnRzOjpVbm5hbWVkLCBmYWxzZSwgY29u
c3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRlZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9m
ZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlwZTo6TWV0aG9kKSksICJDYW5ub3QgcGFy
c2UgZ2V0dGVyIGRlZmluaXRpb24iKTsKLSAgICB9IGVsc2UgeworICAgIH0gZWxzZSBpZiAodHlw
ZSAmIFByb3BlcnR5Tm9kZTo6U2V0dGVyKSB7CiAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoKE9Q
RU5QQVJFTiksICJFeHBlY3RlZCBhIHBhcmFtZXRlciBsaXN0IGZvciBzZXR0ZXIgZGVmaW5pdGlv
biIpOwogICAgICAgICBTZXRGb3JTY29wZTxTb3VyY2VQYXJzZU1vZGU+IGlubmVyUGFyc2VNb2Rl
KG1fcGFyc2VNb2RlLCBTb3VyY2VQYXJzZU1vZGU6OlNldHRlck1vZGUpOwogICAgICAgICBmYWls
SWZGYWxzZSgocGFyc2VGdW5jdGlvbkluZm8oY29udGV4dCwgRnVuY3Rpb25OYW1lUmVxdWlyZW1l
bnRzOjpVbm5hbWVkLCBmYWxzZSwgY29uc3RydWN0b3JLaW5kLCBTdXBlckJpbmRpbmc6Ok5lZWRl
ZCwgZ2V0dGVyT3JTZXR0ZXJTdGFydE9mZnNldCwgaW5mbywgRnVuY3Rpb25EZWZpbml0aW9uVHlw
ZTo6TWV0aG9kKSksICJDYW5ub3QgcGFyc2Ugc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVs
c2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5vZGU6OlByaXZhdGVTZXR0ZXIpIHsKKyAgICAgICAgZmFp
bElmRmFsc2UobWF0Y2goT1BFTlBBUkVOKSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9y
IHByaXZhdGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNl
UGFyc2VNb2RlPiBpbm5lclBhcnNlTW9kZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpT
ZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFpbElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRl
eHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVtZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9y
S2luZCwgU3VwZXJCaW5kaW5nOjpOZWVkZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGlu
Zm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHByaXZh
dGUgc2V0dGVyIGRlZmluaXRpb24iKTsKKyAgICB9IGVsc2UgaWYgKHR5cGUgJiBQcm9wZXJ0eU5v
ZGU6OlByaXZhdGVHZXR0ZXIpIHsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0Y2goT1BFTlBBUkVO
KSwgIkV4cGVjdGVkIGEgcGFyYW1ldGVyIGxpc3QgZm9yIHByaXZhdGUgZ2V0dGVyIGRlZmluaXRp
b24iKTsKKyAgICAgICAgU2V0Rm9yU2NvcGU8U291cmNlUGFyc2VNb2RlPiBpbm5lclBhcnNlTW9k
ZShtX3BhcnNlTW9kZSwgU291cmNlUGFyc2VNb2RlOjpHZXR0ZXJNb2RlKTsKKyAgICAgICAgZmFp
bElmRmFsc2UoKHBhcnNlRnVuY3Rpb25JbmZvKGNvbnRleHQsIEZ1bmN0aW9uTmFtZVJlcXVpcmVt
ZW50czo6VW5uYW1lZCwgZmFsc2UsIGNvbnN0cnVjdG9yS2luZCwgU3VwZXJCaW5kaW5nOjpOZWVk
ZWQsIGdldHRlck9yU2V0dGVyU3RhcnRPZmZzZXQsIGluZm8sIEZ1bmN0aW9uRGVmaW5pdGlvblR5
cGU6Ok1ldGhvZCkpLCAiQ2Fubm90IHBhcnNlIHByaXZhdGUgZ2V0dGVyIGRlZmluaXRpb24iKTsK
ICAgICB9CiAKICAgICBpZiAoc3RyaW5nUHJvcGVydHlOYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvUGFyc2VyLmgKaW5kZXggNjhlZmNhZGVhYTNmNjA5NTNmZTk2Y2QyZWJmZDBkN2JhODU0
NDk1NS4uNGU5NjY0ZmVjZmI2OTMzMDU1OGU3YTg2NzQ2YTJkMmI2NmQ5YzU0MCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC01MTcsNiArNTE3LDM0IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAKKyAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnQpCisgICAgewor
ICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVjbGFyYXRpb25zKTsKKyAgICAgICAgRGVj
bGFyYXRpb25SZXN1bHRNYXNrIHJlc3VsdCA9IERlY2xhcmF0aW9uUmVzdWx0OjpWYWxpZDsKKyAg
ICAgICAgYm9vbCBhZGRSZXN1bHQgPSBtX2xleGljYWxWYXJpYWJsZXMuZGVjbGFyZVByaXZhdGVT
ZXR0ZXIoaWRlbnQpOworCisgICAgICAgIGlmICghYWRkUmVzdWx0KSB7CisgICAgICAgICAgICBy
ZXN1bHQgfD0gRGVjbGFyYXRpb25SZXN1bHQ6OkludmFsaWREdXBsaWNhdGVEZWNsYXJhdGlvbjsK
KyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0KKworICAgIERlY2xhcmF0aW9uUmVzdWx0TWFzayBkZWNsYXJlUHJpdmF0
ZUdldHRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCkKKyAgICB7CisgICAgICAgIEFTU0VSVCht
X2FsbG93c0xleGljYWxEZWNsYXJhdGlvbnMpOworICAgICAgICBEZWNsYXJhdGlvblJlc3VsdE1h
c2sgcmVzdWx0ID0gRGVjbGFyYXRpb25SZXN1bHQ6OlZhbGlkOworICAgICAgICBib29sIGFkZFJl
c3VsdCA9IG1fbGV4aWNhbFZhcmlhYmxlcy5kZWNsYXJlUHJpdmF0ZUdldHRlcihpZGVudCk7CisK
KyAgICAgICAgaWYgKCFhZGRSZXN1bHQpIHsKKyAgICAgICAgICAgIHJlc3VsdCB8PSBEZWNsYXJh
dGlvblJlc3VsdDo6SW52YWxpZER1cGxpY2F0ZURlY2xhcmF0aW9uOworICAgICAgICAgICAgcmV0
dXJuIHJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQor
CiAgICAgRGVjbGFyYXRpb25SZXN1bHRNYXNrIGRlY2xhcmVQcml2YXRlRmllbGQoY29uc3QgSWRl
bnRpZmllciYgaWRlbnQpCiAgICAgewogICAgICAgICBBU1NFUlQobV9hbGxvd3NMZXhpY2FsRGVj
bGFyYXRpb25zKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFy
aWFibGVFbnZpcm9ubWVudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1Zhcmlh
YmxlRW52aXJvbm1lbnQuY3BwCmluZGV4IDNlYzU3YzNlMmFiYTVkYjM3YjdmYjYyZTNjOWYwYTE2
M2ZiNWRlNjcuLjFhZGJlNGIwNzhmMjUzNmFiNmIwOTdkNWUxYTdjNzI1MmY1Yzk2ZDAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvVmFyaWFibGVFbnZpcm9ubWVudC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJsZUVudmlyb25tZW50
LmNwcApAQCAtMTA0LDYgKzEwNCw4MCBAQCB2b2lkIFZhcmlhYmxlRW52aXJvbm1lbnQ6Om1hcmtW
YXJpYWJsZUFzRXhwb3J0ZWQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPgogICAgIGZp
bmRSZXN1bHQtPnZhbHVlLnNldElzRXhwb3J0ZWQoKTsKIH0KIAorYm9vbCBWYXJpYWJsZUVudmly
b25tZW50OjpkZWNsYXJlUHJpdmF0ZUFjY2Vzc29yKGNvbnN0IFJlZlB0cjxVbmlxdWVkU3RyaW5n
SW1wbD4mIGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0cyBhY2Nlc3NvclRyYWl0
cykKK3sKKyAgICBpZiAoIW1fcmFyZURhdGEpCisgICAgICAgIG1fcmFyZURhdGEgPSBXVEY6Om1h
a2VVbmlxdWU8VmFyaWFibGVFbnZpcm9ubWVudDo6UmFyZURhdGE+KCk7CisKKyAgICBhdXRvIGZp
bmRSZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5maW5kKGlkZW50aWZpZXIpOwor
CisgICAgaWYgKGZpbmRSZXN1bHQgPT0gbV9yYXJlRGF0YS0+bV9wcml2YXRlTmFtZXMuZW5kKCkp
IHsKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKFByaXZhdGVOYW1lRW50cnk6OlRyYWl0
czo6SXNEZWNsYXJlZCB8IGFjY2Vzc29yVHJhaXRzKTsKKworICAgICAgICBhdXRvIGVudHJ5ID0g
VmFyaWFibGVFbnZpcm9ubWVudEVudHJ5KCk7CisgICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cyA9
PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKQorICAgICAgICAgICAgZW50cnku
c2V0SXNQcml2YXRlU2V0dGVyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgQVNTRVJU
KGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOwor
ICAgICAgICAgICAgZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CisgICAgICAgIH0KKyAgICAg
ICAgZW50cnkuc2V0SXNDb25zdCgpOworICAgICAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7Cisg
ICAgICAgIG1fbWFwLmFkZChpZGVudGlmaWVyLCBlbnRyeSk7CisKKyAgICAgICAgYXV0byBhZGRS
ZXN1bHQgPSBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5hZGQoaWRlbnRpZmllciwgbWV0YSk7
CisgICAgICAgIHJldHVybiBhZGRSZXN1bHQuaXNOZXdFbnRyeTsKKyAgICB9CisKKyAgICBQcml2
YXRlTmFtZUVudHJ5IGN1cnJlbnRFbnRyeSA9IGZpbmRSZXN1bHQtPnZhbHVlOworICAgIGlmIChj
dXJyZW50RW50cnkuaXNEZWNsYXJlZCgpKSB7CisgICAgICAgIGlmICgoYWNjZXNzb3JUcmFpdHMg
PT0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlciAmJiAhY3VycmVudEVudHJ5Lmlz
R2V0dGVyKCkpCisgICAgICAgICAgICB8fCAoYWNjZXNzb3JUcmFpdHMgPT0gUHJpdmF0ZU5hbWVF
bnRyeTo6VHJhaXRzOjpJc0dldHRlciAmJiAhY3VycmVudEVudHJ5LmlzU2V0dGVyKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBFcnJvcjogZGVjbGFyaW5nIGEgZHVwbGljYXRlIHBy
aXZhdGUgYWNjZXNzb3IuCisKKyAgICAgICAgUHJpdmF0ZU5hbWVFbnRyeSBtZXRhKGN1cnJlbnRF
bnRyeS5iaXRzKCkgfCBhY2Nlc3NvclRyYWl0cyk7CisgICAgICAgIG1fcmFyZURhdGEtPm1fcHJp
dmF0ZU5hbWVzLnNldChpZGVudGlmaWVyLCBtZXRhKTsKKworICAgICAgICBhdXRvIGVudHJ5SXRl
cmF0b3IgPSBtX21hcC5maW5kKGlkZW50aWZpZXIpOworICAgICAgICBBU1NFUlQoZW50cnlJdGVy
YXRvciAhPSBtX21hcC5lbmQoKSk7CisgICAgICAgIGlmIChhY2Nlc3NvclRyYWl0cyA9PSBQcml2
YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKQorICAgICAgICAgICAgZW50cnlJdGVyYXRv
ci0+dmFsdWUuc2V0SXNQcml2YXRlU2V0dGVyKCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAg
ICAgQVNTRVJUKGFjY2Vzc29yVHJhaXRzID09IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNH
ZXR0ZXIpOworICAgICAgICAgICAgZW50cnlJdGVyYXRvci0+dmFsdWUuc2V0SXNQcml2YXRlR2V0
dGVyKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAv
LyBpdCB3YXMgcHJldmlvdXNseSB1c2VkLCBtYXJrIGl0IGFzIGRlY2xhcmVkLgorICAgIGF1dG8g
ZW50cnkgPSBWYXJpYWJsZUVudmlyb25tZW50RW50cnkoKTsKKyAgICBpZiAoYWNjZXNzb3JUcmFp
dHMgPT0gUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzOjpJc1NldHRlcikKKyAgICAgICAgZW50cnku
c2V0SXNQcml2YXRlU2V0dGVyKCk7CisgICAgZWxzZSB7CisgICAgICAgIEFTU0VSVChhY2Nlc3Nv
clRyYWl0cyA9PSBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzR2V0dGVyKTsKKyAgICAgICAg
ZW50cnkuc2V0SXNQcml2YXRlR2V0dGVyKCk7CisgICAgfQorICAgIGVudHJ5LnNldElzQ29uc3Qo
KTsKKyAgICBlbnRyeS5zZXRJc0NhcHR1cmVkKCk7CisgICAgbV9tYXAuYWRkKGlkZW50aWZpZXIs
IGVudHJ5KTsKKworICAgIFByaXZhdGVOYW1lRW50cnkgbmV3RW50cnkoY3VycmVudEVudHJ5LmJp
dHMoKSB8IFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNEZWNsYXJlZCB8IGFjY2Vzc29yVHJh
aXRzKTsKKyAgICBtX3JhcmVEYXRhLT5tX3ByaXZhdGVOYW1lcy5zZXQoaWRlbnRpZmllciwgbmV3
RW50cnkpOworICAgIHJldHVybiB0cnVlOworCit9CisKK2Jvb2wgVmFyaWFibGVFbnZpcm9ubWVu
dDo6ZGVjbGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYg
aWRlbnRpZmllcikKK3sKKyAgICByZXR1cm4gZGVjbGFyZVByaXZhdGVBY2Nlc3NvcihpZGVudGlm
aWVyLCBQcml2YXRlTmFtZUVudHJ5OjpUcmFpdHM6OklzU2V0dGVyKTsKK30KKworYm9vbCBWYXJp
YWJsZUVudmlyb25tZW50OjpkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKQoreworICAgIHJldHVybiBkZWNsYXJlUHJpdmF0ZUFj
Y2Vzc29yKGlkZW50aWZpZXIsIFByaXZhdGVOYW1lRW50cnk6OlRyYWl0czo6SXNHZXR0ZXIpOwor
fQorCiBib29sIFZhcmlhYmxlRW52aXJvbm1lbnQ6OmRlY2xhcmVQcml2YXRlTWV0aG9kKGNvbnN0
IFJlZlB0cjxVbmlxdWVkU3RyaW5nSW1wbD4mIGlkZW50aWZpZXIpCiB7CiAgICAgaWYgKCFtX3Jh
cmVEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9WYXJpYWJs
ZUVudmlyb25tZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52
aXJvbm1lbnQuaAppbmRleCBmNmQzNThiMTk3MDAyZDIwZGU5N2Y0MDY5M2MzM2Y2OWQ1NTczODJi
Li5hNmI5MTY2NGE1ZWVkYjU2NzZlYTI2NzM3N2JhOGRmODQyMjA0YWM3IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1ZhcmlhYmxlRW52aXJvbm1lbnQuaApAQCAtNDcs
NiArNDcsOCBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzU2xvcHB5TW9kZUhv
aXN0aW5nQ2FuZGlkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNTbG9wcHlNb2RlSG9p
c3RpbmdDYW5kaWRhdGU7IH0KICAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlRmllbGQo
KSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1ByaXZhdGVGaWVsZDsgfQogICAgIEFMV0FZU19J
TkxJTkUgYm9vbCBpc1ByaXZhdGVNZXRob2QoKSBjb25zdCB7IHJldHVybiBtX2JpdHMgJiBJc1By
aXZhdGVNZXRob2Q7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNQcml2YXRlU2V0dGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNQcml2YXRlU2V0dGVyOyB9CisgICAgQUxXQVlTX0lO
TElORSBib29sIGlzUHJpdmF0ZUdldHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzUHJp
dmF0ZUdldHRlcjsgfQogCiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ2FwdHVyZWQoKSB7
IG1fYml0cyB8PSBJc0NhcHR1cmVkOyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzQ29u
c3QoKSB7IG1fYml0cyB8PSBJc0NvbnN0OyB9CkBAIC02MCw2ICs2Miw4IEBAIHB1YmxpYzoKICAg
ICBBTFdBWVNfSU5MSU5FIHZvaWQgc2V0SXNTbG9wcHlNb2RlSG9pc3RpbmdDYW5kaWRhdGUoKSB7
IG1fYml0cyB8PSBJc1Nsb3BweU1vZGVIb2lzdGluZ0NhbmRpZGF0ZTsgfQogICAgIEFMV0FZU19J
TkxJTkUgdm9pZCBzZXRJc1ByaXZhdGVGaWVsZCgpIHsgbV9iaXRzIHw9IElzUHJpdmF0ZUZpZWxk
OyB9CiAgICAgQUxXQVlTX0lOTElORSB2b2lkIHNldElzUHJpdmF0ZU1ldGhvZCgpIHsgbV9iaXRz
IHw9IElzUHJpdmF0ZU1ldGhvZDsgfQorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzZXRJc1ByaXZh
dGVTZXR0ZXIoKSB7IG1fYml0cyB8PSBJc1ByaXZhdGVTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNQcml2YXRlR2V0dGVyKCkgeyBtX2JpdHMgfD0gSXNQcml2YXRlR2V0dGVy
OyB9CiAKICAgICBBTFdBWVNfSU5MSU5FIHZvaWQgY2xlYXJJc1ZhcigpIHsgbV9iaXRzICY9IH5J
c1ZhcjsgfQogCkBAIC04NCw2ICs4OCw4IEBAIHByaXZhdGU6CiAgICAgICAgIElzU2xvcHB5TW9k
ZUhvaXN0aW5nQ2FuZGlkYXRlID0gMSA8PCA5LAogICAgICAgICBJc1ByaXZhdGVGaWVsZCA9IDEg
PDwgMTAsCiAgICAgICAgIElzUHJpdmF0ZU1ldGhvZCA9IDEgPDwgMTEsCisgICAgICAgIElzUHJp
dmF0ZUdldHRlciA9IDEgPDwgMTIsCisgICAgICAgIElzUHJpdmF0ZVNldHRlciA9IDEgPDwgMTMs
CiAgICAgfTsKICAgICB1aW50MTZfdCBtX2JpdHMgeyAwIH07CiB9OwpAQCAtMTAxLDggKzEwNywx
MSBAQCBwdWJsaWM6CiAgICAgQUxXQVlTX0lOTElORSBib29sIGlzVXNlZCgpIGNvbnN0IHsgcmV0
dXJuIG1fYml0cyAmIElzVXNlZDsgfQogICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0RlY2xhcmVk
KCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYgSXNEZWNsYXJlZDsgfQogICAgIEFMV0FZU19JTkxJ
TkUgYm9vbCBpc01ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fYml0cyAmIElzTWV0aG9kOyB9Cisg
ICAgQUxXQVlTX0lOTElORSBib29sIGlzU2V0dGVyKCkgY29uc3QgeyByZXR1cm4gbV9iaXRzICYg
SXNTZXR0ZXI7IH0KKyAgICBBTFdBWVNfSU5MSU5FIGJvb2wgaXNHZXR0ZXIoKSBjb25zdCB7IHJl
dHVybiBtX2JpdHMgJiBJc0dldHRlcjsgfQorICAgIEFMV0FZU19JTkxJTkUgYm9vbCBpc0ZpZWxk
KCkgY29uc3QgeyByZXR1cm4gIWlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpOyB9CiAKLSAgICBi
b29sIGlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpIGNvbnN0IHsgcmV0dXJuIGlzTWV0aG9kKCk7
IH0KKyAgICBib29sIGlzUHJpdmF0ZU1ldGhvZE9yQWNlc3NvcigpIGNvbnN0IHsgcmV0dXJuIGlz
TWV0aG9kKCkgfHwgaXNTZXR0ZXIoKSB8fCBpc0dldHRlcigpOyB9CiAKICAgICBBTFdBWVNfSU5M
SU5FIHZvaWQgc2V0SXNVc2VkKCkgeyBtX2JpdHMgfD0gSXNVc2VkOyB9CiAgICAgQUxXQVlTX0lO
TElORSB2b2lkIHNldElzRGVjbGFyZWQoKSB7IG1fYml0cyB8PSBJc0RlY2xhcmVkOyB9CkBAIC0x
MTksNiArMTI4LDggQEAgcHVibGljOgogICAgICAgICBJc1VzZWQgPSAxIDw8IDAsCiAgICAgICAg
IElzRGVjbGFyZWQgPSAxIDw8IDEsCiAgICAgICAgIElzTWV0aG9kID0gMSA8PCAyLAorICAgICAg
ICBJc0dldHRlciA9IDEgPDwgMywKKyAgICAgICAgSXNTZXR0ZXIgPSAxIDw8IDQsCiAgICAgfTsK
IAogcHJpdmF0ZToKQEAgLTE5NSw2ICsyMDYsMTQgQEAgcHVibGljOgogICAgIGJvb2wgZGVjbGFy
ZVByaXZhdGVNZXRob2QoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4gZGVj
bGFyZVByaXZhdGVNZXRob2QoaWRlbnRpZmllci5pbXBsKCkpOyB9CiAgICAgYm9vbCBkZWNsYXJl
UHJpdmF0ZU1ldGhvZChjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVy
KTsKIAorICAgIGJvb2wgZGVjbGFyZVByaXZhdGVBY2Nlc3Nvcihjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiwgUHJpdmF0ZU5hbWVFbnRyeTo6VHJhaXRzKTsKKworICAgIGJvb2wgZGVj
bGFyZVByaXZhdGVTZXR0ZXIoY29uc3QgSWRlbnRpZmllciYgaWRlbnRpZmllcikgeyByZXR1cm4g
ZGVjbGFyZVByaXZhdGVTZXR0ZXIoaWRlbnRpZmllci5pbXBsKCkpOyB9CisgICAgYm9vbCBkZWNs
YXJlUHJpdmF0ZVNldHRlcihjb25zdCBSZWZQdHI8VW5pcXVlZFN0cmluZ0ltcGw+JiBpZGVudGlm
aWVyKTsKKworICAgIGJvb2wgZGVjbGFyZVByaXZhdGVHZXR0ZXIoY29uc3QgSWRlbnRpZmllciYg
aWRlbnRpZmllcikgeyByZXR1cm4gZGVjbGFyZVByaXZhdGVHZXR0ZXIoaWRlbnRpZmllci5pbXBs
KCkpOyB9CisgICAgYm9vbCBkZWNsYXJlUHJpdmF0ZUdldHRlcihjb25zdCBSZWZQdHI8VW5pcXVl
ZFN0cmluZ0ltcGw+JiBpZGVudGlmaWVyKTsKKwogICAgIE1hcDo6QWRkUmVzdWx0IGRlY2xhcmVQ
cml2YXRlRmllbGQoY29uc3QgUmVmUHRyPFVuaXF1ZWRTdHJpbmdJbXBsPiYgaWRlbnRpZmllcikK
ICAgICB7CiAgICAgICAgIGF1dG8mIG1ldGEgPSBnZXRPckFkZFByaXZhdGVOYW1lKGlkZW50aWZp
ZXIuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhj
ZXB0aW9uSGVscGVycy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRp
b25IZWxwZXJzLmNwcAppbmRleCBkODc0NDc5NGJiYjFhZDMwMzFmYjQ4YWJjNjRlZTU1MDMzYzZi
YWI1Li4yZGVmZWEzN2IzNmYxZGQzNTAxZTE4Y2MwZmUyMjliM2E0ZTc2MDcwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGNlcHRpb25IZWxwZXJzLmNwcApAQCAt
MzM2LDcgKzMzNiw3IEBAIEpTT2JqZWN0KiBjcmVhdGVSZWRlZmluZWRQcml2YXRlTmFtZUVycm9y
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiAKIEpTT2JqZWN0KiBjcmVhdGVQcml2YXRl
TWV0aG9kQWNjZXNzRXJyb3IoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKLSAgICBy
ZXR1cm4gY3JlYXRlVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgbWFrZVN0cmluZygiQ2Fubm90IGFj
Y2VzcyBwcml2YXRlIG1ldGhvZCJfcyksIGRlZmF1bHRTb3VyY2VBcHBlbmRlciwgVHlwZU5vdGhp
bmcpOworICAgIHJldHVybiBjcmVhdGVUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBtYWtlU3RyaW5n
KCJDYW5ub3QgYWNjZXNzIHByaXZhdGUgbWV0aG9kIG9yIGFjZXNzb3IiX3MpLCBkZWZhdWx0U291
cmNlQXBwZW5kZXIsIFR5cGVOb3RoaW5nKTsKIH0KIAogSlNPYmplY3QqIGNyZWF0ZVJlaW5zdGFs
bFByaXZhdGVNZXRob2RFcnJvcihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA0NDFmZjE0
Mjc1MzM5NTg3ZDE0MDFmMjE4OTA0M2Y3ZjNhM2E5YmY3Li4yMmM1Mzg2YmM2Mjg3ZWY3OTg2ZjAz
ZTQ1MzAzZmVkYzhiMmM3YzEzIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9K
U1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDIxLTAyLTE1ICBDYWlvIExpbWEg
IDx0aWNhaW9saW1hQGdtYWlsLmNvbT4KKworICAgICAgICBbRVNOZXh0XSBJbXBsZW1lbnQgcHJp
dmF0ZSBhY2Nlc3NvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5NDQzNQorCisgICAgICAgIFJldmlld2VkIGJ5IFl1c3VrZSBTdXp1a2kuCisKKyAg
ICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0ZS1uYW1lLWVhcmx5LWVycm9y
cy5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtZ2V0dGVyLWJyYW5kLWNoZWNr
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1nZXR0ZXItaW5uZXItY2xhc3Mu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1lbWJlcnMtZ2V0LWFuZC1zZXQu
anM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29y
cy1wb3N0Zml4LW5vZGUuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9wcml2YXRlLW1ldGhv
ZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qczogQWRkZWQuCisgICAgICAgICogc3RyZXNz
L3ByaXZhdGUtbmFtZXMtYXZhaWxhYmxlLW9uLWRpcmVjdC1ldmFsLmpzOgorICAgICAgICAqIHN0
cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFs
aXphdGlvbi5qczogQ29waWVkIGZyb20gSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFp
bGFibGUtb24tZGlyZWN0LWV2YWwuanMuCisgICAgICAgICogc3RyZXNzL3ByaXZhdGUtc2V0dGVy
LWJyYW5kLWNoZWNrLmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvcHJpdmF0ZS1zZXR0ZXIt
aW5uZXItY2xhc3MuanM6IEFkZGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6Cisg
ICAgICAgICogdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFtbDoKKwogMjAyMS0wMi0wOSAgWXVzdWtl
IFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEMrKyBpdGVyYXRp
b24gc2hvdWxkIHN1cHBvcnQgZmFzdCBpdGVyYXRvciBwcm90b2NvbApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1hY2Nlc29yLWR1cGxpY2F0ZS1uYW1lLWVhcmx5LWVycm9ycy5q
cyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1kdXBsaWNhdGUtbmFtZS1lYXJseS1l
cnJvcnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NhM2JmYjY0ZjJjM2M2MmM4YWExMTA0MGIwYzA5MGIwZjlh
ZjliNwotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtYWNjZXNvci1k
dXBsaWNhdGUtbmFtZS1lYXJseS1lcnJvcnMuanMKQEAgLTAsMCArMSw5MiBAQAorLy9AIHJlcXVp
cmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0gewor
ICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09
IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAi
IGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBl
Y3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAg
IH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJy
b3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6
ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAg
IH0KK30KKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZh
bChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9
IHY7IH0KKyAgICAgICAgICAgIHNldCAjbSh1KSB7fQorICAgICAgICB9CisgICAgYCk7Cit9KTsK
KworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisg
ICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAgI207CisgICAgICAgICAgICBzZXQgI20odikg
eyB0aGlzLl92ID0gdjsgfQorICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93
cyhTeW50YXhFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMg
eworICAgICAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgICAgICNt
OworICAgICAgICB9CisgICAgYCk7Cit9KTsKKworYXNzZXJ0LnRocm93cyhTeW50YXhFcnJvciwg
ZnVuY3Rpb24oKSB7CisgICAgZXZhbChgCisgICAgICAgIGNsYXNzIEMgeworICAgICAgICAgICAg
c2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKyAgICAgICAgICAgICNtKCkge30KKyAgICAgICAg
fQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1bmN0aW9uKCkg
eworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgICNtKCkge30KKyAg
ICAgICAgICAgIGdldCAjbSgpIHt9CisgICAgICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQu
dGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlvbigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xh
c3MgQyB7CisgICAgICAgICAgICBnZXQgI20oKSB7fQorICAgICAgICAgICAgZ2V0ICNtKCkge30K
KyAgICAgICAgfQorICAgIGApOworfSk7CisKK2Fzc2VydC50aHJvd3MoU3ludGF4RXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgIGV2YWwoYAorICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdl
dCAjbSgpIHt9CisgICAgICAgICAgICBzZXQgI20oKSB7fQorICAgICAgICAgICAgI207CisgICAg
ICAgIH0KKyAgICBgKTsKK30pOworCithc3NlcnQudGhyb3dzKFN5bnRheEVycm9yLCBmdW5jdGlv
bigpIHsKKyAgICBldmFsKGAKKyAgICAgICAgY2xhc3MgQyB7CisgICAgICAgICAgICBnZXQgI20o
KSB7fQorICAgICAgICAgICAgc2V0ICNtKCkge30KKyAgICAgICAgICAgICNtKCkge30KKyAgICAg
ICAgfQorICAgIGApOworfSk7CisKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUt
Z2V0dGVyLWJyYW5kLWNoZWNrLmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1nZXR0ZXItYnJh
bmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uY2Q0MTVkYjhhZTZiZWQwNDkwMDViNzM5NWVmYmFlODU1
MDE5MjFmYgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVy
LWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEsOTEgQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11
c2VQcml2YXRlTWV0aG9kcz10cnVlIikKKworbGV0IGFzc2VydCA9IHsKKyAgICBzYW1lVmFsdWU6
IGZ1bmN0aW9uIChsaHMsIHJocykgeworICAgICAgICBpZiAobGhzICE9PSByaHMpCisgICAgICAg
ICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkOiAiICsgbGhzICsgIiBidWcgZ290OiAiICsg
cmhzKTsKKyAgICB9LAorCisgICAgdGhyb3dzOiBmdW5jdGlvbiAoZXhwZWN0ZWRFcnJvciwgb3Ap
IHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICBvcCgpOworICAgICAgICB9IGNhdGNoKGUpIHsK
KyAgICAgICAgICAgIGlmICghKGUgaW5zdGFuY2VvZiBleHBlY3RlZEVycm9yKSkKKyAgICAgICAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRvIHRocm93OiAiICsgZXhwZWN0ZWRF
cnJvciArICIgYnV0IHRocmV3OiAiICsgZSk7CisgICAgICAgIH0KKyAgICB9Cit9OworCisoZnVu
Y3Rpb24gKCkgeworICAgIGxldCBjcmVhdGVBbmRJbnN0YW50aWF0ZUNsYXNzID0gZnVuY3Rpb24g
KCkgeworICAgICAgICBjbGFzcyBDIHsKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICd0
ZXN0JzsgfQorCisgICAgICAgICAgICBhY2Nlc3MobykgeworICAgICAgICAgICAgICAgIHJldHVy
biBvLiNtOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBD
KCk7CisgICAgfQorCisgICAgbGV0IGMxID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOwor
ICAgIGxldCBjMiA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsKKworICAgIGFzc2VydC5z
YW1lVmFsdWUoYzEuYWNjZXNzKGMxKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMy
LmFjY2VzcyhjMiksICd0ZXN0Jyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGMxLmFjY2VzcyhjMik7CisgICAgfSk7CisKKyAgICBhc3NlcnQu
dGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMyLmFjY2VzcyhjMSk7Cisg
ICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIFMgeworICAgICAgICBn
ZXQgI20oKSB7IHJldHVybiAnc3VwZXIgY2xhc3MnOyB9CisKKyAgICAgICAgc3VwZXJBY2Nlc3Mo
KSB7IHJldHVybiB0aGlzLiNtOyB9CisgICAgfQorCisgICAgY2xhc3MgQyBleHRlbmRzIFMgewor
ICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnc3ViY2xhc3MnOyB9CisKKyAgICAgICAgYWNjZXNz
KCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAg
ICBsZXQgYyA9IG5ldyBDKCk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuYWNjZXNzKCksICdz
dWJjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5zdXBlckFjY2VzcygpLCAnc3VwZXIg
Y2xhc3MnKTsKKworICAgIGxldCBzID0gbmV3IFMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHMu
c3VwZXJBY2Nlc3MoKSwgJ3N1cGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcy5jYWxsKHMpOworICAgIH0pOworfSko
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyBy
ZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzKG8pIHsKKyAgICAgICAgICAgIHJldHVy
biBvLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFz
c2VydC5zYW1lVmFsdWUoYy5hY2Nlc3MoYyksICd0ZXN0Jyk7CisKKyAgICBsZXQgbyA9IHt9Owor
ICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nl
c3Mobyk7CisgICAgfSk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9wcml2
YXRlLWdldHRlci1pbm5lci1jbGFzcy5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtZ2V0dGVy
LWlubmVyLWNsYXNzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA2MGNlZGZlMjU0NmNhNTExODg2YTEwYzYyYzI1
YzRhMDBkNTU4YzUKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLWdl
dHRlci1pbm5lci1jbGFzcy5qcwpAQCAtMCwwICsxLDE1OSBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVW
YWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6
ICIgKyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9y
LCBvcCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2go
ZSkgeworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBl
Y3RlZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisK
KyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJu
ICd0ZXN0JzsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2Qobykg
eworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOworICAgICAgICAgICAgfQorICAgICAgICB9
CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIgPSBuZXcgYy5C
KCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubWV0aG9kKGMpLCAndGVzdCcpOworfSko
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyBy
ZXR1cm4gJ291dGVyIGNsYXNzJzsgfQorCisgICAgICAgIG1ldGhvZCgpIHsgcmV0dXJuIHRoaXMu
I207IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8pIHsKKyAg
ICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAg
I20gPSAndGVzdCc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7Cisg
ICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5t
ZXRob2QoaW5uZXJCKSwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCks
ICdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigp
IHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlv
biAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdldCAjbSgpIHsgcmV0dXJuICdvdXRlciBj
bGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0aGlzLiNtOyB9CisKKyAgICAg
ICAgQiA9IGNsYXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIG8uI207CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCAjbSgpIHsgcmV0
dXJuICd0ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOwor
ICAgIGxldCBpbm5lckIgPSBuZXcgYy5CKCk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIu
bWV0aG9kKGlubmVyQiksICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLm1ldGhvZCgp
LCAnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHRocm93IG5ldyBFcnJv
cignU2hvdWxkIG5ldmVyIGV4ZWN1dGUnKTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7CisgICAg
ICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtKCk7CisgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBj
LkIoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tZXRob2QoaW5uZXJCKSwgJ3Rlc3Qn
KTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlu
bmVyQi5tZXRob2QoYyk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNs
YXNzIEMgeworICAgICAgICBnZXQgI20oKSB7IHJldHVybiAnb3V0ZXIgY2xhc3MnOyB9CisKKyAg
ICAgICAgbWV0aG9kKCkgeyByZXR1cm4gdGhpcy4jbTsgfQorCisgICAgICAgIEIgPSBjbGFzcyB7
CisgICAgICAgICAgICBtZXRob2QobykgeworICAgICAgICAgICAgICAgIHJldHVybiBvLiNtOwor
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxldCBpbm5lckIg
PSBuZXcgYy5CKCk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGlubmVyQi5tZXRob2QoaW5uZXJCKTsKKyAgICB9KTsKKworICAgIGFzc2VydC5z
YW1lVmFsdWUoYy5tZXRob2QoKSwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dz
KFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYyk7CisgICAg
fSk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAjbSgp
IHsgcmV0dXJuICdvdXRlciBjbGFzcyc7IH0KKworICAgICAgICBtZXRob2QoKSB7IHJldHVybiB0
aGlzLiNtKCk7IH0KKworICAgICAgICBCID0gY2xhc3MgeworICAgICAgICAgICAgbWV0aG9kKG8p
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gby4jbTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QyNjInOyB9CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgbGV0IGlubmVyQiA9IG5ldyBjLkIoKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGlubmVyQi5tZXRob2QoaW5uZXJCKSwgJ3Rlc3QyNjInKTsKKyAgICBh
c3NlcnQuc2FtZVZhbHVlKGMubWV0aG9kKCksICdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaW5uZXJCLm1ldGhvZChjKTsK
KyAgICB9LCAnYWNjZXNzZWQgaW5uZXIgY2xhc3MgZ2V0dGVyIGZyb20gYW4gb2JqZWN0IG9mIG91
dGVyIGNsYXNzJyk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgewor
ICAgICAgICBDLnByb3RvdHlwZS5tZXRob2QuY2FsbChpbm5lckIpOworICAgIH0pOworfSkoKTsK
KwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0
LmpzIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1tZW1iZXJzLWdldC1hbmQtc2V0LmpzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjEwMWY2NTk4MThlZWZiYzhiYTMyNjliMzhlNzRhOTY0MGE1NWRiMDAKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1lbWJlcnMtZ2V0LWFuZC1zZXQuanMK
QEAgLTAsMCArMSw2MyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVByaXZhdGVNZXRob2Rz
PXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1ZTogZnVuY3Rpb24gKGxocywg
cmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAgICAgICAgIHRocm93IG5ldyBF
cnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIgKyByaHMpOworICAgIH0sCisK
KyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBvcCkgeworICAgICAgICB0cnkg
eworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkgeworICAgICAgICAgICAgaWYg
KCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAgICAgICAgICAgIHRocm93IG5l
dyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3RlZEVycm9yICsgIiBidXQgdGhy
ZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAg
Y2xhc3MgQyB7CisgICAgICAgIHNldCAjbSh2KSB7IHRoaXMuX3YgPSB2OyB9CisKKyAgICAgICAg
YWNjZXNzUHJpdmF0ZU1lbWJlcigpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtOworICAg
ICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3Mo
VHlwZUVycm9yLCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGMuYWNjZXNzUHJpdmF0ZU1lbWJlcigp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAg
ICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1l
bWJlcih2KSB7CisgICAgICAgICAgICB0aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rp
b24gKCkgeworICAgICAgICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoJ3Rlc3QnKTsKKyAgICB9KTsK
K30pKCk7CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7CisgICAgICAgICNtKCkgeyBy
ZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgYWNjZXNzUHJpdmF0ZU1lbWJlcih2KSB7CisgICAg
ICAgICAgICB0aGlzLiNtID0gdjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3
IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24gKCkgeworICAgICAg
ICBjLmFjY2Vzc1ByaXZhdGVNZW1iZXIoJ3Rlc3QnKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXBvc3Rm
aXgtbm9kZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3Jz
LXBvc3RmaXgtbm9kZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMjllMjRlM2YyMTM5NGJhMGIyN2NkNjQ4NmVh
MGY2OWM1NDQ0N2JkCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1t
ZXRob2RzLWFuZC1hY2Nlc3NvcnMtcG9zdGZpeC1ub2RlLmpzCkBAIC0wLDAgKzEsMTY2IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisKK2xldCBhc3Nl
cnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAgICAgICAgaWYg
KGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZDogIiAr
IGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93czogZnVuY3Rp
b24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgb3AoKTsK
KyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3RhbmNlb2YgZXhw
ZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUpOworICAgICAg
ICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICAj
bWV0aG9kKCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUg
Y2FsbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICBy
ZXR1cm4gdGhpcy4jbWV0aG9kKys7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5l
dyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBjLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGxldCBl
eGVjdXRlZEdldHRlciA9IGZhbHNlOworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7
CisgICAgICAgICAgICBleGVjdXRlZEdldHRlciA9IHRydWU7CisgICAgICAgIH0KKworICAgICAg
ICBhY2Nlc3MoKSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy4jbSsrOworICAgICAgICB9Cisg
ICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MoKTsKKyAgICB9KTsKKworICAgIGFzc2Vy
dC5zYW1lVmFsdWUodHJ1ZSwgZXhlY3V0ZWRHZXR0ZXIpOworfSkoKTsKKworKGZ1bmN0aW9uKCkg
eworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeworICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJTaG91bGQgbmV2ZXIgYmUgZXhlY3V0ZWQiKTsKKyAgICAgICAgfQorCisgICAg
ICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLiNtKys7CisgICAgICAgIH0K
KyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJy
b3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeworICAgICAg
ICAgICAgYXNzZXJ0LnNhbWVWYWx1ZSg1LCB2KTsKKyAgICAgICAgfQorCisgICAgICAgIGdldCAj
bSgpIHsKKyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNz
KCkgeworICAgICAgICAgICAgcmV0dXJuIHRoaXMuI20rKzsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKDQsIGMuYWNjZXNzKCkp
OworfSkoKTsKKworLy8gSWdub3JlZCByZXN1bHQKKworKGZ1bmN0aW9uKCkgeworICAgIGNsYXNz
IEMgeworICAgICAgICAjbWV0aG9kKCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJT
aG91bGQgbmV2ZXIgYmUgY2FsbGVkIik7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7
CisgICAgICAgICAgICB0aGlzLiNtZXRob2QtLTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxl
dCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGMuYWNjZXNzKCk7CisgICAgfSk7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7Cisg
ICAgbGV0IGV4ZWN1dGVkR2V0dGVyID0gZmFsc2U7CisgICAgY2xhc3MgQyB7CisgICAgICAgIGdl
dCAjbSgpIHsKKyAgICAgICAgICAgIGV4ZWN1dGVkR2V0dGVyID0gdHJ1ZTsKKyAgICAgICAgfQor
CisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHRoaXMuI20tLTsKKyAgICAgICAgfQor
ICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJv
ciwgZnVuY3Rpb24oKSB7CisgICAgICAgIGMuYWNjZXNzKCk7CisgICAgfSk7CisKKyAgICBhc3Nl
cnQuc2FtZVZhbHVlKHRydWUsIGV4ZWN1dGVkR2V0dGVyKTsKK30pKCk7CisKKyhmdW5jdGlvbigp
IHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGV4ZWN1dGVkIik7CisgICAgICAgIH0KKworICAg
ICAgICBhY2Nlc3MoKSB7CisgICAgICAgICAgICB0aGlzLiNtLS07CisgICAgICAgIH0KKyAgICB9
CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBjLmFjY2VzcygpOworICAgIH0pOworfSkoKTsKKworKGZ1bmN0
aW9uKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeworICAgICAgICAgICAg
YXNzZXJ0LnNhbWVWYWx1ZSgzLCB2KTsKKyAgICAgICAgfQorCisgICAgICAgIGdldCAjbSgpIHsK
KyAgICAgICAgICAgIHJldHVybiA0OworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgewor
ICAgICAgICAgICAgdGhpcy4jbS0tOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBu
ZXcgQygpOworICAgIGMuYWNjZXNzKCk7Cit9KSgpOworCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0
cmVzcy9wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29ycy1wcmVmaXgtbm9kZS5qcyBiL0pTVGVz
dHMvc3RyZXNzL3ByaXZhdGUtbWV0aG9kcy1hbmQtYWNjZXNzb3JzLXByZWZpeC1ub2RlLmpzCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjU2YTBjZWU3OWQwZDg2MmZmM2FiNjk2N2ExZWIzOTEwMTNjYjQxNTkKLS0tIC9k
ZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW1ldGhvZHMtYW5kLWFjY2Vzc29y
cy1wcmVmaXgtbm9kZS5qcwpAQCAtMCwwICsxLDE2NiBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCIt
LXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNhbWVWYWx1
ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykKKyAgICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyBsaHMgKyAiIGJ1ZyBnb3Q6ICIg
KyByaHMpOworICAgIH0sCisKKyAgICB0aHJvd3M6IGZ1bmN0aW9uIChleHBlY3RlZEVycm9yLCBv
cCkgeworICAgICAgICB0cnkgeworICAgICAgICAgIG9wKCk7CisgICAgICAgIH0gY2F0Y2goZSkg
eworICAgICAgICAgICAgaWYgKCEoZSBpbnN0YW5jZW9mIGV4cGVjdGVkRXJyb3IpKQorICAgICAg
ICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdG8gdGhyb3c6ICIgKyBleHBlY3Rl
ZEVycm9yICsgIiBidXQgdGhyZXc6ICIgKyBlKTsKKyAgICAgICAgfQorICAgIH0KK307CisKKyhm
dW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI21ldGhvZCgpIHsKKyAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxlZCIpOworICAgICAgICB9
CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgcmV0dXJuICsrdGhpcy4jbWV0aG9k
OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGFzc2VydC50
aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgYy5hY2Nlc3MoKTsKKyAgICB9
KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBsZXQgZXhlY3V0ZWRHZXR0ZXIgPSBmYWxz
ZTsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeworICAgICAgICAgICAgZXhlY3V0
ZWRHZXR0ZXIgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAg
ICAgICAgcmV0dXJuICsrdGhpcy4jbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAg
ICAgIGMuYWNjZXNzKCk7CisgICAgfSk7CisKKyAgICBhc3NlcnQuc2FtZVZhbHVlKHRydWUsIGV4
ZWN1dGVkR2V0dGVyKTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAg
ICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5l
dmVyIGJlIGV4ZWN1dGVkIik7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7CisgICAg
ICAgICAgICByZXR1cm4gKyt0aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMg
PSBuZXcgQygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAg
ICAgICAgYy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBj
bGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIGFzc2VydC5zYW1lVmFs
dWUoNSwgdik7CisgICAgICAgIH0KKworICAgICAgICBnZXQgI20oKSB7CisgICAgICAgICAgICBy
ZXR1cm4gNDsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIHJl
dHVybiArK3RoaXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7
CisgICAgYXNzZXJ0LnNhbWVWYWx1ZSg1LCBjLmFjY2VzcygpKTsKK30pKCk7CisKKy8vIElnbm9y
ZWQgcmVzdWx0CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgI21ldGhv
ZCgpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiU2hvdWxkIG5ldmVyIGJlIGNhbGxl
ZCIpOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAgICAgICAgICAgLS10aGlz
LiNtZXRob2Q7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAg
YXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjLmFjY2Vzcygp
OworICAgIH0pOworfSkoKTsKKworKGZ1bmN0aW9uKCkgeworICAgIGxldCBleGVjdXRlZEdldHRl
ciA9IGZhbHNlOworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7CisgICAgICAgICAg
ICBleGVjdXRlZEdldHRlciA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBhY2Nlc3MoKSB7
CisgICAgICAgICAgICAtLXRoaXMuI207CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsZXQgYyA9
IG5ldyBDKCk7CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAg
ICAgICBjLmFjY2VzcygpOworICAgIH0pOworCisgICAgYXNzZXJ0LnNhbWVWYWx1ZSh0cnVlLCBl
eGVjdXRlZEdldHRlcik7Cit9KSgpOworCisoZnVuY3Rpb24oKSB7CisgICAgY2xhc3MgQyB7Cisg
ICAgICAgIHNldCAjbSh2KSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIlNob3VsZCBu
ZXZlciBiZSBleGVjdXRlZCIpOworICAgICAgICB9CisKKyAgICAgICAgYWNjZXNzKCkgeworICAg
ICAgICAgICAgLS10aGlzLiNtOworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcg
QygpOworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
Yy5hY2Nlc3MoKTsKKyAgICB9KTsKK30pKCk7CisKKyhmdW5jdGlvbigpIHsKKyAgICBjbGFzcyBD
IHsKKyAgICAgICAgc2V0ICNtKHYpIHsKKyAgICAgICAgICAgIGFzc2VydC5zYW1lVmFsdWUoMywg
dik7CisgICAgICAgIH0KKworICAgICAgICBnZXQgI20oKSB7CisgICAgICAgICAgICByZXR1cm4g
NDsKKyAgICAgICAgfQorCisgICAgICAgIGFjY2VzcygpIHsKKyAgICAgICAgICAgIC0tdGhpcy4j
bTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLmFjY2Vz
cygpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1h
dmFpbGFibGUtb24tZGlyZWN0LWV2YWwuanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVz
LWF2YWlsYWJsZS1vbi1kaXJlY3QtZXZhbC5qcwppbmRleCA2NGNlMGUwYWY4MDU3OGU4OTcxNmEx
NjcyZWRjMTc3MzA1YjA2NGYzLi4zZWE5YzdkNDNjM2RhYzE1ZTBmOGQwOTMzYTkyNWZlODE2NWQw
N2RjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWlsYWJsZS1v
bi1kaXJlY3QtZXZhbC5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWls
YWJsZS1vbi1kaXJlY3QtZXZhbC5qcwpAQCAtMjEsMyArMjEsMzYgQEAgbGV0IGFzc2VydCA9IHsK
ICAgICBhc3NlcnQuc2FtZVZhbHVlKGMuY2FsbE1ldGhvZEZyb21FdmFsKCksICd0ZXN0Jyk7CiB9
KSgpOwogCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBnZXQgI20oKSB7
CisgICAgICAgICAgICByZXR1cm4gJ3Rlc3QnOworICAgICAgICB9CisKKyAgICAgICAgY2FsbEdl
dHRlckZyb21FdmFsKCkgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlzOworICAgICAgICAg
ICAgcmV0dXJuIGV2YWwoJ3NlbGYuI20nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBj
ID0gbmV3IEMoKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuY2FsbEdldHRlckZyb21FdmFsKCks
ICd0ZXN0Jyk7Cit9KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAg
ICBzZXQgI20odikgeworICAgICAgICAgICAgdGhpcy5fdiA9IHY7CisgICAgICAgIH0KKworICAg
ICAgICBjYWxsU2V0dGVyRnJvbUV2YWwodikgeworICAgICAgICAgICAgbGV0IHNlbGYgPSB0aGlz
OworICAgICAgICAgICAgZXZhbCgnc2VsZi4jbSA9IHYnKTsKKyAgICAgICAgfQorICAgIH0KKwor
ICAgIGxldCBjID0gbmV3IEMoKTsKKyAgICBjLmNhbGxTZXR0ZXJGcm9tRXZhbCgndGVzdCcpCisg
ICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOworfSkoKTsKKwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZXZhbC1kdXJpbmctZmll
bGQtaW5pdGlhbGl6YXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy9wcml2YXRlLW5hbWVzLWF2YWls
YWJsZS1vbi1ldmFsLWR1cmluZy1maWVsZC1pbml0aWFsaXphdGlvbi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4x
NzdmMGRkZGIxOWZjYThmYzJlMjZjNGVhOGNhZDRiYzc4NGUzNDkyCi0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9zdHJlc3MvcHJpdmF0ZS1uYW1lcy1hdmFpbGFibGUtb24tZXZhbC1kdXJpbmct
ZmllbGQtaW5pdGlhbGl6YXRpb24uanMKQEAgLTAsMCArMSwzMSBAQAorLy9AIHJlcXVpcmVPcHRp
b25zKCItLXVzZVByaXZhdGVNZXRob2RzPXRydWUiKQorCitsZXQgYXNzZXJ0ID0geworICAgIHNh
bWVWYWx1ZTogZnVuY3Rpb24gKGxocywgcmhzKSB7CisgICAgICAgIGlmIChsaHMgIT09IHJocykK
KyAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQ6ICIgKyByaHMgKyAiIGJ1ZyBn
b3Q6ICIgKyBsaHMpOworICAgIH0KK307CisKKyhmdW5jdGlvbiAoKSB7CisgICAgY2xhc3MgQyB7
CisgICAgICAgICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAgICAgZmllbGQgPSBldmFs
KCd0aGlzLiNtKCknKTsKKyAgICB9CisKKyAgICBsZXQgYyA9IG5ldyBDKCk7CisgICAgYXNzZXJ0
LnNhbWVWYWx1ZShjLmZpZWxkLCAndGVzdCcpOworfSkoKTsKKworKGZ1bmN0aW9uICgpIHsKKyAg
ICBjbGFzcyBDIHsKKyAgICAgICAgZ2V0ICNtKCkgeyByZXR1cm4gJ3Rlc3QnOyB9CisKKyAgICAg
ICAgZmllbGQgPSBldmFsKCd0aGlzLiNtJyk7CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygp
OworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5maWVsZCwgJ3Rlc3QnKTsKK30pKCk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItYnJhbmQtY2hlY2suanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmYy
M2Y2YmY4ZTQyMWVjMTEzMDM5MTg2MzU5OGE0YjQ0N2I1OThjNAotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWJyYW5kLWNoZWNrLmpzCkBAIC0wLDAgKzEs
MTAwIEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93
czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUp
OworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBsZXQgY3JlYXRl
QW5kSW5zdGFudGlhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgY2xhc3MgQyB7Cisg
ICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsgfQorCisgICAgICAgICAgICBhY2Nl
c3MobywgdikgeworICAgICAgICAgICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorICAg
ICAgICB9CisKKyAgICAgICAgbGV0IGMgPSBuZXcgQygpOworICAgICAgICByZXR1cm4gYzsKKyAg
ICB9OworCisgICAgbGV0IGMxID0gY3JlYXRlQW5kSW5zdGFudGlhdGVDbGFzcygpOworICAgIGxl
dCBjMiA9IGNyZWF0ZUFuZEluc3RhbnRpYXRlQ2xhc3MoKTsKKworICAgIGMxLmFjY2VzcyhjMSwg
J3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMxLl92LCAndGVzdCcpOworICAgIGMyLmFj
Y2VzcyhjMiwgJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMyLl92LCAndGVzdCcpOwor
CisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBjMS5h
Y2Nlc3MoYzIsICdmb28nKTsKKyAgICB9KTsKKworICAgIGFzc2VydC50aHJvd3MoVHlwZUVycm9y
LCBmdW5jdGlvbigpIHsKKyAgICAgICAgYzIuYWNjZXNzKGMxLCAnZm9vJyk7CisgICAgfSk7Cit9
KSgpOworCisoZnVuY3Rpb24gKCkgeworICAgIGNsYXNzIFMgeworICAgICAgICBzZXQgI20odikg
eyB0aGlzLl92ID0gdiB9CisKKyAgICAgICAgc3VwZXJBY2Nlc3ModikgeyB0aGlzLiNtID0gdjsg
fQorICAgIH0KKworICAgIGNsYXNzIEMgZXh0ZW5kcyBTIHsKKyAgICAgICAgc2V0ICNtKHYpIHsg
dGhpcy5fdSA9IHY7IH0KKworICAgICAgICBhY2Nlc3ModikgeworICAgICAgICAgICAgcmV0dXJu
IHRoaXMuI20gPSB2OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOwor
CisgICAgYy5hY2Nlc3MoJ3Rlc3QnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3UsICd0ZXN0
Jyk7CisKKyAgICBjLnN1cGVyQWNjZXNzKCdzdXBlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1l
VmFsdWUoYy5fdiwgJ3N1cGVyIGNsYXNzJyk7CisKKyAgICBsZXQgcyA9IG5ldyBTKCk7CisgICAg
cy5zdXBlckFjY2Vzcygnc3VwZXIgY2xhc3MnKQorICAgIGFzc2VydC5zYW1lVmFsdWUocy5fdiwg
J3N1cGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgIGMuYWNjZXNzLmNhbGwocywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5f
diA9IHY7IH0KKworICAgICAgICBhY2Nlc3MobywgdikgeworICAgICAgICAgICAgcmV0dXJuIG8u
I20gPSB2OworICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGMu
YWNjZXNzKGMsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShjLl92LCAndGVzdCcpOwor
CisgICAgbGV0IG8gPSB7fTsKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24o
KSB7CisgICAgICAgIGMuYWNjZXNzKG8sICdmb28nKTsKKyAgICB9KTsKK30pKCk7CisKZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvcHJpdmF0ZS1zZXR0ZXItaW5uZXItY2xhc3MuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjZk
Yjg5ZDczZjgxN2ViYWJhNWIxYTAyNDIxN2NlMjk1ZTc5N2EzYwotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3ByaXZhdGUtc2V0dGVyLWlubmVyLWNsYXNzLmpzCkBAIC0wLDAgKzEs
MTU1IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlUHJpdmF0ZU1ldGhvZHM9dHJ1ZSIpCisK
K2xldCBhc3NlcnQgPSB7CisgICAgc2FtZVZhbHVlOiBmdW5jdGlvbiAobGhzLCByaHMpIHsKKyAg
ICAgICAgaWYgKGxocyAhPT0gcmhzKQorICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJFeHBl
Y3RlZDogIiArIGxocyArICIgYnVnIGdvdDogIiArIHJocyk7CisgICAgfSwKKworICAgIHRocm93
czogZnVuY3Rpb24gKGV4cGVjdGVkRXJyb3IsIG9wKSB7CisgICAgICAgIHRyeSB7CisgICAgICAg
ICAgb3AoKTsKKyAgICAgICAgfSBjYXRjaChlKSB7CisgICAgICAgICAgICBpZiAoIShlIGluc3Rh
bmNlb2YgZXhwZWN0ZWRFcnJvcikpCisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCB0byB0aHJvdzogIiArIGV4cGVjdGVkRXJyb3IgKyAiIGJ1dCB0aHJldzogIiArIGUp
OworICAgICAgICB9CisgICAgfQorfTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsK
KyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9IHY7IH0KKworICAgICAgICBCID0gY2xhc3Mg
eworICAgICAgICAgICAgbWV0aG9kKG8sIHYpIHsKKyAgICAgICAgICAgICAgICBvLiNtID0gdjsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMoKTsK
KyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworICAgIGlubmVyQi5tZXRob2QoYywgJ3Rlc3Qn
KTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMuX3YsICd0ZXN0Jyk7Cit9KSgpOworCisoZnVuY3Rp
b24gKCkgeworICAgIGNsYXNzIEMgeworICAgICAgICBzZXQgI20odikgeyB0aGlzLl92ID0gdjsg
fQorCisgICAgICAgIG1ldGhvZCh2KSB7IHRoaXMuI20gPSB2OyB9CisKKyAgICAgICAgQiA9IGNs
YXNzIHsKKyAgICAgICAgICAgIG1ldGhvZChvLCB2KSB7CisgICAgICAgICAgICAgICAgby4jbSA9
IHY7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGdldCBtKCkgeyByZXR1cm4gdGhpcy4j
bTsgfQorCisgICAgICAgICAgICAjbTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0g
bmV3IEMoKTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgaW5uZXJCLm1ldGhv
ZChpbm5lckIsICd0ZXN0Jyk7CisgICAgYXNzZXJ0LnNhbWVWYWx1ZShpbm5lckIubSwgJ3Rlc3Qn
KTsKKworICAgIGMubWV0aG9kKCdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUo
Yy5fdiwgJ291dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoYywgJ2ZvbycpOworICAgIH0pOworfSko
KTsKKworKGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsg
dGhpcy5fdiA9IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisg
ICAgICAgIEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAg
ICAgICAgIG8uI20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBnZXQgI20oKSB7
IHJldHVybiAndGVzdCc7IH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGxldCBjID0gbmV3IEMo
KTsKKyAgICBsZXQgaW5uZXJCID0gbmV3IGMuQigpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGlubmVyQik7CisgICAg
fSk7CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVl
KGMuX3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKwor
KGZ1bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5f
diA9IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisgICAgICAg
IEIgPSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAg
IG8uI20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAjbSgpIHsgcmV0dXJuICd0
ZXN0JzsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxl
dCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVu
Y3Rpb24oKSB7CisgICAgICAgIGlubmVyQi5tZXRob2QoaW5uZXJCLCAnZm9vJyk7CisgICAgfSk7
CisKKyAgICBjLm1ldGhvZCgnb3V0ZXIgY2xhc3MnKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGMu
X3YsICdvdXRlciBjbGFzcycpOworCisgICAgYXNzZXJ0LnRocm93cyhUeXBlRXJyb3IsIGZ1bmN0
aW9uKCkgeworICAgICAgICBpbm5lckIubWV0aG9kKGMpOworICAgIH0pOworfSkoKTsKKworKGZ1
bmN0aW9uICgpIHsKKyAgICBjbGFzcyBDIHsKKyAgICAgICAgc2V0ICNtKHYpIHsgdGhpcy5fdiA9
IHY7IH0KKworICAgICAgICBtZXRob2QodikgeyB0aGlzLiNtID0gdjsgfQorCisgICAgICAgIEIg
PSBjbGFzcyB7CisgICAgICAgICAgICBtZXRob2QobywgdikgeworICAgICAgICAgICAgICAgIG8u
I20gPSB2OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzZXQgI20odikgeyB0aGlzLl92
ID0gdjsgfQorICAgICAgICB9CisgICAgfQorCisgICAgbGV0IGMgPSBuZXcgQygpOworICAgIGxl
dCBpbm5lckIgPSBuZXcgYy5CKCk7CisKKyAgICBpbm5lckIubWV0aG9kKGlubmVyQiwgJ3Rlc3Qy
NjInKTsKKyAgICBhc3NlcnQuc2FtZVZhbHVlKGlubmVyQi5fdiwgJ3Rlc3QyNjInKTsKKworICAg
IGMubWV0aG9kKCdvdXRlciBjbGFzcycpOworICAgIGFzc2VydC5zYW1lVmFsdWUoYy5fdiwgJ291
dGVyIGNsYXNzJyk7CisKKyAgICBhc3NlcnQudGhyb3dzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgIGlubmVyQi5tZXRob2QoYywgJ2ZvbycpOworICAgIH0pOworfSkoKTsKKwpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2Nv
bmZpZy55YW1sCmluZGV4IDUxNWRhM2NkYjc5MGVhN2Q3MzZmODZhYzczZjMxODY3ZGJiOWVlMTcu
LjQxMTY2NzZkZDFlYTg2NDMxNTg2NDA5NWU1NDYxZDE5MGQ2ZTViYTEgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlh
bWwKQEAgLTQsNiArNCw3IEBAIGZsYWdzOgogICBXZWFrUmVmOiB1c2VXZWFrUmVmcwogICBGaW5h
bGl6YXRpb25SZWdpc3RyeTogdXNlV2Vha1JlZnMKICAgY2xhc3MtZmllbGRzLXByaXZhdGU6IHVz
ZVByaXZhdGVDbGFzc0ZpZWxkcworICBjbGFzcy1tZXRob2RzLXByaXZhdGU6IHVzZVByaXZhdGVN
ZXRob2RzCiAgIGNsYXNzLXN0YXRpYy1maWVsZHMtcHVibGljOiB1c2VQdWJsaWNTdGF0aWNDbGFz
c0ZpZWxkcwogICBjbGFzcy1zdGF0aWMtZmllbGRzLXByaXZhdGU6IHVzZVByaXZhdGVTdGF0aWND
bGFzc0ZpZWxkcwogICBJbnRsLkRhdGVUaW1lRm9ybWF0LWRheVBlcmlvZDogdXNlSW50bERhdGVU
aW1lRm9ybWF0RGF5UGVyaW9kCkBAIC0xOSw3ICsyMCw2IEBAIHNraXA6CiAgICAgLSByZWdleHAt
bG9va2JlaGluZAogICAgIC0gbGVnYWN5LXJlZ2V4cAogCi0gICAgLSBjbGFzcy1tZXRob2RzLXBy
aXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsZWFudXBT
b21lCiAgICAgLSBob3N0LWdjLXJlcXVpcmVkCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rlc3QyNjIv
ZXhwZWN0YXRpb25zLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvZXhwZWN0YXRpb25zLnlhbWwKaW5k
ZXggMGZhZjNiNWM5Nzc1NzE1ZjI4NGM2YWFjNDBhNWYwODBkYmY0OTM2Ny4uNjUxMjk4YzM3OTdk
NDc0OGM1OTcyYTRjNDIwOTEwOWM3MTk3NmFhNiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYy
L2V4cGVjdGF0aW9ucy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9leHBlY3RhdGlvbnMueWFt
bApAQCAtNzQxLDYgKzc0MSwxMiBAQCB0ZXN0L2J1aWx0LWlucy9GdW5jdGlvbi9wcm90b3R5cGUv
dG9TdHJpbmcvbWV0aG9kLWNvbXB1dGVkLXByb3BlcnR5LW5hbWUuanM6CiB0ZXN0L2J1aWx0LWlu
cy9GdW5jdGlvbi9wcm90b3R5cGUvdG9TdHJpbmcvbWV0aG9kLW9iamVjdC5qczoKICAgZGVmYXVs
dDogJ1Rlc3QyNjJFcnJvcjogQ29uZm9ybXMgdG8gTmF0aXZlRnVuY3Rpb24gU3ludGF4OiAiZnVu
Y3Rpb24gZiggLyogYiAqLyApIC8qIGMgKi8geyAvKiBkICovIH0iIChmIC8qIGEgKi8gKCAvKiBi
ICovICkgLyogYyAqLyB7IC8qIGQgKi8gfSknCiAgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9y
OiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBTeW50YXg6ICJmdW5jdGlvbiBmKCAvKiBiICov
ICkgLyogYyAqLyB7IC8qIGQgKi8gfSIgKGYgLyogYSAqLyAoIC8qIGIgKi8gKSAvKiBjICovIHsg
LyogZCAqLyB9KScKK3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9w
cml2YXRlLW1ldGhvZC1jbGFzcy1leHByZXNzaW9uLmpzOgorICBkZWZhdWx0OiAnVGVzdDI2MkVy
cm9yOiBDb25mb3JtcyB0byBOYXRpdmVGdW5jdGlvbiBTeW50YXg6ICJmdW5jdGlvbiAjZiggLyog
YiAqLyApIC8qIGMgKi8geyAvKiBkICovIH0iICgjZiAvKiBhICovICggLyogYiAqLyApIC8qIGMg
Ki8geyAvKiBkICovIH0pJworICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjogQ29uZm9ybXMg
dG8gTmF0aXZlRnVuY3Rpb24gU3ludGF4OiAiZnVuY3Rpb24gI2YoIC8qIGIgKi8gKSAvKiBjICov
IHsgLyogZCAqLyB9IiAoI2YgLyogYSAqLyAoIC8qIGIgKi8gKSAvKiBjICovIHsgLyogZCAqLyB9
KScKK3Rlc3QvYnVpbHQtaW5zL0Z1bmN0aW9uL3Byb3RvdHlwZS90b1N0cmluZy9wcml2YXRlLW1l
dGhvZC1jbGFzcy1zdGF0ZW1lbnQuanM6CisgIGRlZmF1bHQ6ICdUZXN0MjYyRXJyb3I6IENvbmZv
cm1zIHRvIE5hdGl2ZUZ1bmN0aW9uIFN5bnRheDogImZ1bmN0aW9uICNmKCAvKiBiICovICkgLyog
YyAqLyB7IC8qIGQgKi8gfSIgKCNmIC8qIGEgKi8gKCAvKiBiICovICkgLyogYyAqLyB7IC8qIGQg
Ki8gfSknCisgIHN0cmljdCBtb2RlOiAnVGVzdDI2MkVycm9yOiBDb25mb3JtcyB0byBOYXRpdmVG
dW5jdGlvbiBTeW50YXg6ICJmdW5jdGlvbiAjZiggLyogYiAqLyApIC8qIGMgKi8geyAvKiBkICov
IH0iICgjZiAvKiBhICovICggLyogYiAqLyApIC8qIGMgKi8geyAvKiBkICovIH0pJwogdGVzdC9i
dWlsdC1pbnMvRnVuY3Rpb24vcHJvdG90eXBlL3RvU3RyaW5nL3NldHRlci1jbGFzcy1leHByZXNz
aW9uLXN0YXRpYy5qczoKICAgZGVmYXVsdDogJ1Rlc3QyNjJFcnJvcjogQ29uZm9ybXMgdG8gTmF0
aXZlRnVuY3Rpb24gU3ludGF4OiAiZnVuY3Rpb24gKCAvKiBjICovIGEgLyogZCAqLyApIC8qIGUg
Ki8geyAvKiBmICovIH0iIChzZXQgLyogYSAqLyBmIC8qIGIgKi8gKCAvKiBjICovIGEgLyogZCAq
LyApIC8qIGUgKi8geyAvKiBmICovIH0pJwogICBzdHJpY3QgbW9kZTogJ1Rlc3QyNjJFcnJvcjog
Q29uZm9ybXMgdG8gTmF0aXZlRnVuY3Rpb24gU3ludGF4OiAiZnVuY3Rpb24gKCAvKiBjICovIGEg
LyogZCAqLyApIC8qIGUgKi8geyAvKiBmICovIH0iIChzZXQgLyogYSAqLyBmIC8qIGIgKi8gKCAv
KiBjICovIGEgLyogZCAqLyApIC8qIGUgKi8geyAvKiBmICovIH0pJwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>